diff --git a/ui/v2.5/.env b/ui/v2.5/.env new file mode 100644 index 000000000..4b2b446bd --- /dev/null +++ b/ui/v2.5/.env @@ -0,0 +1,2 @@ +BROWSER=none +PORT=3001 diff --git a/ui/v2.5/.eslintcache b/ui/v2.5/.eslintcache new file mode 100644 index 000000000..aae10c69a --- /dev/null +++ b/ui/v2.5/.eslintcache @@ -0,0 +1 @@ +[{"/home/peroo/stash/ui/v2/src/App.tsx":"1","/home/peroo/stash/ui/v2/src/components/ErrorBoundary.tsx":"2","/home/peroo/stash/ui/v2/src/components/Galleries/Galleries.tsx":"3","/home/peroo/stash/ui/v2/src/components/Galleries/Gallery.tsx":"4","/home/peroo/stash/ui/v2/src/components/Galleries/GalleryList.tsx":"5","/home/peroo/stash/ui/v2/src/components/Galleries/GalleryViewer.tsx":"6","/home/peroo/stash/ui/v2/src/components/MainNavbar.tsx":"7","/home/peroo/stash/ui/v2/src/components/PageNotFound.tsx":"8","/home/peroo/stash/ui/v2/src/components/Settings/Settings.tsx":"9","/home/peroo/stash/ui/v2/src/components/Settings/SettingsAboutPanel.tsx":"10","/home/peroo/stash/ui/v2/src/components/Settings/SettingsConfigurationPanel.tsx":"11","/home/peroo/stash/ui/v2/src/components/Settings/SettingsInterfacePanel.tsx":"12","/home/peroo/stash/ui/v2/src/components/Settings/SettingsLogsPanel.tsx":"13","/home/peroo/stash/ui/v2/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx":"14","/home/peroo/stash/ui/v2/src/components/Settings/SettingsTasksPanel/SettingsTasksPanel.tsx":"15","/home/peroo/stash/ui/v2/src/components/Shared/DetailsEditNavbar.tsx":"16","/home/peroo/stash/ui/v2/src/components/Shared/DurationInput.tsx":"17","/home/peroo/stash/ui/v2/src/components/Shared/FolderSelect/FolderSelect.tsx":"18","/home/peroo/stash/ui/v2/src/components/Shared/TagLink.tsx":"19","/home/peroo/stash/ui/v2/src/components/Stats.tsx":"20","/home/peroo/stash/ui/v2/src/components/Studios/StudioCard.tsx":"21","/home/peroo/stash/ui/v2/src/components/Studios/StudioDetails/Studio.tsx":"22","/home/peroo/stash/ui/v2/src/components/Studios/StudioList.tsx":"23","/home/peroo/stash/ui/v2/src/components/Studios/Studios.tsx":"24","/home/peroo/stash/ui/v2/src/components/Tags/TagList.tsx":"25","/home/peroo/stash/ui/v2/src/components/Tags/Tags.tsx":"26","/home/peroo/stash/ui/v2/src/components/Wall/WallItem.tsx":"27","/home/peroo/stash/ui/v2/src/components/Wall/WallPanel.tsx":"28","/home/peroo/stash/ui/v2/src/components/list/AddFilter.tsx":"29","/home/peroo/stash/ui/v2/src/components/list/ListFilter.tsx":"30","/home/peroo/stash/ui/v2/src/components/list/Pagination.tsx":"31","/home/peroo/stash/ui/v2/src/components/performers/PerformerCard.tsx":"32","/home/peroo/stash/ui/v2/src/components/performers/PerformerDetails/Performer.tsx":"33","/home/peroo/stash/ui/v2/src/components/performers/PerformerList.tsx":"34","/home/peroo/stash/ui/v2/src/components/performers/PerformerListTable.tsx":"35","/home/peroo/stash/ui/v2/src/components/performers/performers.tsx":"36","/home/peroo/stash/ui/v2/src/components/scenes/SceneCard.tsx":"37","/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/Scene.tsx":"38","/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/SceneDetailPanel.tsx":"39","/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/SceneEditPanel.tsx":"40","/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx":"41","/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx":"42","/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx":"43","/home/peroo/stash/ui/v2/src/components/scenes/SceneFilenameParser.tsx":"44","/home/peroo/stash/ui/v2/src/components/scenes/SceneList.tsx":"45","/home/peroo/stash/ui/v2/src/components/scenes/SceneListTable.tsx":"46","/home/peroo/stash/ui/v2/src/components/scenes/SceneMarkerList.tsx":"47","/home/peroo/stash/ui/v2/src/components/scenes/ScenePlayer/ScenePlayer.tsx":"48","/home/peroo/stash/ui/v2/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx":"49","/home/peroo/stash/ui/v2/src/components/scenes/SceneSelectedOptions.tsx":"50","/home/peroo/stash/ui/v2/src/components/scenes/helpers.tsx":"51","/home/peroo/stash/ui/v2/src/components/scenes/scenes.tsx":"52","/home/peroo/stash/ui/v2/src/components/select/FilterMultiSelect.tsx":"53","/home/peroo/stash/ui/v2/src/components/select/FilterSelect.tsx":"54","/home/peroo/stash/ui/v2/src/components/select/MarkerTitleSuggest.tsx":"55","/home/peroo/stash/ui/v2/src/components/select/ScrapePerformerSuggest.tsx":"56","/home/peroo/stash/ui/v2/src/components/select/ValidGalleriesSelect.tsx":"57","/home/peroo/stash/ui/v2/src/core/StashService.ts":"58","/home/peroo/stash/ui/v2/src/core/generated-graphql.tsx":"59","/home/peroo/stash/ui/v2/src/hooks/ListHook.tsx":"60","/home/peroo/stash/ui/v2/src/hooks/LocalForage.ts":"61","/home/peroo/stash/ui/v2/src/hooks/VideoHover.ts":"62","/home/peroo/stash/ui/v2/src/index.tsx":"63","/home/peroo/stash/ui/v2/src/models/base-props.ts":"64","/home/peroo/stash/ui/v2/src/models/index.ts":"65","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/criterion.ts":"66","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/favorite.ts":"67","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/has-markers.ts":"68","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/is-missing.ts":"69","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/none.ts":"70","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/performers.ts":"71","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/rating.ts":"72","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/resolution.ts":"73","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/studios.ts":"74","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/tags.ts":"75","/home/peroo/stash/ui/v2/src/models/list-filter/criteria/utils.ts":"76","/home/peroo/stash/ui/v2/src/models/list-filter/filter.ts":"77","/home/peroo/stash/ui/v2/src/models/list-filter/types.ts":"78","/home/peroo/stash/ui/v2/src/models/react-images.d.ts":"79","/home/peroo/stash/ui/v2/src/models/react-jw-player.d.ts":"80","/home/peroo/stash/ui/v2/src/models/types.ts":"81","/home/peroo/stash/ui/v2/src/react-app-env.d.ts":"82","/home/peroo/stash/ui/v2/src/serviceWorker.ts":"83","/home/peroo/stash/ui/v2/src/utils/color.ts":"84","/home/peroo/stash/ui/v2/src/utils/errors.ts":"85","/home/peroo/stash/ui/v2/src/utils/navigation.ts":"86","/home/peroo/stash/ui/v2/src/utils/table.tsx":"87","/home/peroo/stash/ui/v2/src/utils/text.ts":"88","/home/peroo/stash/ui/v2/src/utils/toasts.ts":"89","/home/peroo/stash/ui/v2/src/utils/zoom.ts":"90"},{"size":1571,"mtime":1575810635928,"results":"91","hashOfConfig":"92"},{"size":769,"mtime":1575810635928,"results":"93","hashOfConfig":"92"},{"size":364,"mtime":1575810635928,"results":"94","hashOfConfig":"92"},{"size":1109,"mtime":1575819631714,"results":"95","hashOfConfig":"92"},{"size":1954,"mtime":1575810635928,"results":"96","hashOfConfig":"92"},{"size":1464,"mtime":1575810635928,"results":"97","hashOfConfig":"92"},{"size":3041,"mtime":1575810635928,"results":"98","hashOfConfig":"92"},{"size":154,"mtime":1575810635928,"results":"99","hashOfConfig":"92"},{"size":1885,"mtime":1575819631714,"results":"100","hashOfConfig":"92"},{"size":1317,"mtime":1575811824080,"results":"101","hashOfConfig":"92"},{"size":8087,"mtime":1575819631714,"results":"102","hashOfConfig":"92"},{"size":4442,"mtime":1575819631718,"results":"103","hashOfConfig":"92"},{"size":5104,"mtime":1575819631718,"results":"104","hashOfConfig":"92"},{"size":1767,"mtime":1575810635928,"results":"105","hashOfConfig":"92"},{"size":7508,"mtime":1575811824080,"results":"106","hashOfConfig":"92"},{"size":4090,"mtime":1575811824080,"results":"107","hashOfConfig":"92"},{"size":2809,"mtime":1575811824080,"results":"108","hashOfConfig":"92"},{"size":2973,"mtime":1575819631718,"results":"109","hashOfConfig":"92"},{"size":1258,"mtime":1575810635928,"results":"110","hashOfConfig":"92"},{"size":1858,"mtime":1575810635928,"results":"111","hashOfConfig":"92"},{"size":875,"mtime":1575810635928,"results":"112","hashOfConfig":"92"},{"size":5604,"mtime":1575819631718,"results":"113","hashOfConfig":"92"},{"size":1352,"mtime":1575810635928,"results":"114","hashOfConfig":"92"},{"size":364,"mtime":1575810635928,"results":"115","hashOfConfig":"92"},{"size":5680,"mtime":1575819631718,"results":"116","hashOfConfig":"92"},{"size":244,"mtime":1575810635928,"results":"117","hashOfConfig":"92"},{"size":4911,"mtime":1575811824080,"results":"118","hashOfConfig":"92"},{"size":2744,"mtime":1575810635928,"results":"119","hashOfConfig":"92"},{"size":6795,"mtime":1575811824080,"results":"120","hashOfConfig":"92"},{"size":7603,"mtime":1575811824080,"results":"121","hashOfConfig":"92"},{"size":3323,"mtime":1575810635928,"results":"122","hashOfConfig":"92"},{"size":1669,"mtime":1575810635928,"results":"123","hashOfConfig":"92"},{"size":14259,"mtime":1576598625042,"results":"124","hashOfConfig":"92"},{"size":1500,"mtime":1576598518665,"results":"125","hashOfConfig":"92"},{"size":2591,"mtime":1575810635928,"results":"126","hashOfConfig":"92"},{"size":397,"mtime":1575810635928,"results":"127","hashOfConfig":"92"},{"size":6923,"mtime":1576598490141,"results":"128","hashOfConfig":"92"},{"size":3548,"mtime":1575819631722,"results":"129","hashOfConfig":"92"},{"size":1498,"mtime":1576598390374,"results":"130","hashOfConfig":"92"},{"size":7524,"mtime":1576598365666,"results":"131","hashOfConfig":"92"},{"size":3150,"mtime":1575810635928,"results":"132","hashOfConfig":"92"},{"size":9201,"mtime":1576598346025,"results":"133","hashOfConfig":"92"},{"size":618,"mtime":1575810635928,"results":"134","hashOfConfig":"92"},{"size":32274,"mtime":1576598320443,"results":"135","hashOfConfig":"92"},{"size":2776,"mtime":1576598120984,"results":"136","hashOfConfig":"92"},{"size":3111,"mtime":1575810635928,"results":"137","hashOfConfig":"92"},{"size":1114,"mtime":1576598100401,"results":"138","hashOfConfig":"92"},{"size":7917,"mtime":1576598079008,"results":"139","hashOfConfig":"92"},{"size":10564,"mtime":1575819631746,"results":"140","hashOfConfig":"92"},{"size":8729,"mtime":1576597964447,"results":"141","hashOfConfig":"92"},{"size":1451,"mtime":1575810635928,"results":"142","hashOfConfig":"92"},{"size":484,"mtime":1575810635928,"results":"143","hashOfConfig":"92"},{"size":6521,"mtime":1576597838041,"results":"144","hashOfConfig":"92"},{"size":3823,"mtime":1576597810488,"results":"145","hashOfConfig":"92"},{"size":2275,"mtime":1575810635928,"results":"146","hashOfConfig":"92"},{"size":2608,"mtime":1576597793145,"results":"147","hashOfConfig":"92"},{"size":2695,"mtime":1576597777105,"results":"148","hashOfConfig":"92"},{"size":14701,"mtime":1575811824080,"results":"149","hashOfConfig":"92"},{"size":68793,"mtime":1575811113226,"results":"150","hashOfConfig":"92"},{"size":10880,"mtime":1576597208786,"results":"151","hashOfConfig":"92"},{"size":1659,"mtime":1575811824080,"results":"152","hashOfConfig":"92"},{"size":2144,"mtime":1575811824080,"results":"153","hashOfConfig":"92"},{"size":803,"mtime":1575810635928,"results":"154","hashOfConfig":"92"},{"size":124,"mtime":1575810635928,"results":"155","hashOfConfig":"92"},{"size":55,"mtime":1575810635928,"results":"156","hashOfConfig":"92"},{"size":6833,"mtime":1575810635928,"results":"157","hashOfConfig":"92"},{"size":659,"mtime":1575810635928,"results":"158","hashOfConfig":"92"},{"size":664,"mtime":1575810635928,"results":"159","hashOfConfig":"92"},{"size":682,"mtime":1575810635928,"results":"160","hashOfConfig":"92"},{"size":566,"mtime":1575810635928,"results":"161","hashOfConfig":"92"},{"size":966,"mtime":1575810635928,"results":"162","hashOfConfig":"92"},{"size":1013,"mtime":1575810635928,"results":"163","hashOfConfig":"92"},{"size":694,"mtime":1575810635928,"results":"164","hashOfConfig":"92"},{"size":881,"mtime":1575810635928,"results":"165","hashOfConfig":"92"},{"size":1287,"mtime":1575810635928,"results":"166","hashOfConfig":"92"},{"size":1965,"mtime":1575810635928,"results":"167","hashOfConfig":"92"},{"size":12393,"mtime":1575810635928,"results":"168","hashOfConfig":"92"},{"size":278,"mtime":1575810635928,"results":"169","hashOfConfig":"92"},{"size":187,"mtime":1575810635928,"results":"170","hashOfConfig":"92"},{"size":200,"mtime":1575810635928,"results":"171","hashOfConfig":"92"},{"size":74,"mtime":1575810635928,"results":"172","hashOfConfig":"92"},{"size":40,"mtime":1575810635928,"results":"173","hashOfConfig":"92"},{"size":5216,"mtime":1575810635928,"results":"174","hashOfConfig":"92"},{"size":308,"mtime":1575810635928,"results":"175","hashOfConfig":"92"},{"size":529,"mtime":1575810635928,"results":"176","hashOfConfig":"92"},{"size":2396,"mtime":1575810635928,"results":"177","hashOfConfig":"92"},{"size":4050,"mtime":1575810635928,"results":"178","hashOfConfig":"92"},{"size":2240,"mtime":1576597744487,"results":"179","hashOfConfig":"92"},{"size":275,"mtime":1575810635928,"results":"180","hashOfConfig":"92"},{"size":123,"mtime":1575811824080,"results":"181","hashOfConfig":"92"},{"filePath":"182","messages":"183","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"184"},"mugomj",{"filePath":"185","messages":"186","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"187","messages":"188","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"189","messages":"190","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":1,"source":"191"},{"filePath":"192","messages":"193","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"194"},{"filePath":"195","messages":"196","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"197"},{"filePath":"198","messages":"199","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"200","messages":"201","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":1,"source":"204"},{"filePath":"205","messages":"206","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"207"},{"filePath":"208","messages":"209","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":1,"source":"210"},{"filePath":"211","messages":"212","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":1,"source":"213"},{"filePath":"214","messages":"215","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":3,"source":"216"},{"filePath":"217","messages":"218","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"219","messages":"220","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"221"},{"filePath":"222","messages":"223","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"224"},{"filePath":"225","messages":"226","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"227"},{"filePath":"228","messages":"229","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":1,"source":"230"},{"filePath":"231","messages":"232","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"233"},{"filePath":"234","messages":"235","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"236"},{"filePath":"237","messages":"238","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"239","messages":"240","errorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":2,"source":"241"},{"filePath":"242","messages":"243","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"244"},{"filePath":"245","messages":"246","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"247","messages":"248","errorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":1,"source":"249"},{"filePath":"250","messages":"251","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"252","messages":"253","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"254"},{"filePath":"255","messages":"256","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"257"},{"filePath":"258","messages":"259","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"260","messages":"261","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"262"},{"filePath":"263","messages":"264","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"265","messages":"266","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"267","messages":"268","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":null},{"filePath":"269","messages":"270","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"271","messages":"272","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"273","messages":"274","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"275","messages":"276","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"277","messages":"278","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"279"},{"filePath":"280","messages":"281","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"282","messages":"283","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"284","messages":"285","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"286","messages":"287","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"288","messages":"289","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"290","messages":"291","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"292"},{"filePath":"293","messages":"294","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"295","messages":"296","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"297","messages":"298","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"299","messages":"300","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"301","messages":"302","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":2,"source":"303"},{"filePath":"304","messages":"305","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"306","messages":"307","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"308","messages":"309","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"310","messages":"311","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":1,"source":"312"},{"filePath":"313","messages":"314","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"315","messages":"316","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"317","messages":"318","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"319","messages":"320","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"321","messages":"322","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"323","messages":"324","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"325","messages":"326","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"327"},{"filePath":"328","messages":"329","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"330","messages":"331","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"332","messages":"333","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"334","messages":"335","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"336","messages":"337","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"338","messages":"339","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"340","messages":"341","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"342","messages":"343","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"344","messages":"345","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"346","messages":"347","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"348","messages":"349","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"350","messages":"351","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"352","messages":"353","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"354","messages":"355","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"356","messages":"357","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"358","messages":"359","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"360","messages":"361","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"362","messages":"363","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"364","messages":"365","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"366","messages":"367","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"368","messages":"369","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"370","messages":"371","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"372","messages":"373","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"374","messages":"375","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"376","messages":"377","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"378","messages":"379","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"380","messages":"381","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"382","messages":"383","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"384","messages":"385","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"386","messages":"387","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/peroo/stash/ui/v2/src/App.tsx",["388"],"import React, { FunctionComponent, useEffect } from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport { ErrorBoundary } from \"./components/ErrorBoundary\";\nimport Galleries from \"./components/Galleries/Galleries\";\nimport { MainNavbar } from \"./components/MainNavbar\";\nimport { PageNotFound } from \"./components/PageNotFound\";\nimport Performers from \"./components/performers/performers\";\nimport Scenes from \"./components/scenes/scenes\";\nimport { Settings } from \"./components/Settings/Settings\";\nimport { Stats } from \"./components/Stats\";\nimport Studios from \"./components/Studios/Studios\";\nimport Tags from \"./components/Tags/Tags\";\nimport { SceneFilenameParser } from \"./components/scenes/SceneFilenameParser\";\n\ninterface IProps {}\n\nexport const App: FunctionComponent = (props: IProps) => {\n return (\n
\n \n \n \n \n \n {/* */}\n \n \n \n \n \n \n \n \n \n
\n );\n};\n","/home/peroo/stash/ui/v2/src/components/ErrorBoundary.tsx",[],"/home/peroo/stash/ui/v2/src/components/Galleries/Galleries.tsx",[],"/home/peroo/stash/ui/v2/src/components/Galleries/Gallery.tsx",["389","390"],"import {\n Spinner,\n} from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\nimport { IBaseProps } from \"../../models\";\nimport { GalleryViewer } from \"./GalleryViewer\";\n\ninterface IProps extends IBaseProps {}\n\nexport const Gallery: FunctionComponent = (props: IProps) => {\n const [gallery, setGallery] = useState>({});\n const [isLoading, setIsLoading] = useState(false);\n\n const { data, error, loading } = StashService.useFindGallery(props.match.params.id);\n\n useEffect(() => {\n setIsLoading(loading);\n if (!data || !data.findGallery || !!error) { return; }\n setGallery(data.findGallery);\n }, [data]);\n\n if (!data || !data.findGallery || isLoading) { return ; }\n if (!!error) { return <>{error.message}; }\n return (\n
\n \n
\n );\n};\n","/home/peroo/stash/ui/v2/src/components/Galleries/GalleryList.tsx",["391","392"],"import { HTMLTable } from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport React, { FunctionComponent } from \"react\";\nimport { QueryHookResult } from \"react-apollo-hooks\";\nimport { Link } from \"react-router-dom\";\nimport { FindGalleriesQuery, FindGalleriesVariables } from \"../../core/generated-graphql\";\nimport { ListHook } from \"../../hooks/ListHook\";\nimport { IBaseProps } from \"../../models/base-props\";\nimport { ListFilterModel } from \"../../models/list-filter/filter\";\nimport { DisplayMode, FilterMode } from \"../../models/list-filter/types\";\n\ninterface IProps extends IBaseProps {}\n\nexport const GalleryList: FunctionComponent = (props: IProps) => {\n const listData = ListHook.useList({\n filterMode: FilterMode.Galleries,\n props,\n renderContent,\n });\n\n function renderContent(result: QueryHookResult, filter: ListFilterModel) {\n if (!result.data || !result.data.findGalleries) { return; }\n if (filter.displayMode === DisplayMode.Grid) {\n return

TODO

;\n } else if (filter.displayMode === DisplayMode.List) {\n return (\n \n \n \n Preview\n Path\n \n \n \n {result.data.findGalleries.galleries.map((gallery) => (\n \n \n \n {gallery.files.length > 0 ? : undefined}\n \n \n {gallery.path}\n \n ))}\n \n \n );\n } else if (filter.displayMode === DisplayMode.Wall) {\n return

TODO

;\n }\n }\n\n return listData.template;\n};\n","/home/peroo/stash/ui/v2/src/components/Galleries/GalleryViewer.tsx",["393"],"import _ from \"lodash\";\nimport React, { FunctionComponent, useState } from \"react\";\nimport Lightbox from \"react-images\";\nimport Gallery from \"react-photo-gallery\";\nimport * as GQL from \"../../core/generated-graphql\";\n\ninterface IProps {\n gallery: GQL.GalleryDataFragment;\n}\n\nexport const GalleryViewer: FunctionComponent = (props: IProps) => {\n const [currentImage, setCurrentImage] = useState(0);\n const [lightboxIsOpen, setLightboxIsOpen] = useState(false);\n\n function openLightbox(event: any, obj: any) {\n setCurrentImage(obj.index);\n setLightboxIsOpen(true);\n }\n function closeLightbox() {\n setCurrentImage(0);\n setLightboxIsOpen(false);\n }\n function gotoPrevious() {\n setCurrentImage(currentImage - 1);\n }\n function gotoNext() {\n setCurrentImage(currentImage + 1);\n }\n\n const photos = props.gallery.files.map((file) => ({src: file.path || \"\", caption: file.name}));\n const thumbs = props.gallery.files.map((file) => ({src: `${file.path}?thumb=true` || \"\", width: 1, height: 1}));\n return (\n
\n \n window.open(photos[currentImage].src, \"_blank\")}\n width={9999}\n />\n
\n );\n};\n","/home/peroo/stash/ui/v2/src/components/MainNavbar.tsx",[],"/home/peroo/stash/ui/v2/src/components/PageNotFound.tsx",[],"/home/peroo/stash/ui/v2/src/components/Settings/Settings.tsx",["394"],"import {\n Card,\n Tab,\n Tabs,\n} from \"@blueprintjs/core\";\nimport queryString from \"query-string\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { IBaseProps } from \"../../models\";\nimport { SettingsAboutPanel } from \"./SettingsAboutPanel\";\nimport { SettingsConfigurationPanel } from \"./SettingsConfigurationPanel\";\nimport { SettingsInterfacePanel } from \"./SettingsInterfacePanel\";\nimport { SettingsLogsPanel } from \"./SettingsLogsPanel\";\nimport { SettingsTasksPanel } from \"./SettingsTasksPanel/SettingsTasksPanel\";\n\ninterface IProps extends IBaseProps {}\n\ntype TabId = \"configuration\" | \"tasks\" | \"logs\" | \"about\";\n\nexport const Settings: FunctionComponent = (props: IProps) => {\n const [tabId, setTabId] = useState(getTabId());\n\n useEffect(() => {\n const location = Object.assign({}, props.history.location);\n location.search = queryString.stringify({tab: tabId}, {encode: false});\n props.history.replace(location);\n }, [tabId]);\n\n function getTabId(): TabId {\n const queryParams = queryString.parse(props.location.search);\n if (!queryParams.tab || typeof queryParams.tab !== \"string\") { return \"tasks\"; }\n return queryParams.tab as TabId;\n }\n\n return (\n \n setTabId(newId as TabId)}\n defaultSelectedTabId={getTabId()}\n >\n } />\n } />\n } />\n } />\n } />\n \n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Settings/SettingsAboutPanel.tsx",["395","396","397","398","399"],"import {\n H1,\n H4,\n H6,\n HTMLTable,\n Spinner,\n Tag,\n} from \"@blueprintjs/core\";\nimport React, { FunctionComponent } from \"react\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { TextUtils } from \"../../utils/text\";\nimport { StashService } from \"../../core/StashService\";\n\ninterface IProps {}\n\nexport const SettingsAboutPanel: FunctionComponent = (props: IProps) => {\n const { data, error, loading } = StashService.useVersion();\n\n function maybeRenderTag() {\n if (!data || !data.version || !data.version.version) { return; }\n return (\n \n Version:\n {data.version.version}\n \n );\n }\n\n function renderVersion() {\n if (!data || !data.version) { return; }\n return (\n <>\n \n \n {maybeRenderTag()}\n \n Build hash:\n {data.version.hash}\n \n \n Build time:\n {data.version.build_time}\n \n \n \n \n );\n }\n return (\n <>\n

About

\n {!data || loading ? : undefined}\n {!!error ? error.message : undefined}\n {renderVersion()}\n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Settings/SettingsConfigurationPanel.tsx",["400","401","402","403"],"import {\n Button,\n Divider,\n FormGroup,\n H1,\n H4,\n H6,\n InputGroup,\n Spinner,\n Tag,\n Checkbox,\n HTMLSelect,\n} from \"@blueprintjs/core\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { ToastUtils } from \"../../utils/toasts\";\nimport { FolderSelect } from \"../Shared/FolderSelect/FolderSelect\";\n\ninterface IProps {}\n\nexport const SettingsConfigurationPanel: FunctionComponent = (props: IProps) => {\n // Editing config state\n const [stashes, setStashes] = useState([]);\n const [databasePath, setDatabasePath] = useState(undefined);\n const [generatedPath, setGeneratedPath] = useState(undefined);\n const [maxTranscodeSize, setMaxTranscodeSize] = useState(undefined);\n const [maxStreamingTranscodeSize, setMaxStreamingTranscodeSize] = useState(undefined);\n const [username, setUsername] = useState(undefined);\n const [password, setPassword] = useState(undefined);\n const [logFile, setLogFile] = useState();\n const [logOut, setLogOut] = useState(true);\n const [logLevel, setLogLevel] = useState(\"Info\");\n const [logAccess, setLogAccess] = useState(true);\n\n const { data, error, loading } = StashService.useConfiguration();\n\n const updateGeneralConfig = StashService.useConfigureGeneral({\n stashes,\n databasePath,\n generatedPath,\n maxTranscodeSize,\n maxStreamingTranscodeSize,\n username,\n password,\n logFile,\n logOut,\n logLevel,\n logAccess,\n });\n\n useEffect(() => {\n if (!data || !data.configuration || !!error) { return; }\n const conf = StashService.nullToUndefined(data.configuration) as GQL.ConfigDataFragment;\n if (!!conf.general) {\n setStashes(conf.general.stashes || []);\n setDatabasePath(conf.general.databasePath);\n setGeneratedPath(conf.general.generatedPath);\n setMaxTranscodeSize(conf.general.maxTranscodeSize);\n setMaxStreamingTranscodeSize(conf.general.maxStreamingTranscodeSize);\n setUsername(conf.general.username);\n setPassword(conf.general.password);\n setLogFile(conf.general.logFile);\n setLogOut(conf.general.logOut);\n setLogLevel(conf.general.logLevel);\n setLogAccess(conf.general.logAccess);\n }\n }, [data]);\n\n function onStashesChanged(directories: string[]) {\n setStashes(directories);\n }\n\n async function onSave() {\n try {\n const result = await updateGeneralConfig();\n console.log(result);\n ToastUtils.success(\"Updated config\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n const transcodeQualities = [\n GQL.StreamingResolutionEnum.Low,\n GQL.StreamingResolutionEnum.Standard,\n GQL.StreamingResolutionEnum.StandardHd,\n GQL.StreamingResolutionEnum.FullHd,\n GQL.StreamingResolutionEnum.FourK,\n GQL.StreamingResolutionEnum.Original\n ].map(resolutionToString);\n\n function resolutionToString(r : GQL.StreamingResolutionEnum | undefined) {\n switch (r) {\n case GQL.StreamingResolutionEnum.Low: return \"240p\";\n case GQL.StreamingResolutionEnum.Standard: return \"480p\";\n case GQL.StreamingResolutionEnum.StandardHd: return \"720p\";\n case GQL.StreamingResolutionEnum.FullHd: return \"1080p\";\n case GQL.StreamingResolutionEnum.FourK: return \"4k\";\n case GQL.StreamingResolutionEnum.Original: return \"Original\";\n }\n\n return \"Original\";\n }\n\n function translateQuality(quality : string) {\n switch (quality) {\n case \"240p\": return GQL.StreamingResolutionEnum.Low;\n case \"480p\": return GQL.StreamingResolutionEnum.Standard;\n case \"720p\": return GQL.StreamingResolutionEnum.StandardHd;\n case \"1080p\": return GQL.StreamingResolutionEnum.FullHd;\n case \"4k\": return GQL.StreamingResolutionEnum.FourK;\n case \"Original\": return GQL.StreamingResolutionEnum.Original;\n }\n\n return GQL.StreamingResolutionEnum.Original;\n }\n\n return (\n <>\n {!!error ?

{error.message}

: undefined}\n {(!data || !data.configuration || loading) ? : undefined}\n

Library

\n \n \n \n \n \n \n \n \n setDatabasePath(e.target.value)} />\n \n\n \n setGeneratedPath(e.target.value)} />\n \n \n \n \n \n

Video

\n \n setMaxTranscodeSize(translateQuality(event.target.value))}\n value={resolutionToString(maxTranscodeSize)}\n />\n \n \n setMaxStreamingTranscodeSize(translateQuality(event.target.value))}\n value={resolutionToString(maxStreamingTranscodeSize)}\n />\n \n
\n \n\n \n

Authentication

\n \n setUsername(e.target.value)} />\n
\n \n setPassword(e.target.value)} />\n \n \n\n \n

Logging

\n \n setLogFile(e.target.value)} />\n \n\n \n setLogOut(!logOut)}\n />\n \n\n \n setLogLevel(event.target.value)}\n value={logLevel}\n />\n \n\n \n setLogAccess(!logAccess)}\n />\n \n\n \n \n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Settings/SettingsInterfacePanel.tsx",["404","405"],"import {\n Button,\n Checkbox,\n Divider,\n FormGroup,\n H4,\n Spinner,\n TextArea,\n NumericInput\n} from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { StashService } from \"../../core/StashService\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { ToastUtils } from \"../../utils/toasts\";\n\ninterface IProps {}\n\nexport const SettingsInterfacePanel: FunctionComponent = () => {\n const config = StashService.useConfiguration();\n const [soundOnPreview, setSoundOnPreview] = useState();\n const [wallShowTitle, setWallShowTitle] = useState();\n const [maximumLoopDuration, setMaximumLoopDuration] = useState(0);\n const [autostartVideo, setAutostartVideo] = useState();\n const [showStudioAsText, setShowStudioAsText] = useState();\n const [css, setCSS] = useState();\n const [cssEnabled, setCSSEnabled] = useState();\n\n const updateInterfaceConfig = StashService.useConfigureInterface({\n soundOnPreview,\n wallShowTitle,\n maximumLoopDuration,\n autostartVideo,\n showStudioAsText,\n css,\n cssEnabled\n });\n\n useEffect(() => {\n if (!config.data || !config.data.configuration || !!config.error) { return; }\n if (!!config.data.configuration.interface) {\n let iCfg = config.data.configuration.interface;\n setSoundOnPreview(iCfg.soundOnPreview !== undefined ? iCfg.soundOnPreview : true);\n setWallShowTitle(iCfg.wallShowTitle !== undefined ? iCfg.wallShowTitle : true);\n setMaximumLoopDuration(iCfg.maximumLoopDuration || 0);\n setAutostartVideo(iCfg.autostartVideo !== undefined ? iCfg.autostartVideo : false);\n setShowStudioAsText(iCfg.showStudioAsText !== undefined ? iCfg.showStudioAsText : false);\n setCSS(config.data.configuration.interface.css || \"\");\n setCSSEnabled(config.data.configuration.interface.cssEnabled || false);\n }\n }, [config.data]);\n\n async function onSave() {\n try {\n const result = await updateInterfaceConfig();\n console.log(result);\n ToastUtils.success(\"Updated config\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n return (\n <>\n {!!config.error ?

{config.error.message}

: undefined}\n {(!config.data || !config.data.configuration || config.loading) ? : undefined}\n

User Interface

\n \n setWallShowTitle(!wallShowTitle)}\n />\n setSoundOnPreview(!soundOnPreview)}\n />\n \n\n \n {\n setShowStudioAsText(!showStudioAsText)\n }}\n />\n \n \n \n {\n setAutostartVideo(!autostartVideo)\n }}\n />\n\n \n setMaximumLoopDuration(value)}\n min={0}\n minorStepSize={1}\n />\n \n \n\n \n {\n setCSSEnabled(!cssEnabled)\n }}\n />\n\n \n \n\n \n \n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Settings/SettingsLogsPanel.tsx",["406","407","408","409"],"import {\n H4, FormGroup, HTMLSelect,\n} from \"@blueprintjs/core\";\nimport React, { FunctionComponent, useState, useEffect, useRef } from \"react\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\n\ninterface IProps {}\n\nfunction convertTime(logEntry : GQL.LogEntryDataFragment) {\n function pad(val : number) {\n var ret = val.toString();\n if (val <= 9) {\n ret = \"0\" + ret;\n }\n\n return ret;\n }\n\n var date = new Date(logEntry.time);\n var month = date.getMonth() + 1;\n var day = date.getDate();\n var dateStr = date.getFullYear() + \"-\" + pad(month) + \"-\" + pad(day);\n dateStr += \" \" + pad(date.getHours()) + \":\" + pad(date.getMinutes()) + \":\" + pad(date.getSeconds());\n\n return dateStr;\n}\n\nclass LogEntry {\n public time: string;\n public level: string;\n public message: string;\n public id: string;\n\n private static nextId: number = 0;\n\n public constructor(logEntry: GQL.LogEntryDataFragment) {\n this.time = convertTime(logEntry);\n this.level = logEntry.level;\n this.message = logEntry.message;\n\n var id = LogEntry.nextId++;\n this.id = id.toString();\n }\n}\n\nexport const SettingsLogsPanel: FunctionComponent = (props: IProps) => {\n const { data, error } = StashService.useLoggingSubscribe();\n const { data: existingData } = StashService.useLogs();\n \n const logEntries = useRef([]);\n const [logLevel, setLogLevel] = useState(\"Info\");\n const [filteredLogEntries, setFilteredLogEntries] = useState([]);\n const lastUpdate = useRef(0);\n const updateTimeout = useRef();\n\n // maximum number of log entries to display. Subsequent entries will truncate \n // the list, dropping off the oldest entries first.\n const MAX_LOG_ENTRIES = 200;\n\n function truncateLogEntries(entries : LogEntry[]) {\n entries.length = Math.min(entries.length, MAX_LOG_ENTRIES);\n }\n\n function prependLogEntries(toPrepend : LogEntry[]) {\n var newLogEntries = toPrepend.concat(logEntries.current);\n truncateLogEntries(newLogEntries);\n logEntries.current = newLogEntries;\n }\n\n function appendLogEntries(toAppend : LogEntry[]) {\n var newLogEntries = logEntries.current.concat(toAppend);\n truncateLogEntries(newLogEntries);\n logEntries.current = newLogEntries;\n }\n\n useEffect(() => {\n if (!data) { return; }\n\n // append data to the logEntries\n var convertedData = data.loggingSubscribe.map(convertLogEntry);\n\n // filter subscribed data as it comes in, otherwise we'll end up\n // truncating stuff that wasn't filtered out\n convertedData = convertedData.filter(filterByLogLevel)\n \n // put newest entries at the top\n convertedData.reverse();\n prependLogEntries(convertedData);\n\n updateFilteredEntries();\n }, [data]);\n\n useEffect(() => {\n if (!existingData || !existingData.logs) { return; }\n\n var convertedData = existingData.logs.map(convertLogEntry);\n appendLogEntries(convertedData);\n\n updateFilteredEntries();\n }, [existingData]);\n\n function updateFilteredEntries() {\n if (!updateTimeout.current) {\n console.log(\"Updating after timeout\");\n }\n updateTimeout.current = undefined;\n\n var filteredEntries = logEntries.current.filter(filterByLogLevel);\n setFilteredLogEntries(filteredEntries);\n\n lastUpdate.current = new Date().getTime();\n }\n\n useEffect(() => {\n updateFilteredEntries();\n }, [logLevel]);\n\n function convertLogEntry(logEntry : GQL.LogEntryDataFragment) {\n return new LogEntry(logEntry);\n }\n\n function levelClass(level : string) {\n return level.toLowerCase().trim();\n }\n\n interface ILogElementProps {\n logEntry : LogEntry\n }\n\n function LogElement(props : ILogElementProps) {\n // pad to maximum length of level enum\n var level = props.logEntry.level.padEnd(GQL.LogLevel.Progress.length);\n\n return (\n <>\n {props.logEntry.time} \n {level} \n {props.logEntry.message}\n
\n \n );\n }\n\n function maybeRenderError() {\n if (error) {\n return (\n <>\n Error connecting to log server: {error.message}
\n \n );\n }\n }\n\n const logLevels = [\"Debug\", \"Info\", \"Warning\", \"Error\"];\n\n function filterByLogLevel(logEntry : LogEntry) {\n if (logLevel == \"Debug\") {\n return true;\n }\n\n var logLevelIndex = logLevels.indexOf(logLevel);\n var levelIndex = logLevels.indexOf(logEntry.level);\n\n return levelIndex >= logLevelIndex;\n }\n\n return (\n <>\n

Logs

\n
\n \n setLogLevel(event.target.value)}\n value={logLevel}\n />\n \n
\n
\n {maybeRenderError()}\n {filteredLogEntries.map((logEntry) =>\n \n )}\n
\n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx",[],"/home/peroo/stash/ui/v2/src/components/Settings/SettingsTasksPanel/SettingsTasksPanel.tsx",["410"],"import {\n Alert,\n Button,\n Checkbox,\n Divider,\n FormGroup,\n H4,\n AnchorButton,\n ProgressBar,\n H5,\n} from \"@blueprintjs/core\";\nimport React, { FunctionComponent, useState, useEffect } from \"react\";\nimport { StashService } from \"../../../core/StashService\";\nimport { ErrorUtils } from \"../../../utils/errors\";\nimport { ToastUtils } from \"../../../utils/toasts\";\nimport { GenerateButton } from \"./GenerateButton\";\nimport { Link } from \"react-router-dom\";\n\ninterface IProps {}\n\nexport const SettingsTasksPanel: FunctionComponent = (props: IProps) => {\n const [isImportAlertOpen, setIsImportAlertOpen] = useState(false);\n const [isCleanAlertOpen, setIsCleanAlertOpen] = useState(false);\n const [nameFromMetadata, setNameFromMetadata] = useState(true);\n const [status, setStatus] = useState(\"\");\n const [progress, setProgress] = useState(undefined);\n\n const [autoTagPerformers, setAutoTagPerformers] = useState(true);\n const [autoTagStudios, setAutoTagStudios] = useState(true);\n const [autoTagTags, setAutoTagTags] = useState(true);\n\n const jobStatus = StashService.useJobStatus();\n const metadataUpdate = StashService.useMetadataUpdate();\n\n function statusToText(status : string) {\n switch(status) {\n case \"Idle\":\n return \"Idle\";\n case \"Scan\":\n return \"Scanning for new content\";\n case \"Generate\":\n return \"Generating supporting files\";\n case \"Clean\":\n return \"Cleaning the database\";\n case \"Export\":\n return \"Exporting to JSON\";\n case \"Import\":\n return \"Importing from JSON\";\n case \"Auto Tag\":\n return \"Auto tagging scenes\";\n }\n\n return \"Idle\";\n }\n\n useEffect(() => {\n if (!!jobStatus.data && !!jobStatus.data.jobStatus) {\n setStatus(statusToText(jobStatus.data.jobStatus.status));\n var newProgress = jobStatus.data.jobStatus.progress;\n if (newProgress < 0) {\n setProgress(undefined);\n } else {\n setProgress(newProgress);\n }\n }\n }, [jobStatus.data]);\n\n useEffect(() => {\n if (!!metadataUpdate.data && !!metadataUpdate.data.metadataUpdate) {\n setStatus(statusToText(metadataUpdate.data.metadataUpdate.status));\n var newProgress = metadataUpdate.data.metadataUpdate.progress;\n if (newProgress < 0) {\n setProgress(undefined);\n } else {\n setProgress(newProgress);\n }\n }\n }, [metadataUpdate.data]);\n\n function onImport() {\n setIsImportAlertOpen(false);\n StashService.queryMetadataImport().then(() => { jobStatus.refetch()});\n }\n\n function renderImportAlert() {\n return (\n setIsImportAlertOpen(false)}\n onConfirm={() => onImport()}\n >\n

\n Are you sure you want to import? This will delete the database and re-import from\n your exported metadata.\n

\n \n );\n }\n\n function onClean() {\n setIsCleanAlertOpen(false);\n StashService.queryMetadataClean().then(() => { jobStatus.refetch()});\n }\n\n function renderCleanAlert() {\n return (\n setIsCleanAlertOpen(false)}\n onConfirm={() => onClean()}\n >\n

\n Are you sure you want to Clean?\n This will delete db information and generated content\n for all scenes that are no longer found in the filesystem.\n

\n \n );\n }\n\n async function onScan() {\n try {\n await StashService.queryMetadataScan({nameFromMetadata});\n ToastUtils.success(\"Started scan\");\n jobStatus.refetch();\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n function getAutoTagInput() {\n var wildcard = [\"*\"];\n return {\n performers: autoTagPerformers ? wildcard : [],\n studios: autoTagStudios ? wildcard : [],\n tags: autoTagTags ? wildcard : []\n }\n }\n\n async function onAutoTag() {\n try {\n await StashService.queryMetadataAutoTag(getAutoTagInput());\n ToastUtils.success(\"Started auto tagging\");\n jobStatus.refetch();\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n function maybeRenderStop() {\n if (!status || status === \"Idle\") {\n return undefined;\n }\n\n return (\n <>\n \n )\n }\n }\n\n function renderScenesButton() {\n if (props.isEditing) { return; }\n let linkSrc: string = \"#\";\n if (!!props.performer) {\n linkSrc = NavigationUtils.makePerformerScenesUrl(props.performer);\n } else if (!!props.studio) {\n linkSrc = NavigationUtils.makeStudioScenesUrl(props.studio);\n }\n return (\n \n Scenes\n \n );\n }\n\n function renderDeleteAlert() {\n var name;\n\n if (props.performer) {\n name = props.performer.name;\n }\n if (props.studio) {\n name = props.studio.name;\n }\n\n return (\n setIsDeleteAlertOpen(false)}\n onConfirm={() => props.onDelete()}\n >\n

\n Are you sure you want to delete {name}?\n

\n \n );\n }\n\n\n return (\n <>\n {renderDeleteAlert()}\n \n \n {renderEditButton()}\n {props.isEditing && !props.isNew ? : undefined}\n {renderScraperMenu()}\n {renderImageInput()}\n {renderSaveButton()}\n\n {renderAutoTagButton()}\n {renderScenesButton()}\n {renderDeleteButton()}\n \n \n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Shared/DurationInput.tsx",["412","413"],"import React, { FunctionComponent, useState, useEffect } from \"react\";\nimport { InputGroup, ButtonGroup, Button, IInputGroupProps, HTMLInputProps, ControlGroup } from \"@blueprintjs/core\";\nimport { TextUtils } from \"../../utils/text\";\nimport { FIXED, NUMERIC_INPUT } from \"@blueprintjs/core/lib/esm/common/classes\";\n\ninterface IProps {\n disabled?: boolean\n numericValue: number\n onValueChange(valueAsNumber: number): void\n onReset?(): void\n}\n\nexport const DurationInput: FunctionComponent = (props: IProps) => {\n const [value, setValue] = useState(secondsToString(props.numericValue));\n\n useEffect(() => {\n setValue(secondsToString(props.numericValue));\n }, [props.numericValue]);\n\n function secondsToString(seconds : number) {\n let ret = TextUtils.secondsToTimestamp(seconds);\n\n if (ret.startsWith(\"00:\")) {\n ret = ret.substr(3);\n\n if (ret.startsWith(\"0\")) {\n ret = ret.substr(1);\n }\n }\n\n return ret;\n }\n\n function stringToSeconds(v : string) {\n if (!v) {\n return 0;\n }\n \n let splits = v.split(\":\");\n\n if (splits.length > 3) {\n return 0;\n }\n\n let seconds = 0;\n let factor = 1;\n while(splits.length > 0) {\n let thisSplit = splits.pop();\n if (thisSplit == undefined) {\n return 0;\n }\n\n let thisInt = parseInt(thisSplit, 10);\n if (isNaN(thisInt)) {\n return 0;\n }\n\n seconds += factor * thisInt;\n factor *= 60;\n }\n\n return seconds;\n }\n\n function increment() {\n let seconds = stringToSeconds(value);\n seconds += 1;\n props.onValueChange(seconds);\n }\n\n function decrement() {\n let seconds = stringToSeconds(value);\n seconds -= 1;\n props.onValueChange(seconds);\n }\n\n function renderButtons() {\n return (\n \n increment()}\n />\n decrement()}\n />\n \n )\n }\n\n function onReset() {\n if (props.onReset) {\n props.onReset();\n }\n }\n\n function maybeRenderReset() {\n if (props.onReset) {\n return (\n onReset()}\n />\n )\n }\n }\n\n return (\n \n setValue(e.target.value)}\n onBlur={() => props.onValueChange(stringToSeconds(value))}\n placeholder=\"hh:mm:ss\"\n rightElement={maybeRenderReset()}\n />\n {renderButtons()}\n \n )\n};","/home/peroo/stash/ui/v2/src/components/Shared/FolderSelect/FolderSelect.tsx",["414","415"],"import {\n Button,\n Classes,\n Dialog,\n InputGroup,\n Spinner,\n FormGroup,\n} from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { StashService } from \"../../../core/StashService\";\n\ninterface IProps {\n directories: string[];\n onDirectoriesChanged: (directories: string[]) => void;\n}\n\nexport const FolderSelect: FunctionComponent = (props: IProps) => {\n const [currentDirectory, setCurrentDirectory] = useState(\"\");\n const [isDisplayingDialog, setIsDisplayingDialog] = useState(false);\n const [selectableDirectories, setSelectableDirectories] = useState([]);\n const [selectedDirectories, setSelectedDirectories] = useState([]);\n const { data, error, loading } = StashService.useDirectories(currentDirectory);\n\n useEffect(() => {\n setSelectedDirectories(props.directories);\n }, [props.directories]);\n\n useEffect(() => {\n if (!data || !data.directories || !!error) { return; }\n setSelectableDirectories(StashService.nullToUndefined(data.directories));\n }, [data]);\n\n function onSelectDirectory() {\n selectedDirectories.push(currentDirectory);\n setSelectedDirectories(selectedDirectories);\n setCurrentDirectory(\"\");\n setIsDisplayingDialog(false);\n props.onDirectoriesChanged(selectedDirectories);\n }\n\n function onRemoveDirectory(directory: string) {\n const newSelectedDirectories = selectedDirectories.filter((dir) => dir !== directory);\n setSelectedDirectories(newSelectedDirectories);\n props.onDirectoriesChanged(newSelectedDirectories);\n }\n\n function renderDialog() {\n return (\n setIsDisplayingDialog(false)}\n title=\"Select Directory\"\n >\n
\n setCurrentDirectory(e.target.value)}\n value={currentDirectory}\n rightElement={(!data || !data.directories || loading) ? : undefined}\n />\n {selectableDirectories.map((path) => {\n return
setCurrentDirectory(path)}>{path}
;\n })}\n
\n
\n
\n \n
\n
\n \n );\n }\n\n return (\n <>\n {!!error ?

{error.message}

: undefined}\n {renderDialog()}\n \n {selectedDirectories.map((path) => {\n return ;\n })}\n \n \n \n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Shared/TagLink.tsx",["416"],"import {\n ITagProps,\n Tag,\n} from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport React, { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { PerformerDataFragment, SceneMarkerDataFragment, TagDataFragment } from \"../../core/generated-graphql\";\nimport { NavigationUtils } from \"../../utils/navigation\";\nimport { TextUtils } from \"../../utils/text\";\n\ninterface IProps extends ITagProps {\n tag?: Partial;\n performer?: Partial;\n marker?: Partial;\n}\n\nexport const TagLink: FunctionComponent = (props: IProps) => {\n let link: string = \"#\";\n let title: string = \"\";\n if (!!props.tag) {\n link = NavigationUtils.makeTagScenesUrl(props.tag);\n title = props.tag.name || \"\";\n } else if (!!props.performer) {\n link = NavigationUtils.makePerformerScenesUrl(props.performer);\n title = props.performer.name || \"\";\n } else if (!!props.marker) {\n link = NavigationUtils.makeSceneMarkerUrl(props.marker);\n title = `${props.marker.title} - ${TextUtils.secondsToTimestamp(props.marker.seconds || 0)}`;\n }\n return (\n \n {title}\n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Stats.tsx",["417"],"import { H1, Spinner } from \"@blueprintjs/core\";\nimport React, { FunctionComponent } from \"react\";\nimport { StashService } from \"../core/StashService\";\n\nexport const Stats: FunctionComponent = () => {\n const { data, error, loading } = StashService.useStats();\n\n function renderStats() {\n if (!data || !data.stats) { return; }\n return (\n \n );\n }\n\n return (\n
\n {!data || loading ? : undefined}\n {!!error ? error.message : undefined}\n {renderStats()}\n\n

Notes

\n
\n        {`\n        This is still an early version, some things are still a work in progress.\n        `}\n      
\n
\n );\n};\n","/home/peroo/stash/ui/v2/src/components/Studios/StudioCard.tsx",[],"/home/peroo/stash/ui/v2/src/components/Studios/StudioDetails/Studio.tsx",["418","419","420","421","422","423","424","425","426","427"],"import {\n Button,\n Classes,\n Dialog,\n EditableText,\n HTMLSelect,\n HTMLTable,\n Spinner,\n} from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport * as GQL from \"../../../core/generated-graphql\";\nimport { StashService } from \"../../../core/StashService\";\nimport { IBaseProps } from \"../../../models\";\nimport { ErrorUtils } from \"../../../utils/errors\";\nimport { TableUtils } from \"../../../utils/table\";\nimport { DetailsEditNavbar } from \"../../Shared/DetailsEditNavbar\";\nimport { ToastUtils } from \"../../../utils/toasts\";\n\ninterface IProps extends IBaseProps {}\n\nexport const Studio: FunctionComponent = (props: IProps) => {\n const isNew = props.match.params.id === \"new\";\n\n // Editing state\n const [isEditing, setIsEditing] = useState(isNew);\n\n // Editing studio state\n const [image, setImage] = useState(undefined);\n const [name, setName] = useState(undefined);\n const [url, setUrl] = useState(undefined);\n\n // Studio state\n const [studio, setStudio] = useState>({});\n const [imagePreview, setImagePreview] = useState(undefined);\n\n // Network state\n const [isLoading, setIsLoading] = useState(false);\n\n const { data, error, loading } = StashService.useFindStudio(props.match.params.id);\n const updateStudio = StashService.useStudioUpdate(getStudioInput() as GQL.StudioUpdateInput);\n const createStudio = StashService.useStudioCreate(getStudioInput() as GQL.StudioCreateInput);\n const deleteStudio = StashService.useStudioDestroy(getStudioInput() as GQL.StudioDestroyInput);\n\n function updateStudioEditState(state: Partial) {\n setName(state.name);\n setUrl(state.url);\n }\n\n useEffect(() => {\n setIsLoading(loading);\n if (!data || !data.findStudio || !!error) { return; }\n setStudio(data.findStudio);\n }, [data]);\n\n useEffect(() => {\n setImagePreview(studio.image_path);\n setImage(undefined);\n updateStudioEditState(studio);\n if (!isNew) {\n setIsEditing(false);\n }\n }, [studio]);\n\n function pasteImage(e : any) {\n if (e.clipboardData.files.length == 0) {\n return;\n }\n \n const file: File = e.clipboardData.files[0];\n const reader: FileReader = new FileReader();\n \n reader.onloadend = (e) => {\n setImagePreview(reader.result as string);\n setImage(reader.result as string);\n };\n reader.readAsDataURL(file);\n }\n\n useEffect(() => {\n window.addEventListener(\"paste\", pasteImage);\n \n return () => window.removeEventListener(\"paste\", pasteImage);\n });\n\n if (!isNew && !isEditing) {\n if (!data || !data.findStudio || isLoading) { return ; }\n if (!!error) { return <>error...; }\n }\n\n function getStudioInput() {\n const input: Partial = {\n name,\n url,\n image,\n };\n\n if (!isNew) {\n (input as GQL.StudioUpdateInput).id = props.match.params.id;\n }\n return input;\n }\n\n async function onSave() {\n setIsLoading(true);\n try {\n if (!isNew) {\n const result = await updateStudio();\n setStudio(result.data.studioUpdate);\n } else {\n const result = await createStudio();\n setStudio(result.data.studioCreate);\n props.history.push(`/studios/${result.data.studioCreate.id}`);\n }\n } catch (e) {\n ErrorUtils.handle(e);\n }\n setIsLoading(false);\n }\n\n async function onAutoTag() {\n if (!studio || !studio.id) {\n return;\n }\n try {\n await StashService.queryMetadataAutoTag({ studios: [studio.id]});\n ToastUtils.success(\"Started auto tagging\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n async function onDelete() {\n setIsLoading(true);\n try {\n const result = await deleteStudio();\n } catch (e) {\n ErrorUtils.handle(e);\n }\n setIsLoading(false);\n \n // redirect to studios page\n props.history.push(`/studios`);\n }\n\n function onImageChange(event: React.FormEvent) {\n const file: File = (event.target as any).files[0];\n const reader: FileReader = new FileReader();\n\n reader.onloadend = (e) => {\n setImagePreview(reader.result as string);\n setImage(reader.result as string);\n };\n reader.readAsDataURL(file);\n }\n\n // TODO: CSS class\n return (\n <>\n
\n
\n \n
\n
\n { setIsEditing(!isEditing); updateStudioEditState(studio); }}\n onSave={onSave}\n onDelete={onDelete}\n onAutoTag={onAutoTag}\n onImageChange={onImageChange}\n />\n

\n setName(value)}\n />\n

\n\n \n \n {TableUtils.renderEditableTextTableRow({title: \"URL\", value: url, isEditing, onChange: setUrl})}\n \n \n
\n
\n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Studios/StudioList.tsx",["428"],"import _ from \"lodash\";\nimport React, { FunctionComponent } from \"react\";\nimport { QueryHookResult } from \"react-apollo-hooks\";\nimport { FindStudiosQuery, FindStudiosVariables } from \"../../core/generated-graphql\";\nimport { ListHook } from \"../../hooks/ListHook\";\nimport { IBaseProps } from \"../../models/base-props\";\nimport { ListFilterModel } from \"../../models/list-filter/filter\";\nimport { DisplayMode, FilterMode } from \"../../models/list-filter/types\";\nimport { StudioCard } from \"./StudioCard\";\n\ninterface IProps extends IBaseProps {}\n\nexport const StudioList: FunctionComponent = (props: IProps) => {\n const listData = ListHook.useList({\n filterMode: FilterMode.Studios,\n props,\n renderContent,\n });\n\n function renderContent(result: QueryHookResult, filter: ListFilterModel) {\n if (!result.data || !result.data.findStudios) { return; }\n if (filter.displayMode === DisplayMode.Grid) {\n return (\n
\n {result.data.findStudios.studios.map((studio) => ())}\n
\n );\n } else if (filter.displayMode === DisplayMode.List) {\n return

TODO

;\n } else if (filter.displayMode === DisplayMode.Wall) {\n return

TODO

;\n }\n }\n\n return listData.template;\n};\n","/home/peroo/stash/ui/v2/src/components/Studios/Studios.tsx",[],"/home/peroo/stash/ui/v2/src/components/Tags/TagList.tsx",["429","430","431","432","433","434","435","436","437","438","439","440"],"import { Alert, Button, Classes, Dialog, EditableText, FormGroup, HTMLTable, InputGroup, Spinner, Tag } from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { QueryHookResult } from \"react-apollo-hooks\";\nimport { Link } from \"react-router-dom\";\nimport { FindGalleriesQuery, FindGalleriesVariables } from \"../../core/generated-graphql\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\nimport { ListHook } from \"../../hooks/ListHook\";\nimport { IBaseProps } from \"../../models/base-props\";\nimport { ListFilterModel } from \"../../models/list-filter/filter\";\nimport { DisplayMode, FilterMode } from \"../../models/list-filter/types\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { NavigationUtils } from \"../../utils/navigation\";\nimport { ToastUtils } from \"../../utils/toasts\";\n\ninterface IProps extends IBaseProps {}\n\nexport const TagList: FunctionComponent = (props: IProps) => {\n const [tags, setTags] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n\n // Editing / New state\n const [editingTag, setEditingTag] = useState | undefined>(undefined);\n const [deletingTag, setDeletingTag] = useState | undefined>(undefined);\n const [name, setName] = useState(\"\");\n\n const { data, error, loading } = StashService.useAllTags();\n const updateTag = StashService.useTagUpdate(getTagInput() as GQL.TagUpdateInput);\n const createTag = StashService.useTagCreate(getTagInput() as GQL.TagCreateInput);\n const deleteTag = StashService.useTagDestroy(getDeleteTagInput() as GQL.TagDestroyInput);\n\n const [isDeleteAlertOpen, setIsDeleteAlertOpen] = useState(false);\n\n useEffect(() => {\n setIsLoading(loading);\n if (!data || !data.allTags || !!error) { return; }\n setTags(data.allTags);\n }, [data]);\n\n useEffect(() => {\n if (!!editingTag) {\n setName(editingTag.name || \"\");\n } else {\n setName(\"\");\n }\n }, [editingTag]);\n\n useEffect(() => {\n setIsDeleteAlertOpen(!!deletingTag);\n }, [deletingTag]);\n\n function getTagInput() {\n const tagInput: Partial = { name };\n if (!!editingTag) { (tagInput as Partial).id = editingTag.id; }\n return tagInput;\n }\n\n function getDeleteTagInput() {\n const tagInput: Partial = {};\n if (!!deletingTag) { tagInput.id = deletingTag.id; }\n return tagInput;\n }\n\n async function onEdit() {\n try {\n if (!!editingTag && !!editingTag.id) {\n await updateTag();\n ToastUtils.success(\"Updated tag\");\n } else {\n await createTag();\n ToastUtils.success(\"Created tag\");\n }\n setEditingTag(undefined);\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n async function onAutoTag(tag : GQL.TagDataFragment) {\n if (!tag) {\n return;\n }\n try {\n await StashService.queryMetadataAutoTag({ tags: [tag.id]});\n ToastUtils.success(\"Started auto tagging\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n async function onDelete() {\n try {\n await deleteTag();\n ToastUtils.success(\"Deleted tag\");\n setDeletingTag(undefined);\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n\n function renderDeleteAlert() {\n return (\n setDeletingTag(undefined)}\n onConfirm={() => onDelete()}\n >\n

\n Are you sure you want to delete {deletingTag && deletingTag.name}?\n

\n \n );\n }\n\n if (!data || !data.allTags || isLoading) { return ; }\n if (!!error) { return <>{error.message}; }\n\n const tagElements = tags.map((tag) => {\n return (\n <>\n {renderDeleteAlert()}\n
\n setEditingTag(tag)}>{tag.name}\n
\n \n Scenes: {tag.scene_count}\n \n Markers: {tag.scene_marker_count}\n \n Total: {(tag.scene_count || 0) + (tag.scene_marker_count || 0)}\n \n
\n
\n \n );\n });\n return (\n
\n \n setEditingTag(undefined)}\n title={!!editingTag && !!editingTag.id ? \"Edit Tag\" : \"New Tag\"}\n >\n
\n \n setName(newValue.target.value)}\n value={name}\n />\n \n
\n
\n
\n \n
\n
\n \n\n {tagElements}\n
\n );\n};\n","/home/peroo/stash/ui/v2/src/components/Tags/Tags.tsx",[],"/home/peroo/stash/ui/v2/src/components/Wall/WallItem.tsx",["441"],"import _ from \"lodash\";\nimport React, { FunctionComponent, useRef, useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { VideoHoverHook } from \"../../hooks/VideoHover\";\nimport { TextUtils } from \"../../utils/text\";\nimport { NavigationUtils } from \"../../utils/navigation\";\nimport { StashService } from \"../../core/StashService\";\n\ninterface IWallItemProps {\n scene?: GQL.SlimSceneDataFragment;\n sceneMarker?: GQL.SceneMarkerDataFragment;\n origin?: string;\n onOverlay: (show: boolean) => void;\n clickHandler?: (item: GQL.SlimSceneDataFragment | GQL.SceneMarkerDataFragment) => void;\n}\n\nexport const WallItem: FunctionComponent = (props: IWallItemProps) => {\n const [videoPath, setVideoPath] = useState(undefined);\n const [previewPath, setPreviewPath] = useState(\"\");\n const [screenshotPath, setScreenshotPath] = useState(\"\");\n const [title, setTitle] = useState(\"\");\n const [tags, setTags] = useState([]);\n const config = StashService.useConfiguration();\n const videoHoverHook = VideoHoverHook.useVideoHover({resetOnMouseLeave: true});\n const showTextContainer = !!config.data && !!config.data.configuration ? config.data.configuration.interface.wallShowTitle : true;\n\n function onMouseEnter() {\n VideoHoverHook.onMouseEnter(videoHoverHook);\n if (!videoPath || videoPath === \"\") {\n if (!!props.sceneMarker) {\n setVideoPath(props.sceneMarker.stream || \"\");\n } else if (!!props.scene) {\n setVideoPath(props.scene.paths.preview || \"\");\n }\n }\n props.onOverlay(true);\n }\n const debouncedOnMouseEnter = useRef(_.debounce(onMouseEnter, 500));\n\n function onMouseLeave() {\n VideoHoverHook.onMouseLeave(videoHoverHook);\n setVideoPath(\"\");\n debouncedOnMouseEnter.current.cancel();\n props.onOverlay(false);\n }\n\n function onClick() {\n if (props.clickHandler === undefined) { return; }\n if (props.scene !== undefined) {\n props.clickHandler(props.scene);\n } else if (props.sceneMarker !== undefined) {\n props.clickHandler(props.sceneMarker);\n }\n }\n\n let linkSrc: string = \"#\";\n if (props.clickHandler === undefined) {\n if (props.scene !== undefined) {\n linkSrc = `/scenes/${props.scene.id}`;\n } else if (props.sceneMarker !== undefined) {\n linkSrc = NavigationUtils.makeSceneMarkerUrl(props.sceneMarker);\n }\n }\n\n function onTransitionEnd(event: React.TransitionEvent) {\n const target = (event.target as any);\n if (target.classList.contains(\"double-scale\")) {\n target.parentElement.style.zIndex = 10;\n } else {\n target.parentElement.style.zIndex = null;\n }\n }\n\n useEffect(() => {\n if (!!props.sceneMarker) {\n setPreviewPath(props.sceneMarker.preview);\n setTitle(`${props.sceneMarker!.title} - ${TextUtils.secondsToTimestamp(props.sceneMarker.seconds)}`);\n const thisTags = props.sceneMarker.tags.map((tag) => ({tag.name}));\n thisTags.unshift({props.sceneMarker.primary_tag.name});\n setTags(thisTags);\n } else if (!!props.scene) {\n setPreviewPath(props.scene.paths.webp || \"\");\n setScreenshotPath(props.scene.paths.screenshot || \"\");\n setTitle(props.scene.title || \"\");\n // tags = props.scene.tags.map((tag) => ({tag.name}));\n }\n }, [props.sceneMarker, props.scene]);\n\n function previewNotFound() {\n if (previewPath !== screenshotPath) {\n setPreviewPath(screenshotPath);\n }\n }\n\n const className = [\"scene-wall-item-container\"];\n if (videoHoverHook.isHovering.current) { className.push(\"double-scale\"); }\n const style: React.CSSProperties = {};\n if (!!props.origin) { style.transformOrigin = props.origin; }\n return (\n
\n debouncedOnMouseEnter.current()}\n onMouseMove={() => debouncedOnMouseEnter.current()}\n onMouseLeave={onMouseLeave}\n >\n onClick()} to={linkSrc}>\n \n previewNotFound()} />\n {showTextContainer ?\n
\n
\n {title}\n
\n {tags}\n
: undefined\n }\n \n
\n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/Wall/WallPanel.tsx",["442"],"import _ from \"lodash\";\nimport React, { FunctionComponent, useState } from \"react\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport \"./Wall.scss\";\nimport { WallItem } from \"./WallItem\";\n\ninterface IWallPanelProps {\n scenes?: GQL.SlimSceneDataFragment[];\n sceneMarkers?: GQL.SceneMarkerDataFragment[];\n clickHandler?: (item: GQL.SlimSceneDataFragment | GQL.SceneMarkerDataFragment) => void;\n}\n\nexport const WallPanel: FunctionComponent = (props: IWallPanelProps) => {\n const [showOverlay, setShowOverlay] = useState(false);\n\n function onOverlay(show: boolean) {\n setShowOverlay(show);\n }\n\n function getOrigin(index: number, rowSize: number, total: number): string {\n const isAtStart = index % rowSize === 0;\n const isAtEnd = index % rowSize === rowSize - 1;\n const endRemaining = total % rowSize;\n\n // First row\n if (total === 1) { return \"top\"; }\n if (index === 0) { return \"top left\"; }\n if (index === rowSize - 1 || (total < rowSize && index === total - 1)) { return \"top right\"; }\n if (index < rowSize) { return \"top\"; }\n\n // Bottom row\n if (isAtEnd && index === total - 1) { return \"bottom right\"; }\n if (isAtStart && index === total - rowSize) { return \"bottom left\"; }\n if (endRemaining !== 0 && index >= total - endRemaining) { return \"bottom\"; }\n if (endRemaining === 0 && index >= total - rowSize) { return \"bottom\"; }\n\n // Everything else\n if (isAtStart) { return \"center left\"; }\n if (isAtEnd) { return \"center right\"; }\n return \"center\";\n }\n\n function maybeRenderScenes() {\n if (props.scenes === undefined) { return; }\n return props.scenes.map((scene, index) => {\n const origin = getOrigin(index, 5, props.scenes!.length);\n return (\n \n );\n });\n }\n\n function maybeRenderSceneMarkers() {\n if (props.sceneMarkers === undefined) { return; }\n return props.sceneMarkers.map((marker, index) => {\n const origin = getOrigin(index, 5, props.sceneMarkers!.length);\n return (\n \n );\n });\n }\n\n function render() {\n const overlayClassName = showOverlay ? \"visible\" : \"hidden\";\n return (\n <>\n
\n
\n {maybeRenderScenes()}\n {maybeRenderSceneMarkers()}\n
\n \n );\n }\n\n return render();\n};\n","/home/peroo/stash/ui/v2/src/components/list/AddFilter.tsx",[],"/home/peroo/stash/ui/v2/src/components/list/ListFilter.tsx",["443","444","445","446"],"import {\n AnchorButton,\n Button,\n ButtonGroup,\n ControlGroup,\n HTMLSelect,\n InputGroup,\n Menu,\n MenuItem,\n Popover,\n Tag,\n Tooltip,\n Slider,\n} from \"@blueprintjs/core\";\nimport { debounce } from \"lodash\";\nimport React, { FunctionComponent, SyntheticEvent, useEffect, useRef, useState } from \"react\";\nimport { Criterion } from \"../../models/list-filter/criteria/criterion\";\nimport { ListFilterModel } from \"../../models/list-filter/filter\";\nimport { DisplayMode } from \"../../models/list-filter/types\";\nimport { AddFilter } from \"./AddFilter\";\n\ninterface IListFilterProps {\n onChangePageSize: (pageSize: number) => void;\n onChangeQuery: (query: string) => void;\n onChangeSortDirection: (sortDirection: \"asc\" | \"desc\") => void;\n onChangeSortBy: (sortBy: string) => void;\n onChangeDisplayMode: (displayMode: DisplayMode) => void;\n onAddCriterion: (criterion: Criterion, oldId?: string) => void;\n onRemoveCriterion: (criterion: Criterion) => void;\n zoomIndex?: number;\n onChangeZoom?: (zoomIndex: number) => void;\n onSelectAll?: () => void;\n onSelectNone?: () => void;\n filter: ListFilterModel;\n}\n\nconst PAGE_SIZE_OPTIONS = [\"20\", \"40\", \"60\", \"120\"];\n\nexport const ListFilter: FunctionComponent = (props: IListFilterProps) => {\n let searchCallback: any;\n\n const [editingCriterion, setEditingCriterion] = useState(undefined);\n\n useEffect(() => {\n searchCallback = debounce((event: any) => {\n props.onChangeQuery(event.target.value);\n }, 500);\n });\n\n function onChangePageSize(event: SyntheticEvent) {\n const val = event!.currentTarget!.value;\n props.onChangePageSize(parseInt(val, 10));\n }\n\n function onChangeQuery(event: SyntheticEvent) {\n event.persist();\n searchCallback(event);\n }\n\n function onChangeSortDirection(_: any) {\n if (props.filter.sortDirection === \"asc\") {\n props.onChangeSortDirection(\"desc\");\n } else {\n props.onChangeSortDirection(\"asc\");\n }\n }\n\n function onChangeSortBy(event: React.MouseEvent) {\n props.onChangeSortBy(event.currentTarget.text);\n }\n\n function onChangeDisplayMode(displayMode: DisplayMode) {\n props.onChangeDisplayMode(displayMode);\n }\n\n function onAddCriterion(criterion: Criterion, oldId?: string) {\n props.onAddCriterion(criterion, oldId);\n }\n\n function onCancelAddCriterion() {\n setEditingCriterion(undefined);\n }\n\n let removedCriterionId = \"\";\n function onRemoveCriterionTag(criterion?: Criterion) {\n if (!criterion) { return; }\n setEditingCriterion(undefined);\n removedCriterionId = criterion.getId();\n props.onRemoveCriterion(criterion);\n }\n function onClickCriterionTag(criterion?: Criterion) {\n if (!criterion || removedCriterionId !== \"\") { return; }\n setEditingCriterion(criterion);\n }\n\n function renderSortByOptions() {\n return props.filter.sortByOptions.map((option) => (\n \n ));\n }\n\n function renderDisplayModeOptions() {\n function getIcon(option: DisplayMode) {\n switch (option) {\n case DisplayMode.Grid: return \"grid-view\";\n case DisplayMode.List: return \"list\";\n case DisplayMode.Wall: return \"symbol-square\";\n }\n }\n function getLabel(option: DisplayMode) {\n switch (option) {\n case DisplayMode.Grid: return \"Grid\";\n case DisplayMode.List: return \"List\";\n case DisplayMode.Wall: return \"Wall\";\n }\n }\n return props.filter.displayModeOptions.map((option) => (\n \n onChangeDisplayMode(option)}\n icon={getIcon(option)}\n />\n \n ));\n }\n\n function renderFilterTags() {\n return props.filter.criteria.map((criterion) => (\n onRemoveCriterionTag(criterion)}\n onClick={() => onClickCriterionTag(criterion)}\n >\n {criterion.getLabel()}\n \n ));\n }\n\n function onSelectAll() {\n if (props.onSelectAll) {\n props.onSelectAll();\n }\n }\n\n function onSelectNone() {\n if (props.onSelectNone) {\n props.onSelectNone();\n }\n }\n\n function renderSelectAll() {\n if (props.onSelectAll) {\n return onSelectAll()} text=\"Select All\" />;\n }\n }\n\n function renderSelectNone() {\n if (props.onSelectNone) {\n return onSelectNone()} text=\"Select None\" />;\n }\n }\n\n function renderMore() {\n let options = [];\n options.push(renderSelectAll());\n options.push(renderSelectNone());\n options = options.filter((o) => !!o);\n\n let menuItems = options as JSX.Element[];\n\n function renderMoreOptions() {\n return (\n <>\n {menuItems}\n \n )\n }\n\n if (menuItems.length > 0) {\n return (\n \n \n {renderSortByOptions()}\n \n \n \n \n \n \n \n\n \n\n \n {renderDisplayModeOptions()}\n \n\n {maybeRenderZoom()}\n\n \n {renderMore()}\n \n
\n
\n {renderFilterTags()}\n
\n \n );\n }\n\n return render();\n};\n","/home/peroo/stash/ui/v2/src/components/list/Pagination.tsx",[],"/home/peroo/stash/ui/v2/src/components/performers/PerformerCard.tsx",[],"/home/peroo/stash/ui/v2/src/components/performers/PerformerDetails/Performer.tsx",["447","448"],"/home/peroo/stash/ui/v2/src/components/performers/PerformerList.tsx",[],"/home/peroo/stash/ui/v2/src/components/performers/PerformerListTable.tsx",[],"/home/peroo/stash/ui/v2/src/components/performers/performers.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneCard.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/Scene.tsx",["449","450"],"import {\n Card,\n Spinner,\n Tab,\n Tabs,\n} from \"@blueprintjs/core\";\nimport queryString from \"query-string\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport * as GQL from \"../../../core/generated-graphql\";\nimport { StashService } from \"../../../core/StashService\";\nimport { IBaseProps } from \"../../../models\";\nimport { GalleryViewer } from \"../../Galleries/GalleryViewer\";\nimport { ScenePlayer } from \"../ScenePlayer/ScenePlayer\";\nimport { SceneDetailPanel } from \"./SceneDetailPanel\";\nimport { SceneEditPanel } from \"./SceneEditPanel\";\nimport { SceneFileInfoPanel } from \"./SceneFileInfoPanel\";\nimport { SceneMarkersPanel } from \"./SceneMarkersPanel\";\nimport { ScenePerformerPanel } from \"./ScenePerformerPanel\";\n\ninterface ISceneProps extends IBaseProps {}\n\nexport const Scene: FunctionComponent = (props: ISceneProps) => {\n const [timestamp, setTimestamp] = useState(0);\n const [scene, setScene] = useState>({});\n const [isLoading, setIsLoading] = useState(false);\n const { data, error, loading } = StashService.useFindScene(props.match.params.id);\n\n useEffect(() => {\n setIsLoading(loading);\n if (!data || !data.findScene || !!error) { return; }\n setScene(StashService.nullToUndefined(data.findScene));\n }, [data]);\n\n useEffect(() => {\n const queryParams = queryString.parse(props.location.search);\n if (!!queryParams.t && typeof queryParams.t === \"string\" && timestamp === 0) {\n const newTimestamp = parseInt(queryParams.t, 10);\n setTimestamp(newTimestamp);\n }\n });\n\n function onClickMarker(marker: GQL.SceneMarkerDataFragment) {\n setTimestamp(marker.seconds);\n }\n\n if (!data || !data.findScene || isLoading || Object.keys(scene).length === 0) {\n return ;\n }\n const modifiedScene =\n Object.assign({scene_marker_tags: data.sceneMarkerTags}, scene) as GQL.SceneDataFragment; // TODO Hack from angular\n if (!!error) { return <>error...; }\n\n return (\n <>\n \n \n \n } />\n }\n />\n {modifiedScene.performers.length > 0 ?\n }\n /> : undefined\n }\n {!!modifiedScene.gallery ?\n }\n /> : undefined\n }\n } />\n setScene(newScene)} \n onDelete={() => props.history.push(\"/scenes\")}\n />}\n />\n \n \n \n );\n};\n","/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/SceneDetailPanel.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/SceneEditPanel.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneFilenameParser.tsx",["451","452"],"import {\n Card,\n FormGroup,\n InputGroup,\n Button,\n H4,\n Spinner,\n HTMLTable,\n Checkbox,\n H5,\n MenuItem,\n HTMLSelect,\n TagInput,\n Tree,\n ITreeNode,\n} from \"@blueprintjs/core\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { StashService } from \"../../core/StashService\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { SlimSceneDataFragment, Maybe } from \"../../core/generated-graphql\";\nimport { TextUtils } from \"../../utils/text\";\nimport _ from \"lodash\";\nimport { ToastUtils } from \"../../utils/toasts\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { Pagination } from \"../list/Pagination\";\nimport { Select, ItemRenderer, ItemPredicate } from \"@blueprintjs/select\";\nimport { FilterMultiSelect } from \"../select/FilterMultiSelect\";\nimport { FilterSelect } from \"../select/FilterSelect\";\n \nclass ParserResult {\n public value: Maybe;\n public originalValue: Maybe;\n public set: boolean = false;\n\n public setOriginalValue(v : Maybe) {\n this.originalValue = v;\n this.value = v;\n }\n\n public setValue(v : Maybe) {\n if (!!v) {\n this.value = v;\n this.set = !_.isEqual(this.value, this.originalValue);\n }\n }\n}\n\nclass ParserField {\n public field : string;\n public helperText? : string;\n\n constructor(field: string, helperText?: string) {\n this.field = field;\n this.helperText = helperText;\n }\n\n public getFieldPattern() {\n return \"{\" + this.field + \"}\";\n }\n\n static Title = new ParserField(\"title\");\n static Ext = new ParserField(\"ext\", \"File extension\");\n\n static I = new ParserField(\"i\", \"Matches any ignored word\");\n static D = new ParserField(\"d\", \"Matches any delimiter (.-_)\");\n\n static Performer = new ParserField(\"performer\");\n static Studio = new ParserField(\"studio\");\n static Tag = new ParserField(\"tag\");\n\n // date fields\n static Date = new ParserField(\"date\", \"YYYY-MM-DD\");\n static YYYY = new ParserField(\"yyyy\", \"Year\");\n static YY = new ParserField(\"yy\", \"Year (20YY)\");\n static MM = new ParserField(\"mm\", \"Two digit month\");\n static DD = new ParserField(\"dd\", \"Two digit date\");\n static YYYYMMDD = new ParserField(\"yyyymmdd\");\n static YYMMDD = new ParserField(\"yymmdd\");\n static DDMMYYYY = new ParserField(\"ddmmyyyy\");\n static DDMMYY = new ParserField(\"ddmmyy\");\n static MMDDYYYY = new ParserField(\"mmddyyyy\");\n static MMDDYY = new ParserField(\"mmddyy\");\n\n static validFields = [\n ParserField.Title,\n ParserField.Ext,\n ParserField.D,\n ParserField.I,\n ParserField.Performer,\n ParserField.Studio,\n ParserField.Tag,\n ParserField.Date,\n ParserField.YYYY,\n ParserField.YY,\n ParserField.MM,\n ParserField.DD,\n ParserField.YYYYMMDD,\n ParserField.YYMMDD,\n ParserField.DDMMYYYY,\n ParserField.DDMMYY,\n ParserField.MMDDYYYY,\n ParserField.MMDDYY\n ]\n\n static fullDateFields = [\n ParserField.YYYYMMDD,\n ParserField.YYMMDD,\n ParserField.DDMMYYYY,\n ParserField.DDMMYY,\n ParserField.MMDDYYYY,\n ParserField.MMDDYY\n ];\n}\nclass SceneParserResult {\n public id: string;\n public filename: string;\n public title: ParserResult = new ParserResult();\n public date: ParserResult = new ParserResult();\n\n public studio: ParserResult = new ParserResult();\n public studioId: ParserResult = new ParserResult();\n public tags: ParserResult = new ParserResult();\n public tagIds: ParserResult = new ParserResult();\n public performers: ParserResult = new ParserResult();\n public performerIds: ParserResult = new ParserResult();\n\n public scene : SlimSceneDataFragment;\n\n constructor(result : GQL.ParseSceneFilenamesResults) {\n this.scene = result.scene;\n\n this.id = this.scene.id;\n this.filename = TextUtils.fileNameFromPath(this.scene.path);\n this.title.setOriginalValue(this.scene.title);\n this.date.setOriginalValue(this.scene.date);\n this.performerIds.setOriginalValue(this.scene.performers.map((p) => p.id));\n this.performers.setOriginalValue(this.scene.performers);\n this.tagIds.setOriginalValue(this.scene.tags.map((t) => t.id));\n this.tags.setOriginalValue(this.scene.tags);\n this.studioId.setOriginalValue(this.scene.studio ? this.scene.studio.id : undefined);\n this.studio.setOriginalValue(this.scene.studio);\n\n this.title.setValue(result.title);\n this.date.setValue(result.date);\n this.performerIds.setValue(result.performer_ids);\n this.tagIds.setValue(result.tag_ids);\n this.studioId.setValue(result.studio_id);\n\n if (result.performer_ids) {\n this.performers.setValue(result.performer_ids.map((p) => {\n return {\n id: p,\n name: \"\",\n favorite: false,\n image_path: \"\"\n };\n }));\n }\n\n if (result.tag_ids) {\n this.tags.setValue(result.tag_ids.map((t) => {\n return {\n id: t,\n name: \"\",\n };\n }));\n }\n\n if (result.studio_id) {\n this.studio.setValue({\n id: result.studio_id,\n name: \"\",\n image_path: \"\"\n });\n }\n }\n\n private static setInput(object: any, key: string, parserResult : ParserResult) {\n if (parserResult.set) {\n object[key] = parserResult.value;\n }\n }\n\n // returns true if any of its fields have set == true\n public isChanged() {\n return this.title.set || this.date.set || this.performerIds.set || this.studioId.set || this.tagIds.set;\n }\n\n public toSceneUpdateInput() {\n var ret = {\n id: this.id,\n title: this.scene.title,\n details: this.scene.details,\n url: this.scene.url,\n date: this.scene.date,\n rating: this.scene.rating,\n gallery_id: this.scene.gallery ? this.scene.gallery.id : undefined,\n studio_id: this.scene.studio ? this.scene.studio.id : undefined,\n performer_ids: this.scene.performers.map((performer) => performer.id),\n tag_ids: this.scene.tags.map((tag) => tag.id)\n };\n\n SceneParserResult.setInput(ret, \"title\", this.title);\n SceneParserResult.setInput(ret, \"date\", this.date);\n SceneParserResult.setInput(ret, \"performer_ids\", this.performerIds);\n SceneParserResult.setInput(ret, \"studio_id\", this.studioId);\n SceneParserResult.setInput(ret, \"tag_ids\", this.tagIds);\n\n return ret;\n }\n};\n\ninterface IParserInput {\n pattern: string,\n ignoreWords: string[],\n whitespaceCharacters: string,\n capitalizeTitle: boolean,\n page: number,\n pageSize: number,\n findClicked: boolean\n}\n\ninterface IParserRecipe {\n pattern: string,\n ignoreWords: string[],\n whitespaceCharacters: string,\n capitalizeTitle: boolean,\n description: string\n}\n\nconst builtInRecipes = [\n {\n pattern: \"{title}\",\n ignoreWords: [],\n whitespaceCharacters: \"\",\n capitalizeTitle: false,\n description: \"Filename\"\n },\n {\n pattern: \"{title}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \"\",\n capitalizeTitle: false,\n description: \"Without extension\"\n },\n {\n pattern: \"{}.{yy}.{mm}.{dd}.{title}.XXX.{}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \".\",\n capitalizeTitle: true,\n description: \"\"\n },\n {\n pattern: \"{}.{yy}.{mm}.{dd}.{title}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \".\",\n capitalizeTitle: true,\n description: \"\"\n },\n {\n pattern: \"{title}.XXX.{}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \".\",\n capitalizeTitle: true,\n description: \"\"\n },\n {\n pattern: \"{}.{yy}.{mm}.{dd}.{title}.{i}.{ext}\",\n ignoreWords: [\"cz\", \"fr\"],\n whitespaceCharacters: \".\",\n capitalizeTitle: true,\n description: \"Foreign language\"\n }\n];\n\nexport const SceneFilenameParser: FunctionComponent = () => {\n const [parserResult, setParserResult] = useState([]);\n const [parserInput, setParserInput] = useState(initialParserInput());\n\n const [allTitleSet, setAllTitleSet] = useState(false);\n const [allDateSet, setAllDateSet] = useState(false);\n const [allPerformerSet, setAllPerformerSet] = useState(false);\n const [allTagSet, setAllTagSet] = useState(false);\n const [allStudioSet, setAllStudioSet] = useState(false);\n\n const [showFields, setShowFields] = useState>(initialShowFieldsState());\n \n const [totalItems, setTotalItems] = useState(0);\n\n // Network state\n const [isLoading, setIsLoading] = useState(false);\n\n const updateScenes = StashService.useScenesUpdate(getScenesUpdateData());\n\n function initialParserInput() {\n return {\n pattern: \"{title}.{ext}\",\n ignoreWords: [],\n whitespaceCharacters: \"._\",\n capitalizeTitle: true,\n page: 1,\n pageSize: 20,\n findClicked: false\n };\n }\n\n function initialShowFieldsState() {\n return new Map([\n [\"Title\", true],\n [\"Date\", true],\n [\"Performers\", true],\n [\"Tags\", true],\n [\"Studio\", true]\n ]);\n }\n\n function getParserFilter() {\n return {\n q: parserInput.pattern,\n page: parserInput.page,\n per_page: parserInput.pageSize,\n sort: \"path\",\n direction: GQL.SortDirectionEnum.Asc,\n };\n }\n\n function getParserInput() {\n return {\n ignoreWords: parserInput.ignoreWords,\n whitespaceCharacters: parserInput.whitespaceCharacters,\n capitalizeTitle: parserInput.capitalizeTitle\n };\n }\n\n async function onFind() {\n setParserResult([]);\n\n setIsLoading(true);\n \n try {\n const response = await StashService.queryParseSceneFilenames(getParserFilter(), getParserInput());\n\n let result = response.data.parseSceneFilenames;\n if (!!result) {\n parseResults(result.results);\n setTotalItems(result.count);\n }\n } catch (err) {\n ErrorUtils.handle(err);\n }\n\n setIsLoading(false);\n }\n\n useEffect(() => {\n if(parserInput.findClicked) {\n onFind();\n }\n }, [parserInput]);\n\n function onPageSizeChanged(newSize : number) {\n var newInput = _.clone(parserInput);\n newInput.page = 1;\n newInput.pageSize = newSize;\n setParserInput(newInput);\n }\n\n function onPageChanged(newPage : number) {\n if (newPage !== parserInput.page) {\n var newInput = _.clone(parserInput);\n newInput.page = newPage;\n setParserInput(newInput);\n }\n }\n\n function onFindClicked(input : IParserInput) {\n input.page = 1;\n input.findClicked = true;\n setParserInput(input);\n setTotalItems(0);\n }\n\n function getScenesUpdateData() {\n return parserResult.filter((result) => result.isChanged()).map((result) => result.toSceneUpdateInput());\n }\n\n async function onApply() {\n setIsLoading(true);\n\n try {\n await updateScenes();\n ToastUtils.success(\"Updated scenes\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n\n setIsLoading(false);\n }\n\n function parseResults(results : GQL.ParseSceneFilenamesResults[]) {\n if (results) {\n var result = results.map((r) => {\n return new SceneParserResult(r);\n }).filter((r) => !!r) as SceneParserResult[];\n\n setParserResult(result);\n determineFieldsToHide();\n }\n }\n\n function determineFieldsToHide() {\n var pattern = parserInput.pattern;\n var titleSet = pattern.includes(\"{title}\");\n var dateSet = pattern.includes(\"{date}\") || \n pattern.includes(\"{dd}\") || // don't worry about other partial date fields since this should be implied\n ParserField.fullDateFields.some((f) => {\n return pattern.includes(\"{\" + f.field + \"}\");\n });\n var performerSet = pattern.includes(\"{performer}\");\n var tagSet = pattern.includes(\"{tag}\");\n var studioSet = pattern.includes(\"{studio}\");\n\n var showFieldsCopy = _.clone(showFields);\n showFieldsCopy.set(\"Title\", titleSet);\n showFieldsCopy.set(\"Date\", dateSet);\n showFieldsCopy.set(\"Performers\", performerSet);\n showFieldsCopy.set(\"Tags\", tagSet);\n showFieldsCopy.set(\"Studio\", studioSet);\n setShowFields(showFieldsCopy);\n }\n\n useEffect(() => {\n var newAllTitleSet = !parserResult.some((r) => {\n return !r.title.set;\n });\n var newAllDateSet = !parserResult.some((r) => {\n return !r.date.set;\n });\n var newAllPerformerSet = !parserResult.some((r) => {\n return !r.performerIds.set;\n });\n var newAllTagSet = !parserResult.some((r) => {\n return !r.tagIds.set;\n });\n var newAllStudioSet = !parserResult.some((r) => {\n return !r.studioId.set;\n });\n\n if (newAllTitleSet !== allTitleSet) {\n setAllTitleSet(newAllTitleSet);\n }\n if (newAllDateSet !== allDateSet) {\n setAllDateSet(newAllDateSet);\n }\n if (newAllPerformerSet !== allPerformerSet) {\n setAllTagSet(newAllPerformerSet);\n }\n if (newAllTagSet !== allTagSet) {\n setAllTagSet(newAllTagSet);\n }\n if (newAllStudioSet !== allStudioSet) {\n setAllStudioSet(newAllStudioSet);\n }\n }, [parserResult]);\n\n function onSelectAllTitleSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.title.set = selected;\n });\n\n setParserResult(newResult);\n setAllTitleSet(selected);\n }\n\n function onSelectAllDateSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.date.set = selected;\n });\n\n setParserResult(newResult);\n setAllDateSet(selected);\n }\n\n function onSelectAllPerformerSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.performerIds.set = selected;\n });\n\n setParserResult(newResult);\n setAllPerformerSet(selected);\n }\n\n function onSelectAllTagSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.tagIds.set = selected;\n });\n\n setParserResult(newResult);\n setAllTagSet(selected);\n }\n\n function onSelectAllStudioSet(selected : boolean) {\n var newResult = [...parserResult];\n\n newResult.forEach((r) => {\n r.studioId.set = selected;\n });\n\n setParserResult(newResult);\n setAllStudioSet(selected);\n }\n\n interface IShowFieldsTreeProps {\n showFields: Map\n onShowFieldsChanged: (fields : Map) => void\n }\n\n function ShowFieldsTree(props : IShowFieldsTreeProps) {\n const [displayFieldsExpanded, setDisplayFieldsExpanded] = useState();\n\n const treeState: ITreeNode[] = [\n {\n id: 0,\n hasCaret: true,\n label: \"Display fields\",\n childNodes: [\n {\n id: 1,\n label: \"Title\",\n },\n {\n id: 2,\n label: \"Date\",\n },\n {\n id: 3,\n label: \"Performers\",\n },\n {\n id: 4,\n label: \"Tags\",\n },\n {\n id: 5,\n label: \"Studio\",\n }\n ]\n }\n ];\n\n function setNodeState() {\n if (!!treeState[0].childNodes) {\n treeState[0].childNodes.forEach((n) => {\n n.icon = props.showFields.get(n.label as string) ? \"tick\" : \"cross\";\n });\n }\n\n treeState[0].isExpanded = displayFieldsExpanded;\n }\n\n setNodeState();\n\n function expandNode() {\n setDisplayFieldsExpanded(true);\n }\n\n function collapseNode() {\n setDisplayFieldsExpanded(false);\n }\n\n function handleClick(nodeData: ITreeNode) {\n var field = nodeData.label as string;\n var fieldsCopy = _.clone(props.showFields);\n fieldsCopy.set(field, !fieldsCopy.get(field));\n props.onShowFieldsChanged(fieldsCopy);\n }\n\n return (\n \n );\n }\n\n interface IParserInputProps {\n input: IParserInput,\n onFind: (input : IParserInput) => void\n }\n\n function ParserInput(props : IParserInputProps) {\n const [pattern, setPattern] = useState(props.input.pattern);\n const [ignoreWords, setIgnoreWords] = useState(props.input.ignoreWords.join(\" \"));\n const [whitespaceCharacters, setWhitespaceCharacters] = useState(props.input.whitespaceCharacters);\n const [capitalizeTitle, setCapitalizeTitle] = useState(props.input.capitalizeTitle);\n\n function onFind() {\n props.onFind({\n pattern: pattern,\n ignoreWords: ignoreWords.split(\" \"),\n whitespaceCharacters: whitespaceCharacters,\n capitalizeTitle: capitalizeTitle,\n page: 1,\n pageSize: props.input.pageSize,\n findClicked: props.input.findClicked\n });\n }\n\n const ParserRecipeSelect = Select.ofType();\n\n const renderParserRecipe: ItemRenderer = (input, { handleClick, modifiers }) => {\n if (!modifiers.matchesPredicate) {\n return null;\n }\n return (\n \n );\n };\n\n const parserRecipePredicate: ItemPredicate = (query, item) => {\n return item.pattern.includes(query);\n };\n\n function setParserRecipe(recipe: IParserRecipe) {\n setPattern(recipe.pattern);\n setIgnoreWords(recipe.ignoreWords.join(\" \"));\n setWhitespaceCharacters(recipe.whitespaceCharacters);\n setCapitalizeTitle(recipe.capitalizeTitle);\n }\n \n const ParserFieldSelect = Select.ofType();\n\n const renderParserField: ItemRenderer = (field, { handleClick, modifiers }) => {\n if (!modifiers.matchesPredicate) {\n return null;\n }\n return (\n \n );\n };\n\n const parserFieldPredicate: ItemPredicate = (query, item) => {\n return item.field.includes(query);\n };\n\n const validFields = [new ParserField(\"\", \"Wildcard\")].concat(ParserField.validFields);\n \n function addParserField(field: ParserField) {\n setPattern(pattern + field.getFieldPattern());\n }\n\n const parserFieldSelect = (\n addParserField(item)}\n itemRenderer={renderParserField}\n itemPredicate={parserFieldPredicate}\n >\n \n \n \n )\n }\n\n return (\n \n

Scene Filename Parser

\n onFindClicked(input)}\n />\n\n {isLoading ? : undefined}\n {renderTable()}\n
\n );\n};\n \n","/home/peroo/stash/ui/v2/src/components/scenes/SceneList.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneListTable.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/SceneMarkerList.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/ScenePlayer/ScenePlayer.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx",["453","454","455","456","457","458"],"import axios from \"axios\";\nimport React, { CSSProperties, FunctionComponent, RefObject, useEffect, useRef, useState } from \"react\";\nimport * as GQL from \"../../../core/generated-graphql\";\nimport { TextUtils } from \"../../../utils/text\";\nimport \"./ScenePlayerScrubber.scss\";\n\ninterface IScenePlayerScrubberProps {\n scene: GQL.SceneDataFragment;\n position: number;\n onSeek: (seconds: number) => void;\n onScrolled: () => void;\n}\n\ninterface ISceneSpriteItem {\n start: number;\n end: number;\n x: number;\n y: number;\n w: number;\n h: number;\n}\n\nexport const ScenePlayerScrubber: FunctionComponent = (props: IScenePlayerScrubberProps) => {\n const contentEl = useRef(null);\n const positionIndicatorEl = useRef(null);\n const scrubberSliderEl = useRef(null);\n const mouseDown = useRef(false);\n const lastMouseEvent = useRef(null);\n const startMouseEvent = useRef(null);\n const velocity = useRef(0);\n\n const _position = useRef(0);\n function getPostion() { return _position.current; }\n function setPosition(newPostion: number, shouldEmit: boolean = true) {\n if (!scrubberSliderEl.current || !positionIndicatorEl.current) { return; }\n if (shouldEmit) { props.onScrolled(); }\n\n const midpointOffset = scrubberSliderEl.current.clientWidth / 2;\n\n const bounds = getBounds() * -1;\n if (newPostion > midpointOffset) {\n _position.current = midpointOffset;\n } else if (newPostion < bounds - midpointOffset) {\n _position.current = bounds - midpointOffset;\n } else {\n _position.current = newPostion;\n }\n\n scrubberSliderEl.current.style.transform = `translateX(${_position.current}px)`;\n\n const indicatorPosition = (\n (newPostion - midpointOffset) / (bounds - (midpointOffset * 2)) * scrubberSliderEl.current.clientWidth\n );\n positionIndicatorEl.current.style.transform = `translateX(${indicatorPosition}px)`;\n }\n\n const [spriteItems, setSpriteItems] = useState([]);\n const [delayedRender, setDelayedRender] = useState(false);\n\n useEffect(() => {\n if (!scrubberSliderEl.current) { return; }\n scrubberSliderEl.current.style.transform = `translateX(${scrubberSliderEl.current.clientWidth / 2}px)`;\n }, [scrubberSliderEl]);\n\n useEffect(() => {\n fetchSpriteInfo();\n }, [props.scene]);\n\n useEffect(() => {\n if (!scrubberSliderEl.current) { return; }\n const duration = Number(props.scene.file.duration);\n const percentage = props.position / duration;\n const position = (\n (scrubberSliderEl.current.scrollWidth * percentage) - (scrubberSliderEl.current.clientWidth / 2)\n ) * -1;\n setPosition(position, false);\n }, [props.position]);\n\n useEffect(() => {\n window.addEventListener(\"mouseup\", onMouseUp, false);\n return () => {\n window.removeEventListener(\"mouseup\", onMouseUp);\n };\n });\n\n useEffect(() => {\n if (!contentEl.current) { return; }\n contentEl.current.addEventListener(\"mousedown\", onMouseDown, false);\n return () => {\n if (!contentEl.current) { return; }\n contentEl.current.removeEventListener(\"mousedown\", onMouseDown);\n };\n });\n\n useEffect(() => {\n if (!contentEl.current) { return; }\n contentEl.current.addEventListener(\"mousemove\", onMouseMove, false);\n return () => {\n if (!contentEl.current) { return; }\n contentEl.current.removeEventListener(\"mousemove\", onMouseMove);\n };\n });\n\n function onMouseUp(this: Window, event: MouseEvent) {\n if (!startMouseEvent.current || !scrubberSliderEl.current) { return; }\n mouseDown.current = false;\n const delta = Math.abs(event.clientX - startMouseEvent.current.clientX);\n if (delta < 1 && event.target instanceof HTMLDivElement) {\n const target: HTMLDivElement = event.target;\n let seekSeconds: number | undefined;\n\n const spriteIdString = target.getAttribute(\"data-sprite-item-id\");\n if (spriteIdString != null) {\n const spritePercentage = event.offsetX / target.clientWidth;\n const offset = target.offsetLeft + (target.clientWidth * spritePercentage);\n const percentage = offset / scrubberSliderEl.current.scrollWidth;\n seekSeconds = percentage * (props.scene.file.duration || 0);\n }\n\n const markerIdString = target.getAttribute(\"data-marker-id\");\n if (markerIdString != null) {\n const marker = props.scene.scene_markers[Number(markerIdString)];\n seekSeconds = marker.seconds;\n }\n\n if (!!seekSeconds) { props.onSeek(seekSeconds); }\n } else if (Math.abs(velocity.current) > 25) {\n const newPosition = getPostion() + (velocity.current * 10);\n setPosition(newPosition);\n velocity.current = 0;\n }\n }\n\n function onMouseDown(this: HTMLDivElement, event: MouseEvent) {\n event.preventDefault();\n mouseDown.current = true;\n lastMouseEvent.current = event;\n startMouseEvent.current = event;\n velocity.current = 0;\n }\n\n function onMouseMove(this: HTMLDivElement, event: MouseEvent) {\n if (!mouseDown.current) { return; }\n\n // negative dragging right (past), positive left (future)\n const delta = event.clientX - lastMouseEvent.current.clientX;\n\n const movement = event.movementX;\n velocity.current = movement;\n\n const newPostion = getPostion() + delta;\n setPosition(newPostion);\n lastMouseEvent.current = event;\n }\n\n function getBounds(): number {\n if (!scrubberSliderEl.current || !positionIndicatorEl.current) { return 0; }\n return scrubberSliderEl.current.scrollWidth - scrubberSliderEl.current.clientWidth;\n }\n\n function goBack() {\n if (!scrubberSliderEl.current) { return; }\n const newPosition = getPostion() + scrubberSliderEl.current.clientWidth;\n setPosition(newPosition);\n }\n\n function goForward() {\n if (!scrubberSliderEl.current) { return; }\n const newPosition = getPostion() - scrubberSliderEl.current.clientWidth;\n setPosition(newPosition);\n }\n\n async function fetchSpriteInfo() {\n if (!props.scene || !props.scene.paths.vtt) { return; }\n\n const response = await axios.get(props.scene.paths.vtt, {responseType: \"text\"});\n if (response.status !== 200) {\n console.log(response.statusText);\n }\n\n // TODO: This is gnarly\n const lines = response.data.split(\"\\n\");\n if (lines.shift() !== \"WEBVTT\") { return; }\n if (lines.shift() !== \"\") { return; }\n let item: ISceneSpriteItem = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0};\n const newSpriteItems: ISceneSpriteItem[] = [];\n while (lines.length) {\n const line = lines.shift();\n if (line === undefined) { continue; }\n\n if (line.includes(\"#\") && line.includes(\"=\") && line.includes(\",\")) {\n const size = line.split(\"#\")[1].split(\"=\")[1].split(\",\");\n item.x = Number(size[0]);\n item.y = Number(size[1]);\n item.w = Number(size[2]);\n item.h = Number(size[3]);\n\n newSpriteItems.push(item);\n item = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0};\n } else if (line.includes(\" --> \")) {\n const times = line.split(\" --> \");\n\n const start = times[0].split(\":\");\n item.start = (+start[0]) * 60 * 60 + (+start[1]) * 60 + (+start[2]);\n\n const end = times[1].split(\":\");\n item.end = (+end[0]) * 60 * 60 + (+end[1]) * 60 + (+end[2]);\n }\n }\n\n setSpriteItems(newSpriteItems);\n // TODO: Very hacky. Need to wait for the scroll width to update from the image loading.\n setTimeout(() => {\n setDelayedRender(true);\n }, 100);\n }\n\n function renderTags() {\n function getTagStyle(i: number): CSSProperties {\n if (!scrubberSliderEl.current ||\n spriteItems.length === 0 ||\n getBounds() === 0) { return {}; }\n\n const tags = window.document.getElementsByClassName(\"scrubber-tag\");\n if (tags.length === 0) { return {}; }\n\n let tag: any;\n for (let index = 0; index < tags.length; index++) {\n tag = tags.item(index) as any;\n const id = tag.getAttribute(\"data-marker-id\");\n if (id === i.toString()) {\n break;\n }\n }\n\n const marker = props.scene.scene_markers[i];\n const duration = Number(props.scene.file.duration);\n const percentage = marker.seconds / duration;\n\n const left = (scrubberSliderEl.current.scrollWidth * percentage) - (tag.clientWidth / 2);\n return {\n left: `${left}px`,\n height: 20,\n };\n }\n\n return props.scene.scene_markers.map((marker, index) => {\n const dataAttrs = {\n \"data-marker-id\": index,\n };\n return (\n \n {marker.title}\n \n );\n });\n }\n\n function renderSprites() {\n function getStyleForSprite(index: number): CSSProperties {\n if (!props.scene.paths.vtt) { return {}; }\n const sprite = spriteItems[index];\n const left = sprite.w * index;\n const path = props.scene.paths.vtt.replace(\"_thumbs.vtt\", \"_sprite.jpg\"); // TODO: Gnarly\n return {\n width: `${sprite.w}px`,\n height: `${sprite.h}px`,\n margin: \"0px auto\",\n backgroundPosition: -sprite.x + \"px \" + -sprite.y + \"px\",\n backgroundImage: `url(${path})`,\n left: `${left}px`,\n };\n }\n\n return spriteItems.map((spriteItem, index) => {\n const dataAttrs = {\n \"data-sprite-item-id\": index,\n };\n return (\n \n {TextUtils.secondsToTimestamp(spriteItem.start)} - {TextUtils.secondsToTimestamp(spriteItem.end)}\n \n );\n });\n }\n\n return (\n
\n goBack()}><\n
\n
\n
\n
\n
\n
\n
\n {renderTags()}\n
\n {renderSprites()}\n
\n
\n
\n goForward()}>>\n
\n );\n};\n","/home/peroo/stash/ui/v2/src/components/scenes/SceneSelectedOptions.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/helpers.tsx",[],"/home/peroo/stash/ui/v2/src/components/scenes/scenes.tsx",[],"/home/peroo/stash/ui/v2/src/components/select/FilterMultiSelect.tsx",["459"],"import * as React from \"react\";\n\nimport { MenuItem } from \"@blueprintjs/core\";\nimport { IMultiSelectProps, ItemPredicate, ItemRenderer, MultiSelect } from \"@blueprintjs/select\";\nimport * as GQL from \"../../core/generated-graphql\";\nimport { StashService } from \"../../core/StashService\";\nimport { HTMLInputProps } from \"../../models\";\nimport { ErrorUtils } from \"../../utils/errors\";\nimport { ToastUtils } from \"../../utils/toasts\";\n\nconst InternalPerformerMultiSelect = MultiSelect.ofType();\nconst InternalTagMultiSelect = MultiSelect.ofType();\nconst InternalStudioMultiSelect = MultiSelect.ofType();\n\ntype ValidTypes =\n GQL.AllPerformersForFilterAllPerformers |\n GQL.AllTagsForFilterAllTags |\n GQL.AllStudiosForFilterAllStudios;\n\ninterface IProps extends HTMLInputProps, Partial> {\n type: \"performers\" | \"studios\" | \"tags\";\n initialIds?: string[];\n onUpdate: (items: ValidTypes[]) => void;\n}\n\nexport const FilterMultiSelect: React.FunctionComponent = (props: IProps) => {\n let MultiSelectImpl = getMultiSelectImpl();\n let InternalMultiSelect = MultiSelectImpl.getInternalMultiSelect();\n const data = MultiSelectImpl.getData();\n \n const [selectedItems, setSelectedItems] = React.useState([]);\n const [items, setItems] = React.useState([]);\n const [newTagName, setNewTagName] = React.useState(\"\");\n const createTag = StashService.useTagCreate(getTagInput() as GQL.TagCreateInput);\n\n React.useEffect(() => {\n if (!!data) {\n MultiSelectImpl.translateData();\n }\n }, [data]);\n \n function getTagInput() {\n const tagInput: Partial = { name: newTagName };\n return tagInput;\n }\n\n async function onCreateNewObject(item: ValidTypes) {\n var created : any;\n if (props.type === \"tags\") {\n try {\n created = await createTag();\n \n items.push(created.data.tagCreate);\n setItems(items.slice());\n addSelectedItem(created.data.tagCreate);\n \n ToastUtils.success(\"Created tag\");\n } catch (e) {\n ErrorUtils.handle(e);\n }\n }\n }\n\n function createNewTag(query : string) {\n setNewTagName(query);\n return {\n name : query\n };\n }\n\n function createNewRenderer(query: string, active: boolean, handleClick: React.MouseEventHandler) {\n // if tag already exists with that name, then don't return anything\n if (items.find((item) => {\n return item.name === query;\n })) {\n return undefined;\n }\n\n return (\n \n );\n }\n\n React.useEffect(() => {\n if (!!props.initialIds && !!items) {\n const initialItems = items.filter((item) => props.initialIds!.includes(item.id));\n setSelectedItems(initialItems);\n }\n }, [props.initialIds, items]);\n\n function getMultiSelectImpl() {\n let getInternalMultiSelect: () => new (props: IMultiSelectProps) => MultiSelect;\n let getData: () => GQL.AllPerformersForFilterQuery | GQL.AllStudiosForFilterQuery | GQL.AllTagsForFilterQuery | undefined;\n let translateData: () => void;\n let createNewObject: ((query : string) => void) | undefined = undefined; \n\n switch (props.type) {\n case \"performers\": {\n getInternalMultiSelect = () => { return InternalPerformerMultiSelect; };\n getData = () => { const { data } = StashService.useAllPerformersForFilter(); return data; }\n translateData = () => { let perfData = data as GQL.AllPerformersForFilterQuery; setItems(!!perfData && !!perfData.allPerformers ? perfData.allPerformers : []); };\n break;\n }\n case \"studios\": {\n getInternalMultiSelect = () => { return InternalStudioMultiSelect; };\n getData = () => { const { data } = StashService.useAllStudiosForFilter(); return data; }\n translateData = () => { let studioData = data as GQL.AllStudiosForFilterQuery; setItems(!!studioData && !!studioData.allStudios ? studioData.allStudios : []); };\n break;\n }\n case \"tags\": {\n getInternalMultiSelect = () => { return InternalTagMultiSelect; };\n getData = () => { const { data } = StashService.useAllTagsForFilter(); return data; }\n translateData = () => { let tagData = data as GQL.AllTagsForFilterQuery; setItems(!!tagData && !!tagData.allTags ? tagData.allTags : []); };\n createNewObject = createNewTag;\n break;\n }\n default: {\n throw Error(\"Unhandled case in FilterMultiSelect\");\n }\n }\n\n return {\n getInternalMultiSelect: getInternalMultiSelect,\n getData: getData,\n translateData: translateData,\n createNewObject: createNewObject\n };\n }\n\n const renderItem: ItemRenderer = (item, itemProps) => {\n if (!itemProps.modifiers.matchesPredicate) { return null; }\n return (\n \n );\n };\n\n const filter: ItemPredicate = (query, item) => {\n if (selectedItems.includes(item)) { return false; }\n return item.name!.toLowerCase().indexOf(query.toLowerCase()) >= 0;\n };\n\n function addSelectedItem(item: ValidTypes) {\n selectedItems.push(item);\n setSelectedItems(selectedItems);\n props.onUpdate(selectedItems);\n }\n\n function onItemSelect(item: ValidTypes) {\n if (item.id === undefined) {\n // create the new item, if applicable\n onCreateNewObject(item);\n } else {\n addSelectedItem(item);\n }\n }\n\n function onItemRemove(value: string, index: number) {\n const newSelectedItems = selectedItems.filter((_, i) => i !== index);\n setSelectedItems(newSelectedItems);\n props.onUpdate(newSelectedItems);\n }\n\n return (\n tag.name}\n tagInputProps={{ onRemove: onItemRemove }}\n onItemSelect={onItemSelect}\n resetOnSelect={true}\n popoverProps={{position: \"bottom\"}}\n createNewItemFromQuery={MultiSelectImpl.createNewObject}\n createNewItemRenderer={createNewRenderer}\n {...props}\n />\n );\n};\n","/home/peroo/stash/ui/v2/src/components/select/FilterSelect.tsx",[],"/home/peroo/stash/ui/v2/src/components/select/MarkerTitleSuggest.tsx",[],"/home/peroo/stash/ui/v2/src/components/select/ScrapePerformerSuggest.tsx",[],"/home/peroo/stash/ui/v2/src/components/select/ValidGalleriesSelect.tsx",[],"/home/peroo/stash/ui/v2/src/core/StashService.ts",[],"/home/peroo/stash/ui/v2/src/core/generated-graphql.tsx",[],"/home/peroo/stash/ui/v2/src/hooks/ListHook.tsx",["460","461","462","463"],"import { Spinner } from \"@blueprintjs/core\";\nimport _ from \"lodash\";\nimport queryString from \"query-string\";\nimport React, { useEffect, useState } from \"react\";\nimport { QueryHookResult } from \"react-apollo-hooks\";\nimport { ListFilter } from \"../components/list/ListFilter\";\nimport { Pagination } from \"../components/list/Pagination\";\nimport { StashService } from \"../core/StashService\";\nimport { IBaseProps } from \"../models\";\nimport { Criterion } from \"../models/list-filter/criteria/criterion\";\nimport { ListFilterModel } from \"../models/list-filter/filter\";\nimport { DisplayMode, FilterMode } from \"../models/list-filter/types\";\n\nexport interface IListHookData {\n filter: ListFilterModel;\n template: JSX.Element;\n options: IListHookOptions;\n onSelectChange: (id: string, selected : boolean, shiftKey: boolean) => void;\n}\n\nexport interface IListHookOptions {\n filterMode: FilterMode;\n props: IBaseProps;\n zoomable?: boolean\n renderContent: (result: QueryHookResult, filter: ListFilterModel, selectedIds: Set, zoomIndex: number) => JSX.Element | undefined;\n renderSelectedOptions?: (result: QueryHookResult, selectedIds: Set) => JSX.Element | undefined;\n}\n\nexport class ListHook {\n public static useList(options: IListHookOptions): IListHookData {\n const [filter, setFilter] = useState(new ListFilterModel(options.filterMode));\n const [selectedIds, setSelectedIds] = useState>(new Set());\n const [lastClickedId, setLastClickedId] = useState(undefined);\n const [totalCount, setTotalCount] = useState(0);\n const [zoomIndex, setZoomIndex] = useState(1);\n\n // Update the filter when the query parameters change\n useEffect(() => {\n const queryParams = queryString.parse(options.props.location.search);\n const newFilter = _.cloneDeep(filter);\n newFilter.configureFromQueryParameters(queryParams);\n setFilter(newFilter);\n\n // TODO: Need this side effect to update the query params properly\n filter.configureFromQueryParameters(queryParams);\n }, [options.props.location.search]);\n\n let result: QueryHookResult;\n\n let getData: (filter : ListFilterModel) => QueryHookResult;\n let getItems: () => any[];\n let getCount: () => number;\n\n switch (options.filterMode) {\n case FilterMode.Scenes: {\n getData = (filter : ListFilterModel) => { return StashService.useFindScenes(filter); }\n getItems = () => { return !!result.data && !!result.data.findScenes ? result.data.findScenes.scenes : []; }\n getCount = () => { return !!result.data && !!result.data.findScenes ? result.data.findScenes.count : 0; }\n break;\n }\n case FilterMode.SceneMarkers: {\n getData = (filter : ListFilterModel) => { return StashService.useFindSceneMarkers(filter); }\n getItems = () => { return !!result.data && !!result.data.findSceneMarkers ? result.data.findSceneMarkers.scene_markers : []; }\n getCount = () => { return !!result.data && !!result.data.findSceneMarkers ? result.data.findSceneMarkers.count : 0; }\n break;\n }\n case FilterMode.Galleries: {\n getData = (filter : ListFilterModel) => { return StashService.useFindGalleries(filter); }\n getItems = () => { return !!result.data && !!result.data.findGalleries ? result.data.findGalleries.galleries : []; }\n getCount = () => { return !!result.data && !!result.data.findGalleries ? result.data.findGalleries.count : 0; }\n break;\n }\n case FilterMode.Studios: {\n getData = (filter : ListFilterModel) => { return StashService.useFindStudios(filter); }\n getItems = () => { return !!result.data && !!result.data.findStudios ? result.data.findStudios.studios : []; }\n getCount = () => { return !!result.data && !!result.data.findStudios ? result.data.findStudios.count : 0; }\n break;\n }\n case FilterMode.Performers: {\n getData = (filter : ListFilterModel) => { return StashService.useFindPerformers(filter); }\n getItems = () => { return !!result.data && !!result.data.findPerformers ? result.data.findPerformers.performers : []; }\n getCount = () => { return !!result.data && !!result.data.findPerformers ? result.data.findPerformers.count : 0; }\n break;\n }\n default: {\n console.error(\"REMOVE DEFAULT IN LIST HOOK\");\n getData = (filter : ListFilterModel) => { return StashService.useFindScenes(filter); }\n getItems = () => { return !!result.data && !!result.data.findScenes ? result.data.findScenes.scenes : []; }\n getCount = () => { return !!result.data && !!result.data.findScenes ? result.data.findScenes.count : 0; }\n break;\n }\n }\n\n result = getData(filter);\n\n useEffect(() => {\n setTotalCount(getCount());\n\n // select none when data changes\n onSelectNone();\n setLastClickedId(undefined);\n }, [result.data])\n\n // Update the query parameters when the data changes\n useEffect(() => {\n const location = Object.assign({}, options.props.history.location);\n location.search = filter.makeQueryParameters();\n options.props.history.replace(location);\n }, [result.data, filter.displayMode]);\n\n // Update the total count\n useEffect(() => {\n const newFilter = _.cloneDeep(filter);\n newFilter.totalCount = totalCount;\n setFilter(newFilter);\n }, [totalCount]);\n\n function onChangePageSize(pageSize: number) {\n const newFilter = _.cloneDeep(filter);\n newFilter.itemsPerPage = pageSize;\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onChangeQuery(query: string) {\n const newFilter = _.cloneDeep(filter);\n newFilter.searchTerm = query;\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onChangeSortDirection(sortDirection: \"asc\" | \"desc\") {\n const newFilter = _.cloneDeep(filter);\n newFilter.sortDirection = sortDirection;\n setFilter(newFilter);\n }\n\n function onChangeSortBy(sortBy: string) {\n const newFilter = _.cloneDeep(filter);\n newFilter.sortBy = sortBy;\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onChangeDisplayMode(displayMode: DisplayMode) {\n const newFilter = _.cloneDeep(filter);\n newFilter.displayMode = displayMode;\n setFilter(newFilter);\n }\n\n function onAddCriterion(criterion: Criterion, oldId?: string) {\n const newFilter = _.cloneDeep(filter);\n\n // Find if we are editing an existing criteria, then modify that. Or create a new one.\n const existingIndex = newFilter.criteria.findIndex((c) => {\n // If we modified an existing criterion, then look for the old id.\n const id = !!oldId ? oldId : criterion.getId();\n return c.getId() === id;\n });\n if (existingIndex === -1) {\n newFilter.criteria.push(criterion);\n } else {\n newFilter.criteria[existingIndex] = criterion;\n }\n\n // Remove duplicate modifiers\n newFilter.criteria = newFilter.criteria.filter((obj, pos, arr) => {\n return arr.map((mapObj: any) => mapObj.getId()).indexOf(obj.getId()) === pos;\n });\n\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onRemoveCriterion(removedCriterion: Criterion) {\n const newFilter = _.cloneDeep(filter);\n newFilter.criteria = newFilter.criteria.filter((criterion) => criterion.getId() !== removedCriterion.getId());\n newFilter.currentPage = 1;\n setFilter(newFilter);\n }\n\n function onChangePage(page: number) {\n const newFilter = _.cloneDeep(filter);\n newFilter.currentPage = page;\n setFilter(newFilter);\n }\n\n function onSelectChange(id: string, selected : boolean, shiftKey: boolean) {\n if (shiftKey) {\n multiSelect(id, selected);\n } else {\n singleSelect(id, selected);\n }\n }\n\n function singleSelect(id: string, selected: boolean) {\n setLastClickedId(id);\n \n const newSelectedIds = _.clone(selectedIds);\n if (selected) {\n newSelectedIds.add(id);\n } else {\n newSelectedIds.delete(id);\n }\n\n setSelectedIds(newSelectedIds);\n }\n\n function multiSelect(id: string, selected : boolean) {\n let startIndex = 0;\n let thisIndex = -1;\n \n if (!!lastClickedId) {\n startIndex = getItems().findIndex((item) => {\n return item.id === lastClickedId;\n });\n }\n\n thisIndex = getItems().findIndex((item) => {\n return item.id === id;\n });\n\n selectRange(startIndex, thisIndex);\n }\n \n function selectRange(startIndex : number, endIndex : number) {\n if (startIndex > endIndex) {\n let tmp = startIndex;\n startIndex = endIndex;\n endIndex = tmp;\n }\n \n const subset = getItems().slice(startIndex, endIndex + 1);\n const newSelectedIds : Set = new Set();\n\n subset.forEach((item) => {\n newSelectedIds.add(item.id);\n });\n\n setSelectedIds(newSelectedIds);\n }\n\n function onSelectAll() {\n const newSelectedIds : Set = new Set();\n getItems().forEach((item) => {\n newSelectedIds.add(item.id);\n });\n\n setSelectedIds(newSelectedIds);\n setLastClickedId(undefined);\n }\n\n function onSelectNone() {\n const newSelectedIds : Set = new Set();\n setSelectedIds(newSelectedIds);\n setLastClickedId(undefined);\n }\n\n function onChangeZoom(newZoomIndex : number) {\n setZoomIndex(newZoomIndex);\n }\n\n const template = (\n
\n \n {options.renderSelectedOptions && selectedIds.size > 0 ? options.renderSelectedOptions(result, selectedIds) : undefined}\n {result.loading ? : undefined}\n {result.error ?

{result.error.message}

: undefined}\n {options.renderContent(result, filter, selectedIds, zoomIndex)}\n \n
\n );\n\n return { filter, template, options, onSelectChange };\n }\n}\n","/home/peroo/stash/ui/v2/src/hooks/LocalForage.ts",[],"/home/peroo/stash/ui/v2/src/hooks/VideoHover.ts",[],"/home/peroo/stash/ui/v2/src/index.tsx",[],"/home/peroo/stash/ui/v2/src/models/base-props.ts",[],"/home/peroo/stash/ui/v2/src/models/index.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/criterion.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/favorite.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/has-markers.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/is-missing.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/none.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/performers.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/rating.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/resolution.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/studios.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/tags.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/criteria/utils.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/filter.ts",[],"/home/peroo/stash/ui/v2/src/models/list-filter/types.ts",[],"/home/peroo/stash/ui/v2/src/models/react-images.d.ts",[],"/home/peroo/stash/ui/v2/src/models/react-jw-player.d.ts",[],"/home/peroo/stash/ui/v2/src/models/types.ts",[],"/home/peroo/stash/ui/v2/src/react-app-env.d.ts",[],"/home/peroo/stash/ui/v2/src/serviceWorker.ts",[],"/home/peroo/stash/ui/v2/src/utils/color.ts",[],"/home/peroo/stash/ui/v2/src/utils/errors.ts",[],"/home/peroo/stash/ui/v2/src/utils/navigation.ts",[],"/home/peroo/stash/ui/v2/src/utils/table.tsx",[],"/home/peroo/stash/ui/v2/src/utils/text.ts",[],"/home/peroo/stash/ui/v2/src/utils/toasts.ts",[],"/home/peroo/stash/ui/v2/src/utils/zoom.ts",[],{"ruleId":"464","severity":1,"message":"465","line":1,"column":36,"nodeType":"466","endLine":1,"endColumn":45},{"ruleId":"464","severity":1,"message":"467","line":4,"column":8,"nodeType":"466","endLine":4,"endColumn":9},{"ruleId":"468","severity":1,"message":"469","line":23,"column":6,"nodeType":"470","endLine":23,"endColumn":12,"fix":"471"},{"ruleId":"464","severity":1,"message":"467","line":2,"column":8,"nodeType":"466","endLine":2,"endColumn":9},{"ruleId":"472","severity":1,"message":"473","line":39,"column":49,"nodeType":"474","endLine":39,"endColumn":100},{"ruleId":"464","severity":1,"message":"467","line":1,"column":8,"nodeType":"466","endLine":1,"endColumn":9},{"ruleId":"468","severity":1,"message":"475","line":26,"column":6,"nodeType":"470","endLine":26,"endColumn":13,"fix":"476"},{"ruleId":"464","severity":1,"message":"477","line":2,"column":3,"nodeType":"466","endLine":2,"endColumn":5},{"ruleId":"464","severity":1,"message":"478","line":4,"column":3,"nodeType":"466","endLine":4,"endColumn":5},{"ruleId":"464","severity":1,"message":"479","line":7,"column":3,"nodeType":"466","endLine":7,"endColumn":6},{"ruleId":"464","severity":1,"message":"480","line":10,"column":13,"nodeType":"466","endLine":10,"endColumn":16},{"ruleId":"464","severity":1,"message":"481","line":11,"column":10,"nodeType":"466","endLine":11,"endColumn":19},{"ruleId":"464","severity":1,"message":"477","line":5,"column":3,"nodeType":"466","endLine":5,"endColumn":5},{"ruleId":"464","severity":1,"message":"478","line":7,"column":3,"nodeType":"466","endLine":7,"endColumn":5},{"ruleId":"464","severity":1,"message":"479","line":10,"column":3,"nodeType":"466","endLine":10,"endColumn":6},{"ruleId":"468","severity":1,"message":"482","line":69,"column":6,"nodeType":"470","endLine":69,"endColumn":12,"fix":"483"},{"ruleId":"464","severity":1,"message":"467","line":11,"column":8,"nodeType":"466","endLine":11,"endColumn":9},{"ruleId":"468","severity":1,"message":"484","line":51,"column":6,"nodeType":"470","endLine":51,"endColumn":19,"fix":"485"},{"ruleId":"468","severity":1,"message":"486","line":92,"column":6,"nodeType":"470","endLine":92,"endColumn":12,"fix":"487"},{"ruleId":"468","severity":1,"message":"488","line":101,"column":6,"nodeType":"470","endLine":101,"endColumn":20,"fix":"489"},{"ruleId":"468","severity":1,"message":"490","line":117,"column":6,"nodeType":"470","endLine":117,"endColumn":16,"fix":"491"},{"ruleId":"492","severity":1,"message":"493","line":158,"column":18,"nodeType":"494","messageId":"495","endLine":158,"endColumn":20},{"ruleId":"464","severity":1,"message":"496","line":8,"column":3,"nodeType":"466","endLine":8,"endColumn":15},{"ruleId":"464","severity":1,"message":"467","line":11,"column":8,"nodeType":"466","endLine":11,"endColumn":9},{"ruleId":"464","severity":1,"message":"497","line":2,"column":43,"nodeType":"466","endLine":2,"endColumn":59},{"ruleId":"492","severity":1,"message":"493","line":49,"column":21,"nodeType":"494","messageId":"495","endLine":49,"endColumn":23},{"ruleId":"464","severity":1,"message":"467","line":9,"column":8,"nodeType":"466","endLine":9,"endColumn":9},{"ruleId":"468","severity":1,"message":"482","line":32,"column":6,"nodeType":"470","endLine":32,"endColumn":12,"fix":"498"},{"ruleId":"464","severity":1,"message":"467","line":5,"column":8,"nodeType":"466","endLine":5,"endColumn":9},{"ruleId":"464","severity":1,"message":"477","line":1,"column":10,"nodeType":"466","endLine":1,"endColumn":12},{"ruleId":"464","severity":1,"message":"499","line":2,"column":3,"nodeType":"466","endLine":2,"endColumn":9},{"ruleId":"464","severity":1,"message":"500","line":3,"column":3,"nodeType":"466","endLine":3,"endColumn":10},{"ruleId":"464","severity":1,"message":"501","line":4,"column":3,"nodeType":"466","endLine":4,"endColumn":9},{"ruleId":"464","severity":1,"message":"502","line":6,"column":3,"nodeType":"466","endLine":6,"endColumn":13},{"ruleId":"464","severity":1,"message":"467","line":10,"column":8,"nodeType":"466","endLine":10,"endColumn":9},{"ruleId":"468","severity":1,"message":"469","line":54,"column":6,"nodeType":"470","endLine":54,"endColumn":12,"fix":"503"},{"ruleId":"468","severity":1,"message":"504","line":63,"column":6,"nodeType":"470","endLine":63,"endColumn":14,"fix":"505"},{"ruleId":"492","severity":1,"message":"493","line":66,"column":38,"nodeType":"494","messageId":"495","endLine":66,"endColumn":40},{"ruleId":"464","severity":1,"message":"506","line":136,"column":13,"nodeType":"466","endLine":136,"endColumn":19},{"ruleId":"472","severity":1,"message":"473","line":162,"column":11,"nodeType":"474","endLine":162,"endColumn":56},{"ruleId":"464","severity":1,"message":"467","line":1,"column":8,"nodeType":"466","endLine":1,"endColumn":9},{"ruleId":"464","severity":1,"message":"507","line":1,"column":42,"nodeType":"466","endLine":1,"endColumn":54},{"ruleId":"464","severity":1,"message":"508","line":1,"column":67,"nodeType":"466","endLine":1,"endColumn":76},{"ruleId":"464","severity":1,"message":"479","line":1,"column":99,"nodeType":"466","endLine":1,"endColumn":102},{"ruleId":"464","severity":1,"message":"467","line":2,"column":8,"nodeType":"466","endLine":2,"endColumn":9},{"ruleId":"464","severity":1,"message":"509","line":4,"column":10,"nodeType":"466","endLine":4,"endColumn":25},{"ruleId":"464","severity":1,"message":"510","line":6,"column":10,"nodeType":"466","endLine":6,"endColumn":28},{"ruleId":"464","severity":1,"message":"511","line":6,"column":30,"nodeType":"466","endLine":6,"endColumn":52},{"ruleId":"464","severity":1,"message":"512","line":9,"column":10,"nodeType":"466","endLine":9,"endColumn":18},{"ruleId":"464","severity":1,"message":"513","line":11,"column":10,"nodeType":"466","endLine":11,"endColumn":25},{"ruleId":"464","severity":1,"message":"514","line":12,"column":10,"nodeType":"466","endLine":12,"endColumn":21},{"ruleId":"464","severity":1,"message":"515","line":12,"column":23,"nodeType":"466","endLine":12,"endColumn":33},{"ruleId":"468","severity":1,"message":"469","line":39,"column":6,"nodeType":"470","endLine":39,"endColumn":12,"fix":"516"},{"ruleId":"472","severity":1,"message":"473","line":119,"column":11,"nodeType":"474","endLine":119,"endColumn":88},{"ruleId":"464","severity":1,"message":"467","line":1,"column":8,"nodeType":"466","endLine":1,"endColumn":9},{"ruleId":"464","severity":1,"message":"496","line":2,"column":3,"nodeType":"466","endLine":2,"endColumn":15},{"ruleId":"464","severity":1,"message":"517","line":5,"column":3,"nodeType":"466","endLine":5,"endColumn":15},{"ruleId":"464","severity":1,"message":"518","line":16,"column":63,"nodeType":"466","endLine":16,"endColumn":69},{"ruleId":"468","severity":1,"message":"519","line":45,"column":22,"nodeType":"520","endLine":47,"endColumn":12},{"ruleId":"468","severity":1,"message":"469","line":89,"column":6,"nodeType":"470","endLine":89,"endColumn":12,"fix":"521"},{"ruleId":"468","severity":1,"message":"504","line":98,"column":6,"nodeType":"470","endLine":98,"endColumn":17,"fix":"522"},{"ruleId":"468","severity":1,"message":"469","line":32,"column":6,"nodeType":"470","endLine":32,"endColumn":12,"fix":"523"},{"ruleId":"468","severity":1,"message":"524","line":34,"column":3,"nodeType":"466","endLine":34,"endColumn":12,"fix":"525"},{"ruleId":"468","severity":1,"message":"526","line":359,"column":6,"nodeType":"470","endLine":359,"endColumn":19,"fix":"527"},{"ruleId":"468","severity":1,"message":"528","line":464,"column":6,"nodeType":"470","endLine":464,"endColumn":20,"fix":"529"},{"ruleId":"464","severity":1,"message":"530","line":2,"column":51,"nodeType":"466","endLine":2,"endColumn":60},{"ruleId":"464","severity":1,"message":"531","line":58,"column":10,"nodeType":"466","endLine":58,"endColumn":23},{"ruleId":"468","severity":1,"message":"532","line":67,"column":6,"nodeType":"470","endLine":67,"endColumn":19,"fix":"533"},{"ruleId":"468","severity":1,"message":"534","line":77,"column":6,"nodeType":"470","endLine":77,"endColumn":22,"fix":"535"},{"ruleId":"468","severity":1,"message":"536","line":91,"column":17,"nodeType":"466","endLine":91,"endColumn":24},{"ruleId":"468","severity":1,"message":"536","line":100,"column":17,"nodeType":"466","endLine":100,"endColumn":24},{"ruleId":"468","severity":1,"message":"537","line":40,"column":6,"nodeType":"470","endLine":40,"endColumn":12,"fix":"538"},{"ruleId":"468","severity":1,"message":"539","line":46,"column":8,"nodeType":"470","endLine":46,"endColumn":39,"fix":"540"},{"ruleId":"468","severity":1,"message":"541","line":102,"column":8,"nodeType":"470","endLine":102,"endColumn":21,"fix":"542"},{"ruleId":"468","severity":1,"message":"543","line":109,"column":8,"nodeType":"470","endLine":109,"endColumn":41,"fix":"544"},{"ruleId":"468","severity":1,"message":"539","line":116,"column":8,"nodeType":"470","endLine":116,"endColumn":20,"fix":"545"},"@typescript-eslint/no-unused-vars","'useEffect' is defined but never used.","Identifier","'_' is defined but never used.","react-hooks/exhaustive-deps","React Hook useEffect has missing dependencies: 'error' and 'loading'. Either include them or remove the dependency array.","ArrayExpression",{"range":"546","text":"547"},"jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","JSXOpeningElement","React Hook useEffect has a missing dependency: 'props.history'. Either include it or remove the dependency array.",{"range":"548","text":"549"},"'H1' is defined but never used.","'H6' is defined but never used.","'Tag' is defined but never used.","'GQL' is defined but never used.","'TextUtils' is defined but never used.","React Hook useEffect has a missing dependency: 'error'. Either include it or remove the dependency array.",{"range":"550","text":"551"},"React Hook useEffect has a missing dependency: 'config.error'. Either include it or remove the dependency array.",{"range":"552","text":"553"},"React Hook useEffect has missing dependencies: 'filterByLogLevel', 'prependLogEntries', and 'updateFilteredEntries'. Either include them or remove the dependency array.",{"range":"554","text":"555"},"React Hook useEffect has missing dependencies: 'appendLogEntries' and 'updateFilteredEntries'. Either include them or remove the dependency array.",{"range":"556","text":"557"},"React Hook useEffect has a missing dependency: 'updateFilteredEntries'. Either include it or remove the dependency array.",{"range":"558","text":"559"},"eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected","'AnchorButton' is defined but never used.","'IInputGroupProps' is defined but never used.",{"range":"560","text":"551"},"'Button' is defined but never used.","'Classes' is defined but never used.","'Dialog' is defined but never used.","'HTMLSelect' is defined but never used.",{"range":"561","text":"547"},"React Hook useEffect has a missing dependency: 'isNew'. Either include it or remove the dependency array.",{"range":"562","text":"563"},"'result' is assigned a value but never used.","'EditableText' is defined but never used.","'HTMLTable' is defined but never used.","'QueryHookResult' is defined but never used.","'FindGalleriesQuery' is defined but never used.","'FindGalleriesVariables' is defined but never used.","'ListHook' is defined but never used.","'ListFilterModel' is defined but never used.","'DisplayMode' is defined but never used.","'FilterMode' is defined but never used.",{"range":"564","text":"547"},"'ControlGroup' is defined but never used.","'useRef' is defined but never used.","Assignments to the 'searchCallback' variable from inside React Hook useEffect will be lost after each render. To preserve the value over time, store it in a useRef Hook and keep the mutable value in the '.current' property. Otherwise, you can move this variable directly inside useEffect.","CallExpression",{"range":"565","text":"547"},{"range":"566","text":"567"},{"range":"568","text":"547"},"React Hook useEffect contains a call to 'setTimestamp'. Without a list of dependencies, this can lead to an infinite chain of updates. To fix this, pass [props.location.search, timestamp] as a second argument to the useEffect Hook.",{"range":"569","text":"570"},"React Hook useEffect has a missing dependency: 'onFind'. Either include it or remove the dependency array.",{"range":"571","text":"572"},"React Hook useEffect has missing dependencies: 'allDateSet', 'allPerformerSet', 'allStudioSet', 'allTagSet', and 'allTitleSet'. Either include them or remove the dependency array.",{"range":"573","text":"574"},"'RefObject' is defined but never used.","'delayedRender' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'fetchSpriteInfo'. Either include it or remove the dependency array.",{"range":"575","text":"576"},"React Hook useEffect has missing dependencies: 'props.scene.file.duration' and 'setPosition'. Either include them or remove the dependency array.",{"range":"577","text":"578"},"The ref value 'contentEl.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'contentEl.current' to a variable inside the effect, and use that variable in the cleanup function.","React Hook React.useEffect has a missing dependency: 'MultiSelectImpl'. Either include it or remove the dependency array.",{"range":"579","text":"580"},"React Hook useEffect has a missing dependency: 'filter'. Either include it or remove the dependency array.",{"range":"581","text":"582"},"React Hook useEffect has a missing dependency: 'getCount'. Either include it or remove the dependency array.",{"range":"583","text":"584"},"React Hook useEffect has missing dependencies: 'filter' and 'options.props.history'. Either include them or remove the dependency array.",{"range":"585","text":"586"},{"range":"587","text":"588"},[823,829],"[data, error, loading]",[983,990],"[props.history, tabId]",[2555,2561],"[data, error]",[1955,1968],"[config.data, config.error]",[2796,2802],"[data, filterByLogLevel, prependLogEntries, updateFilteredEntries]",[3020,3034],"[appendLogEntries, existingData, updateFilteredEntries]",[3422,3432],"[logLevel, updateFilteredEntries]",[1097,1103],[1971,1977],[2157,2165],"[isNew, studio]",[1962,1968],[4264,4270],[4459,4470],"[isNew, performer]",[1311,1317],[1589,1589],", [props.location.search, timestamp]",[9936,9949],"[onFind, parserInput]",[12915,12929],"[allDateSet, allPerformerSet, allStudioSet, allTagSet, allTitleSet, parserResult]",[2337,2350],"[fetchSpriteInfo, props.scene]",[2706,2722],"[props.position, props.scene.file.duration, setPosition]",[1668,1674],"[MultiSelectImpl, data]",[2105,2136],"[filter, options.props.location.search]",[4971,4984],"[getCount, result.data]",[5248,5281],"[result.data, filter.displayMode, options.props.history, filter]",[5458,5470],"[filter, totalCount]"] \ No newline at end of file diff --git a/ui/v2.5/.eslintrc.json b/ui/v2.5/.eslintrc.json new file mode 100644 index 000000000..1c1fff5fd --- /dev/null +++ b/ui/v2.5/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "extends": [ + "react-app" + ], + "rules": { + "jsx-a11y/anchor-is-valid": "off" + } +} diff --git a/ui/v2.5/.gitignore b/ui/v2.5/.gitignore new file mode 100755 index 000000000..4d29575de --- /dev/null +++ b/ui/v2.5/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/ui/v2.5/.vscode/launch.json b/ui/v2.5/.vscode/launch.json new file mode 100644 index 000000000..a0b21cbef --- /dev/null +++ b/ui/v2.5/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Chrome", + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}/src", + "sourceMapPathOverrides": { + "webpack:///src/*": "${webRoot}/*" + } + } + ] +} \ No newline at end of file diff --git a/ui/v2.5/.vscode/settings.json b/ui/v2.5/.vscode/settings.json new file mode 100644 index 000000000..ba34e28f0 --- /dev/null +++ b/ui/v2.5/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "editor.tabSize": 2, + "editor.renderWhitespace": "boundary", + "editor.wordWrap": "bounded", + "javascript.preferences.importModuleSpecifier": "relative", + "typescript.preferences.importModuleSpecifier": "relative", + "editor.wordWrapColumn": 120, + "editor.rulers": [120] +} \ No newline at end of file diff --git a/ui/v2.5/README.md b/ui/v2.5/README.md new file mode 100755 index 000000000..60f58b443 --- /dev/null +++ b/ui/v2.5/README.md @@ -0,0 +1,47 @@ +* Install gulp `yarn global add gulp` + + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.
+You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.
+It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/ui/v2.5/codegen.yml b/ui/v2.5/codegen.yml new file mode 100644 index 000000000..aa2da743f --- /dev/null +++ b/ui/v2.5/codegen.yml @@ -0,0 +1,18 @@ +overwrite: true +schema: "../../graphql/schema/**/*.graphql" +documents: "../../graphql/documents/**/*.graphql" +generates: + src/core/generated-graphql.tsx: + config: + noNamespaces: true + optionalType: "undefined" + noHOC: true + noComponents: true + withHooks: true + plugins: + - add: "/* tslint:disable */" + - add: "/* eslint-disable */" + - time + - "typescript-common" + - "typescript-client" + - "typescript-react-apollo" diff --git a/ui/v2.5/package.json b/ui/v2.5/package.json new file mode 100644 index 000000000..62bbc623a --- /dev/null +++ b/ui/v2.5/package.json @@ -0,0 +1,73 @@ +{ + "name": "stash", + "version": "0.1.0", + "private": true, + "dependencies": { + "@blueprintjs/core": "3.22.1", + "@blueprintjs/select": "3.11.2", + "@fortawesome/fontawesome-svg-core": "^1.2.26", + "@fortawesome/free-solid-svg-icons": "^5.12.0", + "@fortawesome/react-fontawesome": "^0.1.8", + "apollo-boost": "0.4.0", + "apollo-link-ws": "^1.0.19", + "axios": "0.18.1", + "bootstrap": "^4.4.1", + "formik": "1.5.7", + "graphql": "14.3.1", + "localforage": "1.7.3", + "lodash": "4.17.13", + "node-sass": "4.12.0", + "query-string": "6.5.0", + "react": "16.12.0", + "react-apollo": "2.5.6", + "react-apollo-hooks": "0.4.5", + "react-bootstrap": "^1.0.0-beta.16", + "react-dom": "16.12.0", + "react-hotkeys": "^2.0.0", + "react-images": "0.5.19", + "react-jw-player": "1.19.0", + "react-photo-gallery": "7.0.2", + "react-router-bootstrap": "^0.25.0", + "react-router-dom": "^5.1.2", + "react-scripts": "3.3.0", + "subscriptions-transport-ws": "^0.9.16", + "video.js": "^7.6.0" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject", + "lint": "eslint --cache src/**/*.{ts,tsx}", + "lint:fix": "eslint --fix src/**/*.{ts,tsx}", + "gqlgen": "gql-gen --config codegen.yml" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ], + "devDependencies": { + "@types/jest": "24.0.13", + "@types/lodash": "4.14.132", + "@types/node": "11.13.0", + "@types/query-string": "6.3.0", + "@types/react": "16.9.15", + "@types/react-dom": "16.9.4", + "@types/react-router-bootstrap": "^0.24.5", + "@types/react-router-dom": "5.1.3", + "@types/video.js": "^7.2.11", + "eslint": "^6.7.2", + "graphql-code-generator": "0.18.2", + "graphql-codegen-add": "0.18.2", + "graphql-codegen-time": "0.18.2", + "graphql-codegen-typescript-client": "0.18.2", + "graphql-codegen-typescript-common": "0.18.2", + "graphql-codegen-typescript-react-apollo": "0.18.2", + "typescript": "3.4.5" + } +} diff --git a/ui/v2.5/public/favicon.ico b/ui/v2.5/public/favicon.ico new file mode 100644 index 000000000..6ff0465ca Binary files /dev/null and b/ui/v2.5/public/favicon.ico differ diff --git a/ui/v2.5/public/index.html b/ui/v2.5/public/index.html new file mode 100755 index 000000000..322bc1d11 --- /dev/null +++ b/ui/v2.5/public/index.html @@ -0,0 +1,41 @@ + + + + + + + + + + + Stash + + + +
+ + + diff --git a/ui/v2.5/public/jwplayer/jwplayer.controls.js b/ui/v2.5/public/jwplayer/jwplayer.controls.js new file mode 100644 index 000000000..c668aeec2 --- /dev/null +++ b/ui/v2.5/public/jwplayer/jwplayer.controls.js @@ -0,0 +1,95 @@ +/*! +JW Player version 8.11.5 +Copyright (c) 2019, JW Player, All Rights Reserved +https://github.com/jwplayer/jwplayer/blob/v8.11.5/README.md + +This source code and its use and distribution is subject to the terms and conditions of the applicable license agreement. +https://www.jwplayer.com/tos/ + +This product includes portions of other software. For the full text of licenses, see below: + +JW Player Third Party Software Notices and/or Additional Terms and Conditions + +************************************************************************************************** +The following software is used under Apache License 2.0 +************************************************************************************************** + +vtt.js v0.13.0 +Copyright (c) 2019 Mozilla (http://mozilla.org) +https://github.com/mozilla/vtt.js/blob/v0.13.0/LICENSE + +* * * + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and +limitations under the License. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under MIT license +************************************************************************************************** + +Underscore.js v1.6.0 +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +https://github.com/jashkenas/underscore/blob/1.6.0/LICENSE + +Backbone backbone.events.js v1.1.2 +Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud +https://github.com/jashkenas/backbone/blob/1.1.2/LICENSE + +Promise Polyfill v7.1.1 +Copyright (c) 2014 Taylor Hakes and Forbes Lindesay +https://github.com/taylorhakes/promise-polyfill/blob/v7.1.1/LICENSE + +can-autoplay.js v3.0.0 +Copyright (c) 2017 video-dev +https://github.com/video-dev/can-autoplay/blob/v3.0.0/LICENSE + +* * * + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under W3C license +************************************************************************************************** + +Intersection Observer v0.5.0 +Copyright (c) 2016 Google Inc. (http://google.com) +https://github.com/w3c/IntersectionObserver/blob/v0.5.0/LICENSE.md + +* * * + +W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. + +This work is being provided by the copyright holders under the following license. + +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. + +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders. +*/ +(window.webpackJsonpjwplayer=window.webpackJsonpjwplayer||[]).push([[1],[,,,,,,,,,,,,,,,,,function(t,e,i){"use strict";i.r(e);var n,o=i(8),a=i(3),r=i(7),l=i(43),s=i(5),c=i(15),w=i(40);function u(t){return n||(n=new DOMParser),Object(s.r)(Object(s.s)(n.parseFromString(t,"image/svg+xml").documentElement))}var p=function(t,e,i,n){var o=document.createElement("div");o.className="jw-icon jw-icon-inline jw-button-color jw-reset "+t,o.setAttribute("role","button"),o.setAttribute("tabindex","0"),i&&o.setAttribute("aria-label",i),o.style.display="none";var a=new w.a(o).on("click tap enter",e||function(){});return n&&Array.prototype.forEach.call(n,(function(t){"string"==typeof t?o.appendChild(u(t)):o.appendChild(t)})),{ui:a,element:function(){return o},toggle:function(t){t?this.show():this.hide()},show:function(){o.style.display=""},hide:function(){o.style.display="none"}}},j=i(0),d=i(67),h=i.n(d),f=i(68),g=i.n(f),b=i(69),v=i.n(b),m=i(70),y=i.n(m),x=i(71),k=i.n(x),O=i(72),C=i.n(O),S=i(73),T=i.n(S),z=i(74),E=i.n(z),M=i(75),L=i.n(M),_=i(76),A=i.n(_),B=i(77),I=i.n(B),V=i(78),H=i.n(V),P=i(79),R=i.n(P),N=i(80),q=i.n(N),U=i(81),D=i.n(U),F=i(82),W=i.n(F),Z=i(83),K=i.n(Z),X=i(84),J=i.n(X),Q=i(85),Y=i.n(Q),G=i(86),$=i.n(G),tt=i(87),et=i.n(tt),it=i(88),nt=i.n(it),ot=i(89),at=i.n(ot),rt=null;function lt(t){var e=ut().querySelector(ct(t));if(e)return wt(e);throw new Error("Icon not found "+t)}function st(t){var e=ut().querySelectorAll(t.split(",").map(ct).join(","));if(!e.length)throw new Error("Icons not found "+t);return Array.prototype.map.call(e,(function(t){return wt(t)}))}function ct(t){return".jw-svg-icon-".concat(t)}function wt(t){return t.cloneNode(!0)}function ut(){return rt||(rt=u(""+h.a+g.a+v.a+y.a+k.a+C.a+T.a+E.a+L.a+A.a+I.a+H.a+R.a+q.a+D.a+W.a+K.a+J.a+Y.a+$.a+et.a+nt.a+at.a+"")),rt}var pt=i(10);function jt(t,e){for(var i=0;i10&&delete dt[e[0]];var i=u(t);dt[t]=i}return dt[t].cloneNode(!0)}(e):((r=document.createElement("div")).className="jw-icon jw-button-image jw-button-color jw-reset",e&&Object(pt.d)(r,{backgroundImage:"url(".concat(e,")")})),l.appendChild(r),new w.a(l).on("click tap enter",n,this),l.addEventListener("mousedown",(function(t){t.preventDefault()})),this.id=o,this.buttonElement=l}var e,i,n;return e=t,(i=[{key:"element",value:function(){return this.buttonElement}},{key:"toggle",value:function(t){t?this.show():this.hide()}},{key:"show",value:function(){this.buttonElement.style.display=""}},{key:"hide",value:function(){this.buttonElement.style.display="none"}}])&&jt(e.prototype,i),n&&jt(e,n),t}(),ft=i(11);function gt(t,e){for(var i=0;i=0&&(e.left-=i,e.right-=i),e},vt=function(){function t(e,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Object(j.h)(this,r.a),this.className=e+" jw-background-color jw-reset",this.orientation=i}var e,i,n;return e=t,(i=[{key:"setup",value:function(){this.el=Object(s.e)(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return''}(this.className,"jw-slider-"+this.orientation)),this.elementRail=this.el.getElementsByClassName("jw-slider-container")[0],this.elementBuffer=this.el.getElementsByClassName("jw-buffer")[0],this.elementProgress=this.el.getElementsByClassName("jw-progress")[0],this.elementThumb=this.el.getElementsByClassName("jw-knob")[0],this.ui=new w.a(this.element(),{preventScrolling:!0}).on("dragStart",this.dragStart,this).on("drag",this.dragMove,this).on("dragEnd",this.dragEnd,this).on("click tap",this.tap,this)}},{key:"dragStart",value:function(){this.trigger("dragStart"),this.railBounds=bt(this.elementRail)}},{key:"dragEnd",value:function(t){this.dragMove(t),this.trigger("dragEnd")}},{key:"dragMove",value:function(t){var e,i,n=this.railBounds=this.railBounds?this.railBounds:bt(this.elementRail);return i="horizontal"===this.orientation?(e=t.pageX)n.right?100:100*Object(l.a)((e-n.left)/n.width,0,1):(e=t.pageY)>=n.bottom?0:e<=n.top?100:100*Object(l.a)((n.height-(e-n.top))/n.height,0,1),this.render(i),this.update(i),!1}},{key:"tap",value:function(t){this.railBounds=bt(this.elementRail),this.dragMove(t)}},{key:"limit",value:function(t){return t}},{key:"update",value:function(t){this.trigger("update",{percentage:t})}},{key:"render",value:function(t){t=Math.max(0,Math.min(t,100)),"horizontal"===this.orientation?(this.elementThumb.style.left=t+"%",this.elementProgress.style.width=t+"%"):(this.elementThumb.style.bottom=t+"%",this.elementProgress.style.height=t+"%")}},{key:"updateBuffer",value:function(t){this.elementBuffer.style.width=t+"%"}},{key:"element",value:function(){return this.el}}])&>(e.prototype,i),n&>(e,n),t}(),mt=function(t,e){t&&e&&(t.setAttribute("aria-label",e),t.setAttribute("role","button"),t.setAttribute("tabindex","0"))};function yt(t,e){for(var i=0;i0&&Array.prototype.forEach.call(o,(function(t){"string"==typeof t?a.el.appendChild(u(t)):a.el.appendChild(t)}))}var e,i,n;return e=t,(i=[{key:"addContent",value:function(t){this.content&&this.removeContent(),this.content=t,this.tooltip.appendChild(t)}},{key:"removeContent",value:function(){this.content&&(this.tooltip.removeChild(this.content),this.content=null)}},{key:"hasContent",value:function(){return!!this.content}},{key:"element",value:function(){return this.el}},{key:"openTooltip",value:function(t){this.isOpen||(this.trigger("open-"+this.componentType,t,{isOpen:!0}),this.isOpen=!0,Object(s.v)(this.el,this.openClass,this.isOpen))}},{key:"closeTooltip",value:function(t){this.isOpen&&(this.trigger("close-"+this.componentType,t,{isOpen:!1}),this.isOpen=!1,Object(s.v)(this.el,this.openClass,this.isOpen))}},{key:"toggleOpenState",value:function(t){this.isOpen?this.closeTooltip(t):this.openTooltip(t)}}])&&yt(e.prototype,i),n&&yt(e,n),t}(),kt=i(22),Ot=i(57);function Ct(t,e){for(var i=0;i=this.thumbnails.length&&(e=this.thumbnails.length-1);var i=this.thumbnails[e].img;return i.indexOf("://")<0&&(i=this.vttPath?this.vttPath+"/"+i:i),i},loadThumbnail:function(t){var e=this.chooseThumbnail(t),i={margin:"0 auto",backgroundPosition:"0 0"};if(e.indexOf("#xywh")>0)try{var n=/(.+)#xywh=(\d+),(\d+),(\d+),(\d+)/.exec(e);e=n[1],i.backgroundPosition=-1*n[2]+"px "+-1*n[3]+"px",i.width=n[4],this.timeTip.setWidth(+i.width),i.height=n[5]}catch(t){return}else this.individualImage||(this.individualImage=new Image,this.individualImage.onload=Object(j.a)((function(){this.individualImage.onload=null,this.timeTip.image({width:this.individualImage.width,height:this.individualImage.height}),this.timeTip.setWidth(this.individualImage.width)}),this),this.individualImage.src=e);return i.backgroundImage='url("'+e+'")',i},showThumbnail:function(t){this._model.get("containerWidth")<=420||this.thumbnails.length<1||this.timeTip.image(this.loadThumbnail(t))},resetThumbnails:function(){this.timeTip.image({backgroundImage:"",width:0,height:0}),this.thumbnails=[]}};function Mt(t,e,i){return(Mt="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,i){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=Vt(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(i):o.value}})(t,e,i||t)}function Lt(t){return(Lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function At(t,e){for(var i=0;i-1&&(n="Live")}var u=this.timeTip;u.update(n),this.textLength!==n.length&&(this.textLength=n.length,u.resetWidth()),this.showThumbnail(w),Object(s.a)(u.el,"jw-open");var p=u.getWidth(),j=a.width/100,d=o-a.width,h=0;p>d&&(h=(p-d)/(200*j));var f=100*Math.min(1-h,Math.max(h,c)).toFixed(3);Object(pt.d)(u.el,{left:f+"%"})}}},{key:"hideTimeTooltip",value:function(){Object(s.o)(this.timeTip.el,"jw-open")}},{key:"updateCues",value:function(t,e){var i=this;this.resetCues(),e&&e.length&&(e.forEach((function(t){i.addCue(t)})),this.drawCues())}},{key:"updateAriaText",value:function(){var t=this._model;if(!t.get("seeking")){var e=t.get("position"),i=t.get("duration"),n=Object(ft.timeFormat)(e);"DVR"!==this.streamType&&(n+=" of ".concat(Object(ft.timeFormat)(i)));var o=this.el;document.activeElement!==o&&(this.timeUpdateKeeper.textContent=n),Object(s.t)(o,"aria-valuenow",e),Object(s.t)(o,"aria-valuetext",n)}}},{key:"reset",value:function(){this.resetThumbnails(),this.timeTip.resetWidth(),this.textLength=0}}]),e}(vt);Object(j.h)(Nt.prototype,Tt,Et);var qt=Nt;function Ut(t,e){for(var i=0;i=75&&!t),Object(s.t)(r,"aria-valuenow",o),Object(s.t)(l,"aria-valuenow",o);var c="Volume ".concat(o,"%");Object(s.t)(r,"aria-valuetext",c),Object(s.t)(l,"aria-valuetext",c),document.activeElement!==r&&document.activeElement!==l&&(this._volumeAnnouncer.textContent=c)}}},{key:"onCastAvailable",value:function(t,e){this.elements.cast.toggle(e)}},{key:"onCastActive",value:function(t,e){this.elements.fullscreen.toggle(!e),this.elements.cast.button&&Object(s.v)(this.elements.cast.button,"jw-off",!e)}},{key:"onElapsed",value:function(t,e){var i,n,o=t.get("duration");if("DVR"===t.get("streamType")){var a=Math.ceil(e),r=this._model.get("dvrSeekLimit");i=n=a>=-r?"":"-"+Object(ft.timeFormat)(-(e+r)),t.set("dvrLive",a>=-r)}else i=Object(ft.timeFormat)(e),n=Object(ft.timeFormat)(o-e);this.elements.elapsed.textContent=i,this.elements.countdown.textContent=n}},{key:"onDuration",value:function(t,e){this.elements.duration.textContent=Object(ft.timeFormat)(Math.abs(e))}},{key:"onAudioMode",value:function(t,e){var i=this.elements.time.element();e?this.elements.buttonContainer.insertBefore(i,this.elements.elapsed):Object(s.m)(this.el,i)}},{key:"element",value:function(){return this.el}},{key:"setAltText",value:function(t,e){this.elements.alt.textContent=e}},{key:"closeMenus",value:function(t){this.menus.forEach((function(e){t&&t.target===e.el||e.closeTooltip(t)}))}},{key:"rewind",value:function(){var t,e=0,i=this._model.get("currentTime");i?t=i-10:(t=this._model.get("position")-10,"DVR"===this._model.get("streamType")&&(e=this._model.get("duration"))),this._api.seek(Math.max(t,e),{reason:"interaction"})}},{key:"onState",value:function(t,e){var i=t.get("localization"),n=i.play;this.setPlayText(n),e===a.pb&&("LIVE"!==t.get("streamType")?(n=i.pause,this.setPlayText(n)):(n=i.stop,this.setPlayText(n))),Object(s.t)(this.elements.play.element(),"aria-label",n)}},{key:"onStreamTypeChange",value:function(t,e){var i="LIVE"===e,n="DVR"===e;this.elements.rewind.toggle(!i),this.elements.live.toggle(i||n),Object(s.t)(this.elements.live.element(),"tabindex",i?"-1":"0"),this.elements.duration.style.display=n?"none":"",this.onDuration(t,t.get("duration")),this.onState(t,t.get("state"))}},{key:"addLogo",value:function(t){var e=this.elements.buttonContainer,i=new ht(t.file,this._model.get("localization").logo,(function(){t.link&&Object(s.l)(t.link,"_blank",{rel:"noreferrer"})}),"logo","jw-logo-button");t.link||Object(s.t)(i.element(),"tabindex","-1"),e.insertBefore(i.element(),e.querySelector(".jw-spacer").nextSibling)}},{key:"goToLiveEdge",value:function(){if("DVR"===this._model.get("streamType")){var t=Math.min(this._model.get("position"),-1),e=this._model.get("dvrSeekLimit");this._api.seek(Math.max(-e,t),{reason:"interaction"}),this._api.play({reason:"interaction"})}}},{key:"updateButtons",value:function(t,e,i){if(e){var n,o,a=this.elements.buttonContainer;e!==i&&i?(n=ae(e,i),o=ae(i,e),this.removeButtons(a,o)):n=e;for(var r=n.length-1;r>=0;r--){var l=n[r],s=new ht(l.img,l.tooltip,l.callback,l.id,l.btnClass);l.tooltip&&$t(s.element(),l.id,l.tooltip);var c=void 0;"related"===s.id?c=this.elements.settingsButton.element():"share"===s.id?c=a.querySelector('[button="related"]')||this.elements.settingsButton.element():(c=this.elements.spacer.nextSibling)&&"logo"===c.getAttribute("button")&&(c=c.nextSibling),a.insertBefore(s.element(),c)}}}},{key:"removeButtons",value:function(t,e){for(var i=e.length;i--;){var n=t.querySelector('[button="'.concat(e[i].id,'"]'));n&&t.removeChild(n)}}},{key:"toggleCaptionsButtonState",value:function(t){var e=this.elements.captionsButton;e&&Object(s.v)(e.element(),"jw-off",!t)}},{key:"destroy",value:function(){var t=this;this._model.off(null,null,this),Object.keys(this.elements).forEach((function(e){var i=t.elements[e];i&&"function"==typeof i.destroy&&t.elements[e].destroy()})),this.ui.forEach((function(t){t.destroy()})),this.ui=[]}}])&&ee(e.prototype,i),n&&ee(e,n),t}(),se=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return'
')+'
')+"
"},ce=function(t){return'
'+se("rewind",t.rewind)+se("display",t.playback)+se("next",t.next)+"
"};function we(t,e){for(var i=0;i'.concat(a.playback,"
")),Object(s.a)(o.icon,"jw-idle-label"),o.icon.appendChild(l))}return o}var i,n,o;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&fe(t,e)}(e,t),i=e,(n=[{key:"element",value:function(){return this.el}}])&&je(i.prototype,n),o&&je(i,o),e}(r.a);function be(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return'
'+'
'.concat(t,"
")+'
'.concat(e,"
")+'
'.concat(i,"
")+"
"+'')+"
"}());e.querySelector(".jw-nextup-close").appendChild(lt("close")),this.addContent(e),this.closeButton=this.content.querySelector(".jw-nextup-close"),this.closeButton.setAttribute("aria-label",this.localization.close),this.tooltip=this.content.querySelector(".jw-nextup-tooltip");var i=this._model,n=i.player;this.enabled=!1,i.on("change:nextUp",this.onNextUp,this),n.change("duration",this.onDuration,this),n.change("position",this.onElapsed,this),n.change("streamType",this.onStreamType,this),n.change("state",(function(t,e){"complete"===e&&this.toggle(!1)}),this),this.closeUi=new w.a(this.closeButton,{directSelect:!0}).on("click tap enter",(function(){this.nextUpSticky=!1,this.toggle(!1)}),this),this.tooltipUi=new w.a(this.tooltip).on("click tap",this.click,this)}},{key:"loadThumbnail",value:function(t){return this.nextUpImage=new Image,this.nextUpImage.onload=function(){this.nextUpImage.onload=null}.bind(this),this.nextUpImage.src=t,{backgroundImage:'url("'+t+'")'}}},{key:"click",value:function(){var t=this.feedShownId;this.reset(),this._api.next({feedShownId:t,reason:"interaction"})}},{key:"toggle",value:function(t,e){if(this.enabled&&(Object(s.v)(this.container,"jw-nextup-sticky",!!this.nextUpSticky),this.shown!==t)){this.shown=t,Object(s.v)(this.container,"jw-nextup-container-visible",t),Object(s.v)(this._playerElement,"jw-flag-nextup",t);var i=this._model.get("nextUp");t&&i?(this.feedShownId=Object(te.b)(te.a),this.trigger("nextShown",{mode:i.mode,ui:"nextup",itemsShown:[i],feedData:i.feedData,reason:e,feedShownId:this.feedShownId})):this.feedShownId=""}}},{key:"setNextUpItem",value:function(t){var e=this;setTimeout((function(){if(e.thumbnail=e.content.querySelector(".jw-nextup-thumbnail"),Object(s.v)(e.content,"jw-nextup-thumbnail-visible",!!t.image),t.image){var i=e.loadThumbnail(t.image);Object(pt.d)(e.thumbnail,i)}e.header=e.content.querySelector(".jw-nextup-header"),e.header.textContent=Object(s.e)(e.localization.nextUp).textContent,e.title=e.content.querySelector(".jw-nextup-title");var n=t.title;e.title.textContent=n?Object(s.e)(n).textContent:"";var o=t.duration;o&&(e.duration=e.content.querySelector(".jw-nextup-duration"),e.duration.textContent="number"==typeof o?Object(ft.timeFormat)(o):o)}),500)}},{key:"onNextUp",value:function(t,e){this.reset(),e||(e={showNextUp:!1}),this.enabled=!(!e.title&&!e.image),this.enabled&&(e.showNextUp||(this.nextUpSticky=!1,this.toggle(!1)),this.setNextUpItem(e))}},{key:"onDuration",value:function(t,e){if(e){var i=t.get("nextupoffset"),n=-10;i&&(n=Object(ke.d)(i,e)),n<0&&(n+=e),Object(ke.c)(i)&&e-5=this.offset;n&&void 0===i?(this.nextUpSticky=n,this.toggle(n,"time")):!n&&i&&this.reset()}}},{key:"onStreamType",value:function(t,e){"VOD"!==e&&(this.nextUpSticky=!1,this.toggle(!1))}},{key:"element",value:function(){return this.container}},{key:"addContent",value:function(t){this.content&&this.removeContent(),this.content=t,this.container.appendChild(t)}},{key:"removeContent",value:function(){this.content&&(this.container.removeChild(this.content),this.content=null)}},{key:"reset",value:function(){this.nextUpSticky=void 0,this.toggle(!1)}},{key:"destroy",value:function(){this.off(),this._model.off(null,null,this),this.closeUi&&this.closeUi.destroy(),this.tooltipUi&&this.tooltipUi.destroy()}}])&&Oe(e.prototype,i),n&&Oe(e,n),t}(),Se=function(t,e){var i=t.featured,n=t.showLogo,o=t.type;return t.logo=n?'':"",'
  • ').concat(Te[o](t,e),"
  • ")},Te={link:function(t){var e=t.link,i=t.title,n=t.logo;return'').concat(n).concat(i||"","")},info:function(t,e){return'")},share:function(t,e){return'")},keyboardShortcuts:function(t,e){return'")}},ze=i(23),Ee=i(6),Me=i(13);function Le(t,e){for(var i=0;iJW Player '.concat(t,""),a={items:[{type:"info"},{title:Object(Me.e)(n)?"".concat(o," ").concat(n):"".concat(n," ").concat(o),type:"link",featured:!0,showLogo:!0,link:"https://jwplayer.com/learn-more?e=".concat(_e[i])}]},r=e.get("provider"),l=a.items;if(r&&r.name.indexOf("flash")>=0){var s="Flash Version "+Object(Ee.a)();l.push({title:s,type:"link",link:"http://www.adobe.com/software/flash/about/"})}return this.shortcutsTooltip&&l.splice(l.length-1,0,{type:"keyboardShortcuts"}),a}},{key:"rightClick",value:function(t){if(this.lazySetup(),this.mouseOverContext)return!1;this.hideMenu(),this.showMenu(t),this.addHideMenuHandlers()}},{key:"getOffset",value:function(t){var e=Object(s.c)(this.wrapperElement),i=t.pageX-e.left,n=t.pageY-e.top;return this.model.get("touchMode")&&(n-=100),{x:i,y:n}}},{key:"showMenu",value:function(t){var e=this,i=this.getOffset(t);return this.el.style.left=i.x+"px",this.el.style.top=i.y+"px",this.outCount=0,Object(s.a)(this.playerContainer,"jw-flag-rightclick-open"),Object(s.a)(this.el,"jw-open"),clearTimeout(this._menuTimeout),this._menuTimeout=setTimeout((function(){return e.hideMenu()}),3e3),!1}},{key:"hideMenu",value:function(t){t&&this.el&&this.el.contains(t.target)||(Object(s.o)(this.playerContainer,"jw-flag-rightclick-open"),Object(s.o)(this.el,"jw-open"))}},{key:"lazySetup",value:function(){var t,e,i,n,o=this,a=(t=this.buildArray(),e=this.model.get("localization"),i=t.items,n=(void 0===i?[]:i).map((function(t){return Se(t,e)})),'
    '+'
      '.concat(n.join(""),"
    ")+"
    ");if(this.el){if(this.html!==a){this.html=a;var r=Ae(a);Object(s.h)(this.el);for(var l=r.childNodes.length;l--;)this.el.appendChild(r.firstChild)}}else this.html=a,this.el=Ae(this.html),this.wrapperElement.appendChild(this.el),this.hideMenuHandler=function(t){return o.hideMenu(t)},this.overHandler=function(){o.mouseOverContext=!0},this.outHandler=function(t){o.mouseOverContext=!1,t.relatedTarget&&!o.el.contains(t.relatedTarget)&&++o.outCount>1&&o.hideMenu()},this.infoOverlayHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.infoOverlay.open()},this.shortcutsTooltipHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.shortcutsTooltip.open()}}},{key:"setup",value:function(t,e,i){this.wrapperElement=i,this.model=t,this.mouseOverContext=!1,this.playerContainer=e,this.ui=new w.a(i).on("longPress",this.rightClick,this)}},{key:"addHideMenuHandlers",value:function(){this.removeHideMenuHandlers(),this.wrapperElement.addEventListener("touchstart",this.hideMenuHandler),document.addEventListener("touchstart",this.hideMenuHandler),o.OS.mobile||(this.wrapperElement.addEventListener("click",this.hideMenuHandler),document.addEventListener("click",this.hideMenuHandler),this.el.addEventListener("mouseover",this.overHandler),this.el.addEventListener("mouseout",this.outHandler)),this.el.querySelector(".jw-info-overlay-item").addEventListener("click",this.infoOverlayHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").addEventListener("click",this.shortcutsTooltipHandler)}},{key:"removeHideMenuHandlers",value:function(){this.wrapperElement&&(this.wrapperElement.removeEventListener("click",this.hideMenuHandler),this.wrapperElement.removeEventListener("touchstart",this.hideMenuHandler)),this.el&&(this.el.querySelector(".jw-info-overlay-item").removeEventListener("click",this.infoOverlayHandler),this.el.removeEventListener("mouseover",this.overHandler),this.el.removeEventListener("mouseout",this.outHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").removeEventListener("click",this.shortcutsTooltipHandler)),document.removeEventListener("click",this.hideMenuHandler),document.removeEventListener("touchstart",this.hideMenuHandler)}},{key:"destroy",value:function(){clearTimeout(this._menuTimeout),this.removeHideMenuHandlers(),this.el&&(this.hideMenu(),this.hideMenuHandler=null,this.el=null),this.wrapperElement&&(this.wrapperElement.oncontextmenu=null,this.wrapperElement=null),this.model&&(this.model=null),this.ui&&(this.ui.destroy(),this.ui=null)}}])&&Le(e.prototype,i),n&&Le(e,n),t}(),Ie=function(){return''};function Ve(t){var e=document.getElementsByClassName("jw-icon-settings")[0];if(e){var i="Right"===t?Object(s.k)(e):Object(s.n)(e);i&&i.focus()}}var He=function(t){Object.keys(t).forEach((function(e){t[e].deactivate()}))},Pe=function(t){return'"};var Re=function(t){t.forEach((function(t){t.deactivate()}))},Ne=function(t){return'"};function qe(t,e,i){var n,o=Object(s.e)(Ne(e)),a=new w.a(o).on("click tap enter",(function(t){i(t)})),r={activate:function(){Object(s.v)(o,"jw-settings-item-active",!0),o.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(s.v)(o,"jw-settings-item-active",!1),o.setAttribute("aria-checked","false"),n=!1},element:function(){return o},uiElement:function(){return a},destroy:function(){this.deactivate(),a.destroy()}};return Object.defineProperty(r,"active",{enumerable:!0,get:function(){return n}}),r}var Ue="audioTracks",De="captions",Fe="quality",We="playbackRates",Ze=Fe,Ke=function(t,e,i,n,o){var a=t.getSubmenu(e);if(a)a.replaceContent(i);else{var r=p("jw-settings-".concat(e),(function(i){t.activateSubmenu(e,!1,i&&"enter"!==i.type),a.element().children[0].focus()}),e,[n]),l=r.element();l.setAttribute("role","menuitemradio"),l.setAttribute("aria-checked","false"),l.setAttribute("aria-label",o),(a=function(t,e,i){var n,o=[],a=Object(s.e)(Pe(t)),r=e.element();r.setAttribute("name",t),r.className+=" jw-submenu-"+t,e.show();var l=function(t,e){t?t.focus():void 0!==e&&o[e].element().focus()},c=function(t){var e=Object(s.k)(r),i=Object(s.n)(r),n=Object(s.k)(t.target),a=Object(s.n)(t.target),c=t.key.replace(/(Arrow|ape)/,"");switch(c){case"Tab":l(t.shiftKey?i:e);break;case"Left":l(i||Object(s.n)(document.getElementsByClassName("jw-icon-settings")[0]));break;case"Up":l(a,o.length-1);break;case"Right":l(e);break;case"Down":l(n,0)}t.preventDefault(),"Esc"!==c&&t.stopPropagation()},w={addContent:function(t){t&&(t.forEach((function(t){a.appendChild(t.element()),t.element().setAttribute("tabindex","-1"),t.element().addEventListener("keydown",c)})),o=t)},replaceContent:function(t){w.removeContent(),this.addContent(t)},removeContent:function(){o.forEach((function(t){t.element().removeEventListener("keydown",c)})),Object(s.h)(a),o=[]},getItems:function(){return o},activate:function(){Object(s.v)(a,"jw-settings-submenu-active",!0),a.setAttribute("aria-expanded","true"),r.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(s.v)(a,"jw-settings-submenu-active",!1),a.setAttribute("aria-expanded","false"),r.setAttribute("aria-checked","false"),n=!1},activateItem:function(t){var e=o[t];e&&!e.active&&(Re(o),e.activate())},element:function(){return a},destroy:function(){o&&(o.forEach((function(t){t.destroy()})),this.removeContent())}};return Object.defineProperties(w,{name:{enumerable:!0,get:function(){return t}},active:{enumerable:!0,get:function(){return n}},categoryButtonElement:{enumerable:!0,get:function(){return r}},isDefault:{enumerable:!0,get:function(){return i}}}),w}(e,r,e===Ze)).addContent(i),"ontouchstart"in window||$t(l,e,o),t.addSubmenu(a)}return a};function Xe(t){t.removeSubmenu(De)}function Je(t){t.removeSubmenu(Ue)}function Qe(t){t.removeSubmenu(Fe)}function Ye(t){t.removeSubmenu(We)}function Ge(t,e,i){var n=t.elements.settingsButton,o=function(t,e,i){var n,o=function(t){/jw-(settings|video|nextup-close|sharing-link|share-item)/.test(t.target.className)||d.close()},a=null,r={},l=Object(s.e)(Ie()),c=new w.a(l).on("keydown",(function(t){var e=t.sourceEvent,i=t.target,n=Object(s.k)(i),o=Object(s.n)(i),a=e.key.replace(/(Arrow|ape)/,"");switch(a){case"Esc":d.close(t);break;case"Left":o?o.focus():(d.close(),Ve(a));break;case"Right":n&&u.element()&&i!==u.element()&&n.focus();break;case"Up":case"Down":d.activateSubmenu(i.getAttribute("name"),"Up"===a)}if(e.stopPropagation(),/13|27|32|37|38|39|40/.test(e.keyCode))return e.preventDefault(),!1})),u=p("jw-settings-close",(function(t){d.close(t)}),i.close,[lt("close")]);u.ui.on("keydown",(function(t){var e=t.sourceEvent,i=e.key.replace(/(Arrow|ape)/,"");("Enter"===i||"Right"===i||"Tab"===i&&!e.shiftKey)&&d.close(e),"Right"===i&&Ve(e.key)})),u.show();var j=l.querySelector(".jw-settings-topbar");j.appendChild(u.element());var d={ui:c,closeButton:u,open:function(e,i){(t(n=!0,i),l.setAttribute("aria-expanded","true"),document.addEventListener("click",o),e&&i&&"enter"===i.type)?a.categoryButtonElement.focus():a.element().firstChild.focus()},close:function(e){t(n=!1,e),a=null,He(r),l.setAttribute("aria-expanded","false"),document.removeEventListener("click",o)},toggle:function(){n?this.close():this.open()},addSubmenu:function(t){if(t){var i=t.name;if(r[i]=t,t.isDefault)Object(s.m)(j,t.categoryButtonElement),t.categoryButtonElement.addEventListener("keydown",(function(t){9===t.keyCode&&t.shiftKey&&d.close(t)}));else{var n=j.querySelector(".jw-submenu-sharing");j.insertBefore(t.categoryButtonElement,n||u.element())}l.appendChild(t.element()),e.show()}},getSubmenu:function(t){return r[t]},getSubmenuNames:function(){return Object.keys(r)},removeSubmenu:function(t){var i=r[t];i&&i.element().parentNode===l&&(l.removeChild(i.element()),j.removeChild(i.categoryButtonElement),i.destroy(),delete r[t],Object.keys(r).length||(this.close(),e.hide()))},activateSubmenu:function(t,e){var i=r[t];i&&(i.active||(He(r),i.activate(),a=i),(e?i.element().lastChild:i.element().firstChild).focus())},activateFirstSubmenu:function(t){var e=Object.keys(r)[0];this.activateSubmenu(e,!1,t)},element:function(){return l},destroy:function(){this.close(),this.ui.destroy(),this.closeButton.ui.destroy(),Object(s.h)(l)}};return Object.defineProperties(d,{visible:{enumerable:!0,get:function(){return n}}}),d}(e,{hide:function(){return n.hide()},show:function(){return n.show()}},i);return t.on("settingsInteraction",(function(t,e,i){var n=o.getSubmenu(t),a=i&&"enter"!==i.type,r=Object(j.c)(o.open,10);(n||e)&&(o.visible?e||n.active?o.close():o.activateSubmenu(t,!1,a):(n?o.activateSubmenu(t,!1,a):o.activateFirstSubmenu(a),r(e,i)))})),o}function $e(t,e,i,n){var o=i.player,a=function(e,i){var n=t.getSubmenu(e);n&&n.activateItem(i)},r=function(e,i){!i||i.length<=1?Je(t):function(t,e,i,n,o){var a=e.map((function(e,n){return qe(e.name,e.name,(function(e){i(n),t.close(e)}))}));Ke(t,Ue,a,lt("audio-tracks"),o).activateItem(n)}(t,i,(function(t){return n.setCurrentAudioTrack(t)}),o.get("currentAudioTrack"),o.get("localization").audioTracks)},l=function(i,a){if(!a||a.length<=1)Qe(t);else{var r=o.get("localization"),l=r.hd,s=r.auto;!function(t,e,i,n,o,a){var r=e.map((function(e,n){var o=e.label;return"Auto"===o&&0===n&&(o="".concat(a,' ')),qe(e.label,o,(function(e){i(n),t.close(e)}))}));Ke(t,Fe,r,lt("quality-100"),o).activateItem(n)}(t,a,(function(t){return n.setCurrentQuality(t)}),o.get("currentLevel"),l,s)}!function(t,e){var i=t.getSubmenuNames(),n=i.length>1||i.some((function(t){return"quality"===t||"playbackRates"===t}));e.elements.settingsButton.toggle(n)}(t,e)},s=function(e,i){o.get("supportsPlaybackRate")&&"LIVE"!==o.get("streamType")&&o.get("playbackRateControls")&&i.length>1?function(t,e,i,n,o){var a=e.map((function(e){return qe(0,Object(Me.e)(o)?"x"+e:e+"x",(function(n){i(e),t.close(n)}))}));Ke(t,We,a,lt("playback-rate"),o).activateItem(n)}(t,i,(function(t){return n.setPlaybackRate(t)}),i.indexOf(o.get("playbackRate")),o.get("localization").playbackRates):Ye(t)},c=function(t,e,i){var n=o.get("levels");if(n&&"Auto"===n[0].label){var a=e.getItems()[0].element().querySelector(".jw-auto-label"),r=n[t.index]||{label:""};a.textContent=i?"":r.label}};o.change("levels",l,t),o.on("change:currentLevel",(function(e,i){var n=t.getSubmenu("quality"),r=o.get("visualQuality");r&&n&&c(r.level,n,i),a("quality",i)}),t),o.change("audioTracks",r,t),o.on("change:currentAudioTrack",(function(t,e){a("audioTracks",e)}),t),o.on("change:playlistItem",(function(){Xe(t),e.elements.captionsButton.hide(),t.visible&&t.close()})),o.change("captionsList",(function(i,a){var r=e.elements.captionsButton;if(!a||a.length<=1)return Xe(t),void r.hide();var l=o.get("localization"),s=l.cc,c=l.off;!function(t,e,i,n,o,a){var r=e.map((function(e,n){var o=e.label;return"Off"!==o&&"off"!==e.id||0!==n||(o=a),qe(e.id,o,(function(e){i(n),t.close(e)}))}));Ke(t,De,r,lt("cc-off"),o).activateItem(n)}(t,a,(function(t){return n.setCurrentCaptions(t)}),o.get("captionsIndex"),s,c),e.toggleCaptionsButtonState(!!o.get("captionsIndex")),r.show()}),t),o.change("captionsIndex",(function(i,n){var o=t.getSubmenu("captions");o&&(o.activateItem(n),e.toggleCaptionsButtonState(!!n))}),t),o.change("playbackRates",s,t),o.change("playbackRate",(function(t,e){var i=o.get("playbackRates");i&&a("playbackRates",i.indexOf(e))}),t),o.on("change:playbackRateControls",(function(){s(0,o.get("playbackRates"))})),o.on("change:visualQuality",(function(e,i){var n=t.getSubmenu("quality");i&&n&&c(i.level,n,o.get("currentLevel"))})),o.on("change:castActive",(function(e,i,n){i!==n&&(i?(Je(t),Qe(t),Ye(t)):(r(0,o.get("audioTracks")),l(0,o.get("levels")),s(0,o.get("playbackRates"))))}),t),o.on("change:streamType",(function(){s(0,o.get("playbackRates"))}),t)}var ti=i(58),ei=i(36),ii=i(12),ni=function(t,e,i,n){var o=Object(s.e)('
    '),r=!1,l=null,c=!1,w=function(t){/jw-info/.test(t.target.className)||j.close()},u=function(){var n,a,l,c,w,u=p("jw-info-close",(function(){j.close()}),e.get("localization").close,[lt("close")]);u.show(),Object(s.m)(o,u.element()),a=o.querySelector(".jw-info-title"),l=o.querySelector(".jw-info-duration"),c=o.querySelector(".jw-info-description"),w=o.querySelector(".jw-info-clientid"),e.change("playlistItem",(function(t,e){var i=e.description,n=e.title;Object(s.q)(c,i||""),Object(s.q)(a,n||"Unknown Title")})),e.change("duration",(function(t,i){var n="";switch(e.get("streamType")){case"LIVE":n="Live";break;case"DVR":n="DVR";break;default:i&&(n=Object(ft.timeFormat)(i))}l.textContent=n}),j),w.textContent=(n=i.getPlugin("jwpsrv"))&&"function"==typeof n.doNotTrackUser&&n.doNotTrackUser()?"":"Client ID: ".concat(function(){try{return window.localStorage.jwplayerLocalId}catch(t){return"none"}}()),t.appendChild(o),r=!0};var j={open:function(){r||u(),document.addEventListener("click",w),c=!0;var t=e.get("state");t===a.pb&&i.pause("infoOverlayInteraction"),l=t,n(!0)},close:function(){document.removeEventListener("click",w),c=!1,e.get("state")===a.ob&&l===a.pb&&i.play("infoOverlayInteraction"),l=null,n(!1)},destroy:function(){this.close(),e.off(null,null,this)}};return Object.defineProperties(j,{visible:{enumerable:!0,get:function(){return c}}}),j};var oi=function(t,e,i){var n,o=!1,r=null,l=i.get("localization").shortcuts,c=Object(s.e)(function(t,e){var i=t.map((function(t){return'
    '+''.concat(t.description,"")+''.concat(t.key,"")+"
    "})).join("");return'
    ')+'Press shift question mark to access a list of keyboard shortcuts
    '+''.concat(e,"")+'
    '+"".concat(i)+"
    "}(function(t){var e=t.playPause,i=t.volumeToggle,n=t.fullscreenToggle,o=t.seekPercent,a=t.increaseVolume,r=t.decreaseVolume,l=t.seekForward,s=t.seekBackward;return[{key:t.spacebar,description:e},{key:"↑",description:a},{key:"↓",description:r},{key:"→",description:l},{key:"←",description:s},{key:"c",description:t.captionsToggle},{key:"f",description:n},{key:"m",description:i},{key:"0-9",description:o}]}(l),l.keyboardShortcuts)),w={reason:"settingsInteraction"},u=c.querySelector(".jw-switch"),j=function(){u.setAttribute("aria-checked",i.get("enableShortcuts")),u.addEventListener("click",f),Object(s.a)(c,"jw-open"),r=i.get("state"),c.querySelector(".jw-shortcuts-close").focus(),document.addEventListener("click",h),o=!0,e.pause(w)},d=function(){u.removeEventListener("click",f),Object(s.o)(c,"jw-open"),document.removeEventListener("click",h),t.focus(),o=!1,r===a.pb&&e.play(w)},h=function(t){/jw-shortcuts|jw-switch/.test(t.target.className)||d()},f=function(t){var e=t.currentTarget,n="true"!==e.getAttribute("aria-checked");e.setAttribute("aria-checked",n),i.set("enableShortcuts",n)};return n=p("jw-shortcuts-close",(function(){d()}),i.get("localization").close,[lt("close")]),Object(s.m)(c,n.element()),n.show(),t.appendChild(c),{el:c,close:d,open:j,toggleVisibility:function(){o?d():j()}}},ai=function(t){return'
    ')+"
    "};function ri(t){return(ri="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function li(t,e){for(var i=0;i16?n.activeTimeout=setTimeout(n.userInactiveTimeout,t):n.playerContainer.querySelector(".jw-tab-focus")?n.resetActiveTimeout():n.userInactive()},n}var i,n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&fi(t,e)}(e,t),i=e,(n=[{key:"resetActiveTimeout",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.inactiveTime=0}},{key:"enable",value:function(t,e){var i=this,n=this.context.createElement("div");n.className="jw-controls jw-reset",this.div=n;var r=this.context.createElement("div");r.className="jw-controls-backdrop jw-reset",this.backdrop=r,this.logo=this.playerContainer.querySelector(".jw-logo");var c=e.get("touchMode");if(!this.displayContainer){var w=new ye(e,t);w.buttons.display.on("click tap enter",(function(){i.trigger(a.p),i.userActive(1e3),t.playToggle(vi()),e.get("isFloating")?i.wrapperElement.focus():i.playerContainer.focus()})),this.div.appendChild(w.element()),this.displayContainer=w}this.infoOverlay=new ni(n,e,t,(function(t){Object(s.v)(i.div,"jw-info-open",t),t&&i.div.querySelector(".jw-info-close").focus()})),o.OS.mobile||(this.shortcutsTooltip=new oi(this.wrapperElement,t,e)),this.rightClickMenu=new Be(this.infoOverlay,this.shortcutsTooltip),c?(Object(s.a)(this.playerContainer,"jw-flag-touch"),this.rightClickMenu.setup(e,this.playerContainer,this.wrapperElement)):e.change("flashBlocked",(function(t,e){e?i.rightClickMenu.destroy():i.rightClickMenu.setup(t,i.playerContainer,i.wrapperElement)}),this);var u=e.get("floating");if(u){var j=new ui(n,e.get("localization").close);j.on(a.sb,(function(){return i.trigger("dismissFloating",{doNotForward:!0})})),!1!==u.dismissible&&Object(s.a)(this.playerContainer,"jw-floating-dismissible")}var d=this.controlbar=new le(t,e,this.playerContainer.querySelector(".jw-hidden-accessibility"));if(d.on(a.sb,(function(){return i.userActive()})),d.on("nextShown",(function(t){this.trigger("nextShown",t)}),this),d.on("adjustVolume",m,this),e.get("nextUpDisplay")&&!d.nextUpToolTip){var h=new Ce(e,t,this.playerContainer);h.on("all",this.trigger,this),h.setup(this.context),d.nextUpToolTip=h,this.div.appendChild(h.element())}this.div.appendChild(d.element());var f=null,g=this.settingsMenu=Ge(d,(function(n,o){var r=e.get("state"),l={reason:"settingsInteraction"},c="keydown"===(o&&o.sourceEvent||o||{}).type;Object(s.v)(i.div,"jw-settings-open",n),Object(ti.a)(e.get("containerWidth"))<2&&(n&&r===a.pb?t.pause(l):n||r!==a.ob||f!==a.pb||t.play(l));var w=n||c?0:gi;i.userActive(w),f=r;var u=i.controlbar.elements.settingsButton;!n&&u&&(c?u.element().focus():o&&(e.get("isFloating")?i.wrapperElement:i.playerContainer).focus())}),e.get("localization"));$e(g,d,e,t),o.OS.mobile?this.div.appendChild(g.element()):(this.playerContainer.setAttribute("aria-describedby","jw-shortcuts-tooltip-explanation"),this.div.insertBefore(g.element(),d.element()));var b=function(e){if(e.get("autostartMuted")){var n=function(){return i.unmuteAutoplay(t,e)},a=function(t,e){e||n()};o.OS.mobile&&(i.mute=p("jw-autostart-mute jw-off",n,e.get("localization").unmute,[lt("volume-0")]),i.mute.show(),i.div.appendChild(i.mute.element())),d.renderVolume(!0,e.get("volume")),Object(s.a)(i.playerContainer,"jw-flag-autostart"),e.on("change:autostartFailed",n,i),e.on("change:autostartMuted change:mute",a,i),i.muteChangeCallback=a,i.unmuteCallback=n}};function v(i){var n=0,o=e.get("duration"),a=e.get("position");if("DVR"===e.get("streamType")){var r=e.get("dvrSeekLimit");n=o,o=Math.max(a,-r)}var s=Object(l.a)(a+i,n,o);t.seek(s,vi())}function m(i){var n=Object(l.a)(e.get("volume")+i,0,100);t.setVolume(n)}e.once("change:autostartMuted",b),b(e);var y=function(n){if(n.ctrlKey||n.metaKey)return!0;var o=!i.settingsMenu.visible,a=!0===e.get("enableShortcuts"),r=i.instreamState;if(a||-1!==bi.indexOf(n.keyCode)){switch(n.keyCode){case 27:if(e.get("fullscreen"))t.setFullscreen(!1),i.playerContainer.blur(),i.userInactive();else{var l=t.getPlugin("related");l&&l.close({type:"escape"})}i.rightClickMenu.el&&i.rightClickMenu.hideMenuHandler(),i.infoOverlay.visible&&i.infoOverlay.close(),i.shortcutsTooltip&&i.shortcutsTooltip.close();break;case 13:case 32:if(document.activeElement.classList.contains("jw-switch")&&32===n.keyCode)return!0;t.playToggle(vi());break;case 37:!r&&o&&v(-5);break;case 39:!r&&o&&v(5);break;case 38:o&&m(10);break;case 40:o&&m(-10);break;case 67:var s=t.getCaptionsList().length;if(s){var c=(t.getCurrentCaptions()+1)%s;t.setCurrentCaptions(c)}break;case 77:t.setMute();break;case 70:t.setFullscreen();break;case 191:i.shortcutsTooltip&&i.shortcutsTooltip.toggleVisibility();break;default:if(n.keyCode>=48&&n.keyCode<=59){var w=(n.keyCode-48)/10*e.get("duration");t.seek(w,vi())}}return/13|32|37|38|39|40/.test(n.keyCode)?(n.preventDefault(),!1):void 0}};this.playerContainer.addEventListener("keydown",y),this.keydownCallback=y;var x=function(t){if(9===t.keyCode){var e=i.playerContainer.contains(t.target)?0:gi;i.userActive(e)}};this.playerContainer.addEventListener("keyup",x),this.keyupCallback=x;var k=function(t){var e=t.relatedTarget||document.querySelector(":focus");e&&(i.playerContainer.contains(e)||i.userInactive())};this.playerContainer.addEventListener("blur",k,!0),this.blurCallback=k;var O=function t(){"jw-shortcuts-tooltip-explanation"===i.playerContainer.getAttribute("aria-describedby")&&i.playerContainer.removeAttribute("aria-describedby"),i.playerContainer.removeEventListener("blur",t,!0)};this.shortcutsTooltip&&(this.playerContainer.addEventListener("blur",O,!0),this.onRemoveShortcutsDescription=O),this.userActive(),this.addControls(),this.addBackdrop(),e.set("controlsEnabled",!0)}},{key:"addControls",value:function(){this.wrapperElement.appendChild(this.div)}},{key:"disable",value:function(t){var e=this.nextUpToolTip,i=this.settingsMenu,n=this.infoOverlay,o=this.controlbar,a=this.rightClickMenu,r=this.playerContainer,l=this.div;clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.off(),t.off(null,null,this),t.set("controlsEnabled",!1),l.parentNode&&(Object(s.o)(r,"jw-flag-touch"),l.parentNode.removeChild(l)),o&&o.destroy(),a&&a.destroy(),this.keydownCallback&&r.removeEventListener("keydown",this.keydownCallback),this.keyupCallback&&r.removeEventListener("keyup",this.keyupCallback),this.blurCallback&&r.removeEventListener("blur",this.blurCallback),this.onRemoveShortcutsDescription&&r.removeEventListener("blur",this.onRemoveShortcutsDescription),this.displayContainer&&this.displayContainer.destroy(),e&&e.destroy(),i&&(i.destroy(),l.removeChild(i.element())),n&&n.destroy(),this.removeBackdrop()}},{key:"controlbarHeight",value:function(){return this.dimensions.cbHeight||(this.dimensions.cbHeight=this.controlbar.element().clientHeight),this.dimensions.cbHeight}},{key:"element",value:function(){return this.div}},{key:"resize",value:function(){this.dimensions={}}},{key:"unmuteAutoplay",value:function(t,e){var i=!e.get("autostartFailed"),n=e.get("mute");i?n=!1:e.set("playOnViewable",!1),this.muteChangeCallback&&(e.off("change:autostartMuted change:mute",this.muteChangeCallback),this.muteChangeCallback=null),this.unmuteCallback&&(e.off("change:autostartFailed",this.unmuteCallback),this.unmuteCallback=null),e.set("autostartFailed",void 0),e.set("autostartMuted",void 0),t.setMute(n),this.controlbar.renderVolume(n,e.get("volume")),this.mute&&this.mute.hide(),Object(s.o)(this.playerContainer,"jw-flag-autostart"),this.userActive()}},{key:"mouseMove",value:function(t){var e=this.controlbar.element().contains(t.target),i=this.controlbar.nextUpToolTip&&this.controlbar.nextUpToolTip.element().contains(t.target),n=this.logo&&this.logo.contains(t.target),o=e||i||n?0:gi;this.userActive(o)}},{key:"userActive",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gi;t>0?(this.inactiveTime=Object(c.a)()+t,-1===this.activeTimeout&&(this.activeTimeout=setTimeout(this.userInactiveTimeout,t))):this.resetActiveTimeout(),this.showing||(Object(s.o)(this.playerContainer,"jw-flag-user-inactive"),this.showing=!0,this.trigger("userActive"))}},{key:"userInactive",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.settingsMenu.visible||(this.inactiveTime=0,this.showing=!1,Object(s.a)(this.playerContainer,"jw-flag-user-inactive"),this.trigger("userInactive"))}},{key:"addBackdrop",value:function(){var t=this.instreamState?this.div:this.wrapperElement.querySelector(".jw-captions");this.wrapperElement.insertBefore(this.backdrop,t)}},{key:"removeBackdrop",value:function(){var t=this.backdrop.parentNode;t&&t.removeChild(this.backdrop)}},{key:"setupInstream",value:function(){this.instreamState=!0,this.userActive(),this.addBackdrop(),this.settingsMenu&&this.settingsMenu.close(),Object(s.o)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","-1")}},{key:"destroyInstream",value:function(t){this.instreamState=null,this.addBackdrop(),t.get("autostartMuted")&&Object(s.a)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","0")}}])&&ji(i.prototype,n),r&&ji(i,r),e}(r.a)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,i){"use strict";i.d(e,"a",(function(){return o}));var n=i(2);function o(t){var e=[],i=(t=Object(n.i)(t)).split("\r\n\r\n");1===i.length&&(i=t.split("\n\n"));for(var o=0;o0&&(o=0),i.length>o+1&&i[o+1]){var a=i[o],r=a.indexOf(" --\x3e ");r>0&&(e.begin=Object(n.g)(a.substr(0,r)),e.end=Object(n.g)(a.substr(r+5)),e.text=i.slice(o+1).join("\r\n"))}return e}},function(t,e,i){"use strict";i.d(e,"a",(function(){return o})),i.d(e,"b",(function(){return a}));var n=i(5);function o(t){var e=-1;return t>=1280?e=7:t>=960?e=6:t>=800?e=5:t>=640?e=4:t>=540?e=3:t>=420?e=2:t>=320?e=1:t>=250&&(e=0),e}function a(t,e){var i="jw-breakpoint-"+e;Object(n.p)(t,/jw-breakpoint--?\d+/,i)}},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),a=n.sources.map((function(t){return"/*# sourceURL="+n.sourceRoot+t+" */"}));return[i].concat(a).concat([o]).join("\n")}var r;return[i].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+i+"}":i})).join("")},e.i=function(t,i){"string"==typeof t&&(t=[[null,t,""]]);for(var n={},o=0;o.jw-icon-rewind,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-next,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-playback{display:none}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop{opacity:0}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-countdown{display:flex}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-duration,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-duration{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-text-countdown,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-related-btn,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-slider-volume{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-controlbar{flex-direction:column-reverse}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-button-container{height:30px}.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-volume,.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-fullscreen{display:none}.jwplayer:not(.jw-breakpoint-0) .jw-text-duration:before,.jwplayer:not(.jw-breakpoint--1) .jw-text-duration:before{content:"/";padding-right:1ch;padding-left:1ch}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar{will-change:transform}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar .jw-text{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.jw-slider-container{display:flex;align-items:center;position:relative;touch-action:none}.jw-rail,.jw-buffer,.jw-progress{position:absolute;cursor:pointer}.jw-progress{background-color:#f2f2f2}.jw-rail{background-color:rgba(255,255,255,0.3)}.jw-buffer{background-color:rgba(255,255,255,0.3)}.jw-knob{height:13px;width:13px;background-color:#fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,0.4);opacity:1;pointer-events:none;position:absolute;-webkit-transform:translate(-50%, -50%) scale(0);transform:translate(-50%, -50%) scale(0);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform}.jw-flag-dragging .jw-slider-time .jw-knob,.jw-icon-volume:active .jw-slider-volume .jw-knob{box-shadow:0 0 26px rgba(0,0,0,0.2),0 0 10px rgba(0,0,0,0.4),0 0 0 6px rgba(255,255,255,0.2)}.jw-slider-horizontal,.jw-slider-vertical{display:flex}.jw-slider-horizontal .jw-slider-container{height:5px;width:100%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue,.jw-slider-horizontal .jw-knob{top:50%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue{-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress{height:5px}.jw-slider-horizontal .jw-rail{width:100%}.jw-slider-vertical{align-items:center;flex-direction:column}.jw-slider-vertical .jw-slider-container{height:88px;width:5px}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress,.jw-slider-vertical .jw-knob{left:50%}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress{height:100%;width:5px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out;bottom:0}.jw-slider-vertical .jw-knob{-webkit-transform:translate(-50%, 50%);transform:translate(-50%, 50%)}.jw-slider-time.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-slider-time,.jw-flag-audio-player .jw-slider-volume{height:17px;width:100%;align-items:center;background:transparent none;padding:0 12px}.jw-slider-time .jw-cue{background-color:rgba(33,33,33,0.8);cursor:pointer;position:absolute;width:6px}.jw-slider-time,.jw-horizontal-volume-container{z-index:1;outline:none}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail,.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer,.jw-slider-time .jw-progress,.jw-horizontal-volume-container .jw-progress,.jw-slider-time .jw-cue,.jw-horizontal-volume-container .jw-cue{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;-webkit-transform:translate(0, -50%) scale(1, .6);transform:translate(0, -50%) scale(1, .6);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out}.jw-slider-time:hover .jw-rail,.jw-horizontal-volume-container:hover .jw-rail,.jw-slider-time:focus .jw-rail,.jw-horizontal-volume-container:focus .jw-rail,.jw-flag-dragging .jw-slider-time .jw-rail,.jw-flag-dragging .jw-horizontal-volume-container .jw-rail,.jw-flag-touch .jw-slider-time .jw-rail,.jw-flag-touch .jw-horizontal-volume-container .jw-rail,.jw-slider-time:hover .jw-buffer,.jw-horizontal-volume-container:hover .jw-buffer,.jw-slider-time:focus .jw-buffer,.jw-horizontal-volume-container:focus .jw-buffer,.jw-flag-dragging .jw-slider-time .jw-buffer,.jw-flag-dragging .jw-horizontal-volume-container .jw-buffer,.jw-flag-touch .jw-slider-time .jw-buffer,.jw-flag-touch .jw-horizontal-volume-container .jw-buffer,.jw-slider-time:hover .jw-progress,.jw-horizontal-volume-container:hover .jw-progress,.jw-slider-time:focus .jw-progress,.jw-horizontal-volume-container:focus .jw-progress,.jw-flag-dragging .jw-slider-time .jw-progress,.jw-flag-dragging .jw-horizontal-volume-container .jw-progress,.jw-flag-touch .jw-slider-time .jw-progress,.jw-flag-touch .jw-horizontal-volume-container .jw-progress,.jw-slider-time:hover .jw-cue,.jw-horizontal-volume-container:hover .jw-cue,.jw-slider-time:focus .jw-cue,.jw-horizontal-volume-container:focus .jw-cue,.jw-flag-dragging .jw-slider-time .jw-cue,.jw-flag-dragging .jw-horizontal-volume-container .jw-cue,.jw-flag-touch .jw-slider-time .jw-cue,.jw-flag-touch .jw-horizontal-volume-container .jw-cue{-webkit-transform:translate(0, -50%) scale(1, 1);transform:translate(0, -50%) scale(1, 1)}.jw-slider-time:hover .jw-knob,.jw-horizontal-volume-container:hover .jw-knob,.jw-slider-time:focus .jw-knob,.jw-horizontal-volume-container:focus .jw-knob{-webkit-transform:translate(-50%, -50%) scale(1);transform:translate(-50%, -50%) scale(1)}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail{background-color:rgba(255,255,255,0.2)}.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer{background-color:rgba(255,255,255,0.4)}.jw-flag-touch .jw-slider-time::before,.jw-flag-touch .jw-horizontal-volume-container::before{height:44px;width:100%;content:"";position:absolute;display:block;bottom:calc(100% - 17px);left:0}.jw-slider-time.jw-tab-focus:focus .jw-rail,.jw-horizontal-volume-container.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time{height:17px;padding:0}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-slider-container{height:10px}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-knob{border-radius:0;border:1px solid rgba(0,0,0,0.75);height:12px;width:10px}.jw-modal{width:284px}.jw-breakpoint-7 .jw-modal,.jw-breakpoint-6 .jw-modal,.jw-breakpoint-5 .jw-modal{height:232px}.jw-breakpoint-4 .jw-modal,.jw-breakpoint-3 .jw-modal{height:192px}.jw-breakpoint-2 .jw-modal,.jw-flag-small-player .jw-modal{bottom:0;right:0;height:100%;width:100%;max-height:none;max-width:none;z-index:2}.jwplayer .jw-rightclick{display:none;position:absolute;white-space:nowrap}.jwplayer .jw-rightclick.jw-open{display:block}.jwplayer .jw-rightclick .jw-rightclick-list{border-radius:1px;list-style:none;margin:0;padding:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item{background-color:rgba(0,0,0,0.8);border-bottom:1px solid #444;margin:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo{color:#fff;display:inline-flex;padding:0 10px 0 0;vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo .jw-svg-icon{height:20px;width:20px}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-link{border:none;color:#fff;display:block;font-size:11px;line-height:1em;padding:15px 23px;text-align:start;text-decoration:none;width:100%}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:last-child{border-bottom:none}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:hover{cursor:pointer}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured{vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link{color:#fff}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link span{color:#fff}.jwplayer .jw-rightclick .jw-info-overlay-item,.jwplayer .jw-rightclick .jw-share-item,.jwplayer .jw-rightclick .jw-shortcuts-item{border:none;background-color:transparent;outline:none;cursor:pointer}.jw-icon-tooltip.jw-open .jw-overlay{opacity:1;pointer-events:auto;transition-delay:0s}.jw-icon-tooltip.jw-open .jw-overlay:focus{outline:none}.jw-icon-tooltip.jw-open .jw-overlay:focus.jw-tab-focus{outline:solid 2px #4d90fe}.jw-slider-time .jw-overlay:before{height:1em;top:auto}.jw-slider-time .jw-icon-tooltip.jw-open .jw-overlay{pointer-events:none}.jw-volume-tip{padding:13px 0 26px}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{height:auto;width:100%;box-shadow:0 0 10px rgba(0,0,0,0.4);color:#fff;display:block;margin:0 0 14px;pointer-events:none;position:relative;z-index:0}.jw-time-tip::after,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{top:100%;position:absolute;left:50%;height:14px;width:14px;border-radius:1px;background-color:currentColor;-webkit-transform-origin:75% 50%;transform-origin:75% 50%;-webkit-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);z-index:-1}.jw-time-tip .jw-text,.jw-controlbar .jw-tooltip .jw-text,.jw-settings-menu .jw-tooltip .jw-text{background-color:#fff;border-radius:1px;color:#000;font-size:10px;height:auto;line-height:1;padding:7px 10px;display:inline-block;min-width:100%;vertical-align:middle}.jw-controlbar .jw-overlay{position:absolute;bottom:100%;left:50%;margin:0;min-height:44px;min-width:44px;opacity:0;pointer-events:none;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s, 150ms;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);width:100%;z-index:1}.jw-controlbar .jw-overlay .jw-contents{position:relative}.jw-controlbar .jw-option{position:relative;white-space:nowrap;cursor:pointer;list-style:none;height:1.5em;font-family:inherit;line-height:1.5em;padding:0 .5em;font-size:.8em;margin:0}.jw-controlbar .jw-option::before{padding-right:.125em}.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{position:absolute;bottom:100%;left:50%;opacity:0;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:100ms 0s cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility, -webkit-transform;transition-property:opacity, transform, visibility;transition-property:opacity, transform, visibility, -webkit-transform;visibility:hidden;white-space:nowrap;width:auto;z-index:1}.jw-controlbar .jw-tooltip.jw-open,.jw-settings-menu .jw-tooltip.jw-open{opacity:1;-webkit-transform:translate(-50%, -10px);transform:translate(-50%, -10px);transition-duration:150ms;transition-delay:500ms,0s,500ms;visibility:visible}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen{left:auto;right:0;-webkit-transform:translate(0, 0);transform:translate(0, 0)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen.jw-open,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen.jw-open{-webkit-transform:translate(0, -10px);transform:translate(0, -10px)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen::after,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen::after{left:auto;right:9px}.jw-tooltip-time{height:auto;width:0;bottom:100%;line-height:normal;padding:0;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jw-tooltip-time .jw-overlay{bottom:0;min-height:0;width:auto}.jw-tooltip{bottom:57px;display:none;position:absolute}.jw-tooltip .jw-text{height:100%;white-space:nowrap;text-overflow:ellipsis;direction:unset;max-width:246px;overflow:hidden}.jw-flag-audio-player .jw-tooltip{display:none}.jw-flag-small-player .jw-time-thumb{display:none}.jwplayer .jw-shortcuts-tooltip{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column;z-index:1}.jwplayer .jw-shortcuts-tooltip.jw-open{display:flex}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-close{flex:0 0 auto;margin:5px 5px 5px auto}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container{display:flex;flex:1 1 auto;flex-flow:column;font-size:12px;margin:0 20px 20px;overflow-y:auto;padding:5px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar{background-color:transparent;width:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-title{font-weight:bold}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list{display:flex;max-width:340px;margin:0 10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-tooltip-descriptions{width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row{display:flex;align-items:center;justify-content:space-between;margin:10px 0;width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-description{margin-right:10px;max-width:70%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-key{background:#fefefe;color:#333;overflow:hidden;padding:7px 10px;text-overflow:ellipsis;white-space:nowrap}.jw-skip{color:rgba(255,255,255,0.8);cursor:default;position:absolute;display:flex;right:.75em;bottom:56px;padding:.5em;border:1px solid #333;background-color:#000;align-items:center;height:2em}.jw-skip.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-skip.jw-skippable{cursor:pointer;padding:.25em .75em}.jw-skip.jw-skippable:hover{cursor:pointer;color:#fff}.jw-skip.jw-skippable .jw-skip-icon{display:inline;height:24px;width:24px;margin:0}.jw-breakpoint-7 .jw-skip{padding:1.35em 1em;bottom:130px}.jw-breakpoint-7 .jw-skip .jw-text{font-size:1em;font-weight:normal}.jw-breakpoint-7 .jw-skip .jw-icon-inline{height:30px;width:30px}.jw-breakpoint-7 .jw-skip .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-skip .jw-skip-icon{display:none;margin-left:-0.75em;padding:0 .5em;pointer-events:none}.jw-skip .jw-skip-icon .jw-svg-icon-next{display:block;padding:0}.jw-skip .jw-text,.jw-skip .jw-skip-icon{vertical-align:middle;font-size:.7em}.jw-skip .jw-text{font-weight:bold}.jw-cast{background-size:cover;display:none;height:100%;position:relative;width:100%}.jw-cast-container{background:linear-gradient(180deg, rgba(25,25,25,0.75), rgba(25,25,25,0.25), rgba(25,25,25,0));left:0;padding:20px 20px 80px;position:absolute;top:0;width:100%}.jw-cast-text{color:#fff;font-size:1.6em}.jw-breakpoint--1 .jw-cast-text,.jw-breakpoint-0 .jw-cast-text{font-size:1.15em}.jw-breakpoint-1 .jw-cast-text,.jw-breakpoint-2 .jw-cast-text,.jw-breakpoint-3 .jw-cast-text{font-size:1.3em}.jw-nextup-container{position:absolute;bottom:66px;left:0;background-color:transparent;cursor:pointer;margin:0 auto;padding:12px;pointer-events:none;right:0;text-align:right;visibility:hidden;width:100%}.jw-settings-open .jw-nextup-container,.jw-info-open .jw-nextup-container{display:none}.jw-breakpoint-7 .jw-nextup-container{padding:60px}.jw-flag-small-player .jw-nextup-container{padding:0 12px 0 0}.jw-flag-small-player .jw-nextup-container .jw-nextup-title,.jw-flag-small-player .jw-nextup-container .jw-nextup-duration,.jw-flag-small-player .jw-nextup-container .jw-nextup-close{display:none}.jw-flag-small-player .jw-nextup-container .jw-nextup-tooltip{height:30px}.jw-flag-small-player .jw-nextup-container .jw-nextup-header{font-size:12px}.jw-flag-small-player .jw-nextup-container .jw-nextup-body{justify-content:center;align-items:center;padding:.75em .3em}.jw-flag-small-player .jw-nextup-container .jw-nextup-thumbnail{width:50%}.jw-flag-small-player .jw-nextup-container .jw-nextup{max-width:65px}.jw-flag-small-player .jw-nextup-container .jw-nextup.jw-nextup-thumbnail-visible{max-width:120px}.jw-nextup{background:#333;border-radius:0;box-shadow:0 0 10px rgba(0,0,0,0.5);color:rgba(255,255,255,0.8);display:inline-block;max-width:280px;overflow:hidden;opacity:0;position:relative;width:64%;pointer-events:all;-webkit-transform:translate(0, -5px);transform:translate(0, -5px);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;transition-delay:0s}.jw-nextup:hover .jw-nextup-tooltip{color:#fff}.jw-nextup.jw-nextup-thumbnail-visible{max-width:400px}.jw-nextup.jw-nextup-thumbnail-visible .jw-nextup-thumbnail{display:block}.jw-nextup-container-visible{visibility:visible}.jw-nextup-container-visible .jw-nextup{opacity:1;-webkit-transform:translate(0, 0);transform:translate(0, 0);transition-delay:0s, 0s, 150ms}.jw-nextup-tooltip{display:flex;height:80px}.jw-nextup-thumbnail{width:120px;background-position:center;background-size:cover;flex:0 0 auto;display:none}.jw-nextup-body{flex:1 1 auto;overflow:hidden;padding:.75em .875em;display:flex;flex-flow:column wrap;justify-content:space-between}.jw-nextup-header,.jw-nextup-title{font-size:14px;line-height:1.35}.jw-nextup-header{font-weight:bold}.jw-nextup-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.jw-nextup-duration{align-self:flex-end;text-align:right;font-size:12px}.jw-nextup-close{height:24px;width:24px;border:none;color:rgba(255,255,255,0.8);cursor:pointer;margin:6px;visibility:hidden}.jw-nextup-close:hover{color:#fff}.jw-nextup-sticky .jw-nextup-close{visibility:visible}.jw-autostart-mute{position:absolute;bottom:0;right:12px;height:44px;width:44px;background-color:rgba(33,33,33,0.4);padding:5px 4px 5px 6px;display:none}.jwplayer.jw-flag-autostart:not(.jw-flag-media-audio) .jw-nextup{display:none}.jw-settings-menu{position:absolute;bottom:57px;right:12px;align-items:flex-start;background-color:#333;display:none;flex-flow:column nowrap;max-width:284px;pointer-events:auto}.jw-settings-open .jw-settings-menu{display:flex}.jw-breakpoint-7 .jw-settings-menu{bottom:130px;right:60px;max-height:none;max-width:none;height:35%;width:25%}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline{height:60px;width:60px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-tooltip .jw-text{font-size:1em}.jw-breakpoint-6 .jw-settings-menu,.jw-breakpoint-5 .jw-settings-menu{height:232px;width:284px;max-height:232px}.jw-breakpoint-4 .jw-settings-menu,.jw-breakpoint-3 .jw-settings-menu{height:192px;width:284px;max-height:192px}.jw-breakpoint-2 .jw-settings-menu{height:179px;width:284px;max-height:179px}.jw-flag-small-player .jw-settings-menu{max-width:none}.jw-settings-menu .jw-icon.jw-button-color::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon.jw-button-color[aria-checked="true"]::after{opacity:1}.jw-settings-topbar{align-items:center;background-color:rgba(0,0,0,0.4);display:flex;flex:0 0 auto;padding:3px 5px 0;width:100%}.jw-settings-topbar .jw-settings-close{margin-left:auto}.jw-settings-submenu{display:none;flex:1 1 auto;overflow-y:auto;padding:8px 20px 0 5px}.jw-settings-submenu::-webkit-scrollbar{background-color:transparent;width:6px}.jw-settings-submenu::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-settings-submenu.jw-settings-submenu-active{display:block}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item{font-size:1em;padding:11px 0 11px 30px}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-settings-item-active::before{justify-content:flex-end}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-auto-label{font-size:.85em;padding-left:10px}.jw-flag-touch .jw-settings-submenu{overflow-y:scroll;-webkit-overflow-scrolling:touch}.jw-auto-label{font-size:10px;font-weight:initial;opacity:.75;padding-left:5px}.jw-settings-content-item{position:relative;color:rgba(255,255,255,0.8);cursor:pointer;font-size:12px;line-height:1;padding:7px 0 7px 15px;width:100%;text-align:left;outline:none}.jw-settings-content-item:hover{color:#fff}.jw-settings-content-item:focus{font-weight:bold}.jw-flag-small-player .jw-settings-content-item{line-height:1.75}.jw-settings-content-item.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-settings-item-active{font-weight:bold;position:relative}.jw-settings-item-active::before{height:100%;width:1em;align-items:center;content:"\\2022";display:inline-flex;justify-content:center}.jw-breakpoint-2 .jw-settings-open .jw-display-container,.jw-flag-small-player .jw-settings-open .jw-display-container,.jw-flag-touch .jw-settings-open .jw-display-container{display:none}.jw-breakpoint-2 .jw-settings-open.jw-controls,.jw-flag-small-player .jw-settings-open.jw-controls,.jw-flag-touch .jw-settings-open.jw-controls{z-index:1}.jw-flag-small-player .jw-settings-open .jw-controlbar{display:none}.jw-settings-open .jw-icon-settings::after{opacity:1}.jw-settings-open .jw-tooltip-settings{display:none}.jw-sharing-link{cursor:pointer}.jw-shortcuts-container .jw-switch{position:relative;display:inline-block;transition:ease-out .15s;transition-property:opacity, background;border-radius:18px;width:80px;height:20px;padding:10px;background:rgba(80,80,80,0.8);cursor:pointer;font-size:inherit;vertical-align:middle}.jw-shortcuts-container .jw-switch .jw-switch-knob{position:absolute;top:2px;left:1px;transition:ease-out .15s;box-shadow:0 0 10px rgba(0,0,0,0.4);border-radius:13px;width:15px;height:15px;background:#fefefe}.jw-shortcuts-container .jw-switch:before,.jw-shortcuts-container .jw-switch:after{position:absolute;top:3px;transition:inherit;color:#fefefe}.jw-shortcuts-container .jw-switch:before{content:attr(data-jw-switch-disabled);right:8px}.jw-shortcuts-container .jw-switch:after{content:attr(data-jw-switch-enabled);left:8px;opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]{background:#475470}.jw-shortcuts-container .jw-switch[aria-checked="true"]:before{opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]:after{opacity:1}.jw-shortcuts-container .jw-switch[aria-checked="true"] .jw-switch-knob{left:60px}.jw-idle-icon-text{display:none;line-height:1;position:absolute;text-align:center;text-indent:.35em;top:100%;white-space:nowrap;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.jw-idle-label{border-radius:50%;color:#fff;-webkit-filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));font:normal 16px/1 Arial,Helvetica,sans-serif;position:relative;transition:background-color 150ms cubic-bezier(0, .25, .25, 1);transition-property:background-color,-webkit-filter;transition-property:background-color,filter;transition-property:background-color,filter,-webkit-filter;-webkit-font-smoothing:antialiased}.jw-state-idle .jw-icon-display.jw-idle-label .jw-idle-icon-text{display:block}.jw-state-idle .jw-icon-display.jw-idle-label .jw-svg-icon-play{-webkit-transform:scale(.7, .7);transform:scale(.7, .7)}.jw-breakpoint-0.jw-state-idle .jw-icon-display.jw-idle-label,.jw-breakpoint--1.jw-state-idle .jw-icon-display.jw-idle-label{font-size:12px}.jw-info-overlay{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column}.jw-info-overlay .jw-info-close{flex:0 0 auto;margin:5px 5px 5px auto}.jw-info-open .jw-info-overlay{display:flex}.jw-info-container{display:flex;flex:1 1 auto;flex-flow:column;margin:0 20px 20px;overflow-y:auto;padding:5px}.jw-info-container [class*="jw-info"]:not(:first-of-type){color:rgba(255,255,255,0.8);padding-top:10px;font-size:12px}.jw-info-container .jw-info-description{margin-bottom:30px;text-align:start}.jw-info-container .jw-info-description:empty{display:none}.jw-info-container .jw-info-duration{text-align:start}.jw-info-container .jw-info-title{text-align:start;font-size:12px;font-weight:bold}.jw-info-container::-webkit-scrollbar{background-color:transparent;width:6px}.jw-info-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-info-clientid{align-self:flex-end;font-size:12px;color:rgba(255,255,255,0.8);margin:0 20px 20px 44px;text-align:right}.jw-flag-touch .jw-info-open .jw-display-container{display:none}@supports ((-webkit-filter: drop-shadow(0 0 3px #000)) or (filter: drop-shadow(0 0 3px #000))){.jwplayer.jw-ab-drop-shadow .jw-controls .jw-svg-icon,.jwplayer.jw-ab-drop-shadow .jw-controls .jw-icon.jw-text,.jwplayer.jw-ab-drop-shadow .jw-slider-container .jw-rail,.jwplayer.jw-ab-drop-shadow .jw-title{text-shadow:none;box-shadow:none;-webkit-filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3));filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3))}.jwplayer.jw-ab-drop-shadow .jw-button-color{opacity:.8;transition-property:color, opacity}.jwplayer.jw-ab-drop-shadow .jw-button-color:not(:hover){color:#fff;opacity:.8}.jwplayer.jw-ab-drop-shadow .jw-button-color:hover{opacity:1}.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0), hsla(0, 0%, 0%, 0.00787) 10.79%, hsla(0, 0%, 0%, 0.02963) 21.99%, hsla(0, 0%, 0%, 0.0625) 33.34%, hsla(0, 0%, 0%, 0.1037) 44.59%, hsla(0, 0%, 0%, 0.15046) 55.48%, hsla(0, 0%, 0%, 0.2) 65.75%, hsla(0, 0%, 0%, 0.24954) 75.14%, hsla(0, 0%, 0%, 0.2963) 83.41%, hsla(0, 0%, 0%, 0.3375) 90.28%, hsla(0, 0%, 0%, 0.37037) 95.51%, hsla(0, 0%, 0%, 0.39213) 98.83%, hsla(0, 0%, 0%, 0.4));mix-blend-mode:multiply;transition-property:opacity}.jw-state-idle.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0.2), hsla(0, 0%, 0%, 0.19606) 1.17%, hsla(0, 0%, 0%, 0.18519) 4.49%, hsla(0, 0%, 0%, 0.16875) 9.72%, hsla(0, 0%, 0%, 0.14815) 16.59%, hsla(0, 0%, 0%, 0.12477) 24.86%, hsla(0, 0%, 0%, 0.1) 34.25%, hsla(0, 0%, 0%, 0.07523) 44.52%, hsla(0, 0%, 0%, 0.05185) 55.41%, hsla(0, 0%, 0%, 0.03125) 66.66%, hsla(0, 0%, 0%, 0.01481) 78.01%, hsla(0, 0%, 0%, 0.00394) 89.21%, hsla(0, 0%, 0%, 0));background-size:100% 7rem;background-position:50% 0}.jwplayer.jw-ab-drop-shadow.jw-state-idle .jw-controls{background-color:transparent}}.jw-video-thumbnail-container{position:relative;overflow:hidden}.jw-video-thumbnail-container:not(.jw-related-shelf-item-image){height:100%;width:100%}.jw-video-thumbnail-container.jw-video-thumbnail-generated{position:absolute;top:0;left:0}.jw-video-thumbnail-container:hover,.jw-related-item-content:hover .jw-video-thumbnail-container,.jw-related-shelf-item:hover .jw-video-thumbnail-container{cursor:pointer}.jw-video-thumbnail-container:hover .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-item-content:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-shelf-item:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail{position:absolute;top:50%;left:50%;bottom:unset;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:100%;height:auto;min-width:100%;min-height:100%;opacity:0;transition:opacity .3s ease;object-fit:cover;background:#000}.jw-related-item-next-up .jw-video-thumbnail-container .jw-video-thumbnail{height:100%;width:auto}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-visible:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-completed{opacity:0}.jw-video-thumbnail-container .jw-video-thumbnail~.jw-svg-icon-play{display:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-shelf-item-aspect{pointer-events:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-item-poster-content{pointer-events:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-state-idle .jw-controls{background:rgba(0,0,0,0.4)}.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay),.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay){display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon:focus{border:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon .jw-svg-icon-buffer{-webkit-animation:jw-spin 2s linear infinite;animation:jw-spin 2s linear infinite;display:block}@-webkit-keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jwplayer.jw-state-buffering .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-pause{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-pause{display:block}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-controls-backdrop{opacity:0}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-logo-bottom-left,.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio):not(.jw-flag-autostart) .jw-logo-bottom-right{bottom:0}.jwplayer .jw-icon-playback .jw-svg-icon-stop{display:none}.jwplayer.jw-state-paused .jw-svg-icon-pause,.jwplayer.jw-state-idle .jw-svg-icon-pause,.jwplayer.jw-state-error .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-svg-icon-pause{display:none}.jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-complete .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-play{display:none}.jwplayer:not(.jw-state-buffering) .jw-svg-icon-buffer{display:none}.jwplayer:not(.jw-state-complete) .jw-svg-icon-replay{display:none}.jwplayer:not(.jw-state-error) .jw-svg-icon-error{display:none}.jwplayer.jw-state-complete .jw-display .jw-icon-display .jw-svg-icon-replay{display:block}.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-state-complete .jw-controls{background:rgba(0,0,0,0.4);height:100%}.jw-state-idle .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-state-idle .jw-display-icon-rewind,.jwplayer.jw-state-buffering .jw-display-icon-rewind,.jwplayer.jw-state-complete .jw-display-icon-rewind,body .jw-error .jw-display-icon-rewind,body .jwplayer.jw-state-error .jw-display-icon-rewind,.jw-state-idle .jw-display-icon-next,.jwplayer.jw-state-buffering .jw-display-icon-next,.jwplayer.jw-state-complete .jw-display-icon-next,body .jw-error .jw-display-icon-next,body .jwplayer.jw-state-error .jw-display-icon-next{display:none}body .jw-error .jw-icon-display,body .jwplayer.jw-state-error .jw-icon-display{cursor:default}body .jw-error .jw-icon-display .jw-svg-icon-error,body .jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-error{display:block}body .jw-error .jw-icon-container{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-preview{display:none}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title{padding-top:4px}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-primary{width:auto;display:inline-block;padding-right:.5ch}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-secondary{width:auto;display:inline-block;padding-left:0}body .jwplayer.jw-state-error .jw-controlbar,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-controlbar{display:none}body .jwplayer.jw-state-error .jw-settings-menu,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-settings-menu{height:100%;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}body .jwplayer.jw-state-error .jw-display,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-display{padding:0}body .jwplayer.jw-state-error .jw-logo-bottom-left,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-left,body .jwplayer.jw-state-error .jw-logo-bottom-right,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-right{bottom:0}.jwplayer.jw-state-playing.jw-flag-user-inactive .jw-display{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-state-playing:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display,.jwplayer.jw-state-paused:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting):not(.jw-flag-play-rejected) .jw-display{display:none}.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-rewind,.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-next{display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-text,.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-flag-casting:not(.jw-flag-audio-player) .jw-cast{display:block}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-display-icon-container{display:none}.jwplayer.jw-flag-casting .jw-icon-hd,.jwplayer.jw-flag-casting .jw-captions,.jwplayer.jw-flag-casting .jw-icon-fullscreen,.jwplayer.jw-flag-casting .jw-icon-audio-tracks{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-volume{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-airplay{color:#fff}.jw-state-playing.jw-flag-casting:not(.jw-flag-audio-player) .jw-display,.jw-state-paused.jw-flag-casting:not(.jw-flag-audio-player) .jw-display{display:table}.jwplayer.jw-flag-cast-available .jw-icon-cast,.jwplayer.jw-flag-cast-available .jw-icon-airplay{display:flex}.jwplayer.jw-flag-cardboard-available .jw-icon-cardboard{display:flex}.jwplayer.jw-flag-live .jw-display-icon-rewind{visibility:hidden}.jwplayer.jw-flag-live .jw-controlbar .jw-text-elapsed,.jwplayer.jw-flag-live .jw-controlbar .jw-text-duration,.jwplayer.jw-flag-live .jw-controlbar .jw-text-countdown,.jwplayer.jw-flag-live .jw-controlbar .jw-slider-time{display:none}.jwplayer.jw-flag-live .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-live .jw-controlbar .jw-overlay:after{display:none}.jwplayer.jw-flag-live .jw-nextup-container{bottom:44px}.jwplayer.jw-flag-live .jw-text-elapsed,.jwplayer.jw-flag-live .jw-text-duration{display:none}.jwplayer.jw-flag-live .jw-text-live{cursor:default}.jwplayer.jw-flag-live .jw-text-live:hover{color:rgba(255,255,255,0.8)}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-stop,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-stop{display:block}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-text-live{height:24px;width:auto;align-items:center;border-radius:1px;color:rgba(255,255,255,0.8);display:flex;font-size:12px;font-weight:bold;margin-right:10px;padding:0 1ch;text-rendering:geometricPrecision;text-transform:uppercase;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:box-shadow,color}.jw-text-live::before{height:8px;width:8px;background-color:currentColor;border-radius:50%;margin-right:6px;opacity:1;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-text-live.jw-dvr-live{box-shadow:inset 0 0 0 2px currentColor}.jw-text-live.jw-dvr-live::before{opacity:.5}.jw-text-live.jw-dvr-live:hover{color:#fff}.jwplayer.jw-flag-controls-hidden .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-controls-hidden:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-controls-hidden .jw-plugin{bottom:.5em}.jwplayer.jw-flag-controls-hidden .jw-nextup-container{bottom:0}.jw-flag-controls-hidden .jw-controlbar,.jw-flag-controls-hidden .jw-display{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-controls-hidden .jw-controls-backdrop{opacity:0}.jw-flag-controls-hidden .jw-logo{visibility:visible}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-plugin{bottom:.5em}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-nextup-container{bottom:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-controls-hidden) .jw-media{cursor:none;-webkit-cursor-visibility:auto-hide}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing.jw-flag-casting .jw-display{display:table}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-ads) .jw-autostart-mute{display:flex}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting .jw-nextup-container{bottom:66px}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting.jw-state-idle .jw-nextup-container{display:none}.jw-flag-media-audio .jw-preview{display:block}.jwplayer.jw-flag-ads .jw-preview,.jwplayer.jw-flag-ads .jw-logo,.jwplayer.jw-flag-ads .jw-captions.jw-captions-enabled,.jwplayer.jw-flag-ads .jw-nextup-container,.jwplayer.jw-flag-ads .jw-text-duration,.jwplayer.jw-flag-ads .jw-text-elapsed{display:none}.jwplayer.jw-flag-ads video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-rewind,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-next,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-display{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player.jw-state-buffering .jw-display-icon-display{display:inline-block}.jwplayer.jw-flag-ads .jw-controlbar{flex-wrap:wrap-reverse}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time{height:auto;padding:0;pointer-events:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-slider-container{height:5px}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-rail,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-knob,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-buffer,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-cue,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-icon-settings{display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-progress{-webkit-transform:none;transform:none;top:auto}.jwplayer.jw-flag-ads .jw-controlbar .jw-tooltip,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-tooltip:not(.jw-icon-volume),.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-inline:not(.jw-icon-playback):not(.jw-icon-fullscreen):not(.jw-icon-volume){display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-volume-tip{padding:13px 0}.jwplayer.jw-flag-ads .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid) .jw-controls .jw-controlbar,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart .jw-controls .jw-controlbar{display:flex;pointer-events:all;visibility:visible;opacity:1}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-user-inactive .jw-controls-backdrop,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart.jw-flag-user-inactive .jw-controls-backdrop{opacity:1;background-size:100% 60px}.jwplayer.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-ads-vpaid .jw-skip,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-skip{display:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls{background:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls::after{content:none}.jwplayer.jw-flag-ads-hide-controls .jw-controls-backdrop,.jwplayer.jw-flag-ads-hide-controls .jw-controls{display:none !important}.jw-flag-overlay-open-related .jw-controls,.jw-flag-overlay-open-related .jw-title,.jw-flag-overlay-open-related .jw-logo{display:none}.jwplayer.jw-flag-rightclick-open{overflow:visible}.jwplayer.jw-flag-rightclick-open .jw-rightclick{z-index:16777215}body .jwplayer.jw-flag-flash-blocked .jw-controls,body .jwplayer.jw-flag-flash-blocked .jw-overlays,body .jwplayer.jw-flag-flash-blocked .jw-controls-backdrop,body .jwplayer.jw-flag-flash-blocked .jw-preview{display:none}body .jwplayer.jw-flag-flash-blocked .jw-error-msg{top:25%}.jw-flag-touch.jw-breakpoint-7 .jw-captions,.jw-flag-touch.jw-breakpoint-6 .jw-captions,.jw-flag-touch.jw-breakpoint-5 .jw-captions,.jw-flag-touch.jw-breakpoint-4 .jw-captions,.jw-flag-touch.jw-breakpoint-7 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-6 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-5 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-4 .jw-nextup-container{bottom:4.25em}.jw-flag-touch .jw-controlbar .jw-icon-volume{display:flex}.jw-flag-touch .jw-display,.jw-flag-touch .jw-display-container,.jw-flag-touch .jw-display-controls{pointer-events:none}.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-rewind,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-rewind{display:none}.jw-flag-touch.jw-state-paused.jw-flag-dragging .jw-display{display:none}.jw-flag-audio-player{background-color:#000}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:44px}.jw-flag-audio-player:not(.jw-flag-live) .jw-spacer{display:none}.jw-flag-audio-player .jw-preview,.jw-flag-audio-player .jw-display,.jw-flag-audio-player .jw-title,.jw-flag-audio-player .jw-nextup-container{display:none}.jw-flag-audio-player .jw-controlbar{position:relative}.jw-flag-audio-player .jw-controlbar .jw-button-container{padding-right:3px;padding-left:0}.jw-flag-audio-player .jw-controlbar .jw-icon-tooltip,.jw-flag-audio-player .jw-controlbar .jw-icon-inline{display:none}.jw-flag-audio-player .jw-controlbar .jw-icon-volume,.jw-flag-audio-player .jw-controlbar .jw-icon-playback,.jw-flag-audio-player .jw-controlbar .jw-icon-next,.jw-flag-audio-player .jw-controlbar .jw-icon-rewind,.jw-flag-audio-player .jw-controlbar .jw-icon-cast,.jw-flag-audio-player .jw-controlbar .jw-text-live,.jw-flag-audio-player .jw-controlbar .jw-icon-airplay,.jw-flag-audio-player .jw-controlbar .jw-logo-button,.jw-flag-audio-player .jw-controlbar .jw-text-elapsed,.jw-flag-audio-player .jw-controlbar .jw-text-duration{display:flex;flex:0 0 auto}.jw-flag-audio-player .jw-controlbar .jw-text-duration,.jw-flag-audio-player .jw-controlbar .jw-text-countdown{padding-right:10px}.jw-flag-audio-player .jw-controlbar .jw-slider-time{flex:0 1 auto;align-items:center;display:flex;order:1}.jw-flag-audio-player .jw-controlbar .jw-icon-volume{margin-right:0;transition:margin-right 150ms cubic-bezier(0, .25, .25, 1)}.jw-flag-audio-player .jw-controlbar .jw-icon-volume .jw-overlay{display:none}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container{transition:width 300ms cubic-bezier(0, .25, .25, 1);width:0}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open{width:140px}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open .jw-slider-volume{padding-right:24px;transition:opacity 300ms;opacity:1}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open~.jw-slider-time{flex:1 1 auto;width:auto;transition:opacity 300ms, width 300ms}.jw-flag-audio-player .jw-controlbar .jw-slider-volume{opacity:0}.jw-flag-audio-player .jw-controlbar .jw-slider-volume .jw-knob{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.jw-flag-audio-player .jw-controlbar .jw-slider-volume~.jw-icon-volume{margin-right:140px}.jw-flag-audio-player.jw-breakpoint-1 .jw-horizontal-volume-container.jw-open~.jw-slider-time,.jw-flag-audio-player.jw-breakpoint-2 .jw-horizontal-volume-container.jw-open~.jw-slider-time{opacity:0}.jw-flag-audio-player.jw-flag-small-player .jw-text-elapsed,.jw-flag-audio-player.jw-flag-small-player .jw-text-duration{display:none}.jw-flag-audio-player.jw-flag-ads .jw-slider-time{display:none}.jw-hidden{display:none}',""])}]]); \ No newline at end of file diff --git a/ui/v2.5/public/jwplayer/jwplayer.core.controls.html5.js b/ui/v2.5/public/jwplayer/jwplayer.core.controls.html5.js new file mode 100644 index 000000000..a087c11a8 --- /dev/null +++ b/ui/v2.5/public/jwplayer/jwplayer.core.controls.html5.js @@ -0,0 +1,95 @@ +/*! +JW Player version 8.11.5 +Copyright (c) 2019, JW Player, All Rights Reserved +https://github.com/jwplayer/jwplayer/blob/v8.11.5/README.md + +This source code and its use and distribution is subject to the terms and conditions of the applicable license agreement. +https://www.jwplayer.com/tos/ + +This product includes portions of other software. For the full text of licenses, see below: + +JW Player Third Party Software Notices and/or Additional Terms and Conditions + +************************************************************************************************** +The following software is used under Apache License 2.0 +************************************************************************************************** + +vtt.js v0.13.0 +Copyright (c) 2019 Mozilla (http://mozilla.org) +https://github.com/mozilla/vtt.js/blob/v0.13.0/LICENSE + +* * * + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and +limitations under the License. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under MIT license +************************************************************************************************** + +Underscore.js v1.6.0 +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +https://github.com/jashkenas/underscore/blob/1.6.0/LICENSE + +Backbone backbone.events.js v1.1.2 +Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud +https://github.com/jashkenas/backbone/blob/1.1.2/LICENSE + +Promise Polyfill v7.1.1 +Copyright (c) 2014 Taylor Hakes and Forbes Lindesay +https://github.com/taylorhakes/promise-polyfill/blob/v7.1.1/LICENSE + +can-autoplay.js v3.0.0 +Copyright (c) 2017 video-dev +https://github.com/video-dev/can-autoplay/blob/v3.0.0/LICENSE + +* * * + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under W3C license +************************************************************************************************** + +Intersection Observer v0.5.0 +Copyright (c) 2016 Google Inc. (http://google.com) +https://github.com/w3c/IntersectionObserver/blob/v0.5.0/LICENSE.md + +* * * + +W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. + +This work is being provided by the copyright holders under the following license. + +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. + +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders. +*/ +(window.webpackJsonpjwplayer=window.webpackJsonpjwplayer||[]).push([[4,1,2,3,9],[,,,,,,,,,,,,,,,,,function(e,t,i){"use strict";i.r(t);var n,o=i(8),a=i(3),r=i(7),s=i(43),l=i(5),c=i(15),u=i(40);function d(e){return n||(n=new DOMParser),Object(l.r)(Object(l.s)(n.parseFromString(e,"image/svg+xml").documentElement))}var p=function(e,t,i,n){var o=document.createElement("div");o.className="jw-icon jw-icon-inline jw-button-color jw-reset "+e,o.setAttribute("role","button"),o.setAttribute("tabindex","0"),i&&o.setAttribute("aria-label",i),o.style.display="none";var a=new u.a(o).on("click tap enter",t||function(){});return n&&Array.prototype.forEach.call(n,(function(e){"string"==typeof e?o.appendChild(d(e)):o.appendChild(e)})),{ui:a,element:function(){return o},toggle:function(e){e?this.show():this.hide()},show:function(){o.style.display=""},hide:function(){o.style.display="none"}}},w=i(0),f=i(67),h=i.n(f),j=i(68),g=i.n(j),b=i(69),m=i.n(b),v=i(70),y=i.n(v),k=i(71),x=i.n(k),O=i(72),T=i.n(O),C=i(73),_=i.n(C),S=i(74),M=i.n(S),E=i(75),z=i.n(E),A=i(76),P=i.n(A),L=i(77),I=i.n(L),R=i(78),B=i.n(R),V=i(79),H=i.n(V),N=i(80),F=i.n(N),D=i(81),q=i.n(D),U=i(82),W=i.n(U),Q=i(83),X=i.n(Q),Y=i(84),K=i.n(Y),J=i(85),Z=i.n(J),G=i(86),$=i.n(G),ee=i(87),te=i.n(ee),ie=i(88),ne=i.n(ie),oe=i(89),ae=i.n(oe),re=null;function se(e){var t=de().querySelector(ce(e));if(t)return ue(t);throw new Error("Icon not found "+e)}function le(e){var t=de().querySelectorAll(e.split(",").map(ce).join(","));if(!t.length)throw new Error("Icons not found "+e);return Array.prototype.map.call(t,(function(e){return ue(e)}))}function ce(e){return".jw-svg-icon-".concat(e)}function ue(e){return e.cloneNode(!0)}function de(){return re||(re=d(""+h.a+g.a+m.a+y.a+x.a+T.a+_.a+M.a+z.a+P.a+I.a+B.a+H.a+F.a+q.a+W.a+X.a+K.a+Z.a+$.a+te.a+ne.a+ae.a+"")),re}var pe=i(10);function we(e,t){for(var i=0;i10&&delete fe[t[0]];var i=d(e);fe[e]=i}return fe[e].cloneNode(!0)}(t):((r=document.createElement("div")).className="jw-icon jw-button-image jw-button-color jw-reset",t&&Object(pe.d)(r,{backgroundImage:"url(".concat(t,")")})),s.appendChild(r),new u.a(s).on("click tap enter",n,this),s.addEventListener("mousedown",(function(e){e.preventDefault()})),this.id=o,this.buttonElement=s}var t,i,n;return t=e,(i=[{key:"element",value:function(){return this.buttonElement}},{key:"toggle",value:function(e){e?this.show():this.hide()}},{key:"show",value:function(){this.buttonElement.style.display=""}},{key:"hide",value:function(){this.buttonElement.style.display="none"}}])&&we(t.prototype,i),n&&we(t,n),e}(),je=i(11);function ge(e,t){for(var i=0;i=0&&(t.left-=i,t.right-=i),t},me=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object(w.h)(this,r.a),this.className=t+" jw-background-color jw-reset",this.orientation=i}var t,i,n;return t=e,(i=[{key:"setup",value:function(){this.el=Object(l.e)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return''}(this.className,"jw-slider-"+this.orientation)),this.elementRail=this.el.getElementsByClassName("jw-slider-container")[0],this.elementBuffer=this.el.getElementsByClassName("jw-buffer")[0],this.elementProgress=this.el.getElementsByClassName("jw-progress")[0],this.elementThumb=this.el.getElementsByClassName("jw-knob")[0],this.ui=new u.a(this.element(),{preventScrolling:!0}).on("dragStart",this.dragStart,this).on("drag",this.dragMove,this).on("dragEnd",this.dragEnd,this).on("click tap",this.tap,this)}},{key:"dragStart",value:function(){this.trigger("dragStart"),this.railBounds=be(this.elementRail)}},{key:"dragEnd",value:function(e){this.dragMove(e),this.trigger("dragEnd")}},{key:"dragMove",value:function(e){var t,i,n=this.railBounds=this.railBounds?this.railBounds:be(this.elementRail);return i="horizontal"===this.orientation?(t=e.pageX)n.right?100:100*Object(s.a)((t-n.left)/n.width,0,1):(t=e.pageY)>=n.bottom?0:t<=n.top?100:100*Object(s.a)((n.height-(t-n.top))/n.height,0,1),this.render(i),this.update(i),!1}},{key:"tap",value:function(e){this.railBounds=be(this.elementRail),this.dragMove(e)}},{key:"limit",value:function(e){return e}},{key:"update",value:function(e){this.trigger("update",{percentage:e})}},{key:"render",value:function(e){e=Math.max(0,Math.min(e,100)),"horizontal"===this.orientation?(this.elementThumb.style.left=e+"%",this.elementProgress.style.width=e+"%"):(this.elementThumb.style.bottom=e+"%",this.elementProgress.style.height=e+"%")}},{key:"updateBuffer",value:function(e){this.elementBuffer.style.width=e+"%"}},{key:"element",value:function(){return this.el}}])&&ge(t.prototype,i),n&&ge(t,n),e}(),ve=function(e,t){e&&t&&(e.setAttribute("aria-label",t),e.setAttribute("role","button"),e.setAttribute("tabindex","0"))};function ye(e,t){for(var i=0;i0&&Array.prototype.forEach.call(o,(function(e){"string"==typeof e?a.el.appendChild(d(e)):a.el.appendChild(e)}))}var t,i,n;return t=e,(i=[{key:"addContent",value:function(e){this.content&&this.removeContent(),this.content=e,this.tooltip.appendChild(e)}},{key:"removeContent",value:function(){this.content&&(this.tooltip.removeChild(this.content),this.content=null)}},{key:"hasContent",value:function(){return!!this.content}},{key:"element",value:function(){return this.el}},{key:"openTooltip",value:function(e){this.isOpen||(this.trigger("open-"+this.componentType,e,{isOpen:!0}),this.isOpen=!0,Object(l.v)(this.el,this.openClass,this.isOpen))}},{key:"closeTooltip",value:function(e){this.isOpen&&(this.trigger("close-"+this.componentType,e,{isOpen:!1}),this.isOpen=!1,Object(l.v)(this.el,this.openClass,this.isOpen))}},{key:"toggleOpenState",value:function(e){this.isOpen?this.closeTooltip(e):this.openTooltip(e)}}])&&ye(t.prototype,i),n&&ye(t,n),e}(),xe=i(22),Oe=i(57);function Te(e,t){for(var i=0;i=this.thumbnails.length&&(t=this.thumbnails.length-1);var i=this.thumbnails[t].img;return i.indexOf("://")<0&&(i=this.vttPath?this.vttPath+"/"+i:i),i},loadThumbnail:function(e){var t=this.chooseThumbnail(e),i={margin:"0 auto",backgroundPosition:"0 0"};if(t.indexOf("#xywh")>0)try{var n=/(.+)#xywh=(\d+),(\d+),(\d+),(\d+)/.exec(t);t=n[1],i.backgroundPosition=-1*n[2]+"px "+-1*n[3]+"px",i.width=n[4],this.timeTip.setWidth(+i.width),i.height=n[5]}catch(e){return}else this.individualImage||(this.individualImage=new Image,this.individualImage.onload=Object(w.a)((function(){this.individualImage.onload=null,this.timeTip.image({width:this.individualImage.width,height:this.individualImage.height}),this.timeTip.setWidth(this.individualImage.width)}),this),this.individualImage.src=t);return i.backgroundImage='url("'+t+'")',i},showThumbnail:function(e){this._model.get("containerWidth")<=420||this.thumbnails.length<1||this.timeTip.image(this.loadThumbnail(e))},resetThumbnails:function(){this.timeTip.image({backgroundImage:"",width:0,height:0}),this.thumbnails=[]}};function Ee(e,t,i){return(Ee="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,i){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Re(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(i):o.value}})(e,t,i||e)}function ze(e){return(ze="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ae(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Pe(e,t){for(var i=0;i-1&&(n="Live")}var d=this.timeTip;d.update(n),this.textLength!==n.length&&(this.textLength=n.length,d.resetWidth()),this.showThumbnail(u),Object(l.a)(d.el,"jw-open");var p=d.getWidth(),w=a.width/100,f=o-a.width,h=0;p>f&&(h=(p-f)/(200*w));var j=100*Math.min(1-h,Math.max(h,c)).toFixed(3);Object(pe.d)(d.el,{left:j+"%"})}}},{key:"hideTimeTooltip",value:function(){Object(l.o)(this.timeTip.el,"jw-open")}},{key:"updateCues",value:function(e,t){var i=this;this.resetCues(),t&&t.length&&(t.forEach((function(e){i.addCue(e)})),this.drawCues())}},{key:"updateAriaText",value:function(){var e=this._model;if(!e.get("seeking")){var t=e.get("position"),i=e.get("duration"),n=Object(je.timeFormat)(t);"DVR"!==this.streamType&&(n+=" of ".concat(Object(je.timeFormat)(i)));var o=this.el;document.activeElement!==o&&(this.timeUpdateKeeper.textContent=n),Object(l.t)(o,"aria-valuenow",t),Object(l.t)(o,"aria-valuetext",n)}}},{key:"reset",value:function(){this.resetThumbnails(),this.timeTip.resetWidth(),this.textLength=0}}]),t}(me);Object(w.h)(Ne.prototype,_e,Me);var Fe=Ne;function De(e,t){for(var i=0;i=75&&!e),Object(l.t)(r,"aria-valuenow",o),Object(l.t)(s,"aria-valuenow",o);var c="Volume ".concat(o,"%");Object(l.t)(r,"aria-valuetext",c),Object(l.t)(s,"aria-valuetext",c),document.activeElement!==r&&document.activeElement!==s&&(this._volumeAnnouncer.textContent=c)}}},{key:"onCastAvailable",value:function(e,t){this.elements.cast.toggle(t)}},{key:"onCastActive",value:function(e,t){this.elements.fullscreen.toggle(!t),this.elements.cast.button&&Object(l.v)(this.elements.cast.button,"jw-off",!t)}},{key:"onElapsed",value:function(e,t){var i,n,o=e.get("duration");if("DVR"===e.get("streamType")){var a=Math.ceil(t),r=this._model.get("dvrSeekLimit");i=n=a>=-r?"":"-"+Object(je.timeFormat)(-(t+r)),e.set("dvrLive",a>=-r)}else i=Object(je.timeFormat)(t),n=Object(je.timeFormat)(o-t);this.elements.elapsed.textContent=i,this.elements.countdown.textContent=n}},{key:"onDuration",value:function(e,t){this.elements.duration.textContent=Object(je.timeFormat)(Math.abs(t))}},{key:"onAudioMode",value:function(e,t){var i=this.elements.time.element();t?this.elements.buttonContainer.insertBefore(i,this.elements.elapsed):Object(l.m)(this.el,i)}},{key:"element",value:function(){return this.el}},{key:"setAltText",value:function(e,t){this.elements.alt.textContent=t}},{key:"closeMenus",value:function(e){this.menus.forEach((function(t){e&&e.target===t.el||t.closeTooltip(e)}))}},{key:"rewind",value:function(){var e,t=0,i=this._model.get("currentTime");i?e=i-10:(e=this._model.get("position")-10,"DVR"===this._model.get("streamType")&&(t=this._model.get("duration"))),this._api.seek(Math.max(e,t),{reason:"interaction"})}},{key:"onState",value:function(e,t){var i=e.get("localization"),n=i.play;this.setPlayText(n),t===a.pb&&("LIVE"!==e.get("streamType")?(n=i.pause,this.setPlayText(n)):(n=i.stop,this.setPlayText(n))),Object(l.t)(this.elements.play.element(),"aria-label",n)}},{key:"onStreamTypeChange",value:function(e,t){var i="LIVE"===t,n="DVR"===t;this.elements.rewind.toggle(!i),this.elements.live.toggle(i||n),Object(l.t)(this.elements.live.element(),"tabindex",i?"-1":"0"),this.elements.duration.style.display=n?"none":"",this.onDuration(e,e.get("duration")),this.onState(e,e.get("state"))}},{key:"addLogo",value:function(e){var t=this.elements.buttonContainer,i=new he(e.file,this._model.get("localization").logo,(function(){e.link&&Object(l.l)(e.link,"_blank",{rel:"noreferrer"})}),"logo","jw-logo-button");e.link||Object(l.t)(i.element(),"tabindex","-1"),t.insertBefore(i.element(),t.querySelector(".jw-spacer").nextSibling)}},{key:"goToLiveEdge",value:function(){if("DVR"===this._model.get("streamType")){var e=Math.min(this._model.get("position"),-1),t=this._model.get("dvrSeekLimit");this._api.seek(Math.max(-t,e),{reason:"interaction"}),this._api.play({reason:"interaction"})}}},{key:"updateButtons",value:function(e,t,i){if(t){var n,o,a=this.elements.buttonContainer;t!==i&&i?(n=at(t,i),o=at(i,t),this.removeButtons(a,o)):n=t;for(var r=n.length-1;r>=0;r--){var s=n[r],l=new he(s.img,s.tooltip,s.callback,s.id,s.btnClass);s.tooltip&&$e(l.element(),s.id,s.tooltip);var c=void 0;"related"===l.id?c=this.elements.settingsButton.element():"share"===l.id?c=a.querySelector('[button="related"]')||this.elements.settingsButton.element():(c=this.elements.spacer.nextSibling)&&"logo"===c.getAttribute("button")&&(c=c.nextSibling),a.insertBefore(l.element(),c)}}}},{key:"removeButtons",value:function(e,t){for(var i=t.length;i--;){var n=e.querySelector('[button="'.concat(t[i].id,'"]'));n&&e.removeChild(n)}}},{key:"toggleCaptionsButtonState",value:function(e){var t=this.elements.captionsButton;t&&Object(l.v)(t.element(),"jw-off",!e)}},{key:"destroy",value:function(){var e=this;this._model.off(null,null,this),Object.keys(this.elements).forEach((function(t){var i=e.elements[t];i&&"function"==typeof i.destroy&&e.elements[t].destroy()})),this.ui.forEach((function(e){e.destroy()})),this.ui=[]}}])&&tt(t.prototype,i),n&&tt(t,n),e}(),lt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return'
    ')+'
    ')+"
    "},ct=function(e){return'
    '+lt("rewind",e.rewind)+lt("display",e.playback)+lt("next",e.next)+"
    "};function ut(e,t){for(var i=0;i'.concat(a.playback,"
    ")),Object(l.a)(o.icon,"jw-idle-label"),o.icon.appendChild(s))}return o}var i,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&jt(e,t)}(t,e),i=t,(n=[{key:"element",value:function(){return this.el}}])&&wt(i.prototype,n),o&&wt(i,o),t}(r.a);function bt(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return'
    '+'
    '.concat(e,"
    ")+'
    '.concat(t,"
    ")+'
    '.concat(i,"
    ")+"
    "+'')+"
    "}());t.querySelector(".jw-nextup-close").appendChild(se("close")),this.addContent(t),this.closeButton=this.content.querySelector(".jw-nextup-close"),this.closeButton.setAttribute("aria-label",this.localization.close),this.tooltip=this.content.querySelector(".jw-nextup-tooltip");var i=this._model,n=i.player;this.enabled=!1,i.on("change:nextUp",this.onNextUp,this),n.change("duration",this.onDuration,this),n.change("position",this.onElapsed,this),n.change("streamType",this.onStreamType,this),n.change("state",(function(e,t){"complete"===t&&this.toggle(!1)}),this),this.closeUi=new u.a(this.closeButton,{directSelect:!0}).on("click tap enter",(function(){this.nextUpSticky=!1,this.toggle(!1)}),this),this.tooltipUi=new u.a(this.tooltip).on("click tap",this.click,this)}},{key:"loadThumbnail",value:function(e){return this.nextUpImage=new Image,this.nextUpImage.onload=function(){this.nextUpImage.onload=null}.bind(this),this.nextUpImage.src=e,{backgroundImage:'url("'+e+'")'}}},{key:"click",value:function(){var e=this.feedShownId;this.reset(),this._api.next({feedShownId:e,reason:"interaction"})}},{key:"toggle",value:function(e,t){if(this.enabled&&(Object(l.v)(this.container,"jw-nextup-sticky",!!this.nextUpSticky),this.shown!==e)){this.shown=e,Object(l.v)(this.container,"jw-nextup-container-visible",e),Object(l.v)(this._playerElement,"jw-flag-nextup",e);var i=this._model.get("nextUp");e&&i?(this.feedShownId=Object(et.b)(et.a),this.trigger("nextShown",{mode:i.mode,ui:"nextup",itemsShown:[i],feedData:i.feedData,reason:t,feedShownId:this.feedShownId})):this.feedShownId=""}}},{key:"setNextUpItem",value:function(e){var t=this;setTimeout((function(){if(t.thumbnail=t.content.querySelector(".jw-nextup-thumbnail"),Object(l.v)(t.content,"jw-nextup-thumbnail-visible",!!e.image),e.image){var i=t.loadThumbnail(e.image);Object(pe.d)(t.thumbnail,i)}t.header=t.content.querySelector(".jw-nextup-header"),t.header.textContent=Object(l.e)(t.localization.nextUp).textContent,t.title=t.content.querySelector(".jw-nextup-title");var n=e.title;t.title.textContent=n?Object(l.e)(n).textContent:"";var o=e.duration;o&&(t.duration=t.content.querySelector(".jw-nextup-duration"),t.duration.textContent="number"==typeof o?Object(je.timeFormat)(o):o)}),500)}},{key:"onNextUp",value:function(e,t){this.reset(),t||(t={showNextUp:!1}),this.enabled=!(!t.title&&!t.image),this.enabled&&(t.showNextUp||(this.nextUpSticky=!1,this.toggle(!1)),this.setNextUpItem(t))}},{key:"onDuration",value:function(e,t){if(t){var i=e.get("nextupoffset"),n=-10;i&&(n=Object(xt.d)(i,t)),n<0&&(n+=t),Object(xt.c)(i)&&t-5=this.offset;n&&void 0===i?(this.nextUpSticky=n,this.toggle(n,"time")):!n&&i&&this.reset()}}},{key:"onStreamType",value:function(e,t){"VOD"!==t&&(this.nextUpSticky=!1,this.toggle(!1))}},{key:"element",value:function(){return this.container}},{key:"addContent",value:function(e){this.content&&this.removeContent(),this.content=e,this.container.appendChild(e)}},{key:"removeContent",value:function(){this.content&&(this.container.removeChild(this.content),this.content=null)}},{key:"reset",value:function(){this.nextUpSticky=void 0,this.toggle(!1)}},{key:"destroy",value:function(){this.off(),this._model.off(null,null,this),this.closeUi&&this.closeUi.destroy(),this.tooltipUi&&this.tooltipUi.destroy()}}])&&Ot(t.prototype,i),n&&Ot(t,n),e}(),Ct=function(e,t){var i=e.featured,n=e.showLogo,o=e.type;return e.logo=n?'':"",'
  • ').concat(_t[o](e,t),"
  • ")},_t={link:function(e){var t=e.link,i=e.title,n=e.logo;return'').concat(n).concat(i||"","")},info:function(e,t){return'")},share:function(e,t){return'")},keyboardShortcuts:function(e,t){return'")}},St=i(23),Mt=i(6),Et=i(13);function zt(e,t){for(var i=0;iJW Player '.concat(e,""),a={items:[{type:"info"},{title:Object(Et.e)(n)?"".concat(o," ").concat(n):"".concat(n," ").concat(o),type:"link",featured:!0,showLogo:!0,link:"https://jwplayer.com/learn-more?e=".concat(At[i])}]},r=t.get("provider"),s=a.items;if(r&&r.name.indexOf("flash")>=0){var l="Flash Version "+Object(Mt.a)();s.push({title:l,type:"link",link:"http://www.adobe.com/software/flash/about/"})}return this.shortcutsTooltip&&s.splice(s.length-1,0,{type:"keyboardShortcuts"}),a}},{key:"rightClick",value:function(e){if(this.lazySetup(),this.mouseOverContext)return!1;this.hideMenu(),this.showMenu(e),this.addHideMenuHandlers()}},{key:"getOffset",value:function(e){var t=Object(l.c)(this.wrapperElement),i=e.pageX-t.left,n=e.pageY-t.top;return this.model.get("touchMode")&&(n-=100),{x:i,y:n}}},{key:"showMenu",value:function(e){var t=this,i=this.getOffset(e);return this.el.style.left=i.x+"px",this.el.style.top=i.y+"px",this.outCount=0,Object(l.a)(this.playerContainer,"jw-flag-rightclick-open"),Object(l.a)(this.el,"jw-open"),clearTimeout(this._menuTimeout),this._menuTimeout=setTimeout((function(){return t.hideMenu()}),3e3),!1}},{key:"hideMenu",value:function(e){e&&this.el&&this.el.contains(e.target)||(Object(l.o)(this.playerContainer,"jw-flag-rightclick-open"),Object(l.o)(this.el,"jw-open"))}},{key:"lazySetup",value:function(){var e,t,i,n,o=this,a=(e=this.buildArray(),t=this.model.get("localization"),i=e.items,n=(void 0===i?[]:i).map((function(e){return Ct(e,t)})),'
    '+'
      '.concat(n.join(""),"
    ")+"
    ");if(this.el){if(this.html!==a){this.html=a;var r=Pt(a);Object(l.h)(this.el);for(var s=r.childNodes.length;s--;)this.el.appendChild(r.firstChild)}}else this.html=a,this.el=Pt(this.html),this.wrapperElement.appendChild(this.el),this.hideMenuHandler=function(e){return o.hideMenu(e)},this.overHandler=function(){o.mouseOverContext=!0},this.outHandler=function(e){o.mouseOverContext=!1,e.relatedTarget&&!o.el.contains(e.relatedTarget)&&++o.outCount>1&&o.hideMenu()},this.infoOverlayHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.infoOverlay.open()},this.shortcutsTooltipHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.shortcutsTooltip.open()}}},{key:"setup",value:function(e,t,i){this.wrapperElement=i,this.model=e,this.mouseOverContext=!1,this.playerContainer=t,this.ui=new u.a(i).on("longPress",this.rightClick,this)}},{key:"addHideMenuHandlers",value:function(){this.removeHideMenuHandlers(),this.wrapperElement.addEventListener("touchstart",this.hideMenuHandler),document.addEventListener("touchstart",this.hideMenuHandler),o.OS.mobile||(this.wrapperElement.addEventListener("click",this.hideMenuHandler),document.addEventListener("click",this.hideMenuHandler),this.el.addEventListener("mouseover",this.overHandler),this.el.addEventListener("mouseout",this.outHandler)),this.el.querySelector(".jw-info-overlay-item").addEventListener("click",this.infoOverlayHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").addEventListener("click",this.shortcutsTooltipHandler)}},{key:"removeHideMenuHandlers",value:function(){this.wrapperElement&&(this.wrapperElement.removeEventListener("click",this.hideMenuHandler),this.wrapperElement.removeEventListener("touchstart",this.hideMenuHandler)),this.el&&(this.el.querySelector(".jw-info-overlay-item").removeEventListener("click",this.infoOverlayHandler),this.el.removeEventListener("mouseover",this.overHandler),this.el.removeEventListener("mouseout",this.outHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").removeEventListener("click",this.shortcutsTooltipHandler)),document.removeEventListener("click",this.hideMenuHandler),document.removeEventListener("touchstart",this.hideMenuHandler)}},{key:"destroy",value:function(){clearTimeout(this._menuTimeout),this.removeHideMenuHandlers(),this.el&&(this.hideMenu(),this.hideMenuHandler=null,this.el=null),this.wrapperElement&&(this.wrapperElement.oncontextmenu=null,this.wrapperElement=null),this.model&&(this.model=null),this.ui&&(this.ui.destroy(),this.ui=null)}}])&&zt(t.prototype,i),n&&zt(t,n),e}(),It=function(){return''};function Rt(e){var t=document.getElementsByClassName("jw-icon-settings")[0];if(t){var i="Right"===e?Object(l.k)(t):Object(l.n)(t);i&&i.focus()}}var Bt=function(e){Object.keys(e).forEach((function(t){e[t].deactivate()}))},Vt=function(e){return'"};var Ht=function(e){e.forEach((function(e){e.deactivate()}))},Nt=function(e){return'"};function Ft(e,t,i){var n,o=Object(l.e)(Nt(t)),a=new u.a(o).on("click tap enter",(function(e){i(e)})),r={activate:function(){Object(l.v)(o,"jw-settings-item-active",!0),o.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(l.v)(o,"jw-settings-item-active",!1),o.setAttribute("aria-checked","false"),n=!1},element:function(){return o},uiElement:function(){return a},destroy:function(){this.deactivate(),a.destroy()}};return Object.defineProperty(r,"active",{enumerable:!0,get:function(){return n}}),r}var Dt="audioTracks",qt="captions",Ut="quality",Wt="playbackRates",Qt=Ut,Xt=function(e,t,i,n,o){var a=e.getSubmenu(t);if(a)a.replaceContent(i);else{var r=p("jw-settings-".concat(t),(function(i){e.activateSubmenu(t,!1,i&&"enter"!==i.type),a.element().children[0].focus()}),t,[n]),s=r.element();s.setAttribute("role","menuitemradio"),s.setAttribute("aria-checked","false"),s.setAttribute("aria-label",o),(a=function(e,t,i){var n,o=[],a=Object(l.e)(Vt(e)),r=t.element();r.setAttribute("name",e),r.className+=" jw-submenu-"+e,t.show();var s=function(e,t){e?e.focus():void 0!==t&&o[t].element().focus()},c=function(e){var t=Object(l.k)(r),i=Object(l.n)(r),n=Object(l.k)(e.target),a=Object(l.n)(e.target),c=e.key.replace(/(Arrow|ape)/,"");switch(c){case"Tab":s(e.shiftKey?i:t);break;case"Left":s(i||Object(l.n)(document.getElementsByClassName("jw-icon-settings")[0]));break;case"Up":s(a,o.length-1);break;case"Right":s(t);break;case"Down":s(n,0)}e.preventDefault(),"Esc"!==c&&e.stopPropagation()},u={addContent:function(e){e&&(e.forEach((function(e){a.appendChild(e.element()),e.element().setAttribute("tabindex","-1"),e.element().addEventListener("keydown",c)})),o=e)},replaceContent:function(e){u.removeContent(),this.addContent(e)},removeContent:function(){o.forEach((function(e){e.element().removeEventListener("keydown",c)})),Object(l.h)(a),o=[]},getItems:function(){return o},activate:function(){Object(l.v)(a,"jw-settings-submenu-active",!0),a.setAttribute("aria-expanded","true"),r.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(l.v)(a,"jw-settings-submenu-active",!1),a.setAttribute("aria-expanded","false"),r.setAttribute("aria-checked","false"),n=!1},activateItem:function(e){var t=o[e];t&&!t.active&&(Ht(o),t.activate())},element:function(){return a},destroy:function(){o&&(o.forEach((function(e){e.destroy()})),this.removeContent())}};return Object.defineProperties(u,{name:{enumerable:!0,get:function(){return e}},active:{enumerable:!0,get:function(){return n}},categoryButtonElement:{enumerable:!0,get:function(){return r}},isDefault:{enumerable:!0,get:function(){return i}}}),u}(t,r,t===Qt)).addContent(i),"ontouchstart"in window||$e(s,t,o),e.addSubmenu(a)}return a};function Yt(e){e.removeSubmenu(qt)}function Kt(e){e.removeSubmenu(Dt)}function Jt(e){e.removeSubmenu(Ut)}function Zt(e){e.removeSubmenu(Wt)}function Gt(e,t,i){var n=e.elements.settingsButton,o=function(e,t,i){var n,o=function(e){/jw-(settings|video|nextup-close|sharing-link|share-item)/.test(e.target.className)||f.close()},a=null,r={},s=Object(l.e)(It()),c=new u.a(s).on("keydown",(function(e){var t=e.sourceEvent,i=e.target,n=Object(l.k)(i),o=Object(l.n)(i),a=t.key.replace(/(Arrow|ape)/,"");switch(a){case"Esc":f.close(e);break;case"Left":o?o.focus():(f.close(),Rt(a));break;case"Right":n&&d.element()&&i!==d.element()&&n.focus();break;case"Up":case"Down":f.activateSubmenu(i.getAttribute("name"),"Up"===a)}if(t.stopPropagation(),/13|27|32|37|38|39|40/.test(t.keyCode))return t.preventDefault(),!1})),d=p("jw-settings-close",(function(e){f.close(e)}),i.close,[se("close")]);d.ui.on("keydown",(function(e){var t=e.sourceEvent,i=t.key.replace(/(Arrow|ape)/,"");("Enter"===i||"Right"===i||"Tab"===i&&!t.shiftKey)&&f.close(t),"Right"===i&&Rt(t.key)})),d.show();var w=s.querySelector(".jw-settings-topbar");w.appendChild(d.element());var f={ui:c,closeButton:d,open:function(t,i){(e(n=!0,i),s.setAttribute("aria-expanded","true"),document.addEventListener("click",o),t&&i&&"enter"===i.type)?a.categoryButtonElement.focus():a.element().firstChild.focus()},close:function(t){e(n=!1,t),a=null,Bt(r),s.setAttribute("aria-expanded","false"),document.removeEventListener("click",o)},toggle:function(){n?this.close():this.open()},addSubmenu:function(e){if(e){var i=e.name;if(r[i]=e,e.isDefault)Object(l.m)(w,e.categoryButtonElement),e.categoryButtonElement.addEventListener("keydown",(function(e){9===e.keyCode&&e.shiftKey&&f.close(e)}));else{var n=w.querySelector(".jw-submenu-sharing");w.insertBefore(e.categoryButtonElement,n||d.element())}s.appendChild(e.element()),t.show()}},getSubmenu:function(e){return r[e]},getSubmenuNames:function(){return Object.keys(r)},removeSubmenu:function(e){var i=r[e];i&&i.element().parentNode===s&&(s.removeChild(i.element()),w.removeChild(i.categoryButtonElement),i.destroy(),delete r[e],Object.keys(r).length||(this.close(),t.hide()))},activateSubmenu:function(e,t){var i=r[e];i&&(i.active||(Bt(r),i.activate(),a=i),(t?i.element().lastChild:i.element().firstChild).focus())},activateFirstSubmenu:function(e){var t=Object.keys(r)[0];this.activateSubmenu(t,!1,e)},element:function(){return s},destroy:function(){this.close(),this.ui.destroy(),this.closeButton.ui.destroy(),Object(l.h)(s)}};return Object.defineProperties(f,{visible:{enumerable:!0,get:function(){return n}}}),f}(t,{hide:function(){return n.hide()},show:function(){return n.show()}},i);return e.on("settingsInteraction",(function(e,t,i){var n=o.getSubmenu(e),a=i&&"enter"!==i.type,r=Object(w.c)(o.open,10);(n||t)&&(o.visible?t||n.active?o.close():o.activateSubmenu(e,!1,a):(n?o.activateSubmenu(e,!1,a):o.activateFirstSubmenu(a),r(t,i)))})),o}function $t(e,t,i,n){var o=i.player,a=function(t,i){var n=e.getSubmenu(t);n&&n.activateItem(i)},r=function(t,i){!i||i.length<=1?Kt(e):function(e,t,i,n,o){var a=t.map((function(t,n){return Ft(t.name,t.name,(function(t){i(n),e.close(t)}))}));Xt(e,Dt,a,se("audio-tracks"),o).activateItem(n)}(e,i,(function(e){return n.setCurrentAudioTrack(e)}),o.get("currentAudioTrack"),o.get("localization").audioTracks)},s=function(i,a){if(!a||a.length<=1)Jt(e);else{var r=o.get("localization"),s=r.hd,l=r.auto;!function(e,t,i,n,o,a){var r=t.map((function(t,n){var o=t.label;return"Auto"===o&&0===n&&(o="".concat(a,' ')),Ft(t.label,o,(function(t){i(n),e.close(t)}))}));Xt(e,Ut,r,se("quality-100"),o).activateItem(n)}(e,a,(function(e){return n.setCurrentQuality(e)}),o.get("currentLevel"),s,l)}!function(e,t){var i=e.getSubmenuNames(),n=i.length>1||i.some((function(e){return"quality"===e||"playbackRates"===e}));t.elements.settingsButton.toggle(n)}(e,t)},l=function(t,i){o.get("supportsPlaybackRate")&&"LIVE"!==o.get("streamType")&&o.get("playbackRateControls")&&i.length>1?function(e,t,i,n,o){var a=t.map((function(t){return Ft(0,Object(Et.e)(o)?"x"+t:t+"x",(function(n){i(t),e.close(n)}))}));Xt(e,Wt,a,se("playback-rate"),o).activateItem(n)}(e,i,(function(e){return n.setPlaybackRate(e)}),i.indexOf(o.get("playbackRate")),o.get("localization").playbackRates):Zt(e)},c=function(e,t,i){var n=o.get("levels");if(n&&"Auto"===n[0].label){var a=t.getItems()[0].element().querySelector(".jw-auto-label"),r=n[e.index]||{label:""};a.textContent=i?"":r.label}};o.change("levels",s,e),o.on("change:currentLevel",(function(t,i){var n=e.getSubmenu("quality"),r=o.get("visualQuality");r&&n&&c(r.level,n,i),a("quality",i)}),e),o.change("audioTracks",r,e),o.on("change:currentAudioTrack",(function(e,t){a("audioTracks",t)}),e),o.on("change:playlistItem",(function(){Yt(e),t.elements.captionsButton.hide(),e.visible&&e.close()})),o.change("captionsList",(function(i,a){var r=t.elements.captionsButton;if(!a||a.length<=1)return Yt(e),void r.hide();var s=o.get("localization"),l=s.cc,c=s.off;!function(e,t,i,n,o,a){var r=t.map((function(t,n){var o=t.label;return"Off"!==o&&"off"!==t.id||0!==n||(o=a),Ft(t.id,o,(function(t){i(n),e.close(t)}))}));Xt(e,qt,r,se("cc-off"),o).activateItem(n)}(e,a,(function(e){return n.setCurrentCaptions(e)}),o.get("captionsIndex"),l,c),t.toggleCaptionsButtonState(!!o.get("captionsIndex")),r.show()}),e),o.change("captionsIndex",(function(i,n){var o=e.getSubmenu("captions");o&&(o.activateItem(n),t.toggleCaptionsButtonState(!!n))}),e),o.change("playbackRates",l,e),o.change("playbackRate",(function(e,t){var i=o.get("playbackRates");i&&a("playbackRates",i.indexOf(t))}),e),o.on("change:playbackRateControls",(function(){l(0,o.get("playbackRates"))})),o.on("change:visualQuality",(function(t,i){var n=e.getSubmenu("quality");i&&n&&c(i.level,n,o.get("currentLevel"))})),o.on("change:castActive",(function(t,i,n){i!==n&&(i?(Kt(e),Jt(e),Zt(e)):(r(0,o.get("audioTracks")),s(0,o.get("levels")),l(0,o.get("playbackRates"))))}),e),o.on("change:streamType",(function(){l(0,o.get("playbackRates"))}),e)}var ei=i(58),ti=i(36),ii=i(12),ni=function(e,t,i,n){var o=Object(l.e)('
    '),r=!1,s=null,c=!1,u=function(e){/jw-info/.test(e.target.className)||w.close()},d=function(){var n,a,s,c,u,d=p("jw-info-close",(function(){w.close()}),t.get("localization").close,[se("close")]);d.show(),Object(l.m)(o,d.element()),a=o.querySelector(".jw-info-title"),s=o.querySelector(".jw-info-duration"),c=o.querySelector(".jw-info-description"),u=o.querySelector(".jw-info-clientid"),t.change("playlistItem",(function(e,t){var i=t.description,n=t.title;Object(l.q)(c,i||""),Object(l.q)(a,n||"Unknown Title")})),t.change("duration",(function(e,i){var n="";switch(t.get("streamType")){case"LIVE":n="Live";break;case"DVR":n="DVR";break;default:i&&(n=Object(je.timeFormat)(i))}s.textContent=n}),w),u.textContent=(n=i.getPlugin("jwpsrv"))&&"function"==typeof n.doNotTrackUser&&n.doNotTrackUser()?"":"Client ID: ".concat(function(){try{return window.localStorage.jwplayerLocalId}catch(e){return"none"}}()),e.appendChild(o),r=!0};var w={open:function(){r||d(),document.addEventListener("click",u),c=!0;var e=t.get("state");e===a.pb&&i.pause("infoOverlayInteraction"),s=e,n(!0)},close:function(){document.removeEventListener("click",u),c=!1,t.get("state")===a.ob&&s===a.pb&&i.play("infoOverlayInteraction"),s=null,n(!1)},destroy:function(){this.close(),t.off(null,null,this)}};return Object.defineProperties(w,{visible:{enumerable:!0,get:function(){return c}}}),w};var oi=function(e,t,i){var n,o=!1,r=null,s=i.get("localization").shortcuts,c=Object(l.e)(function(e,t){var i=e.map((function(e){return'
    '+''.concat(e.description,"")+''.concat(e.key,"")+"
    "})).join("");return'
    ')+'Press shift question mark to access a list of keyboard shortcuts
    '+''.concat(t,"")+'
    '+"".concat(i)+"
    "}(function(e){var t=e.playPause,i=e.volumeToggle,n=e.fullscreenToggle,o=e.seekPercent,a=e.increaseVolume,r=e.decreaseVolume,s=e.seekForward,l=e.seekBackward;return[{key:e.spacebar,description:t},{key:"↑",description:a},{key:"↓",description:r},{key:"→",description:s},{key:"←",description:l},{key:"c",description:e.captionsToggle},{key:"f",description:n},{key:"m",description:i},{key:"0-9",description:o}]}(s),s.keyboardShortcuts)),u={reason:"settingsInteraction"},d=c.querySelector(".jw-switch"),w=function(){d.setAttribute("aria-checked",i.get("enableShortcuts")),d.addEventListener("click",j),Object(l.a)(c,"jw-open"),r=i.get("state"),c.querySelector(".jw-shortcuts-close").focus(),document.addEventListener("click",h),o=!0,t.pause(u)},f=function(){d.removeEventListener("click",j),Object(l.o)(c,"jw-open"),document.removeEventListener("click",h),e.focus(),o=!1,r===a.pb&&t.play(u)},h=function(e){/jw-shortcuts|jw-switch/.test(e.target.className)||f()},j=function(e){var t=e.currentTarget,n="true"!==t.getAttribute("aria-checked");t.setAttribute("aria-checked",n),i.set("enableShortcuts",n)};return n=p("jw-shortcuts-close",(function(){f()}),i.get("localization").close,[se("close")]),Object(l.m)(c,n.element()),n.show(),e.appendChild(c),{el:c,close:f,open:w,toggleVisibility:function(){o?f():w()}}},ai=function(e){return'
    ')+"
    "};function ri(e){return(ri="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function si(e,t){for(var i=0;i16?n.activeTimeout=setTimeout(n.userInactiveTimeout,e):n.playerContainer.querySelector(".jw-tab-focus")?n.resetActiveTimeout():n.userInactive()},n}var i,n,r;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ji(e,t)}(t,e),i=t,(n=[{key:"resetActiveTimeout",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.inactiveTime=0}},{key:"enable",value:function(e,t){var i=this,n=this.context.createElement("div");n.className="jw-controls jw-reset",this.div=n;var r=this.context.createElement("div");r.className="jw-controls-backdrop jw-reset",this.backdrop=r,this.logo=this.playerContainer.querySelector(".jw-logo");var c=t.get("touchMode");if(!this.displayContainer){var u=new yt(t,e);u.buttons.display.on("click tap enter",(function(){i.trigger(a.p),i.userActive(1e3),e.playToggle(mi()),t.get("isFloating")?i.wrapperElement.focus():i.playerContainer.focus()})),this.div.appendChild(u.element()),this.displayContainer=u}this.infoOverlay=new ni(n,t,e,(function(e){Object(l.v)(i.div,"jw-info-open",e),e&&i.div.querySelector(".jw-info-close").focus()})),o.OS.mobile||(this.shortcutsTooltip=new oi(this.wrapperElement,e,t)),this.rightClickMenu=new Lt(this.infoOverlay,this.shortcutsTooltip),c?(Object(l.a)(this.playerContainer,"jw-flag-touch"),this.rightClickMenu.setup(t,this.playerContainer,this.wrapperElement)):t.change("flashBlocked",(function(e,t){t?i.rightClickMenu.destroy():i.rightClickMenu.setup(e,i.playerContainer,i.wrapperElement)}),this);var d=t.get("floating");if(d){var w=new di(n,t.get("localization").close);w.on(a.sb,(function(){return i.trigger("dismissFloating",{doNotForward:!0})})),!1!==d.dismissible&&Object(l.a)(this.playerContainer,"jw-floating-dismissible")}var f=this.controlbar=new st(e,t,this.playerContainer.querySelector(".jw-hidden-accessibility"));if(f.on(a.sb,(function(){return i.userActive()})),f.on("nextShown",(function(e){this.trigger("nextShown",e)}),this),f.on("adjustVolume",v,this),t.get("nextUpDisplay")&&!f.nextUpToolTip){var h=new Tt(t,e,this.playerContainer);h.on("all",this.trigger,this),h.setup(this.context),f.nextUpToolTip=h,this.div.appendChild(h.element())}this.div.appendChild(f.element());var j=null,g=this.settingsMenu=Gt(f,(function(n,o){var r=t.get("state"),s={reason:"settingsInteraction"},c="keydown"===(o&&o.sourceEvent||o||{}).type;Object(l.v)(i.div,"jw-settings-open",n),Object(ei.a)(t.get("containerWidth"))<2&&(n&&r===a.pb?e.pause(s):n||r!==a.ob||j!==a.pb||e.play(s));var u=n||c?0:gi;i.userActive(u),j=r;var d=i.controlbar.elements.settingsButton;!n&&d&&(c?d.element().focus():o&&(t.get("isFloating")?i.wrapperElement:i.playerContainer).focus())}),t.get("localization"));$t(g,f,t,e),o.OS.mobile?this.div.appendChild(g.element()):(this.playerContainer.setAttribute("aria-describedby","jw-shortcuts-tooltip-explanation"),this.div.insertBefore(g.element(),f.element()));var b=function(t){if(t.get("autostartMuted")){var n=function(){return i.unmuteAutoplay(e,t)},a=function(e,t){t||n()};o.OS.mobile&&(i.mute=p("jw-autostart-mute jw-off",n,t.get("localization").unmute,[se("volume-0")]),i.mute.show(),i.div.appendChild(i.mute.element())),f.renderVolume(!0,t.get("volume")),Object(l.a)(i.playerContainer,"jw-flag-autostart"),t.on("change:autostartFailed",n,i),t.on("change:autostartMuted change:mute",a,i),i.muteChangeCallback=a,i.unmuteCallback=n}};function m(i){var n=0,o=t.get("duration"),a=t.get("position");if("DVR"===t.get("streamType")){var r=t.get("dvrSeekLimit");n=o,o=Math.max(a,-r)}var l=Object(s.a)(a+i,n,o);e.seek(l,mi())}function v(i){var n=Object(s.a)(t.get("volume")+i,0,100);e.setVolume(n)}t.once("change:autostartMuted",b),b(t);var y=function(n){if(n.ctrlKey||n.metaKey)return!0;var o=!i.settingsMenu.visible,a=!0===t.get("enableShortcuts"),r=i.instreamState;if(a||-1!==bi.indexOf(n.keyCode)){switch(n.keyCode){case 27:if(t.get("fullscreen"))e.setFullscreen(!1),i.playerContainer.blur(),i.userInactive();else{var s=e.getPlugin("related");s&&s.close({type:"escape"})}i.rightClickMenu.el&&i.rightClickMenu.hideMenuHandler(),i.infoOverlay.visible&&i.infoOverlay.close(),i.shortcutsTooltip&&i.shortcutsTooltip.close();break;case 13:case 32:if(document.activeElement.classList.contains("jw-switch")&&32===n.keyCode)return!0;e.playToggle(mi());break;case 37:!r&&o&&m(-5);break;case 39:!r&&o&&m(5);break;case 38:o&&v(10);break;case 40:o&&v(-10);break;case 67:var l=e.getCaptionsList().length;if(l){var c=(e.getCurrentCaptions()+1)%l;e.setCurrentCaptions(c)}break;case 77:e.setMute();break;case 70:e.setFullscreen();break;case 191:i.shortcutsTooltip&&i.shortcutsTooltip.toggleVisibility();break;default:if(n.keyCode>=48&&n.keyCode<=59){var u=(n.keyCode-48)/10*t.get("duration");e.seek(u,mi())}}return/13|32|37|38|39|40/.test(n.keyCode)?(n.preventDefault(),!1):void 0}};this.playerContainer.addEventListener("keydown",y),this.keydownCallback=y;var k=function(e){if(9===e.keyCode){var t=i.playerContainer.contains(e.target)?0:gi;i.userActive(t)}};this.playerContainer.addEventListener("keyup",k),this.keyupCallback=k;var x=function(e){var t=e.relatedTarget||document.querySelector(":focus");t&&(i.playerContainer.contains(t)||i.userInactive())};this.playerContainer.addEventListener("blur",x,!0),this.blurCallback=x;var O=function e(){"jw-shortcuts-tooltip-explanation"===i.playerContainer.getAttribute("aria-describedby")&&i.playerContainer.removeAttribute("aria-describedby"),i.playerContainer.removeEventListener("blur",e,!0)};this.shortcutsTooltip&&(this.playerContainer.addEventListener("blur",O,!0),this.onRemoveShortcutsDescription=O),this.userActive(),this.addControls(),this.addBackdrop(),t.set("controlsEnabled",!0)}},{key:"addControls",value:function(){this.wrapperElement.appendChild(this.div)}},{key:"disable",value:function(e){var t=this.nextUpToolTip,i=this.settingsMenu,n=this.infoOverlay,o=this.controlbar,a=this.rightClickMenu,r=this.playerContainer,s=this.div;clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.off(),e.off(null,null,this),e.set("controlsEnabled",!1),s.parentNode&&(Object(l.o)(r,"jw-flag-touch"),s.parentNode.removeChild(s)),o&&o.destroy(),a&&a.destroy(),this.keydownCallback&&r.removeEventListener("keydown",this.keydownCallback),this.keyupCallback&&r.removeEventListener("keyup",this.keyupCallback),this.blurCallback&&r.removeEventListener("blur",this.blurCallback),this.onRemoveShortcutsDescription&&r.removeEventListener("blur",this.onRemoveShortcutsDescription),this.displayContainer&&this.displayContainer.destroy(),t&&t.destroy(),i&&(i.destroy(),s.removeChild(i.element())),n&&n.destroy(),this.removeBackdrop()}},{key:"controlbarHeight",value:function(){return this.dimensions.cbHeight||(this.dimensions.cbHeight=this.controlbar.element().clientHeight),this.dimensions.cbHeight}},{key:"element",value:function(){return this.div}},{key:"resize",value:function(){this.dimensions={}}},{key:"unmuteAutoplay",value:function(e,t){var i=!t.get("autostartFailed"),n=t.get("mute");i?n=!1:t.set("playOnViewable",!1),this.muteChangeCallback&&(t.off("change:autostartMuted change:mute",this.muteChangeCallback),this.muteChangeCallback=null),this.unmuteCallback&&(t.off("change:autostartFailed",this.unmuteCallback),this.unmuteCallback=null),t.set("autostartFailed",void 0),t.set("autostartMuted",void 0),e.setMute(n),this.controlbar.renderVolume(n,t.get("volume")),this.mute&&this.mute.hide(),Object(l.o)(this.playerContainer,"jw-flag-autostart"),this.userActive()}},{key:"mouseMove",value:function(e){var t=this.controlbar.element().contains(e.target),i=this.controlbar.nextUpToolTip&&this.controlbar.nextUpToolTip.element().contains(e.target),n=this.logo&&this.logo.contains(e.target),o=t||i||n?0:gi;this.userActive(o)}},{key:"userActive",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gi;e>0?(this.inactiveTime=Object(c.a)()+e,-1===this.activeTimeout&&(this.activeTimeout=setTimeout(this.userInactiveTimeout,e))):this.resetActiveTimeout(),this.showing||(Object(l.o)(this.playerContainer,"jw-flag-user-inactive"),this.showing=!0,this.trigger("userActive"))}},{key:"userInactive",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.settingsMenu.visible||(this.inactiveTime=0,this.showing=!1,Object(l.a)(this.playerContainer,"jw-flag-user-inactive"),this.trigger("userInactive"))}},{key:"addBackdrop",value:function(){var e=this.instreamState?this.div:this.wrapperElement.querySelector(".jw-captions");this.wrapperElement.insertBefore(this.backdrop,e)}},{key:"removeBackdrop",value:function(){var e=this.backdrop.parentNode;e&&e.removeChild(this.backdrop)}},{key:"setupInstream",value:function(){this.instreamState=!0,this.userActive(),this.addBackdrop(),this.settingsMenu&&this.settingsMenu.close(),Object(l.o)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","-1")}},{key:"destroyInstream",value:function(e){this.instreamState=null,this.addBackdrop(),e.get("autostartMuted")&&Object(l.a)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","0")}}])&&wi(i.prototype,n),r&&wi(i,r),t}(r.a)},function(e,t,i){"use strict";i.r(t);var n=i(0),o=i(12),a=i(50),r=i(37);var s=i(44),l=i(51),c=i(26),u=i(25),d=i(3),p=i(46),w=i(2),f=i(7),h=i(34);function j(e){var t=!1;return{async:function(){var i=this,n=arguments;return Promise.resolve().then((function(){if(!t)return e.apply(i,n)}))},cancel:function(){t=!0},cancelled:function(){return t}}}var g=i(1);function b(e){return function(t,i){var o=e.mediaModel,a=Object(n.h)({},i,{type:t});switch(t){case d.T:if(o.get(d.T)===i.mediaType)return;o.set(d.T,i.mediaType);break;case d.U:return void o.set(d.U,Object(n.h)({},i));case d.M:if(i[t]===e.model.getMute())return;break;case d.bb:i.newstate===d.mb&&(e.thenPlayPromise.cancel(),o.srcReset());var r=o.attributes.mediaState;o.attributes.mediaState=i.newstate,o.trigger("change:mediaState",o,i.newstate,r);break;case d.F:return e.beforeComplete=!0,e.trigger(d.B,a),void(e.attached&&!e.background&&e._playbackComplete());case d.G:o.get("setup")?(e.thenPlayPromise.cancel(),o.srcReset()):(t=d.tb,a.code+=1e5);break;case d.K:a.metadataType||(a.metadataType="unknown");var s=i.duration;Object(n.v)(s)&&(o.set("seekRange",i.seekRange),o.set("duration",s));break;case d.D:o.set("buffer",i.bufferPercent);case d.S:o.set("seekRange",i.seekRange),o.set("position",i.position),o.set("currentTime",i.currentTime);var l=i.duration;Object(n.v)(l)&&o.set("duration",l),t===d.S&&Object(n.s)(e.item.starttime)&&delete e.item.starttime;break;case d.R:var c=e.mediaElement;c&&c.paused&&o.set("mediaState","paused");break;case d.I:o.set(d.I,i.levels);case d.J:var u=i.currentQuality,p=i.levels;u>-1&&p.length>1&&o.set("currentLevel",parseInt(u));break;case d.f:o.set(d.f,i.tracks);case d.g:var w=i.currentTrack,f=i.tracks;w>-1&&f.length>0&&w=Math.max(l,p.a)&&(e.preloadNextItem(),v=!0)}function A(e){var t={};b.tag&&(t.tag=b.tag),this.trigger(d.F,t),P.call(this,e)}function P(e){j={},a&&h+10?e:null,f&&f.model.set("skipOffset",s)}};Object(n.h)(le.prototype,f.a);var ce=le,ue=i(63),de=i(60),pe=function(e){var t=this,i=[],n={},o=0,a=0;function r(e){if(e.data=e.data||[],e.name=e.label||e.name||e.language,e._id=Object(de.a)(e,i.length),!e.name){var t=Object(de.b)(e,o);e.name=t.label,o=t.unknownCount}n[e._id]=e,i.push(e)}function s(){for(var e=[{id:"off",label:"Off"}],t=0;t')+'
    '},he=i(36),je=44,ge=function(e){var t=e.get("height");if(e.get("aspectratio"))return!1;if("string"==typeof t&&t.indexOf("%")>-1)return!1;var i=1*t||NaN;return!!(i=isNaN(i)?e.get("containerHeight"):i)&&(i&&i<=je)},be=i(54);function me(e,t){if(e.get("fullscreen"))return 1;if(!e.get("activeTab"))return 0;if(e.get("isFloating"))return 1;var i=e.get("intersectionRatio");return void 0===i&&(i=function(e){var t=document.documentElement,i=document.body,n={top:0,left:0,right:t.clientWidth||i.clientWidth,width:t.clientWidth||i.clientWidth,bottom:t.clientHeight||i.clientHeight,height:t.clientHeight||i.clientHeight};if(!i.contains(e))return 0;if("none"===window.getComputedStyle(e).display)return 0;var o=ve(e);if(!o)return 0;var a=o,r=e.parentNode,s=!1;for(;!s;){var l=null;if(r===i||r===t||1!==r.nodeType?(s=!0,l=n):"visible"!==window.getComputedStyle(r).overflow&&(l=ve(r)),l&&(c=l,u=a,d=void 0,p=void 0,w=void 0,f=void 0,h=void 0,j=void 0,d=Math.max(c.top,u.top),p=Math.min(c.bottom,u.bottom),w=Math.max(c.left,u.left),f=Math.min(c.right,u.right),j=p-d,!(a=(h=f-w)>=0&&j>=0&&{top:d,bottom:p,left:w,right:f,width:h,height:j})))return 0;r=r.parentNode}var c,u,d,p,w,f,h,j;var g=o.width*o.height,b=a.width*a.height;return g?b/g:0}(t),window.top!==window.self&&i)?0:i}function ve(e){try{return e.getBoundingClientRect()}catch(e){}}var ye=i(49),ke=i(42),xe=i(58),Oe=i(10);var Te=i(32),Ce=i(5),_e=i(6),Se=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"],Me=function(e,t,i){for(var n=e.requestFullscreen||e.webkitRequestFullscreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen,o=t.exitFullscreen||t.webkitExitFullscreen||t.webkitCancelFullScreen||t.mozCancelFullScreen||t.msExitFullscreen,a=!(!n||!o),r=Se.length;r--;)t.addEventListener(Se[r],i);return{events:Se,supportsDomFullscreen:function(){return a},requestFullscreen:function(){n.call(e,{navigationUI:"hide"})},exitFullscreen:function(){null!==this.fullscreenElement()&&o.apply(t)},fullscreenElement:function(){var e=t.fullscreenElement,i=t.webkitCurrentFullScreenElement,n=t.mozFullScreenElement,o=t.msFullscreenElement;return null===e?e:e||i||n||o},destroy:function(){for(var e=Se.length;e--;)t.removeEventListener(Se[e],i)}}},Ee=i(40);function ze(e,t){for(var i=0;io?a:n*r/i)*u}return e}(i))/10}f.get("renderCaptionsNatively")?function(e,t){var i="#".concat(e," .jw-video::-webkit-media-text-track-display");t&&(t+="px",m.OS.iOS&&Object(Oe.b)(i,{fontSize:"inherit"},e,!0));p.fontSize=t,Object(Oe.b)(i,p,e,!0)}(f.get("id"),t):Object(Oe.d)(s,{fontSize:t})}}function g(e,t,i){var n=Object(Oe.c)("#000000",i);"dropshadow"===e?t.textShadow="0 2px 1px "+n:"raised"===e?t.textShadow="0 0 5px "+n+", 0 1px 5px "+n+", 0 2px 5px "+n:"depressed"===e?t.textShadow="0 -2px 1px "+n:"uniform"===e&&(t.textShadow="-2px 0 1px "+n+",2px 0 1px "+n+",0 -2px 1px "+n+",0 2px 1px "+n+",-1px 1px 1px "+n+",1px 1px 1px "+n+",1px -1px 1px "+n+",1px 1px 1px "+n)}(s=document.createElement("div")).className="jw-captions jw-reset",this.show=function(){Object(Ce.a)(s,"jw-captions-enabled")},this.hide=function(){Object(Ce.o)(s,"jw-captions-enabled")},this.populate=function(e){f.get("renderCaptionsNatively")||(a=[],o=e,e?this.selectCues(e,r):this.renderCues())},this.resize=function(){j(),this.renderCues(!0)},this.renderCues=function(e){e=!!e,Ae&&Ae.processCues(window,a,s,e)},this.selectCues=function(e,t){if(e&&e.data&&t&&!f.get("renderCaptionsNatively")){var i=this.getAlignmentPosition(e,t);!1!==i&&(a=this.getCurrentCues(e.data,i),this.renderCues(!0))}},this.getCurrentCues=function(e,t){return Object(n.i)(e,(function(e){return t>=e.startTime&&(!e.endTime||t<=e.endTime)}))},this.getAlignmentPosition=function(e,t){var i=e.source,o=t.metadata,a=t.currentTime;return i&&o&&Object(n.s)(o[i])&&(a=o[i]),a},this.clear=function(){Object(Ce.g)(s)},this.setup=function(e,i){l=document.createElement("div"),c=document.createElement("span"),l.className="jw-captions-window jw-reset",c.className="jw-captions-text jw-reset",t=Object(n.h)({},Ie,i),u=Ie.fontScale,h(t.fontSize);var o=t.windowColor,a=t.windowOpacity,r=t.edgeStyle;p={};var d={};!function(e,t){var i=t.color,n=t.fontOpacity;(i||n!==Ie.fontOpacity)&&(e.color=Object(Oe.c)(i||"#ffffff",n));if(t.back){var o=t.backgroundColor,a=t.backgroundOpacity;o===Ie.backgroundColor&&a===Ie.backgroundOpacity||(e.backgroundColor=Object(Oe.c)(o,a))}else e.background="transparent";t.fontFamily&&(e.fontFamily=t.fontFamily);t.fontStyle&&(e.fontStyle=t.fontStyle);t.fontWeight&&(e.fontWeight=t.fontWeight);t.textDecoration&&(e.textDecoration=t.textDecoration)}(d,t),(o||a!==Ie.windowOpacity)&&(p.backgroundColor=Object(Oe.c)(o||"#000000",a)),g(r,d,t.fontOpacity),t.back||null!==r||g("uniform",d),Object(Oe.d)(l,p),Object(Oe.d)(c,d),function(e,t){j(),function(e,t){m.Browser.safari&&Object(Oe.b)("#"+e+" .jw-video::-webkit-media-text-track-display-backdrop",{backgroundColor:t.backgroundColor},e,!0);Object(Oe.b)("#"+e+" .jw-video::-webkit-media-text-track-display",p,e,!0),Object(Oe.b)("#"+e+" .jw-video::cue",t,e,!0)}(e,t),function(e,t){Object(Oe.b)("#"+e+" .jw-text-track-display",p,e),Object(Oe.b)("#"+e+" .jw-text-track-cue",t,e)}(e,t)}(e,d),l.appendChild(c),s.appendChild(l),f.change("captionsTrack",(function(e,t){this.populate(t)}),this),f.set("captions",t)},this.element=function(){return s},this.destroy=function(){f.off(null,null,this),this.off()};var b=function(e){r=e,w.selectCues(o,r)};f.on("change:playlistItem",(function(){r=null,a=[]}),this),f.on(d.Q,(function(e){a=[],b(e)}),this),f.on(d.S,b,this),f.on("subtitlesTrackData",(function(){this.selectCues(o,r)}),this),f.on("change:captionsList",(function e(t,n){var o=this;1!==n.length&&(t.get("renderCaptionsNatively")||Ae||(i.e(8).then(function(e){Ae=i(93).default}.bind(null,i)).catch(Object(Le.c)(301121)).catch((function(e){o.trigger(d.tb,e)})),t.off("change:captionsList",e,this)))}),this)};Object(n.h)(Re.prototype,f.a);var Be=Re,Ve=function(e,t){var i=t?" jw-hide":"";return'')},He={linktarget:"_blank",margin:8,hide:!1,position:"top-right"};function Ne(e){var t,i;Object(n.h)(this,f.a);var o=new Image;this.setup=function(){(i=Object(n.h)({},He,e.get("logo"))).position=i.position||He.position,i.hide="true"===i.hide.toString(),i.file&&"control-bar"!==i.position&&(t||(t=Object(Ce.e)(Ve(i.position,i.hide))),e.set("logo",i),o.onload=function(){var n=this.height,o=this.width,a={backgroundImage:'url("'+this.src+'")'};if(i.margin!==He.margin){var r=/(\w+)-(\w+)/.exec(i.position);3===r.length&&(a["margin-"+r[1]]=i.margin,a["margin-"+r[2]]=i.margin)}var s=.15*e.get("containerHeight"),l=.15*e.get("containerWidth");if(n>s||o>l){var c=o/n;l/s>c?(n=s,o=s*c):(o=l,n=l/c)}a.width=Math.round(o),a.height=Math.round(n),Object(Oe.d)(t,a),e.set("logoWidth",a.width)},o.src=i.file,i.link&&(t.setAttribute("tabindex","0"),t.setAttribute("aria-label",e.get("localization").logo)),this.ui=new Ee.a(t).on("click tap enter",(function(e){e&&e.stopPropagation&&e.stopPropagation(),this.trigger(d.A,{link:i.link,linktarget:i.linktarget})}),this))},this.setContainer=function(e){t&&e.appendChild(t)},this.element=function(){return t},this.position=function(){return i.position},this.destroy=function(){o.onload=null,this.ui&&this.ui.destroy()}}var Fe=function(e){this.model=e,this.image=null};Object(n.h)(Fe.prototype,{setup:function(e){this.el=e},setImage:function(e){var t=this.image;t&&(t.onload=null),this.image=null;var i="";"string"==typeof e&&(i='url("'+e+'")',(t=this.image=new Image).src=e),Object(Oe.d)(this.el,{backgroundImage:i})},resize:function(e,t,i){if("uniform"===i){if(e&&(this.playerAspectRatio=e/t),!this.playerAspectRatio||!this.image||"complete"!==(s=this.model.get("state"))&&"idle"!==s&&"error"!==s&&"buffering"!==s)return;var n=this.image,o=null;if(n){if(0===n.width){var a=this;return void(n.onload=function(){a.resize(e,t,i)})}var r=n.width/n.height;Math.abs(this.playerAspectRatio-r)<.09&&(o="cover")}Object(Oe.d)(this.el,{backgroundSize:o})}var s},element:function(){return this.el}});var De=Fe,qe=function(e){this.model=e.player};Object(n.h)(qe.prototype,{hide:function(){Object(Oe.d)(this.el,{display:"none"})},show:function(){Object(Oe.d)(this.el,{display:""})},setup:function(e){this.el=e;var t=this.el.getElementsByTagName("div");this.title=t[0],this.description=t[1],this.model.on("change:logoWidth",this.update,this),this.model.change("playlistItem",this.playlistItem,this)},update:function(e){var t={},i=e.get("logo");if(i){var n=1*(""+i.margin).replace("px",""),o=e.get("logoWidth")+(isNaN(n)?0:n+10);"top-left"===i.position?t.paddingLeft=o:"top-right"===i.position&&(t.paddingRight=o)}Object(Oe.d)(this.el,t)},playlistItem:function(e,t){if(t)if(e.get("displaytitle")||e.get("displaydescription")){var i="",n="";t.title&&e.get("displaytitle")&&(i=t.title),t.description&&e.get("displaydescription")&&(n=t.description),this.updateText(i,n)}else this.hide()},updateText:function(e,t){Object(Ce.q)(this.title,e),Object(Ce.q)(this.description,t),this.title.firstChild||this.description.firstChild?this.show():this.hide()},element:function(){return this.el}});var Ue=qe;function We(e,t){for(var i=0;ie)}if(t.get("controls")){var r=ge(t);Object(Ce.v)(u,"jw-flag-audio-player",r),t.set("audioMode",r)}}function R(){t.set("visibility",me(t,u))}this.updateBounds=function(){Object(ke.a)(k);var e=t.get("isFloating")?p:u,i=document.body.contains(e),n=Object(Ce.c)(e),r=Math.round(n.width),s=Math.round(n.height);if(M=Object(Ce.c)(u),r===o&&s===a)return o&&a||P(),void t.set("inDom",i);r&&s||o&&a||P(),(r||s||i)&&(t.set("containerWidth",r),t.set("containerHeight",s)),t.set("inDom",i),i&&be.a.observe(u)},this.updateStyles=function(){var e=t.get("containerWidth"),i=t.get("containerHeight");I(e,i),z&&z.resize(e,i),$(e,i),v.resize(),O&&F()},this.checkResized=function(){var e=t.get("containerWidth"),i=t.get("containerHeight"),n=t.get("isFloating");if(e!==o||i!==a){this.resizeListener||(this.resizeListener=new Ye.a(p,this,t)),o=e,a=i,l.trigger(d.hb,{width:e,height:i});var s=Object(xe.a)(e);E!==s&&(E=s,l.trigger(d.j,{breakpoint:E}))}n!==r&&(r=n,l.trigger(d.x,{floating:n}),R())},this.responsiveListener=P,this.setup=function(){var n,o,a,r;g.setup(u.querySelector(".jw-preview")),b.setup(u.querySelector(".jw-title")),(i=new Ne(t)).setup(),i.setContainer(p),i.on(d.A,J),v.setup(u.id,t.get("captions")),b.element().parentNode.insertBefore(v.element(),b.element()),n=e,a=new Pe(o=t,h),r=o.get("controls"),a.on({click:function(){l.trigger(d.p),z&&(ce()?z.settingsMenu.close():ue()?z.infoOverlay.close():n.playToggle({reason:"interaction"}))},tap:function(){u.removeEventListener("mousemove",W),u.removeEventListener("mouseout",X),u.removeEventListener("mouseover",Q),l.trigger(d.p),ce()&&z.settingsMenu.close(),ue()&&z.infoOverlay.close();var e=o.get("state");if(r&&(e===d.mb||e===d.kb||o.get("instream")&&e===d.ob)&&n.playToggle({reason:"interaction"}),r&&e===d.ob){if(o.get("instream")||o.get("castActive")||"audio"===o.get("mediaType"))return;Object(Ce.v)(u,"jw-flag-controls-hidden"),l.dismissible&&Object(Ce.v)(u,"jw-floating-dismissible",Object(Ce.i)(u,"jw-flag-controls-hidden")),v.renderCues(!0)}else z&&(z.showing?z.userInactive():z.userActive())},doubleClick:function(){return z&&n.setFullscreen()}}),u.addEventListener("mousemove",W),u.addEventListener("mouseover",Q),u.addEventListener("mouseout",X),T=a,_=new Ee.a(u).on("click",(function(){})),C=Me(u,document,te),t.on("change:hideAdsControls",(function(e,t){Object(Ce.v)(u,"jw-flag-ads-hide-controls",t)})),t.on("change:scrubbing",(function(e,t){Object(Ce.v)(u,"jw-flag-dragging",t)})),t.on("change:playRejected",(function(e,t){Object(Ce.v)(u,"jw-flag-play-rejected",t)})),t.on(d.X,ee),t.on("change:".concat(d.U),(function(){$(),v.resize()})),t.player.on("change:errorEvent",ae),t.change("stretching",Y);var s=t.get("width"),c=t.get("height"),f=G(s,c);Object(Oe.d)(u,f),t.change("aspectratio",K),I(s,c),t.get("controls")||(Object(Ce.a)(u,"jw-flag-controls-hidden"),Object(Ce.o)(u,"jw-floating-dismissible")),Je&&Object(Ce.a)(u,"jw-ie");var j=t.get("skin")||{};j.name&&Object(Ce.p)(u,/jw-skin-\S+/,"jw-skin-"+j.name);var y=function(e){e||(e={});var t=e.active,i=e.inactive,n=e.background,o={};return o.controlbar=function(e){if(e||t||i||n){var o={};return e=e||{},o.iconsActive=e.iconsActive||t,o.icons=e.icons||i,o.text=e.text||i,o.background=e.background||n,o}}(e.controlbar),o.timeslider=function(e){if(e||t){var i={};return e=e||{},i.progress=e.progress||t,i.rail=e.rail,i}}(e.timeslider),o.menus=function(e){if(e||t||i||n){var o={};return e=e||{},o.text=e.text||i,o.textActive=e.textActive||t,o.background=e.background||n,o}}(e.menus),o.tooltips=function(e){if(e||i||n){var t={};return e=e||{},t.text=e.text||i,t.background=e.background||n,t}}(e.tooltips),o}(j);!function(e,t){var i;function n(t,i,n,o){if(n){t=Object(w.f)(t,"#"+e+(o?"":" "));var a={};a[i]=n,Object(Oe.b)(t.join(", "),a,e)}}t&&(t.controlbar&&function(t){n([".jw-controlbar .jw-icon-inline.jw-text",".jw-title-primary",".jw-title-secondary"],"color",t.text),t.icons&&(n([".jw-button-color:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:not(.jw-icon-cast)"],"color",t.icons),n([".jw-display-icon-container .jw-button-color"],"color",t.icons),Object(Oe.b)("#".concat(e," .jw-icon-cast google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.icons,"}"),e));t.iconsActive&&(n([".jw-display-icon-container .jw-button-color:hover",".jw-display-icon-container .jw-button-color:focus"],"color",t.iconsActive),n([".jw-button-color.jw-toggle:not(.jw-icon-cast)",".jw-button-color:hover:not(.jw-icon-cast)",".jw-button-color:focus:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:hover:not(.jw-icon-cast)"],"color",t.iconsActive),n([".jw-svg-icon-buffer"],"fill",t.icons),Object(Oe.b)("#".concat(e," .jw-icon-cast:hover google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast:focus google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast google-cast-launcher.jw-off:focus"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast google-cast-launcher:focus"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast:hover google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast:focus google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e));n([" .jw-settings-topbar",":not(.jw-state-idle) .jw-controlbar",".jw-flag-audio-player .jw-controlbar"],"background",t.background,!0)}(t.controlbar),t.timeslider&&function(e){var t=e.progress;"none"!==t&&(n([".jw-progress",".jw-knob"],"background-color",t),n([".jw-buffer"],"background-color",Object(Oe.c)(t,50)));n([".jw-rail"],"background-color",e.rail),n([".jw-background-color.jw-slider-time",".jw-slider-time .jw-cue"],"background-color",e.background)}(t.timeslider),t.menus&&(n([".jw-option",".jw-toggle.jw-off",".jw-skip .jw-skip-icon",".jw-nextup-tooltip",".jw-nextup-close",".jw-settings-content-item",".jw-related-title"],"color",(i=t.menus).text),n([".jw-option.jw-active-option",".jw-option:not(.jw-active-option):hover",".jw-option:not(.jw-active-option):focus",".jw-settings-content-item:hover",".jw-nextup-tooltip:hover",".jw-nextup-tooltip:focus",".jw-nextup-close:hover"],"color",i.textActive),n([".jw-nextup",".jw-settings-menu"],"background",i.background)),t.tooltips&&function(e){n([".jw-skip",".jw-tooltip .jw-text",".jw-time-tip .jw-text"],"background-color",e.background),n([".jw-time-tip",".jw-tooltip"],"color",e.background),n([".jw-skip"],"border","none"),n([".jw-skip .jw-text",".jw-skip .jw-icon",".jw-time-tip .jw-text",".jw-tooltip .jw-text"],"color",e.text)}(t.tooltips),t.menus&&function(t){if(t.textActive){var i={color:t.textActive,borderColor:t.textActive,stroke:t.textActive};Object(Oe.b)("#".concat(e," .jw-color-active"),i,e),Object(Oe.b)("#".concat(e," .jw-color-active-hover:hover"),i,e)}if(t.text){var n={color:t.text,borderColor:t.text,stroke:t.text};Object(Oe.b)("#".concat(e," .jw-color-inactive"),n,e),Object(Oe.b)("#".concat(e," .jw-color-inactive-hover:hover"),n,e)}}(t.menus))}(t.get("id"),y),t.set("mediaContainer",h),t.set("iFrame",m.Features.iframe),t.set("activeTab",Object(ye.a)()),t.set("touchMode",Ke&&("string"==typeof c||c>=je)),be.a.add(this),t.get("enableGradient")&&!Je&&Object(Ce.a)(u,"jw-ab-drop-shadow"),this.isSetup=!0,t.trigger("viewSetup",u);var k=document.body.contains(u);k&&be.a.observe(u),t.set("inDom",k)},this.init=function(){this.updateBounds(),t.on("change:fullscreen",Z),t.on("change:activeTab",R),t.on("change:fullscreen",R),t.on("change:intersectionRatio",R),t.on("change:visibility",U),t.on("instreamMode",(function(e){e?de():pe()})),R(),1!==be.a.size()||t.get("visibility")||U(t,1,0);var e=t.player;t.change("state",re),e.change("controls",D),t.change("streamType",ne),t.change("mediaType",oe),e.change("playlistItem",(function(e,t){le(e,t)})),o=a=null,O&&m.OS.mobile&&be.a.addScrollHandler(F),this.checkResized()};var B,V=62,H=!0;function N(){var e=t.get("isFloating"),i=M.top0&&void 0!==arguments[0])||arguments[0],t={x:0,y:0,width:o||0,height:a||0};return z&&e&&(t.height-=z.controlbarHeight()),t},this.setCaptions=function(e){v.clear(),v.setup(t.get("id"),e),v.resize()},this.setIntersection=function(e){var i=Math.round(100*e.intersectionRatio)/100;t.set("intersectionRatio",i),O&&!A()&&(S=S||i>=.5)&&we(i)},this.stopFloating=function(e,i){if(e&&(O=null,be.a.removeScrollHandler(F)),Ze===u){Ze=null,t.set("isFloating",!1);var n=function(){Object(Ce.o)(u,"jw-flag-floating"),K(t,t.get("aspectratio")),Object(Oe.d)(u,{backgroundImage:null}),Object(Oe.d)(p,{maxWidth:null,width:null,height:null,left:null,right:null,top:null,bottom:null,margin:null,transform:null,transition:null,"transition-timing-function":null})};i?(Object(Oe.d)(p,{transform:"translateY(-".concat(V-M.top,"px)"),"transition-timing-function":"ease-out"}),setTimeout(n,150)):n(),j.disable(),P()}},this.destroy=function(){t.destroy(),be.a.unobserve(u),be.a.remove(this),this.isSetup=!1,this.off(),Object(ke.a)(k),clearTimeout(y),Ze===u&&(Ze=null),_&&(_.destroy(),_=null),C&&(C.destroy(),C=null),z&&z.disable(t),T&&(T.destroy(),u.removeEventListener("mousemove",W),u.removeEventListener("mouseout",X),u.removeEventListener("mouseover",Q),T=null),v.destroy(),i&&(i.destroy(),i=null),Object(Oe.a)(t.get("id")),this.resizeListener&&(this.resizeListener.destroy(),delete this.resizeListener),O&&m.OS.mobile&&be.a.removeScrollHandler(F)}};function $e(e,t,i){return($e="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,i){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=at(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(i):o.value}})(e,t,i||e)}function et(e){return(et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function tt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function it(e,t){for(var i=0;it&&e(),t=n}};function Mt(e,t){t.off(d.N,e._onPlayAttempt),t.off(d.fb,e._triggerFirstFrame),t.off(d.S,e._onTime),e.off("change:activeTab",e._onTabVisible)}var Et=function(e,t){e.change("mediaModel",(function(e,i,n){e._qoeItem&&n&&e._qoeItem.end(n.get("mediaState")),e._qoeItem=new Tt.a,e._qoeItem.getFirstFrame=function(){var e=this.between(d.N,d.H),t=this.between(_t,d.H);return t>0&&t0&&re(t,e.tracks)}),T).on(d.F,(function(){Promise.resolve().then(ae)}),T).on(d.G,T.triggerError,T),Et(C,B),C.on(d.w,T.triggerError,T),C.on("change:state",(function(e,t,i){Y()||K.call(O,e,t,i)}),this),C.on("change:castState",(function(e,t){T.trigger(d.m,t)})),C.on("change:fullscreen",(function(e,t){T.trigger(d.y,{fullscreen:t}),t&&e.set("playOnViewable",!1)})),C.on("change:volume",(function(e,t){T.trigger(d.V,{volume:t})})),C.on("change:mute",(function(e){T.trigger(d.M,{mute:e.getMute()})})),C.on("change:playbackRate",(function(e,t){T.trigger(d.ab,{playbackRate:t,position:e.get("position")})}));var V=function e(t,i){"clickthrough"!==i&&"interaction"!==i&&"external"!==i||(C.set("playOnViewable",!1),C.off("change:playReason change:pauseReason",e))};function H(e,t){Object(n.u)(t)||C.set("viewable",Math.round(t))}function N(){de&&(!0!==C.get("autostart")||C.get("playOnViewable")||$("autostart"),de.flush())}function F(e,t){T.trigger("viewable",{viewable:t}),D()}function D(){if((o.a[0]===t||1===C.get("viewable"))&&"idle"===C.get("state")&&!1===C.get("autostart"))if(!b.primed()&&m.OS.android){var e=b.getTestElement(),i=T.getMute();Promise.resolve().then((function(){return bt(e,{muted:i})})).then((function(){"idle"===C.get("state")&&B.preloadVideo()})).catch(Pt)}else B.preloadVideo()}function q(e){T._instreamAdapter.noResume=!e,e||te({reason:"viewable"})}function U(e){e||(T.pause({reason:"viewable"}),C.set("playOnViewable",!e))}function W(e,t){var i=Y();if(e.get("playOnViewable")){if(t){var n=e.get("autoPause").pauseAds,o=e.get("pauseReason");J()===d.mb?$("viewable"):i&&!n||"interaction"===o||Z({reason:"viewable"})}else m.OS.mobile&&!i&&(T.pause({reason:"autostart"}),C.set("playOnViewable",!0));m.OS.mobile&&i&&q(t)}}function Q(e,t){var i=e.get("state"),n=Y(),o=e.get("playReason");n?e.get("autoPause").pauseAds?U(t):q(t):i===d.pb||i===d.jb?U(t):i===d.mb&&"playlist"===o&&e.once("change:state",(function(){U(t)}))}function Y(){var e=T._instreamAdapter;return!!e&&e.getState()}function J(){var e=Y();return e||C.get("state")}function Z(e){if(E.cancel(),S=!1,C.get("state")===d.lb)return Promise.resolve();var i=G(e);return C.set("playReason",i),Y()?(t.pauseAd(!1,e),Promise.resolve()):(C.get("state")===d.kb&&(ee(!0),T.setItemIndex(0)),!_&&(_=!0,T.trigger(d.C,{playReason:i,startTime:e&&e.startTime?e.startTime:C.get("playlistItem").starttime}),_=!1,Ot()&&!b.primed()&&b.prime(),"playlist"===i&&C.get("autoPause").viewability&&Q(C,C.get("viewable")),x)?(Ot()&&!I&&C.get("mediaElement").load(),x=!1,k=null,Promise.resolve()):B.playVideo(i).then(b.played))}function G(e){return e&&e.reason?e.reason:"unknown"}function $(e){if(J()===d.mb){E=j(N);var t=C.get("advertising");(function(e,t){var i=t.cancelable,n=t.muted,o=void 0!==n&&n,a=t.allowMuted,r=void 0!==a&&a,s=t.timeout,l=void 0===s?1e4:s,c=e.getTestElement(),u=o?"muted":"".concat(r);kt[u]||(kt[u]=bt(c,{muted:o}).catch((function(e){if(!i.cancelled()&&!1===o&&r)return bt(c,{muted:o=!0});throw e})).then((function(){return o?(kt[u]=null,vt):mt})).catch((function(e){throw clearTimeout(d),kt[u]=null,e.reason=yt,e})));var d,p=kt[u].then((function(e){if(clearTimeout(d),i.cancelled()){var t=new Error("Autoplay test was cancelled");throw t.reason="cancelled",t}return e})),w=new Promise((function(e,t){d=setTimeout((function(){kt[u]=null;var e=new Error("Autoplay test timed out");e.reason="timeout",t(e)}),l)}));return Promise.race([p,w])})(b,{cancelable:E,muted:T.getMute(),allowMuted:!t||t.autoplayadsmuted}).then((function(t){return C.set("canAutoplay",t),t!==vt||T.getMute()||(C.set("autostartMuted",!0),ue(),C.once("change:autostartMuted",(function(e){e.off("change:viewable",W),T.trigger(d.M,{mute:C.getMute()})}))),T.getMute()&&C.get("enableDefaultCaptions")&&y.selectDefaultIndex(1),Z({reason:e}).catch((function(){T._instreamAdapter||C.set("autostartFailed",!0),k=null}))})).catch((function(e){if(C.set("canAutoplay",yt),C.set("autostart",!1),!E.cancelled()){var t=Object(g.w)(e);T.trigger(d.h,{reason:e.reason,code:t,error:e})}}))}}function ee(e){if(E.cancel(),de.empty(),Y()){var t=T._instreamAdapter;return t&&(t.noResume=!0),void(k=function(){return B.stopVideo()})}k=null,!e&&(S=!0),_&&(x=!0),C.set("errorEvent",void 0),B.stopVideo()}function te(e){var t=G(e);C.set("pauseReason",t),C.set("playOnViewable","viewable"===t)}function ie(e){k=null,E.cancel();var i=Y();if(i&&i!==d.ob)return te(e),void t.pauseAd(!0,e);switch(C.get("state")){case d.lb:return;case d.pb:case d.jb:te(e),B.pause();break;default:_&&(x=!0)}}function ne(e,t){ee(!0),T.setItemIndex(e),T.play(t)}function oe(e){ne(C.get("item")+1,e)}function ae(){T.completeCancelled()||(k=T.completeHandler,T.shouldAutoAdvance()?T.nextItem():C.get("repeat")?oe({reason:"repeat"}):(m.OS.iOS&&le(!1),C.set("playOnViewable",!1),C.set("state",d.kb),T.trigger(d.cb,{})))}function re(e,t){e=parseInt(e,10)||0,C.persistVideoSubtitleTrack(e,t),B.subtitles=e,T.trigger(d.k,{tracks:se(),track:e})}function se(){return y.getCaptionsList()}function le(e){Object(n.o)(e)||(e=!C.get("fullscreen")),C.set("fullscreen",e),T._instreamAdapter&&T._instreamAdapter._adModel&&T._instreamAdapter._adModel.set("fullscreen",e)}function ue(){B.mute=C.getMute(),B.volume=C.get("volume")}C.on("change:playReason change:pauseReason",V),T.on(d.c,(function(e){return V(0,e.playReason)})),T.on(d.b,(function(e){return V(0,e.pauseReason)})),C.on("change:scrubbing",(function(e,t){t?(M=C.get("state")!==d.ob,ie()):M&&Z({reason:"interaction"})})),C.on("change:captionsList",(function(e,t){T.trigger(d.l,{tracks:t,track:C.get("captionsIndex")||0})})),C.on("change:mediaModel",(function(e,t){var i=this;e.set("errorEvent",void 0),t.change("mediaState",(function(t,i){var n;e.get("errorEvent")||e.set(d.bb,(n=i)===d.nb||n===d.qb?d.jb:n)}),this),t.change("duration",(function(t,i){if(0!==i){var n=e.get("minDvrWindow"),o=Object(xt.b)(i,n);e.setStreamType(o)}}),this);var n=e.get("item")+1,o="autoplay"===(e.get("related")||{}).oncomplete,a=e.get("playlist")[n];if((a||o)&&I){t.on("change:position",(function e(n,r){var s=a&&!a.daiSetting,l=t.get("duration");s&&r&&l>0&&r>=l-p.b?(t.off("change:position",e,i),B.backgroundLoad(a)):o&&(a=C.get("nextUp"))}),this)}})),(y=new we(C)).on("all",L,T),R.on("viewSetup",(function(e){Object(a.b)(O,e)})),this.playerReady=function(){v.once(d.hb,(function(){try{!function(){C.change("visibility",H),A.off(),T.trigger(d.gb,{setupTime:0}),C.change("playlist",(function(e,t){if(t.length){var i={playlist:t},o=C.get("feedData");o&&(i.feedData=Object(n.h)({},o)),T.trigger(d.eb,i)}})),C.change("playlistItem",(function(e,t){if(t){var i=t.title,n=t.image;if("mediaSession"in navigator&&window.MediaMetadata&&(i||n))try{navigator.mediaSession.metadata=new window.MediaMetadata({title:i,artist:window.location.hostname,artwork:[{src:n||""}]})}catch(e){}e.set("cues",[]),T.trigger(d.db,{index:C.get("item"),item:t})}})),A.flush(),A.destroy(),A=null,C.change("viewable",F),C.change("viewable",W),C.get("autoPause").viewability?C.change("viewable",Q):C.once("change:autostartFailed change:mute",(function(e){e.off("change:viewable",W)}));N(),C.on("change:itemReady",(function(e,t){t&&de.flush()}))}()}catch(e){T.triggerError(Object(g.v)(g.m,g.a,e))}})),v.init()},this.preload=D,this.load=function(e,t){var i,n=T._instreamAdapter;switch(n&&(n.noResume=!0),T.trigger("destroyPlugin",{}),ee(!0),E.cancel(),E=j(N),z.cancel(),Ot()&&b.prime(),zt(e)){case"string":C.attributes.item=0,C.attributes.itemReady=!1,z=j((function(e){if(e)return T.updatePlaylist(Object(c.a)(e.playlist),e)})),i=function(e){var t=this;return new Promise((function(i,n){var o=new l.a;o.on(d.eb,(function(e){i(e)})),o.on(d.w,n,t),o.load(e)}))}(e).then(z.async);break;case"object":C.attributes.item=0,i=T.updatePlaylist(Object(c.a)(e),t||{});break;case"number":i=T.setItemIndex(e);break;default:return}i.catch((function(e){T.triggerError(Object(g.u)(e,g.c))})),i.then(E.async).catch(Pt)},this.play=function(e){return Z(e).catch(Pt)},this.pause=ie,this.seek=function(e,t){var i=C.get("state");if(i!==d.lb){B.position=e;var n=i===d.mb;C.get("scrubbing")||!n&&i!==d.kb||(n&&((t=t||{}).startTime=e),this.play(t))}},this.stop=ee,this.playlistItem=ne,this.playlistNext=oe,this.playlistPrev=function(e){ne(C.get("item")-1,e)},this.setCurrentCaptions=re,this.setCurrentQuality=function(e){B.quality=e},this.setFullscreen=le,this.getCurrentQuality=function(){return B.quality},this.getQualityLevels=function(){return B.qualities},this.setCurrentAudioTrack=function(e){B.audioTrack=e},this.getCurrentAudioTrack=function(){return B.audioTrack},this.getAudioTracks=function(){return B.audioTracks},this.getCurrentCaptions=function(){return y.getCurrentIndex()},this.getCaptionsList=se,this.getVisualQuality=function(){var e=this._model.get("mediaModel");return e?e.get(d.U):null},this.getConfig=function(){return this._model?this._model.getConfiguration():void 0},this.getState=J,this.next=Pt,this.completeHandler=ae,this.completeCancelled=function(){return(e=C.get("state"))!==d.mb&&e!==d.kb&&e!==d.lb||!!S&&(S=!1,!0);var e},this.shouldAutoAdvance=function(){return C.get("item")!==C.get("playlist").length-1},this.nextItem=function(){oe({reason:"playlist"})},this.setConfig=function(e){!function(e,t){var i=e._model,n=i.attributes;t.height&&(t.height=Object(r.b)(t.height),t.width=t.width||n.width),t.width&&(t.width=Object(r.b)(t.width),t.aspectratio?(n.width=t.width,delete t.width):t.height=n.height),t.width&&t.height&&!t.aspectratio&&e._view.resize(t.width,t.height),Object.keys(t).forEach((function(o){var a=t[o];if(void 0!==a)switch(o){case"aspectratio":i.set(o,Object(r.a)(a,n.width));break;case"autostart":!function(e,t,i){e.setAutoStart(i),"idle"===e.get("state")&&!0===i&&t.play({reason:"autostart"})}(i,e,a);break;case"mute":e.setMute(a);break;case"volume":e.setVolume(a);break;case"playbackRateControls":case"playbackRates":case"repeat":case"stretching":i.set(o,a)}}))}(T,e)},this.setItemIndex=function(e){B.stopVideo();var t=C.get("playlist").length;return(e=(parseInt(e,10)||0)%t)<0&&(e+=t),B.setActiveItem(e).catch((function(e){e.code>=151&&e.code<=162&&(e=Object(g.u)(e,g.e)),O.triggerError(Object(g.v)(g.k,g.d,e))}))},this.detachMedia=function(){if(_&&(x=!0),C.get("autoPause").viewability&&Q(C,C.get("viewable")),!I)return B.setAttached(!1);B.backgroundActiveMedia()},this.attachMedia=function(){I?B.restoreBackgroundMedia():B.setAttached(!0),"function"==typeof k&&k()},this.routeEvents=function(e){return B.routeEvents(e)},this.forwardEvents=function(){return B.forwardEvents()},this.playVideo=function(e){return B.playVideo(e)},this.stopVideo=function(){return B.stopVideo()},this.castVideo=function(e,t){return B.castVideo(e,t)},this.stopCast=function(){return B.stopCast()},this.backgroundActiveMedia=function(){return B.backgroundActiveMedia()},this.restoreBackgroundMedia=function(){return B.restoreBackgroundMedia()},this.preloadNextItem=function(){B.background.currentMedia&&B.preloadVideo()},this.isBeforeComplete=function(){return B.beforeComplete},this.setVolume=function(e){C.setVolume(e),ue()},this.setMute=function(e){C.setMute(e),ue()},this.setPlaybackRate=function(e){C.setPlaybackRate(e)},this.getProvider=function(){return C.get("provider")},this.getWidth=function(){return C.get("containerWidth")},this.getHeight=function(){return C.get("containerHeight")},this.getItemQoe=function(){return C._qoeItem},this.addButton=function(e,t,i,n,o){var a=C.get("customButtons")||[],r=!1,s={img:e,tooltip:t,callback:i,id:n,btnClass:o};a=a.reduce((function(e,t){return t.id===n?(r=!0,e.push(s)):e.push(t),e}),[]),r||a.unshift(s),C.set("customButtons",a)},this.removeButton=function(e){var t=C.get("customButtons")||[];t=t.filter((function(t){return t.id!==e})),C.set("customButtons",t)},this.resize=v.resize,this.getSafeRegion=v.getSafeRegion,this.setCaptions=v.setCaptions,this.checkBeforePlay=function(){return _},this.setControls=function(e){Object(n.o)(e)||(e=!C.get("controls")),C.set("controls",e),B.controls=e},this.addCues=function(e){this.setCues(C.get("cues").concat(e))},this.setCues=function(e){C.set("cues",e)},this.updatePlaylist=function(e,t){try{var i=Object(c.b)(e,C,t);Object(c.e)(i);var o=Object(n.h)({},t);delete o.playlist,C.set("feedData",o),C.set("playlist",i)}catch(e){return Promise.reject(e)}return this.setItemIndex(C.get("item"))},this.setPlaylistItem=function(e,t){(t=Object(c.d)(C,new u.a(t),t.feedData||{}))&&(C.get("playlist")[e]=t,e===C.get("item")&&"idle"===C.get("state")&&this.setItemIndex(e))},this.playerDestroy=function(){this.off(),this.stop(),Object(a.b)(this,this.originalContainer),v&&v.destroy(),C&&C.destroy(),de&&de.destroy(),y&&y.destroy(),B&&B.destroy(),this.instreamDestroy()},this.isBeforePlay=this.checkBeforePlay,this.createInstream=function(){return this.instreamDestroy(),this._instreamAdapter=new ce(this,C,v,b),this._instreamAdapter},this.instreamDestroy=function(){T._instreamAdapter&&(T._instreamAdapter.destroy(),T._instreamAdapter=null)};var de=new s.a(this,["play","pause","setCurrentAudioTrack","setCurrentCaptions","setCurrentQuality","setFullscreen"],(function(){return!O._model.get("itemReady")||A}));de.queue.push.apply(de.queue,h),v.setup()},get:function(e){if(e in y.a){var t=this._model.get("mediaModel");return t?t.get(e):y.a[e]}return this._model.get(e)},getContainer:function(){return this.currentContainer||this.originalContainer},getMute:function(){return this._model.getMute()},triggerError:function(e){var t=this._model;e.message=t.get("localization").errors[e.key],delete e.key,t.set("errorEvent",e),t.set("state",d.lb),t.once("change:state",(function(){this.set("errorEvent",void 0)}),t),this.trigger(d.w,e)}});t.default=At},,,,,,,,,,,,,function(e,t,i){"use strict";i.r(t);var n=i(0);var o=i(8),a=i(52),r=i(3),s=i(43),l={canplay:function(){this.trigger(r.E)},play:function(){this.stallTime=-1,this.video.paused||this.state===r.pb||this.setState(r.nb)},loadedmetadata:function(){var e={metadataType:"media",duration:this.getDuration(),height:this.video.videoHeight,width:this.video.videoWidth,seekRange:this.getSeekRange()},t=this.drmUsed;t&&(e.drm=t),this.trigger(r.K,e)},timeupdate:function(){var e=this.video.currentTime,t=this.getCurrentTime(),i=this.getDuration();if(!isNaN(i)){this.seeking||this.video.paused||this.state!==r.qb&&this.state!==r.nb||this.stallTime===e||(this.stallTime=-1,this.setState(r.pb),this.trigger(r.fb));var n={position:t,duration:i,currentTime:e,seekRange:this.getSeekRange(),metadata:{currentTime:e}};if(this.getPtsOffset){var o=this.getPtsOffset();o>=0&&(n.metadata.mpegts=o+t)}var a=this.getLiveLatency();null!==a&&(n.latency=a),(this.state===r.pb||this.seeking)&&this.trigger(r.S,n)}},click:function(e){this.trigger(r.n,e)},volumechange:function(){var e=this.video;this.trigger(r.V,{volume:Math.round(100*e.volume)}),this.trigger(r.M,{mute:e.muted})},seeked:function(){this.seeking&&(this.seeking=!1,this.trigger(r.R))},playing:function(){-1===this.stallTime&&this.setState(r.pb),this.trigger(r.fb)},pause:function(){this.state!==r.kb&&(this.video.ended||this.video.error||this.video.currentTime!==this.video.duration&&this.setState(r.ob))},progress:function(){var e=this.getDuration();if(!(e<=0||e===1/0)){var t=this.video.buffered;if(t&&0!==t.length){var i=Object(s.a)(t.end(t.length-1)/e,0,1);this.trigger(r.D,{bufferPercent:100*i,position:this.getCurrentTime(),duration:e,currentTime:this.video.currentTime,seekRange:this.getSeekRange()})}}},ratechange:function(){this.trigger(r.P,{playbackRate:this.video.playbackRate})},ended:function(){this.videoHeight=0,this.streamBitrate=-1,this.state!==r.mb&&this.state!==r.kb&&this.trigger(r.F)},loadeddata:function(){this.renderNatively&&this.setTextTracks(this.video.textTracks)}},c=i(10);function u(e){return e&&e.length?e.end(e.length-1):0}var d={container:null,volume:function(e){this.video.volume=Math.min(Math.max(0,e/100),1)},mute:function(e){this.video.muted=!!e,this.video.muted||this.video.removeAttribute("muted")},resize:function(e,t,i){var n=this.video,a=n.videoWidth,r=n.videoHeight;if(e&&t&&a&&r){var s={objectFit:"",width:"",height:""};if("uniform"===i){var l=e/t,u=a/r,d=Math.abs(l-u);d<.09&&d>.0025&&(s.objectFit="fill",i="exactfit")}if(o.Browser.ie||o.OS.iOS&&o.OS.version.major<9||o.Browser.androidNative)if("uniform"!==i){s.objectFit="contain";var p=e/t,w=a/r,f=1,h=1;"none"===i?f=h=p>w?Math.ceil(100*r/t)/100:Math.ceil(100*a/e)/100:"fill"===i?f=h=p>w?p/w:w/p:"exactfit"===i&&(p>w?(f=p/w,h=1):(f=1,h=w/p)),Object(c.e)(n,"matrix(".concat(f.toFixed(2),", 0, 0, ").concat(h.toFixed(2),", 0, 0)"))}else s.top=s.left=s.margin="",Object(c.e)(n,"");Object(c.d)(n,s)}},getContainer:function(){return this.container},setContainer:function(e){this.container=e,this.video.parentNode!==e&&e.appendChild(this.video)},remove:function(){this.stop(),this.destroy();var e=this.container;e&&e===this.video.parentNode&&e.removeChild(this.video)},atEdgeOfLiveStream:function(){if(!this.isLive())return!1;return u(this.video.buffered)-this.video.currentTime<=2}},p={eventsOn_:function(){},eventsOff_:function(){},attachMedia:function(){this.eventsOn_()},detachMedia:function(){return this.eventsOff_()}},w=i(62),f=i(5),h=i(53),j=i(7),g=i(63),b=i(60),m={TIT2:"title",TT2:"title",WXXX:"url",TPE1:"artist",TP1:"artist",TALB:"album",TAL:"album"};function v(e,t){for(var i,n,o,a=e.length,r="",s=t||0;s>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r+=String.fromCharCode(i);break;case 12:case 13:n=e[s++],r+=String.fromCharCode((31&i)<<6|63&n);break;case 14:n=e[s++],o=e[s++],r+=String.fromCharCode((15&i)<<12|(63&n)<<6|(63&o)<<0)}return r}function y(e){var t=function(e){for(var t="0x",i=0;i>1|(8323072&t)>>2|(2130706432&t)>>3}function k(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).reduce((function(e,t){if(!("value"in t)&&"data"in t&&t.data instanceof ArrayBuffer){var i=new Uint8Array(t.data),n=i.length;t={value:{key:"",data:""}};for(var o=10;o<14&&o0){var c=v(i.subarray(a,a+=s),0);if("PRIV"===t.value.key){if("com.apple.streaming.transportStreamTimestamp"===c){var u=1&y(i.subarray(a,a+=4)),d=y(i.subarray(a,a+=4))+(u?4294967296:0);t.value.data=d}else t.value.data=v(i,a+1);t.value.info=c}else t.value.info=c,t.value.data=v(i,a+1)}else{var p=i[a];t.value.data=1===p||2===p?function(e,t){for(var i=e.length-1,n="",o=t||0;o=0&&o[a].startTime>t.startTime;a--)i.unshift(o[a]),e.removeCue(o[a]);try{e.addCue(t),i.forEach((function(t){return e.addCue(t)}))}catch(e){console.error(e)}e.mode=n}(t,n)}else try{t.addCue(i)}catch(e){console.error(e)}}function S(e,t){t&&t.length&&Object(n.g)(t,(function(t){if(!(o.Browser.ie&&e&&/^(native|subtitle|cc)/.test(t._id))){o.Browser.ie&&"disabled"===t.mode||(t.mode="disabled",t.mode="hidden");for(var i=t.cues.length;i--;)t.removeCue(t.cues[i]);t.embedded||(t.mode="disabled"),t.inuse=!1}}))}function M(e){return"subtitles"===e||"captions"===e}function E(e){var t,i=Object(b.b)(e,this._unknownCount),o=i.label;if(this._unknownCount=i.unknownCount,this.renderNatively||"metadata"===e.kind){var a=this.video.textTracks;(t=Object(n.k)(a,{label:o}))||(t=this.video.addTextTrack(e.kind,o,e.language||"")),t.default=e.default,t.mode="disabled",t.inuse=!0}else(t=e).data=t.data||[];return t._id||(t._id=Object(b.a)(e,this._textTracks.length)),t}function z(e){this._textTracks.push(e),this._tracksById[e._id]=e}function A(){if(this._textTracks){var e=this._textTracks.filter((function(e){return e.embedded||"subs"===e.groupid}));this._initTextTracks(),e.forEach((function(e){this._tracksById[e._id]=e})),this._textTracks=e}}function P(e){this.triggerActiveCues(e.currentTarget.activeCues)}function L(e,t,i){var n=e.kind;this._cachedVTTCues[e._id]||(this._cachedVTTCues[e._id]={});var o,a=this._cachedVTTCues[e._id];switch(n){case"captions":case"subtitles":o=i||Math.floor(20*t.startTime);var r="_"+t.line,s=Math.floor(20*t.endTime),l=a[o+r]||a[o+1+r]||a[o-1+r];return!(l&&Math.abs(l-s)<=1)&&(a[o+r]=s,!0);case"metadata":var c=t.data?new Uint8Array(t.data).join(""):t.text;return!a[o=i||t.startTime+c]&&(a[o]=t.endTime,!0);default:return!1}}function I(e){if(e.length>this._textTracks.length)return!0;for(var t=0;t=0&&(h.retries=0),h.currentTime=v.currentTime,S&&C!==v.currentTime&&$(v.currentTime),l.timeupdate.call(h),fe(),o.Browser.ie&&G()},resize:G,ended:function(){_=-1,he(),l.ended.call(h)},loadedmetadata:function(){var e=h.getDuration();I&&e===1/0&&(e=0);var t={metadataType:"media",duration:e,height:v.videoHeight,width:v.videoWidth,seekRange:h.getSeekRange()};h.trigger(r.K,t),G()},durationchange:function(){I||l.progress.call(h)},loadeddata:function(){var e;!function(){if(v.getStartDate){var e=v.getStartDate(),t=e.getTime?e.getTime():NaN;if(t!==h.startDateTime&&!isNaN(t)){h.startDateTime=t;var i=e.toISOString(),n=h.getSeekRange(),o=n.start,a=n.end,s={metadataType:"program-date-time",programDateTime:i,start:o,end:a},l=h.createCue(o,a,JSON.stringify(s));h.addVTTCue({type:"metadata",cue:l}),delete s.metadataType,h.trigger(r.L,{metadataType:"program-date-time",metadata:s})}}}(),l.loadeddata.call(h),function(e){if(E=null,!e)return;if(e.length){for(var t=0;t0&&(t=e.map((function(e,t){return{label:e.label||t}}))),t}function ie(e){h.currentTime=-1,g=e.minDvrWindow,m=e.sources,_=function(e){var i=Math.max(0,_),n=t.qualityLabel;if(e)for(var o=0;o0&&(O=-1,h.seek(e)),e>0&&v.currentTime!==e&&h.seek(e);var n=te(m);n&&h.trigger(r.I,{levels:n,currentQuality:_}),m.length&&"hls"!==m[0].type&&we()}function ae(e){E=null,z=-1,y.reason||(y.reason="initial choice",y.level={}),x=!1;var t=document.createElement("source");t.src=e.file,v.src!==t.src&&(v.src=e.file)}function re(){v&&(h.disableTextTrack(),v.removeAttribute("preload"),v.removeAttribute("src"),Object(f.h)(v),Object(c.d)(v,{objectFit:""}),_=-1,!o.Browser.msie&&"load"in v&&v.load())}function se(){var e=1/0;return["buffered","seekable"].forEach((function(t){for(var i=v[t],o=i?i.length:0;o--;){var a=Math.min(e,i.start(o));Object(n.p)(a)&&(e=a)}})),e}function le(){var e=0;return["buffered","seekable"].forEach((function(t){for(var i=v[t],o=i?i.length:0;o--;){var a=Math.max(e,i.end(o));Object(n.p)(a)&&(e=a)}})),e}function ce(){for(var e=-1,t=0;t-1&&e1)&&function(e){Y=e.end,J=Math.min(0,v.currentTime-Y),Z=Object(V.a)()}(t),Object(w.a)(t.end-t.start,g))return J}return e}(v.currentTime)},h.getDuration=function(){var e=v.duration;if(I&&e===1/0&&0===v.currentTime||isNaN(e))return 0;var t=le();if(h.isLive()&&t){var i=t-se();Object(w.a)(i,g)&&(e=-i)}return e},h.getSeekRange=function(){var e={start:0,end:v.duration};return v.seekable.length&&(e.end=le(),e.start=se()),e},h.getLiveLatency=function(){var e=null,t=le();return h.isLive()&&t&&(e=t+(Object(V.a)()-Z)/1e3-v.currentTime),e},this.stop=function(){he(),re(),this.clearTracks(),o.Browser.ie&&v.pause(),this.setState(r.mb)},this.destroy=function(){M=Q,X(b,v),this.removeTracksListener(v.audioTracks,"change",ce),this.removeTracksListener(v.textTracks,"change",h.textTrackChangeHandler),this.off()},this.init=function(e){h.retries=0,h.maxRetries=e.adType?0:3,ie(e);var t=m[_];(I=Object(a.a)(t))&&(h.supportsPlaybackRate=!1,b.waiting=Q),h.eventsOn_(),m.length&&"hls"!==m[0].type&&this.sendMediaType(m),y.reason=""},this.preload=function(e){ie(e);var t=m[_],i=t.preload||"metadata";"none"!==i&&(v.setAttribute("preload",i),ae(t))},this.load=function(e){ie(e),oe(e.starttime),this.setupSideloadedTracks(e.tracks)},this.play=function(){return M(),ne()},this.pause=function(){he(),M=function(){if(v.paused&&v.currentTime&&h.isLive()){var e=le(),t=e-se(),i=!Object(w.a)(t,g),o=e-v.currentTime;if(i&&e&&(o>15||o<0)){if(T=Math.max(e-10,e-t),!Object(n.p)(T))return;$(v.currentTime),v.currentTime=T}}},v.pause()},this.seek=function(e){var t=h.getSeekRange(),i=e;if(e<0&&(i+=t.end),x||(x=!!le()),x){O=0;try{if(h.seeking=!0,h.isLive()&&Object(w.a)(t.end-t.start,g))if(J=Math.min(0,i-Y),e<0)i+=Math.min(12,(Object(V.a)()-Z)/1e3);T=i,$(v.currentTime),v.currentTime=i}catch(e){h.seeking=!1,O=i}}else O=i,o.Browser.firefox&&v.paused&&ne()},this.setVisibility=function(e){(e=!!e)||o.OS.android?Object(c.d)(h.container,{visibility:"visible",opacity:1}):Object(c.d)(h.container,{visibility:"",opacity:0})},this.setFullscreen=function(e){if(e=!!e){try{var t=v.webkitEnterFullscreen||v.webkitEnterFullScreen;t&&t.apply(v)}catch(e){return!1}return h.getFullScreen()}var i=v.webkitExitFullscreen||v.webkitExitFullScreen;return i&&i.apply(v),e},h.getFullScreen=function(){return S||!!v.webkitDisplayingFullscreen},this.setCurrentQuality=function(e){_!==e&&e>=0&&m&&m.length>e&&(_=e,y.reason="api",y.level={},this.trigger(r.J,{currentQuality:e,levels:te(m)}),t.qualityLabel=m[e].label,oe(v.currentTime||0),ne())},this.setPlaybackRate=function(e){v.playbackRate=v.defaultPlaybackRate=e},this.getPlaybackRate=function(){return v.playbackRate},this.getCurrentQuality=function(){return _},this.getQualityLevels=function(){return Array.isArray(m)?m.map((function(e){return function(e){return{bitrate:e.bitrate,label:e.label,width:e.width,height:e.height}}(e)})):[]},this.getName=function(){return{name:W}},this.setCurrentAudioTrack=de,this.getAudioTracks=function(){return E||[]},this.getCurrentAudioTrack=function(){return z}}Object(n.h)(Y.prototype,h.a),Y.getName=function(){return{name:"html5"}};t.default=Y;var K=220001},,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,i){"use strict";i.d(t,"a",(function(){return o}));var n=i(2);function o(e){var t=[],i=(e=Object(n.i)(e)).split("\r\n\r\n");1===i.length&&(i=e.split("\n\n"));for(var o=0;o0&&(o=0),i.length>o+1&&i[o+1]){var a=i[o],r=a.indexOf(" --\x3e ");r>0&&(t.begin=Object(n.g)(a.substr(0,r)),t.end=Object(n.g)(a.substr(r+5)),t.text=i.slice(o+1).join("\r\n"))}return t}},function(e,t,i){"use strict";i.d(t,"a",(function(){return o})),i.d(t,"b",(function(){return a}));var n=i(5);function o(e){var t=-1;return e>=1280?t=7:e>=960?t=6:e>=800?t=5:e>=640?t=4:e>=540?t=3:e>=420?t=2:e>=320?t=1:e>=250&&(t=0),t}function a(e,t){var i="jw-breakpoint-"+t;Object(n.p)(e,/jw-breakpoint--?\d+/,i)}},function(e,t,i){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=function(e,t){var i=e[1]||"",n=e[3];if(!n)return i;if(t&&"function"==typeof btoa){var o=(r=n,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),a=n.sources.map((function(e){return"/*# sourceURL="+n.sourceRoot+e+" */"}));return[i].concat(a).concat([o]).join("\n")}var r;return[i].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+i+"}":i})).join("")},t.i=function(e,i){"string"==typeof e&&(e=[[null,e,""]]);for(var n={},o=0;o1&&(i+=" ["+t+"]")),{label:i,unknownCount:t}}i.d(t,"a",(function(){return n})),i.d(t,"b",(function(){return o}))},function(e,t,i){"use strict";function n(e){return new Promise((function(t,i){if(e.paused)return i(o("NotAllowedError",0,"play() failed."));var n=function(){e.removeEventListener("play",a),e.removeEventListener("playing",r),e.removeEventListener("pause",r),e.removeEventListener("abort",r),e.removeEventListener("error",r)},a=function(){e.addEventListener("playing",r),e.addEventListener("abort",r),e.addEventListener("error",r),e.addEventListener("pause",r)},r=function(e){if(n(),"playing"===e.type)t();else{var a='The play() request was interrupted by a "'.concat(e.type,'" event.');"error"===e.type?i(o("NotSupportedError",9,a)):i(o("AbortError",20,a))}};e.addEventListener("play",a)}))}function o(e,t,i){var n=new Error(i);return n.name=e,n.code=t,n}i.d(t,"a",(function(){return n}))},function(e,t,i){"use strict";function n(e,t){return e!==1/0&&Math.abs(e)>=Math.max(a(t),0)}function o(e,t){var i="VOD";return e===1/0?i="LIVE":e<0&&(i=n(e,a(t))?"DVR":"LIVE"),i}function a(e){return void 0===e?120:Math.max(e,0)}i.d(t,"a",(function(){return n})),i.d(t,"b",(function(){return o}))},function(e,t,i){"use strict";var n=i(64),o=i(16),a=i(22),r=i(4),s=i(57),l=i(2),c=i(1);function u(e){throw new c.n(null,e)}function d(e,t,n){e.xhr=Object(a.a)(e.file,(function(a){!function(e,t,n,a){var d,p,f=e.responseXML?e.responseXML.firstChild:null;if(f)for("xml"===Object(r.b)(f)&&(f=f.nextSibling);f.nodeType===f.COMMENT_NODE;)f=f.nextSibling;try{if(f&&"tt"===Object(r.b)(f))d=function(e){e||u(306007);var t=[],i=e.getElementsByTagName("p"),n=30,o=e.getElementsByTagName("tt");if(o&&o[0]){var a=parseFloat(o[0].getAttribute("ttp:frameRate"));isNaN(a)||(n=a)}i||u(306005),i.length||(i=e.getElementsByTagName("tt:p")).length||(i=e.getElementsByTagName("tts:p"));for(var r=0;r\s+<").replace(/(<\/?)tts?:/g,"$1").replace(//g,"\r\n");if(f){var h=s.getAttribute("begin"),j=s.getAttribute("dur"),g=s.getAttribute("end"),b={begin:Object(l.g)(h,n),text:f};g?b.end=Object(l.g)(g,n):j&&(b.end=b.begin+Object(l.g)(j,n)),t.push(b)}}return t.length||u(306005),t}(e.responseXML),p=w(d),delete t.xhr,n(p);else{var h=e.responseText;h.indexOf("WEBVTT")>=0?i.e(10).then(function(e){return i(92).default}.bind(null,i)).catch(Object(o.c)(301131)).then((function(e){var i=new e(window);p=[],i.oncue=function(e){p.push(e)},i.onflush=function(){delete t.xhr,n(p)},i.parse(h)})).catch((function(e){delete t.xhr,a(Object(c.v)(null,c.b,e))})):(d=Object(s.a)(h),p=w(d),delete t.xhr,n(p))}}catch(e){delete t.xhr,a(Object(c.v)(null,c.b,e))}}(a,e,t,n)}),(function(e,t,i,o){n(Object(c.u)(o,c.b))}))}function p(e){e&&e.forEach((function(e){var t=e.xhr;t&&(t.onload=null,t.onreadystatechange=null,t.onerror=null,"abort"in t&&t.abort()),delete e.xhr}))}function w(e){return e.map((function(e){return new n.a(e.begin,e.end,e.text)}))}i.d(t,"c",(function(){return d})),i.d(t,"a",(function(){return p})),i.d(t,"b",(function(){return w}))},function(e,t,i){"use strict";var n=window.VTTCue;function o(e){if("string"!=typeof e)return!1;return!!{start:!0,middle:!0,end:!0,left:!0,right:!0}[e.toLowerCase()]&&e.toLowerCase()}if(!n){(n=function(e,t,i){var n=this;n.hasBeenReset=!1;var a="",r=!1,s=e,l=t,c=i,u=null,d="",p=!0,w="auto",f="start",h="auto",j=100,g="middle";Object.defineProperty(n,"id",{enumerable:!0,get:function(){return a},set:function(e){a=""+e}}),Object.defineProperty(n,"pauseOnExit",{enumerable:!0,get:function(){return r},set:function(e){r=!!e}}),Object.defineProperty(n,"startTime",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e)throw new TypeError("Start time must be set to a number.");s=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"endTime",{enumerable:!0,get:function(){return l},set:function(e){if("number"!=typeof e)throw new TypeError("End time must be set to a number.");l=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"text",{enumerable:!0,get:function(){return c},set:function(e){c=""+e,this.hasBeenReset=!0}}),Object.defineProperty(n,"region",{enumerable:!0,get:function(){return u},set:function(e){u=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"vertical",{enumerable:!0,get:function(){return d},set:function(e){var t=function(e){return"string"==typeof e&&(!!{"":!0,lr:!0,rl:!0}[e.toLowerCase()]&&e.toLowerCase())}(e);if(!1===t)throw new SyntaxError("An invalid or illegal string was specified.");d=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"snapToLines",{enumerable:!0,get:function(){return p},set:function(e){p=!!e,this.hasBeenReset=!0}}),Object.defineProperty(n,"line",{enumerable:!0,get:function(){return w},set:function(e){if("number"!=typeof e&&"auto"!==e)throw new SyntaxError("An invalid number or illegal string was specified.");w=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"lineAlign",{enumerable:!0,get:function(){return f},set:function(e){var t=o(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");f=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"position",{enumerable:!0,get:function(){return h},set:function(e){if(e<0||e>100)throw new Error("Position must be between 0 and 100.");h=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"size",{enumerable:!0,get:function(){return j},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");j=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"align",{enumerable:!0,get:function(){return g},set:function(e){var t=o(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");g=t,this.hasBeenReset=!0}}),n.displayState=void 0}).prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)}}t.a=n},function(e,t,i){var n=i(66);"string"==typeof n&&(n=[["all-players",n,""]]),i(35).style(n,"all-players"),n.locals&&(e.exports=n.locals)},function(e,t,i){(e.exports=i(59)(!1)).push([e.i,'.jw-reset{text-align:left;direction:ltr}.jw-reset-text,.jw-reset{color:inherit;background-color:transparent;padding:0;margin:0;float:none;font-family:Arial,Helvetica,sans-serif;font-size:1em;line-height:1em;list-style:none;text-transform:none;vertical-align:baseline;border:0;font-variant:inherit;font-stretch:inherit;-webkit-tap-highlight-color:rgba(255,255,255,0)}body .jw-error,body .jwplayer.jw-state-error{height:100%;width:100%}.jw-title{position:absolute;top:0}.jw-background-color{background:rgba(0,0,0,0.4)}.jw-text{color:rgba(255,255,255,0.8)}.jw-knob{color:rgba(255,255,255,0.8);background-color:#fff}.jw-button-color{color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):focus,:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):hover{color:#fff}.jw-toggle{color:#fff}.jw-toggle.jw-off{color:rgba(255,255,255,0.8)}.jw-toggle.jw-off:focus{color:#fff}.jw-toggle:focus{outline:none}:not(.jw-flag-touch) .jw-toggle.jw-off:hover{color:#fff}.jw-rail{background:rgba(255,255,255,0.3)}.jw-buffer{background:rgba(255,255,255,0.3)}.jw-progress{background:#f2f2f2}.jw-time-tip,.jw-volume-tip{border:0}.jw-slider-volume.jw-volume-tip.jw-background-color.jw-slider-vertical{background:none}.jw-skip{padding:.5em;outline:none}.jw-skip .jw-skiptext,.jw-skip .jw-skip-icon{color:rgba(255,255,255,0.8)}.jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skip.jw-skippable:focus .jw-skip-icon{color:#fff}.jw-icon-cast google-cast-launcher{--connected-color:#fff;--disconnected-color:rgba(255,255,255,0.8)}.jw-icon-cast google-cast-launcher:focus{outline:none}.jw-icon-cast google-cast-launcher.jw-off{--connected-color:rgba(255,255,255,0.8)}.jw-icon-cast:focus google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-icon-cast:hover google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-nextup-container{bottom:2.5em;padding:5px .5em}.jw-nextup{border-radius:0}.jw-color-active{color:#fff;stroke:#fff;border-color:#fff}:not(.jw-flag-touch) .jw-color-active-hover:hover,:not(.jw-flag-touch) .jw-color-active-hover:focus{color:#fff;stroke:#fff;border-color:#fff}.jw-color-inactive{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-color-inactive-hover:hover{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}.jw-option{color:rgba(255,255,255,0.8)}.jw-option.jw-active-option{color:#fff;background-color:rgba(255,255,255,0.1)}:not(.jw-flag-touch) .jw-option:hover{color:#fff}.jwplayer{width:100%;font-size:16px;position:relative;display:block;min-height:0;overflow:hidden;box-sizing:border-box;font-family:Arial,Helvetica,sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.jwplayer *{box-sizing:inherit}.jwplayer.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jwplayer.jw-flag-aspect-mode{height:auto !important}.jwplayer.jw-flag-aspect-mode .jw-aspect{display:block}.jwplayer .jw-aspect{display:none}.jwplayer .jw-swf{outline:none}.jw-media,.jw-preview{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}.jw-media{overflow:hidden;cursor:pointer}.jw-plugin{position:absolute;bottom:66px}.jw-breakpoint-7 .jw-plugin{bottom:132px}.jw-plugin .jw-banner{max-width:100%;opacity:0;cursor:pointer;position:absolute;margin:auto auto 0;left:0;right:0;bottom:0;display:block}.jw-preview,.jw-captions,.jw-title{pointer-events:none}.jw-media,.jw-logo{pointer-events:all}.jw-wrapper{background-color:#000;position:absolute;top:0;left:0;right:0;bottom:0}.jw-hidden-accessibility{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.jw-contract-trigger::before{content:"";overflow:hidden;width:200%;height:200%;display:block;position:absolute;top:0;left:0}.jwplayer .jw-media video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:auto;background:transparent}.jwplayer .jw-media video::-webkit-media-controls-start-playback-button{display:none}.jwplayer.jw-stretch-uniform .jw-media video{object-fit:contain}.jwplayer.jw-stretch-none .jw-media video{object-fit:none}.jwplayer.jw-stretch-fill .jw-media video{object-fit:cover}.jwplayer.jw-stretch-exactfit .jw-media video{object-fit:fill}.jw-preview{position:absolute;display:none;opacity:1;visibility:visible;width:100%;height:100%;background:#000 no-repeat 50% 50%}.jwplayer .jw-preview,.jw-error .jw-preview{background-size:contain}.jw-stretch-none .jw-preview{background-size:auto auto}.jw-stretch-fill .jw-preview{background-size:cover}.jw-stretch-exactfit .jw-preview{background-size:100% 100%}.jw-title{display:none;padding-top:20px;width:100%;z-index:1}.jw-title-primary,.jw-title-secondary{color:#fff;padding-left:20px;padding-right:20px;padding-bottom:.5em;overflow:hidden;text-overflow:ellipsis;direction:unset;white-space:nowrap;width:100%}.jw-title-primary{font-size:1.625em}.jw-breakpoint-2 .jw-title-primary,.jw-breakpoint-3 .jw-title-primary{font-size:1.5em}.jw-flag-small-player .jw-title-primary{font-size:1.25em}.jw-flag-small-player .jw-title-secondary,.jw-title-secondary:empty{display:none}.jw-captions{position:absolute;width:100%;height:100%;text-align:center;display:none;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-decoration:none;pointer-events:none;overflow:hidden;top:0}.jw-captions.jw-captions-enabled{display:block}.jw-captions-window{display:none;padding:.25em;border-radius:.25em}.jw-captions-window.jw-captions-window-active{display:inline-block}.jw-captions-text{display:inline-block;color:#fff;background-color:#000;word-wrap:normal;word-break:normal;white-space:pre-line;font-style:normal;font-weight:normal;text-align:center;text-decoration:none}.jw-text-track-display{font-size:inherit;line-height:1.5}.jw-text-track-cue{background-color:rgba(0,0,0,0.5);color:#fff;padding:.1em .3em}.jwplayer video::-webkit-media-controls{display:none;justify-content:flex-start}.jwplayer video::-webkit-media-text-track-display{min-width:-webkit-min-content}.jwplayer video::cue{background-color:rgba(0,0,0,0.5)}.jwplayer video::-webkit-media-controls-panel-container{display:none}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing) .jw-captions,.jwplayer.jw-flag-media-audio.jw-state-playing .jw-captions,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden) .jw-captions{max-height:calc(100% - 60px)}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-flag-media-audio.jw-state-playing:not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container{max-height:calc(100% - 60px)}.jw-logo{position:absolute;margin:20px;cursor:pointer;pointer-events:all;background-repeat:no-repeat;background-size:contain;top:auto;right:auto;left:auto;bottom:auto;outline:none}.jw-logo.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-flag-audio-player .jw-logo{display:none}.jw-logo-top-right{top:0;right:0}.jw-logo-top-left{top:0;left:0}.jw-logo-bottom-left{left:0}.jw-logo-bottom-right{right:0}.jw-logo-bottom-left,.jw-logo-bottom-right{bottom:44px;transition:bottom 150ms cubic-bezier(0, .25, .25, 1)}.jw-state-idle .jw-logo{z-index:1}.jw-state-setup .jw-wrapper{background-color:inherit}.jw-state-setup .jw-logo,.jw-state-setup .jw-controls,.jw-state-setup .jw-controls-backdrop{visibility:hidden}span.jw-break{display:block}body .jw-error,body .jwplayer.jw-state-error{background-color:#333;color:#fff;font-size:16px;display:table;opacity:1;position:relative}body .jw-error .jw-display,body .jwplayer.jw-state-error .jw-display{display:none}body .jw-error .jw-media,body .jwplayer.jw-state-error .jw-media{cursor:default}body .jw-error .jw-preview,body .jwplayer.jw-state-error .jw-preview{background-color:#333}body .jw-error .jw-error-msg,body .jwplayer.jw-state-error .jw-error-msg{background-color:#000;border-radius:2px;display:flex;flex-direction:row;align-items:stretch;padding:20px}body .jw-error .jw-error-msg .jw-icon,body .jwplayer.jw-state-error .jw-error-msg .jw-icon{height:30px;width:30px;margin-right:20px;flex:0 0 auto;align-self:center}body .jw-error .jw-error-msg .jw-icon:empty,body .jwplayer.jw-state-error .jw-error-msg .jw-icon:empty{display:none}body .jw-error .jw-error-msg .jw-info-container,body .jwplayer.jw-state-error .jw-error-msg .jw-info-container{margin:0;padding:0}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg{flex-direction:column}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text{text-align:center}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon{flex:.5 0 auto;margin-right:0;margin-bottom:20px}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break{display:inline}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break:before{content:" "}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg{height:100%;width:100%;top:0;position:absolute;left:0;background:#000;-webkit-transform:none;transform:none;padding:4px 16px;z-index:1}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg.jw-info-overlay{max-width:none;max-height:none}body .jwplayer.jw-state-error .jw-title,.jw-state-idle .jw-title,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-title{display:block}body .jwplayer.jw-state-error .jw-preview,.jw-state-idle .jw-preview,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-preview{display:block}.jw-state-idle .jw-captions,.jwplayer.jw-state-complete .jw-captions,body .jwplayer.jw-state-error .jw-captions{display:none}.jw-state-idle video::-webkit-media-text-track-container,.jwplayer.jw-state-complete video::-webkit-media-text-track-container,body .jwplayer.jw-state-error video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-fullscreen{width:100% !important;height:100% !important;top:0;right:0;bottom:0;left:0;z-index:1000;margin:0;position:fixed}body .jwplayer.jw-flag-flash-blocked .jw-title{display:block}.jwplayer.jw-flag-controls-hidden .jw-media{cursor:default}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:45px}.jw-flag-floating{background-size:cover;background-color:#000}.jw-flag-floating .jw-wrapper{position:fixed;z-index:2147483647;-webkit-animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;top:auto;bottom:1rem;left:auto;right:1rem;max-width:400px;max-height:400px;margin:0 auto}@media screen and (max-width:480px){.jw-flag-floating .jw-wrapper{width:100%;left:0;right:0}}.jw-flag-floating .jw-wrapper .jw-media{touch-action:none}@media screen and (max-device-width:480px) and (orientation:portrait){.jw-flag-touch.jw-flag-floating .jw-wrapper{-webkit-animation:none;animation:none;top:62px;bottom:auto;left:0;right:0;max-width:none;max-height:none}}.jw-flag-floating .jw-float-icon{pointer-events:all;cursor:pointer;display:none}.jw-flag-floating .jw-float-icon .jw-svg-icon{-webkit-filter:drop-shadow(0 0 1px #000);filter:drop-shadow(0 0 1px #000)}.jw-flag-floating.jw-floating-dismissible .jw-dismiss-icon{display:none}.jw-flag-floating.jw-floating-dismissible.jw-flag-ads .jw-float-icon{display:flex}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-logo,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-logo{display:none}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-float-icon,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-float-icon{display:flex}.jw-float-icon{display:none;position:absolute;top:3px;right:5px;align-items:center;justify-content:center}@-webkit-keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.jw-flag-top{margin-top:2em;overflow:visible}.jw-top{height:2em;line-height:2;pointer-events:none;text-align:center;opacity:.8;position:absolute;top:-2em;width:100%}.jw-top .jw-icon{cursor:pointer;pointer-events:all;height:auto;width:auto}.jw-top .jw-text{color:#555}',""])},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t,i){var n=i(91);"string"==typeof n&&(n=[["all-players",n,""]]),i(35).style(n,"all-players"),n.locals&&(e.exports=n.locals)},function(e,t,i){(e.exports=i(59)(!1)).push([e.i,'.jw-overlays,.jw-controls,.jw-controls-backdrop,.jw-flag-small-player .jw-settings-menu,.jw-settings-submenu{height:100%;width:100%}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-settings-menu .jw-icon.jw-button-color::after{position:absolute;right:0}.jw-overlays,.jw-controls,.jw-controls-backdrop,.jw-settings-item-active::before{top:0;position:absolute;left:0}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-settings-menu .jw-icon.jw-button-color::after{position:absolute;bottom:0;left:0}.jw-nextup-close{position:absolute;top:0;right:0}.jw-overlays,.jw-controls,.jw-flag-small-player .jw-settings-menu{position:absolute;bottom:0;right:0}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-time-tip::after,.jw-settings-menu .jw-icon.jw-button-color::after,.jw-text-live::before,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{content:"";display:block}.jw-svg-icon{height:24px;width:24px;fill:currentColor;pointer-events:none}.jw-icon{height:44px;width:44px;background-color:transparent;outline:none}.jw-icon.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-icon-airplay .jw-svg-icon-airplay-off{display:none}.jw-off.jw-icon-airplay .jw-svg-icon-airplay-off{display:block}.jw-icon-airplay .jw-svg-icon-airplay-on{display:block}.jw-off.jw-icon-airplay .jw-svg-icon-airplay-on{display:none}.jw-icon-cc .jw-svg-icon-cc-off{display:none}.jw-off.jw-icon-cc .jw-svg-icon-cc-off{display:block}.jw-icon-cc .jw-svg-icon-cc-on{display:block}.jw-off.jw-icon-cc .jw-svg-icon-cc-on{display:none}.jw-icon-fullscreen .jw-svg-icon-fullscreen-off{display:none}.jw-off.jw-icon-fullscreen .jw-svg-icon-fullscreen-off{display:block}.jw-icon-fullscreen .jw-svg-icon-fullscreen-on{display:block}.jw-off.jw-icon-fullscreen .jw-svg-icon-fullscreen-on{display:none}.jw-icon-volume .jw-svg-icon-volume-0{display:none}.jw-off.jw-icon-volume .jw-svg-icon-volume-0{display:block}.jw-icon-volume .jw-svg-icon-volume-100{display:none}.jw-full.jw-icon-volume .jw-svg-icon-volume-100{display:block}.jw-icon-volume .jw-svg-icon-volume-50{display:block}.jw-off.jw-icon-volume .jw-svg-icon-volume-50,.jw-full.jw-icon-volume .jw-svg-icon-volume-50{display:none}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon[aria-checked="true"]::after,.jw-settings-open .jw-icon-settings::after,.jw-icon-volume.jw-open::after{opacity:1}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-cc,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-settings,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-audio-tracks,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-hd,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-settings-sharing,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-fullscreen,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player).jw-flag-cast-available .jw-icon-airplay,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player).jw-flag-cast-available .jw-icon-cast{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-volume,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-text-live{bottom:6px}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-volume::after{display:none}.jw-overlays,.jw-controls{pointer-events:none}.jw-controls-backdrop{display:block;background:linear-gradient(to bottom, transparent, rgba(0,0,0,0.4) 77%, rgba(0,0,0,0.4) 100%) 100% 100% / 100% 240px no-repeat transparent;transition:opacity 250ms cubic-bezier(0, .25, .25, 1),background-size 250ms cubic-bezier(0, .25, .25, 1);pointer-events:none}.jw-overlays{cursor:auto}.jw-controls{overflow:hidden}.jw-flag-small-player .jw-controls{text-align:center}.jw-text{height:1em;font-family:Arial,Helvetica,sans-serif;font-size:.75em;font-style:normal;font-weight:normal;color:#fff;text-align:center;font-variant:normal;font-stretch:normal}.jw-controlbar,.jw-skip,.jw-display-icon-container .jw-icon,.jw-nextup-container,.jw-autostart-mute,.jw-overlays .jw-plugin{pointer-events:all}.jwplayer .jw-display-icon-container,.jw-error .jw-display-icon-container{width:auto;height:auto;box-sizing:content-box}.jw-display{display:table;height:100%;padding:57px 0;position:relative;width:100%}.jw-flag-dragging .jw-display{display:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-display-container{display:table-cell;height:100%;text-align:center;vertical-align:middle}.jw-display-controls{display:inline-block}.jwplayer .jw-display-icon-container{float:left}.jw-display-icon-container{display:inline-block;padding:5.5px;margin:0 22px}.jw-display-icon-container .jw-icon{height:75px;width:75px;cursor:pointer;display:flex;justify-content:center;align-items:center}.jw-display-icon-container .jw-icon .jw-svg-icon{height:33px;width:33px;padding:0;position:relative}.jw-display-icon-container .jw-icon .jw-svg-icon-rewind{padding:.2em .05em}.jw-breakpoint--1 .jw-nextup-container{display:none}.jw-breakpoint-0 .jw-display-icon-next,.jw-breakpoint--1 .jw-display-icon-next,.jw-breakpoint-0 .jw-display-icon-rewind,.jw-breakpoint--1 .jw-display-icon-rewind{display:none}.jw-breakpoint-0 .jw-display .jw-icon,.jw-breakpoint--1 .jw-display .jw-icon,.jw-breakpoint-0 .jw-display .jw-svg-icon,.jw-breakpoint--1 .jw-display .jw-svg-icon{width:44px;height:44px;line-height:44px}.jw-breakpoint-0 .jw-display .jw-icon:before,.jw-breakpoint--1 .jw-display .jw-icon:before,.jw-breakpoint-0 .jw-display .jw-svg-icon:before,.jw-breakpoint--1 .jw-display .jw-svg-icon:before{width:22px;height:22px}.jw-breakpoint-1 .jw-display .jw-icon,.jw-breakpoint-1 .jw-display .jw-svg-icon{width:44px;height:44px;line-height:44px}.jw-breakpoint-1 .jw-display .jw-icon:before,.jw-breakpoint-1 .jw-display .jw-svg-icon:before{width:22px;height:22px}.jw-breakpoint-1 .jw-display .jw-icon.jw-icon-rewind:before{width:33px;height:33px}.jw-breakpoint-2 .jw-display .jw-icon,.jw-breakpoint-3 .jw-display .jw-icon,.jw-breakpoint-2 .jw-display .jw-svg-icon,.jw-breakpoint-3 .jw-display .jw-svg-icon{width:77px;height:77px;line-height:77px}.jw-breakpoint-2 .jw-display .jw-icon:before,.jw-breakpoint-3 .jw-display .jw-icon:before,.jw-breakpoint-2 .jw-display .jw-svg-icon:before,.jw-breakpoint-3 .jw-display .jw-svg-icon:before{width:38.5px;height:38.5px}.jw-breakpoint-4 .jw-display .jw-icon,.jw-breakpoint-5 .jw-display .jw-icon,.jw-breakpoint-6 .jw-display .jw-icon,.jw-breakpoint-7 .jw-display .jw-icon,.jw-breakpoint-4 .jw-display .jw-svg-icon,.jw-breakpoint-5 .jw-display .jw-svg-icon,.jw-breakpoint-6 .jw-display .jw-svg-icon,.jw-breakpoint-7 .jw-display .jw-svg-icon{width:88px;height:88px;line-height:88px}.jw-breakpoint-4 .jw-display .jw-icon:before,.jw-breakpoint-5 .jw-display .jw-icon:before,.jw-breakpoint-6 .jw-display .jw-icon:before,.jw-breakpoint-7 .jw-display .jw-icon:before,.jw-breakpoint-4 .jw-display .jw-svg-icon:before,.jw-breakpoint-5 .jw-display .jw-svg-icon:before,.jw-breakpoint-6 .jw-display .jw-svg-icon:before,.jw-breakpoint-7 .jw-display .jw-svg-icon:before{width:44px;height:44px}.jw-controlbar{display:flex;flex-flow:row wrap;align-items:center;justify-content:center;position:absolute;left:0;bottom:0;width:100%;border:none;border-radius:0;background-size:auto;box-shadow:none;max-height:72px;transition:250ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s}.jw-breakpoint-7 .jw-controlbar{max-height:140px}.jw-breakpoint-7 .jw-controlbar .jw-button-container{padding:0 48px 20px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-tooltip{margin-bottom:-7px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume .jw-overlay{padding-bottom:40%}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-text{font-size:1em}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-text.jw-text-elapsed{justify-content:flex-end}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-inline,.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume{height:60px;width:60px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-inline .jw-svg-icon,.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-controlbar .jw-slider-time{padding:0 60px;height:34px}.jw-breakpoint-7 .jw-controlbar .jw-slider-time .jw-slider-container{height:10px}.jw-controlbar .jw-button-image{background:no-repeat 50% 50%;background-size:contain;max-height:24px}.jw-controlbar .jw-spacer{flex:1 1 auto;align-self:stretch}.jw-controlbar .jw-icon.jw-button-color:hover{color:#fff}.jw-button-container{display:flex;flex-flow:row nowrap;flex:1 1 auto;align-items:center;justify-content:center;width:100%;padding:0 12px}.jw-slider-horizontal{background-color:transparent}.jw-icon-inline{position:relative}.jw-icon-inline,.jw-icon-tooltip{height:44px;width:44px;align-items:center;display:flex;justify-content:center}.jw-icon-inline:not(.jw-text),.jw-icon-tooltip,.jw-slider-horizontal{cursor:pointer}.jw-text-elapsed,.jw-text-duration{justify-content:flex-start;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.jw-icon-tooltip{position:relative}.jw-knob:hover,.jw-icon-inline:hover,.jw-icon-tooltip:hover,.jw-icon-display:hover,.jw-option:before:hover{color:#fff}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{pointer-events:none}.jw-icon-cast{display:none;margin:0;padding:0}.jw-icon-cast google-cast-launcher{background-color:transparent;border:none;padding:0;width:24px;height:24px;cursor:pointer}.jw-icon-inline.jw-icon-volume{display:none}.jwplayer .jw-text-countdown{display:none}.jw-flag-small-player .jw-display{padding-top:0;padding-bottom:0}.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-rewind,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-next,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-playback{display:none}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop{opacity:0}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-countdown{display:flex}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-duration,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-duration{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-text-countdown,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-related-btn,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-slider-volume{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-controlbar{flex-direction:column-reverse}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-button-container{height:30px}.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-volume,.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-fullscreen{display:none}.jwplayer:not(.jw-breakpoint-0) .jw-text-duration:before,.jwplayer:not(.jw-breakpoint--1) .jw-text-duration:before{content:"/";padding-right:1ch;padding-left:1ch}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar{will-change:transform}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar .jw-text{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.jw-slider-container{display:flex;align-items:center;position:relative;touch-action:none}.jw-rail,.jw-buffer,.jw-progress{position:absolute;cursor:pointer}.jw-progress{background-color:#f2f2f2}.jw-rail{background-color:rgba(255,255,255,0.3)}.jw-buffer{background-color:rgba(255,255,255,0.3)}.jw-knob{height:13px;width:13px;background-color:#fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,0.4);opacity:1;pointer-events:none;position:absolute;-webkit-transform:translate(-50%, -50%) scale(0);transform:translate(-50%, -50%) scale(0);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform}.jw-flag-dragging .jw-slider-time .jw-knob,.jw-icon-volume:active .jw-slider-volume .jw-knob{box-shadow:0 0 26px rgba(0,0,0,0.2),0 0 10px rgba(0,0,0,0.4),0 0 0 6px rgba(255,255,255,0.2)}.jw-slider-horizontal,.jw-slider-vertical{display:flex}.jw-slider-horizontal .jw-slider-container{height:5px;width:100%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue,.jw-slider-horizontal .jw-knob{top:50%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue{-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress{height:5px}.jw-slider-horizontal .jw-rail{width:100%}.jw-slider-vertical{align-items:center;flex-direction:column}.jw-slider-vertical .jw-slider-container{height:88px;width:5px}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress,.jw-slider-vertical .jw-knob{left:50%}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress{height:100%;width:5px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out;bottom:0}.jw-slider-vertical .jw-knob{-webkit-transform:translate(-50%, 50%);transform:translate(-50%, 50%)}.jw-slider-time.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-slider-time,.jw-flag-audio-player .jw-slider-volume{height:17px;width:100%;align-items:center;background:transparent none;padding:0 12px}.jw-slider-time .jw-cue{background-color:rgba(33,33,33,0.8);cursor:pointer;position:absolute;width:6px}.jw-slider-time,.jw-horizontal-volume-container{z-index:1;outline:none}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail,.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer,.jw-slider-time .jw-progress,.jw-horizontal-volume-container .jw-progress,.jw-slider-time .jw-cue,.jw-horizontal-volume-container .jw-cue{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;-webkit-transform:translate(0, -50%) scale(1, .6);transform:translate(0, -50%) scale(1, .6);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out}.jw-slider-time:hover .jw-rail,.jw-horizontal-volume-container:hover .jw-rail,.jw-slider-time:focus .jw-rail,.jw-horizontal-volume-container:focus .jw-rail,.jw-flag-dragging .jw-slider-time .jw-rail,.jw-flag-dragging .jw-horizontal-volume-container .jw-rail,.jw-flag-touch .jw-slider-time .jw-rail,.jw-flag-touch .jw-horizontal-volume-container .jw-rail,.jw-slider-time:hover .jw-buffer,.jw-horizontal-volume-container:hover .jw-buffer,.jw-slider-time:focus .jw-buffer,.jw-horizontal-volume-container:focus .jw-buffer,.jw-flag-dragging .jw-slider-time .jw-buffer,.jw-flag-dragging .jw-horizontal-volume-container .jw-buffer,.jw-flag-touch .jw-slider-time .jw-buffer,.jw-flag-touch .jw-horizontal-volume-container .jw-buffer,.jw-slider-time:hover .jw-progress,.jw-horizontal-volume-container:hover .jw-progress,.jw-slider-time:focus .jw-progress,.jw-horizontal-volume-container:focus .jw-progress,.jw-flag-dragging .jw-slider-time .jw-progress,.jw-flag-dragging .jw-horizontal-volume-container .jw-progress,.jw-flag-touch .jw-slider-time .jw-progress,.jw-flag-touch .jw-horizontal-volume-container .jw-progress,.jw-slider-time:hover .jw-cue,.jw-horizontal-volume-container:hover .jw-cue,.jw-slider-time:focus .jw-cue,.jw-horizontal-volume-container:focus .jw-cue,.jw-flag-dragging .jw-slider-time .jw-cue,.jw-flag-dragging .jw-horizontal-volume-container .jw-cue,.jw-flag-touch .jw-slider-time .jw-cue,.jw-flag-touch .jw-horizontal-volume-container .jw-cue{-webkit-transform:translate(0, -50%) scale(1, 1);transform:translate(0, -50%) scale(1, 1)}.jw-slider-time:hover .jw-knob,.jw-horizontal-volume-container:hover .jw-knob,.jw-slider-time:focus .jw-knob,.jw-horizontal-volume-container:focus .jw-knob{-webkit-transform:translate(-50%, -50%) scale(1);transform:translate(-50%, -50%) scale(1)}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail{background-color:rgba(255,255,255,0.2)}.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer{background-color:rgba(255,255,255,0.4)}.jw-flag-touch .jw-slider-time::before,.jw-flag-touch .jw-horizontal-volume-container::before{height:44px;width:100%;content:"";position:absolute;display:block;bottom:calc(100% - 17px);left:0}.jw-slider-time.jw-tab-focus:focus .jw-rail,.jw-horizontal-volume-container.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time{height:17px;padding:0}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-slider-container{height:10px}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-knob{border-radius:0;border:1px solid rgba(0,0,0,0.75);height:12px;width:10px}.jw-modal{width:284px}.jw-breakpoint-7 .jw-modal,.jw-breakpoint-6 .jw-modal,.jw-breakpoint-5 .jw-modal{height:232px}.jw-breakpoint-4 .jw-modal,.jw-breakpoint-3 .jw-modal{height:192px}.jw-breakpoint-2 .jw-modal,.jw-flag-small-player .jw-modal{bottom:0;right:0;height:100%;width:100%;max-height:none;max-width:none;z-index:2}.jwplayer .jw-rightclick{display:none;position:absolute;white-space:nowrap}.jwplayer .jw-rightclick.jw-open{display:block}.jwplayer .jw-rightclick .jw-rightclick-list{border-radius:1px;list-style:none;margin:0;padding:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item{background-color:rgba(0,0,0,0.8);border-bottom:1px solid #444;margin:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo{color:#fff;display:inline-flex;padding:0 10px 0 0;vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo .jw-svg-icon{height:20px;width:20px}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-link{border:none;color:#fff;display:block;font-size:11px;line-height:1em;padding:15px 23px;text-align:start;text-decoration:none;width:100%}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:last-child{border-bottom:none}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:hover{cursor:pointer}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured{vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link{color:#fff}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link span{color:#fff}.jwplayer .jw-rightclick .jw-info-overlay-item,.jwplayer .jw-rightclick .jw-share-item,.jwplayer .jw-rightclick .jw-shortcuts-item{border:none;background-color:transparent;outline:none;cursor:pointer}.jw-icon-tooltip.jw-open .jw-overlay{opacity:1;pointer-events:auto;transition-delay:0s}.jw-icon-tooltip.jw-open .jw-overlay:focus{outline:none}.jw-icon-tooltip.jw-open .jw-overlay:focus.jw-tab-focus{outline:solid 2px #4d90fe}.jw-slider-time .jw-overlay:before{height:1em;top:auto}.jw-slider-time .jw-icon-tooltip.jw-open .jw-overlay{pointer-events:none}.jw-volume-tip{padding:13px 0 26px}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{height:auto;width:100%;box-shadow:0 0 10px rgba(0,0,0,0.4);color:#fff;display:block;margin:0 0 14px;pointer-events:none;position:relative;z-index:0}.jw-time-tip::after,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{top:100%;position:absolute;left:50%;height:14px;width:14px;border-radius:1px;background-color:currentColor;-webkit-transform-origin:75% 50%;transform-origin:75% 50%;-webkit-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);z-index:-1}.jw-time-tip .jw-text,.jw-controlbar .jw-tooltip .jw-text,.jw-settings-menu .jw-tooltip .jw-text{background-color:#fff;border-radius:1px;color:#000;font-size:10px;height:auto;line-height:1;padding:7px 10px;display:inline-block;min-width:100%;vertical-align:middle}.jw-controlbar .jw-overlay{position:absolute;bottom:100%;left:50%;margin:0;min-height:44px;min-width:44px;opacity:0;pointer-events:none;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s, 150ms;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);width:100%;z-index:1}.jw-controlbar .jw-overlay .jw-contents{position:relative}.jw-controlbar .jw-option{position:relative;white-space:nowrap;cursor:pointer;list-style:none;height:1.5em;font-family:inherit;line-height:1.5em;padding:0 .5em;font-size:.8em;margin:0}.jw-controlbar .jw-option::before{padding-right:.125em}.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{position:absolute;bottom:100%;left:50%;opacity:0;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:100ms 0s cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility, -webkit-transform;transition-property:opacity, transform, visibility;transition-property:opacity, transform, visibility, -webkit-transform;visibility:hidden;white-space:nowrap;width:auto;z-index:1}.jw-controlbar .jw-tooltip.jw-open,.jw-settings-menu .jw-tooltip.jw-open{opacity:1;-webkit-transform:translate(-50%, -10px);transform:translate(-50%, -10px);transition-duration:150ms;transition-delay:500ms,0s,500ms;visibility:visible}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen{left:auto;right:0;-webkit-transform:translate(0, 0);transform:translate(0, 0)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen.jw-open,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen.jw-open{-webkit-transform:translate(0, -10px);transform:translate(0, -10px)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen::after,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen::after{left:auto;right:9px}.jw-tooltip-time{height:auto;width:0;bottom:100%;line-height:normal;padding:0;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jw-tooltip-time .jw-overlay{bottom:0;min-height:0;width:auto}.jw-tooltip{bottom:57px;display:none;position:absolute}.jw-tooltip .jw-text{height:100%;white-space:nowrap;text-overflow:ellipsis;direction:unset;max-width:246px;overflow:hidden}.jw-flag-audio-player .jw-tooltip{display:none}.jw-flag-small-player .jw-time-thumb{display:none}.jwplayer .jw-shortcuts-tooltip{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column;z-index:1}.jwplayer .jw-shortcuts-tooltip.jw-open{display:flex}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-close{flex:0 0 auto;margin:5px 5px 5px auto}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container{display:flex;flex:1 1 auto;flex-flow:column;font-size:12px;margin:0 20px 20px;overflow-y:auto;padding:5px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar{background-color:transparent;width:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-title{font-weight:bold}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list{display:flex;max-width:340px;margin:0 10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-tooltip-descriptions{width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row{display:flex;align-items:center;justify-content:space-between;margin:10px 0;width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-description{margin-right:10px;max-width:70%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-key{background:#fefefe;color:#333;overflow:hidden;padding:7px 10px;text-overflow:ellipsis;white-space:nowrap}.jw-skip{color:rgba(255,255,255,0.8);cursor:default;position:absolute;display:flex;right:.75em;bottom:56px;padding:.5em;border:1px solid #333;background-color:#000;align-items:center;height:2em}.jw-skip.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-skip.jw-skippable{cursor:pointer;padding:.25em .75em}.jw-skip.jw-skippable:hover{cursor:pointer;color:#fff}.jw-skip.jw-skippable .jw-skip-icon{display:inline;height:24px;width:24px;margin:0}.jw-breakpoint-7 .jw-skip{padding:1.35em 1em;bottom:130px}.jw-breakpoint-7 .jw-skip .jw-text{font-size:1em;font-weight:normal}.jw-breakpoint-7 .jw-skip .jw-icon-inline{height:30px;width:30px}.jw-breakpoint-7 .jw-skip .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-skip .jw-skip-icon{display:none;margin-left:-0.75em;padding:0 .5em;pointer-events:none}.jw-skip .jw-skip-icon .jw-svg-icon-next{display:block;padding:0}.jw-skip .jw-text,.jw-skip .jw-skip-icon{vertical-align:middle;font-size:.7em}.jw-skip .jw-text{font-weight:bold}.jw-cast{background-size:cover;display:none;height:100%;position:relative;width:100%}.jw-cast-container{background:linear-gradient(180deg, rgba(25,25,25,0.75), rgba(25,25,25,0.25), rgba(25,25,25,0));left:0;padding:20px 20px 80px;position:absolute;top:0;width:100%}.jw-cast-text{color:#fff;font-size:1.6em}.jw-breakpoint--1 .jw-cast-text,.jw-breakpoint-0 .jw-cast-text{font-size:1.15em}.jw-breakpoint-1 .jw-cast-text,.jw-breakpoint-2 .jw-cast-text,.jw-breakpoint-3 .jw-cast-text{font-size:1.3em}.jw-nextup-container{position:absolute;bottom:66px;left:0;background-color:transparent;cursor:pointer;margin:0 auto;padding:12px;pointer-events:none;right:0;text-align:right;visibility:hidden;width:100%}.jw-settings-open .jw-nextup-container,.jw-info-open .jw-nextup-container{display:none}.jw-breakpoint-7 .jw-nextup-container{padding:60px}.jw-flag-small-player .jw-nextup-container{padding:0 12px 0 0}.jw-flag-small-player .jw-nextup-container .jw-nextup-title,.jw-flag-small-player .jw-nextup-container .jw-nextup-duration,.jw-flag-small-player .jw-nextup-container .jw-nextup-close{display:none}.jw-flag-small-player .jw-nextup-container .jw-nextup-tooltip{height:30px}.jw-flag-small-player .jw-nextup-container .jw-nextup-header{font-size:12px}.jw-flag-small-player .jw-nextup-container .jw-nextup-body{justify-content:center;align-items:center;padding:.75em .3em}.jw-flag-small-player .jw-nextup-container .jw-nextup-thumbnail{width:50%}.jw-flag-small-player .jw-nextup-container .jw-nextup{max-width:65px}.jw-flag-small-player .jw-nextup-container .jw-nextup.jw-nextup-thumbnail-visible{max-width:120px}.jw-nextup{background:#333;border-radius:0;box-shadow:0 0 10px rgba(0,0,0,0.5);color:rgba(255,255,255,0.8);display:inline-block;max-width:280px;overflow:hidden;opacity:0;position:relative;width:64%;pointer-events:all;-webkit-transform:translate(0, -5px);transform:translate(0, -5px);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;transition-delay:0s}.jw-nextup:hover .jw-nextup-tooltip{color:#fff}.jw-nextup.jw-nextup-thumbnail-visible{max-width:400px}.jw-nextup.jw-nextup-thumbnail-visible .jw-nextup-thumbnail{display:block}.jw-nextup-container-visible{visibility:visible}.jw-nextup-container-visible .jw-nextup{opacity:1;-webkit-transform:translate(0, 0);transform:translate(0, 0);transition-delay:0s, 0s, 150ms}.jw-nextup-tooltip{display:flex;height:80px}.jw-nextup-thumbnail{width:120px;background-position:center;background-size:cover;flex:0 0 auto;display:none}.jw-nextup-body{flex:1 1 auto;overflow:hidden;padding:.75em .875em;display:flex;flex-flow:column wrap;justify-content:space-between}.jw-nextup-header,.jw-nextup-title{font-size:14px;line-height:1.35}.jw-nextup-header{font-weight:bold}.jw-nextup-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.jw-nextup-duration{align-self:flex-end;text-align:right;font-size:12px}.jw-nextup-close{height:24px;width:24px;border:none;color:rgba(255,255,255,0.8);cursor:pointer;margin:6px;visibility:hidden}.jw-nextup-close:hover{color:#fff}.jw-nextup-sticky .jw-nextup-close{visibility:visible}.jw-autostart-mute{position:absolute;bottom:0;right:12px;height:44px;width:44px;background-color:rgba(33,33,33,0.4);padding:5px 4px 5px 6px;display:none}.jwplayer.jw-flag-autostart:not(.jw-flag-media-audio) .jw-nextup{display:none}.jw-settings-menu{position:absolute;bottom:57px;right:12px;align-items:flex-start;background-color:#333;display:none;flex-flow:column nowrap;max-width:284px;pointer-events:auto}.jw-settings-open .jw-settings-menu{display:flex}.jw-breakpoint-7 .jw-settings-menu{bottom:130px;right:60px;max-height:none;max-width:none;height:35%;width:25%}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline{height:60px;width:60px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-tooltip .jw-text{font-size:1em}.jw-breakpoint-6 .jw-settings-menu,.jw-breakpoint-5 .jw-settings-menu{height:232px;width:284px;max-height:232px}.jw-breakpoint-4 .jw-settings-menu,.jw-breakpoint-3 .jw-settings-menu{height:192px;width:284px;max-height:192px}.jw-breakpoint-2 .jw-settings-menu{height:179px;width:284px;max-height:179px}.jw-flag-small-player .jw-settings-menu{max-width:none}.jw-settings-menu .jw-icon.jw-button-color::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon.jw-button-color[aria-checked="true"]::after{opacity:1}.jw-settings-topbar{align-items:center;background-color:rgba(0,0,0,0.4);display:flex;flex:0 0 auto;padding:3px 5px 0;width:100%}.jw-settings-topbar .jw-settings-close{margin-left:auto}.jw-settings-submenu{display:none;flex:1 1 auto;overflow-y:auto;padding:8px 20px 0 5px}.jw-settings-submenu::-webkit-scrollbar{background-color:transparent;width:6px}.jw-settings-submenu::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-settings-submenu.jw-settings-submenu-active{display:block}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item{font-size:1em;padding:11px 0 11px 30px}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-settings-item-active::before{justify-content:flex-end}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-auto-label{font-size:.85em;padding-left:10px}.jw-flag-touch .jw-settings-submenu{overflow-y:scroll;-webkit-overflow-scrolling:touch}.jw-auto-label{font-size:10px;font-weight:initial;opacity:.75;padding-left:5px}.jw-settings-content-item{position:relative;color:rgba(255,255,255,0.8);cursor:pointer;font-size:12px;line-height:1;padding:7px 0 7px 15px;width:100%;text-align:left;outline:none}.jw-settings-content-item:hover{color:#fff}.jw-settings-content-item:focus{font-weight:bold}.jw-flag-small-player .jw-settings-content-item{line-height:1.75}.jw-settings-content-item.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-settings-item-active{font-weight:bold;position:relative}.jw-settings-item-active::before{height:100%;width:1em;align-items:center;content:"\\2022";display:inline-flex;justify-content:center}.jw-breakpoint-2 .jw-settings-open .jw-display-container,.jw-flag-small-player .jw-settings-open .jw-display-container,.jw-flag-touch .jw-settings-open .jw-display-container{display:none}.jw-breakpoint-2 .jw-settings-open.jw-controls,.jw-flag-small-player .jw-settings-open.jw-controls,.jw-flag-touch .jw-settings-open.jw-controls{z-index:1}.jw-flag-small-player .jw-settings-open .jw-controlbar{display:none}.jw-settings-open .jw-icon-settings::after{opacity:1}.jw-settings-open .jw-tooltip-settings{display:none}.jw-sharing-link{cursor:pointer}.jw-shortcuts-container .jw-switch{position:relative;display:inline-block;transition:ease-out .15s;transition-property:opacity, background;border-radius:18px;width:80px;height:20px;padding:10px;background:rgba(80,80,80,0.8);cursor:pointer;font-size:inherit;vertical-align:middle}.jw-shortcuts-container .jw-switch .jw-switch-knob{position:absolute;top:2px;left:1px;transition:ease-out .15s;box-shadow:0 0 10px rgba(0,0,0,0.4);border-radius:13px;width:15px;height:15px;background:#fefefe}.jw-shortcuts-container .jw-switch:before,.jw-shortcuts-container .jw-switch:after{position:absolute;top:3px;transition:inherit;color:#fefefe}.jw-shortcuts-container .jw-switch:before{content:attr(data-jw-switch-disabled);right:8px}.jw-shortcuts-container .jw-switch:after{content:attr(data-jw-switch-enabled);left:8px;opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]{background:#475470}.jw-shortcuts-container .jw-switch[aria-checked="true"]:before{opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]:after{opacity:1}.jw-shortcuts-container .jw-switch[aria-checked="true"] .jw-switch-knob{left:60px}.jw-idle-icon-text{display:none;line-height:1;position:absolute;text-align:center;text-indent:.35em;top:100%;white-space:nowrap;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.jw-idle-label{border-radius:50%;color:#fff;-webkit-filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));font:normal 16px/1 Arial,Helvetica,sans-serif;position:relative;transition:background-color 150ms cubic-bezier(0, .25, .25, 1);transition-property:background-color,-webkit-filter;transition-property:background-color,filter;transition-property:background-color,filter,-webkit-filter;-webkit-font-smoothing:antialiased}.jw-state-idle .jw-icon-display.jw-idle-label .jw-idle-icon-text{display:block}.jw-state-idle .jw-icon-display.jw-idle-label .jw-svg-icon-play{-webkit-transform:scale(.7, .7);transform:scale(.7, .7)}.jw-breakpoint-0.jw-state-idle .jw-icon-display.jw-idle-label,.jw-breakpoint--1.jw-state-idle .jw-icon-display.jw-idle-label{font-size:12px}.jw-info-overlay{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column}.jw-info-overlay .jw-info-close{flex:0 0 auto;margin:5px 5px 5px auto}.jw-info-open .jw-info-overlay{display:flex}.jw-info-container{display:flex;flex:1 1 auto;flex-flow:column;margin:0 20px 20px;overflow-y:auto;padding:5px}.jw-info-container [class*="jw-info"]:not(:first-of-type){color:rgba(255,255,255,0.8);padding-top:10px;font-size:12px}.jw-info-container .jw-info-description{margin-bottom:30px;text-align:start}.jw-info-container .jw-info-description:empty{display:none}.jw-info-container .jw-info-duration{text-align:start}.jw-info-container .jw-info-title{text-align:start;font-size:12px;font-weight:bold}.jw-info-container::-webkit-scrollbar{background-color:transparent;width:6px}.jw-info-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-info-clientid{align-self:flex-end;font-size:12px;color:rgba(255,255,255,0.8);margin:0 20px 20px 44px;text-align:right}.jw-flag-touch .jw-info-open .jw-display-container{display:none}@supports ((-webkit-filter: drop-shadow(0 0 3px #000)) or (filter: drop-shadow(0 0 3px #000))){.jwplayer.jw-ab-drop-shadow .jw-controls .jw-svg-icon,.jwplayer.jw-ab-drop-shadow .jw-controls .jw-icon.jw-text,.jwplayer.jw-ab-drop-shadow .jw-slider-container .jw-rail,.jwplayer.jw-ab-drop-shadow .jw-title{text-shadow:none;box-shadow:none;-webkit-filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3));filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3))}.jwplayer.jw-ab-drop-shadow .jw-button-color{opacity:.8;transition-property:color, opacity}.jwplayer.jw-ab-drop-shadow .jw-button-color:not(:hover){color:#fff;opacity:.8}.jwplayer.jw-ab-drop-shadow .jw-button-color:hover{opacity:1}.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0), hsla(0, 0%, 0%, 0.00787) 10.79%, hsla(0, 0%, 0%, 0.02963) 21.99%, hsla(0, 0%, 0%, 0.0625) 33.34%, hsla(0, 0%, 0%, 0.1037) 44.59%, hsla(0, 0%, 0%, 0.15046) 55.48%, hsla(0, 0%, 0%, 0.2) 65.75%, hsla(0, 0%, 0%, 0.24954) 75.14%, hsla(0, 0%, 0%, 0.2963) 83.41%, hsla(0, 0%, 0%, 0.3375) 90.28%, hsla(0, 0%, 0%, 0.37037) 95.51%, hsla(0, 0%, 0%, 0.39213) 98.83%, hsla(0, 0%, 0%, 0.4));mix-blend-mode:multiply;transition-property:opacity}.jw-state-idle.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0.2), hsla(0, 0%, 0%, 0.19606) 1.17%, hsla(0, 0%, 0%, 0.18519) 4.49%, hsla(0, 0%, 0%, 0.16875) 9.72%, hsla(0, 0%, 0%, 0.14815) 16.59%, hsla(0, 0%, 0%, 0.12477) 24.86%, hsla(0, 0%, 0%, 0.1) 34.25%, hsla(0, 0%, 0%, 0.07523) 44.52%, hsla(0, 0%, 0%, 0.05185) 55.41%, hsla(0, 0%, 0%, 0.03125) 66.66%, hsla(0, 0%, 0%, 0.01481) 78.01%, hsla(0, 0%, 0%, 0.00394) 89.21%, hsla(0, 0%, 0%, 0));background-size:100% 7rem;background-position:50% 0}.jwplayer.jw-ab-drop-shadow.jw-state-idle .jw-controls{background-color:transparent}}.jw-video-thumbnail-container{position:relative;overflow:hidden}.jw-video-thumbnail-container:not(.jw-related-shelf-item-image){height:100%;width:100%}.jw-video-thumbnail-container.jw-video-thumbnail-generated{position:absolute;top:0;left:0}.jw-video-thumbnail-container:hover,.jw-related-item-content:hover .jw-video-thumbnail-container,.jw-related-shelf-item:hover .jw-video-thumbnail-container{cursor:pointer}.jw-video-thumbnail-container:hover .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-item-content:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-shelf-item:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail{position:absolute;top:50%;left:50%;bottom:unset;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:100%;height:auto;min-width:100%;min-height:100%;opacity:0;transition:opacity .3s ease;object-fit:cover;background:#000}.jw-related-item-next-up .jw-video-thumbnail-container .jw-video-thumbnail{height:100%;width:auto}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-visible:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-completed{opacity:0}.jw-video-thumbnail-container .jw-video-thumbnail~.jw-svg-icon-play{display:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-shelf-item-aspect{pointer-events:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-item-poster-content{pointer-events:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-state-idle .jw-controls{background:rgba(0,0,0,0.4)}.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay),.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay){display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon:focus{border:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon .jw-svg-icon-buffer{-webkit-animation:jw-spin 2s linear infinite;animation:jw-spin 2s linear infinite;display:block}@-webkit-keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jwplayer.jw-state-buffering .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-pause{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-pause{display:block}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-controls-backdrop{opacity:0}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-logo-bottom-left,.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio):not(.jw-flag-autostart) .jw-logo-bottom-right{bottom:0}.jwplayer .jw-icon-playback .jw-svg-icon-stop{display:none}.jwplayer.jw-state-paused .jw-svg-icon-pause,.jwplayer.jw-state-idle .jw-svg-icon-pause,.jwplayer.jw-state-error .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-svg-icon-pause{display:none}.jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-complete .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-play{display:none}.jwplayer:not(.jw-state-buffering) .jw-svg-icon-buffer{display:none}.jwplayer:not(.jw-state-complete) .jw-svg-icon-replay{display:none}.jwplayer:not(.jw-state-error) .jw-svg-icon-error{display:none}.jwplayer.jw-state-complete .jw-display .jw-icon-display .jw-svg-icon-replay{display:block}.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-state-complete .jw-controls{background:rgba(0,0,0,0.4);height:100%}.jw-state-idle .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-state-idle .jw-display-icon-rewind,.jwplayer.jw-state-buffering .jw-display-icon-rewind,.jwplayer.jw-state-complete .jw-display-icon-rewind,body .jw-error .jw-display-icon-rewind,body .jwplayer.jw-state-error .jw-display-icon-rewind,.jw-state-idle .jw-display-icon-next,.jwplayer.jw-state-buffering .jw-display-icon-next,.jwplayer.jw-state-complete .jw-display-icon-next,body .jw-error .jw-display-icon-next,body .jwplayer.jw-state-error .jw-display-icon-next{display:none}body .jw-error .jw-icon-display,body .jwplayer.jw-state-error .jw-icon-display{cursor:default}body .jw-error .jw-icon-display .jw-svg-icon-error,body .jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-error{display:block}body .jw-error .jw-icon-container{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-preview{display:none}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title{padding-top:4px}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-primary{width:auto;display:inline-block;padding-right:.5ch}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-secondary{width:auto;display:inline-block;padding-left:0}body .jwplayer.jw-state-error .jw-controlbar,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-controlbar{display:none}body .jwplayer.jw-state-error .jw-settings-menu,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-settings-menu{height:100%;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}body .jwplayer.jw-state-error .jw-display,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-display{padding:0}body .jwplayer.jw-state-error .jw-logo-bottom-left,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-left,body .jwplayer.jw-state-error .jw-logo-bottom-right,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-right{bottom:0}.jwplayer.jw-state-playing.jw-flag-user-inactive .jw-display{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-state-playing:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display,.jwplayer.jw-state-paused:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting):not(.jw-flag-play-rejected) .jw-display{display:none}.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-rewind,.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-next{display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-text,.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-flag-casting:not(.jw-flag-audio-player) .jw-cast{display:block}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-display-icon-container{display:none}.jwplayer.jw-flag-casting .jw-icon-hd,.jwplayer.jw-flag-casting .jw-captions,.jwplayer.jw-flag-casting .jw-icon-fullscreen,.jwplayer.jw-flag-casting .jw-icon-audio-tracks{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-volume{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-airplay{color:#fff}.jw-state-playing.jw-flag-casting:not(.jw-flag-audio-player) .jw-display,.jw-state-paused.jw-flag-casting:not(.jw-flag-audio-player) .jw-display{display:table}.jwplayer.jw-flag-cast-available .jw-icon-cast,.jwplayer.jw-flag-cast-available .jw-icon-airplay{display:flex}.jwplayer.jw-flag-cardboard-available .jw-icon-cardboard{display:flex}.jwplayer.jw-flag-live .jw-display-icon-rewind{visibility:hidden}.jwplayer.jw-flag-live .jw-controlbar .jw-text-elapsed,.jwplayer.jw-flag-live .jw-controlbar .jw-text-duration,.jwplayer.jw-flag-live .jw-controlbar .jw-text-countdown,.jwplayer.jw-flag-live .jw-controlbar .jw-slider-time{display:none}.jwplayer.jw-flag-live .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-live .jw-controlbar .jw-overlay:after{display:none}.jwplayer.jw-flag-live .jw-nextup-container{bottom:44px}.jwplayer.jw-flag-live .jw-text-elapsed,.jwplayer.jw-flag-live .jw-text-duration{display:none}.jwplayer.jw-flag-live .jw-text-live{cursor:default}.jwplayer.jw-flag-live .jw-text-live:hover{color:rgba(255,255,255,0.8)}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-stop,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-stop{display:block}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-text-live{height:24px;width:auto;align-items:center;border-radius:1px;color:rgba(255,255,255,0.8);display:flex;font-size:12px;font-weight:bold;margin-right:10px;padding:0 1ch;text-rendering:geometricPrecision;text-transform:uppercase;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:box-shadow,color}.jw-text-live::before{height:8px;width:8px;background-color:currentColor;border-radius:50%;margin-right:6px;opacity:1;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-text-live.jw-dvr-live{box-shadow:inset 0 0 0 2px currentColor}.jw-text-live.jw-dvr-live::before{opacity:.5}.jw-text-live.jw-dvr-live:hover{color:#fff}.jwplayer.jw-flag-controls-hidden .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-controls-hidden:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-controls-hidden .jw-plugin{bottom:.5em}.jwplayer.jw-flag-controls-hidden .jw-nextup-container{bottom:0}.jw-flag-controls-hidden .jw-controlbar,.jw-flag-controls-hidden .jw-display{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-controls-hidden .jw-controls-backdrop{opacity:0}.jw-flag-controls-hidden .jw-logo{visibility:visible}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-plugin{bottom:.5em}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-nextup-container{bottom:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-controls-hidden) .jw-media{cursor:none;-webkit-cursor-visibility:auto-hide}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing.jw-flag-casting .jw-display{display:table}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-ads) .jw-autostart-mute{display:flex}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting .jw-nextup-container{bottom:66px}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting.jw-state-idle .jw-nextup-container{display:none}.jw-flag-media-audio .jw-preview{display:block}.jwplayer.jw-flag-ads .jw-preview,.jwplayer.jw-flag-ads .jw-logo,.jwplayer.jw-flag-ads .jw-captions.jw-captions-enabled,.jwplayer.jw-flag-ads .jw-nextup-container,.jwplayer.jw-flag-ads .jw-text-duration,.jwplayer.jw-flag-ads .jw-text-elapsed{display:none}.jwplayer.jw-flag-ads video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-rewind,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-next,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-display{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player.jw-state-buffering .jw-display-icon-display{display:inline-block}.jwplayer.jw-flag-ads .jw-controlbar{flex-wrap:wrap-reverse}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time{height:auto;padding:0;pointer-events:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-slider-container{height:5px}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-rail,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-knob,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-buffer,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-cue,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-icon-settings{display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-progress{-webkit-transform:none;transform:none;top:auto}.jwplayer.jw-flag-ads .jw-controlbar .jw-tooltip,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-tooltip:not(.jw-icon-volume),.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-inline:not(.jw-icon-playback):not(.jw-icon-fullscreen):not(.jw-icon-volume){display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-volume-tip{padding:13px 0}.jwplayer.jw-flag-ads .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid) .jw-controls .jw-controlbar,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart .jw-controls .jw-controlbar{display:flex;pointer-events:all;visibility:visible;opacity:1}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-user-inactive .jw-controls-backdrop,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart.jw-flag-user-inactive .jw-controls-backdrop{opacity:1;background-size:100% 60px}.jwplayer.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-ads-vpaid .jw-skip,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-skip{display:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls{background:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls::after{content:none}.jwplayer.jw-flag-ads-hide-controls .jw-controls-backdrop,.jwplayer.jw-flag-ads-hide-controls .jw-controls{display:none !important}.jw-flag-overlay-open-related .jw-controls,.jw-flag-overlay-open-related .jw-title,.jw-flag-overlay-open-related .jw-logo{display:none}.jwplayer.jw-flag-rightclick-open{overflow:visible}.jwplayer.jw-flag-rightclick-open .jw-rightclick{z-index:16777215}body .jwplayer.jw-flag-flash-blocked .jw-controls,body .jwplayer.jw-flag-flash-blocked .jw-overlays,body .jwplayer.jw-flag-flash-blocked .jw-controls-backdrop,body .jwplayer.jw-flag-flash-blocked .jw-preview{display:none}body .jwplayer.jw-flag-flash-blocked .jw-error-msg{top:25%}.jw-flag-touch.jw-breakpoint-7 .jw-captions,.jw-flag-touch.jw-breakpoint-6 .jw-captions,.jw-flag-touch.jw-breakpoint-5 .jw-captions,.jw-flag-touch.jw-breakpoint-4 .jw-captions,.jw-flag-touch.jw-breakpoint-7 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-6 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-5 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-4 .jw-nextup-container{bottom:4.25em}.jw-flag-touch .jw-controlbar .jw-icon-volume{display:flex}.jw-flag-touch .jw-display,.jw-flag-touch .jw-display-container,.jw-flag-touch .jw-display-controls{pointer-events:none}.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-rewind,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-rewind{display:none}.jw-flag-touch.jw-state-paused.jw-flag-dragging .jw-display{display:none}.jw-flag-audio-player{background-color:#000}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:44px}.jw-flag-audio-player:not(.jw-flag-live) .jw-spacer{display:none}.jw-flag-audio-player .jw-preview,.jw-flag-audio-player .jw-display,.jw-flag-audio-player .jw-title,.jw-flag-audio-player .jw-nextup-container{display:none}.jw-flag-audio-player .jw-controlbar{position:relative}.jw-flag-audio-player .jw-controlbar .jw-button-container{padding-right:3px;padding-left:0}.jw-flag-audio-player .jw-controlbar .jw-icon-tooltip,.jw-flag-audio-player .jw-controlbar .jw-icon-inline{display:none}.jw-flag-audio-player .jw-controlbar .jw-icon-volume,.jw-flag-audio-player .jw-controlbar .jw-icon-playback,.jw-flag-audio-player .jw-controlbar .jw-icon-next,.jw-flag-audio-player .jw-controlbar .jw-icon-rewind,.jw-flag-audio-player .jw-controlbar .jw-icon-cast,.jw-flag-audio-player .jw-controlbar .jw-text-live,.jw-flag-audio-player .jw-controlbar .jw-icon-airplay,.jw-flag-audio-player .jw-controlbar .jw-logo-button,.jw-flag-audio-player .jw-controlbar .jw-text-elapsed,.jw-flag-audio-player .jw-controlbar .jw-text-duration{display:flex;flex:0 0 auto}.jw-flag-audio-player .jw-controlbar .jw-text-duration,.jw-flag-audio-player .jw-controlbar .jw-text-countdown{padding-right:10px}.jw-flag-audio-player .jw-controlbar .jw-slider-time{flex:0 1 auto;align-items:center;display:flex;order:1}.jw-flag-audio-player .jw-controlbar .jw-icon-volume{margin-right:0;transition:margin-right 150ms cubic-bezier(0, .25, .25, 1)}.jw-flag-audio-player .jw-controlbar .jw-icon-volume .jw-overlay{display:none}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container{transition:width 300ms cubic-bezier(0, .25, .25, 1);width:0}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open{width:140px}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open .jw-slider-volume{padding-right:24px;transition:opacity 300ms;opacity:1}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open~.jw-slider-time{flex:1 1 auto;width:auto;transition:opacity 300ms, width 300ms}.jw-flag-audio-player .jw-controlbar .jw-slider-volume{opacity:0}.jw-flag-audio-player .jw-controlbar .jw-slider-volume .jw-knob{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.jw-flag-audio-player .jw-controlbar .jw-slider-volume~.jw-icon-volume{margin-right:140px}.jw-flag-audio-player.jw-breakpoint-1 .jw-horizontal-volume-container.jw-open~.jw-slider-time,.jw-flag-audio-player.jw-breakpoint-2 .jw-horizontal-volume-container.jw-open~.jw-slider-time{opacity:0}.jw-flag-audio-player.jw-flag-small-player .jw-text-elapsed,.jw-flag-audio-player.jw-flag-small-player .jw-text-duration{display:none}.jw-flag-audio-player.jw-flag-ads .jw-slider-time{display:none}.jw-hidden{display:none}',""])}]]); \ No newline at end of file diff --git a/ui/v2.5/public/jwplayer/jwplayer.core.controls.js b/ui/v2.5/public/jwplayer/jwplayer.core.controls.js new file mode 100644 index 000000000..74e898a25 --- /dev/null +++ b/ui/v2.5/public/jwplayer/jwplayer.core.controls.js @@ -0,0 +1,95 @@ +/*! +JW Player version 8.11.5 +Copyright (c) 2019, JW Player, All Rights Reserved +https://github.com/jwplayer/jwplayer/blob/v8.11.5/README.md + +This source code and its use and distribution is subject to the terms and conditions of the applicable license agreement. +https://www.jwplayer.com/tos/ + +This product includes portions of other software. For the full text of licenses, see below: + +JW Player Third Party Software Notices and/or Additional Terms and Conditions + +************************************************************************************************** +The following software is used under Apache License 2.0 +************************************************************************************************** + +vtt.js v0.13.0 +Copyright (c) 2019 Mozilla (http://mozilla.org) +https://github.com/mozilla/vtt.js/blob/v0.13.0/LICENSE + +* * * + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and +limitations under the License. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under MIT license +************************************************************************************************** + +Underscore.js v1.6.0 +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +https://github.com/jashkenas/underscore/blob/1.6.0/LICENSE + +Backbone backbone.events.js v1.1.2 +Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud +https://github.com/jashkenas/backbone/blob/1.1.2/LICENSE + +Promise Polyfill v7.1.1 +Copyright (c) 2014 Taylor Hakes and Forbes Lindesay +https://github.com/taylorhakes/promise-polyfill/blob/v7.1.1/LICENSE + +can-autoplay.js v3.0.0 +Copyright (c) 2017 video-dev +https://github.com/video-dev/can-autoplay/blob/v3.0.0/LICENSE + +* * * + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under W3C license +************************************************************************************************** + +Intersection Observer v0.5.0 +Copyright (c) 2016 Google Inc. (http://google.com) +https://github.com/w3c/IntersectionObserver/blob/v0.5.0/LICENSE.md + +* * * + +W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. + +This work is being provided by the copyright holders under the following license. + +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. + +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders. +*/ +(window.webpackJsonpjwplayer=window.webpackJsonpjwplayer||[]).push([[3,1,2],[,,,,,,,,,,,,,,,,,function(e,t,i){"use strict";i.r(t);var n,o=i(8),a=i(3),r=i(7),l=i(43),s=i(5),c=i(15),u=i(40);function d(e){return n||(n=new DOMParser),Object(s.r)(Object(s.s)(n.parseFromString(e,"image/svg+xml").documentElement))}var p=function(e,t,i,n){var o=document.createElement("div");o.className="jw-icon jw-icon-inline jw-button-color jw-reset "+e,o.setAttribute("role","button"),o.setAttribute("tabindex","0"),i&&o.setAttribute("aria-label",i),o.style.display="none";var a=new u.a(o).on("click tap enter",t||function(){});return n&&Array.prototype.forEach.call(n,(function(e){"string"==typeof e?o.appendChild(d(e)):o.appendChild(e)})),{ui:a,element:function(){return o},toggle:function(e){e?this.show():this.hide()},show:function(){o.style.display=""},hide:function(){o.style.display="none"}}},w=i(0),f=i(67),h=i.n(f),j=i(68),g=i.n(j),b=i(69),m=i.n(b),v=i(70),y=i.n(v),k=i(71),x=i.n(k),O=i(72),C=i.n(O),S=i(73),M=i.n(S),T=i(74),E=i.n(T),_=i(75),z=i.n(_),P=i(76),A=i.n(P),L=i(77),R=i.n(L),I=i(78),B=i.n(I),V=i(79),H=i.n(V),N=i(80),F=i.n(N),q=i(81),D=i.n(q),U=i(82),W=i.n(U),Q=i(83),Y=i.n(Q),X=i(84),Z=i.n(X),K=i(85),J=i.n(K),G=i(86),$=i.n(G),ee=i(87),te=i.n(ee),ie=i(88),ne=i.n(ie),oe=i(89),ae=i.n(oe),re=null;function le(e){var t=de().querySelector(ce(e));if(t)return ue(t);throw new Error("Icon not found "+e)}function se(e){var t=de().querySelectorAll(e.split(",").map(ce).join(","));if(!t.length)throw new Error("Icons not found "+e);return Array.prototype.map.call(t,(function(e){return ue(e)}))}function ce(e){return".jw-svg-icon-".concat(e)}function ue(e){return e.cloneNode(!0)}function de(){return re||(re=d(""+h.a+g.a+m.a+y.a+x.a+C.a+M.a+E.a+z.a+A.a+R.a+B.a+H.a+F.a+D.a+W.a+Y.a+Z.a+J.a+$.a+te.a+ne.a+ae.a+"")),re}var pe=i(10);function we(e,t){for(var i=0;i10&&delete fe[t[0]];var i=d(e);fe[e]=i}return fe[e].cloneNode(!0)}(t):((r=document.createElement("div")).className="jw-icon jw-button-image jw-button-color jw-reset",t&&Object(pe.d)(r,{backgroundImage:"url(".concat(t,")")})),l.appendChild(r),new u.a(l).on("click tap enter",n,this),l.addEventListener("mousedown",(function(e){e.preventDefault()})),this.id=o,this.buttonElement=l}var t,i,n;return t=e,(i=[{key:"element",value:function(){return this.buttonElement}},{key:"toggle",value:function(e){e?this.show():this.hide()}},{key:"show",value:function(){this.buttonElement.style.display=""}},{key:"hide",value:function(){this.buttonElement.style.display="none"}}])&&we(t.prototype,i),n&&we(t,n),e}(),je=i(11);function ge(e,t){for(var i=0;i=0&&(t.left-=i,t.right-=i),t},me=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object(w.h)(this,r.a),this.className=t+" jw-background-color jw-reset",this.orientation=i}var t,i,n;return t=e,(i=[{key:"setup",value:function(){this.el=Object(s.e)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return''}(this.className,"jw-slider-"+this.orientation)),this.elementRail=this.el.getElementsByClassName("jw-slider-container")[0],this.elementBuffer=this.el.getElementsByClassName("jw-buffer")[0],this.elementProgress=this.el.getElementsByClassName("jw-progress")[0],this.elementThumb=this.el.getElementsByClassName("jw-knob")[0],this.ui=new u.a(this.element(),{preventScrolling:!0}).on("dragStart",this.dragStart,this).on("drag",this.dragMove,this).on("dragEnd",this.dragEnd,this).on("click tap",this.tap,this)}},{key:"dragStart",value:function(){this.trigger("dragStart"),this.railBounds=be(this.elementRail)}},{key:"dragEnd",value:function(e){this.dragMove(e),this.trigger("dragEnd")}},{key:"dragMove",value:function(e){var t,i,n=this.railBounds=this.railBounds?this.railBounds:be(this.elementRail);return i="horizontal"===this.orientation?(t=e.pageX)n.right?100:100*Object(l.a)((t-n.left)/n.width,0,1):(t=e.pageY)>=n.bottom?0:t<=n.top?100:100*Object(l.a)((n.height-(t-n.top))/n.height,0,1),this.render(i),this.update(i),!1}},{key:"tap",value:function(e){this.railBounds=be(this.elementRail),this.dragMove(e)}},{key:"limit",value:function(e){return e}},{key:"update",value:function(e){this.trigger("update",{percentage:e})}},{key:"render",value:function(e){e=Math.max(0,Math.min(e,100)),"horizontal"===this.orientation?(this.elementThumb.style.left=e+"%",this.elementProgress.style.width=e+"%"):(this.elementThumb.style.bottom=e+"%",this.elementProgress.style.height=e+"%")}},{key:"updateBuffer",value:function(e){this.elementBuffer.style.width=e+"%"}},{key:"element",value:function(){return this.el}}])&&ge(t.prototype,i),n&&ge(t,n),e}(),ve=function(e,t){e&&t&&(e.setAttribute("aria-label",t),e.setAttribute("role","button"),e.setAttribute("tabindex","0"))};function ye(e,t){for(var i=0;i0&&Array.prototype.forEach.call(o,(function(e){"string"==typeof e?a.el.appendChild(d(e)):a.el.appendChild(e)}))}var t,i,n;return t=e,(i=[{key:"addContent",value:function(e){this.content&&this.removeContent(),this.content=e,this.tooltip.appendChild(e)}},{key:"removeContent",value:function(){this.content&&(this.tooltip.removeChild(this.content),this.content=null)}},{key:"hasContent",value:function(){return!!this.content}},{key:"element",value:function(){return this.el}},{key:"openTooltip",value:function(e){this.isOpen||(this.trigger("open-"+this.componentType,e,{isOpen:!0}),this.isOpen=!0,Object(s.v)(this.el,this.openClass,this.isOpen))}},{key:"closeTooltip",value:function(e){this.isOpen&&(this.trigger("close-"+this.componentType,e,{isOpen:!1}),this.isOpen=!1,Object(s.v)(this.el,this.openClass,this.isOpen))}},{key:"toggleOpenState",value:function(e){this.isOpen?this.closeTooltip(e):this.openTooltip(e)}}])&&ye(t.prototype,i),n&&ye(t,n),e}(),xe=i(22),Oe=i(57);function Ce(e,t){for(var i=0;i=this.thumbnails.length&&(t=this.thumbnails.length-1);var i=this.thumbnails[t].img;return i.indexOf("://")<0&&(i=this.vttPath?this.vttPath+"/"+i:i),i},loadThumbnail:function(e){var t=this.chooseThumbnail(e),i={margin:"0 auto",backgroundPosition:"0 0"};if(t.indexOf("#xywh")>0)try{var n=/(.+)#xywh=(\d+),(\d+),(\d+),(\d+)/.exec(t);t=n[1],i.backgroundPosition=-1*n[2]+"px "+-1*n[3]+"px",i.width=n[4],this.timeTip.setWidth(+i.width),i.height=n[5]}catch(e){return}else this.individualImage||(this.individualImage=new Image,this.individualImage.onload=Object(w.a)((function(){this.individualImage.onload=null,this.timeTip.image({width:this.individualImage.width,height:this.individualImage.height}),this.timeTip.setWidth(this.individualImage.width)}),this),this.individualImage.src=t);return i.backgroundImage='url("'+t+'")',i},showThumbnail:function(e){this._model.get("containerWidth")<=420||this.thumbnails.length<1||this.timeTip.image(this.loadThumbnail(e))},resetThumbnails:function(){this.timeTip.image({backgroundImage:"",width:0,height:0}),this.thumbnails=[]}};function _e(e,t,i){return(_e="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,i){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Ie(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(i):o.value}})(e,t,i||e)}function ze(e){return(ze="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Pe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ae(e,t){for(var i=0;i-1&&(n="Live")}var d=this.timeTip;d.update(n),this.textLength!==n.length&&(this.textLength=n.length,d.resetWidth()),this.showThumbnail(u),Object(s.a)(d.el,"jw-open");var p=d.getWidth(),w=a.width/100,f=o-a.width,h=0;p>f&&(h=(p-f)/(200*w));var j=100*Math.min(1-h,Math.max(h,c)).toFixed(3);Object(pe.d)(d.el,{left:j+"%"})}}},{key:"hideTimeTooltip",value:function(){Object(s.o)(this.timeTip.el,"jw-open")}},{key:"updateCues",value:function(e,t){var i=this;this.resetCues(),t&&t.length&&(t.forEach((function(e){i.addCue(e)})),this.drawCues())}},{key:"updateAriaText",value:function(){var e=this._model;if(!e.get("seeking")){var t=e.get("position"),i=e.get("duration"),n=Object(je.timeFormat)(t);"DVR"!==this.streamType&&(n+=" of ".concat(Object(je.timeFormat)(i)));var o=this.el;document.activeElement!==o&&(this.timeUpdateKeeper.textContent=n),Object(s.t)(o,"aria-valuenow",t),Object(s.t)(o,"aria-valuetext",n)}}},{key:"reset",value:function(){this.resetThumbnails(),this.timeTip.resetWidth(),this.textLength=0}}]),t}(me);Object(w.h)(Ne.prototype,Me,Ee);var Fe=Ne;function qe(e,t){for(var i=0;i=75&&!e),Object(s.t)(r,"aria-valuenow",o),Object(s.t)(l,"aria-valuenow",o);var c="Volume ".concat(o,"%");Object(s.t)(r,"aria-valuetext",c),Object(s.t)(l,"aria-valuetext",c),document.activeElement!==r&&document.activeElement!==l&&(this._volumeAnnouncer.textContent=c)}}},{key:"onCastAvailable",value:function(e,t){this.elements.cast.toggle(t)}},{key:"onCastActive",value:function(e,t){this.elements.fullscreen.toggle(!t),this.elements.cast.button&&Object(s.v)(this.elements.cast.button,"jw-off",!t)}},{key:"onElapsed",value:function(e,t){var i,n,o=e.get("duration");if("DVR"===e.get("streamType")){var a=Math.ceil(t),r=this._model.get("dvrSeekLimit");i=n=a>=-r?"":"-"+Object(je.timeFormat)(-(t+r)),e.set("dvrLive",a>=-r)}else i=Object(je.timeFormat)(t),n=Object(je.timeFormat)(o-t);this.elements.elapsed.textContent=i,this.elements.countdown.textContent=n}},{key:"onDuration",value:function(e,t){this.elements.duration.textContent=Object(je.timeFormat)(Math.abs(t))}},{key:"onAudioMode",value:function(e,t){var i=this.elements.time.element();t?this.elements.buttonContainer.insertBefore(i,this.elements.elapsed):Object(s.m)(this.el,i)}},{key:"element",value:function(){return this.el}},{key:"setAltText",value:function(e,t){this.elements.alt.textContent=t}},{key:"closeMenus",value:function(e){this.menus.forEach((function(t){e&&e.target===t.el||t.closeTooltip(e)}))}},{key:"rewind",value:function(){var e,t=0,i=this._model.get("currentTime");i?e=i-10:(e=this._model.get("position")-10,"DVR"===this._model.get("streamType")&&(t=this._model.get("duration"))),this._api.seek(Math.max(e,t),{reason:"interaction"})}},{key:"onState",value:function(e,t){var i=e.get("localization"),n=i.play;this.setPlayText(n),t===a.pb&&("LIVE"!==e.get("streamType")?(n=i.pause,this.setPlayText(n)):(n=i.stop,this.setPlayText(n))),Object(s.t)(this.elements.play.element(),"aria-label",n)}},{key:"onStreamTypeChange",value:function(e,t){var i="LIVE"===t,n="DVR"===t;this.elements.rewind.toggle(!i),this.elements.live.toggle(i||n),Object(s.t)(this.elements.live.element(),"tabindex",i?"-1":"0"),this.elements.duration.style.display=n?"none":"",this.onDuration(e,e.get("duration")),this.onState(e,e.get("state"))}},{key:"addLogo",value:function(e){var t=this.elements.buttonContainer,i=new he(e.file,this._model.get("localization").logo,(function(){e.link&&Object(s.l)(e.link,"_blank",{rel:"noreferrer"})}),"logo","jw-logo-button");e.link||Object(s.t)(i.element(),"tabindex","-1"),t.insertBefore(i.element(),t.querySelector(".jw-spacer").nextSibling)}},{key:"goToLiveEdge",value:function(){if("DVR"===this._model.get("streamType")){var e=Math.min(this._model.get("position"),-1),t=this._model.get("dvrSeekLimit");this._api.seek(Math.max(-t,e),{reason:"interaction"}),this._api.play({reason:"interaction"})}}},{key:"updateButtons",value:function(e,t,i){if(t){var n,o,a=this.elements.buttonContainer;t!==i&&i?(n=at(t,i),o=at(i,t),this.removeButtons(a,o)):n=t;for(var r=n.length-1;r>=0;r--){var l=n[r],s=new he(l.img,l.tooltip,l.callback,l.id,l.btnClass);l.tooltip&&$e(s.element(),l.id,l.tooltip);var c=void 0;"related"===s.id?c=this.elements.settingsButton.element():"share"===s.id?c=a.querySelector('[button="related"]')||this.elements.settingsButton.element():(c=this.elements.spacer.nextSibling)&&"logo"===c.getAttribute("button")&&(c=c.nextSibling),a.insertBefore(s.element(),c)}}}},{key:"removeButtons",value:function(e,t){for(var i=t.length;i--;){var n=e.querySelector('[button="'.concat(t[i].id,'"]'));n&&e.removeChild(n)}}},{key:"toggleCaptionsButtonState",value:function(e){var t=this.elements.captionsButton;t&&Object(s.v)(t.element(),"jw-off",!e)}},{key:"destroy",value:function(){var e=this;this._model.off(null,null,this),Object.keys(this.elements).forEach((function(t){var i=e.elements[t];i&&"function"==typeof i.destroy&&e.elements[t].destroy()})),this.ui.forEach((function(e){e.destroy()})),this.ui=[]}}])&&tt(t.prototype,i),n&&tt(t,n),e}(),st=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return'
    ')+'
    ')+"
    "},ct=function(e){return'
    '+st("rewind",e.rewind)+st("display",e.playback)+st("next",e.next)+"
    "};function ut(e,t){for(var i=0;i'.concat(a.playback,"")),Object(s.a)(o.icon,"jw-idle-label"),o.icon.appendChild(l))}return o}var i,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&jt(e,t)}(t,e),i=t,(n=[{key:"element",value:function(){return this.el}}])&&wt(i.prototype,n),o&&wt(i,o),t}(r.a);function bt(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return'
    '+'
    '.concat(e,"
    ")+'
    '.concat(t,"
    ")+'
    '.concat(i,"
    ")+"
    "+'')+"
    "}());t.querySelector(".jw-nextup-close").appendChild(le("close")),this.addContent(t),this.closeButton=this.content.querySelector(".jw-nextup-close"),this.closeButton.setAttribute("aria-label",this.localization.close),this.tooltip=this.content.querySelector(".jw-nextup-tooltip");var i=this._model,n=i.player;this.enabled=!1,i.on("change:nextUp",this.onNextUp,this),n.change("duration",this.onDuration,this),n.change("position",this.onElapsed,this),n.change("streamType",this.onStreamType,this),n.change("state",(function(e,t){"complete"===t&&this.toggle(!1)}),this),this.closeUi=new u.a(this.closeButton,{directSelect:!0}).on("click tap enter",(function(){this.nextUpSticky=!1,this.toggle(!1)}),this),this.tooltipUi=new u.a(this.tooltip).on("click tap",this.click,this)}},{key:"loadThumbnail",value:function(e){return this.nextUpImage=new Image,this.nextUpImage.onload=function(){this.nextUpImage.onload=null}.bind(this),this.nextUpImage.src=e,{backgroundImage:'url("'+e+'")'}}},{key:"click",value:function(){var e=this.feedShownId;this.reset(),this._api.next({feedShownId:e,reason:"interaction"})}},{key:"toggle",value:function(e,t){if(this.enabled&&(Object(s.v)(this.container,"jw-nextup-sticky",!!this.nextUpSticky),this.shown!==e)){this.shown=e,Object(s.v)(this.container,"jw-nextup-container-visible",e),Object(s.v)(this._playerElement,"jw-flag-nextup",e);var i=this._model.get("nextUp");e&&i?(this.feedShownId=Object(et.b)(et.a),this.trigger("nextShown",{mode:i.mode,ui:"nextup",itemsShown:[i],feedData:i.feedData,reason:t,feedShownId:this.feedShownId})):this.feedShownId=""}}},{key:"setNextUpItem",value:function(e){var t=this;setTimeout((function(){if(t.thumbnail=t.content.querySelector(".jw-nextup-thumbnail"),Object(s.v)(t.content,"jw-nextup-thumbnail-visible",!!e.image),e.image){var i=t.loadThumbnail(e.image);Object(pe.d)(t.thumbnail,i)}t.header=t.content.querySelector(".jw-nextup-header"),t.header.textContent=Object(s.e)(t.localization.nextUp).textContent,t.title=t.content.querySelector(".jw-nextup-title");var n=e.title;t.title.textContent=n?Object(s.e)(n).textContent:"";var o=e.duration;o&&(t.duration=t.content.querySelector(".jw-nextup-duration"),t.duration.textContent="number"==typeof o?Object(je.timeFormat)(o):o)}),500)}},{key:"onNextUp",value:function(e,t){this.reset(),t||(t={showNextUp:!1}),this.enabled=!(!t.title&&!t.image),this.enabled&&(t.showNextUp||(this.nextUpSticky=!1,this.toggle(!1)),this.setNextUpItem(t))}},{key:"onDuration",value:function(e,t){if(t){var i=e.get("nextupoffset"),n=-10;i&&(n=Object(xt.d)(i,t)),n<0&&(n+=t),Object(xt.c)(i)&&t-5=this.offset;n&&void 0===i?(this.nextUpSticky=n,this.toggle(n,"time")):!n&&i&&this.reset()}}},{key:"onStreamType",value:function(e,t){"VOD"!==t&&(this.nextUpSticky=!1,this.toggle(!1))}},{key:"element",value:function(){return this.container}},{key:"addContent",value:function(e){this.content&&this.removeContent(),this.content=e,this.container.appendChild(e)}},{key:"removeContent",value:function(){this.content&&(this.container.removeChild(this.content),this.content=null)}},{key:"reset",value:function(){this.nextUpSticky=void 0,this.toggle(!1)}},{key:"destroy",value:function(){this.off(),this._model.off(null,null,this),this.closeUi&&this.closeUi.destroy(),this.tooltipUi&&this.tooltipUi.destroy()}}])&&Ot(t.prototype,i),n&&Ot(t,n),e}(),St=function(e,t){var i=e.featured,n=e.showLogo,o=e.type;return e.logo=n?'':"",'
  • ').concat(Mt[o](e,t),"
  • ")},Mt={link:function(e){var t=e.link,i=e.title,n=e.logo;return'').concat(n).concat(i||"","")},info:function(e,t){return'")},share:function(e,t){return'")},keyboardShortcuts:function(e,t){return'")}},Tt=i(23),Et=i(6),_t=i(13);function zt(e,t){for(var i=0;iJW Player '.concat(e,""),a={items:[{type:"info"},{title:Object(_t.e)(n)?"".concat(o," ").concat(n):"".concat(n," ").concat(o),type:"link",featured:!0,showLogo:!0,link:"https://jwplayer.com/learn-more?e=".concat(Pt[i])}]},r=t.get("provider"),l=a.items;if(r&&r.name.indexOf("flash")>=0){var s="Flash Version "+Object(Et.a)();l.push({title:s,type:"link",link:"http://www.adobe.com/software/flash/about/"})}return this.shortcutsTooltip&&l.splice(l.length-1,0,{type:"keyboardShortcuts"}),a}},{key:"rightClick",value:function(e){if(this.lazySetup(),this.mouseOverContext)return!1;this.hideMenu(),this.showMenu(e),this.addHideMenuHandlers()}},{key:"getOffset",value:function(e){var t=Object(s.c)(this.wrapperElement),i=e.pageX-t.left,n=e.pageY-t.top;return this.model.get("touchMode")&&(n-=100),{x:i,y:n}}},{key:"showMenu",value:function(e){var t=this,i=this.getOffset(e);return this.el.style.left=i.x+"px",this.el.style.top=i.y+"px",this.outCount=0,Object(s.a)(this.playerContainer,"jw-flag-rightclick-open"),Object(s.a)(this.el,"jw-open"),clearTimeout(this._menuTimeout),this._menuTimeout=setTimeout((function(){return t.hideMenu()}),3e3),!1}},{key:"hideMenu",value:function(e){e&&this.el&&this.el.contains(e.target)||(Object(s.o)(this.playerContainer,"jw-flag-rightclick-open"),Object(s.o)(this.el,"jw-open"))}},{key:"lazySetup",value:function(){var e,t,i,n,o=this,a=(e=this.buildArray(),t=this.model.get("localization"),i=e.items,n=(void 0===i?[]:i).map((function(e){return St(e,t)})),'
    '+'
      '.concat(n.join(""),"
    ")+"
    ");if(this.el){if(this.html!==a){this.html=a;var r=At(a);Object(s.h)(this.el);for(var l=r.childNodes.length;l--;)this.el.appendChild(r.firstChild)}}else this.html=a,this.el=At(this.html),this.wrapperElement.appendChild(this.el),this.hideMenuHandler=function(e){return o.hideMenu(e)},this.overHandler=function(){o.mouseOverContext=!0},this.outHandler=function(e){o.mouseOverContext=!1,e.relatedTarget&&!o.el.contains(e.relatedTarget)&&++o.outCount>1&&o.hideMenu()},this.infoOverlayHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.infoOverlay.open()},this.shortcutsTooltipHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.shortcutsTooltip.open()}}},{key:"setup",value:function(e,t,i){this.wrapperElement=i,this.model=e,this.mouseOverContext=!1,this.playerContainer=t,this.ui=new u.a(i).on("longPress",this.rightClick,this)}},{key:"addHideMenuHandlers",value:function(){this.removeHideMenuHandlers(),this.wrapperElement.addEventListener("touchstart",this.hideMenuHandler),document.addEventListener("touchstart",this.hideMenuHandler),o.OS.mobile||(this.wrapperElement.addEventListener("click",this.hideMenuHandler),document.addEventListener("click",this.hideMenuHandler),this.el.addEventListener("mouseover",this.overHandler),this.el.addEventListener("mouseout",this.outHandler)),this.el.querySelector(".jw-info-overlay-item").addEventListener("click",this.infoOverlayHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").addEventListener("click",this.shortcutsTooltipHandler)}},{key:"removeHideMenuHandlers",value:function(){this.wrapperElement&&(this.wrapperElement.removeEventListener("click",this.hideMenuHandler),this.wrapperElement.removeEventListener("touchstart",this.hideMenuHandler)),this.el&&(this.el.querySelector(".jw-info-overlay-item").removeEventListener("click",this.infoOverlayHandler),this.el.removeEventListener("mouseover",this.overHandler),this.el.removeEventListener("mouseout",this.outHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").removeEventListener("click",this.shortcutsTooltipHandler)),document.removeEventListener("click",this.hideMenuHandler),document.removeEventListener("touchstart",this.hideMenuHandler)}},{key:"destroy",value:function(){clearTimeout(this._menuTimeout),this.removeHideMenuHandlers(),this.el&&(this.hideMenu(),this.hideMenuHandler=null,this.el=null),this.wrapperElement&&(this.wrapperElement.oncontextmenu=null,this.wrapperElement=null),this.model&&(this.model=null),this.ui&&(this.ui.destroy(),this.ui=null)}}])&&zt(t.prototype,i),n&&zt(t,n),e}(),Rt=function(){return''};function It(e){var t=document.getElementsByClassName("jw-icon-settings")[0];if(t){var i="Right"===e?Object(s.k)(t):Object(s.n)(t);i&&i.focus()}}var Bt=function(e){Object.keys(e).forEach((function(t){e[t].deactivate()}))},Vt=function(e){return'"};var Ht=function(e){e.forEach((function(e){e.deactivate()}))},Nt=function(e){return'"};function Ft(e,t,i){var n,o=Object(s.e)(Nt(t)),a=new u.a(o).on("click tap enter",(function(e){i(e)})),r={activate:function(){Object(s.v)(o,"jw-settings-item-active",!0),o.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(s.v)(o,"jw-settings-item-active",!1),o.setAttribute("aria-checked","false"),n=!1},element:function(){return o},uiElement:function(){return a},destroy:function(){this.deactivate(),a.destroy()}};return Object.defineProperty(r,"active",{enumerable:!0,get:function(){return n}}),r}var qt="audioTracks",Dt="captions",Ut="quality",Wt="playbackRates",Qt=Ut,Yt=function(e,t,i,n,o){var a=e.getSubmenu(t);if(a)a.replaceContent(i);else{var r=p("jw-settings-".concat(t),(function(i){e.activateSubmenu(t,!1,i&&"enter"!==i.type),a.element().children[0].focus()}),t,[n]),l=r.element();l.setAttribute("role","menuitemradio"),l.setAttribute("aria-checked","false"),l.setAttribute("aria-label",o),(a=function(e,t,i){var n,o=[],a=Object(s.e)(Vt(e)),r=t.element();r.setAttribute("name",e),r.className+=" jw-submenu-"+e,t.show();var l=function(e,t){e?e.focus():void 0!==t&&o[t].element().focus()},c=function(e){var t=Object(s.k)(r),i=Object(s.n)(r),n=Object(s.k)(e.target),a=Object(s.n)(e.target),c=e.key.replace(/(Arrow|ape)/,"");switch(c){case"Tab":l(e.shiftKey?i:t);break;case"Left":l(i||Object(s.n)(document.getElementsByClassName("jw-icon-settings")[0]));break;case"Up":l(a,o.length-1);break;case"Right":l(t);break;case"Down":l(n,0)}e.preventDefault(),"Esc"!==c&&e.stopPropagation()},u={addContent:function(e){e&&(e.forEach((function(e){a.appendChild(e.element()),e.element().setAttribute("tabindex","-1"),e.element().addEventListener("keydown",c)})),o=e)},replaceContent:function(e){u.removeContent(),this.addContent(e)},removeContent:function(){o.forEach((function(e){e.element().removeEventListener("keydown",c)})),Object(s.h)(a),o=[]},getItems:function(){return o},activate:function(){Object(s.v)(a,"jw-settings-submenu-active",!0),a.setAttribute("aria-expanded","true"),r.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(s.v)(a,"jw-settings-submenu-active",!1),a.setAttribute("aria-expanded","false"),r.setAttribute("aria-checked","false"),n=!1},activateItem:function(e){var t=o[e];t&&!t.active&&(Ht(o),t.activate())},element:function(){return a},destroy:function(){o&&(o.forEach((function(e){e.destroy()})),this.removeContent())}};return Object.defineProperties(u,{name:{enumerable:!0,get:function(){return e}},active:{enumerable:!0,get:function(){return n}},categoryButtonElement:{enumerable:!0,get:function(){return r}},isDefault:{enumerable:!0,get:function(){return i}}}),u}(t,r,t===Qt)).addContent(i),"ontouchstart"in window||$e(l,t,o),e.addSubmenu(a)}return a};function Xt(e){e.removeSubmenu(Dt)}function Zt(e){e.removeSubmenu(qt)}function Kt(e){e.removeSubmenu(Ut)}function Jt(e){e.removeSubmenu(Wt)}function Gt(e,t,i){var n=e.elements.settingsButton,o=function(e,t,i){var n,o=function(e){/jw-(settings|video|nextup-close|sharing-link|share-item)/.test(e.target.className)||f.close()},a=null,r={},l=Object(s.e)(Rt()),c=new u.a(l).on("keydown",(function(e){var t=e.sourceEvent,i=e.target,n=Object(s.k)(i),o=Object(s.n)(i),a=t.key.replace(/(Arrow|ape)/,"");switch(a){case"Esc":f.close(e);break;case"Left":o?o.focus():(f.close(),It(a));break;case"Right":n&&d.element()&&i!==d.element()&&n.focus();break;case"Up":case"Down":f.activateSubmenu(i.getAttribute("name"),"Up"===a)}if(t.stopPropagation(),/13|27|32|37|38|39|40/.test(t.keyCode))return t.preventDefault(),!1})),d=p("jw-settings-close",(function(e){f.close(e)}),i.close,[le("close")]);d.ui.on("keydown",(function(e){var t=e.sourceEvent,i=t.key.replace(/(Arrow|ape)/,"");("Enter"===i||"Right"===i||"Tab"===i&&!t.shiftKey)&&f.close(t),"Right"===i&&It(t.key)})),d.show();var w=l.querySelector(".jw-settings-topbar");w.appendChild(d.element());var f={ui:c,closeButton:d,open:function(t,i){(e(n=!0,i),l.setAttribute("aria-expanded","true"),document.addEventListener("click",o),t&&i&&"enter"===i.type)?a.categoryButtonElement.focus():a.element().firstChild.focus()},close:function(t){e(n=!1,t),a=null,Bt(r),l.setAttribute("aria-expanded","false"),document.removeEventListener("click",o)},toggle:function(){n?this.close():this.open()},addSubmenu:function(e){if(e){var i=e.name;if(r[i]=e,e.isDefault)Object(s.m)(w,e.categoryButtonElement),e.categoryButtonElement.addEventListener("keydown",(function(e){9===e.keyCode&&e.shiftKey&&f.close(e)}));else{var n=w.querySelector(".jw-submenu-sharing");w.insertBefore(e.categoryButtonElement,n||d.element())}l.appendChild(e.element()),t.show()}},getSubmenu:function(e){return r[e]},getSubmenuNames:function(){return Object.keys(r)},removeSubmenu:function(e){var i=r[e];i&&i.element().parentNode===l&&(l.removeChild(i.element()),w.removeChild(i.categoryButtonElement),i.destroy(),delete r[e],Object.keys(r).length||(this.close(),t.hide()))},activateSubmenu:function(e,t){var i=r[e];i&&(i.active||(Bt(r),i.activate(),a=i),(t?i.element().lastChild:i.element().firstChild).focus())},activateFirstSubmenu:function(e){var t=Object.keys(r)[0];this.activateSubmenu(t,!1,e)},element:function(){return l},destroy:function(){this.close(),this.ui.destroy(),this.closeButton.ui.destroy(),Object(s.h)(l)}};return Object.defineProperties(f,{visible:{enumerable:!0,get:function(){return n}}}),f}(t,{hide:function(){return n.hide()},show:function(){return n.show()}},i);return e.on("settingsInteraction",(function(e,t,i){var n=o.getSubmenu(e),a=i&&"enter"!==i.type,r=Object(w.c)(o.open,10);(n||t)&&(o.visible?t||n.active?o.close():o.activateSubmenu(e,!1,a):(n?o.activateSubmenu(e,!1,a):o.activateFirstSubmenu(a),r(t,i)))})),o}function $t(e,t,i,n){var o=i.player,a=function(t,i){var n=e.getSubmenu(t);n&&n.activateItem(i)},r=function(t,i){!i||i.length<=1?Zt(e):function(e,t,i,n,o){var a=t.map((function(t,n){return Ft(t.name,t.name,(function(t){i(n),e.close(t)}))}));Yt(e,qt,a,le("audio-tracks"),o).activateItem(n)}(e,i,(function(e){return n.setCurrentAudioTrack(e)}),o.get("currentAudioTrack"),o.get("localization").audioTracks)},l=function(i,a){if(!a||a.length<=1)Kt(e);else{var r=o.get("localization"),l=r.hd,s=r.auto;!function(e,t,i,n,o,a){var r=t.map((function(t,n){var o=t.label;return"Auto"===o&&0===n&&(o="".concat(a,' ')),Ft(t.label,o,(function(t){i(n),e.close(t)}))}));Yt(e,Ut,r,le("quality-100"),o).activateItem(n)}(e,a,(function(e){return n.setCurrentQuality(e)}),o.get("currentLevel"),l,s)}!function(e,t){var i=e.getSubmenuNames(),n=i.length>1||i.some((function(e){return"quality"===e||"playbackRates"===e}));t.elements.settingsButton.toggle(n)}(e,t)},s=function(t,i){o.get("supportsPlaybackRate")&&"LIVE"!==o.get("streamType")&&o.get("playbackRateControls")&&i.length>1?function(e,t,i,n,o){var a=t.map((function(t){return Ft(0,Object(_t.e)(o)?"x"+t:t+"x",(function(n){i(t),e.close(n)}))}));Yt(e,Wt,a,le("playback-rate"),o).activateItem(n)}(e,i,(function(e){return n.setPlaybackRate(e)}),i.indexOf(o.get("playbackRate")),o.get("localization").playbackRates):Jt(e)},c=function(e,t,i){var n=o.get("levels");if(n&&"Auto"===n[0].label){var a=t.getItems()[0].element().querySelector(".jw-auto-label"),r=n[e.index]||{label:""};a.textContent=i?"":r.label}};o.change("levels",l,e),o.on("change:currentLevel",(function(t,i){var n=e.getSubmenu("quality"),r=o.get("visualQuality");r&&n&&c(r.level,n,i),a("quality",i)}),e),o.change("audioTracks",r,e),o.on("change:currentAudioTrack",(function(e,t){a("audioTracks",t)}),e),o.on("change:playlistItem",(function(){Xt(e),t.elements.captionsButton.hide(),e.visible&&e.close()})),o.change("captionsList",(function(i,a){var r=t.elements.captionsButton;if(!a||a.length<=1)return Xt(e),void r.hide();var l=o.get("localization"),s=l.cc,c=l.off;!function(e,t,i,n,o,a){var r=t.map((function(t,n){var o=t.label;return"Off"!==o&&"off"!==t.id||0!==n||(o=a),Ft(t.id,o,(function(t){i(n),e.close(t)}))}));Yt(e,Dt,r,le("cc-off"),o).activateItem(n)}(e,a,(function(e){return n.setCurrentCaptions(e)}),o.get("captionsIndex"),s,c),t.toggleCaptionsButtonState(!!o.get("captionsIndex")),r.show()}),e),o.change("captionsIndex",(function(i,n){var o=e.getSubmenu("captions");o&&(o.activateItem(n),t.toggleCaptionsButtonState(!!n))}),e),o.change("playbackRates",s,e),o.change("playbackRate",(function(e,t){var i=o.get("playbackRates");i&&a("playbackRates",i.indexOf(t))}),e),o.on("change:playbackRateControls",(function(){s(0,o.get("playbackRates"))})),o.on("change:visualQuality",(function(t,i){var n=e.getSubmenu("quality");i&&n&&c(i.level,n,o.get("currentLevel"))})),o.on("change:castActive",(function(t,i,n){i!==n&&(i?(Zt(e),Kt(e),Jt(e)):(r(0,o.get("audioTracks")),l(0,o.get("levels")),s(0,o.get("playbackRates"))))}),e),o.on("change:streamType",(function(){s(0,o.get("playbackRates"))}),e)}var ei=i(58),ti=i(36),ii=i(12),ni=function(e,t,i,n){var o=Object(s.e)('
    '),r=!1,l=null,c=!1,u=function(e){/jw-info/.test(e.target.className)||w.close()},d=function(){var n,a,l,c,u,d=p("jw-info-close",(function(){w.close()}),t.get("localization").close,[le("close")]);d.show(),Object(s.m)(o,d.element()),a=o.querySelector(".jw-info-title"),l=o.querySelector(".jw-info-duration"),c=o.querySelector(".jw-info-description"),u=o.querySelector(".jw-info-clientid"),t.change("playlistItem",(function(e,t){var i=t.description,n=t.title;Object(s.q)(c,i||""),Object(s.q)(a,n||"Unknown Title")})),t.change("duration",(function(e,i){var n="";switch(t.get("streamType")){case"LIVE":n="Live";break;case"DVR":n="DVR";break;default:i&&(n=Object(je.timeFormat)(i))}l.textContent=n}),w),u.textContent=(n=i.getPlugin("jwpsrv"))&&"function"==typeof n.doNotTrackUser&&n.doNotTrackUser()?"":"Client ID: ".concat(function(){try{return window.localStorage.jwplayerLocalId}catch(e){return"none"}}()),e.appendChild(o),r=!0};var w={open:function(){r||d(),document.addEventListener("click",u),c=!0;var e=t.get("state");e===a.pb&&i.pause("infoOverlayInteraction"),l=e,n(!0)},close:function(){document.removeEventListener("click",u),c=!1,t.get("state")===a.ob&&l===a.pb&&i.play("infoOverlayInteraction"),l=null,n(!1)},destroy:function(){this.close(),t.off(null,null,this)}};return Object.defineProperties(w,{visible:{enumerable:!0,get:function(){return c}}}),w};var oi=function(e,t,i){var n,o=!1,r=null,l=i.get("localization").shortcuts,c=Object(s.e)(function(e,t){var i=e.map((function(e){return'
    '+''.concat(e.description,"")+''.concat(e.key,"")+"
    "})).join("");return'
    ')+'Press shift question mark to access a list of keyboard shortcuts
    '+''.concat(t,"")+'
    '+"".concat(i)+"
    "}(function(e){var t=e.playPause,i=e.volumeToggle,n=e.fullscreenToggle,o=e.seekPercent,a=e.increaseVolume,r=e.decreaseVolume,l=e.seekForward,s=e.seekBackward;return[{key:e.spacebar,description:t},{key:"↑",description:a},{key:"↓",description:r},{key:"→",description:l},{key:"←",description:s},{key:"c",description:e.captionsToggle},{key:"f",description:n},{key:"m",description:i},{key:"0-9",description:o}]}(l),l.keyboardShortcuts)),u={reason:"settingsInteraction"},d=c.querySelector(".jw-switch"),w=function(){d.setAttribute("aria-checked",i.get("enableShortcuts")),d.addEventListener("click",j),Object(s.a)(c,"jw-open"),r=i.get("state"),c.querySelector(".jw-shortcuts-close").focus(),document.addEventListener("click",h),o=!0,t.pause(u)},f=function(){d.removeEventListener("click",j),Object(s.o)(c,"jw-open"),document.removeEventListener("click",h),e.focus(),o=!1,r===a.pb&&t.play(u)},h=function(e){/jw-shortcuts|jw-switch/.test(e.target.className)||f()},j=function(e){var t=e.currentTarget,n="true"!==t.getAttribute("aria-checked");t.setAttribute("aria-checked",n),i.set("enableShortcuts",n)};return n=p("jw-shortcuts-close",(function(){f()}),i.get("localization").close,[le("close")]),Object(s.m)(c,n.element()),n.show(),e.appendChild(c),{el:c,close:f,open:w,toggleVisibility:function(){o?f():w()}}},ai=function(e){return'
    ')+"
    "};function ri(e){return(ri="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function li(e,t){for(var i=0;i16?n.activeTimeout=setTimeout(n.userInactiveTimeout,e):n.playerContainer.querySelector(".jw-tab-focus")?n.resetActiveTimeout():n.userInactive()},n}var i,n,r;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ji(e,t)}(t,e),i=t,(n=[{key:"resetActiveTimeout",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.inactiveTime=0}},{key:"enable",value:function(e,t){var i=this,n=this.context.createElement("div");n.className="jw-controls jw-reset",this.div=n;var r=this.context.createElement("div");r.className="jw-controls-backdrop jw-reset",this.backdrop=r,this.logo=this.playerContainer.querySelector(".jw-logo");var c=t.get("touchMode");if(!this.displayContainer){var u=new yt(t,e);u.buttons.display.on("click tap enter",(function(){i.trigger(a.p),i.userActive(1e3),e.playToggle(mi()),t.get("isFloating")?i.wrapperElement.focus():i.playerContainer.focus()})),this.div.appendChild(u.element()),this.displayContainer=u}this.infoOverlay=new ni(n,t,e,(function(e){Object(s.v)(i.div,"jw-info-open",e),e&&i.div.querySelector(".jw-info-close").focus()})),o.OS.mobile||(this.shortcutsTooltip=new oi(this.wrapperElement,e,t)),this.rightClickMenu=new Lt(this.infoOverlay,this.shortcutsTooltip),c?(Object(s.a)(this.playerContainer,"jw-flag-touch"),this.rightClickMenu.setup(t,this.playerContainer,this.wrapperElement)):t.change("flashBlocked",(function(e,t){t?i.rightClickMenu.destroy():i.rightClickMenu.setup(e,i.playerContainer,i.wrapperElement)}),this);var d=t.get("floating");if(d){var w=new di(n,t.get("localization").close);w.on(a.sb,(function(){return i.trigger("dismissFloating",{doNotForward:!0})})),!1!==d.dismissible&&Object(s.a)(this.playerContainer,"jw-floating-dismissible")}var f=this.controlbar=new lt(e,t,this.playerContainer.querySelector(".jw-hidden-accessibility"));if(f.on(a.sb,(function(){return i.userActive()})),f.on("nextShown",(function(e){this.trigger("nextShown",e)}),this),f.on("adjustVolume",v,this),t.get("nextUpDisplay")&&!f.nextUpToolTip){var h=new Ct(t,e,this.playerContainer);h.on("all",this.trigger,this),h.setup(this.context),f.nextUpToolTip=h,this.div.appendChild(h.element())}this.div.appendChild(f.element());var j=null,g=this.settingsMenu=Gt(f,(function(n,o){var r=t.get("state"),l={reason:"settingsInteraction"},c="keydown"===(o&&o.sourceEvent||o||{}).type;Object(s.v)(i.div,"jw-settings-open",n),Object(ei.a)(t.get("containerWidth"))<2&&(n&&r===a.pb?e.pause(l):n||r!==a.ob||j!==a.pb||e.play(l));var u=n||c?0:gi;i.userActive(u),j=r;var d=i.controlbar.elements.settingsButton;!n&&d&&(c?d.element().focus():o&&(t.get("isFloating")?i.wrapperElement:i.playerContainer).focus())}),t.get("localization"));$t(g,f,t,e),o.OS.mobile?this.div.appendChild(g.element()):(this.playerContainer.setAttribute("aria-describedby","jw-shortcuts-tooltip-explanation"),this.div.insertBefore(g.element(),f.element()));var b=function(t){if(t.get("autostartMuted")){var n=function(){return i.unmuteAutoplay(e,t)},a=function(e,t){t||n()};o.OS.mobile&&(i.mute=p("jw-autostart-mute jw-off",n,t.get("localization").unmute,[le("volume-0")]),i.mute.show(),i.div.appendChild(i.mute.element())),f.renderVolume(!0,t.get("volume")),Object(s.a)(i.playerContainer,"jw-flag-autostart"),t.on("change:autostartFailed",n,i),t.on("change:autostartMuted change:mute",a,i),i.muteChangeCallback=a,i.unmuteCallback=n}};function m(i){var n=0,o=t.get("duration"),a=t.get("position");if("DVR"===t.get("streamType")){var r=t.get("dvrSeekLimit");n=o,o=Math.max(a,-r)}var s=Object(l.a)(a+i,n,o);e.seek(s,mi())}function v(i){var n=Object(l.a)(t.get("volume")+i,0,100);e.setVolume(n)}t.once("change:autostartMuted",b),b(t);var y=function(n){if(n.ctrlKey||n.metaKey)return!0;var o=!i.settingsMenu.visible,a=!0===t.get("enableShortcuts"),r=i.instreamState;if(a||-1!==bi.indexOf(n.keyCode)){switch(n.keyCode){case 27:if(t.get("fullscreen"))e.setFullscreen(!1),i.playerContainer.blur(),i.userInactive();else{var l=e.getPlugin("related");l&&l.close({type:"escape"})}i.rightClickMenu.el&&i.rightClickMenu.hideMenuHandler(),i.infoOverlay.visible&&i.infoOverlay.close(),i.shortcutsTooltip&&i.shortcutsTooltip.close();break;case 13:case 32:if(document.activeElement.classList.contains("jw-switch")&&32===n.keyCode)return!0;e.playToggle(mi());break;case 37:!r&&o&&m(-5);break;case 39:!r&&o&&m(5);break;case 38:o&&v(10);break;case 40:o&&v(-10);break;case 67:var s=e.getCaptionsList().length;if(s){var c=(e.getCurrentCaptions()+1)%s;e.setCurrentCaptions(c)}break;case 77:e.setMute();break;case 70:e.setFullscreen();break;case 191:i.shortcutsTooltip&&i.shortcutsTooltip.toggleVisibility();break;default:if(n.keyCode>=48&&n.keyCode<=59){var u=(n.keyCode-48)/10*t.get("duration");e.seek(u,mi())}}return/13|32|37|38|39|40/.test(n.keyCode)?(n.preventDefault(),!1):void 0}};this.playerContainer.addEventListener("keydown",y),this.keydownCallback=y;var k=function(e){if(9===e.keyCode){var t=i.playerContainer.contains(e.target)?0:gi;i.userActive(t)}};this.playerContainer.addEventListener("keyup",k),this.keyupCallback=k;var x=function(e){var t=e.relatedTarget||document.querySelector(":focus");t&&(i.playerContainer.contains(t)||i.userInactive())};this.playerContainer.addEventListener("blur",x,!0),this.blurCallback=x;var O=function e(){"jw-shortcuts-tooltip-explanation"===i.playerContainer.getAttribute("aria-describedby")&&i.playerContainer.removeAttribute("aria-describedby"),i.playerContainer.removeEventListener("blur",e,!0)};this.shortcutsTooltip&&(this.playerContainer.addEventListener("blur",O,!0),this.onRemoveShortcutsDescription=O),this.userActive(),this.addControls(),this.addBackdrop(),t.set("controlsEnabled",!0)}},{key:"addControls",value:function(){this.wrapperElement.appendChild(this.div)}},{key:"disable",value:function(e){var t=this.nextUpToolTip,i=this.settingsMenu,n=this.infoOverlay,o=this.controlbar,a=this.rightClickMenu,r=this.playerContainer,l=this.div;clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.off(),e.off(null,null,this),e.set("controlsEnabled",!1),l.parentNode&&(Object(s.o)(r,"jw-flag-touch"),l.parentNode.removeChild(l)),o&&o.destroy(),a&&a.destroy(),this.keydownCallback&&r.removeEventListener("keydown",this.keydownCallback),this.keyupCallback&&r.removeEventListener("keyup",this.keyupCallback),this.blurCallback&&r.removeEventListener("blur",this.blurCallback),this.onRemoveShortcutsDescription&&r.removeEventListener("blur",this.onRemoveShortcutsDescription),this.displayContainer&&this.displayContainer.destroy(),t&&t.destroy(),i&&(i.destroy(),l.removeChild(i.element())),n&&n.destroy(),this.removeBackdrop()}},{key:"controlbarHeight",value:function(){return this.dimensions.cbHeight||(this.dimensions.cbHeight=this.controlbar.element().clientHeight),this.dimensions.cbHeight}},{key:"element",value:function(){return this.div}},{key:"resize",value:function(){this.dimensions={}}},{key:"unmuteAutoplay",value:function(e,t){var i=!t.get("autostartFailed"),n=t.get("mute");i?n=!1:t.set("playOnViewable",!1),this.muteChangeCallback&&(t.off("change:autostartMuted change:mute",this.muteChangeCallback),this.muteChangeCallback=null),this.unmuteCallback&&(t.off("change:autostartFailed",this.unmuteCallback),this.unmuteCallback=null),t.set("autostartFailed",void 0),t.set("autostartMuted",void 0),e.setMute(n),this.controlbar.renderVolume(n,t.get("volume")),this.mute&&this.mute.hide(),Object(s.o)(this.playerContainer,"jw-flag-autostart"),this.userActive()}},{key:"mouseMove",value:function(e){var t=this.controlbar.element().contains(e.target),i=this.controlbar.nextUpToolTip&&this.controlbar.nextUpToolTip.element().contains(e.target),n=this.logo&&this.logo.contains(e.target),o=t||i||n?0:gi;this.userActive(o)}},{key:"userActive",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gi;e>0?(this.inactiveTime=Object(c.a)()+e,-1===this.activeTimeout&&(this.activeTimeout=setTimeout(this.userInactiveTimeout,e))):this.resetActiveTimeout(),this.showing||(Object(s.o)(this.playerContainer,"jw-flag-user-inactive"),this.showing=!0,this.trigger("userActive"))}},{key:"userInactive",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.settingsMenu.visible||(this.inactiveTime=0,this.showing=!1,Object(s.a)(this.playerContainer,"jw-flag-user-inactive"),this.trigger("userInactive"))}},{key:"addBackdrop",value:function(){var e=this.instreamState?this.div:this.wrapperElement.querySelector(".jw-captions");this.wrapperElement.insertBefore(this.backdrop,e)}},{key:"removeBackdrop",value:function(){var e=this.backdrop.parentNode;e&&e.removeChild(this.backdrop)}},{key:"setupInstream",value:function(){this.instreamState=!0,this.userActive(),this.addBackdrop(),this.settingsMenu&&this.settingsMenu.close(),Object(s.o)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","-1")}},{key:"destroyInstream",value:function(e){this.instreamState=null,this.addBackdrop(),e.get("autostartMuted")&&Object(s.a)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","0")}}])&&wi(i.prototype,n),r&&wi(i,r),t}(r.a)},function(e,t,i){"use strict";i.r(t);var n=i(0),o=i(12),a=i(50),r=i(37);var l=i(44),s=i(51),c=i(26),u=i(25),d=i(3),p=i(46),w=i(2),f=i(7),h=i(34);function j(e){var t=!1;return{async:function(){var i=this,n=arguments;return Promise.resolve().then((function(){if(!t)return e.apply(i,n)}))},cancel:function(){t=!0},cancelled:function(){return t}}}var g=i(1);function b(e){return function(t,i){var o=e.mediaModel,a=Object(n.h)({},i,{type:t});switch(t){case d.T:if(o.get(d.T)===i.mediaType)return;o.set(d.T,i.mediaType);break;case d.U:return void o.set(d.U,Object(n.h)({},i));case d.M:if(i[t]===e.model.getMute())return;break;case d.bb:i.newstate===d.mb&&(e.thenPlayPromise.cancel(),o.srcReset());var r=o.attributes.mediaState;o.attributes.mediaState=i.newstate,o.trigger("change:mediaState",o,i.newstate,r);break;case d.F:return e.beforeComplete=!0,e.trigger(d.B,a),void(e.attached&&!e.background&&e._playbackComplete());case d.G:o.get("setup")?(e.thenPlayPromise.cancel(),o.srcReset()):(t=d.tb,a.code+=1e5);break;case d.K:a.metadataType||(a.metadataType="unknown");var l=i.duration;Object(n.v)(l)&&(o.set("seekRange",i.seekRange),o.set("duration",l));break;case d.D:o.set("buffer",i.bufferPercent);case d.S:o.set("seekRange",i.seekRange),o.set("position",i.position),o.set("currentTime",i.currentTime);var s=i.duration;Object(n.v)(s)&&o.set("duration",s),t===d.S&&Object(n.s)(e.item.starttime)&&delete e.item.starttime;break;case d.R:var c=e.mediaElement;c&&c.paused&&o.set("mediaState","paused");break;case d.I:o.set(d.I,i.levels);case d.J:var u=i.currentQuality,p=i.levels;u>-1&&p.length>1&&o.set("currentLevel",parseInt(u));break;case d.f:o.set(d.f,i.tracks);case d.g:var w=i.currentTrack,f=i.tracks;w>-1&&f.length>0&&w=Math.max(s,p.a)&&(e.preloadNextItem(),v=!0)}function P(e){var t={};b.tag&&(t.tag=b.tag),this.trigger(d.F,t),A.call(this,e)}function A(e){j={},a&&h+10?e:null,f&&f.model.set("skipOffset",l)}};Object(n.h)(se.prototype,f.a);var ce=se,ue=i(63),de=i(60),pe=function(e){var t=this,i=[],n={},o=0,a=0;function r(e){if(e.data=e.data||[],e.name=e.label||e.name||e.language,e._id=Object(de.a)(e,i.length),!e.name){var t=Object(de.b)(e,o);e.name=t.label,o=t.unknownCount}n[e._id]=e,i.push(e)}function l(){for(var e=[{id:"off",label:"Off"}],t=0;t')+'
    '},he=i(36),je=44,ge=function(e){var t=e.get("height");if(e.get("aspectratio"))return!1;if("string"==typeof t&&t.indexOf("%")>-1)return!1;var i=1*t||NaN;return!!(i=isNaN(i)?e.get("containerHeight"):i)&&(i&&i<=je)},be=i(54);function me(e,t){if(e.get("fullscreen"))return 1;if(!e.get("activeTab"))return 0;if(e.get("isFloating"))return 1;var i=e.get("intersectionRatio");return void 0===i&&(i=function(e){var t=document.documentElement,i=document.body,n={top:0,left:0,right:t.clientWidth||i.clientWidth,width:t.clientWidth||i.clientWidth,bottom:t.clientHeight||i.clientHeight,height:t.clientHeight||i.clientHeight};if(!i.contains(e))return 0;if("none"===window.getComputedStyle(e).display)return 0;var o=ve(e);if(!o)return 0;var a=o,r=e.parentNode,l=!1;for(;!l;){var s=null;if(r===i||r===t||1!==r.nodeType?(l=!0,s=n):"visible"!==window.getComputedStyle(r).overflow&&(s=ve(r)),s&&(c=s,u=a,d=void 0,p=void 0,w=void 0,f=void 0,h=void 0,j=void 0,d=Math.max(c.top,u.top),p=Math.min(c.bottom,u.bottom),w=Math.max(c.left,u.left),f=Math.min(c.right,u.right),j=p-d,!(a=(h=f-w)>=0&&j>=0&&{top:d,bottom:p,left:w,right:f,width:h,height:j})))return 0;r=r.parentNode}var c,u,d,p,w,f,h,j;var g=o.width*o.height,b=a.width*a.height;return g?b/g:0}(t),window.top!==window.self&&i)?0:i}function ve(e){try{return e.getBoundingClientRect()}catch(e){}}var ye=i(49),ke=i(42),xe=i(58),Oe=i(10);var Ce=i(32),Se=i(5),Me=i(6),Te=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"],Ee=function(e,t,i){for(var n=e.requestFullscreen||e.webkitRequestFullscreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen,o=t.exitFullscreen||t.webkitExitFullscreen||t.webkitCancelFullScreen||t.mozCancelFullScreen||t.msExitFullscreen,a=!(!n||!o),r=Te.length;r--;)t.addEventListener(Te[r],i);return{events:Te,supportsDomFullscreen:function(){return a},requestFullscreen:function(){n.call(e,{navigationUI:"hide"})},exitFullscreen:function(){null!==this.fullscreenElement()&&o.apply(t)},fullscreenElement:function(){var e=t.fullscreenElement,i=t.webkitCurrentFullScreenElement,n=t.mozFullScreenElement,o=t.msFullscreenElement;return null===e?e:e||i||n||o},destroy:function(){for(var e=Te.length;e--;)t.removeEventListener(Te[e],i)}}},_e=i(40);function ze(e,t){for(var i=0;io?a:n*r/i)*u}return e}(i))/10}f.get("renderCaptionsNatively")?function(e,t){var i="#".concat(e," .jw-video::-webkit-media-text-track-display");t&&(t+="px",m.OS.iOS&&Object(Oe.b)(i,{fontSize:"inherit"},e,!0));p.fontSize=t,Object(Oe.b)(i,p,e,!0)}(f.get("id"),t):Object(Oe.d)(l,{fontSize:t})}}function g(e,t,i){var n=Object(Oe.c)("#000000",i);"dropshadow"===e?t.textShadow="0 2px 1px "+n:"raised"===e?t.textShadow="0 0 5px "+n+", 0 1px 5px "+n+", 0 2px 5px "+n:"depressed"===e?t.textShadow="0 -2px 1px "+n:"uniform"===e&&(t.textShadow="-2px 0 1px "+n+",2px 0 1px "+n+",0 -2px 1px "+n+",0 2px 1px "+n+",-1px 1px 1px "+n+",1px 1px 1px "+n+",1px -1px 1px "+n+",1px 1px 1px "+n)}(l=document.createElement("div")).className="jw-captions jw-reset",this.show=function(){Object(Se.a)(l,"jw-captions-enabled")},this.hide=function(){Object(Se.o)(l,"jw-captions-enabled")},this.populate=function(e){f.get("renderCaptionsNatively")||(a=[],o=e,e?this.selectCues(e,r):this.renderCues())},this.resize=function(){j(),this.renderCues(!0)},this.renderCues=function(e){e=!!e,Pe&&Pe.processCues(window,a,l,e)},this.selectCues=function(e,t){if(e&&e.data&&t&&!f.get("renderCaptionsNatively")){var i=this.getAlignmentPosition(e,t);!1!==i&&(a=this.getCurrentCues(e.data,i),this.renderCues(!0))}},this.getCurrentCues=function(e,t){return Object(n.i)(e,(function(e){return t>=e.startTime&&(!e.endTime||t<=e.endTime)}))},this.getAlignmentPosition=function(e,t){var i=e.source,o=t.metadata,a=t.currentTime;return i&&o&&Object(n.s)(o[i])&&(a=o[i]),a},this.clear=function(){Object(Se.g)(l)},this.setup=function(e,i){s=document.createElement("div"),c=document.createElement("span"),s.className="jw-captions-window jw-reset",c.className="jw-captions-text jw-reset",t=Object(n.h)({},Re,i),u=Re.fontScale,h(t.fontSize);var o=t.windowColor,a=t.windowOpacity,r=t.edgeStyle;p={};var d={};!function(e,t){var i=t.color,n=t.fontOpacity;(i||n!==Re.fontOpacity)&&(e.color=Object(Oe.c)(i||"#ffffff",n));if(t.back){var o=t.backgroundColor,a=t.backgroundOpacity;o===Re.backgroundColor&&a===Re.backgroundOpacity||(e.backgroundColor=Object(Oe.c)(o,a))}else e.background="transparent";t.fontFamily&&(e.fontFamily=t.fontFamily);t.fontStyle&&(e.fontStyle=t.fontStyle);t.fontWeight&&(e.fontWeight=t.fontWeight);t.textDecoration&&(e.textDecoration=t.textDecoration)}(d,t),(o||a!==Re.windowOpacity)&&(p.backgroundColor=Object(Oe.c)(o||"#000000",a)),g(r,d,t.fontOpacity),t.back||null!==r||g("uniform",d),Object(Oe.d)(s,p),Object(Oe.d)(c,d),function(e,t){j(),function(e,t){m.Browser.safari&&Object(Oe.b)("#"+e+" .jw-video::-webkit-media-text-track-display-backdrop",{backgroundColor:t.backgroundColor},e,!0);Object(Oe.b)("#"+e+" .jw-video::-webkit-media-text-track-display",p,e,!0),Object(Oe.b)("#"+e+" .jw-video::cue",t,e,!0)}(e,t),function(e,t){Object(Oe.b)("#"+e+" .jw-text-track-display",p,e),Object(Oe.b)("#"+e+" .jw-text-track-cue",t,e)}(e,t)}(e,d),s.appendChild(c),l.appendChild(s),f.change("captionsTrack",(function(e,t){this.populate(t)}),this),f.set("captions",t)},this.element=function(){return l},this.destroy=function(){f.off(null,null,this),this.off()};var b=function(e){r=e,w.selectCues(o,r)};f.on("change:playlistItem",(function(){r=null,a=[]}),this),f.on(d.Q,(function(e){a=[],b(e)}),this),f.on(d.S,b,this),f.on("subtitlesTrackData",(function(){this.selectCues(o,r)}),this),f.on("change:captionsList",(function e(t,n){var o=this;1!==n.length&&(t.get("renderCaptionsNatively")||Pe||(i.e(8).then(function(e){Pe=i(93).default}.bind(null,i)).catch(Object(Le.c)(301121)).catch((function(e){o.trigger(d.tb,e)})),t.off("change:captionsList",e,this)))}),this)};Object(n.h)(Ie.prototype,f.a);var Be=Ie,Ve=function(e,t){var i=t?" jw-hide":"";return'')},He={linktarget:"_blank",margin:8,hide:!1,position:"top-right"};function Ne(e){var t,i;Object(n.h)(this,f.a);var o=new Image;this.setup=function(){(i=Object(n.h)({},He,e.get("logo"))).position=i.position||He.position,i.hide="true"===i.hide.toString(),i.file&&"control-bar"!==i.position&&(t||(t=Object(Se.e)(Ve(i.position,i.hide))),e.set("logo",i),o.onload=function(){var n=this.height,o=this.width,a={backgroundImage:'url("'+this.src+'")'};if(i.margin!==He.margin){var r=/(\w+)-(\w+)/.exec(i.position);3===r.length&&(a["margin-"+r[1]]=i.margin,a["margin-"+r[2]]=i.margin)}var l=.15*e.get("containerHeight"),s=.15*e.get("containerWidth");if(n>l||o>s){var c=o/n;s/l>c?(n=l,o=l*c):(o=s,n=s/c)}a.width=Math.round(o),a.height=Math.round(n),Object(Oe.d)(t,a),e.set("logoWidth",a.width)},o.src=i.file,i.link&&(t.setAttribute("tabindex","0"),t.setAttribute("aria-label",e.get("localization").logo)),this.ui=new _e.a(t).on("click tap enter",(function(e){e&&e.stopPropagation&&e.stopPropagation(),this.trigger(d.A,{link:i.link,linktarget:i.linktarget})}),this))},this.setContainer=function(e){t&&e.appendChild(t)},this.element=function(){return t},this.position=function(){return i.position},this.destroy=function(){o.onload=null,this.ui&&this.ui.destroy()}}var Fe=function(e){this.model=e,this.image=null};Object(n.h)(Fe.prototype,{setup:function(e){this.el=e},setImage:function(e){var t=this.image;t&&(t.onload=null),this.image=null;var i="";"string"==typeof e&&(i='url("'+e+'")',(t=this.image=new Image).src=e),Object(Oe.d)(this.el,{backgroundImage:i})},resize:function(e,t,i){if("uniform"===i){if(e&&(this.playerAspectRatio=e/t),!this.playerAspectRatio||!this.image||"complete"!==(l=this.model.get("state"))&&"idle"!==l&&"error"!==l&&"buffering"!==l)return;var n=this.image,o=null;if(n){if(0===n.width){var a=this;return void(n.onload=function(){a.resize(e,t,i)})}var r=n.width/n.height;Math.abs(this.playerAspectRatio-r)<.09&&(o="cover")}Object(Oe.d)(this.el,{backgroundSize:o})}var l},element:function(){return this.el}});var qe=Fe,De=function(e){this.model=e.player};Object(n.h)(De.prototype,{hide:function(){Object(Oe.d)(this.el,{display:"none"})},show:function(){Object(Oe.d)(this.el,{display:""})},setup:function(e){this.el=e;var t=this.el.getElementsByTagName("div");this.title=t[0],this.description=t[1],this.model.on("change:logoWidth",this.update,this),this.model.change("playlistItem",this.playlistItem,this)},update:function(e){var t={},i=e.get("logo");if(i){var n=1*(""+i.margin).replace("px",""),o=e.get("logoWidth")+(isNaN(n)?0:n+10);"top-left"===i.position?t.paddingLeft=o:"top-right"===i.position&&(t.paddingRight=o)}Object(Oe.d)(this.el,t)},playlistItem:function(e,t){if(t)if(e.get("displaytitle")||e.get("displaydescription")){var i="",n="";t.title&&e.get("displaytitle")&&(i=t.title),t.description&&e.get("displaydescription")&&(n=t.description),this.updateText(i,n)}else this.hide()},updateText:function(e,t){Object(Se.q)(this.title,e),Object(Se.q)(this.description,t),this.title.firstChild||this.description.firstChild?this.show():this.hide()},element:function(){return this.el}});var Ue=De;function We(e,t){for(var i=0;ie)}if(t.get("controls")){var r=ge(t);Object(Se.v)(u,"jw-flag-audio-player",r),t.set("audioMode",r)}}function I(){t.set("visibility",me(t,u))}this.updateBounds=function(){Object(ke.a)(k);var e=t.get("isFloating")?p:u,i=document.body.contains(e),n=Object(Se.c)(e),r=Math.round(n.width),l=Math.round(n.height);if(E=Object(Se.c)(u),r===o&&l===a)return o&&a||A(),void t.set("inDom",i);r&&l||o&&a||A(),(r||l||i)&&(t.set("containerWidth",r),t.set("containerHeight",l)),t.set("inDom",i),i&&be.a.observe(u)},this.updateStyles=function(){var e=t.get("containerWidth"),i=t.get("containerHeight");R(e,i),z&&z.resize(e,i),$(e,i),v.resize(),O&&F()},this.checkResized=function(){var e=t.get("containerWidth"),i=t.get("containerHeight"),n=t.get("isFloating");if(e!==o||i!==a){this.resizeListener||(this.resizeListener=new Xe.a(p,this,t)),o=e,a=i,s.trigger(d.hb,{width:e,height:i});var l=Object(xe.a)(e);_!==l&&(_=l,s.trigger(d.j,{breakpoint:_}))}n!==r&&(r=n,s.trigger(d.x,{floating:n}),I())},this.responsiveListener=A,this.setup=function(){var n,o,a,r;g.setup(u.querySelector(".jw-preview")),b.setup(u.querySelector(".jw-title")),(i=new Ne(t)).setup(),i.setContainer(p),i.on(d.A,K),v.setup(u.id,t.get("captions")),b.element().parentNode.insertBefore(v.element(),b.element()),n=e,a=new Ae(o=t,h),r=o.get("controls"),a.on({click:function(){s.trigger(d.p),z&&(ce()?z.settingsMenu.close():ue()?z.infoOverlay.close():n.playToggle({reason:"interaction"}))},tap:function(){u.removeEventListener("mousemove",W),u.removeEventListener("mouseout",Y),u.removeEventListener("mouseover",Q),s.trigger(d.p),ce()&&z.settingsMenu.close(),ue()&&z.infoOverlay.close();var e=o.get("state");if(r&&(e===d.mb||e===d.kb||o.get("instream")&&e===d.ob)&&n.playToggle({reason:"interaction"}),r&&e===d.ob){if(o.get("instream")||o.get("castActive")||"audio"===o.get("mediaType"))return;Object(Se.v)(u,"jw-flag-controls-hidden"),s.dismissible&&Object(Se.v)(u,"jw-floating-dismissible",Object(Se.i)(u,"jw-flag-controls-hidden")),v.renderCues(!0)}else z&&(z.showing?z.userInactive():z.userActive())},doubleClick:function(){return z&&n.setFullscreen()}}),u.addEventListener("mousemove",W),u.addEventListener("mouseover",Q),u.addEventListener("mouseout",Y),C=a,M=new _e.a(u).on("click",(function(){})),S=Ee(u,document,te),t.on("change:hideAdsControls",(function(e,t){Object(Se.v)(u,"jw-flag-ads-hide-controls",t)})),t.on("change:scrubbing",(function(e,t){Object(Se.v)(u,"jw-flag-dragging",t)})),t.on("change:playRejected",(function(e,t){Object(Se.v)(u,"jw-flag-play-rejected",t)})),t.on(d.X,ee),t.on("change:".concat(d.U),(function(){$(),v.resize()})),t.player.on("change:errorEvent",ae),t.change("stretching",X);var l=t.get("width"),c=t.get("height"),f=G(l,c);Object(Oe.d)(u,f),t.change("aspectratio",Z),R(l,c),t.get("controls")||(Object(Se.a)(u,"jw-flag-controls-hidden"),Object(Se.o)(u,"jw-floating-dismissible")),Ke&&Object(Se.a)(u,"jw-ie");var j=t.get("skin")||{};j.name&&Object(Se.p)(u,/jw-skin-\S+/,"jw-skin-"+j.name);var y=function(e){e||(e={});var t=e.active,i=e.inactive,n=e.background,o={};return o.controlbar=function(e){if(e||t||i||n){var o={};return e=e||{},o.iconsActive=e.iconsActive||t,o.icons=e.icons||i,o.text=e.text||i,o.background=e.background||n,o}}(e.controlbar),o.timeslider=function(e){if(e||t){var i={};return e=e||{},i.progress=e.progress||t,i.rail=e.rail,i}}(e.timeslider),o.menus=function(e){if(e||t||i||n){var o={};return e=e||{},o.text=e.text||i,o.textActive=e.textActive||t,o.background=e.background||n,o}}(e.menus),o.tooltips=function(e){if(e||i||n){var t={};return e=e||{},t.text=e.text||i,t.background=e.background||n,t}}(e.tooltips),o}(j);!function(e,t){var i;function n(t,i,n,o){if(n){t=Object(w.f)(t,"#"+e+(o?"":" "));var a={};a[i]=n,Object(Oe.b)(t.join(", "),a,e)}}t&&(t.controlbar&&function(t){n([".jw-controlbar .jw-icon-inline.jw-text",".jw-title-primary",".jw-title-secondary"],"color",t.text),t.icons&&(n([".jw-button-color:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:not(.jw-icon-cast)"],"color",t.icons),n([".jw-display-icon-container .jw-button-color"],"color",t.icons),Object(Oe.b)("#".concat(e," .jw-icon-cast google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.icons,"}"),e));t.iconsActive&&(n([".jw-display-icon-container .jw-button-color:hover",".jw-display-icon-container .jw-button-color:focus"],"color",t.iconsActive),n([".jw-button-color.jw-toggle:not(.jw-icon-cast)",".jw-button-color:hover:not(.jw-icon-cast)",".jw-button-color:focus:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:hover:not(.jw-icon-cast)"],"color",t.iconsActive),n([".jw-svg-icon-buffer"],"fill",t.icons),Object(Oe.b)("#".concat(e," .jw-icon-cast:hover google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast:focus google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast google-cast-launcher.jw-off:focus"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast google-cast-launcher:focus"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast:hover google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(Oe.b)("#".concat(e," .jw-icon-cast:focus google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e));n([" .jw-settings-topbar",":not(.jw-state-idle) .jw-controlbar",".jw-flag-audio-player .jw-controlbar"],"background",t.background,!0)}(t.controlbar),t.timeslider&&function(e){var t=e.progress;"none"!==t&&(n([".jw-progress",".jw-knob"],"background-color",t),n([".jw-buffer"],"background-color",Object(Oe.c)(t,50)));n([".jw-rail"],"background-color",e.rail),n([".jw-background-color.jw-slider-time",".jw-slider-time .jw-cue"],"background-color",e.background)}(t.timeslider),t.menus&&(n([".jw-option",".jw-toggle.jw-off",".jw-skip .jw-skip-icon",".jw-nextup-tooltip",".jw-nextup-close",".jw-settings-content-item",".jw-related-title"],"color",(i=t.menus).text),n([".jw-option.jw-active-option",".jw-option:not(.jw-active-option):hover",".jw-option:not(.jw-active-option):focus",".jw-settings-content-item:hover",".jw-nextup-tooltip:hover",".jw-nextup-tooltip:focus",".jw-nextup-close:hover"],"color",i.textActive),n([".jw-nextup",".jw-settings-menu"],"background",i.background)),t.tooltips&&function(e){n([".jw-skip",".jw-tooltip .jw-text",".jw-time-tip .jw-text"],"background-color",e.background),n([".jw-time-tip",".jw-tooltip"],"color",e.background),n([".jw-skip"],"border","none"),n([".jw-skip .jw-text",".jw-skip .jw-icon",".jw-time-tip .jw-text",".jw-tooltip .jw-text"],"color",e.text)}(t.tooltips),t.menus&&function(t){if(t.textActive){var i={color:t.textActive,borderColor:t.textActive,stroke:t.textActive};Object(Oe.b)("#".concat(e," .jw-color-active"),i,e),Object(Oe.b)("#".concat(e," .jw-color-active-hover:hover"),i,e)}if(t.text){var n={color:t.text,borderColor:t.text,stroke:t.text};Object(Oe.b)("#".concat(e," .jw-color-inactive"),n,e),Object(Oe.b)("#".concat(e," .jw-color-inactive-hover:hover"),n,e)}}(t.menus))}(t.get("id"),y),t.set("mediaContainer",h),t.set("iFrame",m.Features.iframe),t.set("activeTab",Object(ye.a)()),t.set("touchMode",Ze&&("string"==typeof c||c>=je)),be.a.add(this),t.get("enableGradient")&&!Ke&&Object(Se.a)(u,"jw-ab-drop-shadow"),this.isSetup=!0,t.trigger("viewSetup",u);var k=document.body.contains(u);k&&be.a.observe(u),t.set("inDom",k)},this.init=function(){this.updateBounds(),t.on("change:fullscreen",J),t.on("change:activeTab",I),t.on("change:fullscreen",I),t.on("change:intersectionRatio",I),t.on("change:visibility",U),t.on("instreamMode",(function(e){e?de():pe()})),I(),1!==be.a.size()||t.get("visibility")||U(t,1,0);var e=t.player;t.change("state",re),e.change("controls",q),t.change("streamType",ne),t.change("mediaType",oe),e.change("playlistItem",(function(e,t){se(e,t)})),o=a=null,O&&m.OS.mobile&&be.a.addScrollHandler(F),this.checkResized()};var B,V=62,H=!0;function N(){var e=t.get("isFloating"),i=E.top0&&void 0!==arguments[0])||arguments[0],t={x:0,y:0,width:o||0,height:a||0};return z&&e&&(t.height-=z.controlbarHeight()),t},this.setCaptions=function(e){v.clear(),v.setup(t.get("id"),e),v.resize()},this.setIntersection=function(e){var i=Math.round(100*e.intersectionRatio)/100;t.set("intersectionRatio",i),O&&!P()&&(T=T||i>=.5)&&we(i)},this.stopFloating=function(e,i){if(e&&(O=null,be.a.removeScrollHandler(F)),Je===u){Je=null,t.set("isFloating",!1);var n=function(){Object(Se.o)(u,"jw-flag-floating"),Z(t,t.get("aspectratio")),Object(Oe.d)(u,{backgroundImage:null}),Object(Oe.d)(p,{maxWidth:null,width:null,height:null,left:null,right:null,top:null,bottom:null,margin:null,transform:null,transition:null,"transition-timing-function":null})};i?(Object(Oe.d)(p,{transform:"translateY(-".concat(V-E.top,"px)"),"transition-timing-function":"ease-out"}),setTimeout(n,150)):n(),j.disable(),A()}},this.destroy=function(){t.destroy(),be.a.unobserve(u),be.a.remove(this),this.isSetup=!1,this.off(),Object(ke.a)(k),clearTimeout(y),Je===u&&(Je=null),M&&(M.destroy(),M=null),S&&(S.destroy(),S=null),z&&z.disable(t),C&&(C.destroy(),u.removeEventListener("mousemove",W),u.removeEventListener("mouseout",Y),u.removeEventListener("mouseover",Q),C=null),v.destroy(),i&&(i.destroy(),i=null),Object(Oe.a)(t.get("id")),this.resizeListener&&(this.resizeListener.destroy(),delete this.resizeListener),O&&m.OS.mobile&&be.a.removeScrollHandler(F)}};function $e(e,t,i){return($e="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,i){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=at(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(i):o.value}})(e,t,i||e)}function et(e){return(et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function tt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function it(e,t){for(var i=0;it&&e(),t=n}};function Et(e,t){t.off(d.N,e._onPlayAttempt),t.off(d.fb,e._triggerFirstFrame),t.off(d.S,e._onTime),e.off("change:activeTab",e._onTabVisible)}var _t=function(e,t){e.change("mediaModel",(function(e,i,n){e._qoeItem&&n&&e._qoeItem.end(n.get("mediaState")),e._qoeItem=new Ct.a,e._qoeItem.getFirstFrame=function(){var e=this.between(d.N,d.H),t=this.between(Mt,d.H);return t>0&&t0&&re(t,e.tracks)}),C).on(d.F,(function(){Promise.resolve().then(ae)}),C).on(d.G,C.triggerError,C),_t(S,B),S.on(d.w,C.triggerError,C),S.on("change:state",(function(e,t,i){X()||Z.call(O,e,t,i)}),this),S.on("change:castState",(function(e,t){C.trigger(d.m,t)})),S.on("change:fullscreen",(function(e,t){C.trigger(d.y,{fullscreen:t}),t&&e.set("playOnViewable",!1)})),S.on("change:volume",(function(e,t){C.trigger(d.V,{volume:t})})),S.on("change:mute",(function(e){C.trigger(d.M,{mute:e.getMute()})})),S.on("change:playbackRate",(function(e,t){C.trigger(d.ab,{playbackRate:t,position:e.get("position")})}));var V=function e(t,i){"clickthrough"!==i&&"interaction"!==i&&"external"!==i||(S.set("playOnViewable",!1),S.off("change:playReason change:pauseReason",e))};function H(e,t){Object(n.u)(t)||S.set("viewable",Math.round(t))}function N(){de&&(!0!==S.get("autostart")||S.get("playOnViewable")||$("autostart"),de.flush())}function F(e,t){C.trigger("viewable",{viewable:t}),q()}function q(){if((o.a[0]===t||1===S.get("viewable"))&&"idle"===S.get("state")&&!1===S.get("autostart"))if(!b.primed()&&m.OS.android){var e=b.getTestElement(),i=C.getMute();Promise.resolve().then((function(){return bt(e,{muted:i})})).then((function(){"idle"===S.get("state")&&B.preloadVideo()})).catch(At)}else B.preloadVideo()}function D(e){C._instreamAdapter.noResume=!e,e||te({reason:"viewable"})}function U(e){e||(C.pause({reason:"viewable"}),S.set("playOnViewable",!e))}function W(e,t){var i=X();if(e.get("playOnViewable")){if(t){var n=e.get("autoPause").pauseAds,o=e.get("pauseReason");K()===d.mb?$("viewable"):i&&!n||"interaction"===o||J({reason:"viewable"})}else m.OS.mobile&&!i&&(C.pause({reason:"autostart"}),S.set("playOnViewable",!0));m.OS.mobile&&i&&D(t)}}function Q(e,t){var i=e.get("state"),n=X(),o=e.get("playReason");n?e.get("autoPause").pauseAds?U(t):D(t):i===d.pb||i===d.jb?U(t):i===d.mb&&"playlist"===o&&e.once("change:state",(function(){U(t)}))}function X(){var e=C._instreamAdapter;return!!e&&e.getState()}function K(){var e=X();return e||S.get("state")}function J(e){if(_.cancel(),T=!1,S.get("state")===d.lb)return Promise.resolve();var i=G(e);return S.set("playReason",i),X()?(t.pauseAd(!1,e),Promise.resolve()):(S.get("state")===d.kb&&(ee(!0),C.setItemIndex(0)),!M&&(M=!0,C.trigger(d.C,{playReason:i,startTime:e&&e.startTime?e.startTime:S.get("playlistItem").starttime}),M=!1,Ot()&&!b.primed()&&b.prime(),"playlist"===i&&S.get("autoPause").viewability&&Q(S,S.get("viewable")),x)?(Ot()&&!R&&S.get("mediaElement").load(),x=!1,k=null,Promise.resolve()):B.playVideo(i).then(b.played))}function G(e){return e&&e.reason?e.reason:"unknown"}function $(e){if(K()===d.mb){_=j(N);var t=S.get("advertising");(function(e,t){var i=t.cancelable,n=t.muted,o=void 0!==n&&n,a=t.allowMuted,r=void 0!==a&&a,l=t.timeout,s=void 0===l?1e4:l,c=e.getTestElement(),u=o?"muted":"".concat(r);kt[u]||(kt[u]=bt(c,{muted:o}).catch((function(e){if(!i.cancelled()&&!1===o&&r)return bt(c,{muted:o=!0});throw e})).then((function(){return o?(kt[u]=null,vt):mt})).catch((function(e){throw clearTimeout(d),kt[u]=null,e.reason=yt,e})));var d,p=kt[u].then((function(e){if(clearTimeout(d),i.cancelled()){var t=new Error("Autoplay test was cancelled");throw t.reason="cancelled",t}return e})),w=new Promise((function(e,t){d=setTimeout((function(){kt[u]=null;var e=new Error("Autoplay test timed out");e.reason="timeout",t(e)}),s)}));return Promise.race([p,w])})(b,{cancelable:_,muted:C.getMute(),allowMuted:!t||t.autoplayadsmuted}).then((function(t){return S.set("canAutoplay",t),t!==vt||C.getMute()||(S.set("autostartMuted",!0),ue(),S.once("change:autostartMuted",(function(e){e.off("change:viewable",W),C.trigger(d.M,{mute:S.getMute()})}))),C.getMute()&&S.get("enableDefaultCaptions")&&y.selectDefaultIndex(1),J({reason:e}).catch((function(){C._instreamAdapter||S.set("autostartFailed",!0),k=null}))})).catch((function(e){if(S.set("canAutoplay",yt),S.set("autostart",!1),!_.cancelled()){var t=Object(g.w)(e);C.trigger(d.h,{reason:e.reason,code:t,error:e})}}))}}function ee(e){if(_.cancel(),de.empty(),X()){var t=C._instreamAdapter;return t&&(t.noResume=!0),void(k=function(){return B.stopVideo()})}k=null,!e&&(T=!0),M&&(x=!0),S.set("errorEvent",void 0),B.stopVideo()}function te(e){var t=G(e);S.set("pauseReason",t),S.set("playOnViewable","viewable"===t)}function ie(e){k=null,_.cancel();var i=X();if(i&&i!==d.ob)return te(e),void t.pauseAd(!0,e);switch(S.get("state")){case d.lb:return;case d.pb:case d.jb:te(e),B.pause();break;default:M&&(x=!0)}}function ne(e,t){ee(!0),C.setItemIndex(e),C.play(t)}function oe(e){ne(S.get("item")+1,e)}function ae(){C.completeCancelled()||(k=C.completeHandler,C.shouldAutoAdvance()?C.nextItem():S.get("repeat")?oe({reason:"repeat"}):(m.OS.iOS&&se(!1),S.set("playOnViewable",!1),S.set("state",d.kb),C.trigger(d.cb,{})))}function re(e,t){e=parseInt(e,10)||0,S.persistVideoSubtitleTrack(e,t),B.subtitles=e,C.trigger(d.k,{tracks:le(),track:e})}function le(){return y.getCaptionsList()}function se(e){Object(n.o)(e)||(e=!S.get("fullscreen")),S.set("fullscreen",e),C._instreamAdapter&&C._instreamAdapter._adModel&&C._instreamAdapter._adModel.set("fullscreen",e)}function ue(){B.mute=S.getMute(),B.volume=S.get("volume")}S.on("change:playReason change:pauseReason",V),C.on(d.c,(function(e){return V(0,e.playReason)})),C.on(d.b,(function(e){return V(0,e.pauseReason)})),S.on("change:scrubbing",(function(e,t){t?(E=S.get("state")!==d.ob,ie()):E&&J({reason:"interaction"})})),S.on("change:captionsList",(function(e,t){C.trigger(d.l,{tracks:t,track:S.get("captionsIndex")||0})})),S.on("change:mediaModel",(function(e,t){var i=this;e.set("errorEvent",void 0),t.change("mediaState",(function(t,i){var n;e.get("errorEvent")||e.set(d.bb,(n=i)===d.nb||n===d.qb?d.jb:n)}),this),t.change("duration",(function(t,i){if(0!==i){var n=e.get("minDvrWindow"),o=Object(xt.b)(i,n);e.setStreamType(o)}}),this);var n=e.get("item")+1,o="autoplay"===(e.get("related")||{}).oncomplete,a=e.get("playlist")[n];if((a||o)&&R){t.on("change:position",(function e(n,r){var l=a&&!a.daiSetting,s=t.get("duration");l&&r&&s>0&&r>=s-p.b?(t.off("change:position",e,i),B.backgroundLoad(a)):o&&(a=S.get("nextUp"))}),this)}})),(y=new we(S)).on("all",L,C),I.on("viewSetup",(function(e){Object(a.b)(O,e)})),this.playerReady=function(){v.once(d.hb,(function(){try{!function(){S.change("visibility",H),P.off(),C.trigger(d.gb,{setupTime:0}),S.change("playlist",(function(e,t){if(t.length){var i={playlist:t},o=S.get("feedData");o&&(i.feedData=Object(n.h)({},o)),C.trigger(d.eb,i)}})),S.change("playlistItem",(function(e,t){if(t){var i=t.title,n=t.image;if("mediaSession"in navigator&&window.MediaMetadata&&(i||n))try{navigator.mediaSession.metadata=new window.MediaMetadata({title:i,artist:window.location.hostname,artwork:[{src:n||""}]})}catch(e){}e.set("cues",[]),C.trigger(d.db,{index:S.get("item"),item:t})}})),P.flush(),P.destroy(),P=null,S.change("viewable",F),S.change("viewable",W),S.get("autoPause").viewability?S.change("viewable",Q):S.once("change:autostartFailed change:mute",(function(e){e.off("change:viewable",W)}));N(),S.on("change:itemReady",(function(e,t){t&&de.flush()}))}()}catch(e){C.triggerError(Object(g.v)(g.m,g.a,e))}})),v.init()},this.preload=q,this.load=function(e,t){var i,n=C._instreamAdapter;switch(n&&(n.noResume=!0),C.trigger("destroyPlugin",{}),ee(!0),_.cancel(),_=j(N),z.cancel(),Ot()&&b.prime(),zt(e)){case"string":S.attributes.item=0,S.attributes.itemReady=!1,z=j((function(e){if(e)return C.updatePlaylist(Object(c.a)(e.playlist),e)})),i=function(e){var t=this;return new Promise((function(i,n){var o=new s.a;o.on(d.eb,(function(e){i(e)})),o.on(d.w,n,t),o.load(e)}))}(e).then(z.async);break;case"object":S.attributes.item=0,i=C.updatePlaylist(Object(c.a)(e),t||{});break;case"number":i=C.setItemIndex(e);break;default:return}i.catch((function(e){C.triggerError(Object(g.u)(e,g.c))})),i.then(_.async).catch(At)},this.play=function(e){return J(e).catch(At)},this.pause=ie,this.seek=function(e,t){var i=S.get("state");if(i!==d.lb){B.position=e;var n=i===d.mb;S.get("scrubbing")||!n&&i!==d.kb||(n&&((t=t||{}).startTime=e),this.play(t))}},this.stop=ee,this.playlistItem=ne,this.playlistNext=oe,this.playlistPrev=function(e){ne(S.get("item")-1,e)},this.setCurrentCaptions=re,this.setCurrentQuality=function(e){B.quality=e},this.setFullscreen=se,this.getCurrentQuality=function(){return B.quality},this.getQualityLevels=function(){return B.qualities},this.setCurrentAudioTrack=function(e){B.audioTrack=e},this.getCurrentAudioTrack=function(){return B.audioTrack},this.getAudioTracks=function(){return B.audioTracks},this.getCurrentCaptions=function(){return y.getCurrentIndex()},this.getCaptionsList=le,this.getVisualQuality=function(){var e=this._model.get("mediaModel");return e?e.get(d.U):null},this.getConfig=function(){return this._model?this._model.getConfiguration():void 0},this.getState=K,this.next=At,this.completeHandler=ae,this.completeCancelled=function(){return(e=S.get("state"))!==d.mb&&e!==d.kb&&e!==d.lb||!!T&&(T=!1,!0);var e},this.shouldAutoAdvance=function(){return S.get("item")!==S.get("playlist").length-1},this.nextItem=function(){oe({reason:"playlist"})},this.setConfig=function(e){!function(e,t){var i=e._model,n=i.attributes;t.height&&(t.height=Object(r.b)(t.height),t.width=t.width||n.width),t.width&&(t.width=Object(r.b)(t.width),t.aspectratio?(n.width=t.width,delete t.width):t.height=n.height),t.width&&t.height&&!t.aspectratio&&e._view.resize(t.width,t.height),Object.keys(t).forEach((function(o){var a=t[o];if(void 0!==a)switch(o){case"aspectratio":i.set(o,Object(r.a)(a,n.width));break;case"autostart":!function(e,t,i){e.setAutoStart(i),"idle"===e.get("state")&&!0===i&&t.play({reason:"autostart"})}(i,e,a);break;case"mute":e.setMute(a);break;case"volume":e.setVolume(a);break;case"playbackRateControls":case"playbackRates":case"repeat":case"stretching":i.set(o,a)}}))}(C,e)},this.setItemIndex=function(e){B.stopVideo();var t=S.get("playlist").length;return(e=(parseInt(e,10)||0)%t)<0&&(e+=t),B.setActiveItem(e).catch((function(e){e.code>=151&&e.code<=162&&(e=Object(g.u)(e,g.e)),O.triggerError(Object(g.v)(g.k,g.d,e))}))},this.detachMedia=function(){if(M&&(x=!0),S.get("autoPause").viewability&&Q(S,S.get("viewable")),!R)return B.setAttached(!1);B.backgroundActiveMedia()},this.attachMedia=function(){R?B.restoreBackgroundMedia():B.setAttached(!0),"function"==typeof k&&k()},this.routeEvents=function(e){return B.routeEvents(e)},this.forwardEvents=function(){return B.forwardEvents()},this.playVideo=function(e){return B.playVideo(e)},this.stopVideo=function(){return B.stopVideo()},this.castVideo=function(e,t){return B.castVideo(e,t)},this.stopCast=function(){return B.stopCast()},this.backgroundActiveMedia=function(){return B.backgroundActiveMedia()},this.restoreBackgroundMedia=function(){return B.restoreBackgroundMedia()},this.preloadNextItem=function(){B.background.currentMedia&&B.preloadVideo()},this.isBeforeComplete=function(){return B.beforeComplete},this.setVolume=function(e){S.setVolume(e),ue()},this.setMute=function(e){S.setMute(e),ue()},this.setPlaybackRate=function(e){S.setPlaybackRate(e)},this.getProvider=function(){return S.get("provider")},this.getWidth=function(){return S.get("containerWidth")},this.getHeight=function(){return S.get("containerHeight")},this.getItemQoe=function(){return S._qoeItem},this.addButton=function(e,t,i,n,o){var a=S.get("customButtons")||[],r=!1,l={img:e,tooltip:t,callback:i,id:n,btnClass:o};a=a.reduce((function(e,t){return t.id===n?(r=!0,e.push(l)):e.push(t),e}),[]),r||a.unshift(l),S.set("customButtons",a)},this.removeButton=function(e){var t=S.get("customButtons")||[];t=t.filter((function(t){return t.id!==e})),S.set("customButtons",t)},this.resize=v.resize,this.getSafeRegion=v.getSafeRegion,this.setCaptions=v.setCaptions,this.checkBeforePlay=function(){return M},this.setControls=function(e){Object(n.o)(e)||(e=!S.get("controls")),S.set("controls",e),B.controls=e},this.addCues=function(e){this.setCues(S.get("cues").concat(e))},this.setCues=function(e){S.set("cues",e)},this.updatePlaylist=function(e,t){try{var i=Object(c.b)(e,S,t);Object(c.e)(i);var o=Object(n.h)({},t);delete o.playlist,S.set("feedData",o),S.set("playlist",i)}catch(e){return Promise.reject(e)}return this.setItemIndex(S.get("item"))},this.setPlaylistItem=function(e,t){(t=Object(c.d)(S,new u.a(t),t.feedData||{}))&&(S.get("playlist")[e]=t,e===S.get("item")&&"idle"===S.get("state")&&this.setItemIndex(e))},this.playerDestroy=function(){this.off(),this.stop(),Object(a.b)(this,this.originalContainer),v&&v.destroy(),S&&S.destroy(),de&&de.destroy(),y&&y.destroy(),B&&B.destroy(),this.instreamDestroy()},this.isBeforePlay=this.checkBeforePlay,this.createInstream=function(){return this.instreamDestroy(),this._instreamAdapter=new ce(this,S,v,b),this._instreamAdapter},this.instreamDestroy=function(){C._instreamAdapter&&(C._instreamAdapter.destroy(),C._instreamAdapter=null)};var de=new l.a(this,["play","pause","setCurrentAudioTrack","setCurrentCaptions","setCurrentQuality","setFullscreen"],(function(){return!O._model.get("itemReady")||P}));de.queue.push.apply(de.queue,h),v.setup()},get:function(e){if(e in y.a){var t=this._model.get("mediaModel");return t?t.get(e):y.a[e]}return this._model.get(e)},getContainer:function(){return this.currentContainer||this.originalContainer},getMute:function(){return this._model.getMute()},triggerError:function(e){var t=this._model;e.message=t.get("localization").errors[e.key],delete e.key,t.set("errorEvent",e),t.set("state",d.lb),t.once("change:state",(function(){this.set("errorEvent",void 0)}),t),this.trigger(d.w,e)}});t.default=Pt},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,i){"use strict";i.d(t,"a",(function(){return o}));var n=i(2);function o(e){var t=[],i=(e=Object(n.i)(e)).split("\r\n\r\n");1===i.length&&(i=e.split("\n\n"));for(var o=0;o0&&(o=0),i.length>o+1&&i[o+1]){var a=i[o],r=a.indexOf(" --\x3e ");r>0&&(t.begin=Object(n.g)(a.substr(0,r)),t.end=Object(n.g)(a.substr(r+5)),t.text=i.slice(o+1).join("\r\n"))}return t}},function(e,t,i){"use strict";i.d(t,"a",(function(){return o})),i.d(t,"b",(function(){return a}));var n=i(5);function o(e){var t=-1;return e>=1280?t=7:e>=960?t=6:e>=800?t=5:e>=640?t=4:e>=540?t=3:e>=420?t=2:e>=320?t=1:e>=250&&(t=0),t}function a(e,t){var i="jw-breakpoint-"+t;Object(n.p)(e,/jw-breakpoint--?\d+/,i)}},function(e,t,i){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=function(e,t){var i=e[1]||"",n=e[3];if(!n)return i;if(t&&"function"==typeof btoa){var o=(r=n,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),a=n.sources.map((function(e){return"/*# sourceURL="+n.sourceRoot+e+" */"}));return[i].concat(a).concat([o]).join("\n")}var r;return[i].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+i+"}":i})).join("")},t.i=function(e,i){"string"==typeof e&&(e=[[null,e,""]]);for(var n={},o=0;o1&&(i+=" ["+t+"]")),{label:i,unknownCount:t}}i.d(t,"a",(function(){return n})),i.d(t,"b",(function(){return o}))},function(e,t,i){"use strict";function n(e){return new Promise((function(t,i){if(e.paused)return i(o("NotAllowedError",0,"play() failed."));var n=function(){e.removeEventListener("play",a),e.removeEventListener("playing",r),e.removeEventListener("pause",r),e.removeEventListener("abort",r),e.removeEventListener("error",r)},a=function(){e.addEventListener("playing",r),e.addEventListener("abort",r),e.addEventListener("error",r),e.addEventListener("pause",r)},r=function(e){if(n(),"playing"===e.type)t();else{var a='The play() request was interrupted by a "'.concat(e.type,'" event.');"error"===e.type?i(o("NotSupportedError",9,a)):i(o("AbortError",20,a))}};e.addEventListener("play",a)}))}function o(e,t,i){var n=new Error(i);return n.name=e,n.code=t,n}i.d(t,"a",(function(){return n}))},function(e,t,i){"use strict";function n(e,t){return e!==1/0&&Math.abs(e)>=Math.max(a(t),0)}function o(e,t){var i="VOD";return e===1/0?i="LIVE":e<0&&(i=n(e,a(t))?"DVR":"LIVE"),i}function a(e){return void 0===e?120:Math.max(e,0)}i.d(t,"a",(function(){return n})),i.d(t,"b",(function(){return o}))},function(e,t,i){"use strict";var n=i(64),o=i(16),a=i(22),r=i(4),l=i(57),s=i(2),c=i(1);function u(e){throw new c.n(null,e)}function d(e,t,n){e.xhr=Object(a.a)(e.file,(function(a){!function(e,t,n,a){var d,p,f=e.responseXML?e.responseXML.firstChild:null;if(f)for("xml"===Object(r.b)(f)&&(f=f.nextSibling);f.nodeType===f.COMMENT_NODE;)f=f.nextSibling;try{if(f&&"tt"===Object(r.b)(f))d=function(e){e||u(306007);var t=[],i=e.getElementsByTagName("p"),n=30,o=e.getElementsByTagName("tt");if(o&&o[0]){var a=parseFloat(o[0].getAttribute("ttp:frameRate"));isNaN(a)||(n=a)}i||u(306005),i.length||(i=e.getElementsByTagName("tt:p")).length||(i=e.getElementsByTagName("tts:p"));for(var r=0;r\s+<").replace(/(<\/?)tts?:/g,"$1").replace(//g,"\r\n");if(f){var h=l.getAttribute("begin"),j=l.getAttribute("dur"),g=l.getAttribute("end"),b={begin:Object(s.g)(h,n),text:f};g?b.end=Object(s.g)(g,n):j&&(b.end=b.begin+Object(s.g)(j,n)),t.push(b)}}return t.length||u(306005),t}(e.responseXML),p=w(d),delete t.xhr,n(p);else{var h=e.responseText;h.indexOf("WEBVTT")>=0?i.e(10).then(function(e){return i(92).default}.bind(null,i)).catch(Object(o.c)(301131)).then((function(e){var i=new e(window);p=[],i.oncue=function(e){p.push(e)},i.onflush=function(){delete t.xhr,n(p)},i.parse(h)})).catch((function(e){delete t.xhr,a(Object(c.v)(null,c.b,e))})):(d=Object(l.a)(h),p=w(d),delete t.xhr,n(p))}}catch(e){delete t.xhr,a(Object(c.v)(null,c.b,e))}}(a,e,t,n)}),(function(e,t,i,o){n(Object(c.u)(o,c.b))}))}function p(e){e&&e.forEach((function(e){var t=e.xhr;t&&(t.onload=null,t.onreadystatechange=null,t.onerror=null,"abort"in t&&t.abort()),delete e.xhr}))}function w(e){return e.map((function(e){return new n.a(e.begin,e.end,e.text)}))}i.d(t,"c",(function(){return d})),i.d(t,"a",(function(){return p})),i.d(t,"b",(function(){return w}))},function(e,t,i){"use strict";var n=window.VTTCue;function o(e){if("string"!=typeof e)return!1;return!!{start:!0,middle:!0,end:!0,left:!0,right:!0}[e.toLowerCase()]&&e.toLowerCase()}if(!n){(n=function(e,t,i){var n=this;n.hasBeenReset=!1;var a="",r=!1,l=e,s=t,c=i,u=null,d="",p=!0,w="auto",f="start",h="auto",j=100,g="middle";Object.defineProperty(n,"id",{enumerable:!0,get:function(){return a},set:function(e){a=""+e}}),Object.defineProperty(n,"pauseOnExit",{enumerable:!0,get:function(){return r},set:function(e){r=!!e}}),Object.defineProperty(n,"startTime",{enumerable:!0,get:function(){return l},set:function(e){if("number"!=typeof e)throw new TypeError("Start time must be set to a number.");l=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"endTime",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e)throw new TypeError("End time must be set to a number.");s=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"text",{enumerable:!0,get:function(){return c},set:function(e){c=""+e,this.hasBeenReset=!0}}),Object.defineProperty(n,"region",{enumerable:!0,get:function(){return u},set:function(e){u=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"vertical",{enumerable:!0,get:function(){return d},set:function(e){var t=function(e){return"string"==typeof e&&(!!{"":!0,lr:!0,rl:!0}[e.toLowerCase()]&&e.toLowerCase())}(e);if(!1===t)throw new SyntaxError("An invalid or illegal string was specified.");d=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"snapToLines",{enumerable:!0,get:function(){return p},set:function(e){p=!!e,this.hasBeenReset=!0}}),Object.defineProperty(n,"line",{enumerable:!0,get:function(){return w},set:function(e){if("number"!=typeof e&&"auto"!==e)throw new SyntaxError("An invalid number or illegal string was specified.");w=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"lineAlign",{enumerable:!0,get:function(){return f},set:function(e){var t=o(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");f=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"position",{enumerable:!0,get:function(){return h},set:function(e){if(e<0||e>100)throw new Error("Position must be between 0 and 100.");h=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"size",{enumerable:!0,get:function(){return j},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");j=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"align",{enumerable:!0,get:function(){return g},set:function(e){var t=o(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");g=t,this.hasBeenReset=!0}}),n.displayState=void 0}).prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)}}t.a=n},function(e,t,i){var n=i(66);"string"==typeof n&&(n=[["all-players",n,""]]),i(35).style(n,"all-players"),n.locals&&(e.exports=n.locals)},function(e,t,i){(e.exports=i(59)(!1)).push([e.i,'.jw-reset{text-align:left;direction:ltr}.jw-reset-text,.jw-reset{color:inherit;background-color:transparent;padding:0;margin:0;float:none;font-family:Arial,Helvetica,sans-serif;font-size:1em;line-height:1em;list-style:none;text-transform:none;vertical-align:baseline;border:0;font-variant:inherit;font-stretch:inherit;-webkit-tap-highlight-color:rgba(255,255,255,0)}body .jw-error,body .jwplayer.jw-state-error{height:100%;width:100%}.jw-title{position:absolute;top:0}.jw-background-color{background:rgba(0,0,0,0.4)}.jw-text{color:rgba(255,255,255,0.8)}.jw-knob{color:rgba(255,255,255,0.8);background-color:#fff}.jw-button-color{color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):focus,:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):hover{color:#fff}.jw-toggle{color:#fff}.jw-toggle.jw-off{color:rgba(255,255,255,0.8)}.jw-toggle.jw-off:focus{color:#fff}.jw-toggle:focus{outline:none}:not(.jw-flag-touch) .jw-toggle.jw-off:hover{color:#fff}.jw-rail{background:rgba(255,255,255,0.3)}.jw-buffer{background:rgba(255,255,255,0.3)}.jw-progress{background:#f2f2f2}.jw-time-tip,.jw-volume-tip{border:0}.jw-slider-volume.jw-volume-tip.jw-background-color.jw-slider-vertical{background:none}.jw-skip{padding:.5em;outline:none}.jw-skip .jw-skiptext,.jw-skip .jw-skip-icon{color:rgba(255,255,255,0.8)}.jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skip.jw-skippable:focus .jw-skip-icon{color:#fff}.jw-icon-cast google-cast-launcher{--connected-color:#fff;--disconnected-color:rgba(255,255,255,0.8)}.jw-icon-cast google-cast-launcher:focus{outline:none}.jw-icon-cast google-cast-launcher.jw-off{--connected-color:rgba(255,255,255,0.8)}.jw-icon-cast:focus google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-icon-cast:hover google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-nextup-container{bottom:2.5em;padding:5px .5em}.jw-nextup{border-radius:0}.jw-color-active{color:#fff;stroke:#fff;border-color:#fff}:not(.jw-flag-touch) .jw-color-active-hover:hover,:not(.jw-flag-touch) .jw-color-active-hover:focus{color:#fff;stroke:#fff;border-color:#fff}.jw-color-inactive{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-color-inactive-hover:hover{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}.jw-option{color:rgba(255,255,255,0.8)}.jw-option.jw-active-option{color:#fff;background-color:rgba(255,255,255,0.1)}:not(.jw-flag-touch) .jw-option:hover{color:#fff}.jwplayer{width:100%;font-size:16px;position:relative;display:block;min-height:0;overflow:hidden;box-sizing:border-box;font-family:Arial,Helvetica,sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.jwplayer *{box-sizing:inherit}.jwplayer.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jwplayer.jw-flag-aspect-mode{height:auto !important}.jwplayer.jw-flag-aspect-mode .jw-aspect{display:block}.jwplayer .jw-aspect{display:none}.jwplayer .jw-swf{outline:none}.jw-media,.jw-preview{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}.jw-media{overflow:hidden;cursor:pointer}.jw-plugin{position:absolute;bottom:66px}.jw-breakpoint-7 .jw-plugin{bottom:132px}.jw-plugin .jw-banner{max-width:100%;opacity:0;cursor:pointer;position:absolute;margin:auto auto 0;left:0;right:0;bottom:0;display:block}.jw-preview,.jw-captions,.jw-title{pointer-events:none}.jw-media,.jw-logo{pointer-events:all}.jw-wrapper{background-color:#000;position:absolute;top:0;left:0;right:0;bottom:0}.jw-hidden-accessibility{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.jw-contract-trigger::before{content:"";overflow:hidden;width:200%;height:200%;display:block;position:absolute;top:0;left:0}.jwplayer .jw-media video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:auto;background:transparent}.jwplayer .jw-media video::-webkit-media-controls-start-playback-button{display:none}.jwplayer.jw-stretch-uniform .jw-media video{object-fit:contain}.jwplayer.jw-stretch-none .jw-media video{object-fit:none}.jwplayer.jw-stretch-fill .jw-media video{object-fit:cover}.jwplayer.jw-stretch-exactfit .jw-media video{object-fit:fill}.jw-preview{position:absolute;display:none;opacity:1;visibility:visible;width:100%;height:100%;background:#000 no-repeat 50% 50%}.jwplayer .jw-preview,.jw-error .jw-preview{background-size:contain}.jw-stretch-none .jw-preview{background-size:auto auto}.jw-stretch-fill .jw-preview{background-size:cover}.jw-stretch-exactfit .jw-preview{background-size:100% 100%}.jw-title{display:none;padding-top:20px;width:100%;z-index:1}.jw-title-primary,.jw-title-secondary{color:#fff;padding-left:20px;padding-right:20px;padding-bottom:.5em;overflow:hidden;text-overflow:ellipsis;direction:unset;white-space:nowrap;width:100%}.jw-title-primary{font-size:1.625em}.jw-breakpoint-2 .jw-title-primary,.jw-breakpoint-3 .jw-title-primary{font-size:1.5em}.jw-flag-small-player .jw-title-primary{font-size:1.25em}.jw-flag-small-player .jw-title-secondary,.jw-title-secondary:empty{display:none}.jw-captions{position:absolute;width:100%;height:100%;text-align:center;display:none;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-decoration:none;pointer-events:none;overflow:hidden;top:0}.jw-captions.jw-captions-enabled{display:block}.jw-captions-window{display:none;padding:.25em;border-radius:.25em}.jw-captions-window.jw-captions-window-active{display:inline-block}.jw-captions-text{display:inline-block;color:#fff;background-color:#000;word-wrap:normal;word-break:normal;white-space:pre-line;font-style:normal;font-weight:normal;text-align:center;text-decoration:none}.jw-text-track-display{font-size:inherit;line-height:1.5}.jw-text-track-cue{background-color:rgba(0,0,0,0.5);color:#fff;padding:.1em .3em}.jwplayer video::-webkit-media-controls{display:none;justify-content:flex-start}.jwplayer video::-webkit-media-text-track-display{min-width:-webkit-min-content}.jwplayer video::cue{background-color:rgba(0,0,0,0.5)}.jwplayer video::-webkit-media-controls-panel-container{display:none}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing) .jw-captions,.jwplayer.jw-flag-media-audio.jw-state-playing .jw-captions,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden) .jw-captions{max-height:calc(100% - 60px)}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-flag-media-audio.jw-state-playing:not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container{max-height:calc(100% - 60px)}.jw-logo{position:absolute;margin:20px;cursor:pointer;pointer-events:all;background-repeat:no-repeat;background-size:contain;top:auto;right:auto;left:auto;bottom:auto;outline:none}.jw-logo.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-flag-audio-player .jw-logo{display:none}.jw-logo-top-right{top:0;right:0}.jw-logo-top-left{top:0;left:0}.jw-logo-bottom-left{left:0}.jw-logo-bottom-right{right:0}.jw-logo-bottom-left,.jw-logo-bottom-right{bottom:44px;transition:bottom 150ms cubic-bezier(0, .25, .25, 1)}.jw-state-idle .jw-logo{z-index:1}.jw-state-setup .jw-wrapper{background-color:inherit}.jw-state-setup .jw-logo,.jw-state-setup .jw-controls,.jw-state-setup .jw-controls-backdrop{visibility:hidden}span.jw-break{display:block}body .jw-error,body .jwplayer.jw-state-error{background-color:#333;color:#fff;font-size:16px;display:table;opacity:1;position:relative}body .jw-error .jw-display,body .jwplayer.jw-state-error .jw-display{display:none}body .jw-error .jw-media,body .jwplayer.jw-state-error .jw-media{cursor:default}body .jw-error .jw-preview,body .jwplayer.jw-state-error .jw-preview{background-color:#333}body .jw-error .jw-error-msg,body .jwplayer.jw-state-error .jw-error-msg{background-color:#000;border-radius:2px;display:flex;flex-direction:row;align-items:stretch;padding:20px}body .jw-error .jw-error-msg .jw-icon,body .jwplayer.jw-state-error .jw-error-msg .jw-icon{height:30px;width:30px;margin-right:20px;flex:0 0 auto;align-self:center}body .jw-error .jw-error-msg .jw-icon:empty,body .jwplayer.jw-state-error .jw-error-msg .jw-icon:empty{display:none}body .jw-error .jw-error-msg .jw-info-container,body .jwplayer.jw-state-error .jw-error-msg .jw-info-container{margin:0;padding:0}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg{flex-direction:column}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text{text-align:center}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon{flex:.5 0 auto;margin-right:0;margin-bottom:20px}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break{display:inline}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break:before{content:" "}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg{height:100%;width:100%;top:0;position:absolute;left:0;background:#000;-webkit-transform:none;transform:none;padding:4px 16px;z-index:1}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg.jw-info-overlay{max-width:none;max-height:none}body .jwplayer.jw-state-error .jw-title,.jw-state-idle .jw-title,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-title{display:block}body .jwplayer.jw-state-error .jw-preview,.jw-state-idle .jw-preview,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-preview{display:block}.jw-state-idle .jw-captions,.jwplayer.jw-state-complete .jw-captions,body .jwplayer.jw-state-error .jw-captions{display:none}.jw-state-idle video::-webkit-media-text-track-container,.jwplayer.jw-state-complete video::-webkit-media-text-track-container,body .jwplayer.jw-state-error video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-fullscreen{width:100% !important;height:100% !important;top:0;right:0;bottom:0;left:0;z-index:1000;margin:0;position:fixed}body .jwplayer.jw-flag-flash-blocked .jw-title{display:block}.jwplayer.jw-flag-controls-hidden .jw-media{cursor:default}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:45px}.jw-flag-floating{background-size:cover;background-color:#000}.jw-flag-floating .jw-wrapper{position:fixed;z-index:2147483647;-webkit-animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;top:auto;bottom:1rem;left:auto;right:1rem;max-width:400px;max-height:400px;margin:0 auto}@media screen and (max-width:480px){.jw-flag-floating .jw-wrapper{width:100%;left:0;right:0}}.jw-flag-floating .jw-wrapper .jw-media{touch-action:none}@media screen and (max-device-width:480px) and (orientation:portrait){.jw-flag-touch.jw-flag-floating .jw-wrapper{-webkit-animation:none;animation:none;top:62px;bottom:auto;left:0;right:0;max-width:none;max-height:none}}.jw-flag-floating .jw-float-icon{pointer-events:all;cursor:pointer;display:none}.jw-flag-floating .jw-float-icon .jw-svg-icon{-webkit-filter:drop-shadow(0 0 1px #000);filter:drop-shadow(0 0 1px #000)}.jw-flag-floating.jw-floating-dismissible .jw-dismiss-icon{display:none}.jw-flag-floating.jw-floating-dismissible.jw-flag-ads .jw-float-icon{display:flex}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-logo,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-logo{display:none}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-float-icon,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-float-icon{display:flex}.jw-float-icon{display:none;position:absolute;top:3px;right:5px;align-items:center;justify-content:center}@-webkit-keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.jw-flag-top{margin-top:2em;overflow:visible}.jw-top{height:2em;line-height:2;pointer-events:none;text-align:center;opacity:.8;position:absolute;top:-2em;width:100%}.jw-top .jw-icon{cursor:pointer;pointer-events:all;height:auto;width:auto}.jw-top .jw-text{color:#555}',""])},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t){e.exports=''},function(e,t,i){var n=i(91);"string"==typeof n&&(n=[["all-players",n,""]]),i(35).style(n,"all-players"),n.locals&&(e.exports=n.locals)},function(e,t,i){(e.exports=i(59)(!1)).push([e.i,'.jw-overlays,.jw-controls,.jw-controls-backdrop,.jw-flag-small-player .jw-settings-menu,.jw-settings-submenu{height:100%;width:100%}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-settings-menu .jw-icon.jw-button-color::after{position:absolute;right:0}.jw-overlays,.jw-controls,.jw-controls-backdrop,.jw-settings-item-active::before{top:0;position:absolute;left:0}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-settings-menu .jw-icon.jw-button-color::after{position:absolute;bottom:0;left:0}.jw-nextup-close{position:absolute;top:0;right:0}.jw-overlays,.jw-controls,.jw-flag-small-player .jw-settings-menu{position:absolute;bottom:0;right:0}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-time-tip::after,.jw-settings-menu .jw-icon.jw-button-color::after,.jw-text-live::before,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{content:"";display:block}.jw-svg-icon{height:24px;width:24px;fill:currentColor;pointer-events:none}.jw-icon{height:44px;width:44px;background-color:transparent;outline:none}.jw-icon.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-icon-airplay .jw-svg-icon-airplay-off{display:none}.jw-off.jw-icon-airplay .jw-svg-icon-airplay-off{display:block}.jw-icon-airplay .jw-svg-icon-airplay-on{display:block}.jw-off.jw-icon-airplay .jw-svg-icon-airplay-on{display:none}.jw-icon-cc .jw-svg-icon-cc-off{display:none}.jw-off.jw-icon-cc .jw-svg-icon-cc-off{display:block}.jw-icon-cc .jw-svg-icon-cc-on{display:block}.jw-off.jw-icon-cc .jw-svg-icon-cc-on{display:none}.jw-icon-fullscreen .jw-svg-icon-fullscreen-off{display:none}.jw-off.jw-icon-fullscreen .jw-svg-icon-fullscreen-off{display:block}.jw-icon-fullscreen .jw-svg-icon-fullscreen-on{display:block}.jw-off.jw-icon-fullscreen .jw-svg-icon-fullscreen-on{display:none}.jw-icon-volume .jw-svg-icon-volume-0{display:none}.jw-off.jw-icon-volume .jw-svg-icon-volume-0{display:block}.jw-icon-volume .jw-svg-icon-volume-100{display:none}.jw-full.jw-icon-volume .jw-svg-icon-volume-100{display:block}.jw-icon-volume .jw-svg-icon-volume-50{display:block}.jw-off.jw-icon-volume .jw-svg-icon-volume-50,.jw-full.jw-icon-volume .jw-svg-icon-volume-50{display:none}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon[aria-checked="true"]::after,.jw-settings-open .jw-icon-settings::after,.jw-icon-volume.jw-open::after{opacity:1}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-cc,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-settings,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-audio-tracks,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-hd,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-settings-sharing,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-fullscreen,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player).jw-flag-cast-available .jw-icon-airplay,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player).jw-flag-cast-available .jw-icon-cast{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-volume,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-text-live{bottom:6px}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-volume::after{display:none}.jw-overlays,.jw-controls{pointer-events:none}.jw-controls-backdrop{display:block;background:linear-gradient(to bottom, transparent, rgba(0,0,0,0.4) 77%, rgba(0,0,0,0.4) 100%) 100% 100% / 100% 240px no-repeat transparent;transition:opacity 250ms cubic-bezier(0, .25, .25, 1),background-size 250ms cubic-bezier(0, .25, .25, 1);pointer-events:none}.jw-overlays{cursor:auto}.jw-controls{overflow:hidden}.jw-flag-small-player .jw-controls{text-align:center}.jw-text{height:1em;font-family:Arial,Helvetica,sans-serif;font-size:.75em;font-style:normal;font-weight:normal;color:#fff;text-align:center;font-variant:normal;font-stretch:normal}.jw-controlbar,.jw-skip,.jw-display-icon-container .jw-icon,.jw-nextup-container,.jw-autostart-mute,.jw-overlays .jw-plugin{pointer-events:all}.jwplayer .jw-display-icon-container,.jw-error .jw-display-icon-container{width:auto;height:auto;box-sizing:content-box}.jw-display{display:table;height:100%;padding:57px 0;position:relative;width:100%}.jw-flag-dragging .jw-display{display:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-display-container{display:table-cell;height:100%;text-align:center;vertical-align:middle}.jw-display-controls{display:inline-block}.jwplayer .jw-display-icon-container{float:left}.jw-display-icon-container{display:inline-block;padding:5.5px;margin:0 22px}.jw-display-icon-container .jw-icon{height:75px;width:75px;cursor:pointer;display:flex;justify-content:center;align-items:center}.jw-display-icon-container .jw-icon .jw-svg-icon{height:33px;width:33px;padding:0;position:relative}.jw-display-icon-container .jw-icon .jw-svg-icon-rewind{padding:.2em .05em}.jw-breakpoint--1 .jw-nextup-container{display:none}.jw-breakpoint-0 .jw-display-icon-next,.jw-breakpoint--1 .jw-display-icon-next,.jw-breakpoint-0 .jw-display-icon-rewind,.jw-breakpoint--1 .jw-display-icon-rewind{display:none}.jw-breakpoint-0 .jw-display .jw-icon,.jw-breakpoint--1 .jw-display .jw-icon,.jw-breakpoint-0 .jw-display .jw-svg-icon,.jw-breakpoint--1 .jw-display .jw-svg-icon{width:44px;height:44px;line-height:44px}.jw-breakpoint-0 .jw-display .jw-icon:before,.jw-breakpoint--1 .jw-display .jw-icon:before,.jw-breakpoint-0 .jw-display .jw-svg-icon:before,.jw-breakpoint--1 .jw-display .jw-svg-icon:before{width:22px;height:22px}.jw-breakpoint-1 .jw-display .jw-icon,.jw-breakpoint-1 .jw-display .jw-svg-icon{width:44px;height:44px;line-height:44px}.jw-breakpoint-1 .jw-display .jw-icon:before,.jw-breakpoint-1 .jw-display .jw-svg-icon:before{width:22px;height:22px}.jw-breakpoint-1 .jw-display .jw-icon.jw-icon-rewind:before{width:33px;height:33px}.jw-breakpoint-2 .jw-display .jw-icon,.jw-breakpoint-3 .jw-display .jw-icon,.jw-breakpoint-2 .jw-display .jw-svg-icon,.jw-breakpoint-3 .jw-display .jw-svg-icon{width:77px;height:77px;line-height:77px}.jw-breakpoint-2 .jw-display .jw-icon:before,.jw-breakpoint-3 .jw-display .jw-icon:before,.jw-breakpoint-2 .jw-display .jw-svg-icon:before,.jw-breakpoint-3 .jw-display .jw-svg-icon:before{width:38.5px;height:38.5px}.jw-breakpoint-4 .jw-display .jw-icon,.jw-breakpoint-5 .jw-display .jw-icon,.jw-breakpoint-6 .jw-display .jw-icon,.jw-breakpoint-7 .jw-display .jw-icon,.jw-breakpoint-4 .jw-display .jw-svg-icon,.jw-breakpoint-5 .jw-display .jw-svg-icon,.jw-breakpoint-6 .jw-display .jw-svg-icon,.jw-breakpoint-7 .jw-display .jw-svg-icon{width:88px;height:88px;line-height:88px}.jw-breakpoint-4 .jw-display .jw-icon:before,.jw-breakpoint-5 .jw-display .jw-icon:before,.jw-breakpoint-6 .jw-display .jw-icon:before,.jw-breakpoint-7 .jw-display .jw-icon:before,.jw-breakpoint-4 .jw-display .jw-svg-icon:before,.jw-breakpoint-5 .jw-display .jw-svg-icon:before,.jw-breakpoint-6 .jw-display .jw-svg-icon:before,.jw-breakpoint-7 .jw-display .jw-svg-icon:before{width:44px;height:44px}.jw-controlbar{display:flex;flex-flow:row wrap;align-items:center;justify-content:center;position:absolute;left:0;bottom:0;width:100%;border:none;border-radius:0;background-size:auto;box-shadow:none;max-height:72px;transition:250ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s}.jw-breakpoint-7 .jw-controlbar{max-height:140px}.jw-breakpoint-7 .jw-controlbar .jw-button-container{padding:0 48px 20px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-tooltip{margin-bottom:-7px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume .jw-overlay{padding-bottom:40%}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-text{font-size:1em}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-text.jw-text-elapsed{justify-content:flex-end}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-inline,.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume{height:60px;width:60px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-inline .jw-svg-icon,.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-controlbar .jw-slider-time{padding:0 60px;height:34px}.jw-breakpoint-7 .jw-controlbar .jw-slider-time .jw-slider-container{height:10px}.jw-controlbar .jw-button-image{background:no-repeat 50% 50%;background-size:contain;max-height:24px}.jw-controlbar .jw-spacer{flex:1 1 auto;align-self:stretch}.jw-controlbar .jw-icon.jw-button-color:hover{color:#fff}.jw-button-container{display:flex;flex-flow:row nowrap;flex:1 1 auto;align-items:center;justify-content:center;width:100%;padding:0 12px}.jw-slider-horizontal{background-color:transparent}.jw-icon-inline{position:relative}.jw-icon-inline,.jw-icon-tooltip{height:44px;width:44px;align-items:center;display:flex;justify-content:center}.jw-icon-inline:not(.jw-text),.jw-icon-tooltip,.jw-slider-horizontal{cursor:pointer}.jw-text-elapsed,.jw-text-duration{justify-content:flex-start;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.jw-icon-tooltip{position:relative}.jw-knob:hover,.jw-icon-inline:hover,.jw-icon-tooltip:hover,.jw-icon-display:hover,.jw-option:before:hover{color:#fff}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{pointer-events:none}.jw-icon-cast{display:none;margin:0;padding:0}.jw-icon-cast google-cast-launcher{background-color:transparent;border:none;padding:0;width:24px;height:24px;cursor:pointer}.jw-icon-inline.jw-icon-volume{display:none}.jwplayer .jw-text-countdown{display:none}.jw-flag-small-player .jw-display{padding-top:0;padding-bottom:0}.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-rewind,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-next,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-playback{display:none}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop{opacity:0}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-countdown{display:flex}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-duration,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-duration{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-text-countdown,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-related-btn,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-slider-volume{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-controlbar{flex-direction:column-reverse}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-button-container{height:30px}.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-volume,.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-fullscreen{display:none}.jwplayer:not(.jw-breakpoint-0) .jw-text-duration:before,.jwplayer:not(.jw-breakpoint--1) .jw-text-duration:before{content:"/";padding-right:1ch;padding-left:1ch}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar{will-change:transform}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar .jw-text{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.jw-slider-container{display:flex;align-items:center;position:relative;touch-action:none}.jw-rail,.jw-buffer,.jw-progress{position:absolute;cursor:pointer}.jw-progress{background-color:#f2f2f2}.jw-rail{background-color:rgba(255,255,255,0.3)}.jw-buffer{background-color:rgba(255,255,255,0.3)}.jw-knob{height:13px;width:13px;background-color:#fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,0.4);opacity:1;pointer-events:none;position:absolute;-webkit-transform:translate(-50%, -50%) scale(0);transform:translate(-50%, -50%) scale(0);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform}.jw-flag-dragging .jw-slider-time .jw-knob,.jw-icon-volume:active .jw-slider-volume .jw-knob{box-shadow:0 0 26px rgba(0,0,0,0.2),0 0 10px rgba(0,0,0,0.4),0 0 0 6px rgba(255,255,255,0.2)}.jw-slider-horizontal,.jw-slider-vertical{display:flex}.jw-slider-horizontal .jw-slider-container{height:5px;width:100%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue,.jw-slider-horizontal .jw-knob{top:50%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue{-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress{height:5px}.jw-slider-horizontal .jw-rail{width:100%}.jw-slider-vertical{align-items:center;flex-direction:column}.jw-slider-vertical .jw-slider-container{height:88px;width:5px}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress,.jw-slider-vertical .jw-knob{left:50%}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress{height:100%;width:5px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out;bottom:0}.jw-slider-vertical .jw-knob{-webkit-transform:translate(-50%, 50%);transform:translate(-50%, 50%)}.jw-slider-time.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-slider-time,.jw-flag-audio-player .jw-slider-volume{height:17px;width:100%;align-items:center;background:transparent none;padding:0 12px}.jw-slider-time .jw-cue{background-color:rgba(33,33,33,0.8);cursor:pointer;position:absolute;width:6px}.jw-slider-time,.jw-horizontal-volume-container{z-index:1;outline:none}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail,.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer,.jw-slider-time .jw-progress,.jw-horizontal-volume-container .jw-progress,.jw-slider-time .jw-cue,.jw-horizontal-volume-container .jw-cue{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;-webkit-transform:translate(0, -50%) scale(1, .6);transform:translate(0, -50%) scale(1, .6);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out}.jw-slider-time:hover .jw-rail,.jw-horizontal-volume-container:hover .jw-rail,.jw-slider-time:focus .jw-rail,.jw-horizontal-volume-container:focus .jw-rail,.jw-flag-dragging .jw-slider-time .jw-rail,.jw-flag-dragging .jw-horizontal-volume-container .jw-rail,.jw-flag-touch .jw-slider-time .jw-rail,.jw-flag-touch .jw-horizontal-volume-container .jw-rail,.jw-slider-time:hover .jw-buffer,.jw-horizontal-volume-container:hover .jw-buffer,.jw-slider-time:focus .jw-buffer,.jw-horizontal-volume-container:focus .jw-buffer,.jw-flag-dragging .jw-slider-time .jw-buffer,.jw-flag-dragging .jw-horizontal-volume-container .jw-buffer,.jw-flag-touch .jw-slider-time .jw-buffer,.jw-flag-touch .jw-horizontal-volume-container .jw-buffer,.jw-slider-time:hover .jw-progress,.jw-horizontal-volume-container:hover .jw-progress,.jw-slider-time:focus .jw-progress,.jw-horizontal-volume-container:focus .jw-progress,.jw-flag-dragging .jw-slider-time .jw-progress,.jw-flag-dragging .jw-horizontal-volume-container .jw-progress,.jw-flag-touch .jw-slider-time .jw-progress,.jw-flag-touch .jw-horizontal-volume-container .jw-progress,.jw-slider-time:hover .jw-cue,.jw-horizontal-volume-container:hover .jw-cue,.jw-slider-time:focus .jw-cue,.jw-horizontal-volume-container:focus .jw-cue,.jw-flag-dragging .jw-slider-time .jw-cue,.jw-flag-dragging .jw-horizontal-volume-container .jw-cue,.jw-flag-touch .jw-slider-time .jw-cue,.jw-flag-touch .jw-horizontal-volume-container .jw-cue{-webkit-transform:translate(0, -50%) scale(1, 1);transform:translate(0, -50%) scale(1, 1)}.jw-slider-time:hover .jw-knob,.jw-horizontal-volume-container:hover .jw-knob,.jw-slider-time:focus .jw-knob,.jw-horizontal-volume-container:focus .jw-knob{-webkit-transform:translate(-50%, -50%) scale(1);transform:translate(-50%, -50%) scale(1)}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail{background-color:rgba(255,255,255,0.2)}.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer{background-color:rgba(255,255,255,0.4)}.jw-flag-touch .jw-slider-time::before,.jw-flag-touch .jw-horizontal-volume-container::before{height:44px;width:100%;content:"";position:absolute;display:block;bottom:calc(100% - 17px);left:0}.jw-slider-time.jw-tab-focus:focus .jw-rail,.jw-horizontal-volume-container.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time{height:17px;padding:0}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-slider-container{height:10px}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-knob{border-radius:0;border:1px solid rgba(0,0,0,0.75);height:12px;width:10px}.jw-modal{width:284px}.jw-breakpoint-7 .jw-modal,.jw-breakpoint-6 .jw-modal,.jw-breakpoint-5 .jw-modal{height:232px}.jw-breakpoint-4 .jw-modal,.jw-breakpoint-3 .jw-modal{height:192px}.jw-breakpoint-2 .jw-modal,.jw-flag-small-player .jw-modal{bottom:0;right:0;height:100%;width:100%;max-height:none;max-width:none;z-index:2}.jwplayer .jw-rightclick{display:none;position:absolute;white-space:nowrap}.jwplayer .jw-rightclick.jw-open{display:block}.jwplayer .jw-rightclick .jw-rightclick-list{border-radius:1px;list-style:none;margin:0;padding:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item{background-color:rgba(0,0,0,0.8);border-bottom:1px solid #444;margin:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo{color:#fff;display:inline-flex;padding:0 10px 0 0;vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo .jw-svg-icon{height:20px;width:20px}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-link{border:none;color:#fff;display:block;font-size:11px;line-height:1em;padding:15px 23px;text-align:start;text-decoration:none;width:100%}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:last-child{border-bottom:none}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:hover{cursor:pointer}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured{vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link{color:#fff}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link span{color:#fff}.jwplayer .jw-rightclick .jw-info-overlay-item,.jwplayer .jw-rightclick .jw-share-item,.jwplayer .jw-rightclick .jw-shortcuts-item{border:none;background-color:transparent;outline:none;cursor:pointer}.jw-icon-tooltip.jw-open .jw-overlay{opacity:1;pointer-events:auto;transition-delay:0s}.jw-icon-tooltip.jw-open .jw-overlay:focus{outline:none}.jw-icon-tooltip.jw-open .jw-overlay:focus.jw-tab-focus{outline:solid 2px #4d90fe}.jw-slider-time .jw-overlay:before{height:1em;top:auto}.jw-slider-time .jw-icon-tooltip.jw-open .jw-overlay{pointer-events:none}.jw-volume-tip{padding:13px 0 26px}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{height:auto;width:100%;box-shadow:0 0 10px rgba(0,0,0,0.4);color:#fff;display:block;margin:0 0 14px;pointer-events:none;position:relative;z-index:0}.jw-time-tip::after,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{top:100%;position:absolute;left:50%;height:14px;width:14px;border-radius:1px;background-color:currentColor;-webkit-transform-origin:75% 50%;transform-origin:75% 50%;-webkit-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);z-index:-1}.jw-time-tip .jw-text,.jw-controlbar .jw-tooltip .jw-text,.jw-settings-menu .jw-tooltip .jw-text{background-color:#fff;border-radius:1px;color:#000;font-size:10px;height:auto;line-height:1;padding:7px 10px;display:inline-block;min-width:100%;vertical-align:middle}.jw-controlbar .jw-overlay{position:absolute;bottom:100%;left:50%;margin:0;min-height:44px;min-width:44px;opacity:0;pointer-events:none;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s, 150ms;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);width:100%;z-index:1}.jw-controlbar .jw-overlay .jw-contents{position:relative}.jw-controlbar .jw-option{position:relative;white-space:nowrap;cursor:pointer;list-style:none;height:1.5em;font-family:inherit;line-height:1.5em;padding:0 .5em;font-size:.8em;margin:0}.jw-controlbar .jw-option::before{padding-right:.125em}.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{position:absolute;bottom:100%;left:50%;opacity:0;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:100ms 0s cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility, -webkit-transform;transition-property:opacity, transform, visibility;transition-property:opacity, transform, visibility, -webkit-transform;visibility:hidden;white-space:nowrap;width:auto;z-index:1}.jw-controlbar .jw-tooltip.jw-open,.jw-settings-menu .jw-tooltip.jw-open{opacity:1;-webkit-transform:translate(-50%, -10px);transform:translate(-50%, -10px);transition-duration:150ms;transition-delay:500ms,0s,500ms;visibility:visible}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen{left:auto;right:0;-webkit-transform:translate(0, 0);transform:translate(0, 0)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen.jw-open,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen.jw-open{-webkit-transform:translate(0, -10px);transform:translate(0, -10px)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen::after,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen::after{left:auto;right:9px}.jw-tooltip-time{height:auto;width:0;bottom:100%;line-height:normal;padding:0;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jw-tooltip-time .jw-overlay{bottom:0;min-height:0;width:auto}.jw-tooltip{bottom:57px;display:none;position:absolute}.jw-tooltip .jw-text{height:100%;white-space:nowrap;text-overflow:ellipsis;direction:unset;max-width:246px;overflow:hidden}.jw-flag-audio-player .jw-tooltip{display:none}.jw-flag-small-player .jw-time-thumb{display:none}.jwplayer .jw-shortcuts-tooltip{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column;z-index:1}.jwplayer .jw-shortcuts-tooltip.jw-open{display:flex}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-close{flex:0 0 auto;margin:5px 5px 5px auto}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container{display:flex;flex:1 1 auto;flex-flow:column;font-size:12px;margin:0 20px 20px;overflow-y:auto;padding:5px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar{background-color:transparent;width:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-title{font-weight:bold}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list{display:flex;max-width:340px;margin:0 10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-tooltip-descriptions{width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row{display:flex;align-items:center;justify-content:space-between;margin:10px 0;width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-description{margin-right:10px;max-width:70%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-key{background:#fefefe;color:#333;overflow:hidden;padding:7px 10px;text-overflow:ellipsis;white-space:nowrap}.jw-skip{color:rgba(255,255,255,0.8);cursor:default;position:absolute;display:flex;right:.75em;bottom:56px;padding:.5em;border:1px solid #333;background-color:#000;align-items:center;height:2em}.jw-skip.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-skip.jw-skippable{cursor:pointer;padding:.25em .75em}.jw-skip.jw-skippable:hover{cursor:pointer;color:#fff}.jw-skip.jw-skippable .jw-skip-icon{display:inline;height:24px;width:24px;margin:0}.jw-breakpoint-7 .jw-skip{padding:1.35em 1em;bottom:130px}.jw-breakpoint-7 .jw-skip .jw-text{font-size:1em;font-weight:normal}.jw-breakpoint-7 .jw-skip .jw-icon-inline{height:30px;width:30px}.jw-breakpoint-7 .jw-skip .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-skip .jw-skip-icon{display:none;margin-left:-0.75em;padding:0 .5em;pointer-events:none}.jw-skip .jw-skip-icon .jw-svg-icon-next{display:block;padding:0}.jw-skip .jw-text,.jw-skip .jw-skip-icon{vertical-align:middle;font-size:.7em}.jw-skip .jw-text{font-weight:bold}.jw-cast{background-size:cover;display:none;height:100%;position:relative;width:100%}.jw-cast-container{background:linear-gradient(180deg, rgba(25,25,25,0.75), rgba(25,25,25,0.25), rgba(25,25,25,0));left:0;padding:20px 20px 80px;position:absolute;top:0;width:100%}.jw-cast-text{color:#fff;font-size:1.6em}.jw-breakpoint--1 .jw-cast-text,.jw-breakpoint-0 .jw-cast-text{font-size:1.15em}.jw-breakpoint-1 .jw-cast-text,.jw-breakpoint-2 .jw-cast-text,.jw-breakpoint-3 .jw-cast-text{font-size:1.3em}.jw-nextup-container{position:absolute;bottom:66px;left:0;background-color:transparent;cursor:pointer;margin:0 auto;padding:12px;pointer-events:none;right:0;text-align:right;visibility:hidden;width:100%}.jw-settings-open .jw-nextup-container,.jw-info-open .jw-nextup-container{display:none}.jw-breakpoint-7 .jw-nextup-container{padding:60px}.jw-flag-small-player .jw-nextup-container{padding:0 12px 0 0}.jw-flag-small-player .jw-nextup-container .jw-nextup-title,.jw-flag-small-player .jw-nextup-container .jw-nextup-duration,.jw-flag-small-player .jw-nextup-container .jw-nextup-close{display:none}.jw-flag-small-player .jw-nextup-container .jw-nextup-tooltip{height:30px}.jw-flag-small-player .jw-nextup-container .jw-nextup-header{font-size:12px}.jw-flag-small-player .jw-nextup-container .jw-nextup-body{justify-content:center;align-items:center;padding:.75em .3em}.jw-flag-small-player .jw-nextup-container .jw-nextup-thumbnail{width:50%}.jw-flag-small-player .jw-nextup-container .jw-nextup{max-width:65px}.jw-flag-small-player .jw-nextup-container .jw-nextup.jw-nextup-thumbnail-visible{max-width:120px}.jw-nextup{background:#333;border-radius:0;box-shadow:0 0 10px rgba(0,0,0,0.5);color:rgba(255,255,255,0.8);display:inline-block;max-width:280px;overflow:hidden;opacity:0;position:relative;width:64%;pointer-events:all;-webkit-transform:translate(0, -5px);transform:translate(0, -5px);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;transition-delay:0s}.jw-nextup:hover .jw-nextup-tooltip{color:#fff}.jw-nextup.jw-nextup-thumbnail-visible{max-width:400px}.jw-nextup.jw-nextup-thumbnail-visible .jw-nextup-thumbnail{display:block}.jw-nextup-container-visible{visibility:visible}.jw-nextup-container-visible .jw-nextup{opacity:1;-webkit-transform:translate(0, 0);transform:translate(0, 0);transition-delay:0s, 0s, 150ms}.jw-nextup-tooltip{display:flex;height:80px}.jw-nextup-thumbnail{width:120px;background-position:center;background-size:cover;flex:0 0 auto;display:none}.jw-nextup-body{flex:1 1 auto;overflow:hidden;padding:.75em .875em;display:flex;flex-flow:column wrap;justify-content:space-between}.jw-nextup-header,.jw-nextup-title{font-size:14px;line-height:1.35}.jw-nextup-header{font-weight:bold}.jw-nextup-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.jw-nextup-duration{align-self:flex-end;text-align:right;font-size:12px}.jw-nextup-close{height:24px;width:24px;border:none;color:rgba(255,255,255,0.8);cursor:pointer;margin:6px;visibility:hidden}.jw-nextup-close:hover{color:#fff}.jw-nextup-sticky .jw-nextup-close{visibility:visible}.jw-autostart-mute{position:absolute;bottom:0;right:12px;height:44px;width:44px;background-color:rgba(33,33,33,0.4);padding:5px 4px 5px 6px;display:none}.jwplayer.jw-flag-autostart:not(.jw-flag-media-audio) .jw-nextup{display:none}.jw-settings-menu{position:absolute;bottom:57px;right:12px;align-items:flex-start;background-color:#333;display:none;flex-flow:column nowrap;max-width:284px;pointer-events:auto}.jw-settings-open .jw-settings-menu{display:flex}.jw-breakpoint-7 .jw-settings-menu{bottom:130px;right:60px;max-height:none;max-width:none;height:35%;width:25%}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline{height:60px;width:60px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-tooltip .jw-text{font-size:1em}.jw-breakpoint-6 .jw-settings-menu,.jw-breakpoint-5 .jw-settings-menu{height:232px;width:284px;max-height:232px}.jw-breakpoint-4 .jw-settings-menu,.jw-breakpoint-3 .jw-settings-menu{height:192px;width:284px;max-height:192px}.jw-breakpoint-2 .jw-settings-menu{height:179px;width:284px;max-height:179px}.jw-flag-small-player .jw-settings-menu{max-width:none}.jw-settings-menu .jw-icon.jw-button-color::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon.jw-button-color[aria-checked="true"]::after{opacity:1}.jw-settings-topbar{align-items:center;background-color:rgba(0,0,0,0.4);display:flex;flex:0 0 auto;padding:3px 5px 0;width:100%}.jw-settings-topbar .jw-settings-close{margin-left:auto}.jw-settings-submenu{display:none;flex:1 1 auto;overflow-y:auto;padding:8px 20px 0 5px}.jw-settings-submenu::-webkit-scrollbar{background-color:transparent;width:6px}.jw-settings-submenu::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-settings-submenu.jw-settings-submenu-active{display:block}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item{font-size:1em;padding:11px 0 11px 30px}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-settings-item-active::before{justify-content:flex-end}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-auto-label{font-size:.85em;padding-left:10px}.jw-flag-touch .jw-settings-submenu{overflow-y:scroll;-webkit-overflow-scrolling:touch}.jw-auto-label{font-size:10px;font-weight:initial;opacity:.75;padding-left:5px}.jw-settings-content-item{position:relative;color:rgba(255,255,255,0.8);cursor:pointer;font-size:12px;line-height:1;padding:7px 0 7px 15px;width:100%;text-align:left;outline:none}.jw-settings-content-item:hover{color:#fff}.jw-settings-content-item:focus{font-weight:bold}.jw-flag-small-player .jw-settings-content-item{line-height:1.75}.jw-settings-content-item.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-settings-item-active{font-weight:bold;position:relative}.jw-settings-item-active::before{height:100%;width:1em;align-items:center;content:"\\2022";display:inline-flex;justify-content:center}.jw-breakpoint-2 .jw-settings-open .jw-display-container,.jw-flag-small-player .jw-settings-open .jw-display-container,.jw-flag-touch .jw-settings-open .jw-display-container{display:none}.jw-breakpoint-2 .jw-settings-open.jw-controls,.jw-flag-small-player .jw-settings-open.jw-controls,.jw-flag-touch .jw-settings-open.jw-controls{z-index:1}.jw-flag-small-player .jw-settings-open .jw-controlbar{display:none}.jw-settings-open .jw-icon-settings::after{opacity:1}.jw-settings-open .jw-tooltip-settings{display:none}.jw-sharing-link{cursor:pointer}.jw-shortcuts-container .jw-switch{position:relative;display:inline-block;transition:ease-out .15s;transition-property:opacity, background;border-radius:18px;width:80px;height:20px;padding:10px;background:rgba(80,80,80,0.8);cursor:pointer;font-size:inherit;vertical-align:middle}.jw-shortcuts-container .jw-switch .jw-switch-knob{position:absolute;top:2px;left:1px;transition:ease-out .15s;box-shadow:0 0 10px rgba(0,0,0,0.4);border-radius:13px;width:15px;height:15px;background:#fefefe}.jw-shortcuts-container .jw-switch:before,.jw-shortcuts-container .jw-switch:after{position:absolute;top:3px;transition:inherit;color:#fefefe}.jw-shortcuts-container .jw-switch:before{content:attr(data-jw-switch-disabled);right:8px}.jw-shortcuts-container .jw-switch:after{content:attr(data-jw-switch-enabled);left:8px;opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]{background:#475470}.jw-shortcuts-container .jw-switch[aria-checked="true"]:before{opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]:after{opacity:1}.jw-shortcuts-container .jw-switch[aria-checked="true"] .jw-switch-knob{left:60px}.jw-idle-icon-text{display:none;line-height:1;position:absolute;text-align:center;text-indent:.35em;top:100%;white-space:nowrap;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.jw-idle-label{border-radius:50%;color:#fff;-webkit-filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));font:normal 16px/1 Arial,Helvetica,sans-serif;position:relative;transition:background-color 150ms cubic-bezier(0, .25, .25, 1);transition-property:background-color,-webkit-filter;transition-property:background-color,filter;transition-property:background-color,filter,-webkit-filter;-webkit-font-smoothing:antialiased}.jw-state-idle .jw-icon-display.jw-idle-label .jw-idle-icon-text{display:block}.jw-state-idle .jw-icon-display.jw-idle-label .jw-svg-icon-play{-webkit-transform:scale(.7, .7);transform:scale(.7, .7)}.jw-breakpoint-0.jw-state-idle .jw-icon-display.jw-idle-label,.jw-breakpoint--1.jw-state-idle .jw-icon-display.jw-idle-label{font-size:12px}.jw-info-overlay{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column}.jw-info-overlay .jw-info-close{flex:0 0 auto;margin:5px 5px 5px auto}.jw-info-open .jw-info-overlay{display:flex}.jw-info-container{display:flex;flex:1 1 auto;flex-flow:column;margin:0 20px 20px;overflow-y:auto;padding:5px}.jw-info-container [class*="jw-info"]:not(:first-of-type){color:rgba(255,255,255,0.8);padding-top:10px;font-size:12px}.jw-info-container .jw-info-description{margin-bottom:30px;text-align:start}.jw-info-container .jw-info-description:empty{display:none}.jw-info-container .jw-info-duration{text-align:start}.jw-info-container .jw-info-title{text-align:start;font-size:12px;font-weight:bold}.jw-info-container::-webkit-scrollbar{background-color:transparent;width:6px}.jw-info-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-info-clientid{align-self:flex-end;font-size:12px;color:rgba(255,255,255,0.8);margin:0 20px 20px 44px;text-align:right}.jw-flag-touch .jw-info-open .jw-display-container{display:none}@supports ((-webkit-filter: drop-shadow(0 0 3px #000)) or (filter: drop-shadow(0 0 3px #000))){.jwplayer.jw-ab-drop-shadow .jw-controls .jw-svg-icon,.jwplayer.jw-ab-drop-shadow .jw-controls .jw-icon.jw-text,.jwplayer.jw-ab-drop-shadow .jw-slider-container .jw-rail,.jwplayer.jw-ab-drop-shadow .jw-title{text-shadow:none;box-shadow:none;-webkit-filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3));filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3))}.jwplayer.jw-ab-drop-shadow .jw-button-color{opacity:.8;transition-property:color, opacity}.jwplayer.jw-ab-drop-shadow .jw-button-color:not(:hover){color:#fff;opacity:.8}.jwplayer.jw-ab-drop-shadow .jw-button-color:hover{opacity:1}.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0), hsla(0, 0%, 0%, 0.00787) 10.79%, hsla(0, 0%, 0%, 0.02963) 21.99%, hsla(0, 0%, 0%, 0.0625) 33.34%, hsla(0, 0%, 0%, 0.1037) 44.59%, hsla(0, 0%, 0%, 0.15046) 55.48%, hsla(0, 0%, 0%, 0.2) 65.75%, hsla(0, 0%, 0%, 0.24954) 75.14%, hsla(0, 0%, 0%, 0.2963) 83.41%, hsla(0, 0%, 0%, 0.3375) 90.28%, hsla(0, 0%, 0%, 0.37037) 95.51%, hsla(0, 0%, 0%, 0.39213) 98.83%, hsla(0, 0%, 0%, 0.4));mix-blend-mode:multiply;transition-property:opacity}.jw-state-idle.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0.2), hsla(0, 0%, 0%, 0.19606) 1.17%, hsla(0, 0%, 0%, 0.18519) 4.49%, hsla(0, 0%, 0%, 0.16875) 9.72%, hsla(0, 0%, 0%, 0.14815) 16.59%, hsla(0, 0%, 0%, 0.12477) 24.86%, hsla(0, 0%, 0%, 0.1) 34.25%, hsla(0, 0%, 0%, 0.07523) 44.52%, hsla(0, 0%, 0%, 0.05185) 55.41%, hsla(0, 0%, 0%, 0.03125) 66.66%, hsla(0, 0%, 0%, 0.01481) 78.01%, hsla(0, 0%, 0%, 0.00394) 89.21%, hsla(0, 0%, 0%, 0));background-size:100% 7rem;background-position:50% 0}.jwplayer.jw-ab-drop-shadow.jw-state-idle .jw-controls{background-color:transparent}}.jw-video-thumbnail-container{position:relative;overflow:hidden}.jw-video-thumbnail-container:not(.jw-related-shelf-item-image){height:100%;width:100%}.jw-video-thumbnail-container.jw-video-thumbnail-generated{position:absolute;top:0;left:0}.jw-video-thumbnail-container:hover,.jw-related-item-content:hover .jw-video-thumbnail-container,.jw-related-shelf-item:hover .jw-video-thumbnail-container{cursor:pointer}.jw-video-thumbnail-container:hover .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-item-content:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-shelf-item:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail{position:absolute;top:50%;left:50%;bottom:unset;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:100%;height:auto;min-width:100%;min-height:100%;opacity:0;transition:opacity .3s ease;object-fit:cover;background:#000}.jw-related-item-next-up .jw-video-thumbnail-container .jw-video-thumbnail{height:100%;width:auto}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-visible:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-completed{opacity:0}.jw-video-thumbnail-container .jw-video-thumbnail~.jw-svg-icon-play{display:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-shelf-item-aspect{pointer-events:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-item-poster-content{pointer-events:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-state-idle .jw-controls{background:rgba(0,0,0,0.4)}.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay),.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay){display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon:focus{border:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon .jw-svg-icon-buffer{-webkit-animation:jw-spin 2s linear infinite;animation:jw-spin 2s linear infinite;display:block}@-webkit-keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jwplayer.jw-state-buffering .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-pause{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-pause{display:block}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-controls-backdrop{opacity:0}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-logo-bottom-left,.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio):not(.jw-flag-autostart) .jw-logo-bottom-right{bottom:0}.jwplayer .jw-icon-playback .jw-svg-icon-stop{display:none}.jwplayer.jw-state-paused .jw-svg-icon-pause,.jwplayer.jw-state-idle .jw-svg-icon-pause,.jwplayer.jw-state-error .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-svg-icon-pause{display:none}.jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-complete .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-play{display:none}.jwplayer:not(.jw-state-buffering) .jw-svg-icon-buffer{display:none}.jwplayer:not(.jw-state-complete) .jw-svg-icon-replay{display:none}.jwplayer:not(.jw-state-error) .jw-svg-icon-error{display:none}.jwplayer.jw-state-complete .jw-display .jw-icon-display .jw-svg-icon-replay{display:block}.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-state-complete .jw-controls{background:rgba(0,0,0,0.4);height:100%}.jw-state-idle .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-state-idle .jw-display-icon-rewind,.jwplayer.jw-state-buffering .jw-display-icon-rewind,.jwplayer.jw-state-complete .jw-display-icon-rewind,body .jw-error .jw-display-icon-rewind,body .jwplayer.jw-state-error .jw-display-icon-rewind,.jw-state-idle .jw-display-icon-next,.jwplayer.jw-state-buffering .jw-display-icon-next,.jwplayer.jw-state-complete .jw-display-icon-next,body .jw-error .jw-display-icon-next,body .jwplayer.jw-state-error .jw-display-icon-next{display:none}body .jw-error .jw-icon-display,body .jwplayer.jw-state-error .jw-icon-display{cursor:default}body .jw-error .jw-icon-display .jw-svg-icon-error,body .jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-error{display:block}body .jw-error .jw-icon-container{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-preview{display:none}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title{padding-top:4px}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-primary{width:auto;display:inline-block;padding-right:.5ch}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-secondary{width:auto;display:inline-block;padding-left:0}body .jwplayer.jw-state-error .jw-controlbar,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-controlbar{display:none}body .jwplayer.jw-state-error .jw-settings-menu,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-settings-menu{height:100%;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}body .jwplayer.jw-state-error .jw-display,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-display{padding:0}body .jwplayer.jw-state-error .jw-logo-bottom-left,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-left,body .jwplayer.jw-state-error .jw-logo-bottom-right,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-right{bottom:0}.jwplayer.jw-state-playing.jw-flag-user-inactive .jw-display{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-state-playing:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display,.jwplayer.jw-state-paused:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting):not(.jw-flag-play-rejected) .jw-display{display:none}.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-rewind,.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-next{display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-text,.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-flag-casting:not(.jw-flag-audio-player) .jw-cast{display:block}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-display-icon-container{display:none}.jwplayer.jw-flag-casting .jw-icon-hd,.jwplayer.jw-flag-casting .jw-captions,.jwplayer.jw-flag-casting .jw-icon-fullscreen,.jwplayer.jw-flag-casting .jw-icon-audio-tracks{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-volume{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-airplay{color:#fff}.jw-state-playing.jw-flag-casting:not(.jw-flag-audio-player) .jw-display,.jw-state-paused.jw-flag-casting:not(.jw-flag-audio-player) .jw-display{display:table}.jwplayer.jw-flag-cast-available .jw-icon-cast,.jwplayer.jw-flag-cast-available .jw-icon-airplay{display:flex}.jwplayer.jw-flag-cardboard-available .jw-icon-cardboard{display:flex}.jwplayer.jw-flag-live .jw-display-icon-rewind{visibility:hidden}.jwplayer.jw-flag-live .jw-controlbar .jw-text-elapsed,.jwplayer.jw-flag-live .jw-controlbar .jw-text-duration,.jwplayer.jw-flag-live .jw-controlbar .jw-text-countdown,.jwplayer.jw-flag-live .jw-controlbar .jw-slider-time{display:none}.jwplayer.jw-flag-live .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-live .jw-controlbar .jw-overlay:after{display:none}.jwplayer.jw-flag-live .jw-nextup-container{bottom:44px}.jwplayer.jw-flag-live .jw-text-elapsed,.jwplayer.jw-flag-live .jw-text-duration{display:none}.jwplayer.jw-flag-live .jw-text-live{cursor:default}.jwplayer.jw-flag-live .jw-text-live:hover{color:rgba(255,255,255,0.8)}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-stop,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-stop{display:block}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-text-live{height:24px;width:auto;align-items:center;border-radius:1px;color:rgba(255,255,255,0.8);display:flex;font-size:12px;font-weight:bold;margin-right:10px;padding:0 1ch;text-rendering:geometricPrecision;text-transform:uppercase;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:box-shadow,color}.jw-text-live::before{height:8px;width:8px;background-color:currentColor;border-radius:50%;margin-right:6px;opacity:1;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-text-live.jw-dvr-live{box-shadow:inset 0 0 0 2px currentColor}.jw-text-live.jw-dvr-live::before{opacity:.5}.jw-text-live.jw-dvr-live:hover{color:#fff}.jwplayer.jw-flag-controls-hidden .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-controls-hidden:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-controls-hidden .jw-plugin{bottom:.5em}.jwplayer.jw-flag-controls-hidden .jw-nextup-container{bottom:0}.jw-flag-controls-hidden .jw-controlbar,.jw-flag-controls-hidden .jw-display{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-controls-hidden .jw-controls-backdrop{opacity:0}.jw-flag-controls-hidden .jw-logo{visibility:visible}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-plugin{bottom:.5em}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-nextup-container{bottom:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-controls-hidden) .jw-media{cursor:none;-webkit-cursor-visibility:auto-hide}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing.jw-flag-casting .jw-display{display:table}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-ads) .jw-autostart-mute{display:flex}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting .jw-nextup-container{bottom:66px}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting.jw-state-idle .jw-nextup-container{display:none}.jw-flag-media-audio .jw-preview{display:block}.jwplayer.jw-flag-ads .jw-preview,.jwplayer.jw-flag-ads .jw-logo,.jwplayer.jw-flag-ads .jw-captions.jw-captions-enabled,.jwplayer.jw-flag-ads .jw-nextup-container,.jwplayer.jw-flag-ads .jw-text-duration,.jwplayer.jw-flag-ads .jw-text-elapsed{display:none}.jwplayer.jw-flag-ads video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-rewind,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-next,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-display{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player.jw-state-buffering .jw-display-icon-display{display:inline-block}.jwplayer.jw-flag-ads .jw-controlbar{flex-wrap:wrap-reverse}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time{height:auto;padding:0;pointer-events:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-slider-container{height:5px}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-rail,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-knob,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-buffer,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-cue,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-icon-settings{display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-progress{-webkit-transform:none;transform:none;top:auto}.jwplayer.jw-flag-ads .jw-controlbar .jw-tooltip,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-tooltip:not(.jw-icon-volume),.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-inline:not(.jw-icon-playback):not(.jw-icon-fullscreen):not(.jw-icon-volume){display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-volume-tip{padding:13px 0}.jwplayer.jw-flag-ads .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid) .jw-controls .jw-controlbar,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart .jw-controls .jw-controlbar{display:flex;pointer-events:all;visibility:visible;opacity:1}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-user-inactive .jw-controls-backdrop,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart.jw-flag-user-inactive .jw-controls-backdrop{opacity:1;background-size:100% 60px}.jwplayer.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-ads-vpaid .jw-skip,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-skip{display:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls{background:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls::after{content:none}.jwplayer.jw-flag-ads-hide-controls .jw-controls-backdrop,.jwplayer.jw-flag-ads-hide-controls .jw-controls{display:none !important}.jw-flag-overlay-open-related .jw-controls,.jw-flag-overlay-open-related .jw-title,.jw-flag-overlay-open-related .jw-logo{display:none}.jwplayer.jw-flag-rightclick-open{overflow:visible}.jwplayer.jw-flag-rightclick-open .jw-rightclick{z-index:16777215}body .jwplayer.jw-flag-flash-blocked .jw-controls,body .jwplayer.jw-flag-flash-blocked .jw-overlays,body .jwplayer.jw-flag-flash-blocked .jw-controls-backdrop,body .jwplayer.jw-flag-flash-blocked .jw-preview{display:none}body .jwplayer.jw-flag-flash-blocked .jw-error-msg{top:25%}.jw-flag-touch.jw-breakpoint-7 .jw-captions,.jw-flag-touch.jw-breakpoint-6 .jw-captions,.jw-flag-touch.jw-breakpoint-5 .jw-captions,.jw-flag-touch.jw-breakpoint-4 .jw-captions,.jw-flag-touch.jw-breakpoint-7 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-6 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-5 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-4 .jw-nextup-container{bottom:4.25em}.jw-flag-touch .jw-controlbar .jw-icon-volume{display:flex}.jw-flag-touch .jw-display,.jw-flag-touch .jw-display-container,.jw-flag-touch .jw-display-controls{pointer-events:none}.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-rewind,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-rewind{display:none}.jw-flag-touch.jw-state-paused.jw-flag-dragging .jw-display{display:none}.jw-flag-audio-player{background-color:#000}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:44px}.jw-flag-audio-player:not(.jw-flag-live) .jw-spacer{display:none}.jw-flag-audio-player .jw-preview,.jw-flag-audio-player .jw-display,.jw-flag-audio-player .jw-title,.jw-flag-audio-player .jw-nextup-container{display:none}.jw-flag-audio-player .jw-controlbar{position:relative}.jw-flag-audio-player .jw-controlbar .jw-button-container{padding-right:3px;padding-left:0}.jw-flag-audio-player .jw-controlbar .jw-icon-tooltip,.jw-flag-audio-player .jw-controlbar .jw-icon-inline{display:none}.jw-flag-audio-player .jw-controlbar .jw-icon-volume,.jw-flag-audio-player .jw-controlbar .jw-icon-playback,.jw-flag-audio-player .jw-controlbar .jw-icon-next,.jw-flag-audio-player .jw-controlbar .jw-icon-rewind,.jw-flag-audio-player .jw-controlbar .jw-icon-cast,.jw-flag-audio-player .jw-controlbar .jw-text-live,.jw-flag-audio-player .jw-controlbar .jw-icon-airplay,.jw-flag-audio-player .jw-controlbar .jw-logo-button,.jw-flag-audio-player .jw-controlbar .jw-text-elapsed,.jw-flag-audio-player .jw-controlbar .jw-text-duration{display:flex;flex:0 0 auto}.jw-flag-audio-player .jw-controlbar .jw-text-duration,.jw-flag-audio-player .jw-controlbar .jw-text-countdown{padding-right:10px}.jw-flag-audio-player .jw-controlbar .jw-slider-time{flex:0 1 auto;align-items:center;display:flex;order:1}.jw-flag-audio-player .jw-controlbar .jw-icon-volume{margin-right:0;transition:margin-right 150ms cubic-bezier(0, .25, .25, 1)}.jw-flag-audio-player .jw-controlbar .jw-icon-volume .jw-overlay{display:none}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container{transition:width 300ms cubic-bezier(0, .25, .25, 1);width:0}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open{width:140px}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open .jw-slider-volume{padding-right:24px;transition:opacity 300ms;opacity:1}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open~.jw-slider-time{flex:1 1 auto;width:auto;transition:opacity 300ms, width 300ms}.jw-flag-audio-player .jw-controlbar .jw-slider-volume{opacity:0}.jw-flag-audio-player .jw-controlbar .jw-slider-volume .jw-knob{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.jw-flag-audio-player .jw-controlbar .jw-slider-volume~.jw-icon-volume{margin-right:140px}.jw-flag-audio-player.jw-breakpoint-1 .jw-horizontal-volume-container.jw-open~.jw-slider-time,.jw-flag-audio-player.jw-breakpoint-2 .jw-horizontal-volume-container.jw-open~.jw-slider-time{opacity:0}.jw-flag-audio-player.jw-flag-small-player .jw-text-elapsed,.jw-flag-audio-player.jw-flag-small-player .jw-text-duration{display:none}.jw-flag-audio-player.jw-flag-ads .jw-slider-time{display:none}.jw-hidden{display:none}',""])}]]); \ No newline at end of file diff --git a/ui/v2.5/public/jwplayer/jwplayer.core.controls.polyfills.html5.js b/ui/v2.5/public/jwplayer/jwplayer.core.controls.polyfills.html5.js new file mode 100644 index 000000000..c22ccb298 --- /dev/null +++ b/ui/v2.5/public/jwplayer/jwplayer.core.controls.polyfills.html5.js @@ -0,0 +1,95 @@ +/*! +JW Player version 8.11.5 +Copyright (c) 2019, JW Player, All Rights Reserved +https://github.com/jwplayer/jwplayer/blob/v8.11.5/README.md + +This source code and its use and distribution is subject to the terms and conditions of the applicable license agreement. +https://www.jwplayer.com/tos/ + +This product includes portions of other software. For the full text of licenses, see below: + +JW Player Third Party Software Notices and/or Additional Terms and Conditions + +************************************************************************************************** +The following software is used under Apache License 2.0 +************************************************************************************************** + +vtt.js v0.13.0 +Copyright (c) 2019 Mozilla (http://mozilla.org) +https://github.com/mozilla/vtt.js/blob/v0.13.0/LICENSE + +* * * + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and +limitations under the License. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under MIT license +************************************************************************************************** + +Underscore.js v1.6.0 +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +https://github.com/jashkenas/underscore/blob/1.6.0/LICENSE + +Backbone backbone.events.js v1.1.2 +Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud +https://github.com/jashkenas/backbone/blob/1.1.2/LICENSE + +Promise Polyfill v7.1.1 +Copyright (c) 2014 Taylor Hakes and Forbes Lindesay +https://github.com/taylorhakes/promise-polyfill/blob/v7.1.1/LICENSE + +can-autoplay.js v3.0.0 +Copyright (c) 2017 video-dev +https://github.com/video-dev/can-autoplay/blob/v3.0.0/LICENSE + +* * * + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under W3C license +************************************************************************************************** + +Intersection Observer v0.5.0 +Copyright (c) 2016 Google Inc. (http://google.com) +https://github.com/w3c/IntersectionObserver/blob/v0.5.0/LICENSE.md + +* * * + +W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. + +This work is being provided by the copyright holders under the following license. + +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. + +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders. +*/ +(window.webpackJsonpjwplayer=window.webpackJsonpjwplayer||[]).push([[6,1,2,3,4,5,7,9],[,,,,,,,,,,,,,,,,,function(t,e,i){"use strict";i.r(e);var n,o=i(8),a=i(3),r=i(7),s=i(43),l=i(5),c=i(15),u=i(40);function d(t){return n||(n=new DOMParser),Object(l.r)(Object(l.s)(n.parseFromString(t,"image/svg+xml").documentElement))}var p=function(t,e,i,n){var o=document.createElement("div");o.className="jw-icon jw-icon-inline jw-button-color jw-reset "+t,o.setAttribute("role","button"),o.setAttribute("tabindex","0"),i&&o.setAttribute("aria-label",i),o.style.display="none";var a=new u.a(o).on("click tap enter",e||function(){});return n&&Array.prototype.forEach.call(n,(function(t){"string"==typeof t?o.appendChild(d(t)):o.appendChild(t)})),{ui:a,element:function(){return o},toggle:function(t){t?this.show():this.hide()},show:function(){o.style.display=""},hide:function(){o.style.display="none"}}},h=i(0),w=i(67),f=i.n(w),g=i(68),j=i.n(g),b=i(69),m=i.n(b),v=i(70),y=i.n(v),k=i(71),x=i.n(k),T=i(72),O=i.n(T),C=i(73),_=i.n(C),S=i(74),M=i.n(S),E=i(75),I=i.n(E),A=i(76),L=i.n(A),z=i(77),P=i.n(z),R=i(78),B=i.n(R),V=i(79),H=i.n(V),N=i(80),F=i.n(N),q=i(81),D=i.n(q),U=i(82),W=i.n(U),Q=i(83),X=i.n(Q),Y=i(84),K=i.n(Y),J=i(85),Z=i.n(J),G=i(86),$=i.n(G),tt=i(87),et=i.n(tt),it=i(88),nt=i.n(it),ot=i(89),at=i.n(ot),rt=null;function st(t){var e=dt().querySelector(ct(t));if(e)return ut(e);throw new Error("Icon not found "+t)}function lt(t){var e=dt().querySelectorAll(t.split(",").map(ct).join(","));if(!e.length)throw new Error("Icons not found "+t);return Array.prototype.map.call(e,(function(t){return ut(t)}))}function ct(t){return".jw-svg-icon-".concat(t)}function ut(t){return t.cloneNode(!0)}function dt(){return rt||(rt=d(""+f.a+j.a+m.a+y.a+x.a+O.a+_.a+M.a+I.a+L.a+P.a+B.a+H.a+F.a+D.a+W.a+X.a+K.a+Z.a+$.a+et.a+nt.a+at.a+"")),rt}var pt=i(10);function ht(t,e){for(var i=0;i10&&delete wt[e[0]];var i=d(t);wt[t]=i}return wt[t].cloneNode(!0)}(e):((r=document.createElement("div")).className="jw-icon jw-button-image jw-button-color jw-reset",e&&Object(pt.d)(r,{backgroundImage:"url(".concat(e,")")})),s.appendChild(r),new u.a(s).on("click tap enter",n,this),s.addEventListener("mousedown",(function(t){t.preventDefault()})),this.id=o,this.buttonElement=s}var e,i,n;return e=t,(i=[{key:"element",value:function(){return this.buttonElement}},{key:"toggle",value:function(t){t?this.show():this.hide()}},{key:"show",value:function(){this.buttonElement.style.display=""}},{key:"hide",value:function(){this.buttonElement.style.display="none"}}])&&ht(e.prototype,i),n&&ht(e,n),t}(),gt=i(11);function jt(t,e){for(var i=0;i=0&&(e.left-=i,e.right-=i),e},mt=function(){function t(e,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Object(h.h)(this,r.a),this.className=e+" jw-background-color jw-reset",this.orientation=i}var e,i,n;return e=t,(i=[{key:"setup",value:function(){this.el=Object(l.e)(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return''}(this.className,"jw-slider-"+this.orientation)),this.elementRail=this.el.getElementsByClassName("jw-slider-container")[0],this.elementBuffer=this.el.getElementsByClassName("jw-buffer")[0],this.elementProgress=this.el.getElementsByClassName("jw-progress")[0],this.elementThumb=this.el.getElementsByClassName("jw-knob")[0],this.ui=new u.a(this.element(),{preventScrolling:!0}).on("dragStart",this.dragStart,this).on("drag",this.dragMove,this).on("dragEnd",this.dragEnd,this).on("click tap",this.tap,this)}},{key:"dragStart",value:function(){this.trigger("dragStart"),this.railBounds=bt(this.elementRail)}},{key:"dragEnd",value:function(t){this.dragMove(t),this.trigger("dragEnd")}},{key:"dragMove",value:function(t){var e,i,n=this.railBounds=this.railBounds?this.railBounds:bt(this.elementRail);return i="horizontal"===this.orientation?(e=t.pageX)n.right?100:100*Object(s.a)((e-n.left)/n.width,0,1):(e=t.pageY)>=n.bottom?0:e<=n.top?100:100*Object(s.a)((n.height-(e-n.top))/n.height,0,1),this.render(i),this.update(i),!1}},{key:"tap",value:function(t){this.railBounds=bt(this.elementRail),this.dragMove(t)}},{key:"limit",value:function(t){return t}},{key:"update",value:function(t){this.trigger("update",{percentage:t})}},{key:"render",value:function(t){t=Math.max(0,Math.min(t,100)),"horizontal"===this.orientation?(this.elementThumb.style.left=t+"%",this.elementProgress.style.width=t+"%"):(this.elementThumb.style.bottom=t+"%",this.elementProgress.style.height=t+"%")}},{key:"updateBuffer",value:function(t){this.elementBuffer.style.width=t+"%"}},{key:"element",value:function(){return this.el}}])&&jt(e.prototype,i),n&&jt(e,n),t}(),vt=function(t,e){t&&e&&(t.setAttribute("aria-label",e),t.setAttribute("role","button"),t.setAttribute("tabindex","0"))};function yt(t,e){for(var i=0;i0&&Array.prototype.forEach.call(o,(function(t){"string"==typeof t?a.el.appendChild(d(t)):a.el.appendChild(t)}))}var e,i,n;return e=t,(i=[{key:"addContent",value:function(t){this.content&&this.removeContent(),this.content=t,this.tooltip.appendChild(t)}},{key:"removeContent",value:function(){this.content&&(this.tooltip.removeChild(this.content),this.content=null)}},{key:"hasContent",value:function(){return!!this.content}},{key:"element",value:function(){return this.el}},{key:"openTooltip",value:function(t){this.isOpen||(this.trigger("open-"+this.componentType,t,{isOpen:!0}),this.isOpen=!0,Object(l.v)(this.el,this.openClass,this.isOpen))}},{key:"closeTooltip",value:function(t){this.isOpen&&(this.trigger("close-"+this.componentType,t,{isOpen:!1}),this.isOpen=!1,Object(l.v)(this.el,this.openClass,this.isOpen))}},{key:"toggleOpenState",value:function(t){this.isOpen?this.closeTooltip(t):this.openTooltip(t)}}])&&yt(e.prototype,i),n&&yt(e,n),t}(),xt=i(22),Tt=i(57);function Ot(t,e){for(var i=0;i=this.thumbnails.length&&(e=this.thumbnails.length-1);var i=this.thumbnails[e].img;return i.indexOf("://")<0&&(i=this.vttPath?this.vttPath+"/"+i:i),i},loadThumbnail:function(t){var e=this.chooseThumbnail(t),i={margin:"0 auto",backgroundPosition:"0 0"};if(e.indexOf("#xywh")>0)try{var n=/(.+)#xywh=(\d+),(\d+),(\d+),(\d+)/.exec(e);e=n[1],i.backgroundPosition=-1*n[2]+"px "+-1*n[3]+"px",i.width=n[4],this.timeTip.setWidth(+i.width),i.height=n[5]}catch(t){return}else this.individualImage||(this.individualImage=new Image,this.individualImage.onload=Object(h.a)((function(){this.individualImage.onload=null,this.timeTip.image({width:this.individualImage.width,height:this.individualImage.height}),this.timeTip.setWidth(this.individualImage.width)}),this),this.individualImage.src=e);return i.backgroundImage='url("'+e+'")',i},showThumbnail:function(t){this._model.get("containerWidth")<=420||this.thumbnails.length<1||this.timeTip.image(this.loadThumbnail(t))},resetThumbnails:function(){this.timeTip.image({backgroundImage:"",width:0,height:0}),this.thumbnails=[]}};function Et(t,e,i){return(Et="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,i){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=Rt(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(i):o.value}})(t,e,i||t)}function It(t){return(It="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function At(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Lt(t,e){for(var i=0;i-1&&(n="Live")}var d=this.timeTip;d.update(n),this.textLength!==n.length&&(this.textLength=n.length,d.resetWidth()),this.showThumbnail(u),Object(l.a)(d.el,"jw-open");var p=d.getWidth(),h=a.width/100,w=o-a.width,f=0;p>w&&(f=(p-w)/(200*h));var g=100*Math.min(1-f,Math.max(f,c)).toFixed(3);Object(pt.d)(d.el,{left:g+"%"})}}},{key:"hideTimeTooltip",value:function(){Object(l.o)(this.timeTip.el,"jw-open")}},{key:"updateCues",value:function(t,e){var i=this;this.resetCues(),e&&e.length&&(e.forEach((function(t){i.addCue(t)})),this.drawCues())}},{key:"updateAriaText",value:function(){var t=this._model;if(!t.get("seeking")){var e=t.get("position"),i=t.get("duration"),n=Object(gt.timeFormat)(e);"DVR"!==this.streamType&&(n+=" of ".concat(Object(gt.timeFormat)(i)));var o=this.el;document.activeElement!==o&&(this.timeUpdateKeeper.textContent=n),Object(l.t)(o,"aria-valuenow",e),Object(l.t)(o,"aria-valuetext",n)}}},{key:"reset",value:function(){this.resetThumbnails(),this.timeTip.resetWidth(),this.textLength=0}}]),e}(mt);Object(h.h)(Nt.prototype,_t,Mt);var Ft=Nt;function qt(t,e){for(var i=0;i=75&&!t),Object(l.t)(r,"aria-valuenow",o),Object(l.t)(s,"aria-valuenow",o);var c="Volume ".concat(o,"%");Object(l.t)(r,"aria-valuetext",c),Object(l.t)(s,"aria-valuetext",c),document.activeElement!==r&&document.activeElement!==s&&(this._volumeAnnouncer.textContent=c)}}},{key:"onCastAvailable",value:function(t,e){this.elements.cast.toggle(e)}},{key:"onCastActive",value:function(t,e){this.elements.fullscreen.toggle(!e),this.elements.cast.button&&Object(l.v)(this.elements.cast.button,"jw-off",!e)}},{key:"onElapsed",value:function(t,e){var i,n,o=t.get("duration");if("DVR"===t.get("streamType")){var a=Math.ceil(e),r=this._model.get("dvrSeekLimit");i=n=a>=-r?"":"-"+Object(gt.timeFormat)(-(e+r)),t.set("dvrLive",a>=-r)}else i=Object(gt.timeFormat)(e),n=Object(gt.timeFormat)(o-e);this.elements.elapsed.textContent=i,this.elements.countdown.textContent=n}},{key:"onDuration",value:function(t,e){this.elements.duration.textContent=Object(gt.timeFormat)(Math.abs(e))}},{key:"onAudioMode",value:function(t,e){var i=this.elements.time.element();e?this.elements.buttonContainer.insertBefore(i,this.elements.elapsed):Object(l.m)(this.el,i)}},{key:"element",value:function(){return this.el}},{key:"setAltText",value:function(t,e){this.elements.alt.textContent=e}},{key:"closeMenus",value:function(t){this.menus.forEach((function(e){t&&t.target===e.el||e.closeTooltip(t)}))}},{key:"rewind",value:function(){var t,e=0,i=this._model.get("currentTime");i?t=i-10:(t=this._model.get("position")-10,"DVR"===this._model.get("streamType")&&(e=this._model.get("duration"))),this._api.seek(Math.max(t,e),{reason:"interaction"})}},{key:"onState",value:function(t,e){var i=t.get("localization"),n=i.play;this.setPlayText(n),e===a.pb&&("LIVE"!==t.get("streamType")?(n=i.pause,this.setPlayText(n)):(n=i.stop,this.setPlayText(n))),Object(l.t)(this.elements.play.element(),"aria-label",n)}},{key:"onStreamTypeChange",value:function(t,e){var i="LIVE"===e,n="DVR"===e;this.elements.rewind.toggle(!i),this.elements.live.toggle(i||n),Object(l.t)(this.elements.live.element(),"tabindex",i?"-1":"0"),this.elements.duration.style.display=n?"none":"",this.onDuration(t,t.get("duration")),this.onState(t,t.get("state"))}},{key:"addLogo",value:function(t){var e=this.elements.buttonContainer,i=new ft(t.file,this._model.get("localization").logo,(function(){t.link&&Object(l.l)(t.link,"_blank",{rel:"noreferrer"})}),"logo","jw-logo-button");t.link||Object(l.t)(i.element(),"tabindex","-1"),e.insertBefore(i.element(),e.querySelector(".jw-spacer").nextSibling)}},{key:"goToLiveEdge",value:function(){if("DVR"===this._model.get("streamType")){var t=Math.min(this._model.get("position"),-1),e=this._model.get("dvrSeekLimit");this._api.seek(Math.max(-e,t),{reason:"interaction"}),this._api.play({reason:"interaction"})}}},{key:"updateButtons",value:function(t,e,i){if(e){var n,o,a=this.elements.buttonContainer;e!==i&&i?(n=ae(e,i),o=ae(i,e),this.removeButtons(a,o)):n=e;for(var r=n.length-1;r>=0;r--){var s=n[r],l=new ft(s.img,s.tooltip,s.callback,s.id,s.btnClass);s.tooltip&&$t(l.element(),s.id,s.tooltip);var c=void 0;"related"===l.id?c=this.elements.settingsButton.element():"share"===l.id?c=a.querySelector('[button="related"]')||this.elements.settingsButton.element():(c=this.elements.spacer.nextSibling)&&"logo"===c.getAttribute("button")&&(c=c.nextSibling),a.insertBefore(l.element(),c)}}}},{key:"removeButtons",value:function(t,e){for(var i=e.length;i--;){var n=t.querySelector('[button="'.concat(e[i].id,'"]'));n&&t.removeChild(n)}}},{key:"toggleCaptionsButtonState",value:function(t){var e=this.elements.captionsButton;e&&Object(l.v)(e.element(),"jw-off",!t)}},{key:"destroy",value:function(){var t=this;this._model.off(null,null,this),Object.keys(this.elements).forEach((function(e){var i=t.elements[e];i&&"function"==typeof i.destroy&&t.elements[e].destroy()})),this.ui.forEach((function(t){t.destroy()})),this.ui=[]}}])&&ee(e.prototype,i),n&&ee(e,n),t}(),le=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return'
    ')+'
    ')+"
    "},ce=function(t){return'
    '+le("rewind",t.rewind)+le("display",t.playback)+le("next",t.next)+"
    "};function ue(t,e){for(var i=0;i'.concat(a.playback,"")),Object(l.a)(o.icon,"jw-idle-label"),o.icon.appendChild(s))}return o}var i,n,o;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&ge(t,e)}(e,t),i=e,(n=[{key:"element",value:function(){return this.el}}])&&he(i.prototype,n),o&&he(i,o),e}(r.a);function be(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return'
    '+'
    '.concat(t,"
    ")+'
    '.concat(e,"
    ")+'
    '.concat(i,"
    ")+"
    "+'')+"
    "}());e.querySelector(".jw-nextup-close").appendChild(st("close")),this.addContent(e),this.closeButton=this.content.querySelector(".jw-nextup-close"),this.closeButton.setAttribute("aria-label",this.localization.close),this.tooltip=this.content.querySelector(".jw-nextup-tooltip");var i=this._model,n=i.player;this.enabled=!1,i.on("change:nextUp",this.onNextUp,this),n.change("duration",this.onDuration,this),n.change("position",this.onElapsed,this),n.change("streamType",this.onStreamType,this),n.change("state",(function(t,e){"complete"===e&&this.toggle(!1)}),this),this.closeUi=new u.a(this.closeButton,{directSelect:!0}).on("click tap enter",(function(){this.nextUpSticky=!1,this.toggle(!1)}),this),this.tooltipUi=new u.a(this.tooltip).on("click tap",this.click,this)}},{key:"loadThumbnail",value:function(t){return this.nextUpImage=new Image,this.nextUpImage.onload=function(){this.nextUpImage.onload=null}.bind(this),this.nextUpImage.src=t,{backgroundImage:'url("'+t+'")'}}},{key:"click",value:function(){var t=this.feedShownId;this.reset(),this._api.next({feedShownId:t,reason:"interaction"})}},{key:"toggle",value:function(t,e){if(this.enabled&&(Object(l.v)(this.container,"jw-nextup-sticky",!!this.nextUpSticky),this.shown!==t)){this.shown=t,Object(l.v)(this.container,"jw-nextup-container-visible",t),Object(l.v)(this._playerElement,"jw-flag-nextup",t);var i=this._model.get("nextUp");t&&i?(this.feedShownId=Object(te.b)(te.a),this.trigger("nextShown",{mode:i.mode,ui:"nextup",itemsShown:[i],feedData:i.feedData,reason:e,feedShownId:this.feedShownId})):this.feedShownId=""}}},{key:"setNextUpItem",value:function(t){var e=this;setTimeout((function(){if(e.thumbnail=e.content.querySelector(".jw-nextup-thumbnail"),Object(l.v)(e.content,"jw-nextup-thumbnail-visible",!!t.image),t.image){var i=e.loadThumbnail(t.image);Object(pt.d)(e.thumbnail,i)}e.header=e.content.querySelector(".jw-nextup-header"),e.header.textContent=Object(l.e)(e.localization.nextUp).textContent,e.title=e.content.querySelector(".jw-nextup-title");var n=t.title;e.title.textContent=n?Object(l.e)(n).textContent:"";var o=t.duration;o&&(e.duration=e.content.querySelector(".jw-nextup-duration"),e.duration.textContent="number"==typeof o?Object(gt.timeFormat)(o):o)}),500)}},{key:"onNextUp",value:function(t,e){this.reset(),e||(e={showNextUp:!1}),this.enabled=!(!e.title&&!e.image),this.enabled&&(e.showNextUp||(this.nextUpSticky=!1,this.toggle(!1)),this.setNextUpItem(e))}},{key:"onDuration",value:function(t,e){if(e){var i=t.get("nextupoffset"),n=-10;i&&(n=Object(xe.d)(i,e)),n<0&&(n+=e),Object(xe.c)(i)&&e-5=this.offset;n&&void 0===i?(this.nextUpSticky=n,this.toggle(n,"time")):!n&&i&&this.reset()}}},{key:"onStreamType",value:function(t,e){"VOD"!==e&&(this.nextUpSticky=!1,this.toggle(!1))}},{key:"element",value:function(){return this.container}},{key:"addContent",value:function(t){this.content&&this.removeContent(),this.content=t,this.container.appendChild(t)}},{key:"removeContent",value:function(){this.content&&(this.container.removeChild(this.content),this.content=null)}},{key:"reset",value:function(){this.nextUpSticky=void 0,this.toggle(!1)}},{key:"destroy",value:function(){this.off(),this._model.off(null,null,this),this.closeUi&&this.closeUi.destroy(),this.tooltipUi&&this.tooltipUi.destroy()}}])&&Te(e.prototype,i),n&&Te(e,n),t}(),Ce=function(t,e){var i=t.featured,n=t.showLogo,o=t.type;return t.logo=n?'':"",'
  • ').concat(_e[o](t,e),"
  • ")},_e={link:function(t){var e=t.link,i=t.title,n=t.logo;return'').concat(n).concat(i||"","")},info:function(t,e){return'")},share:function(t,e){return'")},keyboardShortcuts:function(t,e){return'")}},Se=i(23),Me=i(6),Ee=i(13);function Ie(t,e){for(var i=0;iJW Player '.concat(t,""),a={items:[{type:"info"},{title:Object(Ee.e)(n)?"".concat(o," ").concat(n):"".concat(n," ").concat(o),type:"link",featured:!0,showLogo:!0,link:"https://jwplayer.com/learn-more?e=".concat(Ae[i])}]},r=e.get("provider"),s=a.items;if(r&&r.name.indexOf("flash")>=0){var l="Flash Version "+Object(Me.a)();s.push({title:l,type:"link",link:"http://www.adobe.com/software/flash/about/"})}return this.shortcutsTooltip&&s.splice(s.length-1,0,{type:"keyboardShortcuts"}),a}},{key:"rightClick",value:function(t){if(this.lazySetup(),this.mouseOverContext)return!1;this.hideMenu(),this.showMenu(t),this.addHideMenuHandlers()}},{key:"getOffset",value:function(t){var e=Object(l.c)(this.wrapperElement),i=t.pageX-e.left,n=t.pageY-e.top;return this.model.get("touchMode")&&(n-=100),{x:i,y:n}}},{key:"showMenu",value:function(t){var e=this,i=this.getOffset(t);return this.el.style.left=i.x+"px",this.el.style.top=i.y+"px",this.outCount=0,Object(l.a)(this.playerContainer,"jw-flag-rightclick-open"),Object(l.a)(this.el,"jw-open"),clearTimeout(this._menuTimeout),this._menuTimeout=setTimeout((function(){return e.hideMenu()}),3e3),!1}},{key:"hideMenu",value:function(t){t&&this.el&&this.el.contains(t.target)||(Object(l.o)(this.playerContainer,"jw-flag-rightclick-open"),Object(l.o)(this.el,"jw-open"))}},{key:"lazySetup",value:function(){var t,e,i,n,o=this,a=(t=this.buildArray(),e=this.model.get("localization"),i=t.items,n=(void 0===i?[]:i).map((function(t){return Ce(t,e)})),'
    '+'
      '.concat(n.join(""),"
    ")+"
    ");if(this.el){if(this.html!==a){this.html=a;var r=Le(a);Object(l.h)(this.el);for(var s=r.childNodes.length;s--;)this.el.appendChild(r.firstChild)}}else this.html=a,this.el=Le(this.html),this.wrapperElement.appendChild(this.el),this.hideMenuHandler=function(t){return o.hideMenu(t)},this.overHandler=function(){o.mouseOverContext=!0},this.outHandler=function(t){o.mouseOverContext=!1,t.relatedTarget&&!o.el.contains(t.relatedTarget)&&++o.outCount>1&&o.hideMenu()},this.infoOverlayHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.infoOverlay.open()},this.shortcutsTooltipHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.shortcutsTooltip.open()}}},{key:"setup",value:function(t,e,i){this.wrapperElement=i,this.model=t,this.mouseOverContext=!1,this.playerContainer=e,this.ui=new u.a(i).on("longPress",this.rightClick,this)}},{key:"addHideMenuHandlers",value:function(){this.removeHideMenuHandlers(),this.wrapperElement.addEventListener("touchstart",this.hideMenuHandler),document.addEventListener("touchstart",this.hideMenuHandler),o.OS.mobile||(this.wrapperElement.addEventListener("click",this.hideMenuHandler),document.addEventListener("click",this.hideMenuHandler),this.el.addEventListener("mouseover",this.overHandler),this.el.addEventListener("mouseout",this.outHandler)),this.el.querySelector(".jw-info-overlay-item").addEventListener("click",this.infoOverlayHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").addEventListener("click",this.shortcutsTooltipHandler)}},{key:"removeHideMenuHandlers",value:function(){this.wrapperElement&&(this.wrapperElement.removeEventListener("click",this.hideMenuHandler),this.wrapperElement.removeEventListener("touchstart",this.hideMenuHandler)),this.el&&(this.el.querySelector(".jw-info-overlay-item").removeEventListener("click",this.infoOverlayHandler),this.el.removeEventListener("mouseover",this.overHandler),this.el.removeEventListener("mouseout",this.outHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").removeEventListener("click",this.shortcutsTooltipHandler)),document.removeEventListener("click",this.hideMenuHandler),document.removeEventListener("touchstart",this.hideMenuHandler)}},{key:"destroy",value:function(){clearTimeout(this._menuTimeout),this.removeHideMenuHandlers(),this.el&&(this.hideMenu(),this.hideMenuHandler=null,this.el=null),this.wrapperElement&&(this.wrapperElement.oncontextmenu=null,this.wrapperElement=null),this.model&&(this.model=null),this.ui&&(this.ui.destroy(),this.ui=null)}}])&&Ie(e.prototype,i),n&&Ie(e,n),t}(),Pe=function(){return''};function Re(t){var e=document.getElementsByClassName("jw-icon-settings")[0];if(e){var i="Right"===t?Object(l.k)(e):Object(l.n)(e);i&&i.focus()}}var Be=function(t){Object.keys(t).forEach((function(e){t[e].deactivate()}))},Ve=function(t){return'"};var He=function(t){t.forEach((function(t){t.deactivate()}))},Ne=function(t){return'"};function Fe(t,e,i){var n,o=Object(l.e)(Ne(e)),a=new u.a(o).on("click tap enter",(function(t){i(t)})),r={activate:function(){Object(l.v)(o,"jw-settings-item-active",!0),o.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(l.v)(o,"jw-settings-item-active",!1),o.setAttribute("aria-checked","false"),n=!1},element:function(){return o},uiElement:function(){return a},destroy:function(){this.deactivate(),a.destroy()}};return Object.defineProperty(r,"active",{enumerable:!0,get:function(){return n}}),r}var qe="audioTracks",De="captions",Ue="quality",We="playbackRates",Qe=Ue,Xe=function(t,e,i,n,o){var a=t.getSubmenu(e);if(a)a.replaceContent(i);else{var r=p("jw-settings-".concat(e),(function(i){t.activateSubmenu(e,!1,i&&"enter"!==i.type),a.element().children[0].focus()}),e,[n]),s=r.element();s.setAttribute("role","menuitemradio"),s.setAttribute("aria-checked","false"),s.setAttribute("aria-label",o),(a=function(t,e,i){var n,o=[],a=Object(l.e)(Ve(t)),r=e.element();r.setAttribute("name",t),r.className+=" jw-submenu-"+t,e.show();var s=function(t,e){t?t.focus():void 0!==e&&o[e].element().focus()},c=function(t){var e=Object(l.k)(r),i=Object(l.n)(r),n=Object(l.k)(t.target),a=Object(l.n)(t.target),c=t.key.replace(/(Arrow|ape)/,"");switch(c){case"Tab":s(t.shiftKey?i:e);break;case"Left":s(i||Object(l.n)(document.getElementsByClassName("jw-icon-settings")[0]));break;case"Up":s(a,o.length-1);break;case"Right":s(e);break;case"Down":s(n,0)}t.preventDefault(),"Esc"!==c&&t.stopPropagation()},u={addContent:function(t){t&&(t.forEach((function(t){a.appendChild(t.element()),t.element().setAttribute("tabindex","-1"),t.element().addEventListener("keydown",c)})),o=t)},replaceContent:function(t){u.removeContent(),this.addContent(t)},removeContent:function(){o.forEach((function(t){t.element().removeEventListener("keydown",c)})),Object(l.h)(a),o=[]},getItems:function(){return o},activate:function(){Object(l.v)(a,"jw-settings-submenu-active",!0),a.setAttribute("aria-expanded","true"),r.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(l.v)(a,"jw-settings-submenu-active",!1),a.setAttribute("aria-expanded","false"),r.setAttribute("aria-checked","false"),n=!1},activateItem:function(t){var e=o[t];e&&!e.active&&(He(o),e.activate())},element:function(){return a},destroy:function(){o&&(o.forEach((function(t){t.destroy()})),this.removeContent())}};return Object.defineProperties(u,{name:{enumerable:!0,get:function(){return t}},active:{enumerable:!0,get:function(){return n}},categoryButtonElement:{enumerable:!0,get:function(){return r}},isDefault:{enumerable:!0,get:function(){return i}}}),u}(e,r,e===Qe)).addContent(i),"ontouchstart"in window||$t(s,e,o),t.addSubmenu(a)}return a};function Ye(t){t.removeSubmenu(De)}function Ke(t){t.removeSubmenu(qe)}function Je(t){t.removeSubmenu(Ue)}function Ze(t){t.removeSubmenu(We)}function Ge(t,e,i){var n=t.elements.settingsButton,o=function(t,e,i){var n,o=function(t){/jw-(settings|video|nextup-close|sharing-link|share-item)/.test(t.target.className)||w.close()},a=null,r={},s=Object(l.e)(Pe()),c=new u.a(s).on("keydown",(function(t){var e=t.sourceEvent,i=t.target,n=Object(l.k)(i),o=Object(l.n)(i),a=e.key.replace(/(Arrow|ape)/,"");switch(a){case"Esc":w.close(t);break;case"Left":o?o.focus():(w.close(),Re(a));break;case"Right":n&&d.element()&&i!==d.element()&&n.focus();break;case"Up":case"Down":w.activateSubmenu(i.getAttribute("name"),"Up"===a)}if(e.stopPropagation(),/13|27|32|37|38|39|40/.test(e.keyCode))return e.preventDefault(),!1})),d=p("jw-settings-close",(function(t){w.close(t)}),i.close,[st("close")]);d.ui.on("keydown",(function(t){var e=t.sourceEvent,i=e.key.replace(/(Arrow|ape)/,"");("Enter"===i||"Right"===i||"Tab"===i&&!e.shiftKey)&&w.close(e),"Right"===i&&Re(e.key)})),d.show();var h=s.querySelector(".jw-settings-topbar");h.appendChild(d.element());var w={ui:c,closeButton:d,open:function(e,i){(t(n=!0,i),s.setAttribute("aria-expanded","true"),document.addEventListener("click",o),e&&i&&"enter"===i.type)?a.categoryButtonElement.focus():a.element().firstChild.focus()},close:function(e){t(n=!1,e),a=null,Be(r),s.setAttribute("aria-expanded","false"),document.removeEventListener("click",o)},toggle:function(){n?this.close():this.open()},addSubmenu:function(t){if(t){var i=t.name;if(r[i]=t,t.isDefault)Object(l.m)(h,t.categoryButtonElement),t.categoryButtonElement.addEventListener("keydown",(function(t){9===t.keyCode&&t.shiftKey&&w.close(t)}));else{var n=h.querySelector(".jw-submenu-sharing");h.insertBefore(t.categoryButtonElement,n||d.element())}s.appendChild(t.element()),e.show()}},getSubmenu:function(t){return r[t]},getSubmenuNames:function(){return Object.keys(r)},removeSubmenu:function(t){var i=r[t];i&&i.element().parentNode===s&&(s.removeChild(i.element()),h.removeChild(i.categoryButtonElement),i.destroy(),delete r[t],Object.keys(r).length||(this.close(),e.hide()))},activateSubmenu:function(t,e){var i=r[t];i&&(i.active||(Be(r),i.activate(),a=i),(e?i.element().lastChild:i.element().firstChild).focus())},activateFirstSubmenu:function(t){var e=Object.keys(r)[0];this.activateSubmenu(e,!1,t)},element:function(){return s},destroy:function(){this.close(),this.ui.destroy(),this.closeButton.ui.destroy(),Object(l.h)(s)}};return Object.defineProperties(w,{visible:{enumerable:!0,get:function(){return n}}}),w}(e,{hide:function(){return n.hide()},show:function(){return n.show()}},i);return t.on("settingsInteraction",(function(t,e,i){var n=o.getSubmenu(t),a=i&&"enter"!==i.type,r=Object(h.c)(o.open,10);(n||e)&&(o.visible?e||n.active?o.close():o.activateSubmenu(t,!1,a):(n?o.activateSubmenu(t,!1,a):o.activateFirstSubmenu(a),r(e,i)))})),o}function $e(t,e,i,n){var o=i.player,a=function(e,i){var n=t.getSubmenu(e);n&&n.activateItem(i)},r=function(e,i){!i||i.length<=1?Ke(t):function(t,e,i,n,o){var a=e.map((function(e,n){return Fe(e.name,e.name,(function(e){i(n),t.close(e)}))}));Xe(t,qe,a,st("audio-tracks"),o).activateItem(n)}(t,i,(function(t){return n.setCurrentAudioTrack(t)}),o.get("currentAudioTrack"),o.get("localization").audioTracks)},s=function(i,a){if(!a||a.length<=1)Je(t);else{var r=o.get("localization"),s=r.hd,l=r.auto;!function(t,e,i,n,o,a){var r=e.map((function(e,n){var o=e.label;return"Auto"===o&&0===n&&(o="".concat(a,' ')),Fe(e.label,o,(function(e){i(n),t.close(e)}))}));Xe(t,Ue,r,st("quality-100"),o).activateItem(n)}(t,a,(function(t){return n.setCurrentQuality(t)}),o.get("currentLevel"),s,l)}!function(t,e){var i=t.getSubmenuNames(),n=i.length>1||i.some((function(t){return"quality"===t||"playbackRates"===t}));e.elements.settingsButton.toggle(n)}(t,e)},l=function(e,i){o.get("supportsPlaybackRate")&&"LIVE"!==o.get("streamType")&&o.get("playbackRateControls")&&i.length>1?function(t,e,i,n,o){var a=e.map((function(e){return Fe(0,Object(Ee.e)(o)?"x"+e:e+"x",(function(n){i(e),t.close(n)}))}));Xe(t,We,a,st("playback-rate"),o).activateItem(n)}(t,i,(function(t){return n.setPlaybackRate(t)}),i.indexOf(o.get("playbackRate")),o.get("localization").playbackRates):Ze(t)},c=function(t,e,i){var n=o.get("levels");if(n&&"Auto"===n[0].label){var a=e.getItems()[0].element().querySelector(".jw-auto-label"),r=n[t.index]||{label:""};a.textContent=i?"":r.label}};o.change("levels",s,t),o.on("change:currentLevel",(function(e,i){var n=t.getSubmenu("quality"),r=o.get("visualQuality");r&&n&&c(r.level,n,i),a("quality",i)}),t),o.change("audioTracks",r,t),o.on("change:currentAudioTrack",(function(t,e){a("audioTracks",e)}),t),o.on("change:playlistItem",(function(){Ye(t),e.elements.captionsButton.hide(),t.visible&&t.close()})),o.change("captionsList",(function(i,a){var r=e.elements.captionsButton;if(!a||a.length<=1)return Ye(t),void r.hide();var s=o.get("localization"),l=s.cc,c=s.off;!function(t,e,i,n,o,a){var r=e.map((function(e,n){var o=e.label;return"Off"!==o&&"off"!==e.id||0!==n||(o=a),Fe(e.id,o,(function(e){i(n),t.close(e)}))}));Xe(t,De,r,st("cc-off"),o).activateItem(n)}(t,a,(function(t){return n.setCurrentCaptions(t)}),o.get("captionsIndex"),l,c),e.toggleCaptionsButtonState(!!o.get("captionsIndex")),r.show()}),t),o.change("captionsIndex",(function(i,n){var o=t.getSubmenu("captions");o&&(o.activateItem(n),e.toggleCaptionsButtonState(!!n))}),t),o.change("playbackRates",l,t),o.change("playbackRate",(function(t,e){var i=o.get("playbackRates");i&&a("playbackRates",i.indexOf(e))}),t),o.on("change:playbackRateControls",(function(){l(0,o.get("playbackRates"))})),o.on("change:visualQuality",(function(e,i){var n=t.getSubmenu("quality");i&&n&&c(i.level,n,o.get("currentLevel"))})),o.on("change:castActive",(function(e,i,n){i!==n&&(i?(Ke(t),Je(t),Ze(t)):(r(0,o.get("audioTracks")),s(0,o.get("levels")),l(0,o.get("playbackRates"))))}),t),o.on("change:streamType",(function(){l(0,o.get("playbackRates"))}),t)}var ti=i(58),ei=i(36),ii=i(12),ni=function(t,e,i,n){var o=Object(l.e)('
    '),r=!1,s=null,c=!1,u=function(t){/jw-info/.test(t.target.className)||h.close()},d=function(){var n,a,s,c,u,d=p("jw-info-close",(function(){h.close()}),e.get("localization").close,[st("close")]);d.show(),Object(l.m)(o,d.element()),a=o.querySelector(".jw-info-title"),s=o.querySelector(".jw-info-duration"),c=o.querySelector(".jw-info-description"),u=o.querySelector(".jw-info-clientid"),e.change("playlistItem",(function(t,e){var i=e.description,n=e.title;Object(l.q)(c,i||""),Object(l.q)(a,n||"Unknown Title")})),e.change("duration",(function(t,i){var n="";switch(e.get("streamType")){case"LIVE":n="Live";break;case"DVR":n="DVR";break;default:i&&(n=Object(gt.timeFormat)(i))}s.textContent=n}),h),u.textContent=(n=i.getPlugin("jwpsrv"))&&"function"==typeof n.doNotTrackUser&&n.doNotTrackUser()?"":"Client ID: ".concat(function(){try{return window.localStorage.jwplayerLocalId}catch(t){return"none"}}()),t.appendChild(o),r=!0};var h={open:function(){r||d(),document.addEventListener("click",u),c=!0;var t=e.get("state");t===a.pb&&i.pause("infoOverlayInteraction"),s=t,n(!0)},close:function(){document.removeEventListener("click",u),c=!1,e.get("state")===a.ob&&s===a.pb&&i.play("infoOverlayInteraction"),s=null,n(!1)},destroy:function(){this.close(),e.off(null,null,this)}};return Object.defineProperties(h,{visible:{enumerable:!0,get:function(){return c}}}),h};var oi=function(t,e,i){var n,o=!1,r=null,s=i.get("localization").shortcuts,c=Object(l.e)(function(t,e){var i=t.map((function(t){return'
    '+''.concat(t.description,"")+''.concat(t.key,"")+"
    "})).join("");return'
    ')+'Press shift question mark to access a list of keyboard shortcuts
    '+''.concat(e,"")+'
    '+"".concat(i)+"
    "}(function(t){var e=t.playPause,i=t.volumeToggle,n=t.fullscreenToggle,o=t.seekPercent,a=t.increaseVolume,r=t.decreaseVolume,s=t.seekForward,l=t.seekBackward;return[{key:t.spacebar,description:e},{key:"↑",description:a},{key:"↓",description:r},{key:"→",description:s},{key:"←",description:l},{key:"c",description:t.captionsToggle},{key:"f",description:n},{key:"m",description:i},{key:"0-9",description:o}]}(s),s.keyboardShortcuts)),u={reason:"settingsInteraction"},d=c.querySelector(".jw-switch"),h=function(){d.setAttribute("aria-checked",i.get("enableShortcuts")),d.addEventListener("click",g),Object(l.a)(c,"jw-open"),r=i.get("state"),c.querySelector(".jw-shortcuts-close").focus(),document.addEventListener("click",f),o=!0,e.pause(u)},w=function(){d.removeEventListener("click",g),Object(l.o)(c,"jw-open"),document.removeEventListener("click",f),t.focus(),o=!1,r===a.pb&&e.play(u)},f=function(t){/jw-shortcuts|jw-switch/.test(t.target.className)||w()},g=function(t){var e=t.currentTarget,n="true"!==e.getAttribute("aria-checked");e.setAttribute("aria-checked",n),i.set("enableShortcuts",n)};return n=p("jw-shortcuts-close",(function(){w()}),i.get("localization").close,[st("close")]),Object(l.m)(c,n.element()),n.show(),t.appendChild(c),{el:c,close:w,open:h,toggleVisibility:function(){o?w():h()}}},ai=function(t){return'
    ')+"
    "};function ri(t){return(ri="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function si(t,e){for(var i=0;i16?n.activeTimeout=setTimeout(n.userInactiveTimeout,t):n.playerContainer.querySelector(".jw-tab-focus")?n.resetActiveTimeout():n.userInactive()},n}var i,n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&gi(t,e)}(e,t),i=e,(n=[{key:"resetActiveTimeout",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.inactiveTime=0}},{key:"enable",value:function(t,e){var i=this,n=this.context.createElement("div");n.className="jw-controls jw-reset",this.div=n;var r=this.context.createElement("div");r.className="jw-controls-backdrop jw-reset",this.backdrop=r,this.logo=this.playerContainer.querySelector(".jw-logo");var c=e.get("touchMode");if(!this.displayContainer){var u=new ye(e,t);u.buttons.display.on("click tap enter",(function(){i.trigger(a.p),i.userActive(1e3),t.playToggle(mi()),e.get("isFloating")?i.wrapperElement.focus():i.playerContainer.focus()})),this.div.appendChild(u.element()),this.displayContainer=u}this.infoOverlay=new ni(n,e,t,(function(t){Object(l.v)(i.div,"jw-info-open",t),t&&i.div.querySelector(".jw-info-close").focus()})),o.OS.mobile||(this.shortcutsTooltip=new oi(this.wrapperElement,t,e)),this.rightClickMenu=new ze(this.infoOverlay,this.shortcutsTooltip),c?(Object(l.a)(this.playerContainer,"jw-flag-touch"),this.rightClickMenu.setup(e,this.playerContainer,this.wrapperElement)):e.change("flashBlocked",(function(t,e){e?i.rightClickMenu.destroy():i.rightClickMenu.setup(t,i.playerContainer,i.wrapperElement)}),this);var d=e.get("floating");if(d){var h=new di(n,e.get("localization").close);h.on(a.sb,(function(){return i.trigger("dismissFloating",{doNotForward:!0})})),!1!==d.dismissible&&Object(l.a)(this.playerContainer,"jw-floating-dismissible")}var w=this.controlbar=new se(t,e,this.playerContainer.querySelector(".jw-hidden-accessibility"));if(w.on(a.sb,(function(){return i.userActive()})),w.on("nextShown",(function(t){this.trigger("nextShown",t)}),this),w.on("adjustVolume",v,this),e.get("nextUpDisplay")&&!w.nextUpToolTip){var f=new Oe(e,t,this.playerContainer);f.on("all",this.trigger,this),f.setup(this.context),w.nextUpToolTip=f,this.div.appendChild(f.element())}this.div.appendChild(w.element());var g=null,j=this.settingsMenu=Ge(w,(function(n,o){var r=e.get("state"),s={reason:"settingsInteraction"},c="keydown"===(o&&o.sourceEvent||o||{}).type;Object(l.v)(i.div,"jw-settings-open",n),Object(ti.a)(e.get("containerWidth"))<2&&(n&&r===a.pb?t.pause(s):n||r!==a.ob||g!==a.pb||t.play(s));var u=n||c?0:ji;i.userActive(u),g=r;var d=i.controlbar.elements.settingsButton;!n&&d&&(c?d.element().focus():o&&(e.get("isFloating")?i.wrapperElement:i.playerContainer).focus())}),e.get("localization"));$e(j,w,e,t),o.OS.mobile?this.div.appendChild(j.element()):(this.playerContainer.setAttribute("aria-describedby","jw-shortcuts-tooltip-explanation"),this.div.insertBefore(j.element(),w.element()));var b=function(e){if(e.get("autostartMuted")){var n=function(){return i.unmuteAutoplay(t,e)},a=function(t,e){e||n()};o.OS.mobile&&(i.mute=p("jw-autostart-mute jw-off",n,e.get("localization").unmute,[st("volume-0")]),i.mute.show(),i.div.appendChild(i.mute.element())),w.renderVolume(!0,e.get("volume")),Object(l.a)(i.playerContainer,"jw-flag-autostart"),e.on("change:autostartFailed",n,i),e.on("change:autostartMuted change:mute",a,i),i.muteChangeCallback=a,i.unmuteCallback=n}};function m(i){var n=0,o=e.get("duration"),a=e.get("position");if("DVR"===e.get("streamType")){var r=e.get("dvrSeekLimit");n=o,o=Math.max(a,-r)}var l=Object(s.a)(a+i,n,o);t.seek(l,mi())}function v(i){var n=Object(s.a)(e.get("volume")+i,0,100);t.setVolume(n)}e.once("change:autostartMuted",b),b(e);var y=function(n){if(n.ctrlKey||n.metaKey)return!0;var o=!i.settingsMenu.visible,a=!0===e.get("enableShortcuts"),r=i.instreamState;if(a||-1!==bi.indexOf(n.keyCode)){switch(n.keyCode){case 27:if(e.get("fullscreen"))t.setFullscreen(!1),i.playerContainer.blur(),i.userInactive();else{var s=t.getPlugin("related");s&&s.close({type:"escape"})}i.rightClickMenu.el&&i.rightClickMenu.hideMenuHandler(),i.infoOverlay.visible&&i.infoOverlay.close(),i.shortcutsTooltip&&i.shortcutsTooltip.close();break;case 13:case 32:if(document.activeElement.classList.contains("jw-switch")&&32===n.keyCode)return!0;t.playToggle(mi());break;case 37:!r&&o&&m(-5);break;case 39:!r&&o&&m(5);break;case 38:o&&v(10);break;case 40:o&&v(-10);break;case 67:var l=t.getCaptionsList().length;if(l){var c=(t.getCurrentCaptions()+1)%l;t.setCurrentCaptions(c)}break;case 77:t.setMute();break;case 70:t.setFullscreen();break;case 191:i.shortcutsTooltip&&i.shortcutsTooltip.toggleVisibility();break;default:if(n.keyCode>=48&&n.keyCode<=59){var u=(n.keyCode-48)/10*e.get("duration");t.seek(u,mi())}}return/13|32|37|38|39|40/.test(n.keyCode)?(n.preventDefault(),!1):void 0}};this.playerContainer.addEventListener("keydown",y),this.keydownCallback=y;var k=function(t){if(9===t.keyCode){var e=i.playerContainer.contains(t.target)?0:ji;i.userActive(e)}};this.playerContainer.addEventListener("keyup",k),this.keyupCallback=k;var x=function(t){var e=t.relatedTarget||document.querySelector(":focus");e&&(i.playerContainer.contains(e)||i.userInactive())};this.playerContainer.addEventListener("blur",x,!0),this.blurCallback=x;var T=function t(){"jw-shortcuts-tooltip-explanation"===i.playerContainer.getAttribute("aria-describedby")&&i.playerContainer.removeAttribute("aria-describedby"),i.playerContainer.removeEventListener("blur",t,!0)};this.shortcutsTooltip&&(this.playerContainer.addEventListener("blur",T,!0),this.onRemoveShortcutsDescription=T),this.userActive(),this.addControls(),this.addBackdrop(),e.set("controlsEnabled",!0)}},{key:"addControls",value:function(){this.wrapperElement.appendChild(this.div)}},{key:"disable",value:function(t){var e=this.nextUpToolTip,i=this.settingsMenu,n=this.infoOverlay,o=this.controlbar,a=this.rightClickMenu,r=this.playerContainer,s=this.div;clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.off(),t.off(null,null,this),t.set("controlsEnabled",!1),s.parentNode&&(Object(l.o)(r,"jw-flag-touch"),s.parentNode.removeChild(s)),o&&o.destroy(),a&&a.destroy(),this.keydownCallback&&r.removeEventListener("keydown",this.keydownCallback),this.keyupCallback&&r.removeEventListener("keyup",this.keyupCallback),this.blurCallback&&r.removeEventListener("blur",this.blurCallback),this.onRemoveShortcutsDescription&&r.removeEventListener("blur",this.onRemoveShortcutsDescription),this.displayContainer&&this.displayContainer.destroy(),e&&e.destroy(),i&&(i.destroy(),s.removeChild(i.element())),n&&n.destroy(),this.removeBackdrop()}},{key:"controlbarHeight",value:function(){return this.dimensions.cbHeight||(this.dimensions.cbHeight=this.controlbar.element().clientHeight),this.dimensions.cbHeight}},{key:"element",value:function(){return this.div}},{key:"resize",value:function(){this.dimensions={}}},{key:"unmuteAutoplay",value:function(t,e){var i=!e.get("autostartFailed"),n=e.get("mute");i?n=!1:e.set("playOnViewable",!1),this.muteChangeCallback&&(e.off("change:autostartMuted change:mute",this.muteChangeCallback),this.muteChangeCallback=null),this.unmuteCallback&&(e.off("change:autostartFailed",this.unmuteCallback),this.unmuteCallback=null),e.set("autostartFailed",void 0),e.set("autostartMuted",void 0),t.setMute(n),this.controlbar.renderVolume(n,e.get("volume")),this.mute&&this.mute.hide(),Object(l.o)(this.playerContainer,"jw-flag-autostart"),this.userActive()}},{key:"mouseMove",value:function(t){var e=this.controlbar.element().contains(t.target),i=this.controlbar.nextUpToolTip&&this.controlbar.nextUpToolTip.element().contains(t.target),n=this.logo&&this.logo.contains(t.target),o=e||i||n?0:ji;this.userActive(o)}},{key:"userActive",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ji;t>0?(this.inactiveTime=Object(c.a)()+t,-1===this.activeTimeout&&(this.activeTimeout=setTimeout(this.userInactiveTimeout,t))):this.resetActiveTimeout(),this.showing||(Object(l.o)(this.playerContainer,"jw-flag-user-inactive"),this.showing=!0,this.trigger("userActive"))}},{key:"userInactive",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.settingsMenu.visible||(this.inactiveTime=0,this.showing=!1,Object(l.a)(this.playerContainer,"jw-flag-user-inactive"),this.trigger("userInactive"))}},{key:"addBackdrop",value:function(){var t=this.instreamState?this.div:this.wrapperElement.querySelector(".jw-captions");this.wrapperElement.insertBefore(this.backdrop,t)}},{key:"removeBackdrop",value:function(){var t=this.backdrop.parentNode;t&&t.removeChild(this.backdrop)}},{key:"setupInstream",value:function(){this.instreamState=!0,this.userActive(),this.addBackdrop(),this.settingsMenu&&this.settingsMenu.close(),Object(l.o)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","-1")}},{key:"destroyInstream",value:function(t){this.instreamState=null,this.addBackdrop(),t.get("autostartMuted")&&Object(l.a)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","0")}}])&&hi(i.prototype,n),r&&hi(i,r),e}(r.a)},function(t,e,i){"use strict";i.r(e);var n=i(0),o=i(12),a=i(50),r=i(37);var s=i(44),l=i(51),c=i(26),u=i(25),d=i(3),p=i(46),h=i(2),w=i(7),f=i(34);function g(t){var e=!1;return{async:function(){var i=this,n=arguments;return Promise.resolve().then((function(){if(!e)return t.apply(i,n)}))},cancel:function(){e=!0},cancelled:function(){return e}}}var j=i(1);function b(t){return function(e,i){var o=t.mediaModel,a=Object(n.h)({},i,{type:e});switch(e){case d.T:if(o.get(d.T)===i.mediaType)return;o.set(d.T,i.mediaType);break;case d.U:return void o.set(d.U,Object(n.h)({},i));case d.M:if(i[e]===t.model.getMute())return;break;case d.bb:i.newstate===d.mb&&(t.thenPlayPromise.cancel(),o.srcReset());var r=o.attributes.mediaState;o.attributes.mediaState=i.newstate,o.trigger("change:mediaState",o,i.newstate,r);break;case d.F:return t.beforeComplete=!0,t.trigger(d.B,a),void(t.attached&&!t.background&&t._playbackComplete());case d.G:o.get("setup")?(t.thenPlayPromise.cancel(),o.srcReset()):(e=d.tb,a.code+=1e5);break;case d.K:a.metadataType||(a.metadataType="unknown");var s=i.duration;Object(n.v)(s)&&(o.set("seekRange",i.seekRange),o.set("duration",s));break;case d.D:o.set("buffer",i.bufferPercent);case d.S:o.set("seekRange",i.seekRange),o.set("position",i.position),o.set("currentTime",i.currentTime);var l=i.duration;Object(n.v)(l)&&o.set("duration",l),e===d.S&&Object(n.s)(t.item.starttime)&&delete t.item.starttime;break;case d.R:var c=t.mediaElement;c&&c.paused&&o.set("mediaState","paused");break;case d.I:o.set(d.I,i.levels);case d.J:var u=i.currentQuality,p=i.levels;u>-1&&p.length>1&&o.set("currentLevel",parseInt(u));break;case d.f:o.set(d.f,i.tracks);case d.g:var h=i.currentTrack,w=i.tracks;h>-1&&w.length>0&&h=Math.max(l,p.a)&&(t.preloadNextItem(),v=!0)}function A(t){var e={};b.tag&&(e.tag=b.tag),this.trigger(d.F,e),L.call(this,t)}function L(t){g={},a&&f+10?t:null,w&&w.model.set("skipOffset",s)}};Object(n.h)(lt.prototype,w.a);var ct=lt,ut=i(63),dt=i(60),pt=function(t){var e=this,i=[],n={},o=0,a=0;function r(t){if(t.data=t.data||[],t.name=t.label||t.name||t.language,t._id=Object(dt.a)(t,i.length),!t.name){var e=Object(dt.b)(t,o);t.name=e.label,o=e.unknownCount}n[t._id]=t,i.push(t)}function s(){for(var t=[{id:"off",label:"Off"}],e=0;e')+'
    '},ft=i(36),gt=44,jt=function(t){var e=t.get("height");if(t.get("aspectratio"))return!1;if("string"==typeof e&&e.indexOf("%")>-1)return!1;var i=1*e||NaN;return!!(i=isNaN(i)?t.get("containerHeight"):i)&&(i&&i<=gt)},bt=i(54);function mt(t,e){if(t.get("fullscreen"))return 1;if(!t.get("activeTab"))return 0;if(t.get("isFloating"))return 1;var i=t.get("intersectionRatio");return void 0===i&&(i=function(t){var e=document.documentElement,i=document.body,n={top:0,left:0,right:e.clientWidth||i.clientWidth,width:e.clientWidth||i.clientWidth,bottom:e.clientHeight||i.clientHeight,height:e.clientHeight||i.clientHeight};if(!i.contains(t))return 0;if("none"===window.getComputedStyle(t).display)return 0;var o=vt(t);if(!o)return 0;var a=o,r=t.parentNode,s=!1;for(;!s;){var l=null;if(r===i||r===e||1!==r.nodeType?(s=!0,l=n):"visible"!==window.getComputedStyle(r).overflow&&(l=vt(r)),l&&(c=l,u=a,d=void 0,p=void 0,h=void 0,w=void 0,f=void 0,g=void 0,d=Math.max(c.top,u.top),p=Math.min(c.bottom,u.bottom),h=Math.max(c.left,u.left),w=Math.min(c.right,u.right),g=p-d,!(a=(f=w-h)>=0&&g>=0&&{top:d,bottom:p,left:h,right:w,width:f,height:g})))return 0;r=r.parentNode}var c,u,d,p,h,w,f,g;var j=o.width*o.height,b=a.width*a.height;return j?b/j:0}(e),window.top!==window.self&&i)?0:i}function vt(t){try{return t.getBoundingClientRect()}catch(t){}}var yt=i(49),kt=i(42),xt=i(58),Tt=i(10);var Ot=i(32),Ct=i(5),_t=i(6),St=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"],Mt=function(t,e,i){for(var n=t.requestFullscreen||t.webkitRequestFullscreen||t.webkitRequestFullScreen||t.mozRequestFullScreen||t.msRequestFullscreen,o=e.exitFullscreen||e.webkitExitFullscreen||e.webkitCancelFullScreen||e.mozCancelFullScreen||e.msExitFullscreen,a=!(!n||!o),r=St.length;r--;)e.addEventListener(St[r],i);return{events:St,supportsDomFullscreen:function(){return a},requestFullscreen:function(){n.call(t,{navigationUI:"hide"})},exitFullscreen:function(){null!==this.fullscreenElement()&&o.apply(e)},fullscreenElement:function(){var t=e.fullscreenElement,i=e.webkitCurrentFullScreenElement,n=e.mozFullScreenElement,o=e.msFullscreenElement;return null===t?t:t||i||n||o},destroy:function(){for(var t=St.length;t--;)e.removeEventListener(St[t],i)}}},Et=i(40);function It(t,e){for(var i=0;io?a:n*r/i)*u}return t}(i))/10}w.get("renderCaptionsNatively")?function(t,e){var i="#".concat(t," .jw-video::-webkit-media-text-track-display");e&&(e+="px",m.OS.iOS&&Object(Tt.b)(i,{fontSize:"inherit"},t,!0));p.fontSize=e,Object(Tt.b)(i,p,t,!0)}(w.get("id"),e):Object(Tt.d)(s,{fontSize:e})}}function j(t,e,i){var n=Object(Tt.c)("#000000",i);"dropshadow"===t?e.textShadow="0 2px 1px "+n:"raised"===t?e.textShadow="0 0 5px "+n+", 0 1px 5px "+n+", 0 2px 5px "+n:"depressed"===t?e.textShadow="0 -2px 1px "+n:"uniform"===t&&(e.textShadow="-2px 0 1px "+n+",2px 0 1px "+n+",0 -2px 1px "+n+",0 2px 1px "+n+",-1px 1px 1px "+n+",1px 1px 1px "+n+",1px -1px 1px "+n+",1px 1px 1px "+n)}(s=document.createElement("div")).className="jw-captions jw-reset",this.show=function(){Object(Ct.a)(s,"jw-captions-enabled")},this.hide=function(){Object(Ct.o)(s,"jw-captions-enabled")},this.populate=function(t){w.get("renderCaptionsNatively")||(a=[],o=t,t?this.selectCues(t,r):this.renderCues())},this.resize=function(){g(),this.renderCues(!0)},this.renderCues=function(t){t=!!t,At&&At.processCues(window,a,s,t)},this.selectCues=function(t,e){if(t&&t.data&&e&&!w.get("renderCaptionsNatively")){var i=this.getAlignmentPosition(t,e);!1!==i&&(a=this.getCurrentCues(t.data,i),this.renderCues(!0))}},this.getCurrentCues=function(t,e){return Object(n.i)(t,(function(t){return e>=t.startTime&&(!t.endTime||e<=t.endTime)}))},this.getAlignmentPosition=function(t,e){var i=t.source,o=e.metadata,a=e.currentTime;return i&&o&&Object(n.s)(o[i])&&(a=o[i]),a},this.clear=function(){Object(Ct.g)(s)},this.setup=function(t,i){l=document.createElement("div"),c=document.createElement("span"),l.className="jw-captions-window jw-reset",c.className="jw-captions-text jw-reset",e=Object(n.h)({},Pt,i),u=Pt.fontScale,f(e.fontSize);var o=e.windowColor,a=e.windowOpacity,r=e.edgeStyle;p={};var d={};!function(t,e){var i=e.color,n=e.fontOpacity;(i||n!==Pt.fontOpacity)&&(t.color=Object(Tt.c)(i||"#ffffff",n));if(e.back){var o=e.backgroundColor,a=e.backgroundOpacity;o===Pt.backgroundColor&&a===Pt.backgroundOpacity||(t.backgroundColor=Object(Tt.c)(o,a))}else t.background="transparent";e.fontFamily&&(t.fontFamily=e.fontFamily);e.fontStyle&&(t.fontStyle=e.fontStyle);e.fontWeight&&(t.fontWeight=e.fontWeight);e.textDecoration&&(t.textDecoration=e.textDecoration)}(d,e),(o||a!==Pt.windowOpacity)&&(p.backgroundColor=Object(Tt.c)(o||"#000000",a)),j(r,d,e.fontOpacity),e.back||null!==r||j("uniform",d),Object(Tt.d)(l,p),Object(Tt.d)(c,d),function(t,e){g(),function(t,e){m.Browser.safari&&Object(Tt.b)("#"+t+" .jw-video::-webkit-media-text-track-display-backdrop",{backgroundColor:e.backgroundColor},t,!0);Object(Tt.b)("#"+t+" .jw-video::-webkit-media-text-track-display",p,t,!0),Object(Tt.b)("#"+t+" .jw-video::cue",e,t,!0)}(t,e),function(t,e){Object(Tt.b)("#"+t+" .jw-text-track-display",p,t),Object(Tt.b)("#"+t+" .jw-text-track-cue",e,t)}(t,e)}(t,d),l.appendChild(c),s.appendChild(l),w.change("captionsTrack",(function(t,e){this.populate(e)}),this),w.set("captions",e)},this.element=function(){return s},this.destroy=function(){w.off(null,null,this),this.off()};var b=function(t){r=t,h.selectCues(o,r)};w.on("change:playlistItem",(function(){r=null,a=[]}),this),w.on(d.Q,(function(t){a=[],b(t)}),this),w.on(d.S,b,this),w.on("subtitlesTrackData",(function(){this.selectCues(o,r)}),this),w.on("change:captionsList",(function t(e,n){var o=this;1!==n.length&&(e.get("renderCaptionsNatively")||At||(i.e(8).then(function(t){At=i(93).default}.bind(null,i)).catch(Object(zt.c)(301121)).catch((function(t){o.trigger(d.tb,t)})),e.off("change:captionsList",t,this)))}),this)};Object(n.h)(Rt.prototype,w.a);var Bt=Rt,Vt=function(t,e){var i=e?" jw-hide":"";return'')},Ht={linktarget:"_blank",margin:8,hide:!1,position:"top-right"};function Nt(t){var e,i;Object(n.h)(this,w.a);var o=new Image;this.setup=function(){(i=Object(n.h)({},Ht,t.get("logo"))).position=i.position||Ht.position,i.hide="true"===i.hide.toString(),i.file&&"control-bar"!==i.position&&(e||(e=Object(Ct.e)(Vt(i.position,i.hide))),t.set("logo",i),o.onload=function(){var n=this.height,o=this.width,a={backgroundImage:'url("'+this.src+'")'};if(i.margin!==Ht.margin){var r=/(\w+)-(\w+)/.exec(i.position);3===r.length&&(a["margin-"+r[1]]=i.margin,a["margin-"+r[2]]=i.margin)}var s=.15*t.get("containerHeight"),l=.15*t.get("containerWidth");if(n>s||o>l){var c=o/n;l/s>c?(n=s,o=s*c):(o=l,n=l/c)}a.width=Math.round(o),a.height=Math.round(n),Object(Tt.d)(e,a),t.set("logoWidth",a.width)},o.src=i.file,i.link&&(e.setAttribute("tabindex","0"),e.setAttribute("aria-label",t.get("localization").logo)),this.ui=new Et.a(e).on("click tap enter",(function(t){t&&t.stopPropagation&&t.stopPropagation(),this.trigger(d.A,{link:i.link,linktarget:i.linktarget})}),this))},this.setContainer=function(t){e&&t.appendChild(e)},this.element=function(){return e},this.position=function(){return i.position},this.destroy=function(){o.onload=null,this.ui&&this.ui.destroy()}}var Ft=function(t){this.model=t,this.image=null};Object(n.h)(Ft.prototype,{setup:function(t){this.el=t},setImage:function(t){var e=this.image;e&&(e.onload=null),this.image=null;var i="";"string"==typeof t&&(i='url("'+t+'")',(e=this.image=new Image).src=t),Object(Tt.d)(this.el,{backgroundImage:i})},resize:function(t,e,i){if("uniform"===i){if(t&&(this.playerAspectRatio=t/e),!this.playerAspectRatio||!this.image||"complete"!==(s=this.model.get("state"))&&"idle"!==s&&"error"!==s&&"buffering"!==s)return;var n=this.image,o=null;if(n){if(0===n.width){var a=this;return void(n.onload=function(){a.resize(t,e,i)})}var r=n.width/n.height;Math.abs(this.playerAspectRatio-r)<.09&&(o="cover")}Object(Tt.d)(this.el,{backgroundSize:o})}var s},element:function(){return this.el}});var qt=Ft,Dt=function(t){this.model=t.player};Object(n.h)(Dt.prototype,{hide:function(){Object(Tt.d)(this.el,{display:"none"})},show:function(){Object(Tt.d)(this.el,{display:""})},setup:function(t){this.el=t;var e=this.el.getElementsByTagName("div");this.title=e[0],this.description=e[1],this.model.on("change:logoWidth",this.update,this),this.model.change("playlistItem",this.playlistItem,this)},update:function(t){var e={},i=t.get("logo");if(i){var n=1*(""+i.margin).replace("px",""),o=t.get("logoWidth")+(isNaN(n)?0:n+10);"top-left"===i.position?e.paddingLeft=o:"top-right"===i.position&&(e.paddingRight=o)}Object(Tt.d)(this.el,e)},playlistItem:function(t,e){if(e)if(t.get("displaytitle")||t.get("displaydescription")){var i="",n="";e.title&&t.get("displaytitle")&&(i=e.title),e.description&&t.get("displaydescription")&&(n=e.description),this.updateText(i,n)}else this.hide()},updateText:function(t,e){Object(Ct.q)(this.title,t),Object(Ct.q)(this.description,e),this.title.firstChild||this.description.firstChild?this.show():this.hide()},element:function(){return this.el}});var Ut=Dt;function Wt(t,e){for(var i=0;it)}if(e.get("controls")){var r=jt(e);Object(Ct.v)(u,"jw-flag-audio-player",r),e.set("audioMode",r)}}function R(){e.set("visibility",mt(e,u))}this.updateBounds=function(){Object(kt.a)(k);var t=e.get("isFloating")?p:u,i=document.body.contains(t),n=Object(Ct.c)(t),r=Math.round(n.width),s=Math.round(n.height);if(M=Object(Ct.c)(u),r===o&&s===a)return o&&a||L(),void e.set("inDom",i);r&&s||o&&a||L(),(r||s||i)&&(e.set("containerWidth",r),e.set("containerHeight",s)),e.set("inDom",i),i&&bt.a.observe(u)},this.updateStyles=function(){var t=e.get("containerWidth"),i=e.get("containerHeight");P(t,i),I&&I.resize(t,i),$(t,i),v.resize(),T&&F()},this.checkResized=function(){var t=e.get("containerWidth"),i=e.get("containerHeight"),n=e.get("isFloating");if(t!==o||i!==a){this.resizeListener||(this.resizeListener=new Yt.a(p,this,e)),o=t,a=i,l.trigger(d.hb,{width:t,height:i});var s=Object(xt.a)(t);E!==s&&(E=s,l.trigger(d.j,{breakpoint:E}))}n!==r&&(r=n,l.trigger(d.x,{floating:n}),R())},this.responsiveListener=L,this.setup=function(){var n,o,a,r;j.setup(u.querySelector(".jw-preview")),b.setup(u.querySelector(".jw-title")),(i=new Nt(e)).setup(),i.setContainer(p),i.on(d.A,J),v.setup(u.id,e.get("captions")),b.element().parentNode.insertBefore(v.element(),b.element()),n=t,a=new Lt(o=e,f),r=o.get("controls"),a.on({click:function(){l.trigger(d.p),I&&(ct()?I.settingsMenu.close():ut()?I.infoOverlay.close():n.playToggle({reason:"interaction"}))},tap:function(){u.removeEventListener("mousemove",W),u.removeEventListener("mouseout",X),u.removeEventListener("mouseover",Q),l.trigger(d.p),ct()&&I.settingsMenu.close(),ut()&&I.infoOverlay.close();var t=o.get("state");if(r&&(t===d.mb||t===d.kb||o.get("instream")&&t===d.ob)&&n.playToggle({reason:"interaction"}),r&&t===d.ob){if(o.get("instream")||o.get("castActive")||"audio"===o.get("mediaType"))return;Object(Ct.v)(u,"jw-flag-controls-hidden"),l.dismissible&&Object(Ct.v)(u,"jw-floating-dismissible",Object(Ct.i)(u,"jw-flag-controls-hidden")),v.renderCues(!0)}else I&&(I.showing?I.userInactive():I.userActive())},doubleClick:function(){return I&&n.setFullscreen()}}),u.addEventListener("mousemove",W),u.addEventListener("mouseover",Q),u.addEventListener("mouseout",X),O=a,_=new Et.a(u).on("click",(function(){})),C=Mt(u,document,et),e.on("change:hideAdsControls",(function(t,e){Object(Ct.v)(u,"jw-flag-ads-hide-controls",e)})),e.on("change:scrubbing",(function(t,e){Object(Ct.v)(u,"jw-flag-dragging",e)})),e.on("change:playRejected",(function(t,e){Object(Ct.v)(u,"jw-flag-play-rejected",e)})),e.on(d.X,tt),e.on("change:".concat(d.U),(function(){$(),v.resize()})),e.player.on("change:errorEvent",at),e.change("stretching",Y);var s=e.get("width"),c=e.get("height"),w=G(s,c);Object(Tt.d)(u,w),e.change("aspectratio",K),P(s,c),e.get("controls")||(Object(Ct.a)(u,"jw-flag-controls-hidden"),Object(Ct.o)(u,"jw-floating-dismissible")),Jt&&Object(Ct.a)(u,"jw-ie");var g=e.get("skin")||{};g.name&&Object(Ct.p)(u,/jw-skin-\S+/,"jw-skin-"+g.name);var y=function(t){t||(t={});var e=t.active,i=t.inactive,n=t.background,o={};return o.controlbar=function(t){if(t||e||i||n){var o={};return t=t||{},o.iconsActive=t.iconsActive||e,o.icons=t.icons||i,o.text=t.text||i,o.background=t.background||n,o}}(t.controlbar),o.timeslider=function(t){if(t||e){var i={};return t=t||{},i.progress=t.progress||e,i.rail=t.rail,i}}(t.timeslider),o.menus=function(t){if(t||e||i||n){var o={};return t=t||{},o.text=t.text||i,o.textActive=t.textActive||e,o.background=t.background||n,o}}(t.menus),o.tooltips=function(t){if(t||i||n){var e={};return t=t||{},e.text=t.text||i,e.background=t.background||n,e}}(t.tooltips),o}(g);!function(t,e){var i;function n(e,i,n,o){if(n){e=Object(h.f)(e,"#"+t+(o?"":" "));var a={};a[i]=n,Object(Tt.b)(e.join(", "),a,t)}}e&&(e.controlbar&&function(e){n([".jw-controlbar .jw-icon-inline.jw-text",".jw-title-primary",".jw-title-secondary"],"color",e.text),e.icons&&(n([".jw-button-color:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:not(.jw-icon-cast)"],"color",e.icons),n([".jw-display-icon-container .jw-button-color"],"color",e.icons),Object(Tt.b)("#".concat(t," .jw-icon-cast google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(e.icons,"}"),t));e.iconsActive&&(n([".jw-display-icon-container .jw-button-color:hover",".jw-display-icon-container .jw-button-color:focus"],"color",e.iconsActive),n([".jw-button-color.jw-toggle:not(.jw-icon-cast)",".jw-button-color:hover:not(.jw-icon-cast)",".jw-button-color:focus:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:hover:not(.jw-icon-cast)"],"color",e.iconsActive),n([".jw-svg-icon-buffer"],"fill",e.icons),Object(Tt.b)("#".concat(t," .jw-icon-cast:hover google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(e.iconsActive,"}"),t),Object(Tt.b)("#".concat(t," .jw-icon-cast:focus google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(e.iconsActive,"}"),t),Object(Tt.b)("#".concat(t," .jw-icon-cast google-cast-launcher.jw-off:focus"),"{--disconnected-color: ".concat(e.iconsActive,"}"),t),Object(Tt.b)("#".concat(t," .jw-icon-cast google-cast-launcher"),"{--connected-color: ".concat(e.iconsActive,"}"),t),Object(Tt.b)("#".concat(t," .jw-icon-cast google-cast-launcher:focus"),"{--connected-color: ".concat(e.iconsActive,"}"),t),Object(Tt.b)("#".concat(t," .jw-icon-cast:hover google-cast-launcher"),"{--connected-color: ".concat(e.iconsActive,"}"),t),Object(Tt.b)("#".concat(t," .jw-icon-cast:focus google-cast-launcher"),"{--connected-color: ".concat(e.iconsActive,"}"),t));n([" .jw-settings-topbar",":not(.jw-state-idle) .jw-controlbar",".jw-flag-audio-player .jw-controlbar"],"background",e.background,!0)}(e.controlbar),e.timeslider&&function(t){var e=t.progress;"none"!==e&&(n([".jw-progress",".jw-knob"],"background-color",e),n([".jw-buffer"],"background-color",Object(Tt.c)(e,50)));n([".jw-rail"],"background-color",t.rail),n([".jw-background-color.jw-slider-time",".jw-slider-time .jw-cue"],"background-color",t.background)}(e.timeslider),e.menus&&(n([".jw-option",".jw-toggle.jw-off",".jw-skip .jw-skip-icon",".jw-nextup-tooltip",".jw-nextup-close",".jw-settings-content-item",".jw-related-title"],"color",(i=e.menus).text),n([".jw-option.jw-active-option",".jw-option:not(.jw-active-option):hover",".jw-option:not(.jw-active-option):focus",".jw-settings-content-item:hover",".jw-nextup-tooltip:hover",".jw-nextup-tooltip:focus",".jw-nextup-close:hover"],"color",i.textActive),n([".jw-nextup",".jw-settings-menu"],"background",i.background)),e.tooltips&&function(t){n([".jw-skip",".jw-tooltip .jw-text",".jw-time-tip .jw-text"],"background-color",t.background),n([".jw-time-tip",".jw-tooltip"],"color",t.background),n([".jw-skip"],"border","none"),n([".jw-skip .jw-text",".jw-skip .jw-icon",".jw-time-tip .jw-text",".jw-tooltip .jw-text"],"color",t.text)}(e.tooltips),e.menus&&function(e){if(e.textActive){var i={color:e.textActive,borderColor:e.textActive,stroke:e.textActive};Object(Tt.b)("#".concat(t," .jw-color-active"),i,t),Object(Tt.b)("#".concat(t," .jw-color-active-hover:hover"),i,t)}if(e.text){var n={color:e.text,borderColor:e.text,stroke:e.text};Object(Tt.b)("#".concat(t," .jw-color-inactive"),n,t),Object(Tt.b)("#".concat(t," .jw-color-inactive-hover:hover"),n,t)}}(e.menus))}(e.get("id"),y),e.set("mediaContainer",f),e.set("iFrame",m.Features.iframe),e.set("activeTab",Object(yt.a)()),e.set("touchMode",Kt&&("string"==typeof c||c>=gt)),bt.a.add(this),e.get("enableGradient")&&!Jt&&Object(Ct.a)(u,"jw-ab-drop-shadow"),this.isSetup=!0,e.trigger("viewSetup",u);var k=document.body.contains(u);k&&bt.a.observe(u),e.set("inDom",k)},this.init=function(){this.updateBounds(),e.on("change:fullscreen",Z),e.on("change:activeTab",R),e.on("change:fullscreen",R),e.on("change:intersectionRatio",R),e.on("change:visibility",U),e.on("instreamMode",(function(t){t?dt():pt()})),R(),1!==bt.a.size()||e.get("visibility")||U(e,1,0);var t=e.player;e.change("state",rt),t.change("controls",q),e.change("streamType",nt),e.change("mediaType",ot),t.change("playlistItem",(function(t,e){lt(t,e)})),o=a=null,T&&m.OS.mobile&&bt.a.addScrollHandler(F),this.checkResized()};var B,V=62,H=!0;function N(){var t=e.get("isFloating"),i=M.top0&&void 0!==arguments[0])||arguments[0],e={x:0,y:0,width:o||0,height:a||0};return I&&t&&(e.height-=I.controlbarHeight()),e},this.setCaptions=function(t){v.clear(),v.setup(e.get("id"),t),v.resize()},this.setIntersection=function(t){var i=Math.round(100*t.intersectionRatio)/100;e.set("intersectionRatio",i),T&&!A()&&(S=S||i>=.5)&&ht(i)},this.stopFloating=function(t,i){if(t&&(T=null,bt.a.removeScrollHandler(F)),Zt===u){Zt=null,e.set("isFloating",!1);var n=function(){Object(Ct.o)(u,"jw-flag-floating"),K(e,e.get("aspectratio")),Object(Tt.d)(u,{backgroundImage:null}),Object(Tt.d)(p,{maxWidth:null,width:null,height:null,left:null,right:null,top:null,bottom:null,margin:null,transform:null,transition:null,"transition-timing-function":null})};i?(Object(Tt.d)(p,{transform:"translateY(-".concat(V-M.top,"px)"),"transition-timing-function":"ease-out"}),setTimeout(n,150)):n(),g.disable(),L()}},this.destroy=function(){e.destroy(),bt.a.unobserve(u),bt.a.remove(this),this.isSetup=!1,this.off(),Object(kt.a)(k),clearTimeout(y),Zt===u&&(Zt=null),_&&(_.destroy(),_=null),C&&(C.destroy(),C=null),I&&I.disable(e),O&&(O.destroy(),u.removeEventListener("mousemove",W),u.removeEventListener("mouseout",X),u.removeEventListener("mouseover",Q),O=null),v.destroy(),i&&(i.destroy(),i=null),Object(Tt.a)(e.get("id")),this.resizeListener&&(this.resizeListener.destroy(),delete this.resizeListener),T&&m.OS.mobile&&bt.a.removeScrollHandler(F)}};function $t(t,e,i){return($t="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,i){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=ae(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(i):o.value}})(t,e,i||t)}function te(t){return(te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ee(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ie(t,e){for(var i=0;ie&&t(),e=n}};function Me(t,e){e.off(d.N,t._onPlayAttempt),e.off(d.fb,t._triggerFirstFrame),e.off(d.S,t._onTime),t.off("change:activeTab",t._onTabVisible)}var Ee=function(t,e){t.change("mediaModel",(function(t,i,n){t._qoeItem&&n&&t._qoeItem.end(n.get("mediaState")),t._qoeItem=new Oe.a,t._qoeItem.getFirstFrame=function(){var t=this.between(d.N,d.H),e=this.between(_e,d.H);return e>0&&e0&&rt(e,t.tracks)}),O).on(d.F,(function(){Promise.resolve().then(at)}),O).on(d.G,O.triggerError,O),Ee(C,B),C.on(d.w,O.triggerError,O),C.on("change:state",(function(t,e,i){Y()||K.call(T,t,e,i)}),this),C.on("change:castState",(function(t,e){O.trigger(d.m,e)})),C.on("change:fullscreen",(function(t,e){O.trigger(d.y,{fullscreen:e}),e&&t.set("playOnViewable",!1)})),C.on("change:volume",(function(t,e){O.trigger(d.V,{volume:e})})),C.on("change:mute",(function(t){O.trigger(d.M,{mute:t.getMute()})})),C.on("change:playbackRate",(function(t,e){O.trigger(d.ab,{playbackRate:e,position:t.get("position")})}));var V=function t(e,i){"clickthrough"!==i&&"interaction"!==i&&"external"!==i||(C.set("playOnViewable",!1),C.off("change:playReason change:pauseReason",t))};function H(t,e){Object(n.u)(e)||C.set("viewable",Math.round(e))}function N(){dt&&(!0!==C.get("autostart")||C.get("playOnViewable")||$("autostart"),dt.flush())}function F(t,e){O.trigger("viewable",{viewable:e}),q()}function q(){if((o.a[0]===e||1===C.get("viewable"))&&"idle"===C.get("state")&&!1===C.get("autostart"))if(!b.primed()&&m.OS.android){var t=b.getTestElement(),i=O.getMute();Promise.resolve().then((function(){return be(t,{muted:i})})).then((function(){"idle"===C.get("state")&&B.preloadVideo()})).catch(Le)}else B.preloadVideo()}function D(t){O._instreamAdapter.noResume=!t,t||et({reason:"viewable"})}function U(t){t||(O.pause({reason:"viewable"}),C.set("playOnViewable",!t))}function W(t,e){var i=Y();if(t.get("playOnViewable")){if(e){var n=t.get("autoPause").pauseAds,o=t.get("pauseReason");J()===d.mb?$("viewable"):i&&!n||"interaction"===o||Z({reason:"viewable"})}else m.OS.mobile&&!i&&(O.pause({reason:"autostart"}),C.set("playOnViewable",!0));m.OS.mobile&&i&&D(e)}}function Q(t,e){var i=t.get("state"),n=Y(),o=t.get("playReason");n?t.get("autoPause").pauseAds?U(e):D(e):i===d.pb||i===d.jb?U(e):i===d.mb&&"playlist"===o&&t.once("change:state",(function(){U(e)}))}function Y(){var t=O._instreamAdapter;return!!t&&t.getState()}function J(){var t=Y();return t||C.get("state")}function Z(t){if(E.cancel(),S=!1,C.get("state")===d.lb)return Promise.resolve();var i=G(t);return C.set("playReason",i),Y()?(e.pauseAd(!1,t),Promise.resolve()):(C.get("state")===d.kb&&(tt(!0),O.setItemIndex(0)),!_&&(_=!0,O.trigger(d.C,{playReason:i,startTime:t&&t.startTime?t.startTime:C.get("playlistItem").starttime}),_=!1,Te()&&!b.primed()&&b.prime(),"playlist"===i&&C.get("autoPause").viewability&&Q(C,C.get("viewable")),x)?(Te()&&!P&&C.get("mediaElement").load(),x=!1,k=null,Promise.resolve()):B.playVideo(i).then(b.played))}function G(t){return t&&t.reason?t.reason:"unknown"}function $(t){if(J()===d.mb){E=g(N);var e=C.get("advertising");(function(t,e){var i=e.cancelable,n=e.muted,o=void 0!==n&&n,a=e.allowMuted,r=void 0!==a&&a,s=e.timeout,l=void 0===s?1e4:s,c=t.getTestElement(),u=o?"muted":"".concat(r);ke[u]||(ke[u]=be(c,{muted:o}).catch((function(t){if(!i.cancelled()&&!1===o&&r)return be(c,{muted:o=!0});throw t})).then((function(){return o?(ke[u]=null,ve):me})).catch((function(t){throw clearTimeout(d),ke[u]=null,t.reason=ye,t})));var d,p=ke[u].then((function(t){if(clearTimeout(d),i.cancelled()){var e=new Error("Autoplay test was cancelled");throw e.reason="cancelled",e}return t})),h=new Promise((function(t,e){d=setTimeout((function(){ke[u]=null;var t=new Error("Autoplay test timed out");t.reason="timeout",e(t)}),l)}));return Promise.race([p,h])})(b,{cancelable:E,muted:O.getMute(),allowMuted:!e||e.autoplayadsmuted}).then((function(e){return C.set("canAutoplay",e),e!==ve||O.getMute()||(C.set("autostartMuted",!0),ut(),C.once("change:autostartMuted",(function(t){t.off("change:viewable",W),O.trigger(d.M,{mute:C.getMute()})}))),O.getMute()&&C.get("enableDefaultCaptions")&&y.selectDefaultIndex(1),Z({reason:t}).catch((function(){O._instreamAdapter||C.set("autostartFailed",!0),k=null}))})).catch((function(t){if(C.set("canAutoplay",ye),C.set("autostart",!1),!E.cancelled()){var e=Object(j.w)(t);O.trigger(d.h,{reason:t.reason,code:e,error:t})}}))}}function tt(t){if(E.cancel(),dt.empty(),Y()){var e=O._instreamAdapter;return e&&(e.noResume=!0),void(k=function(){return B.stopVideo()})}k=null,!t&&(S=!0),_&&(x=!0),C.set("errorEvent",void 0),B.stopVideo()}function et(t){var e=G(t);C.set("pauseReason",e),C.set("playOnViewable","viewable"===e)}function it(t){k=null,E.cancel();var i=Y();if(i&&i!==d.ob)return et(t),void e.pauseAd(!0,t);switch(C.get("state")){case d.lb:return;case d.pb:case d.jb:et(t),B.pause();break;default:_&&(x=!0)}}function nt(t,e){tt(!0),O.setItemIndex(t),O.play(e)}function ot(t){nt(C.get("item")+1,t)}function at(){O.completeCancelled()||(k=O.completeHandler,O.shouldAutoAdvance()?O.nextItem():C.get("repeat")?ot({reason:"repeat"}):(m.OS.iOS&<(!1),C.set("playOnViewable",!1),C.set("state",d.kb),O.trigger(d.cb,{})))}function rt(t,e){t=parseInt(t,10)||0,C.persistVideoSubtitleTrack(t,e),B.subtitles=t,O.trigger(d.k,{tracks:st(),track:t})}function st(){return y.getCaptionsList()}function lt(t){Object(n.o)(t)||(t=!C.get("fullscreen")),C.set("fullscreen",t),O._instreamAdapter&&O._instreamAdapter._adModel&&O._instreamAdapter._adModel.set("fullscreen",t)}function ut(){B.mute=C.getMute(),B.volume=C.get("volume")}C.on("change:playReason change:pauseReason",V),O.on(d.c,(function(t){return V(0,t.playReason)})),O.on(d.b,(function(t){return V(0,t.pauseReason)})),C.on("change:scrubbing",(function(t,e){e?(M=C.get("state")!==d.ob,it()):M&&Z({reason:"interaction"})})),C.on("change:captionsList",(function(t,e){O.trigger(d.l,{tracks:e,track:C.get("captionsIndex")||0})})),C.on("change:mediaModel",(function(t,e){var i=this;t.set("errorEvent",void 0),e.change("mediaState",(function(e,i){var n;t.get("errorEvent")||t.set(d.bb,(n=i)===d.nb||n===d.qb?d.jb:n)}),this),e.change("duration",(function(e,i){if(0!==i){var n=t.get("minDvrWindow"),o=Object(xe.b)(i,n);t.setStreamType(o)}}),this);var n=t.get("item")+1,o="autoplay"===(t.get("related")||{}).oncomplete,a=t.get("playlist")[n];if((a||o)&&P){e.on("change:position",(function t(n,r){var s=a&&!a.daiSetting,l=e.get("duration");s&&r&&l>0&&r>=l-p.b?(e.off("change:position",t,i),B.backgroundLoad(a)):o&&(a=C.get("nextUp"))}),this)}})),(y=new ht(C)).on("all",z,O),R.on("viewSetup",(function(t){Object(a.b)(T,t)})),this.playerReady=function(){v.once(d.hb,(function(){try{!function(){C.change("visibility",H),A.off(),O.trigger(d.gb,{setupTime:0}),C.change("playlist",(function(t,e){if(e.length){var i={playlist:e},o=C.get("feedData");o&&(i.feedData=Object(n.h)({},o)),O.trigger(d.eb,i)}})),C.change("playlistItem",(function(t,e){if(e){var i=e.title,n=e.image;if("mediaSession"in navigator&&window.MediaMetadata&&(i||n))try{navigator.mediaSession.metadata=new window.MediaMetadata({title:i,artist:window.location.hostname,artwork:[{src:n||""}]})}catch(t){}t.set("cues",[]),O.trigger(d.db,{index:C.get("item"),item:e})}})),A.flush(),A.destroy(),A=null,C.change("viewable",F),C.change("viewable",W),C.get("autoPause").viewability?C.change("viewable",Q):C.once("change:autostartFailed change:mute",(function(t){t.off("change:viewable",W)}));N(),C.on("change:itemReady",(function(t,e){e&&dt.flush()}))}()}catch(t){O.triggerError(Object(j.v)(j.m,j.a,t))}})),v.init()},this.preload=q,this.load=function(t,e){var i,n=O._instreamAdapter;switch(n&&(n.noResume=!0),O.trigger("destroyPlugin",{}),tt(!0),E.cancel(),E=g(N),I.cancel(),Te()&&b.prime(),Ie(t)){case"string":C.attributes.item=0,C.attributes.itemReady=!1,I=g((function(t){if(t)return O.updatePlaylist(Object(c.a)(t.playlist),t)})),i=function(t){var e=this;return new Promise((function(i,n){var o=new l.a;o.on(d.eb,(function(t){i(t)})),o.on(d.w,n,e),o.load(t)}))}(t).then(I.async);break;case"object":C.attributes.item=0,i=O.updatePlaylist(Object(c.a)(t),e||{});break;case"number":i=O.setItemIndex(t);break;default:return}i.catch((function(t){O.triggerError(Object(j.u)(t,j.c))})),i.then(E.async).catch(Le)},this.play=function(t){return Z(t).catch(Le)},this.pause=it,this.seek=function(t,e){var i=C.get("state");if(i!==d.lb){B.position=t;var n=i===d.mb;C.get("scrubbing")||!n&&i!==d.kb||(n&&((e=e||{}).startTime=t),this.play(e))}},this.stop=tt,this.playlistItem=nt,this.playlistNext=ot,this.playlistPrev=function(t){nt(C.get("item")-1,t)},this.setCurrentCaptions=rt,this.setCurrentQuality=function(t){B.quality=t},this.setFullscreen=lt,this.getCurrentQuality=function(){return B.quality},this.getQualityLevels=function(){return B.qualities},this.setCurrentAudioTrack=function(t){B.audioTrack=t},this.getCurrentAudioTrack=function(){return B.audioTrack},this.getAudioTracks=function(){return B.audioTracks},this.getCurrentCaptions=function(){return y.getCurrentIndex()},this.getCaptionsList=st,this.getVisualQuality=function(){var t=this._model.get("mediaModel");return t?t.get(d.U):null},this.getConfig=function(){return this._model?this._model.getConfiguration():void 0},this.getState=J,this.next=Le,this.completeHandler=at,this.completeCancelled=function(){return(t=C.get("state"))!==d.mb&&t!==d.kb&&t!==d.lb||!!S&&(S=!1,!0);var t},this.shouldAutoAdvance=function(){return C.get("item")!==C.get("playlist").length-1},this.nextItem=function(){ot({reason:"playlist"})},this.setConfig=function(t){!function(t,e){var i=t._model,n=i.attributes;e.height&&(e.height=Object(r.b)(e.height),e.width=e.width||n.width),e.width&&(e.width=Object(r.b)(e.width),e.aspectratio?(n.width=e.width,delete e.width):e.height=n.height),e.width&&e.height&&!e.aspectratio&&t._view.resize(e.width,e.height),Object.keys(e).forEach((function(o){var a=e[o];if(void 0!==a)switch(o){case"aspectratio":i.set(o,Object(r.a)(a,n.width));break;case"autostart":!function(t,e,i){t.setAutoStart(i),"idle"===t.get("state")&&!0===i&&e.play({reason:"autostart"})}(i,t,a);break;case"mute":t.setMute(a);break;case"volume":t.setVolume(a);break;case"playbackRateControls":case"playbackRates":case"repeat":case"stretching":i.set(o,a)}}))}(O,t)},this.setItemIndex=function(t){B.stopVideo();var e=C.get("playlist").length;return(t=(parseInt(t,10)||0)%e)<0&&(t+=e),B.setActiveItem(t).catch((function(t){t.code>=151&&t.code<=162&&(t=Object(j.u)(t,j.e)),T.triggerError(Object(j.v)(j.k,j.d,t))}))},this.detachMedia=function(){if(_&&(x=!0),C.get("autoPause").viewability&&Q(C,C.get("viewable")),!P)return B.setAttached(!1);B.backgroundActiveMedia()},this.attachMedia=function(){P?B.restoreBackgroundMedia():B.setAttached(!0),"function"==typeof k&&k()},this.routeEvents=function(t){return B.routeEvents(t)},this.forwardEvents=function(){return B.forwardEvents()},this.playVideo=function(t){return B.playVideo(t)},this.stopVideo=function(){return B.stopVideo()},this.castVideo=function(t,e){return B.castVideo(t,e)},this.stopCast=function(){return B.stopCast()},this.backgroundActiveMedia=function(){return B.backgroundActiveMedia()},this.restoreBackgroundMedia=function(){return B.restoreBackgroundMedia()},this.preloadNextItem=function(){B.background.currentMedia&&B.preloadVideo()},this.isBeforeComplete=function(){return B.beforeComplete},this.setVolume=function(t){C.setVolume(t),ut()},this.setMute=function(t){C.setMute(t),ut()},this.setPlaybackRate=function(t){C.setPlaybackRate(t)},this.getProvider=function(){return C.get("provider")},this.getWidth=function(){return C.get("containerWidth")},this.getHeight=function(){return C.get("containerHeight")},this.getItemQoe=function(){return C._qoeItem},this.addButton=function(t,e,i,n,o){var a=C.get("customButtons")||[],r=!1,s={img:t,tooltip:e,callback:i,id:n,btnClass:o};a=a.reduce((function(t,e){return e.id===n?(r=!0,t.push(s)):t.push(e),t}),[]),r||a.unshift(s),C.set("customButtons",a)},this.removeButton=function(t){var e=C.get("customButtons")||[];e=e.filter((function(e){return e.id!==t})),C.set("customButtons",e)},this.resize=v.resize,this.getSafeRegion=v.getSafeRegion,this.setCaptions=v.setCaptions,this.checkBeforePlay=function(){return _},this.setControls=function(t){Object(n.o)(t)||(t=!C.get("controls")),C.set("controls",t),B.controls=t},this.addCues=function(t){this.setCues(C.get("cues").concat(t))},this.setCues=function(t){C.set("cues",t)},this.updatePlaylist=function(t,e){try{var i=Object(c.b)(t,C,e);Object(c.e)(i);var o=Object(n.h)({},e);delete o.playlist,C.set("feedData",o),C.set("playlist",i)}catch(t){return Promise.reject(t)}return this.setItemIndex(C.get("item"))},this.setPlaylistItem=function(t,e){(e=Object(c.d)(C,new u.a(e),e.feedData||{}))&&(C.get("playlist")[t]=e,t===C.get("item")&&"idle"===C.get("state")&&this.setItemIndex(t))},this.playerDestroy=function(){this.off(),this.stop(),Object(a.b)(this,this.originalContainer),v&&v.destroy(),C&&C.destroy(),dt&&dt.destroy(),y&&y.destroy(),B&&B.destroy(),this.instreamDestroy()},this.isBeforePlay=this.checkBeforePlay,this.createInstream=function(){return this.instreamDestroy(),this._instreamAdapter=new ct(this,C,v,b),this._instreamAdapter},this.instreamDestroy=function(){O._instreamAdapter&&(O._instreamAdapter.destroy(),O._instreamAdapter=null)};var dt=new s.a(this,["play","pause","setCurrentAudioTrack","setCurrentCaptions","setCurrentQuality","setFullscreen"],(function(){return!T._model.get("itemReady")||A}));dt.queue.push.apply(dt.queue,f),v.setup()},get:function(t){if(t in y.a){var e=this._model.get("mediaModel");return e?e.get(t):y.a[t]}return this._model.get(t)},getContainer:function(){return this.currentContainer||this.originalContainer},getMute:function(){return this._model.getMute()},triggerError:function(t){var e=this._model;t.message=e.get("localization").errors[t.key],delete t.key,e.set("errorEvent",t),e.set("state",d.lb),e.once("change:state",(function(){this.set("errorEvent",void 0)}),e),this.trigger(d.w,t)}});e.default=Ae},,,,,,,,,,,,function(t,e){!function(t,e){"use strict";if("IntersectionObserver"in t&&"IntersectionObserverEntry"in t&&"intersectionRatio"in t.IntersectionObserverEntry.prototype)"isIntersecting"in t.IntersectionObserverEntry.prototype||Object.defineProperty(t.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}});else{var i=[];o.prototype.THROTTLE_TIMEOUT=100,o.prototype.POLL_INTERVAL=null,o.prototype.USE_MUTATION_OBSERVER=!0,o.prototype.observe=function(t){if(!this._observationTargets.some((function(e){return e.element==t}))){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(),this._checkForIntersections()}},o.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter((function(e){return e.element!=t})),this._observationTargets.length||(this._unmonitorIntersections(),this._unregisterInstance())},o.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorIntersections(),this._unregisterInstance()},o.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},o.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter((function(t,e,i){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==i[e-1]}))},o.prototype._parseRootMargin=function(t){var e=(t||"0px").split(/\s+/).map((function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}}));return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},o.prototype._monitorIntersections=function(){this._monitoringIntersections||(this._monitoringIntersections=!0,this.POLL_INTERVAL?this._monitoringInterval=setInterval(this._checkForIntersections,this.POLL_INTERVAL):(a(t,"resize",this._checkForIntersections,!0),a(e,"scroll",this._checkForIntersections,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in t&&(this._domObserver=new MutationObserver(this._checkForIntersections),this._domObserver.observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))))},o.prototype._unmonitorIntersections=function(){this._monitoringIntersections&&(this._monitoringIntersections=!1,clearInterval(this._monitoringInterval),this._monitoringInterval=null,r(t,"resize",this._checkForIntersections,!0),r(e,"scroll",this._checkForIntersections,!0),this._domObserver&&(this._domObserver.disconnect(),this._domObserver=null))},o.prototype._checkForIntersections=function(){var e=this._rootIsInDom(),i=e?this._getRootRect():{top:0,bottom:0,left:0,right:0,width:0,height:0};this._observationTargets.forEach((function(o){var a=o.element,r=s(a),l=this._rootContainsTarget(a),c=o.entry,u=e&&l&&this._computeTargetAndRootIntersection(a,i),d=o.entry=new n({time:t.performance&&performance.now&&performance.now(),target:a,boundingClientRect:r,rootBounds:i,intersectionRect:u});c?e&&l?this._hasCrossedThreshold(c,d)&&this._queuedEntries.push(d):c&&c.isIntersecting&&this._queuedEntries.push(d):this._queuedEntries.push(d)}),this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)},o.prototype._computeTargetAndRootIntersection=function(i,n){if("none"!=t.getComputedStyle(i).display){for(var o,a,r,l,u,d,p,h,w=s(i),f=c(i),g=!1;!g;){var j=null,b=1==f.nodeType?t.getComputedStyle(f):{};if("none"==b.display)return;if(f==this.root||f==e?(g=!0,j=n):f!=e.body&&f!=e.documentElement&&"visible"!=b.overflow&&(j=s(f)),j&&(o=j,a=w,r=void 0,l=void 0,u=void 0,d=void 0,p=void 0,h=void 0,r=Math.max(o.top,a.top),l=Math.min(o.bottom,a.bottom),u=Math.max(o.left,a.left),d=Math.min(o.right,a.right),h=l-r,!(w=(p=d-u)>=0&&h>=0&&{top:r,bottom:l,left:u,right:d,width:p,height:h})))break;f=c(f)}return w}},o.prototype._getRootRect=function(){var t;if(this.root)t=s(this.root);else{var i=e.documentElement,n=e.body;t={top:0,left:0,right:i.clientWidth||n.clientWidth,width:i.clientWidth||n.clientWidth,bottom:i.clientHeight||n.clientHeight,height:i.clientHeight||n.clientHeight}}return this._expandRectByRootMargin(t)},o.prototype._expandRectByRootMargin=function(t){var e=this._rootMarginValues.map((function(e,i){return"px"==e.unit?e.value:e.value*(i%2?t.width:t.height)/100})),i={top:t.top-e[0],right:t.right+e[1],bottom:t.bottom+e[2],left:t.left-e[3]};return i.width=i.right-i.left,i.height=i.bottom-i.top,i},o.prototype._hasCrossedThreshold=function(t,e){var i=t&&t.isIntersecting?t.intersectionRatio||0:-1,n=e.isIntersecting?e.intersectionRatio||0:-1;if(i!==n)for(var o=0;o=0&&(n.metadata.mpegts=o+e)}var a=this.getLiveLatency();null!==a&&(n.latency=a),(this.state===r.pb||this.seeking)&&this.trigger(r.S,n)}},click:function(t){this.trigger(r.n,t)},volumechange:function(){var t=this.video;this.trigger(r.V,{volume:Math.round(100*t.volume)}),this.trigger(r.M,{mute:t.muted})},seeked:function(){this.seeking&&(this.seeking=!1,this.trigger(r.R))},playing:function(){-1===this.stallTime&&this.setState(r.pb),this.trigger(r.fb)},pause:function(){this.state!==r.kb&&(this.video.ended||this.video.error||this.video.currentTime!==this.video.duration&&this.setState(r.ob))},progress:function(){var t=this.getDuration();if(!(t<=0||t===1/0)){var e=this.video.buffered;if(e&&0!==e.length){var i=Object(s.a)(e.end(e.length-1)/t,0,1);this.trigger(r.D,{bufferPercent:100*i,position:this.getCurrentTime(),duration:t,currentTime:this.video.currentTime,seekRange:this.getSeekRange()})}}},ratechange:function(){this.trigger(r.P,{playbackRate:this.video.playbackRate})},ended:function(){this.videoHeight=0,this.streamBitrate=-1,this.state!==r.mb&&this.state!==r.kb&&this.trigger(r.F)},loadeddata:function(){this.renderNatively&&this.setTextTracks(this.video.textTracks)}},c=i(10);function u(t){return t&&t.length?t.end(t.length-1):0}var d={container:null,volume:function(t){this.video.volume=Math.min(Math.max(0,t/100),1)},mute:function(t){this.video.muted=!!t,this.video.muted||this.video.removeAttribute("muted")},resize:function(t,e,i){var n=this.video,a=n.videoWidth,r=n.videoHeight;if(t&&e&&a&&r){var s={objectFit:"",width:"",height:""};if("uniform"===i){var l=t/e,u=a/r,d=Math.abs(l-u);d<.09&&d>.0025&&(s.objectFit="fill",i="exactfit")}if(o.Browser.ie||o.OS.iOS&&o.OS.version.major<9||o.Browser.androidNative)if("uniform"!==i){s.objectFit="contain";var p=t/e,h=a/r,w=1,f=1;"none"===i?w=f=p>h?Math.ceil(100*r/e)/100:Math.ceil(100*a/t)/100:"fill"===i?w=f=p>h?p/h:h/p:"exactfit"===i&&(p>h?(w=p/h,f=1):(w=1,f=h/p)),Object(c.e)(n,"matrix(".concat(w.toFixed(2),", 0, 0, ").concat(f.toFixed(2),", 0, 0)"))}else s.top=s.left=s.margin="",Object(c.e)(n,"");Object(c.d)(n,s)}},getContainer:function(){return this.container},setContainer:function(t){this.container=t,this.video.parentNode!==t&&t.appendChild(this.video)},remove:function(){this.stop(),this.destroy();var t=this.container;t&&t===this.video.parentNode&&t.removeChild(this.video)},atEdgeOfLiveStream:function(){if(!this.isLive())return!1;return u(this.video.buffered)-this.video.currentTime<=2}},p={eventsOn_:function(){},eventsOff_:function(){},attachMedia:function(){this.eventsOn_()},detachMedia:function(){return this.eventsOff_()}},h=i(62),w=i(5),f=i(53),g=i(7),j=i(63),b=i(60),m={TIT2:"title",TT2:"title",WXXX:"url",TPE1:"artist",TP1:"artist",TALB:"album",TAL:"album"};function v(t,e){for(var i,n,o,a=t.length,r="",s=e||0;s>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r+=String.fromCharCode(i);break;case 12:case 13:n=t[s++],r+=String.fromCharCode((31&i)<<6|63&n);break;case 14:n=t[s++],o=t[s++],r+=String.fromCharCode((15&i)<<12|(63&n)<<6|(63&o)<<0)}return r}function y(t){var e=function(t){for(var e="0x",i=0;i>1|(8323072&e)>>2|(2130706432&e)>>3}function k(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).reduce((function(t,e){if(!("value"in e)&&"data"in e&&e.data instanceof ArrayBuffer){var i=new Uint8Array(e.data),n=i.length;e={value:{key:"",data:""}};for(var o=10;o<14&&o0){var c=v(i.subarray(a,a+=s),0);if("PRIV"===e.value.key){if("com.apple.streaming.transportStreamTimestamp"===c){var u=1&y(i.subarray(a,a+=4)),d=y(i.subarray(a,a+=4))+(u?4294967296:0);e.value.data=d}else e.value.data=v(i,a+1);e.value.info=c}else e.value.info=c,e.value.data=v(i,a+1)}else{var p=i[a];e.value.data=1===p||2===p?function(t,e){for(var i=t.length-1,n="",o=e||0;o=0&&o[a].startTime>e.startTime;a--)i.unshift(o[a]),t.removeCue(o[a]);try{t.addCue(e),i.forEach((function(e){return t.addCue(e)}))}catch(t){console.error(t)}t.mode=n}(e,n)}else try{e.addCue(i)}catch(t){console.error(t)}}function S(t,e){e&&e.length&&Object(n.g)(e,(function(e){if(!(o.Browser.ie&&t&&/^(native|subtitle|cc)/.test(e._id))){o.Browser.ie&&"disabled"===e.mode||(e.mode="disabled",e.mode="hidden");for(var i=e.cues.length;i--;)e.removeCue(e.cues[i]);e.embedded||(e.mode="disabled"),e.inuse=!1}}))}function M(t){return"subtitles"===t||"captions"===t}function E(t){var e,i=Object(b.b)(t,this._unknownCount),o=i.label;if(this._unknownCount=i.unknownCount,this.renderNatively||"metadata"===t.kind){var a=this.video.textTracks;(e=Object(n.k)(a,{label:o}))||(e=this.video.addTextTrack(t.kind,o,t.language||"")),e.default=t.default,e.mode="disabled",e.inuse=!0}else(e=t).data=e.data||[];return e._id||(e._id=Object(b.a)(t,this._textTracks.length)),e}function I(t){this._textTracks.push(t),this._tracksById[t._id]=t}function A(){if(this._textTracks){var t=this._textTracks.filter((function(t){return t.embedded||"subs"===t.groupid}));this._initTextTracks(),t.forEach((function(t){this._tracksById[t._id]=t})),this._textTracks=t}}function L(t){this.triggerActiveCues(t.currentTarget.activeCues)}function z(t,e,i){var n=t.kind;this._cachedVTTCues[t._id]||(this._cachedVTTCues[t._id]={});var o,a=this._cachedVTTCues[t._id];switch(n){case"captions":case"subtitles":o=i||Math.floor(20*e.startTime);var r="_"+e.line,s=Math.floor(20*e.endTime),l=a[o+r]||a[o+1+r]||a[o-1+r];return!(l&&Math.abs(l-s)<=1)&&(a[o+r]=s,!0);case"metadata":var c=e.data?new Uint8Array(e.data).join(""):e.text;return!a[o=i||e.startTime+c]&&(a[o]=e.endTime,!0);default:return!1}}function P(t){if(t.length>this._textTracks.length)return!0;for(var e=0;e=0&&(f.retries=0),f.currentTime=v.currentTime,S&&C!==v.currentTime&&$(v.currentTime),l.timeupdate.call(f),wt(),o.Browser.ie&&G()},resize:G,ended:function(){_=-1,ft(),l.ended.call(f)},loadedmetadata:function(){var t=f.getDuration();P&&t===1/0&&(t=0);var e={metadataType:"media",duration:t,height:v.videoHeight,width:v.videoWidth,seekRange:f.getSeekRange()};f.trigger(r.K,e),G()},durationchange:function(){P||l.progress.call(f)},loadeddata:function(){var t;!function(){if(v.getStartDate){var t=v.getStartDate(),e=t.getTime?t.getTime():NaN;if(e!==f.startDateTime&&!isNaN(e)){f.startDateTime=e;var i=t.toISOString(),n=f.getSeekRange(),o=n.start,a=n.end,s={metadataType:"program-date-time",programDateTime:i,start:o,end:a},l=f.createCue(o,a,JSON.stringify(s));f.addVTTCue({type:"metadata",cue:l}),delete s.metadataType,f.trigger(r.L,{metadataType:"program-date-time",metadata:s})}}}(),l.loadeddata.call(f),function(t){if(E=null,!t)return;if(t.length){for(var e=0;e0&&(e=t.map((function(t,e){return{label:t.label||e}}))),e}function it(t){f.currentTime=-1,j=t.minDvrWindow,m=t.sources,_=function(t){var i=Math.max(0,_),n=e.qualityLabel;if(t)for(var o=0;o0&&(T=-1,f.seek(t)),t>0&&v.currentTime!==t&&f.seek(t);var n=et(m);n&&f.trigger(r.I,{levels:n,currentQuality:_}),m.length&&"hls"!==m[0].type&&ht()}function at(t){E=null,I=-1,y.reason||(y.reason="initial choice",y.level={}),x=!1;var e=document.createElement("source");e.src=t.file,v.src!==e.src&&(v.src=t.file)}function rt(){v&&(f.disableTextTrack(),v.removeAttribute("preload"),v.removeAttribute("src"),Object(w.h)(v),Object(c.d)(v,{objectFit:""}),_=-1,!o.Browser.msie&&"load"in v&&v.load())}function st(){var t=1/0;return["buffered","seekable"].forEach((function(e){for(var i=v[e],o=i?i.length:0;o--;){var a=Math.min(t,i.start(o));Object(n.p)(a)&&(t=a)}})),t}function lt(){var t=0;return["buffered","seekable"].forEach((function(e){for(var i=v[e],o=i?i.length:0;o--;){var a=Math.max(t,i.end(o));Object(n.p)(a)&&(t=a)}})),t}function ct(){for(var t=-1,e=0;e-1&&t1)&&function(t){Y=t.end,J=Math.min(0,v.currentTime-Y),Z=Object(V.a)()}(e),Object(h.a)(e.end-e.start,j))return J}return t}(v.currentTime)},f.getDuration=function(){var t=v.duration;if(P&&t===1/0&&0===v.currentTime||isNaN(t))return 0;var e=lt();if(f.isLive()&&e){var i=e-st();Object(h.a)(i,j)&&(t=-i)}return t},f.getSeekRange=function(){var t={start:0,end:v.duration};return v.seekable.length&&(t.end=lt(),t.start=st()),t},f.getLiveLatency=function(){var t=null,e=lt();return f.isLive()&&e&&(t=e+(Object(V.a)()-Z)/1e3-v.currentTime),t},this.stop=function(){ft(),rt(),this.clearTracks(),o.Browser.ie&&v.pause(),this.setState(r.mb)},this.destroy=function(){M=Q,X(b,v),this.removeTracksListener(v.audioTracks,"change",ct),this.removeTracksListener(v.textTracks,"change",f.textTrackChangeHandler),this.off()},this.init=function(t){f.retries=0,f.maxRetries=t.adType?0:3,it(t);var e=m[_];(P=Object(a.a)(e))&&(f.supportsPlaybackRate=!1,b.waiting=Q),f.eventsOn_(),m.length&&"hls"!==m[0].type&&this.sendMediaType(m),y.reason=""},this.preload=function(t){it(t);var e=m[_],i=e.preload||"metadata";"none"!==i&&(v.setAttribute("preload",i),at(e))},this.load=function(t){it(t),ot(t.starttime),this.setupSideloadedTracks(t.tracks)},this.play=function(){return M(),nt()},this.pause=function(){ft(),M=function(){if(v.paused&&v.currentTime&&f.isLive()){var t=lt(),e=t-st(),i=!Object(h.a)(e,j),o=t-v.currentTime;if(i&&t&&(o>15||o<0)){if(O=Math.max(t-10,t-e),!Object(n.p)(O))return;$(v.currentTime),v.currentTime=O}}},v.pause()},this.seek=function(t){var e=f.getSeekRange(),i=t;if(t<0&&(i+=e.end),x||(x=!!lt()),x){T=0;try{if(f.seeking=!0,f.isLive()&&Object(h.a)(e.end-e.start,j))if(J=Math.min(0,i-Y),t<0)i+=Math.min(12,(Object(V.a)()-Z)/1e3);O=i,$(v.currentTime),v.currentTime=i}catch(t){f.seeking=!1,T=i}}else T=i,o.Browser.firefox&&v.paused&&nt()},this.setVisibility=function(t){(t=!!t)||o.OS.android?Object(c.d)(f.container,{visibility:"visible",opacity:1}):Object(c.d)(f.container,{visibility:"",opacity:0})},this.setFullscreen=function(t){if(t=!!t){try{var e=v.webkitEnterFullscreen||v.webkitEnterFullScreen;e&&e.apply(v)}catch(t){return!1}return f.getFullScreen()}var i=v.webkitExitFullscreen||v.webkitExitFullScreen;return i&&i.apply(v),t},f.getFullScreen=function(){return S||!!v.webkitDisplayingFullscreen},this.setCurrentQuality=function(t){_!==t&&t>=0&&m&&m.length>t&&(_=t,y.reason="api",y.level={},this.trigger(r.J,{currentQuality:t,levels:et(m)}),e.qualityLabel=m[t].label,ot(v.currentTime||0),nt())},this.setPlaybackRate=function(t){v.playbackRate=v.defaultPlaybackRate=t},this.getPlaybackRate=function(){return v.playbackRate},this.getCurrentQuality=function(){return _},this.getQualityLevels=function(){return Array.isArray(m)?m.map((function(t){return function(t){return{bitrate:t.bitrate,label:t.label,width:t.width,height:t.height}}(t)})):[]},this.getName=function(){return{name:W}},this.setCurrentAudioTrack=dt,this.getAudioTracks=function(){return E||[]},this.getCurrentAudioTrack=function(){return I}}Object(n.h)(Y.prototype,f.a),Y.getName=function(){return{name:"html5"}};e.default=Y;var K=220001},,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,i){"use strict";i.d(e,"a",(function(){return o}));var n=i(2);function o(t){var e=[],i=(t=Object(n.i)(t)).split("\r\n\r\n");1===i.length&&(i=t.split("\n\n"));for(var o=0;o0&&(o=0),i.length>o+1&&i[o+1]){var a=i[o],r=a.indexOf(" --\x3e ");r>0&&(e.begin=Object(n.g)(a.substr(0,r)),e.end=Object(n.g)(a.substr(r+5)),e.text=i.slice(o+1).join("\r\n"))}return e}},function(t,e,i){"use strict";i.d(e,"a",(function(){return o})),i.d(e,"b",(function(){return a}));var n=i(5);function o(t){var e=-1;return t>=1280?e=7:t>=960?e=6:t>=800?e=5:t>=640?e=4:t>=540?e=3:t>=420?e=2:t>=320?e=1:t>=250&&(e=0),e}function a(t,e){var i="jw-breakpoint-"+e;Object(n.p)(t,/jw-breakpoint--?\d+/,i)}},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),a=n.sources.map((function(t){return"/*# sourceURL="+n.sourceRoot+t+" */"}));return[i].concat(a).concat([o]).join("\n")}var r;return[i].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+i+"}":i})).join("")},e.i=function(t,i){"string"==typeof t&&(t=[[null,t,""]]);for(var n={},o=0;o1&&(i+=" ["+e+"]")),{label:i,unknownCount:e}}i.d(e,"a",(function(){return n})),i.d(e,"b",(function(){return o}))},function(t,e,i){"use strict";function n(t){return new Promise((function(e,i){if(t.paused)return i(o("NotAllowedError",0,"play() failed."));var n=function(){t.removeEventListener("play",a),t.removeEventListener("playing",r),t.removeEventListener("pause",r),t.removeEventListener("abort",r),t.removeEventListener("error",r)},a=function(){t.addEventListener("playing",r),t.addEventListener("abort",r),t.addEventListener("error",r),t.addEventListener("pause",r)},r=function(t){if(n(),"playing"===t.type)e();else{var a='The play() request was interrupted by a "'.concat(t.type,'" event.');"error"===t.type?i(o("NotSupportedError",9,a)):i(o("AbortError",20,a))}};t.addEventListener("play",a)}))}function o(t,e,i){var n=new Error(i);return n.name=t,n.code=e,n}i.d(e,"a",(function(){return n}))},function(t,e,i){"use strict";function n(t,e){return t!==1/0&&Math.abs(t)>=Math.max(a(e),0)}function o(t,e){var i="VOD";return t===1/0?i="LIVE":t<0&&(i=n(t,a(e))?"DVR":"LIVE"),i}function a(t){return void 0===t?120:Math.max(t,0)}i.d(e,"a",(function(){return n})),i.d(e,"b",(function(){return o}))},function(t,e,i){"use strict";var n=i(64),o=i(16),a=i(22),r=i(4),s=i(57),l=i(2),c=i(1);function u(t){throw new c.n(null,t)}function d(t,e,n){t.xhr=Object(a.a)(t.file,(function(a){!function(t,e,n,a){var d,p,w=t.responseXML?t.responseXML.firstChild:null;if(w)for("xml"===Object(r.b)(w)&&(w=w.nextSibling);w.nodeType===w.COMMENT_NODE;)w=w.nextSibling;try{if(w&&"tt"===Object(r.b)(w))d=function(t){t||u(306007);var e=[],i=t.getElementsByTagName("p"),n=30,o=t.getElementsByTagName("tt");if(o&&o[0]){var a=parseFloat(o[0].getAttribute("ttp:frameRate"));isNaN(a)||(n=a)}i||u(306005),i.length||(i=t.getElementsByTagName("tt:p")).length||(i=t.getElementsByTagName("tts:p"));for(var r=0;r\s+<").replace(/(<\/?)tts?:/g,"$1").replace(//g,"\r\n");if(w){var f=s.getAttribute("begin"),g=s.getAttribute("dur"),j=s.getAttribute("end"),b={begin:Object(l.g)(f,n),text:w};j?b.end=Object(l.g)(j,n):g&&(b.end=b.begin+Object(l.g)(g,n)),e.push(b)}}return e.length||u(306005),e}(t.responseXML),p=h(d),delete e.xhr,n(p);else{var f=t.responseText;f.indexOf("WEBVTT")>=0?i.e(10).then(function(t){return i(92).default}.bind(null,i)).catch(Object(o.c)(301131)).then((function(t){var i=new t(window);p=[],i.oncue=function(t){p.push(t)},i.onflush=function(){delete e.xhr,n(p)},i.parse(f)})).catch((function(t){delete e.xhr,a(Object(c.v)(null,c.b,t))})):(d=Object(s.a)(f),p=h(d),delete e.xhr,n(p))}}catch(t){delete e.xhr,a(Object(c.v)(null,c.b,t))}}(a,t,e,n)}),(function(t,e,i,o){n(Object(c.u)(o,c.b))}))}function p(t){t&&t.forEach((function(t){var e=t.xhr;e&&(e.onload=null,e.onreadystatechange=null,e.onerror=null,"abort"in e&&e.abort()),delete t.xhr}))}function h(t){return t.map((function(t){return new n.a(t.begin,t.end,t.text)}))}i.d(e,"c",(function(){return d})),i.d(e,"a",(function(){return p})),i.d(e,"b",(function(){return h}))},function(t,e,i){"use strict";var n=window.VTTCue;function o(t){if("string"!=typeof t)return!1;return!!{start:!0,middle:!0,end:!0,left:!0,right:!0}[t.toLowerCase()]&&t.toLowerCase()}if(!n){(n=function(t,e,i){var n=this;n.hasBeenReset=!1;var a="",r=!1,s=t,l=e,c=i,u=null,d="",p=!0,h="auto",w="start",f="auto",g=100,j="middle";Object.defineProperty(n,"id",{enumerable:!0,get:function(){return a},set:function(t){a=""+t}}),Object.defineProperty(n,"pauseOnExit",{enumerable:!0,get:function(){return r},set:function(t){r=!!t}}),Object.defineProperty(n,"startTime",{enumerable:!0,get:function(){return s},set:function(t){if("number"!=typeof t)throw new TypeError("Start time must be set to a number.");s=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"endTime",{enumerable:!0,get:function(){return l},set:function(t){if("number"!=typeof t)throw new TypeError("End time must be set to a number.");l=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"text",{enumerable:!0,get:function(){return c},set:function(t){c=""+t,this.hasBeenReset=!0}}),Object.defineProperty(n,"region",{enumerable:!0,get:function(){return u},set:function(t){u=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"vertical",{enumerable:!0,get:function(){return d},set:function(t){var e=function(t){return"string"==typeof t&&(!!{"":!0,lr:!0,rl:!0}[t.toLowerCase()]&&t.toLowerCase())}(t);if(!1===e)throw new SyntaxError("An invalid or illegal string was specified.");d=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"snapToLines",{enumerable:!0,get:function(){return p},set:function(t){p=!!t,this.hasBeenReset=!0}}),Object.defineProperty(n,"line",{enumerable:!0,get:function(){return h},set:function(t){if("number"!=typeof t&&"auto"!==t)throw new SyntaxError("An invalid number or illegal string was specified.");h=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"lineAlign",{enumerable:!0,get:function(){return w},set:function(t){var e=o(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");w=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"position",{enumerable:!0,get:function(){return f},set:function(t){if(t<0||t>100)throw new Error("Position must be between 0 and 100.");f=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"size",{enumerable:!0,get:function(){return g},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");g=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"align",{enumerable:!0,get:function(){return j},set:function(t){var e=o(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");j=e,this.hasBeenReset=!0}}),n.displayState=void 0}).prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)}}e.a=n},function(t,e,i){var n=i(66);"string"==typeof n&&(n=[["all-players",n,""]]),i(35).style(n,"all-players"),n.locals&&(t.exports=n.locals)},function(t,e,i){(t.exports=i(59)(!1)).push([t.i,'.jw-reset{text-align:left;direction:ltr}.jw-reset-text,.jw-reset{color:inherit;background-color:transparent;padding:0;margin:0;float:none;font-family:Arial,Helvetica,sans-serif;font-size:1em;line-height:1em;list-style:none;text-transform:none;vertical-align:baseline;border:0;font-variant:inherit;font-stretch:inherit;-webkit-tap-highlight-color:rgba(255,255,255,0)}body .jw-error,body .jwplayer.jw-state-error{height:100%;width:100%}.jw-title{position:absolute;top:0}.jw-background-color{background:rgba(0,0,0,0.4)}.jw-text{color:rgba(255,255,255,0.8)}.jw-knob{color:rgba(255,255,255,0.8);background-color:#fff}.jw-button-color{color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):focus,:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):hover{color:#fff}.jw-toggle{color:#fff}.jw-toggle.jw-off{color:rgba(255,255,255,0.8)}.jw-toggle.jw-off:focus{color:#fff}.jw-toggle:focus{outline:none}:not(.jw-flag-touch) .jw-toggle.jw-off:hover{color:#fff}.jw-rail{background:rgba(255,255,255,0.3)}.jw-buffer{background:rgba(255,255,255,0.3)}.jw-progress{background:#f2f2f2}.jw-time-tip,.jw-volume-tip{border:0}.jw-slider-volume.jw-volume-tip.jw-background-color.jw-slider-vertical{background:none}.jw-skip{padding:.5em;outline:none}.jw-skip .jw-skiptext,.jw-skip .jw-skip-icon{color:rgba(255,255,255,0.8)}.jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skip.jw-skippable:focus .jw-skip-icon{color:#fff}.jw-icon-cast google-cast-launcher{--connected-color:#fff;--disconnected-color:rgba(255,255,255,0.8)}.jw-icon-cast google-cast-launcher:focus{outline:none}.jw-icon-cast google-cast-launcher.jw-off{--connected-color:rgba(255,255,255,0.8)}.jw-icon-cast:focus google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-icon-cast:hover google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-nextup-container{bottom:2.5em;padding:5px .5em}.jw-nextup{border-radius:0}.jw-color-active{color:#fff;stroke:#fff;border-color:#fff}:not(.jw-flag-touch) .jw-color-active-hover:hover,:not(.jw-flag-touch) .jw-color-active-hover:focus{color:#fff;stroke:#fff;border-color:#fff}.jw-color-inactive{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-color-inactive-hover:hover{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}.jw-option{color:rgba(255,255,255,0.8)}.jw-option.jw-active-option{color:#fff;background-color:rgba(255,255,255,0.1)}:not(.jw-flag-touch) .jw-option:hover{color:#fff}.jwplayer{width:100%;font-size:16px;position:relative;display:block;min-height:0;overflow:hidden;box-sizing:border-box;font-family:Arial,Helvetica,sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.jwplayer *{box-sizing:inherit}.jwplayer.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jwplayer.jw-flag-aspect-mode{height:auto !important}.jwplayer.jw-flag-aspect-mode .jw-aspect{display:block}.jwplayer .jw-aspect{display:none}.jwplayer .jw-swf{outline:none}.jw-media,.jw-preview{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}.jw-media{overflow:hidden;cursor:pointer}.jw-plugin{position:absolute;bottom:66px}.jw-breakpoint-7 .jw-plugin{bottom:132px}.jw-plugin .jw-banner{max-width:100%;opacity:0;cursor:pointer;position:absolute;margin:auto auto 0;left:0;right:0;bottom:0;display:block}.jw-preview,.jw-captions,.jw-title{pointer-events:none}.jw-media,.jw-logo{pointer-events:all}.jw-wrapper{background-color:#000;position:absolute;top:0;left:0;right:0;bottom:0}.jw-hidden-accessibility{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.jw-contract-trigger::before{content:"";overflow:hidden;width:200%;height:200%;display:block;position:absolute;top:0;left:0}.jwplayer .jw-media video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:auto;background:transparent}.jwplayer .jw-media video::-webkit-media-controls-start-playback-button{display:none}.jwplayer.jw-stretch-uniform .jw-media video{object-fit:contain}.jwplayer.jw-stretch-none .jw-media video{object-fit:none}.jwplayer.jw-stretch-fill .jw-media video{object-fit:cover}.jwplayer.jw-stretch-exactfit .jw-media video{object-fit:fill}.jw-preview{position:absolute;display:none;opacity:1;visibility:visible;width:100%;height:100%;background:#000 no-repeat 50% 50%}.jwplayer .jw-preview,.jw-error .jw-preview{background-size:contain}.jw-stretch-none .jw-preview{background-size:auto auto}.jw-stretch-fill .jw-preview{background-size:cover}.jw-stretch-exactfit .jw-preview{background-size:100% 100%}.jw-title{display:none;padding-top:20px;width:100%;z-index:1}.jw-title-primary,.jw-title-secondary{color:#fff;padding-left:20px;padding-right:20px;padding-bottom:.5em;overflow:hidden;text-overflow:ellipsis;direction:unset;white-space:nowrap;width:100%}.jw-title-primary{font-size:1.625em}.jw-breakpoint-2 .jw-title-primary,.jw-breakpoint-3 .jw-title-primary{font-size:1.5em}.jw-flag-small-player .jw-title-primary{font-size:1.25em}.jw-flag-small-player .jw-title-secondary,.jw-title-secondary:empty{display:none}.jw-captions{position:absolute;width:100%;height:100%;text-align:center;display:none;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-decoration:none;pointer-events:none;overflow:hidden;top:0}.jw-captions.jw-captions-enabled{display:block}.jw-captions-window{display:none;padding:.25em;border-radius:.25em}.jw-captions-window.jw-captions-window-active{display:inline-block}.jw-captions-text{display:inline-block;color:#fff;background-color:#000;word-wrap:normal;word-break:normal;white-space:pre-line;font-style:normal;font-weight:normal;text-align:center;text-decoration:none}.jw-text-track-display{font-size:inherit;line-height:1.5}.jw-text-track-cue{background-color:rgba(0,0,0,0.5);color:#fff;padding:.1em .3em}.jwplayer video::-webkit-media-controls{display:none;justify-content:flex-start}.jwplayer video::-webkit-media-text-track-display{min-width:-webkit-min-content}.jwplayer video::cue{background-color:rgba(0,0,0,0.5)}.jwplayer video::-webkit-media-controls-panel-container{display:none}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing) .jw-captions,.jwplayer.jw-flag-media-audio.jw-state-playing .jw-captions,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden) .jw-captions{max-height:calc(100% - 60px)}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-flag-media-audio.jw-state-playing:not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container{max-height:calc(100% - 60px)}.jw-logo{position:absolute;margin:20px;cursor:pointer;pointer-events:all;background-repeat:no-repeat;background-size:contain;top:auto;right:auto;left:auto;bottom:auto;outline:none}.jw-logo.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-flag-audio-player .jw-logo{display:none}.jw-logo-top-right{top:0;right:0}.jw-logo-top-left{top:0;left:0}.jw-logo-bottom-left{left:0}.jw-logo-bottom-right{right:0}.jw-logo-bottom-left,.jw-logo-bottom-right{bottom:44px;transition:bottom 150ms cubic-bezier(0, .25, .25, 1)}.jw-state-idle .jw-logo{z-index:1}.jw-state-setup .jw-wrapper{background-color:inherit}.jw-state-setup .jw-logo,.jw-state-setup .jw-controls,.jw-state-setup .jw-controls-backdrop{visibility:hidden}span.jw-break{display:block}body .jw-error,body .jwplayer.jw-state-error{background-color:#333;color:#fff;font-size:16px;display:table;opacity:1;position:relative}body .jw-error .jw-display,body .jwplayer.jw-state-error .jw-display{display:none}body .jw-error .jw-media,body .jwplayer.jw-state-error .jw-media{cursor:default}body .jw-error .jw-preview,body .jwplayer.jw-state-error .jw-preview{background-color:#333}body .jw-error .jw-error-msg,body .jwplayer.jw-state-error .jw-error-msg{background-color:#000;border-radius:2px;display:flex;flex-direction:row;align-items:stretch;padding:20px}body .jw-error .jw-error-msg .jw-icon,body .jwplayer.jw-state-error .jw-error-msg .jw-icon{height:30px;width:30px;margin-right:20px;flex:0 0 auto;align-self:center}body .jw-error .jw-error-msg .jw-icon:empty,body .jwplayer.jw-state-error .jw-error-msg .jw-icon:empty{display:none}body .jw-error .jw-error-msg .jw-info-container,body .jwplayer.jw-state-error .jw-error-msg .jw-info-container{margin:0;padding:0}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg{flex-direction:column}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text{text-align:center}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon{flex:.5 0 auto;margin-right:0;margin-bottom:20px}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break{display:inline}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break:before{content:" "}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg{height:100%;width:100%;top:0;position:absolute;left:0;background:#000;-webkit-transform:none;transform:none;padding:4px 16px;z-index:1}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg.jw-info-overlay{max-width:none;max-height:none}body .jwplayer.jw-state-error .jw-title,.jw-state-idle .jw-title,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-title{display:block}body .jwplayer.jw-state-error .jw-preview,.jw-state-idle .jw-preview,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-preview{display:block}.jw-state-idle .jw-captions,.jwplayer.jw-state-complete .jw-captions,body .jwplayer.jw-state-error .jw-captions{display:none}.jw-state-idle video::-webkit-media-text-track-container,.jwplayer.jw-state-complete video::-webkit-media-text-track-container,body .jwplayer.jw-state-error video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-fullscreen{width:100% !important;height:100% !important;top:0;right:0;bottom:0;left:0;z-index:1000;margin:0;position:fixed}body .jwplayer.jw-flag-flash-blocked .jw-title{display:block}.jwplayer.jw-flag-controls-hidden .jw-media{cursor:default}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:45px}.jw-flag-floating{background-size:cover;background-color:#000}.jw-flag-floating .jw-wrapper{position:fixed;z-index:2147483647;-webkit-animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;top:auto;bottom:1rem;left:auto;right:1rem;max-width:400px;max-height:400px;margin:0 auto}@media screen and (max-width:480px){.jw-flag-floating .jw-wrapper{width:100%;left:0;right:0}}.jw-flag-floating .jw-wrapper .jw-media{touch-action:none}@media screen and (max-device-width:480px) and (orientation:portrait){.jw-flag-touch.jw-flag-floating .jw-wrapper{-webkit-animation:none;animation:none;top:62px;bottom:auto;left:0;right:0;max-width:none;max-height:none}}.jw-flag-floating .jw-float-icon{pointer-events:all;cursor:pointer;display:none}.jw-flag-floating .jw-float-icon .jw-svg-icon{-webkit-filter:drop-shadow(0 0 1px #000);filter:drop-shadow(0 0 1px #000)}.jw-flag-floating.jw-floating-dismissible .jw-dismiss-icon{display:none}.jw-flag-floating.jw-floating-dismissible.jw-flag-ads .jw-float-icon{display:flex}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-logo,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-logo{display:none}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-float-icon,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-float-icon{display:flex}.jw-float-icon{display:none;position:absolute;top:3px;right:5px;align-items:center;justify-content:center}@-webkit-keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.jw-flag-top{margin-top:2em;overflow:visible}.jw-top{height:2em;line-height:2;pointer-events:none;text-align:center;opacity:.8;position:absolute;top:-2em;width:100%}.jw-top .jw-icon{cursor:pointer;pointer-events:all;height:auto;width:auto}.jw-top .jw-text{color:#555}',""])},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e,i){var n=i(91);"string"==typeof n&&(n=[["all-players",n,""]]),i(35).style(n,"all-players"),n.locals&&(t.exports=n.locals)},function(t,e,i){(t.exports=i(59)(!1)).push([t.i,'.jw-overlays,.jw-controls,.jw-controls-backdrop,.jw-flag-small-player .jw-settings-menu,.jw-settings-submenu{height:100%;width:100%}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-settings-menu .jw-icon.jw-button-color::after{position:absolute;right:0}.jw-overlays,.jw-controls,.jw-controls-backdrop,.jw-settings-item-active::before{top:0;position:absolute;left:0}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-settings-menu .jw-icon.jw-button-color::after{position:absolute;bottom:0;left:0}.jw-nextup-close{position:absolute;top:0;right:0}.jw-overlays,.jw-controls,.jw-flag-small-player .jw-settings-menu{position:absolute;bottom:0;right:0}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-time-tip::after,.jw-settings-menu .jw-icon.jw-button-color::after,.jw-text-live::before,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{content:"";display:block}.jw-svg-icon{height:24px;width:24px;fill:currentColor;pointer-events:none}.jw-icon{height:44px;width:44px;background-color:transparent;outline:none}.jw-icon.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-icon-airplay .jw-svg-icon-airplay-off{display:none}.jw-off.jw-icon-airplay .jw-svg-icon-airplay-off{display:block}.jw-icon-airplay .jw-svg-icon-airplay-on{display:block}.jw-off.jw-icon-airplay .jw-svg-icon-airplay-on{display:none}.jw-icon-cc .jw-svg-icon-cc-off{display:none}.jw-off.jw-icon-cc .jw-svg-icon-cc-off{display:block}.jw-icon-cc .jw-svg-icon-cc-on{display:block}.jw-off.jw-icon-cc .jw-svg-icon-cc-on{display:none}.jw-icon-fullscreen .jw-svg-icon-fullscreen-off{display:none}.jw-off.jw-icon-fullscreen .jw-svg-icon-fullscreen-off{display:block}.jw-icon-fullscreen .jw-svg-icon-fullscreen-on{display:block}.jw-off.jw-icon-fullscreen .jw-svg-icon-fullscreen-on{display:none}.jw-icon-volume .jw-svg-icon-volume-0{display:none}.jw-off.jw-icon-volume .jw-svg-icon-volume-0{display:block}.jw-icon-volume .jw-svg-icon-volume-100{display:none}.jw-full.jw-icon-volume .jw-svg-icon-volume-100{display:block}.jw-icon-volume .jw-svg-icon-volume-50{display:block}.jw-off.jw-icon-volume .jw-svg-icon-volume-50,.jw-full.jw-icon-volume .jw-svg-icon-volume-50{display:none}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon[aria-checked="true"]::after,.jw-settings-open .jw-icon-settings::after,.jw-icon-volume.jw-open::after{opacity:1}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-cc,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-settings,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-audio-tracks,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-hd,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-settings-sharing,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-fullscreen,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player).jw-flag-cast-available .jw-icon-airplay,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player).jw-flag-cast-available .jw-icon-cast{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-volume,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-text-live{bottom:6px}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-volume::after{display:none}.jw-overlays,.jw-controls{pointer-events:none}.jw-controls-backdrop{display:block;background:linear-gradient(to bottom, transparent, rgba(0,0,0,0.4) 77%, rgba(0,0,0,0.4) 100%) 100% 100% / 100% 240px no-repeat transparent;transition:opacity 250ms cubic-bezier(0, .25, .25, 1),background-size 250ms cubic-bezier(0, .25, .25, 1);pointer-events:none}.jw-overlays{cursor:auto}.jw-controls{overflow:hidden}.jw-flag-small-player .jw-controls{text-align:center}.jw-text{height:1em;font-family:Arial,Helvetica,sans-serif;font-size:.75em;font-style:normal;font-weight:normal;color:#fff;text-align:center;font-variant:normal;font-stretch:normal}.jw-controlbar,.jw-skip,.jw-display-icon-container .jw-icon,.jw-nextup-container,.jw-autostart-mute,.jw-overlays .jw-plugin{pointer-events:all}.jwplayer .jw-display-icon-container,.jw-error .jw-display-icon-container{width:auto;height:auto;box-sizing:content-box}.jw-display{display:table;height:100%;padding:57px 0;position:relative;width:100%}.jw-flag-dragging .jw-display{display:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-display-container{display:table-cell;height:100%;text-align:center;vertical-align:middle}.jw-display-controls{display:inline-block}.jwplayer .jw-display-icon-container{float:left}.jw-display-icon-container{display:inline-block;padding:5.5px;margin:0 22px}.jw-display-icon-container .jw-icon{height:75px;width:75px;cursor:pointer;display:flex;justify-content:center;align-items:center}.jw-display-icon-container .jw-icon .jw-svg-icon{height:33px;width:33px;padding:0;position:relative}.jw-display-icon-container .jw-icon .jw-svg-icon-rewind{padding:.2em .05em}.jw-breakpoint--1 .jw-nextup-container{display:none}.jw-breakpoint-0 .jw-display-icon-next,.jw-breakpoint--1 .jw-display-icon-next,.jw-breakpoint-0 .jw-display-icon-rewind,.jw-breakpoint--1 .jw-display-icon-rewind{display:none}.jw-breakpoint-0 .jw-display .jw-icon,.jw-breakpoint--1 .jw-display .jw-icon,.jw-breakpoint-0 .jw-display .jw-svg-icon,.jw-breakpoint--1 .jw-display .jw-svg-icon{width:44px;height:44px;line-height:44px}.jw-breakpoint-0 .jw-display .jw-icon:before,.jw-breakpoint--1 .jw-display .jw-icon:before,.jw-breakpoint-0 .jw-display .jw-svg-icon:before,.jw-breakpoint--1 .jw-display .jw-svg-icon:before{width:22px;height:22px}.jw-breakpoint-1 .jw-display .jw-icon,.jw-breakpoint-1 .jw-display .jw-svg-icon{width:44px;height:44px;line-height:44px}.jw-breakpoint-1 .jw-display .jw-icon:before,.jw-breakpoint-1 .jw-display .jw-svg-icon:before{width:22px;height:22px}.jw-breakpoint-1 .jw-display .jw-icon.jw-icon-rewind:before{width:33px;height:33px}.jw-breakpoint-2 .jw-display .jw-icon,.jw-breakpoint-3 .jw-display .jw-icon,.jw-breakpoint-2 .jw-display .jw-svg-icon,.jw-breakpoint-3 .jw-display .jw-svg-icon{width:77px;height:77px;line-height:77px}.jw-breakpoint-2 .jw-display .jw-icon:before,.jw-breakpoint-3 .jw-display .jw-icon:before,.jw-breakpoint-2 .jw-display .jw-svg-icon:before,.jw-breakpoint-3 .jw-display .jw-svg-icon:before{width:38.5px;height:38.5px}.jw-breakpoint-4 .jw-display .jw-icon,.jw-breakpoint-5 .jw-display .jw-icon,.jw-breakpoint-6 .jw-display .jw-icon,.jw-breakpoint-7 .jw-display .jw-icon,.jw-breakpoint-4 .jw-display .jw-svg-icon,.jw-breakpoint-5 .jw-display .jw-svg-icon,.jw-breakpoint-6 .jw-display .jw-svg-icon,.jw-breakpoint-7 .jw-display .jw-svg-icon{width:88px;height:88px;line-height:88px}.jw-breakpoint-4 .jw-display .jw-icon:before,.jw-breakpoint-5 .jw-display .jw-icon:before,.jw-breakpoint-6 .jw-display .jw-icon:before,.jw-breakpoint-7 .jw-display .jw-icon:before,.jw-breakpoint-4 .jw-display .jw-svg-icon:before,.jw-breakpoint-5 .jw-display .jw-svg-icon:before,.jw-breakpoint-6 .jw-display .jw-svg-icon:before,.jw-breakpoint-7 .jw-display .jw-svg-icon:before{width:44px;height:44px}.jw-controlbar{display:flex;flex-flow:row wrap;align-items:center;justify-content:center;position:absolute;left:0;bottom:0;width:100%;border:none;border-radius:0;background-size:auto;box-shadow:none;max-height:72px;transition:250ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s}.jw-breakpoint-7 .jw-controlbar{max-height:140px}.jw-breakpoint-7 .jw-controlbar .jw-button-container{padding:0 48px 20px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-tooltip{margin-bottom:-7px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume .jw-overlay{padding-bottom:40%}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-text{font-size:1em}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-text.jw-text-elapsed{justify-content:flex-end}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-inline,.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume{height:60px;width:60px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-inline .jw-svg-icon,.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-controlbar .jw-slider-time{padding:0 60px;height:34px}.jw-breakpoint-7 .jw-controlbar .jw-slider-time .jw-slider-container{height:10px}.jw-controlbar .jw-button-image{background:no-repeat 50% 50%;background-size:contain;max-height:24px}.jw-controlbar .jw-spacer{flex:1 1 auto;align-self:stretch}.jw-controlbar .jw-icon.jw-button-color:hover{color:#fff}.jw-button-container{display:flex;flex-flow:row nowrap;flex:1 1 auto;align-items:center;justify-content:center;width:100%;padding:0 12px}.jw-slider-horizontal{background-color:transparent}.jw-icon-inline{position:relative}.jw-icon-inline,.jw-icon-tooltip{height:44px;width:44px;align-items:center;display:flex;justify-content:center}.jw-icon-inline:not(.jw-text),.jw-icon-tooltip,.jw-slider-horizontal{cursor:pointer}.jw-text-elapsed,.jw-text-duration{justify-content:flex-start;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.jw-icon-tooltip{position:relative}.jw-knob:hover,.jw-icon-inline:hover,.jw-icon-tooltip:hover,.jw-icon-display:hover,.jw-option:before:hover{color:#fff}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{pointer-events:none}.jw-icon-cast{display:none;margin:0;padding:0}.jw-icon-cast google-cast-launcher{background-color:transparent;border:none;padding:0;width:24px;height:24px;cursor:pointer}.jw-icon-inline.jw-icon-volume{display:none}.jwplayer .jw-text-countdown{display:none}.jw-flag-small-player .jw-display{padding-top:0;padding-bottom:0}.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-rewind,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-next,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-playback{display:none}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop{opacity:0}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-countdown{display:flex}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-duration,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-duration{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-text-countdown,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-related-btn,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-slider-volume{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-controlbar{flex-direction:column-reverse}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-button-container{height:30px}.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-volume,.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-fullscreen{display:none}.jwplayer:not(.jw-breakpoint-0) .jw-text-duration:before,.jwplayer:not(.jw-breakpoint--1) .jw-text-duration:before{content:"/";padding-right:1ch;padding-left:1ch}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar{will-change:transform}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar .jw-text{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.jw-slider-container{display:flex;align-items:center;position:relative;touch-action:none}.jw-rail,.jw-buffer,.jw-progress{position:absolute;cursor:pointer}.jw-progress{background-color:#f2f2f2}.jw-rail{background-color:rgba(255,255,255,0.3)}.jw-buffer{background-color:rgba(255,255,255,0.3)}.jw-knob{height:13px;width:13px;background-color:#fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,0.4);opacity:1;pointer-events:none;position:absolute;-webkit-transform:translate(-50%, -50%) scale(0);transform:translate(-50%, -50%) scale(0);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform}.jw-flag-dragging .jw-slider-time .jw-knob,.jw-icon-volume:active .jw-slider-volume .jw-knob{box-shadow:0 0 26px rgba(0,0,0,0.2),0 0 10px rgba(0,0,0,0.4),0 0 0 6px rgba(255,255,255,0.2)}.jw-slider-horizontal,.jw-slider-vertical{display:flex}.jw-slider-horizontal .jw-slider-container{height:5px;width:100%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue,.jw-slider-horizontal .jw-knob{top:50%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue{-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress{height:5px}.jw-slider-horizontal .jw-rail{width:100%}.jw-slider-vertical{align-items:center;flex-direction:column}.jw-slider-vertical .jw-slider-container{height:88px;width:5px}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress,.jw-slider-vertical .jw-knob{left:50%}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress{height:100%;width:5px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out;bottom:0}.jw-slider-vertical .jw-knob{-webkit-transform:translate(-50%, 50%);transform:translate(-50%, 50%)}.jw-slider-time.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-slider-time,.jw-flag-audio-player .jw-slider-volume{height:17px;width:100%;align-items:center;background:transparent none;padding:0 12px}.jw-slider-time .jw-cue{background-color:rgba(33,33,33,0.8);cursor:pointer;position:absolute;width:6px}.jw-slider-time,.jw-horizontal-volume-container{z-index:1;outline:none}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail,.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer,.jw-slider-time .jw-progress,.jw-horizontal-volume-container .jw-progress,.jw-slider-time .jw-cue,.jw-horizontal-volume-container .jw-cue{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;-webkit-transform:translate(0, -50%) scale(1, .6);transform:translate(0, -50%) scale(1, .6);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out}.jw-slider-time:hover .jw-rail,.jw-horizontal-volume-container:hover .jw-rail,.jw-slider-time:focus .jw-rail,.jw-horizontal-volume-container:focus .jw-rail,.jw-flag-dragging .jw-slider-time .jw-rail,.jw-flag-dragging .jw-horizontal-volume-container .jw-rail,.jw-flag-touch .jw-slider-time .jw-rail,.jw-flag-touch .jw-horizontal-volume-container .jw-rail,.jw-slider-time:hover .jw-buffer,.jw-horizontal-volume-container:hover .jw-buffer,.jw-slider-time:focus .jw-buffer,.jw-horizontal-volume-container:focus .jw-buffer,.jw-flag-dragging .jw-slider-time .jw-buffer,.jw-flag-dragging .jw-horizontal-volume-container .jw-buffer,.jw-flag-touch .jw-slider-time .jw-buffer,.jw-flag-touch .jw-horizontal-volume-container .jw-buffer,.jw-slider-time:hover .jw-progress,.jw-horizontal-volume-container:hover .jw-progress,.jw-slider-time:focus .jw-progress,.jw-horizontal-volume-container:focus .jw-progress,.jw-flag-dragging .jw-slider-time .jw-progress,.jw-flag-dragging .jw-horizontal-volume-container .jw-progress,.jw-flag-touch .jw-slider-time .jw-progress,.jw-flag-touch .jw-horizontal-volume-container .jw-progress,.jw-slider-time:hover .jw-cue,.jw-horizontal-volume-container:hover .jw-cue,.jw-slider-time:focus .jw-cue,.jw-horizontal-volume-container:focus .jw-cue,.jw-flag-dragging .jw-slider-time .jw-cue,.jw-flag-dragging .jw-horizontal-volume-container .jw-cue,.jw-flag-touch .jw-slider-time .jw-cue,.jw-flag-touch .jw-horizontal-volume-container .jw-cue{-webkit-transform:translate(0, -50%) scale(1, 1);transform:translate(0, -50%) scale(1, 1)}.jw-slider-time:hover .jw-knob,.jw-horizontal-volume-container:hover .jw-knob,.jw-slider-time:focus .jw-knob,.jw-horizontal-volume-container:focus .jw-knob{-webkit-transform:translate(-50%, -50%) scale(1);transform:translate(-50%, -50%) scale(1)}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail{background-color:rgba(255,255,255,0.2)}.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer{background-color:rgba(255,255,255,0.4)}.jw-flag-touch .jw-slider-time::before,.jw-flag-touch .jw-horizontal-volume-container::before{height:44px;width:100%;content:"";position:absolute;display:block;bottom:calc(100% - 17px);left:0}.jw-slider-time.jw-tab-focus:focus .jw-rail,.jw-horizontal-volume-container.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time{height:17px;padding:0}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-slider-container{height:10px}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-knob{border-radius:0;border:1px solid rgba(0,0,0,0.75);height:12px;width:10px}.jw-modal{width:284px}.jw-breakpoint-7 .jw-modal,.jw-breakpoint-6 .jw-modal,.jw-breakpoint-5 .jw-modal{height:232px}.jw-breakpoint-4 .jw-modal,.jw-breakpoint-3 .jw-modal{height:192px}.jw-breakpoint-2 .jw-modal,.jw-flag-small-player .jw-modal{bottom:0;right:0;height:100%;width:100%;max-height:none;max-width:none;z-index:2}.jwplayer .jw-rightclick{display:none;position:absolute;white-space:nowrap}.jwplayer .jw-rightclick.jw-open{display:block}.jwplayer .jw-rightclick .jw-rightclick-list{border-radius:1px;list-style:none;margin:0;padding:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item{background-color:rgba(0,0,0,0.8);border-bottom:1px solid #444;margin:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo{color:#fff;display:inline-flex;padding:0 10px 0 0;vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo .jw-svg-icon{height:20px;width:20px}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-link{border:none;color:#fff;display:block;font-size:11px;line-height:1em;padding:15px 23px;text-align:start;text-decoration:none;width:100%}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:last-child{border-bottom:none}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:hover{cursor:pointer}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured{vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link{color:#fff}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link span{color:#fff}.jwplayer .jw-rightclick .jw-info-overlay-item,.jwplayer .jw-rightclick .jw-share-item,.jwplayer .jw-rightclick .jw-shortcuts-item{border:none;background-color:transparent;outline:none;cursor:pointer}.jw-icon-tooltip.jw-open .jw-overlay{opacity:1;pointer-events:auto;transition-delay:0s}.jw-icon-tooltip.jw-open .jw-overlay:focus{outline:none}.jw-icon-tooltip.jw-open .jw-overlay:focus.jw-tab-focus{outline:solid 2px #4d90fe}.jw-slider-time .jw-overlay:before{height:1em;top:auto}.jw-slider-time .jw-icon-tooltip.jw-open .jw-overlay{pointer-events:none}.jw-volume-tip{padding:13px 0 26px}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{height:auto;width:100%;box-shadow:0 0 10px rgba(0,0,0,0.4);color:#fff;display:block;margin:0 0 14px;pointer-events:none;position:relative;z-index:0}.jw-time-tip::after,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{top:100%;position:absolute;left:50%;height:14px;width:14px;border-radius:1px;background-color:currentColor;-webkit-transform-origin:75% 50%;transform-origin:75% 50%;-webkit-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);z-index:-1}.jw-time-tip .jw-text,.jw-controlbar .jw-tooltip .jw-text,.jw-settings-menu .jw-tooltip .jw-text{background-color:#fff;border-radius:1px;color:#000;font-size:10px;height:auto;line-height:1;padding:7px 10px;display:inline-block;min-width:100%;vertical-align:middle}.jw-controlbar .jw-overlay{position:absolute;bottom:100%;left:50%;margin:0;min-height:44px;min-width:44px;opacity:0;pointer-events:none;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s, 150ms;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);width:100%;z-index:1}.jw-controlbar .jw-overlay .jw-contents{position:relative}.jw-controlbar .jw-option{position:relative;white-space:nowrap;cursor:pointer;list-style:none;height:1.5em;font-family:inherit;line-height:1.5em;padding:0 .5em;font-size:.8em;margin:0}.jw-controlbar .jw-option::before{padding-right:.125em}.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{position:absolute;bottom:100%;left:50%;opacity:0;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:100ms 0s cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility, -webkit-transform;transition-property:opacity, transform, visibility;transition-property:opacity, transform, visibility, -webkit-transform;visibility:hidden;white-space:nowrap;width:auto;z-index:1}.jw-controlbar .jw-tooltip.jw-open,.jw-settings-menu .jw-tooltip.jw-open{opacity:1;-webkit-transform:translate(-50%, -10px);transform:translate(-50%, -10px);transition-duration:150ms;transition-delay:500ms,0s,500ms;visibility:visible}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen{left:auto;right:0;-webkit-transform:translate(0, 0);transform:translate(0, 0)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen.jw-open,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen.jw-open{-webkit-transform:translate(0, -10px);transform:translate(0, -10px)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen::after,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen::after{left:auto;right:9px}.jw-tooltip-time{height:auto;width:0;bottom:100%;line-height:normal;padding:0;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jw-tooltip-time .jw-overlay{bottom:0;min-height:0;width:auto}.jw-tooltip{bottom:57px;display:none;position:absolute}.jw-tooltip .jw-text{height:100%;white-space:nowrap;text-overflow:ellipsis;direction:unset;max-width:246px;overflow:hidden}.jw-flag-audio-player .jw-tooltip{display:none}.jw-flag-small-player .jw-time-thumb{display:none}.jwplayer .jw-shortcuts-tooltip{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column;z-index:1}.jwplayer .jw-shortcuts-tooltip.jw-open{display:flex}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-close{flex:0 0 auto;margin:5px 5px 5px auto}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container{display:flex;flex:1 1 auto;flex-flow:column;font-size:12px;margin:0 20px 20px;overflow-y:auto;padding:5px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar{background-color:transparent;width:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-title{font-weight:bold}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list{display:flex;max-width:340px;margin:0 10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-tooltip-descriptions{width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row{display:flex;align-items:center;justify-content:space-between;margin:10px 0;width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-description{margin-right:10px;max-width:70%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-key{background:#fefefe;color:#333;overflow:hidden;padding:7px 10px;text-overflow:ellipsis;white-space:nowrap}.jw-skip{color:rgba(255,255,255,0.8);cursor:default;position:absolute;display:flex;right:.75em;bottom:56px;padding:.5em;border:1px solid #333;background-color:#000;align-items:center;height:2em}.jw-skip.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-skip.jw-skippable{cursor:pointer;padding:.25em .75em}.jw-skip.jw-skippable:hover{cursor:pointer;color:#fff}.jw-skip.jw-skippable .jw-skip-icon{display:inline;height:24px;width:24px;margin:0}.jw-breakpoint-7 .jw-skip{padding:1.35em 1em;bottom:130px}.jw-breakpoint-7 .jw-skip .jw-text{font-size:1em;font-weight:normal}.jw-breakpoint-7 .jw-skip .jw-icon-inline{height:30px;width:30px}.jw-breakpoint-7 .jw-skip .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-skip .jw-skip-icon{display:none;margin-left:-0.75em;padding:0 .5em;pointer-events:none}.jw-skip .jw-skip-icon .jw-svg-icon-next{display:block;padding:0}.jw-skip .jw-text,.jw-skip .jw-skip-icon{vertical-align:middle;font-size:.7em}.jw-skip .jw-text{font-weight:bold}.jw-cast{background-size:cover;display:none;height:100%;position:relative;width:100%}.jw-cast-container{background:linear-gradient(180deg, rgba(25,25,25,0.75), rgba(25,25,25,0.25), rgba(25,25,25,0));left:0;padding:20px 20px 80px;position:absolute;top:0;width:100%}.jw-cast-text{color:#fff;font-size:1.6em}.jw-breakpoint--1 .jw-cast-text,.jw-breakpoint-0 .jw-cast-text{font-size:1.15em}.jw-breakpoint-1 .jw-cast-text,.jw-breakpoint-2 .jw-cast-text,.jw-breakpoint-3 .jw-cast-text{font-size:1.3em}.jw-nextup-container{position:absolute;bottom:66px;left:0;background-color:transparent;cursor:pointer;margin:0 auto;padding:12px;pointer-events:none;right:0;text-align:right;visibility:hidden;width:100%}.jw-settings-open .jw-nextup-container,.jw-info-open .jw-nextup-container{display:none}.jw-breakpoint-7 .jw-nextup-container{padding:60px}.jw-flag-small-player .jw-nextup-container{padding:0 12px 0 0}.jw-flag-small-player .jw-nextup-container .jw-nextup-title,.jw-flag-small-player .jw-nextup-container .jw-nextup-duration,.jw-flag-small-player .jw-nextup-container .jw-nextup-close{display:none}.jw-flag-small-player .jw-nextup-container .jw-nextup-tooltip{height:30px}.jw-flag-small-player .jw-nextup-container .jw-nextup-header{font-size:12px}.jw-flag-small-player .jw-nextup-container .jw-nextup-body{justify-content:center;align-items:center;padding:.75em .3em}.jw-flag-small-player .jw-nextup-container .jw-nextup-thumbnail{width:50%}.jw-flag-small-player .jw-nextup-container .jw-nextup{max-width:65px}.jw-flag-small-player .jw-nextup-container .jw-nextup.jw-nextup-thumbnail-visible{max-width:120px}.jw-nextup{background:#333;border-radius:0;box-shadow:0 0 10px rgba(0,0,0,0.5);color:rgba(255,255,255,0.8);display:inline-block;max-width:280px;overflow:hidden;opacity:0;position:relative;width:64%;pointer-events:all;-webkit-transform:translate(0, -5px);transform:translate(0, -5px);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;transition-delay:0s}.jw-nextup:hover .jw-nextup-tooltip{color:#fff}.jw-nextup.jw-nextup-thumbnail-visible{max-width:400px}.jw-nextup.jw-nextup-thumbnail-visible .jw-nextup-thumbnail{display:block}.jw-nextup-container-visible{visibility:visible}.jw-nextup-container-visible .jw-nextup{opacity:1;-webkit-transform:translate(0, 0);transform:translate(0, 0);transition-delay:0s, 0s, 150ms}.jw-nextup-tooltip{display:flex;height:80px}.jw-nextup-thumbnail{width:120px;background-position:center;background-size:cover;flex:0 0 auto;display:none}.jw-nextup-body{flex:1 1 auto;overflow:hidden;padding:.75em .875em;display:flex;flex-flow:column wrap;justify-content:space-between}.jw-nextup-header,.jw-nextup-title{font-size:14px;line-height:1.35}.jw-nextup-header{font-weight:bold}.jw-nextup-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.jw-nextup-duration{align-self:flex-end;text-align:right;font-size:12px}.jw-nextup-close{height:24px;width:24px;border:none;color:rgba(255,255,255,0.8);cursor:pointer;margin:6px;visibility:hidden}.jw-nextup-close:hover{color:#fff}.jw-nextup-sticky .jw-nextup-close{visibility:visible}.jw-autostart-mute{position:absolute;bottom:0;right:12px;height:44px;width:44px;background-color:rgba(33,33,33,0.4);padding:5px 4px 5px 6px;display:none}.jwplayer.jw-flag-autostart:not(.jw-flag-media-audio) .jw-nextup{display:none}.jw-settings-menu{position:absolute;bottom:57px;right:12px;align-items:flex-start;background-color:#333;display:none;flex-flow:column nowrap;max-width:284px;pointer-events:auto}.jw-settings-open .jw-settings-menu{display:flex}.jw-breakpoint-7 .jw-settings-menu{bottom:130px;right:60px;max-height:none;max-width:none;height:35%;width:25%}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline{height:60px;width:60px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-tooltip .jw-text{font-size:1em}.jw-breakpoint-6 .jw-settings-menu,.jw-breakpoint-5 .jw-settings-menu{height:232px;width:284px;max-height:232px}.jw-breakpoint-4 .jw-settings-menu,.jw-breakpoint-3 .jw-settings-menu{height:192px;width:284px;max-height:192px}.jw-breakpoint-2 .jw-settings-menu{height:179px;width:284px;max-height:179px}.jw-flag-small-player .jw-settings-menu{max-width:none}.jw-settings-menu .jw-icon.jw-button-color::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon.jw-button-color[aria-checked="true"]::after{opacity:1}.jw-settings-topbar{align-items:center;background-color:rgba(0,0,0,0.4);display:flex;flex:0 0 auto;padding:3px 5px 0;width:100%}.jw-settings-topbar .jw-settings-close{margin-left:auto}.jw-settings-submenu{display:none;flex:1 1 auto;overflow-y:auto;padding:8px 20px 0 5px}.jw-settings-submenu::-webkit-scrollbar{background-color:transparent;width:6px}.jw-settings-submenu::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-settings-submenu.jw-settings-submenu-active{display:block}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item{font-size:1em;padding:11px 0 11px 30px}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-settings-item-active::before{justify-content:flex-end}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-auto-label{font-size:.85em;padding-left:10px}.jw-flag-touch .jw-settings-submenu{overflow-y:scroll;-webkit-overflow-scrolling:touch}.jw-auto-label{font-size:10px;font-weight:initial;opacity:.75;padding-left:5px}.jw-settings-content-item{position:relative;color:rgba(255,255,255,0.8);cursor:pointer;font-size:12px;line-height:1;padding:7px 0 7px 15px;width:100%;text-align:left;outline:none}.jw-settings-content-item:hover{color:#fff}.jw-settings-content-item:focus{font-weight:bold}.jw-flag-small-player .jw-settings-content-item{line-height:1.75}.jw-settings-content-item.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-settings-item-active{font-weight:bold;position:relative}.jw-settings-item-active::before{height:100%;width:1em;align-items:center;content:"\\2022";display:inline-flex;justify-content:center}.jw-breakpoint-2 .jw-settings-open .jw-display-container,.jw-flag-small-player .jw-settings-open .jw-display-container,.jw-flag-touch .jw-settings-open .jw-display-container{display:none}.jw-breakpoint-2 .jw-settings-open.jw-controls,.jw-flag-small-player .jw-settings-open.jw-controls,.jw-flag-touch .jw-settings-open.jw-controls{z-index:1}.jw-flag-small-player .jw-settings-open .jw-controlbar{display:none}.jw-settings-open .jw-icon-settings::after{opacity:1}.jw-settings-open .jw-tooltip-settings{display:none}.jw-sharing-link{cursor:pointer}.jw-shortcuts-container .jw-switch{position:relative;display:inline-block;transition:ease-out .15s;transition-property:opacity, background;border-radius:18px;width:80px;height:20px;padding:10px;background:rgba(80,80,80,0.8);cursor:pointer;font-size:inherit;vertical-align:middle}.jw-shortcuts-container .jw-switch .jw-switch-knob{position:absolute;top:2px;left:1px;transition:ease-out .15s;box-shadow:0 0 10px rgba(0,0,0,0.4);border-radius:13px;width:15px;height:15px;background:#fefefe}.jw-shortcuts-container .jw-switch:before,.jw-shortcuts-container .jw-switch:after{position:absolute;top:3px;transition:inherit;color:#fefefe}.jw-shortcuts-container .jw-switch:before{content:attr(data-jw-switch-disabled);right:8px}.jw-shortcuts-container .jw-switch:after{content:attr(data-jw-switch-enabled);left:8px;opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]{background:#475470}.jw-shortcuts-container .jw-switch[aria-checked="true"]:before{opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]:after{opacity:1}.jw-shortcuts-container .jw-switch[aria-checked="true"] .jw-switch-knob{left:60px}.jw-idle-icon-text{display:none;line-height:1;position:absolute;text-align:center;text-indent:.35em;top:100%;white-space:nowrap;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.jw-idle-label{border-radius:50%;color:#fff;-webkit-filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));font:normal 16px/1 Arial,Helvetica,sans-serif;position:relative;transition:background-color 150ms cubic-bezier(0, .25, .25, 1);transition-property:background-color,-webkit-filter;transition-property:background-color,filter;transition-property:background-color,filter,-webkit-filter;-webkit-font-smoothing:antialiased}.jw-state-idle .jw-icon-display.jw-idle-label .jw-idle-icon-text{display:block}.jw-state-idle .jw-icon-display.jw-idle-label .jw-svg-icon-play{-webkit-transform:scale(.7, .7);transform:scale(.7, .7)}.jw-breakpoint-0.jw-state-idle .jw-icon-display.jw-idle-label,.jw-breakpoint--1.jw-state-idle .jw-icon-display.jw-idle-label{font-size:12px}.jw-info-overlay{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column}.jw-info-overlay .jw-info-close{flex:0 0 auto;margin:5px 5px 5px auto}.jw-info-open .jw-info-overlay{display:flex}.jw-info-container{display:flex;flex:1 1 auto;flex-flow:column;margin:0 20px 20px;overflow-y:auto;padding:5px}.jw-info-container [class*="jw-info"]:not(:first-of-type){color:rgba(255,255,255,0.8);padding-top:10px;font-size:12px}.jw-info-container .jw-info-description{margin-bottom:30px;text-align:start}.jw-info-container .jw-info-description:empty{display:none}.jw-info-container .jw-info-duration{text-align:start}.jw-info-container .jw-info-title{text-align:start;font-size:12px;font-weight:bold}.jw-info-container::-webkit-scrollbar{background-color:transparent;width:6px}.jw-info-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-info-clientid{align-self:flex-end;font-size:12px;color:rgba(255,255,255,0.8);margin:0 20px 20px 44px;text-align:right}.jw-flag-touch .jw-info-open .jw-display-container{display:none}@supports ((-webkit-filter: drop-shadow(0 0 3px #000)) or (filter: drop-shadow(0 0 3px #000))){.jwplayer.jw-ab-drop-shadow .jw-controls .jw-svg-icon,.jwplayer.jw-ab-drop-shadow .jw-controls .jw-icon.jw-text,.jwplayer.jw-ab-drop-shadow .jw-slider-container .jw-rail,.jwplayer.jw-ab-drop-shadow .jw-title{text-shadow:none;box-shadow:none;-webkit-filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3));filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3))}.jwplayer.jw-ab-drop-shadow .jw-button-color{opacity:.8;transition-property:color, opacity}.jwplayer.jw-ab-drop-shadow .jw-button-color:not(:hover){color:#fff;opacity:.8}.jwplayer.jw-ab-drop-shadow .jw-button-color:hover{opacity:1}.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0), hsla(0, 0%, 0%, 0.00787) 10.79%, hsla(0, 0%, 0%, 0.02963) 21.99%, hsla(0, 0%, 0%, 0.0625) 33.34%, hsla(0, 0%, 0%, 0.1037) 44.59%, hsla(0, 0%, 0%, 0.15046) 55.48%, hsla(0, 0%, 0%, 0.2) 65.75%, hsla(0, 0%, 0%, 0.24954) 75.14%, hsla(0, 0%, 0%, 0.2963) 83.41%, hsla(0, 0%, 0%, 0.3375) 90.28%, hsla(0, 0%, 0%, 0.37037) 95.51%, hsla(0, 0%, 0%, 0.39213) 98.83%, hsla(0, 0%, 0%, 0.4));mix-blend-mode:multiply;transition-property:opacity}.jw-state-idle.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0.2), hsla(0, 0%, 0%, 0.19606) 1.17%, hsla(0, 0%, 0%, 0.18519) 4.49%, hsla(0, 0%, 0%, 0.16875) 9.72%, hsla(0, 0%, 0%, 0.14815) 16.59%, hsla(0, 0%, 0%, 0.12477) 24.86%, hsla(0, 0%, 0%, 0.1) 34.25%, hsla(0, 0%, 0%, 0.07523) 44.52%, hsla(0, 0%, 0%, 0.05185) 55.41%, hsla(0, 0%, 0%, 0.03125) 66.66%, hsla(0, 0%, 0%, 0.01481) 78.01%, hsla(0, 0%, 0%, 0.00394) 89.21%, hsla(0, 0%, 0%, 0));background-size:100% 7rem;background-position:50% 0}.jwplayer.jw-ab-drop-shadow.jw-state-idle .jw-controls{background-color:transparent}}.jw-video-thumbnail-container{position:relative;overflow:hidden}.jw-video-thumbnail-container:not(.jw-related-shelf-item-image){height:100%;width:100%}.jw-video-thumbnail-container.jw-video-thumbnail-generated{position:absolute;top:0;left:0}.jw-video-thumbnail-container:hover,.jw-related-item-content:hover .jw-video-thumbnail-container,.jw-related-shelf-item:hover .jw-video-thumbnail-container{cursor:pointer}.jw-video-thumbnail-container:hover .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-item-content:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-shelf-item:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail{position:absolute;top:50%;left:50%;bottom:unset;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:100%;height:auto;min-width:100%;min-height:100%;opacity:0;transition:opacity .3s ease;object-fit:cover;background:#000}.jw-related-item-next-up .jw-video-thumbnail-container .jw-video-thumbnail{height:100%;width:auto}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-visible:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-completed{opacity:0}.jw-video-thumbnail-container .jw-video-thumbnail~.jw-svg-icon-play{display:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-shelf-item-aspect{pointer-events:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-item-poster-content{pointer-events:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-state-idle .jw-controls{background:rgba(0,0,0,0.4)}.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay),.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay){display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon:focus{border:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon .jw-svg-icon-buffer{-webkit-animation:jw-spin 2s linear infinite;animation:jw-spin 2s linear infinite;display:block}@-webkit-keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jwplayer.jw-state-buffering .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-pause{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-pause{display:block}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-controls-backdrop{opacity:0}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-logo-bottom-left,.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio):not(.jw-flag-autostart) .jw-logo-bottom-right{bottom:0}.jwplayer .jw-icon-playback .jw-svg-icon-stop{display:none}.jwplayer.jw-state-paused .jw-svg-icon-pause,.jwplayer.jw-state-idle .jw-svg-icon-pause,.jwplayer.jw-state-error .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-svg-icon-pause{display:none}.jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-complete .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-play{display:none}.jwplayer:not(.jw-state-buffering) .jw-svg-icon-buffer{display:none}.jwplayer:not(.jw-state-complete) .jw-svg-icon-replay{display:none}.jwplayer:not(.jw-state-error) .jw-svg-icon-error{display:none}.jwplayer.jw-state-complete .jw-display .jw-icon-display .jw-svg-icon-replay{display:block}.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-state-complete .jw-controls{background:rgba(0,0,0,0.4);height:100%}.jw-state-idle .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-state-idle .jw-display-icon-rewind,.jwplayer.jw-state-buffering .jw-display-icon-rewind,.jwplayer.jw-state-complete .jw-display-icon-rewind,body .jw-error .jw-display-icon-rewind,body .jwplayer.jw-state-error .jw-display-icon-rewind,.jw-state-idle .jw-display-icon-next,.jwplayer.jw-state-buffering .jw-display-icon-next,.jwplayer.jw-state-complete .jw-display-icon-next,body .jw-error .jw-display-icon-next,body .jwplayer.jw-state-error .jw-display-icon-next{display:none}body .jw-error .jw-icon-display,body .jwplayer.jw-state-error .jw-icon-display{cursor:default}body .jw-error .jw-icon-display .jw-svg-icon-error,body .jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-error{display:block}body .jw-error .jw-icon-container{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-preview{display:none}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title{padding-top:4px}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-primary{width:auto;display:inline-block;padding-right:.5ch}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-secondary{width:auto;display:inline-block;padding-left:0}body .jwplayer.jw-state-error .jw-controlbar,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-controlbar{display:none}body .jwplayer.jw-state-error .jw-settings-menu,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-settings-menu{height:100%;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}body .jwplayer.jw-state-error .jw-display,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-display{padding:0}body .jwplayer.jw-state-error .jw-logo-bottom-left,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-left,body .jwplayer.jw-state-error .jw-logo-bottom-right,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-right{bottom:0}.jwplayer.jw-state-playing.jw-flag-user-inactive .jw-display{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-state-playing:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display,.jwplayer.jw-state-paused:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting):not(.jw-flag-play-rejected) .jw-display{display:none}.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-rewind,.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-next{display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-text,.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-flag-casting:not(.jw-flag-audio-player) .jw-cast{display:block}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-display-icon-container{display:none}.jwplayer.jw-flag-casting .jw-icon-hd,.jwplayer.jw-flag-casting .jw-captions,.jwplayer.jw-flag-casting .jw-icon-fullscreen,.jwplayer.jw-flag-casting .jw-icon-audio-tracks{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-volume{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-airplay{color:#fff}.jw-state-playing.jw-flag-casting:not(.jw-flag-audio-player) .jw-display,.jw-state-paused.jw-flag-casting:not(.jw-flag-audio-player) .jw-display{display:table}.jwplayer.jw-flag-cast-available .jw-icon-cast,.jwplayer.jw-flag-cast-available .jw-icon-airplay{display:flex}.jwplayer.jw-flag-cardboard-available .jw-icon-cardboard{display:flex}.jwplayer.jw-flag-live .jw-display-icon-rewind{visibility:hidden}.jwplayer.jw-flag-live .jw-controlbar .jw-text-elapsed,.jwplayer.jw-flag-live .jw-controlbar .jw-text-duration,.jwplayer.jw-flag-live .jw-controlbar .jw-text-countdown,.jwplayer.jw-flag-live .jw-controlbar .jw-slider-time{display:none}.jwplayer.jw-flag-live .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-live .jw-controlbar .jw-overlay:after{display:none}.jwplayer.jw-flag-live .jw-nextup-container{bottom:44px}.jwplayer.jw-flag-live .jw-text-elapsed,.jwplayer.jw-flag-live .jw-text-duration{display:none}.jwplayer.jw-flag-live .jw-text-live{cursor:default}.jwplayer.jw-flag-live .jw-text-live:hover{color:rgba(255,255,255,0.8)}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-stop,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-stop{display:block}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-text-live{height:24px;width:auto;align-items:center;border-radius:1px;color:rgba(255,255,255,0.8);display:flex;font-size:12px;font-weight:bold;margin-right:10px;padding:0 1ch;text-rendering:geometricPrecision;text-transform:uppercase;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:box-shadow,color}.jw-text-live::before{height:8px;width:8px;background-color:currentColor;border-radius:50%;margin-right:6px;opacity:1;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-text-live.jw-dvr-live{box-shadow:inset 0 0 0 2px currentColor}.jw-text-live.jw-dvr-live::before{opacity:.5}.jw-text-live.jw-dvr-live:hover{color:#fff}.jwplayer.jw-flag-controls-hidden .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-controls-hidden:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-controls-hidden .jw-plugin{bottom:.5em}.jwplayer.jw-flag-controls-hidden .jw-nextup-container{bottom:0}.jw-flag-controls-hidden .jw-controlbar,.jw-flag-controls-hidden .jw-display{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-controls-hidden .jw-controls-backdrop{opacity:0}.jw-flag-controls-hidden .jw-logo{visibility:visible}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-plugin{bottom:.5em}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-nextup-container{bottom:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-controls-hidden) .jw-media{cursor:none;-webkit-cursor-visibility:auto-hide}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing.jw-flag-casting .jw-display{display:table}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-ads) .jw-autostart-mute{display:flex}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting .jw-nextup-container{bottom:66px}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting.jw-state-idle .jw-nextup-container{display:none}.jw-flag-media-audio .jw-preview{display:block}.jwplayer.jw-flag-ads .jw-preview,.jwplayer.jw-flag-ads .jw-logo,.jwplayer.jw-flag-ads .jw-captions.jw-captions-enabled,.jwplayer.jw-flag-ads .jw-nextup-container,.jwplayer.jw-flag-ads .jw-text-duration,.jwplayer.jw-flag-ads .jw-text-elapsed{display:none}.jwplayer.jw-flag-ads video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-rewind,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-next,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-display{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player.jw-state-buffering .jw-display-icon-display{display:inline-block}.jwplayer.jw-flag-ads .jw-controlbar{flex-wrap:wrap-reverse}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time{height:auto;padding:0;pointer-events:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-slider-container{height:5px}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-rail,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-knob,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-buffer,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-cue,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-icon-settings{display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-progress{-webkit-transform:none;transform:none;top:auto}.jwplayer.jw-flag-ads .jw-controlbar .jw-tooltip,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-tooltip:not(.jw-icon-volume),.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-inline:not(.jw-icon-playback):not(.jw-icon-fullscreen):not(.jw-icon-volume){display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-volume-tip{padding:13px 0}.jwplayer.jw-flag-ads .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid) .jw-controls .jw-controlbar,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart .jw-controls .jw-controlbar{display:flex;pointer-events:all;visibility:visible;opacity:1}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-user-inactive .jw-controls-backdrop,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart.jw-flag-user-inactive .jw-controls-backdrop{opacity:1;background-size:100% 60px}.jwplayer.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-ads-vpaid .jw-skip,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-skip{display:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls{background:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls::after{content:none}.jwplayer.jw-flag-ads-hide-controls .jw-controls-backdrop,.jwplayer.jw-flag-ads-hide-controls .jw-controls{display:none !important}.jw-flag-overlay-open-related .jw-controls,.jw-flag-overlay-open-related .jw-title,.jw-flag-overlay-open-related .jw-logo{display:none}.jwplayer.jw-flag-rightclick-open{overflow:visible}.jwplayer.jw-flag-rightclick-open .jw-rightclick{z-index:16777215}body .jwplayer.jw-flag-flash-blocked .jw-controls,body .jwplayer.jw-flag-flash-blocked .jw-overlays,body .jwplayer.jw-flag-flash-blocked .jw-controls-backdrop,body .jwplayer.jw-flag-flash-blocked .jw-preview{display:none}body .jwplayer.jw-flag-flash-blocked .jw-error-msg{top:25%}.jw-flag-touch.jw-breakpoint-7 .jw-captions,.jw-flag-touch.jw-breakpoint-6 .jw-captions,.jw-flag-touch.jw-breakpoint-5 .jw-captions,.jw-flag-touch.jw-breakpoint-4 .jw-captions,.jw-flag-touch.jw-breakpoint-7 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-6 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-5 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-4 .jw-nextup-container{bottom:4.25em}.jw-flag-touch .jw-controlbar .jw-icon-volume{display:flex}.jw-flag-touch .jw-display,.jw-flag-touch .jw-display-container,.jw-flag-touch .jw-display-controls{pointer-events:none}.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-rewind,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-rewind{display:none}.jw-flag-touch.jw-state-paused.jw-flag-dragging .jw-display{display:none}.jw-flag-audio-player{background-color:#000}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:44px}.jw-flag-audio-player:not(.jw-flag-live) .jw-spacer{display:none}.jw-flag-audio-player .jw-preview,.jw-flag-audio-player .jw-display,.jw-flag-audio-player .jw-title,.jw-flag-audio-player .jw-nextup-container{display:none}.jw-flag-audio-player .jw-controlbar{position:relative}.jw-flag-audio-player .jw-controlbar .jw-button-container{padding-right:3px;padding-left:0}.jw-flag-audio-player .jw-controlbar .jw-icon-tooltip,.jw-flag-audio-player .jw-controlbar .jw-icon-inline{display:none}.jw-flag-audio-player .jw-controlbar .jw-icon-volume,.jw-flag-audio-player .jw-controlbar .jw-icon-playback,.jw-flag-audio-player .jw-controlbar .jw-icon-next,.jw-flag-audio-player .jw-controlbar .jw-icon-rewind,.jw-flag-audio-player .jw-controlbar .jw-icon-cast,.jw-flag-audio-player .jw-controlbar .jw-text-live,.jw-flag-audio-player .jw-controlbar .jw-icon-airplay,.jw-flag-audio-player .jw-controlbar .jw-logo-button,.jw-flag-audio-player .jw-controlbar .jw-text-elapsed,.jw-flag-audio-player .jw-controlbar .jw-text-duration{display:flex;flex:0 0 auto}.jw-flag-audio-player .jw-controlbar .jw-text-duration,.jw-flag-audio-player .jw-controlbar .jw-text-countdown{padding-right:10px}.jw-flag-audio-player .jw-controlbar .jw-slider-time{flex:0 1 auto;align-items:center;display:flex;order:1}.jw-flag-audio-player .jw-controlbar .jw-icon-volume{margin-right:0;transition:margin-right 150ms cubic-bezier(0, .25, .25, 1)}.jw-flag-audio-player .jw-controlbar .jw-icon-volume .jw-overlay{display:none}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container{transition:width 300ms cubic-bezier(0, .25, .25, 1);width:0}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open{width:140px}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open .jw-slider-volume{padding-right:24px;transition:opacity 300ms;opacity:1}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open~.jw-slider-time{flex:1 1 auto;width:auto;transition:opacity 300ms, width 300ms}.jw-flag-audio-player .jw-controlbar .jw-slider-volume{opacity:0}.jw-flag-audio-player .jw-controlbar .jw-slider-volume .jw-knob{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.jw-flag-audio-player .jw-controlbar .jw-slider-volume~.jw-icon-volume{margin-right:140px}.jw-flag-audio-player.jw-breakpoint-1 .jw-horizontal-volume-container.jw-open~.jw-slider-time,.jw-flag-audio-player.jw-breakpoint-2 .jw-horizontal-volume-container.jw-open~.jw-slider-time{opacity:0}.jw-flag-audio-player.jw-flag-small-player .jw-text-elapsed,.jw-flag-audio-player.jw-flag-small-player .jw-text-duration{display:none}.jw-flag-audio-player.jw-flag-ads .jw-slider-time{display:none}.jw-hidden{display:none}',""])}]]); \ No newline at end of file diff --git a/ui/v2.5/public/jwplayer/jwplayer.core.controls.polyfills.js b/ui/v2.5/public/jwplayer/jwplayer.core.controls.polyfills.js new file mode 100644 index 000000000..d57b24de2 --- /dev/null +++ b/ui/v2.5/public/jwplayer/jwplayer.core.controls.polyfills.js @@ -0,0 +1,95 @@ +/*! +JW Player version 8.11.5 +Copyright (c) 2019, JW Player, All Rights Reserved +https://github.com/jwplayer/jwplayer/blob/v8.11.5/README.md + +This source code and its use and distribution is subject to the terms and conditions of the applicable license agreement. +https://www.jwplayer.com/tos/ + +This product includes portions of other software. For the full text of licenses, see below: + +JW Player Third Party Software Notices and/or Additional Terms and Conditions + +************************************************************************************************** +The following software is used under Apache License 2.0 +************************************************************************************************** + +vtt.js v0.13.0 +Copyright (c) 2019 Mozilla (http://mozilla.org) +https://github.com/mozilla/vtt.js/blob/v0.13.0/LICENSE + +* * * + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and +limitations under the License. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under MIT license +************************************************************************************************** + +Underscore.js v1.6.0 +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +https://github.com/jashkenas/underscore/blob/1.6.0/LICENSE + +Backbone backbone.events.js v1.1.2 +Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud +https://github.com/jashkenas/backbone/blob/1.1.2/LICENSE + +Promise Polyfill v7.1.1 +Copyright (c) 2014 Taylor Hakes and Forbes Lindesay +https://github.com/taylorhakes/promise-polyfill/blob/v7.1.1/LICENSE + +can-autoplay.js v3.0.0 +Copyright (c) 2017 video-dev +https://github.com/video-dev/can-autoplay/blob/v3.0.0/LICENSE + +* * * + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under W3C license +************************************************************************************************** + +Intersection Observer v0.5.0 +Copyright (c) 2016 Google Inc. (http://google.com) +https://github.com/w3c/IntersectionObserver/blob/v0.5.0/LICENSE.md + +* * * + +W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. + +This work is being provided by the copyright holders under the following license. + +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. + +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders. +*/ +(window.webpackJsonpjwplayer=window.webpackJsonpjwplayer||[]).push([[5,1,2,3,7],[,,,,,,,,,,,,,,,,,function(t,e,i){"use strict";i.r(e);var n,o=i(8),a=i(3),r=i(7),s=i(43),l=i(5),c=i(15),u=i(40);function d(t){return n||(n=new DOMParser),Object(l.r)(Object(l.s)(n.parseFromString(t,"image/svg+xml").documentElement))}var p=function(t,e,i,n){var o=document.createElement("div");o.className="jw-icon jw-icon-inline jw-button-color jw-reset "+t,o.setAttribute("role","button"),o.setAttribute("tabindex","0"),i&&o.setAttribute("aria-label",i),o.style.display="none";var a=new u.a(o).on("click tap enter",e||function(){});return n&&Array.prototype.forEach.call(n,(function(t){"string"==typeof t?o.appendChild(d(t)):o.appendChild(t)})),{ui:a,element:function(){return o},toggle:function(t){t?this.show():this.hide()},show:function(){o.style.display=""},hide:function(){o.style.display="none"}}},w=i(0),f=i(67),h=i.n(f),j=i(68),g=i.n(j),b=i(69),m=i.n(b),v=i(70),y=i.n(v),k=i(71),x=i.n(k),O=i(72),C=i.n(O),T=i(73),S=i.n(T),M=i(74),E=i.n(M),_=i(75),z=i.n(_),A=i(76),P=i.n(A),I=i(77),L=i.n(I),R=i(78),B=i.n(R),V=i(79),H=i.n(V),N=i(80),F=i.n(N),q=i(81),D=i.n(q),U=i(82),W=i.n(U),Q=i(83),Y=i.n(Q),X=i(84),Z=i.n(X),K=i(85),J=i.n(K),$=i(86),G=i.n($),tt=i(87),et=i.n(tt),it=i(88),nt=i.n(it),ot=i(89),at=i.n(ot),rt=null;function st(t){var e=dt().querySelector(ct(t));if(e)return ut(e);throw new Error("Icon not found "+t)}function lt(t){var e=dt().querySelectorAll(t.split(",").map(ct).join(","));if(!e.length)throw new Error("Icons not found "+t);return Array.prototype.map.call(e,(function(t){return ut(t)}))}function ct(t){return".jw-svg-icon-".concat(t)}function ut(t){return t.cloneNode(!0)}function dt(){return rt||(rt=d(""+h.a+g.a+m.a+y.a+x.a+C.a+S.a+E.a+z.a+P.a+L.a+B.a+H.a+F.a+D.a+W.a+Y.a+Z.a+J.a+G.a+et.a+nt.a+at.a+"")),rt}var pt=i(10);function wt(t,e){for(var i=0;i10&&delete ft[e[0]];var i=d(t);ft[t]=i}return ft[t].cloneNode(!0)}(e):((r=document.createElement("div")).className="jw-icon jw-button-image jw-button-color jw-reset",e&&Object(pt.d)(r,{backgroundImage:"url(".concat(e,")")})),s.appendChild(r),new u.a(s).on("click tap enter",n,this),s.addEventListener("mousedown",(function(t){t.preventDefault()})),this.id=o,this.buttonElement=s}var e,i,n;return e=t,(i=[{key:"element",value:function(){return this.buttonElement}},{key:"toggle",value:function(t){t?this.show():this.hide()}},{key:"show",value:function(){this.buttonElement.style.display=""}},{key:"hide",value:function(){this.buttonElement.style.display="none"}}])&&wt(e.prototype,i),n&&wt(e,n),t}(),jt=i(11);function gt(t,e){for(var i=0;i=0&&(e.left-=i,e.right-=i),e},mt=function(){function t(e,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Object(w.h)(this,r.a),this.className=e+" jw-background-color jw-reset",this.orientation=i}var e,i,n;return e=t,(i=[{key:"setup",value:function(){this.el=Object(l.e)(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return''}(this.className,"jw-slider-"+this.orientation)),this.elementRail=this.el.getElementsByClassName("jw-slider-container")[0],this.elementBuffer=this.el.getElementsByClassName("jw-buffer")[0],this.elementProgress=this.el.getElementsByClassName("jw-progress")[0],this.elementThumb=this.el.getElementsByClassName("jw-knob")[0],this.ui=new u.a(this.element(),{preventScrolling:!0}).on("dragStart",this.dragStart,this).on("drag",this.dragMove,this).on("dragEnd",this.dragEnd,this).on("click tap",this.tap,this)}},{key:"dragStart",value:function(){this.trigger("dragStart"),this.railBounds=bt(this.elementRail)}},{key:"dragEnd",value:function(t){this.dragMove(t),this.trigger("dragEnd")}},{key:"dragMove",value:function(t){var e,i,n=this.railBounds=this.railBounds?this.railBounds:bt(this.elementRail);return i="horizontal"===this.orientation?(e=t.pageX)n.right?100:100*Object(s.a)((e-n.left)/n.width,0,1):(e=t.pageY)>=n.bottom?0:e<=n.top?100:100*Object(s.a)((n.height-(e-n.top))/n.height,0,1),this.render(i),this.update(i),!1}},{key:"tap",value:function(t){this.railBounds=bt(this.elementRail),this.dragMove(t)}},{key:"limit",value:function(t){return t}},{key:"update",value:function(t){this.trigger("update",{percentage:t})}},{key:"render",value:function(t){t=Math.max(0,Math.min(t,100)),"horizontal"===this.orientation?(this.elementThumb.style.left=t+"%",this.elementProgress.style.width=t+"%"):(this.elementThumb.style.bottom=t+"%",this.elementProgress.style.height=t+"%")}},{key:"updateBuffer",value:function(t){this.elementBuffer.style.width=t+"%"}},{key:"element",value:function(){return this.el}}])&>(e.prototype,i),n&>(e,n),t}(),vt=function(t,e){t&&e&&(t.setAttribute("aria-label",e),t.setAttribute("role","button"),t.setAttribute("tabindex","0"))};function yt(t,e){for(var i=0;i0&&Array.prototype.forEach.call(o,(function(t){"string"==typeof t?a.el.appendChild(d(t)):a.el.appendChild(t)}))}var e,i,n;return e=t,(i=[{key:"addContent",value:function(t){this.content&&this.removeContent(),this.content=t,this.tooltip.appendChild(t)}},{key:"removeContent",value:function(){this.content&&(this.tooltip.removeChild(this.content),this.content=null)}},{key:"hasContent",value:function(){return!!this.content}},{key:"element",value:function(){return this.el}},{key:"openTooltip",value:function(t){this.isOpen||(this.trigger("open-"+this.componentType,t,{isOpen:!0}),this.isOpen=!0,Object(l.v)(this.el,this.openClass,this.isOpen))}},{key:"closeTooltip",value:function(t){this.isOpen&&(this.trigger("close-"+this.componentType,t,{isOpen:!1}),this.isOpen=!1,Object(l.v)(this.el,this.openClass,this.isOpen))}},{key:"toggleOpenState",value:function(t){this.isOpen?this.closeTooltip(t):this.openTooltip(t)}}])&&yt(e.prototype,i),n&&yt(e,n),t}(),xt=i(22),Ot=i(57);function Ct(t,e){for(var i=0;i=this.thumbnails.length&&(e=this.thumbnails.length-1);var i=this.thumbnails[e].img;return i.indexOf("://")<0&&(i=this.vttPath?this.vttPath+"/"+i:i),i},loadThumbnail:function(t){var e=this.chooseThumbnail(t),i={margin:"0 auto",backgroundPosition:"0 0"};if(e.indexOf("#xywh")>0)try{var n=/(.+)#xywh=(\d+),(\d+),(\d+),(\d+)/.exec(e);e=n[1],i.backgroundPosition=-1*n[2]+"px "+-1*n[3]+"px",i.width=n[4],this.timeTip.setWidth(+i.width),i.height=n[5]}catch(t){return}else this.individualImage||(this.individualImage=new Image,this.individualImage.onload=Object(w.a)((function(){this.individualImage.onload=null,this.timeTip.image({width:this.individualImage.width,height:this.individualImage.height}),this.timeTip.setWidth(this.individualImage.width)}),this),this.individualImage.src=e);return i.backgroundImage='url("'+e+'")',i},showThumbnail:function(t){this._model.get("containerWidth")<=420||this.thumbnails.length<1||this.timeTip.image(this.loadThumbnail(t))},resetThumbnails:function(){this.timeTip.image({backgroundImage:"",width:0,height:0}),this.thumbnails=[]}};function _t(t,e,i){return(_t="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,i){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=Rt(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(i):o.value}})(t,e,i||t)}function zt(t){return(zt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function At(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Pt(t,e){for(var i=0;i-1&&(n="Live")}var d=this.timeTip;d.update(n),this.textLength!==n.length&&(this.textLength=n.length,d.resetWidth()),this.showThumbnail(u),Object(l.a)(d.el,"jw-open");var p=d.getWidth(),w=a.width/100,f=o-a.width,h=0;p>f&&(h=(p-f)/(200*w));var j=100*Math.min(1-h,Math.max(h,c)).toFixed(3);Object(pt.d)(d.el,{left:j+"%"})}}},{key:"hideTimeTooltip",value:function(){Object(l.o)(this.timeTip.el,"jw-open")}},{key:"updateCues",value:function(t,e){var i=this;this.resetCues(),e&&e.length&&(e.forEach((function(t){i.addCue(t)})),this.drawCues())}},{key:"updateAriaText",value:function(){var t=this._model;if(!t.get("seeking")){var e=t.get("position"),i=t.get("duration"),n=Object(jt.timeFormat)(e);"DVR"!==this.streamType&&(n+=" of ".concat(Object(jt.timeFormat)(i)));var o=this.el;document.activeElement!==o&&(this.timeUpdateKeeper.textContent=n),Object(l.t)(o,"aria-valuenow",e),Object(l.t)(o,"aria-valuetext",n)}}},{key:"reset",value:function(){this.resetThumbnails(),this.timeTip.resetWidth(),this.textLength=0}}]),e}(mt);Object(w.h)(Nt.prototype,St,Et);var Ft=Nt;function qt(t,e){for(var i=0;i=75&&!t),Object(l.t)(r,"aria-valuenow",o),Object(l.t)(s,"aria-valuenow",o);var c="Volume ".concat(o,"%");Object(l.t)(r,"aria-valuetext",c),Object(l.t)(s,"aria-valuetext",c),document.activeElement!==r&&document.activeElement!==s&&(this._volumeAnnouncer.textContent=c)}}},{key:"onCastAvailable",value:function(t,e){this.elements.cast.toggle(e)}},{key:"onCastActive",value:function(t,e){this.elements.fullscreen.toggle(!e),this.elements.cast.button&&Object(l.v)(this.elements.cast.button,"jw-off",!e)}},{key:"onElapsed",value:function(t,e){var i,n,o=t.get("duration");if("DVR"===t.get("streamType")){var a=Math.ceil(e),r=this._model.get("dvrSeekLimit");i=n=a>=-r?"":"-"+Object(jt.timeFormat)(-(e+r)),t.set("dvrLive",a>=-r)}else i=Object(jt.timeFormat)(e),n=Object(jt.timeFormat)(o-e);this.elements.elapsed.textContent=i,this.elements.countdown.textContent=n}},{key:"onDuration",value:function(t,e){this.elements.duration.textContent=Object(jt.timeFormat)(Math.abs(e))}},{key:"onAudioMode",value:function(t,e){var i=this.elements.time.element();e?this.elements.buttonContainer.insertBefore(i,this.elements.elapsed):Object(l.m)(this.el,i)}},{key:"element",value:function(){return this.el}},{key:"setAltText",value:function(t,e){this.elements.alt.textContent=e}},{key:"closeMenus",value:function(t){this.menus.forEach((function(e){t&&t.target===e.el||e.closeTooltip(t)}))}},{key:"rewind",value:function(){var t,e=0,i=this._model.get("currentTime");i?t=i-10:(t=this._model.get("position")-10,"DVR"===this._model.get("streamType")&&(e=this._model.get("duration"))),this._api.seek(Math.max(t,e),{reason:"interaction"})}},{key:"onState",value:function(t,e){var i=t.get("localization"),n=i.play;this.setPlayText(n),e===a.pb&&("LIVE"!==t.get("streamType")?(n=i.pause,this.setPlayText(n)):(n=i.stop,this.setPlayText(n))),Object(l.t)(this.elements.play.element(),"aria-label",n)}},{key:"onStreamTypeChange",value:function(t,e){var i="LIVE"===e,n="DVR"===e;this.elements.rewind.toggle(!i),this.elements.live.toggle(i||n),Object(l.t)(this.elements.live.element(),"tabindex",i?"-1":"0"),this.elements.duration.style.display=n?"none":"",this.onDuration(t,t.get("duration")),this.onState(t,t.get("state"))}},{key:"addLogo",value:function(t){var e=this.elements.buttonContainer,i=new ht(t.file,this._model.get("localization").logo,(function(){t.link&&Object(l.l)(t.link,"_blank",{rel:"noreferrer"})}),"logo","jw-logo-button");t.link||Object(l.t)(i.element(),"tabindex","-1"),e.insertBefore(i.element(),e.querySelector(".jw-spacer").nextSibling)}},{key:"goToLiveEdge",value:function(){if("DVR"===this._model.get("streamType")){var t=Math.min(this._model.get("position"),-1),e=this._model.get("dvrSeekLimit");this._api.seek(Math.max(-e,t),{reason:"interaction"}),this._api.play({reason:"interaction"})}}},{key:"updateButtons",value:function(t,e,i){if(e){var n,o,a=this.elements.buttonContainer;e!==i&&i?(n=ae(e,i),o=ae(i,e),this.removeButtons(a,o)):n=e;for(var r=n.length-1;r>=0;r--){var s=n[r],l=new ht(s.img,s.tooltip,s.callback,s.id,s.btnClass);s.tooltip&&Gt(l.element(),s.id,s.tooltip);var c=void 0;"related"===l.id?c=this.elements.settingsButton.element():"share"===l.id?c=a.querySelector('[button="related"]')||this.elements.settingsButton.element():(c=this.elements.spacer.nextSibling)&&"logo"===c.getAttribute("button")&&(c=c.nextSibling),a.insertBefore(l.element(),c)}}}},{key:"removeButtons",value:function(t,e){for(var i=e.length;i--;){var n=t.querySelector('[button="'.concat(e[i].id,'"]'));n&&t.removeChild(n)}}},{key:"toggleCaptionsButtonState",value:function(t){var e=this.elements.captionsButton;e&&Object(l.v)(e.element(),"jw-off",!t)}},{key:"destroy",value:function(){var t=this;this._model.off(null,null,this),Object.keys(this.elements).forEach((function(e){var i=t.elements[e];i&&"function"==typeof i.destroy&&t.elements[e].destroy()})),this.ui.forEach((function(t){t.destroy()})),this.ui=[]}}])&&ee(e.prototype,i),n&&ee(e,n),t}(),le=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return'
    ')+'
    ')+"
    "},ce=function(t){return'
    '+le("rewind",t.rewind)+le("display",t.playback)+le("next",t.next)+"
    "};function ue(t,e){for(var i=0;i'.concat(a.playback,"")),Object(l.a)(o.icon,"jw-idle-label"),o.icon.appendChild(s))}return o}var i,n,o;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&je(t,e)}(e,t),i=e,(n=[{key:"element",value:function(){return this.el}}])&&we(i.prototype,n),o&&we(i,o),e}(r.a);function be(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return'
    '+'
    '.concat(t,"
    ")+'
    '.concat(e,"
    ")+'
    '.concat(i,"
    ")+"
    "+'')+"
    "}());e.querySelector(".jw-nextup-close").appendChild(st("close")),this.addContent(e),this.closeButton=this.content.querySelector(".jw-nextup-close"),this.closeButton.setAttribute("aria-label",this.localization.close),this.tooltip=this.content.querySelector(".jw-nextup-tooltip");var i=this._model,n=i.player;this.enabled=!1,i.on("change:nextUp",this.onNextUp,this),n.change("duration",this.onDuration,this),n.change("position",this.onElapsed,this),n.change("streamType",this.onStreamType,this),n.change("state",(function(t,e){"complete"===e&&this.toggle(!1)}),this),this.closeUi=new u.a(this.closeButton,{directSelect:!0}).on("click tap enter",(function(){this.nextUpSticky=!1,this.toggle(!1)}),this),this.tooltipUi=new u.a(this.tooltip).on("click tap",this.click,this)}},{key:"loadThumbnail",value:function(t){return this.nextUpImage=new Image,this.nextUpImage.onload=function(){this.nextUpImage.onload=null}.bind(this),this.nextUpImage.src=t,{backgroundImage:'url("'+t+'")'}}},{key:"click",value:function(){var t=this.feedShownId;this.reset(),this._api.next({feedShownId:t,reason:"interaction"})}},{key:"toggle",value:function(t,e){if(this.enabled&&(Object(l.v)(this.container,"jw-nextup-sticky",!!this.nextUpSticky),this.shown!==t)){this.shown=t,Object(l.v)(this.container,"jw-nextup-container-visible",t),Object(l.v)(this._playerElement,"jw-flag-nextup",t);var i=this._model.get("nextUp");t&&i?(this.feedShownId=Object(te.b)(te.a),this.trigger("nextShown",{mode:i.mode,ui:"nextup",itemsShown:[i],feedData:i.feedData,reason:e,feedShownId:this.feedShownId})):this.feedShownId=""}}},{key:"setNextUpItem",value:function(t){var e=this;setTimeout((function(){if(e.thumbnail=e.content.querySelector(".jw-nextup-thumbnail"),Object(l.v)(e.content,"jw-nextup-thumbnail-visible",!!t.image),t.image){var i=e.loadThumbnail(t.image);Object(pt.d)(e.thumbnail,i)}e.header=e.content.querySelector(".jw-nextup-header"),e.header.textContent=Object(l.e)(e.localization.nextUp).textContent,e.title=e.content.querySelector(".jw-nextup-title");var n=t.title;e.title.textContent=n?Object(l.e)(n).textContent:"";var o=t.duration;o&&(e.duration=e.content.querySelector(".jw-nextup-duration"),e.duration.textContent="number"==typeof o?Object(jt.timeFormat)(o):o)}),500)}},{key:"onNextUp",value:function(t,e){this.reset(),e||(e={showNextUp:!1}),this.enabled=!(!e.title&&!e.image),this.enabled&&(e.showNextUp||(this.nextUpSticky=!1,this.toggle(!1)),this.setNextUpItem(e))}},{key:"onDuration",value:function(t,e){if(e){var i=t.get("nextupoffset"),n=-10;i&&(n=Object(xe.d)(i,e)),n<0&&(n+=e),Object(xe.c)(i)&&e-5=this.offset;n&&void 0===i?(this.nextUpSticky=n,this.toggle(n,"time")):!n&&i&&this.reset()}}},{key:"onStreamType",value:function(t,e){"VOD"!==e&&(this.nextUpSticky=!1,this.toggle(!1))}},{key:"element",value:function(){return this.container}},{key:"addContent",value:function(t){this.content&&this.removeContent(),this.content=t,this.container.appendChild(t)}},{key:"removeContent",value:function(){this.content&&(this.container.removeChild(this.content),this.content=null)}},{key:"reset",value:function(){this.nextUpSticky=void 0,this.toggle(!1)}},{key:"destroy",value:function(){this.off(),this._model.off(null,null,this),this.closeUi&&this.closeUi.destroy(),this.tooltipUi&&this.tooltipUi.destroy()}}])&&Oe(e.prototype,i),n&&Oe(e,n),t}(),Te=function(t,e){var i=t.featured,n=t.showLogo,o=t.type;return t.logo=n?'':"",'
  • ').concat(Se[o](t,e),"
  • ")},Se={link:function(t){var e=t.link,i=t.title,n=t.logo;return'').concat(n).concat(i||"","")},info:function(t,e){return'")},share:function(t,e){return'")},keyboardShortcuts:function(t,e){return'")}},Me=i(23),Ee=i(6),_e=i(13);function ze(t,e){for(var i=0;iJW Player '.concat(t,""),a={items:[{type:"info"},{title:Object(_e.e)(n)?"".concat(o," ").concat(n):"".concat(n," ").concat(o),type:"link",featured:!0,showLogo:!0,link:"https://jwplayer.com/learn-more?e=".concat(Ae[i])}]},r=e.get("provider"),s=a.items;if(r&&r.name.indexOf("flash")>=0){var l="Flash Version "+Object(Ee.a)();s.push({title:l,type:"link",link:"http://www.adobe.com/software/flash/about/"})}return this.shortcutsTooltip&&s.splice(s.length-1,0,{type:"keyboardShortcuts"}),a}},{key:"rightClick",value:function(t){if(this.lazySetup(),this.mouseOverContext)return!1;this.hideMenu(),this.showMenu(t),this.addHideMenuHandlers()}},{key:"getOffset",value:function(t){var e=Object(l.c)(this.wrapperElement),i=t.pageX-e.left,n=t.pageY-e.top;return this.model.get("touchMode")&&(n-=100),{x:i,y:n}}},{key:"showMenu",value:function(t){var e=this,i=this.getOffset(t);return this.el.style.left=i.x+"px",this.el.style.top=i.y+"px",this.outCount=0,Object(l.a)(this.playerContainer,"jw-flag-rightclick-open"),Object(l.a)(this.el,"jw-open"),clearTimeout(this._menuTimeout),this._menuTimeout=setTimeout((function(){return e.hideMenu()}),3e3),!1}},{key:"hideMenu",value:function(t){t&&this.el&&this.el.contains(t.target)||(Object(l.o)(this.playerContainer,"jw-flag-rightclick-open"),Object(l.o)(this.el,"jw-open"))}},{key:"lazySetup",value:function(){var t,e,i,n,o=this,a=(t=this.buildArray(),e=this.model.get("localization"),i=t.items,n=(void 0===i?[]:i).map((function(t){return Te(t,e)})),'
    '+'
      '.concat(n.join(""),"
    ")+"
    ");if(this.el){if(this.html!==a){this.html=a;var r=Pe(a);Object(l.h)(this.el);for(var s=r.childNodes.length;s--;)this.el.appendChild(r.firstChild)}}else this.html=a,this.el=Pe(this.html),this.wrapperElement.appendChild(this.el),this.hideMenuHandler=function(t){return o.hideMenu(t)},this.overHandler=function(){o.mouseOverContext=!0},this.outHandler=function(t){o.mouseOverContext=!1,t.relatedTarget&&!o.el.contains(t.relatedTarget)&&++o.outCount>1&&o.hideMenu()},this.infoOverlayHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.infoOverlay.open()},this.shortcutsTooltipHandler=function(){o.mouseOverContext=!1,o.hideMenu(),o.shortcutsTooltip.open()}}},{key:"setup",value:function(t,e,i){this.wrapperElement=i,this.model=t,this.mouseOverContext=!1,this.playerContainer=e,this.ui=new u.a(i).on("longPress",this.rightClick,this)}},{key:"addHideMenuHandlers",value:function(){this.removeHideMenuHandlers(),this.wrapperElement.addEventListener("touchstart",this.hideMenuHandler),document.addEventListener("touchstart",this.hideMenuHandler),o.OS.mobile||(this.wrapperElement.addEventListener("click",this.hideMenuHandler),document.addEventListener("click",this.hideMenuHandler),this.el.addEventListener("mouseover",this.overHandler),this.el.addEventListener("mouseout",this.outHandler)),this.el.querySelector(".jw-info-overlay-item").addEventListener("click",this.infoOverlayHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").addEventListener("click",this.shortcutsTooltipHandler)}},{key:"removeHideMenuHandlers",value:function(){this.wrapperElement&&(this.wrapperElement.removeEventListener("click",this.hideMenuHandler),this.wrapperElement.removeEventListener("touchstart",this.hideMenuHandler)),this.el&&(this.el.querySelector(".jw-info-overlay-item").removeEventListener("click",this.infoOverlayHandler),this.el.removeEventListener("mouseover",this.overHandler),this.el.removeEventListener("mouseout",this.outHandler),this.shortcutsTooltip&&this.el.querySelector(".jw-shortcuts-item").removeEventListener("click",this.shortcutsTooltipHandler)),document.removeEventListener("click",this.hideMenuHandler),document.removeEventListener("touchstart",this.hideMenuHandler)}},{key:"destroy",value:function(){clearTimeout(this._menuTimeout),this.removeHideMenuHandlers(),this.el&&(this.hideMenu(),this.hideMenuHandler=null,this.el=null),this.wrapperElement&&(this.wrapperElement.oncontextmenu=null,this.wrapperElement=null),this.model&&(this.model=null),this.ui&&(this.ui.destroy(),this.ui=null)}}])&&ze(e.prototype,i),n&&ze(e,n),t}(),Le=function(){return''};function Re(t){var e=document.getElementsByClassName("jw-icon-settings")[0];if(e){var i="Right"===t?Object(l.k)(e):Object(l.n)(e);i&&i.focus()}}var Be=function(t){Object.keys(t).forEach((function(e){t[e].deactivate()}))},Ve=function(t){return'"};var He=function(t){t.forEach((function(t){t.deactivate()}))},Ne=function(t){return'"};function Fe(t,e,i){var n,o=Object(l.e)(Ne(e)),a=new u.a(o).on("click tap enter",(function(t){i(t)})),r={activate:function(){Object(l.v)(o,"jw-settings-item-active",!0),o.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(l.v)(o,"jw-settings-item-active",!1),o.setAttribute("aria-checked","false"),n=!1},element:function(){return o},uiElement:function(){return a},destroy:function(){this.deactivate(),a.destroy()}};return Object.defineProperty(r,"active",{enumerable:!0,get:function(){return n}}),r}var qe="audioTracks",De="captions",Ue="quality",We="playbackRates",Qe=Ue,Ye=function(t,e,i,n,o){var a=t.getSubmenu(e);if(a)a.replaceContent(i);else{var r=p("jw-settings-".concat(e),(function(i){t.activateSubmenu(e,!1,i&&"enter"!==i.type),a.element().children[0].focus()}),e,[n]),s=r.element();s.setAttribute("role","menuitemradio"),s.setAttribute("aria-checked","false"),s.setAttribute("aria-label",o),(a=function(t,e,i){var n,o=[],a=Object(l.e)(Ve(t)),r=e.element();r.setAttribute("name",t),r.className+=" jw-submenu-"+t,e.show();var s=function(t,e){t?t.focus():void 0!==e&&o[e].element().focus()},c=function(t){var e=Object(l.k)(r),i=Object(l.n)(r),n=Object(l.k)(t.target),a=Object(l.n)(t.target),c=t.key.replace(/(Arrow|ape)/,"");switch(c){case"Tab":s(t.shiftKey?i:e);break;case"Left":s(i||Object(l.n)(document.getElementsByClassName("jw-icon-settings")[0]));break;case"Up":s(a,o.length-1);break;case"Right":s(e);break;case"Down":s(n,0)}t.preventDefault(),"Esc"!==c&&t.stopPropagation()},u={addContent:function(t){t&&(t.forEach((function(t){a.appendChild(t.element()),t.element().setAttribute("tabindex","-1"),t.element().addEventListener("keydown",c)})),o=t)},replaceContent:function(t){u.removeContent(),this.addContent(t)},removeContent:function(){o.forEach((function(t){t.element().removeEventListener("keydown",c)})),Object(l.h)(a),o=[]},getItems:function(){return o},activate:function(){Object(l.v)(a,"jw-settings-submenu-active",!0),a.setAttribute("aria-expanded","true"),r.setAttribute("aria-checked","true"),n=!0},deactivate:function(){Object(l.v)(a,"jw-settings-submenu-active",!1),a.setAttribute("aria-expanded","false"),r.setAttribute("aria-checked","false"),n=!1},activateItem:function(t){var e=o[t];e&&!e.active&&(He(o),e.activate())},element:function(){return a},destroy:function(){o&&(o.forEach((function(t){t.destroy()})),this.removeContent())}};return Object.defineProperties(u,{name:{enumerable:!0,get:function(){return t}},active:{enumerable:!0,get:function(){return n}},categoryButtonElement:{enumerable:!0,get:function(){return r}},isDefault:{enumerable:!0,get:function(){return i}}}),u}(e,r,e===Qe)).addContent(i),"ontouchstart"in window||Gt(s,e,o),t.addSubmenu(a)}return a};function Xe(t){t.removeSubmenu(De)}function Ze(t){t.removeSubmenu(qe)}function Ke(t){t.removeSubmenu(Ue)}function Je(t){t.removeSubmenu(We)}function $e(t,e,i){var n=t.elements.settingsButton,o=function(t,e,i){var n,o=function(t){/jw-(settings|video|nextup-close|sharing-link|share-item)/.test(t.target.className)||f.close()},a=null,r={},s=Object(l.e)(Le()),c=new u.a(s).on("keydown",(function(t){var e=t.sourceEvent,i=t.target,n=Object(l.k)(i),o=Object(l.n)(i),a=e.key.replace(/(Arrow|ape)/,"");switch(a){case"Esc":f.close(t);break;case"Left":o?o.focus():(f.close(),Re(a));break;case"Right":n&&d.element()&&i!==d.element()&&n.focus();break;case"Up":case"Down":f.activateSubmenu(i.getAttribute("name"),"Up"===a)}if(e.stopPropagation(),/13|27|32|37|38|39|40/.test(e.keyCode))return e.preventDefault(),!1})),d=p("jw-settings-close",(function(t){f.close(t)}),i.close,[st("close")]);d.ui.on("keydown",(function(t){var e=t.sourceEvent,i=e.key.replace(/(Arrow|ape)/,"");("Enter"===i||"Right"===i||"Tab"===i&&!e.shiftKey)&&f.close(e),"Right"===i&&Re(e.key)})),d.show();var w=s.querySelector(".jw-settings-topbar");w.appendChild(d.element());var f={ui:c,closeButton:d,open:function(e,i){(t(n=!0,i),s.setAttribute("aria-expanded","true"),document.addEventListener("click",o),e&&i&&"enter"===i.type)?a.categoryButtonElement.focus():a.element().firstChild.focus()},close:function(e){t(n=!1,e),a=null,Be(r),s.setAttribute("aria-expanded","false"),document.removeEventListener("click",o)},toggle:function(){n?this.close():this.open()},addSubmenu:function(t){if(t){var i=t.name;if(r[i]=t,t.isDefault)Object(l.m)(w,t.categoryButtonElement),t.categoryButtonElement.addEventListener("keydown",(function(t){9===t.keyCode&&t.shiftKey&&f.close(t)}));else{var n=w.querySelector(".jw-submenu-sharing");w.insertBefore(t.categoryButtonElement,n||d.element())}s.appendChild(t.element()),e.show()}},getSubmenu:function(t){return r[t]},getSubmenuNames:function(){return Object.keys(r)},removeSubmenu:function(t){var i=r[t];i&&i.element().parentNode===s&&(s.removeChild(i.element()),w.removeChild(i.categoryButtonElement),i.destroy(),delete r[t],Object.keys(r).length||(this.close(),e.hide()))},activateSubmenu:function(t,e){var i=r[t];i&&(i.active||(Be(r),i.activate(),a=i),(e?i.element().lastChild:i.element().firstChild).focus())},activateFirstSubmenu:function(t){var e=Object.keys(r)[0];this.activateSubmenu(e,!1,t)},element:function(){return s},destroy:function(){this.close(),this.ui.destroy(),this.closeButton.ui.destroy(),Object(l.h)(s)}};return Object.defineProperties(f,{visible:{enumerable:!0,get:function(){return n}}}),f}(e,{hide:function(){return n.hide()},show:function(){return n.show()}},i);return t.on("settingsInteraction",(function(t,e,i){var n=o.getSubmenu(t),a=i&&"enter"!==i.type,r=Object(w.c)(o.open,10);(n||e)&&(o.visible?e||n.active?o.close():o.activateSubmenu(t,!1,a):(n?o.activateSubmenu(t,!1,a):o.activateFirstSubmenu(a),r(e,i)))})),o}function Ge(t,e,i,n){var o=i.player,a=function(e,i){var n=t.getSubmenu(e);n&&n.activateItem(i)},r=function(e,i){!i||i.length<=1?Ze(t):function(t,e,i,n,o){var a=e.map((function(e,n){return Fe(e.name,e.name,(function(e){i(n),t.close(e)}))}));Ye(t,qe,a,st("audio-tracks"),o).activateItem(n)}(t,i,(function(t){return n.setCurrentAudioTrack(t)}),o.get("currentAudioTrack"),o.get("localization").audioTracks)},s=function(i,a){if(!a||a.length<=1)Ke(t);else{var r=o.get("localization"),s=r.hd,l=r.auto;!function(t,e,i,n,o,a){var r=e.map((function(e,n){var o=e.label;return"Auto"===o&&0===n&&(o="".concat(a,' ')),Fe(e.label,o,(function(e){i(n),t.close(e)}))}));Ye(t,Ue,r,st("quality-100"),o).activateItem(n)}(t,a,(function(t){return n.setCurrentQuality(t)}),o.get("currentLevel"),s,l)}!function(t,e){var i=t.getSubmenuNames(),n=i.length>1||i.some((function(t){return"quality"===t||"playbackRates"===t}));e.elements.settingsButton.toggle(n)}(t,e)},l=function(e,i){o.get("supportsPlaybackRate")&&"LIVE"!==o.get("streamType")&&o.get("playbackRateControls")&&i.length>1?function(t,e,i,n,o){var a=e.map((function(e){return Fe(0,Object(_e.e)(o)?"x"+e:e+"x",(function(n){i(e),t.close(n)}))}));Ye(t,We,a,st("playback-rate"),o).activateItem(n)}(t,i,(function(t){return n.setPlaybackRate(t)}),i.indexOf(o.get("playbackRate")),o.get("localization").playbackRates):Je(t)},c=function(t,e,i){var n=o.get("levels");if(n&&"Auto"===n[0].label){var a=e.getItems()[0].element().querySelector(".jw-auto-label"),r=n[t.index]||{label:""};a.textContent=i?"":r.label}};o.change("levels",s,t),o.on("change:currentLevel",(function(e,i){var n=t.getSubmenu("quality"),r=o.get("visualQuality");r&&n&&c(r.level,n,i),a("quality",i)}),t),o.change("audioTracks",r,t),o.on("change:currentAudioTrack",(function(t,e){a("audioTracks",e)}),t),o.on("change:playlistItem",(function(){Xe(t),e.elements.captionsButton.hide(),t.visible&&t.close()})),o.change("captionsList",(function(i,a){var r=e.elements.captionsButton;if(!a||a.length<=1)return Xe(t),void r.hide();var s=o.get("localization"),l=s.cc,c=s.off;!function(t,e,i,n,o,a){var r=e.map((function(e,n){var o=e.label;return"Off"!==o&&"off"!==e.id||0!==n||(o=a),Fe(e.id,o,(function(e){i(n),t.close(e)}))}));Ye(t,De,r,st("cc-off"),o).activateItem(n)}(t,a,(function(t){return n.setCurrentCaptions(t)}),o.get("captionsIndex"),l,c),e.toggleCaptionsButtonState(!!o.get("captionsIndex")),r.show()}),t),o.change("captionsIndex",(function(i,n){var o=t.getSubmenu("captions");o&&(o.activateItem(n),e.toggleCaptionsButtonState(!!n))}),t),o.change("playbackRates",l,t),o.change("playbackRate",(function(t,e){var i=o.get("playbackRates");i&&a("playbackRates",i.indexOf(e))}),t),o.on("change:playbackRateControls",(function(){l(0,o.get("playbackRates"))})),o.on("change:visualQuality",(function(e,i){var n=t.getSubmenu("quality");i&&n&&c(i.level,n,o.get("currentLevel"))})),o.on("change:castActive",(function(e,i,n){i!==n&&(i?(Ze(t),Ke(t),Je(t)):(r(0,o.get("audioTracks")),s(0,o.get("levels")),l(0,o.get("playbackRates"))))}),t),o.on("change:streamType",(function(){l(0,o.get("playbackRates"))}),t)}var ti=i(58),ei=i(36),ii=i(12),ni=function(t,e,i,n){var o=Object(l.e)('
    '),r=!1,s=null,c=!1,u=function(t){/jw-info/.test(t.target.className)||w.close()},d=function(){var n,a,s,c,u,d=p("jw-info-close",(function(){w.close()}),e.get("localization").close,[st("close")]);d.show(),Object(l.m)(o,d.element()),a=o.querySelector(".jw-info-title"),s=o.querySelector(".jw-info-duration"),c=o.querySelector(".jw-info-description"),u=o.querySelector(".jw-info-clientid"),e.change("playlistItem",(function(t,e){var i=e.description,n=e.title;Object(l.q)(c,i||""),Object(l.q)(a,n||"Unknown Title")})),e.change("duration",(function(t,i){var n="";switch(e.get("streamType")){case"LIVE":n="Live";break;case"DVR":n="DVR";break;default:i&&(n=Object(jt.timeFormat)(i))}s.textContent=n}),w),u.textContent=(n=i.getPlugin("jwpsrv"))&&"function"==typeof n.doNotTrackUser&&n.doNotTrackUser()?"":"Client ID: ".concat(function(){try{return window.localStorage.jwplayerLocalId}catch(t){return"none"}}()),t.appendChild(o),r=!0};var w={open:function(){r||d(),document.addEventListener("click",u),c=!0;var t=e.get("state");t===a.pb&&i.pause("infoOverlayInteraction"),s=t,n(!0)},close:function(){document.removeEventListener("click",u),c=!1,e.get("state")===a.ob&&s===a.pb&&i.play("infoOverlayInteraction"),s=null,n(!1)},destroy:function(){this.close(),e.off(null,null,this)}};return Object.defineProperties(w,{visible:{enumerable:!0,get:function(){return c}}}),w};var oi=function(t,e,i){var n,o=!1,r=null,s=i.get("localization").shortcuts,c=Object(l.e)(function(t,e){var i=t.map((function(t){return'
    '+''.concat(t.description,"")+''.concat(t.key,"")+"
    "})).join("");return'
    ')+'Press shift question mark to access a list of keyboard shortcuts
    '+''.concat(e,"")+'
    '+"".concat(i)+"
    "}(function(t){var e=t.playPause,i=t.volumeToggle,n=t.fullscreenToggle,o=t.seekPercent,a=t.increaseVolume,r=t.decreaseVolume,s=t.seekForward,l=t.seekBackward;return[{key:t.spacebar,description:e},{key:"↑",description:a},{key:"↓",description:r},{key:"→",description:s},{key:"←",description:l},{key:"c",description:t.captionsToggle},{key:"f",description:n},{key:"m",description:i},{key:"0-9",description:o}]}(s),s.keyboardShortcuts)),u={reason:"settingsInteraction"},d=c.querySelector(".jw-switch"),w=function(){d.setAttribute("aria-checked",i.get("enableShortcuts")),d.addEventListener("click",j),Object(l.a)(c,"jw-open"),r=i.get("state"),c.querySelector(".jw-shortcuts-close").focus(),document.addEventListener("click",h),o=!0,e.pause(u)},f=function(){d.removeEventListener("click",j),Object(l.o)(c,"jw-open"),document.removeEventListener("click",h),t.focus(),o=!1,r===a.pb&&e.play(u)},h=function(t){/jw-shortcuts|jw-switch/.test(t.target.className)||f()},j=function(t){var e=t.currentTarget,n="true"!==e.getAttribute("aria-checked");e.setAttribute("aria-checked",n),i.set("enableShortcuts",n)};return n=p("jw-shortcuts-close",(function(){f()}),i.get("localization").close,[st("close")]),Object(l.m)(c,n.element()),n.show(),t.appendChild(c),{el:c,close:f,open:w,toggleVisibility:function(){o?f():w()}}},ai=function(t){return'
    ')+"
    "};function ri(t){return(ri="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function si(t,e){for(var i=0;i16?n.activeTimeout=setTimeout(n.userInactiveTimeout,t):n.playerContainer.querySelector(".jw-tab-focus")?n.resetActiveTimeout():n.userInactive()},n}var i,n,r;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&ji(t,e)}(e,t),i=e,(n=[{key:"resetActiveTimeout",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.inactiveTime=0}},{key:"enable",value:function(t,e){var i=this,n=this.context.createElement("div");n.className="jw-controls jw-reset",this.div=n;var r=this.context.createElement("div");r.className="jw-controls-backdrop jw-reset",this.backdrop=r,this.logo=this.playerContainer.querySelector(".jw-logo");var c=e.get("touchMode");if(!this.displayContainer){var u=new ye(e,t);u.buttons.display.on("click tap enter",(function(){i.trigger(a.p),i.userActive(1e3),t.playToggle(mi()),e.get("isFloating")?i.wrapperElement.focus():i.playerContainer.focus()})),this.div.appendChild(u.element()),this.displayContainer=u}this.infoOverlay=new ni(n,e,t,(function(t){Object(l.v)(i.div,"jw-info-open",t),t&&i.div.querySelector(".jw-info-close").focus()})),o.OS.mobile||(this.shortcutsTooltip=new oi(this.wrapperElement,t,e)),this.rightClickMenu=new Ie(this.infoOverlay,this.shortcutsTooltip),c?(Object(l.a)(this.playerContainer,"jw-flag-touch"),this.rightClickMenu.setup(e,this.playerContainer,this.wrapperElement)):e.change("flashBlocked",(function(t,e){e?i.rightClickMenu.destroy():i.rightClickMenu.setup(t,i.playerContainer,i.wrapperElement)}),this);var d=e.get("floating");if(d){var w=new di(n,e.get("localization").close);w.on(a.sb,(function(){return i.trigger("dismissFloating",{doNotForward:!0})})),!1!==d.dismissible&&Object(l.a)(this.playerContainer,"jw-floating-dismissible")}var f=this.controlbar=new se(t,e,this.playerContainer.querySelector(".jw-hidden-accessibility"));if(f.on(a.sb,(function(){return i.userActive()})),f.on("nextShown",(function(t){this.trigger("nextShown",t)}),this),f.on("adjustVolume",v,this),e.get("nextUpDisplay")&&!f.nextUpToolTip){var h=new Ce(e,t,this.playerContainer);h.on("all",this.trigger,this),h.setup(this.context),f.nextUpToolTip=h,this.div.appendChild(h.element())}this.div.appendChild(f.element());var j=null,g=this.settingsMenu=$e(f,(function(n,o){var r=e.get("state"),s={reason:"settingsInteraction"},c="keydown"===(o&&o.sourceEvent||o||{}).type;Object(l.v)(i.div,"jw-settings-open",n),Object(ti.a)(e.get("containerWidth"))<2&&(n&&r===a.pb?t.pause(s):n||r!==a.ob||j!==a.pb||t.play(s));var u=n||c?0:gi;i.userActive(u),j=r;var d=i.controlbar.elements.settingsButton;!n&&d&&(c?d.element().focus():o&&(e.get("isFloating")?i.wrapperElement:i.playerContainer).focus())}),e.get("localization"));Ge(g,f,e,t),o.OS.mobile?this.div.appendChild(g.element()):(this.playerContainer.setAttribute("aria-describedby","jw-shortcuts-tooltip-explanation"),this.div.insertBefore(g.element(),f.element()));var b=function(e){if(e.get("autostartMuted")){var n=function(){return i.unmuteAutoplay(t,e)},a=function(t,e){e||n()};o.OS.mobile&&(i.mute=p("jw-autostart-mute jw-off",n,e.get("localization").unmute,[st("volume-0")]),i.mute.show(),i.div.appendChild(i.mute.element())),f.renderVolume(!0,e.get("volume")),Object(l.a)(i.playerContainer,"jw-flag-autostart"),e.on("change:autostartFailed",n,i),e.on("change:autostartMuted change:mute",a,i),i.muteChangeCallback=a,i.unmuteCallback=n}};function m(i){var n=0,o=e.get("duration"),a=e.get("position");if("DVR"===e.get("streamType")){var r=e.get("dvrSeekLimit");n=o,o=Math.max(a,-r)}var l=Object(s.a)(a+i,n,o);t.seek(l,mi())}function v(i){var n=Object(s.a)(e.get("volume")+i,0,100);t.setVolume(n)}e.once("change:autostartMuted",b),b(e);var y=function(n){if(n.ctrlKey||n.metaKey)return!0;var o=!i.settingsMenu.visible,a=!0===e.get("enableShortcuts"),r=i.instreamState;if(a||-1!==bi.indexOf(n.keyCode)){switch(n.keyCode){case 27:if(e.get("fullscreen"))t.setFullscreen(!1),i.playerContainer.blur(),i.userInactive();else{var s=t.getPlugin("related");s&&s.close({type:"escape"})}i.rightClickMenu.el&&i.rightClickMenu.hideMenuHandler(),i.infoOverlay.visible&&i.infoOverlay.close(),i.shortcutsTooltip&&i.shortcutsTooltip.close();break;case 13:case 32:if(document.activeElement.classList.contains("jw-switch")&&32===n.keyCode)return!0;t.playToggle(mi());break;case 37:!r&&o&&m(-5);break;case 39:!r&&o&&m(5);break;case 38:o&&v(10);break;case 40:o&&v(-10);break;case 67:var l=t.getCaptionsList().length;if(l){var c=(t.getCurrentCaptions()+1)%l;t.setCurrentCaptions(c)}break;case 77:t.setMute();break;case 70:t.setFullscreen();break;case 191:i.shortcutsTooltip&&i.shortcutsTooltip.toggleVisibility();break;default:if(n.keyCode>=48&&n.keyCode<=59){var u=(n.keyCode-48)/10*e.get("duration");t.seek(u,mi())}}return/13|32|37|38|39|40/.test(n.keyCode)?(n.preventDefault(),!1):void 0}};this.playerContainer.addEventListener("keydown",y),this.keydownCallback=y;var k=function(t){if(9===t.keyCode){var e=i.playerContainer.contains(t.target)?0:gi;i.userActive(e)}};this.playerContainer.addEventListener("keyup",k),this.keyupCallback=k;var x=function(t){var e=t.relatedTarget||document.querySelector(":focus");e&&(i.playerContainer.contains(e)||i.userInactive())};this.playerContainer.addEventListener("blur",x,!0),this.blurCallback=x;var O=function t(){"jw-shortcuts-tooltip-explanation"===i.playerContainer.getAttribute("aria-describedby")&&i.playerContainer.removeAttribute("aria-describedby"),i.playerContainer.removeEventListener("blur",t,!0)};this.shortcutsTooltip&&(this.playerContainer.addEventListener("blur",O,!0),this.onRemoveShortcutsDescription=O),this.userActive(),this.addControls(),this.addBackdrop(),e.set("controlsEnabled",!0)}},{key:"addControls",value:function(){this.wrapperElement.appendChild(this.div)}},{key:"disable",value:function(t){var e=this.nextUpToolTip,i=this.settingsMenu,n=this.infoOverlay,o=this.controlbar,a=this.rightClickMenu,r=this.playerContainer,s=this.div;clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.off(),t.off(null,null,this),t.set("controlsEnabled",!1),s.parentNode&&(Object(l.o)(r,"jw-flag-touch"),s.parentNode.removeChild(s)),o&&o.destroy(),a&&a.destroy(),this.keydownCallback&&r.removeEventListener("keydown",this.keydownCallback),this.keyupCallback&&r.removeEventListener("keyup",this.keyupCallback),this.blurCallback&&r.removeEventListener("blur",this.blurCallback),this.onRemoveShortcutsDescription&&r.removeEventListener("blur",this.onRemoveShortcutsDescription),this.displayContainer&&this.displayContainer.destroy(),e&&e.destroy(),i&&(i.destroy(),s.removeChild(i.element())),n&&n.destroy(),this.removeBackdrop()}},{key:"controlbarHeight",value:function(){return this.dimensions.cbHeight||(this.dimensions.cbHeight=this.controlbar.element().clientHeight),this.dimensions.cbHeight}},{key:"element",value:function(){return this.div}},{key:"resize",value:function(){this.dimensions={}}},{key:"unmuteAutoplay",value:function(t,e){var i=!e.get("autostartFailed"),n=e.get("mute");i?n=!1:e.set("playOnViewable",!1),this.muteChangeCallback&&(e.off("change:autostartMuted change:mute",this.muteChangeCallback),this.muteChangeCallback=null),this.unmuteCallback&&(e.off("change:autostartFailed",this.unmuteCallback),this.unmuteCallback=null),e.set("autostartFailed",void 0),e.set("autostartMuted",void 0),t.setMute(n),this.controlbar.renderVolume(n,e.get("volume")),this.mute&&this.mute.hide(),Object(l.o)(this.playerContainer,"jw-flag-autostart"),this.userActive()}},{key:"mouseMove",value:function(t){var e=this.controlbar.element().contains(t.target),i=this.controlbar.nextUpToolTip&&this.controlbar.nextUpToolTip.element().contains(t.target),n=this.logo&&this.logo.contains(t.target),o=e||i||n?0:gi;this.userActive(o)}},{key:"userActive",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gi;t>0?(this.inactiveTime=Object(c.a)()+t,-1===this.activeTimeout&&(this.activeTimeout=setTimeout(this.userInactiveTimeout,t))):this.resetActiveTimeout(),this.showing||(Object(l.o)(this.playerContainer,"jw-flag-user-inactive"),this.showing=!0,this.trigger("userActive"))}},{key:"userInactive",value:function(){clearTimeout(this.activeTimeout),this.activeTimeout=-1,this.settingsMenu.visible||(this.inactiveTime=0,this.showing=!1,Object(l.a)(this.playerContainer,"jw-flag-user-inactive"),this.trigger("userInactive"))}},{key:"addBackdrop",value:function(){var t=this.instreamState?this.div:this.wrapperElement.querySelector(".jw-captions");this.wrapperElement.insertBefore(this.backdrop,t)}},{key:"removeBackdrop",value:function(){var t=this.backdrop.parentNode;t&&t.removeChild(this.backdrop)}},{key:"setupInstream",value:function(){this.instreamState=!0,this.userActive(),this.addBackdrop(),this.settingsMenu&&this.settingsMenu.close(),Object(l.o)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","-1")}},{key:"destroyInstream",value:function(t){this.instreamState=null,this.addBackdrop(),t.get("autostartMuted")&&Object(l.a)(this.playerContainer,"jw-flag-autostart"),this.controlbar.elements.time.element().setAttribute("tabindex","0")}}])&&wi(i.prototype,n),r&&wi(i,r),e}(r.a)},function(t,e,i){"use strict";i.r(e);var n=i(0),o=i(12),a=i(50),r=i(37);var s=i(44),l=i(51),c=i(26),u=i(25),d=i(3),p=i(46),w=i(2),f=i(7),h=i(34);function j(t){var e=!1;return{async:function(){var i=this,n=arguments;return Promise.resolve().then((function(){if(!e)return t.apply(i,n)}))},cancel:function(){e=!0},cancelled:function(){return e}}}var g=i(1);function b(t){return function(e,i){var o=t.mediaModel,a=Object(n.h)({},i,{type:e});switch(e){case d.T:if(o.get(d.T)===i.mediaType)return;o.set(d.T,i.mediaType);break;case d.U:return void o.set(d.U,Object(n.h)({},i));case d.M:if(i[e]===t.model.getMute())return;break;case d.bb:i.newstate===d.mb&&(t.thenPlayPromise.cancel(),o.srcReset());var r=o.attributes.mediaState;o.attributes.mediaState=i.newstate,o.trigger("change:mediaState",o,i.newstate,r);break;case d.F:return t.beforeComplete=!0,t.trigger(d.B,a),void(t.attached&&!t.background&&t._playbackComplete());case d.G:o.get("setup")?(t.thenPlayPromise.cancel(),o.srcReset()):(e=d.tb,a.code+=1e5);break;case d.K:a.metadataType||(a.metadataType="unknown");var s=i.duration;Object(n.v)(s)&&(o.set("seekRange",i.seekRange),o.set("duration",s));break;case d.D:o.set("buffer",i.bufferPercent);case d.S:o.set("seekRange",i.seekRange),o.set("position",i.position),o.set("currentTime",i.currentTime);var l=i.duration;Object(n.v)(l)&&o.set("duration",l),e===d.S&&Object(n.s)(t.item.starttime)&&delete t.item.starttime;break;case d.R:var c=t.mediaElement;c&&c.paused&&o.set("mediaState","paused");break;case d.I:o.set(d.I,i.levels);case d.J:var u=i.currentQuality,p=i.levels;u>-1&&p.length>1&&o.set("currentLevel",parseInt(u));break;case d.f:o.set(d.f,i.tracks);case d.g:var w=i.currentTrack,f=i.tracks;w>-1&&f.length>0&&w=Math.max(l,p.a)&&(t.preloadNextItem(),v=!0)}function A(t){var e={};b.tag&&(e.tag=b.tag),this.trigger(d.F,e),P.call(this,t)}function P(t){j={},a&&h+10?t:null,f&&f.model.set("skipOffset",s)}};Object(n.h)(lt.prototype,f.a);var ct=lt,ut=i(63),dt=i(60),pt=function(t){var e=this,i=[],n={},o=0,a=0;function r(t){if(t.data=t.data||[],t.name=t.label||t.name||t.language,t._id=Object(dt.a)(t,i.length),!t.name){var e=Object(dt.b)(t,o);t.name=e.label,o=e.unknownCount}n[t._id]=t,i.push(t)}function s(){for(var t=[{id:"off",label:"Off"}],e=0;e')+'
    '},ht=i(36),jt=44,gt=function(t){var e=t.get("height");if(t.get("aspectratio"))return!1;if("string"==typeof e&&e.indexOf("%")>-1)return!1;var i=1*e||NaN;return!!(i=isNaN(i)?t.get("containerHeight"):i)&&(i&&i<=jt)},bt=i(54);function mt(t,e){if(t.get("fullscreen"))return 1;if(!t.get("activeTab"))return 0;if(t.get("isFloating"))return 1;var i=t.get("intersectionRatio");return void 0===i&&(i=function(t){var e=document.documentElement,i=document.body,n={top:0,left:0,right:e.clientWidth||i.clientWidth,width:e.clientWidth||i.clientWidth,bottom:e.clientHeight||i.clientHeight,height:e.clientHeight||i.clientHeight};if(!i.contains(t))return 0;if("none"===window.getComputedStyle(t).display)return 0;var o=vt(t);if(!o)return 0;var a=o,r=t.parentNode,s=!1;for(;!s;){var l=null;if(r===i||r===e||1!==r.nodeType?(s=!0,l=n):"visible"!==window.getComputedStyle(r).overflow&&(l=vt(r)),l&&(c=l,u=a,d=void 0,p=void 0,w=void 0,f=void 0,h=void 0,j=void 0,d=Math.max(c.top,u.top),p=Math.min(c.bottom,u.bottom),w=Math.max(c.left,u.left),f=Math.min(c.right,u.right),j=p-d,!(a=(h=f-w)>=0&&j>=0&&{top:d,bottom:p,left:w,right:f,width:h,height:j})))return 0;r=r.parentNode}var c,u,d,p,w,f,h,j;var g=o.width*o.height,b=a.width*a.height;return g?b/g:0}(e),window.top!==window.self&&i)?0:i}function vt(t){try{return t.getBoundingClientRect()}catch(t){}}var yt=i(49),kt=i(42),xt=i(58),Ot=i(10);var Ct=i(32),Tt=i(5),St=i(6),Mt=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"],Et=function(t,e,i){for(var n=t.requestFullscreen||t.webkitRequestFullscreen||t.webkitRequestFullScreen||t.mozRequestFullScreen||t.msRequestFullscreen,o=e.exitFullscreen||e.webkitExitFullscreen||e.webkitCancelFullScreen||e.mozCancelFullScreen||e.msExitFullscreen,a=!(!n||!o),r=Mt.length;r--;)e.addEventListener(Mt[r],i);return{events:Mt,supportsDomFullscreen:function(){return a},requestFullscreen:function(){n.call(t,{navigationUI:"hide"})},exitFullscreen:function(){null!==this.fullscreenElement()&&o.apply(e)},fullscreenElement:function(){var t=e.fullscreenElement,i=e.webkitCurrentFullScreenElement,n=e.mozFullScreenElement,o=e.msFullscreenElement;return null===t?t:t||i||n||o},destroy:function(){for(var t=Mt.length;t--;)e.removeEventListener(Mt[t],i)}}},_t=i(40);function zt(t,e){for(var i=0;io?a:n*r/i)*u}return t}(i))/10}f.get("renderCaptionsNatively")?function(t,e){var i="#".concat(t," .jw-video::-webkit-media-text-track-display");e&&(e+="px",m.OS.iOS&&Object(Ot.b)(i,{fontSize:"inherit"},t,!0));p.fontSize=e,Object(Ot.b)(i,p,t,!0)}(f.get("id"),e):Object(Ot.d)(s,{fontSize:e})}}function g(t,e,i){var n=Object(Ot.c)("#000000",i);"dropshadow"===t?e.textShadow="0 2px 1px "+n:"raised"===t?e.textShadow="0 0 5px "+n+", 0 1px 5px "+n+", 0 2px 5px "+n:"depressed"===t?e.textShadow="0 -2px 1px "+n:"uniform"===t&&(e.textShadow="-2px 0 1px "+n+",2px 0 1px "+n+",0 -2px 1px "+n+",0 2px 1px "+n+",-1px 1px 1px "+n+",1px 1px 1px "+n+",1px -1px 1px "+n+",1px 1px 1px "+n)}(s=document.createElement("div")).className="jw-captions jw-reset",this.show=function(){Object(Tt.a)(s,"jw-captions-enabled")},this.hide=function(){Object(Tt.o)(s,"jw-captions-enabled")},this.populate=function(t){f.get("renderCaptionsNatively")||(a=[],o=t,t?this.selectCues(t,r):this.renderCues())},this.resize=function(){j(),this.renderCues(!0)},this.renderCues=function(t){t=!!t,At&&At.processCues(window,a,s,t)},this.selectCues=function(t,e){if(t&&t.data&&e&&!f.get("renderCaptionsNatively")){var i=this.getAlignmentPosition(t,e);!1!==i&&(a=this.getCurrentCues(t.data,i),this.renderCues(!0))}},this.getCurrentCues=function(t,e){return Object(n.i)(t,(function(t){return e>=t.startTime&&(!t.endTime||e<=t.endTime)}))},this.getAlignmentPosition=function(t,e){var i=t.source,o=e.metadata,a=e.currentTime;return i&&o&&Object(n.s)(o[i])&&(a=o[i]),a},this.clear=function(){Object(Tt.g)(s)},this.setup=function(t,i){l=document.createElement("div"),c=document.createElement("span"),l.className="jw-captions-window jw-reset",c.className="jw-captions-text jw-reset",e=Object(n.h)({},Lt,i),u=Lt.fontScale,h(e.fontSize);var o=e.windowColor,a=e.windowOpacity,r=e.edgeStyle;p={};var d={};!function(t,e){var i=e.color,n=e.fontOpacity;(i||n!==Lt.fontOpacity)&&(t.color=Object(Ot.c)(i||"#ffffff",n));if(e.back){var o=e.backgroundColor,a=e.backgroundOpacity;o===Lt.backgroundColor&&a===Lt.backgroundOpacity||(t.backgroundColor=Object(Ot.c)(o,a))}else t.background="transparent";e.fontFamily&&(t.fontFamily=e.fontFamily);e.fontStyle&&(t.fontStyle=e.fontStyle);e.fontWeight&&(t.fontWeight=e.fontWeight);e.textDecoration&&(t.textDecoration=e.textDecoration)}(d,e),(o||a!==Lt.windowOpacity)&&(p.backgroundColor=Object(Ot.c)(o||"#000000",a)),g(r,d,e.fontOpacity),e.back||null!==r||g("uniform",d),Object(Ot.d)(l,p),Object(Ot.d)(c,d),function(t,e){j(),function(t,e){m.Browser.safari&&Object(Ot.b)("#"+t+" .jw-video::-webkit-media-text-track-display-backdrop",{backgroundColor:e.backgroundColor},t,!0);Object(Ot.b)("#"+t+" .jw-video::-webkit-media-text-track-display",p,t,!0),Object(Ot.b)("#"+t+" .jw-video::cue",e,t,!0)}(t,e),function(t,e){Object(Ot.b)("#"+t+" .jw-text-track-display",p,t),Object(Ot.b)("#"+t+" .jw-text-track-cue",e,t)}(t,e)}(t,d),l.appendChild(c),s.appendChild(l),f.change("captionsTrack",(function(t,e){this.populate(e)}),this),f.set("captions",e)},this.element=function(){return s},this.destroy=function(){f.off(null,null,this),this.off()};var b=function(t){r=t,w.selectCues(o,r)};f.on("change:playlistItem",(function(){r=null,a=[]}),this),f.on(d.Q,(function(t){a=[],b(t)}),this),f.on(d.S,b,this),f.on("subtitlesTrackData",(function(){this.selectCues(o,r)}),this),f.on("change:captionsList",(function t(e,n){var o=this;1!==n.length&&(e.get("renderCaptionsNatively")||At||(i.e(8).then(function(t){At=i(93).default}.bind(null,i)).catch(Object(It.c)(301121)).catch((function(t){o.trigger(d.tb,t)})),e.off("change:captionsList",t,this)))}),this)};Object(n.h)(Rt.prototype,f.a);var Bt=Rt,Vt=function(t,e){var i=e?" jw-hide":"";return'')},Ht={linktarget:"_blank",margin:8,hide:!1,position:"top-right"};function Nt(t){var e,i;Object(n.h)(this,f.a);var o=new Image;this.setup=function(){(i=Object(n.h)({},Ht,t.get("logo"))).position=i.position||Ht.position,i.hide="true"===i.hide.toString(),i.file&&"control-bar"!==i.position&&(e||(e=Object(Tt.e)(Vt(i.position,i.hide))),t.set("logo",i),o.onload=function(){var n=this.height,o=this.width,a={backgroundImage:'url("'+this.src+'")'};if(i.margin!==Ht.margin){var r=/(\w+)-(\w+)/.exec(i.position);3===r.length&&(a["margin-"+r[1]]=i.margin,a["margin-"+r[2]]=i.margin)}var s=.15*t.get("containerHeight"),l=.15*t.get("containerWidth");if(n>s||o>l){var c=o/n;l/s>c?(n=s,o=s*c):(o=l,n=l/c)}a.width=Math.round(o),a.height=Math.round(n),Object(Ot.d)(e,a),t.set("logoWidth",a.width)},o.src=i.file,i.link&&(e.setAttribute("tabindex","0"),e.setAttribute("aria-label",t.get("localization").logo)),this.ui=new _t.a(e).on("click tap enter",(function(t){t&&t.stopPropagation&&t.stopPropagation(),this.trigger(d.A,{link:i.link,linktarget:i.linktarget})}),this))},this.setContainer=function(t){e&&t.appendChild(e)},this.element=function(){return e},this.position=function(){return i.position},this.destroy=function(){o.onload=null,this.ui&&this.ui.destroy()}}var Ft=function(t){this.model=t,this.image=null};Object(n.h)(Ft.prototype,{setup:function(t){this.el=t},setImage:function(t){var e=this.image;e&&(e.onload=null),this.image=null;var i="";"string"==typeof t&&(i='url("'+t+'")',(e=this.image=new Image).src=t),Object(Ot.d)(this.el,{backgroundImage:i})},resize:function(t,e,i){if("uniform"===i){if(t&&(this.playerAspectRatio=t/e),!this.playerAspectRatio||!this.image||"complete"!==(s=this.model.get("state"))&&"idle"!==s&&"error"!==s&&"buffering"!==s)return;var n=this.image,o=null;if(n){if(0===n.width){var a=this;return void(n.onload=function(){a.resize(t,e,i)})}var r=n.width/n.height;Math.abs(this.playerAspectRatio-r)<.09&&(o="cover")}Object(Ot.d)(this.el,{backgroundSize:o})}var s},element:function(){return this.el}});var qt=Ft,Dt=function(t){this.model=t.player};Object(n.h)(Dt.prototype,{hide:function(){Object(Ot.d)(this.el,{display:"none"})},show:function(){Object(Ot.d)(this.el,{display:""})},setup:function(t){this.el=t;var e=this.el.getElementsByTagName("div");this.title=e[0],this.description=e[1],this.model.on("change:logoWidth",this.update,this),this.model.change("playlistItem",this.playlistItem,this)},update:function(t){var e={},i=t.get("logo");if(i){var n=1*(""+i.margin).replace("px",""),o=t.get("logoWidth")+(isNaN(n)?0:n+10);"top-left"===i.position?e.paddingLeft=o:"top-right"===i.position&&(e.paddingRight=o)}Object(Ot.d)(this.el,e)},playlistItem:function(t,e){if(e)if(t.get("displaytitle")||t.get("displaydescription")){var i="",n="";e.title&&t.get("displaytitle")&&(i=e.title),e.description&&t.get("displaydescription")&&(n=e.description),this.updateText(i,n)}else this.hide()},updateText:function(t,e){Object(Tt.q)(this.title,t),Object(Tt.q)(this.description,e),this.title.firstChild||this.description.firstChild?this.show():this.hide()},element:function(){return this.el}});var Ut=Dt;function Wt(t,e){for(var i=0;it)}if(e.get("controls")){var r=gt(e);Object(Tt.v)(u,"jw-flag-audio-player",r),e.set("audioMode",r)}}function R(){e.set("visibility",mt(e,u))}this.updateBounds=function(){Object(kt.a)(k);var t=e.get("isFloating")?p:u,i=document.body.contains(t),n=Object(Tt.c)(t),r=Math.round(n.width),s=Math.round(n.height);if(E=Object(Tt.c)(u),r===o&&s===a)return o&&a||P(),void e.set("inDom",i);r&&s||o&&a||P(),(r||s||i)&&(e.set("containerWidth",r),e.set("containerHeight",s)),e.set("inDom",i),i&&bt.a.observe(u)},this.updateStyles=function(){var t=e.get("containerWidth"),i=e.get("containerHeight");L(t,i),z&&z.resize(t,i),G(t,i),v.resize(),O&&F()},this.checkResized=function(){var t=e.get("containerWidth"),i=e.get("containerHeight"),n=e.get("isFloating");if(t!==o||i!==a){this.resizeListener||(this.resizeListener=new Xt.a(p,this,e)),o=t,a=i,l.trigger(d.hb,{width:t,height:i});var s=Object(xt.a)(t);_!==s&&(_=s,l.trigger(d.j,{breakpoint:_}))}n!==r&&(r=n,l.trigger(d.x,{floating:n}),R())},this.responsiveListener=P,this.setup=function(){var n,o,a,r;g.setup(u.querySelector(".jw-preview")),b.setup(u.querySelector(".jw-title")),(i=new Nt(e)).setup(),i.setContainer(p),i.on(d.A,K),v.setup(u.id,e.get("captions")),b.element().parentNode.insertBefore(v.element(),b.element()),n=t,a=new Pt(o=e,h),r=o.get("controls"),a.on({click:function(){l.trigger(d.p),z&&(ct()?z.settingsMenu.close():ut()?z.infoOverlay.close():n.playToggle({reason:"interaction"}))},tap:function(){u.removeEventListener("mousemove",W),u.removeEventListener("mouseout",Y),u.removeEventListener("mouseover",Q),l.trigger(d.p),ct()&&z.settingsMenu.close(),ut()&&z.infoOverlay.close();var t=o.get("state");if(r&&(t===d.mb||t===d.kb||o.get("instream")&&t===d.ob)&&n.playToggle({reason:"interaction"}),r&&t===d.ob){if(o.get("instream")||o.get("castActive")||"audio"===o.get("mediaType"))return;Object(Tt.v)(u,"jw-flag-controls-hidden"),l.dismissible&&Object(Tt.v)(u,"jw-floating-dismissible",Object(Tt.i)(u,"jw-flag-controls-hidden")),v.renderCues(!0)}else z&&(z.showing?z.userInactive():z.userActive())},doubleClick:function(){return z&&n.setFullscreen()}}),u.addEventListener("mousemove",W),u.addEventListener("mouseover",Q),u.addEventListener("mouseout",Y),C=a,S=new _t.a(u).on("click",(function(){})),T=Et(u,document,et),e.on("change:hideAdsControls",(function(t,e){Object(Tt.v)(u,"jw-flag-ads-hide-controls",e)})),e.on("change:scrubbing",(function(t,e){Object(Tt.v)(u,"jw-flag-dragging",e)})),e.on("change:playRejected",(function(t,e){Object(Tt.v)(u,"jw-flag-play-rejected",e)})),e.on(d.X,tt),e.on("change:".concat(d.U),(function(){G(),v.resize()})),e.player.on("change:errorEvent",at),e.change("stretching",X);var s=e.get("width"),c=e.get("height"),f=$(s,c);Object(Ot.d)(u,f),e.change("aspectratio",Z),L(s,c),e.get("controls")||(Object(Tt.a)(u,"jw-flag-controls-hidden"),Object(Tt.o)(u,"jw-floating-dismissible")),Kt&&Object(Tt.a)(u,"jw-ie");var j=e.get("skin")||{};j.name&&Object(Tt.p)(u,/jw-skin-\S+/,"jw-skin-"+j.name);var y=function(t){t||(t={});var e=t.active,i=t.inactive,n=t.background,o={};return o.controlbar=function(t){if(t||e||i||n){var o={};return t=t||{},o.iconsActive=t.iconsActive||e,o.icons=t.icons||i,o.text=t.text||i,o.background=t.background||n,o}}(t.controlbar),o.timeslider=function(t){if(t||e){var i={};return t=t||{},i.progress=t.progress||e,i.rail=t.rail,i}}(t.timeslider),o.menus=function(t){if(t||e||i||n){var o={};return t=t||{},o.text=t.text||i,o.textActive=t.textActive||e,o.background=t.background||n,o}}(t.menus),o.tooltips=function(t){if(t||i||n){var e={};return t=t||{},e.text=t.text||i,e.background=t.background||n,e}}(t.tooltips),o}(j);!function(t,e){var i;function n(e,i,n,o){if(n){e=Object(w.f)(e,"#"+t+(o?"":" "));var a={};a[i]=n,Object(Ot.b)(e.join(", "),a,t)}}e&&(e.controlbar&&function(e){n([".jw-controlbar .jw-icon-inline.jw-text",".jw-title-primary",".jw-title-secondary"],"color",e.text),e.icons&&(n([".jw-button-color:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:not(.jw-icon-cast)"],"color",e.icons),n([".jw-display-icon-container .jw-button-color"],"color",e.icons),Object(Ot.b)("#".concat(t," .jw-icon-cast google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(e.icons,"}"),t));e.iconsActive&&(n([".jw-display-icon-container .jw-button-color:hover",".jw-display-icon-container .jw-button-color:focus"],"color",e.iconsActive),n([".jw-button-color.jw-toggle:not(.jw-icon-cast)",".jw-button-color:hover:not(.jw-icon-cast)",".jw-button-color:focus:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:hover:not(.jw-icon-cast)"],"color",e.iconsActive),n([".jw-svg-icon-buffer"],"fill",e.icons),Object(Ot.b)("#".concat(t," .jw-icon-cast:hover google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(e.iconsActive,"}"),t),Object(Ot.b)("#".concat(t," .jw-icon-cast:focus google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(e.iconsActive,"}"),t),Object(Ot.b)("#".concat(t," .jw-icon-cast google-cast-launcher.jw-off:focus"),"{--disconnected-color: ".concat(e.iconsActive,"}"),t),Object(Ot.b)("#".concat(t," .jw-icon-cast google-cast-launcher"),"{--connected-color: ".concat(e.iconsActive,"}"),t),Object(Ot.b)("#".concat(t," .jw-icon-cast google-cast-launcher:focus"),"{--connected-color: ".concat(e.iconsActive,"}"),t),Object(Ot.b)("#".concat(t," .jw-icon-cast:hover google-cast-launcher"),"{--connected-color: ".concat(e.iconsActive,"}"),t),Object(Ot.b)("#".concat(t," .jw-icon-cast:focus google-cast-launcher"),"{--connected-color: ".concat(e.iconsActive,"}"),t));n([" .jw-settings-topbar",":not(.jw-state-idle) .jw-controlbar",".jw-flag-audio-player .jw-controlbar"],"background",e.background,!0)}(e.controlbar),e.timeslider&&function(t){var e=t.progress;"none"!==e&&(n([".jw-progress",".jw-knob"],"background-color",e),n([".jw-buffer"],"background-color",Object(Ot.c)(e,50)));n([".jw-rail"],"background-color",t.rail),n([".jw-background-color.jw-slider-time",".jw-slider-time .jw-cue"],"background-color",t.background)}(e.timeslider),e.menus&&(n([".jw-option",".jw-toggle.jw-off",".jw-skip .jw-skip-icon",".jw-nextup-tooltip",".jw-nextup-close",".jw-settings-content-item",".jw-related-title"],"color",(i=e.menus).text),n([".jw-option.jw-active-option",".jw-option:not(.jw-active-option):hover",".jw-option:not(.jw-active-option):focus",".jw-settings-content-item:hover",".jw-nextup-tooltip:hover",".jw-nextup-tooltip:focus",".jw-nextup-close:hover"],"color",i.textActive),n([".jw-nextup",".jw-settings-menu"],"background",i.background)),e.tooltips&&function(t){n([".jw-skip",".jw-tooltip .jw-text",".jw-time-tip .jw-text"],"background-color",t.background),n([".jw-time-tip",".jw-tooltip"],"color",t.background),n([".jw-skip"],"border","none"),n([".jw-skip .jw-text",".jw-skip .jw-icon",".jw-time-tip .jw-text",".jw-tooltip .jw-text"],"color",t.text)}(e.tooltips),e.menus&&function(e){if(e.textActive){var i={color:e.textActive,borderColor:e.textActive,stroke:e.textActive};Object(Ot.b)("#".concat(t," .jw-color-active"),i,t),Object(Ot.b)("#".concat(t," .jw-color-active-hover:hover"),i,t)}if(e.text){var n={color:e.text,borderColor:e.text,stroke:e.text};Object(Ot.b)("#".concat(t," .jw-color-inactive"),n,t),Object(Ot.b)("#".concat(t," .jw-color-inactive-hover:hover"),n,t)}}(e.menus))}(e.get("id"),y),e.set("mediaContainer",h),e.set("iFrame",m.Features.iframe),e.set("activeTab",Object(yt.a)()),e.set("touchMode",Zt&&("string"==typeof c||c>=jt)),bt.a.add(this),e.get("enableGradient")&&!Kt&&Object(Tt.a)(u,"jw-ab-drop-shadow"),this.isSetup=!0,e.trigger("viewSetup",u);var k=document.body.contains(u);k&&bt.a.observe(u),e.set("inDom",k)},this.init=function(){this.updateBounds(),e.on("change:fullscreen",J),e.on("change:activeTab",R),e.on("change:fullscreen",R),e.on("change:intersectionRatio",R),e.on("change:visibility",U),e.on("instreamMode",(function(t){t?dt():pt()})),R(),1!==bt.a.size()||e.get("visibility")||U(e,1,0);var t=e.player;e.change("state",rt),t.change("controls",q),e.change("streamType",nt),e.change("mediaType",ot),t.change("playlistItem",(function(t,e){lt(t,e)})),o=a=null,O&&m.OS.mobile&&bt.a.addScrollHandler(F),this.checkResized()};var B,V=62,H=!0;function N(){var t=e.get("isFloating"),i=E.top0&&void 0!==arguments[0])||arguments[0],e={x:0,y:0,width:o||0,height:a||0};return z&&t&&(e.height-=z.controlbarHeight()),e},this.setCaptions=function(t){v.clear(),v.setup(e.get("id"),t),v.resize()},this.setIntersection=function(t){var i=Math.round(100*t.intersectionRatio)/100;e.set("intersectionRatio",i),O&&!A()&&(M=M||i>=.5)&&wt(i)},this.stopFloating=function(t,i){if(t&&(O=null,bt.a.removeScrollHandler(F)),Jt===u){Jt=null,e.set("isFloating",!1);var n=function(){Object(Tt.o)(u,"jw-flag-floating"),Z(e,e.get("aspectratio")),Object(Ot.d)(u,{backgroundImage:null}),Object(Ot.d)(p,{maxWidth:null,width:null,height:null,left:null,right:null,top:null,bottom:null,margin:null,transform:null,transition:null,"transition-timing-function":null})};i?(Object(Ot.d)(p,{transform:"translateY(-".concat(V-E.top,"px)"),"transition-timing-function":"ease-out"}),setTimeout(n,150)):n(),j.disable(),P()}},this.destroy=function(){e.destroy(),bt.a.unobserve(u),bt.a.remove(this),this.isSetup=!1,this.off(),Object(kt.a)(k),clearTimeout(y),Jt===u&&(Jt=null),S&&(S.destroy(),S=null),T&&(T.destroy(),T=null),z&&z.disable(e),C&&(C.destroy(),u.removeEventListener("mousemove",W),u.removeEventListener("mouseout",Y),u.removeEventListener("mouseover",Q),C=null),v.destroy(),i&&(i.destroy(),i=null),Object(Ot.a)(e.get("id")),this.resizeListener&&(this.resizeListener.destroy(),delete this.resizeListener),O&&m.OS.mobile&&bt.a.removeScrollHandler(F)}};function Gt(t,e,i){return(Gt="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,i){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=ae(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(i):o.value}})(t,e,i||t)}function te(t){return(te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ee(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ie(t,e){for(var i=0;ie&&t(),e=n}};function Ee(t,e){e.off(d.N,t._onPlayAttempt),e.off(d.fb,t._triggerFirstFrame),e.off(d.S,t._onTime),t.off("change:activeTab",t._onTabVisible)}var _e=function(t,e){t.change("mediaModel",(function(t,i,n){t._qoeItem&&n&&t._qoeItem.end(n.get("mediaState")),t._qoeItem=new Ce.a,t._qoeItem.getFirstFrame=function(){var t=this.between(d.N,d.H),e=this.between(Se,d.H);return e>0&&e0&&rt(e,t.tracks)}),C).on(d.F,(function(){Promise.resolve().then(at)}),C).on(d.G,C.triggerError,C),_e(T,B),T.on(d.w,C.triggerError,C),T.on("change:state",(function(t,e,i){X()||Z.call(O,t,e,i)}),this),T.on("change:castState",(function(t,e){C.trigger(d.m,e)})),T.on("change:fullscreen",(function(t,e){C.trigger(d.y,{fullscreen:e}),e&&t.set("playOnViewable",!1)})),T.on("change:volume",(function(t,e){C.trigger(d.V,{volume:e})})),T.on("change:mute",(function(t){C.trigger(d.M,{mute:t.getMute()})})),T.on("change:playbackRate",(function(t,e){C.trigger(d.ab,{playbackRate:e,position:t.get("position")})}));var V=function t(e,i){"clickthrough"!==i&&"interaction"!==i&&"external"!==i||(T.set("playOnViewable",!1),T.off("change:playReason change:pauseReason",t))};function H(t,e){Object(n.u)(e)||T.set("viewable",Math.round(e))}function N(){dt&&(!0!==T.get("autostart")||T.get("playOnViewable")||G("autostart"),dt.flush())}function F(t,e){C.trigger("viewable",{viewable:e}),q()}function q(){if((o.a[0]===e||1===T.get("viewable"))&&"idle"===T.get("state")&&!1===T.get("autostart"))if(!b.primed()&&m.OS.android){var t=b.getTestElement(),i=C.getMute();Promise.resolve().then((function(){return be(t,{muted:i})})).then((function(){"idle"===T.get("state")&&B.preloadVideo()})).catch(Pe)}else B.preloadVideo()}function D(t){C._instreamAdapter.noResume=!t,t||et({reason:"viewable"})}function U(t){t||(C.pause({reason:"viewable"}),T.set("playOnViewable",!t))}function W(t,e){var i=X();if(t.get("playOnViewable")){if(e){var n=t.get("autoPause").pauseAds,o=t.get("pauseReason");K()===d.mb?G("viewable"):i&&!n||"interaction"===o||J({reason:"viewable"})}else m.OS.mobile&&!i&&(C.pause({reason:"autostart"}),T.set("playOnViewable",!0));m.OS.mobile&&i&&D(e)}}function Q(t,e){var i=t.get("state"),n=X(),o=t.get("playReason");n?t.get("autoPause").pauseAds?U(e):D(e):i===d.pb||i===d.jb?U(e):i===d.mb&&"playlist"===o&&t.once("change:state",(function(){U(e)}))}function X(){var t=C._instreamAdapter;return!!t&&t.getState()}function K(){var t=X();return t||T.get("state")}function J(t){if(_.cancel(),M=!1,T.get("state")===d.lb)return Promise.resolve();var i=$(t);return T.set("playReason",i),X()?(e.pauseAd(!1,t),Promise.resolve()):(T.get("state")===d.kb&&(tt(!0),C.setItemIndex(0)),!S&&(S=!0,C.trigger(d.C,{playReason:i,startTime:t&&t.startTime?t.startTime:T.get("playlistItem").starttime}),S=!1,Oe()&&!b.primed()&&b.prime(),"playlist"===i&&T.get("autoPause").viewability&&Q(T,T.get("viewable")),x)?(Oe()&&!L&&T.get("mediaElement").load(),x=!1,k=null,Promise.resolve()):B.playVideo(i).then(b.played))}function $(t){return t&&t.reason?t.reason:"unknown"}function G(t){if(K()===d.mb){_=j(N);var e=T.get("advertising");(function(t,e){var i=e.cancelable,n=e.muted,o=void 0!==n&&n,a=e.allowMuted,r=void 0!==a&&a,s=e.timeout,l=void 0===s?1e4:s,c=t.getTestElement(),u=o?"muted":"".concat(r);ke[u]||(ke[u]=be(c,{muted:o}).catch((function(t){if(!i.cancelled()&&!1===o&&r)return be(c,{muted:o=!0});throw t})).then((function(){return o?(ke[u]=null,ve):me})).catch((function(t){throw clearTimeout(d),ke[u]=null,t.reason=ye,t})));var d,p=ke[u].then((function(t){if(clearTimeout(d),i.cancelled()){var e=new Error("Autoplay test was cancelled");throw e.reason="cancelled",e}return t})),w=new Promise((function(t,e){d=setTimeout((function(){ke[u]=null;var t=new Error("Autoplay test timed out");t.reason="timeout",e(t)}),l)}));return Promise.race([p,w])})(b,{cancelable:_,muted:C.getMute(),allowMuted:!e||e.autoplayadsmuted}).then((function(e){return T.set("canAutoplay",e),e!==ve||C.getMute()||(T.set("autostartMuted",!0),ut(),T.once("change:autostartMuted",(function(t){t.off("change:viewable",W),C.trigger(d.M,{mute:T.getMute()})}))),C.getMute()&&T.get("enableDefaultCaptions")&&y.selectDefaultIndex(1),J({reason:t}).catch((function(){C._instreamAdapter||T.set("autostartFailed",!0),k=null}))})).catch((function(t){if(T.set("canAutoplay",ye),T.set("autostart",!1),!_.cancelled()){var e=Object(g.w)(t);C.trigger(d.h,{reason:t.reason,code:e,error:t})}}))}}function tt(t){if(_.cancel(),dt.empty(),X()){var e=C._instreamAdapter;return e&&(e.noResume=!0),void(k=function(){return B.stopVideo()})}k=null,!t&&(M=!0),S&&(x=!0),T.set("errorEvent",void 0),B.stopVideo()}function et(t){var e=$(t);T.set("pauseReason",e),T.set("playOnViewable","viewable"===e)}function it(t){k=null,_.cancel();var i=X();if(i&&i!==d.ob)return et(t),void e.pauseAd(!0,t);switch(T.get("state")){case d.lb:return;case d.pb:case d.jb:et(t),B.pause();break;default:S&&(x=!0)}}function nt(t,e){tt(!0),C.setItemIndex(t),C.play(e)}function ot(t){nt(T.get("item")+1,t)}function at(){C.completeCancelled()||(k=C.completeHandler,C.shouldAutoAdvance()?C.nextItem():T.get("repeat")?ot({reason:"repeat"}):(m.OS.iOS&<(!1),T.set("playOnViewable",!1),T.set("state",d.kb),C.trigger(d.cb,{})))}function rt(t,e){t=parseInt(t,10)||0,T.persistVideoSubtitleTrack(t,e),B.subtitles=t,C.trigger(d.k,{tracks:st(),track:t})}function st(){return y.getCaptionsList()}function lt(t){Object(n.o)(t)||(t=!T.get("fullscreen")),T.set("fullscreen",t),C._instreamAdapter&&C._instreamAdapter._adModel&&C._instreamAdapter._adModel.set("fullscreen",t)}function ut(){B.mute=T.getMute(),B.volume=T.get("volume")}T.on("change:playReason change:pauseReason",V),C.on(d.c,(function(t){return V(0,t.playReason)})),C.on(d.b,(function(t){return V(0,t.pauseReason)})),T.on("change:scrubbing",(function(t,e){e?(E=T.get("state")!==d.ob,it()):E&&J({reason:"interaction"})})),T.on("change:captionsList",(function(t,e){C.trigger(d.l,{tracks:e,track:T.get("captionsIndex")||0})})),T.on("change:mediaModel",(function(t,e){var i=this;t.set("errorEvent",void 0),e.change("mediaState",(function(e,i){var n;t.get("errorEvent")||t.set(d.bb,(n=i)===d.nb||n===d.qb?d.jb:n)}),this),e.change("duration",(function(e,i){if(0!==i){var n=t.get("minDvrWindow"),o=Object(xe.b)(i,n);t.setStreamType(o)}}),this);var n=t.get("item")+1,o="autoplay"===(t.get("related")||{}).oncomplete,a=t.get("playlist")[n];if((a||o)&&L){e.on("change:position",(function t(n,r){var s=a&&!a.daiSetting,l=e.get("duration");s&&r&&l>0&&r>=l-p.b?(e.off("change:position",t,i),B.backgroundLoad(a)):o&&(a=T.get("nextUp"))}),this)}})),(y=new wt(T)).on("all",I,C),R.on("viewSetup",(function(t){Object(a.b)(O,t)})),this.playerReady=function(){v.once(d.hb,(function(){try{!function(){T.change("visibility",H),A.off(),C.trigger(d.gb,{setupTime:0}),T.change("playlist",(function(t,e){if(e.length){var i={playlist:e},o=T.get("feedData");o&&(i.feedData=Object(n.h)({},o)),C.trigger(d.eb,i)}})),T.change("playlistItem",(function(t,e){if(e){var i=e.title,n=e.image;if("mediaSession"in navigator&&window.MediaMetadata&&(i||n))try{navigator.mediaSession.metadata=new window.MediaMetadata({title:i,artist:window.location.hostname,artwork:[{src:n||""}]})}catch(t){}t.set("cues",[]),C.trigger(d.db,{index:T.get("item"),item:e})}})),A.flush(),A.destroy(),A=null,T.change("viewable",F),T.change("viewable",W),T.get("autoPause").viewability?T.change("viewable",Q):T.once("change:autostartFailed change:mute",(function(t){t.off("change:viewable",W)}));N(),T.on("change:itemReady",(function(t,e){e&&dt.flush()}))}()}catch(t){C.triggerError(Object(g.v)(g.m,g.a,t))}})),v.init()},this.preload=q,this.load=function(t,e){var i,n=C._instreamAdapter;switch(n&&(n.noResume=!0),C.trigger("destroyPlugin",{}),tt(!0),_.cancel(),_=j(N),z.cancel(),Oe()&&b.prime(),ze(t)){case"string":T.attributes.item=0,T.attributes.itemReady=!1,z=j((function(t){if(t)return C.updatePlaylist(Object(c.a)(t.playlist),t)})),i=function(t){var e=this;return new Promise((function(i,n){var o=new l.a;o.on(d.eb,(function(t){i(t)})),o.on(d.w,n,e),o.load(t)}))}(t).then(z.async);break;case"object":T.attributes.item=0,i=C.updatePlaylist(Object(c.a)(t),e||{});break;case"number":i=C.setItemIndex(t);break;default:return}i.catch((function(t){C.triggerError(Object(g.u)(t,g.c))})),i.then(_.async).catch(Pe)},this.play=function(t){return J(t).catch(Pe)},this.pause=it,this.seek=function(t,e){var i=T.get("state");if(i!==d.lb){B.position=t;var n=i===d.mb;T.get("scrubbing")||!n&&i!==d.kb||(n&&((e=e||{}).startTime=t),this.play(e))}},this.stop=tt,this.playlistItem=nt,this.playlistNext=ot,this.playlistPrev=function(t){nt(T.get("item")-1,t)},this.setCurrentCaptions=rt,this.setCurrentQuality=function(t){B.quality=t},this.setFullscreen=lt,this.getCurrentQuality=function(){return B.quality},this.getQualityLevels=function(){return B.qualities},this.setCurrentAudioTrack=function(t){B.audioTrack=t},this.getCurrentAudioTrack=function(){return B.audioTrack},this.getAudioTracks=function(){return B.audioTracks},this.getCurrentCaptions=function(){return y.getCurrentIndex()},this.getCaptionsList=st,this.getVisualQuality=function(){var t=this._model.get("mediaModel");return t?t.get(d.U):null},this.getConfig=function(){return this._model?this._model.getConfiguration():void 0},this.getState=K,this.next=Pe,this.completeHandler=at,this.completeCancelled=function(){return(t=T.get("state"))!==d.mb&&t!==d.kb&&t!==d.lb||!!M&&(M=!1,!0);var t},this.shouldAutoAdvance=function(){return T.get("item")!==T.get("playlist").length-1},this.nextItem=function(){ot({reason:"playlist"})},this.setConfig=function(t){!function(t,e){var i=t._model,n=i.attributes;e.height&&(e.height=Object(r.b)(e.height),e.width=e.width||n.width),e.width&&(e.width=Object(r.b)(e.width),e.aspectratio?(n.width=e.width,delete e.width):e.height=n.height),e.width&&e.height&&!e.aspectratio&&t._view.resize(e.width,e.height),Object.keys(e).forEach((function(o){var a=e[o];if(void 0!==a)switch(o){case"aspectratio":i.set(o,Object(r.a)(a,n.width));break;case"autostart":!function(t,e,i){t.setAutoStart(i),"idle"===t.get("state")&&!0===i&&e.play({reason:"autostart"})}(i,t,a);break;case"mute":t.setMute(a);break;case"volume":t.setVolume(a);break;case"playbackRateControls":case"playbackRates":case"repeat":case"stretching":i.set(o,a)}}))}(C,t)},this.setItemIndex=function(t){B.stopVideo();var e=T.get("playlist").length;return(t=(parseInt(t,10)||0)%e)<0&&(t+=e),B.setActiveItem(t).catch((function(t){t.code>=151&&t.code<=162&&(t=Object(g.u)(t,g.e)),O.triggerError(Object(g.v)(g.k,g.d,t))}))},this.detachMedia=function(){if(S&&(x=!0),T.get("autoPause").viewability&&Q(T,T.get("viewable")),!L)return B.setAttached(!1);B.backgroundActiveMedia()},this.attachMedia=function(){L?B.restoreBackgroundMedia():B.setAttached(!0),"function"==typeof k&&k()},this.routeEvents=function(t){return B.routeEvents(t)},this.forwardEvents=function(){return B.forwardEvents()},this.playVideo=function(t){return B.playVideo(t)},this.stopVideo=function(){return B.stopVideo()},this.castVideo=function(t,e){return B.castVideo(t,e)},this.stopCast=function(){return B.stopCast()},this.backgroundActiveMedia=function(){return B.backgroundActiveMedia()},this.restoreBackgroundMedia=function(){return B.restoreBackgroundMedia()},this.preloadNextItem=function(){B.background.currentMedia&&B.preloadVideo()},this.isBeforeComplete=function(){return B.beforeComplete},this.setVolume=function(t){T.setVolume(t),ut()},this.setMute=function(t){T.setMute(t),ut()},this.setPlaybackRate=function(t){T.setPlaybackRate(t)},this.getProvider=function(){return T.get("provider")},this.getWidth=function(){return T.get("containerWidth")},this.getHeight=function(){return T.get("containerHeight")},this.getItemQoe=function(){return T._qoeItem},this.addButton=function(t,e,i,n,o){var a=T.get("customButtons")||[],r=!1,s={img:t,tooltip:e,callback:i,id:n,btnClass:o};a=a.reduce((function(t,e){return e.id===n?(r=!0,t.push(s)):t.push(e),t}),[]),r||a.unshift(s),T.set("customButtons",a)},this.removeButton=function(t){var e=T.get("customButtons")||[];e=e.filter((function(e){return e.id!==t})),T.set("customButtons",e)},this.resize=v.resize,this.getSafeRegion=v.getSafeRegion,this.setCaptions=v.setCaptions,this.checkBeforePlay=function(){return S},this.setControls=function(t){Object(n.o)(t)||(t=!T.get("controls")),T.set("controls",t),B.controls=t},this.addCues=function(t){this.setCues(T.get("cues").concat(t))},this.setCues=function(t){T.set("cues",t)},this.updatePlaylist=function(t,e){try{var i=Object(c.b)(t,T,e);Object(c.e)(i);var o=Object(n.h)({},e);delete o.playlist,T.set("feedData",o),T.set("playlist",i)}catch(t){return Promise.reject(t)}return this.setItemIndex(T.get("item"))},this.setPlaylistItem=function(t,e){(e=Object(c.d)(T,new u.a(e),e.feedData||{}))&&(T.get("playlist")[t]=e,t===T.get("item")&&"idle"===T.get("state")&&this.setItemIndex(t))},this.playerDestroy=function(){this.off(),this.stop(),Object(a.b)(this,this.originalContainer),v&&v.destroy(),T&&T.destroy(),dt&&dt.destroy(),y&&y.destroy(),B&&B.destroy(),this.instreamDestroy()},this.isBeforePlay=this.checkBeforePlay,this.createInstream=function(){return this.instreamDestroy(),this._instreamAdapter=new ct(this,T,v,b),this._instreamAdapter},this.instreamDestroy=function(){C._instreamAdapter&&(C._instreamAdapter.destroy(),C._instreamAdapter=null)};var dt=new s.a(this,["play","pause","setCurrentAudioTrack","setCurrentCaptions","setCurrentQuality","setFullscreen"],(function(){return!O._model.get("itemReady")||A}));dt.queue.push.apply(dt.queue,h),v.setup()},get:function(t){if(t in y.a){var e=this._model.get("mediaModel");return e?e.get(t):y.a[t]}return this._model.get(t)},getContainer:function(){return this.currentContainer||this.originalContainer},getMute:function(){return this._model.getMute()},triggerError:function(t){var e=this._model;t.message=e.get("localization").errors[t.key],delete t.key,e.set("errorEvent",t),e.set("state",d.lb),e.once("change:state",(function(){this.set("errorEvent",void 0)}),e),this.trigger(d.w,t)}});e.default=Ae},,,,,,,,,,,,function(t,e){!function(t,e){"use strict";if("IntersectionObserver"in t&&"IntersectionObserverEntry"in t&&"intersectionRatio"in t.IntersectionObserverEntry.prototype)"isIntersecting"in t.IntersectionObserverEntry.prototype||Object.defineProperty(t.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}});else{var i=[];o.prototype.THROTTLE_TIMEOUT=100,o.prototype.POLL_INTERVAL=null,o.prototype.USE_MUTATION_OBSERVER=!0,o.prototype.observe=function(t){if(!this._observationTargets.some((function(e){return e.element==t}))){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(),this._checkForIntersections()}},o.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter((function(e){return e.element!=t})),this._observationTargets.length||(this._unmonitorIntersections(),this._unregisterInstance())},o.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorIntersections(),this._unregisterInstance()},o.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},o.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter((function(t,e,i){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==i[e-1]}))},o.prototype._parseRootMargin=function(t){var e=(t||"0px").split(/\s+/).map((function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}}));return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},o.prototype._monitorIntersections=function(){this._monitoringIntersections||(this._monitoringIntersections=!0,this.POLL_INTERVAL?this._monitoringInterval=setInterval(this._checkForIntersections,this.POLL_INTERVAL):(a(t,"resize",this._checkForIntersections,!0),a(e,"scroll",this._checkForIntersections,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in t&&(this._domObserver=new MutationObserver(this._checkForIntersections),this._domObserver.observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))))},o.prototype._unmonitorIntersections=function(){this._monitoringIntersections&&(this._monitoringIntersections=!1,clearInterval(this._monitoringInterval),this._monitoringInterval=null,r(t,"resize",this._checkForIntersections,!0),r(e,"scroll",this._checkForIntersections,!0),this._domObserver&&(this._domObserver.disconnect(),this._domObserver=null))},o.prototype._checkForIntersections=function(){var e=this._rootIsInDom(),i=e?this._getRootRect():{top:0,bottom:0,left:0,right:0,width:0,height:0};this._observationTargets.forEach((function(o){var a=o.element,r=s(a),l=this._rootContainsTarget(a),c=o.entry,u=e&&l&&this._computeTargetAndRootIntersection(a,i),d=o.entry=new n({time:t.performance&&performance.now&&performance.now(),target:a,boundingClientRect:r,rootBounds:i,intersectionRect:u});c?e&&l?this._hasCrossedThreshold(c,d)&&this._queuedEntries.push(d):c&&c.isIntersecting&&this._queuedEntries.push(d):this._queuedEntries.push(d)}),this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)},o.prototype._computeTargetAndRootIntersection=function(i,n){if("none"!=t.getComputedStyle(i).display){for(var o,a,r,l,u,d,p,w,f=s(i),h=c(i),j=!1;!j;){var g=null,b=1==h.nodeType?t.getComputedStyle(h):{};if("none"==b.display)return;if(h==this.root||h==e?(j=!0,g=n):h!=e.body&&h!=e.documentElement&&"visible"!=b.overflow&&(g=s(h)),g&&(o=g,a=f,r=void 0,l=void 0,u=void 0,d=void 0,p=void 0,w=void 0,r=Math.max(o.top,a.top),l=Math.min(o.bottom,a.bottom),u=Math.max(o.left,a.left),d=Math.min(o.right,a.right),w=l-r,!(f=(p=d-u)>=0&&w>=0&&{top:r,bottom:l,left:u,right:d,width:p,height:w})))break;h=c(h)}return f}},o.prototype._getRootRect=function(){var t;if(this.root)t=s(this.root);else{var i=e.documentElement,n=e.body;t={top:0,left:0,right:i.clientWidth||n.clientWidth,width:i.clientWidth||n.clientWidth,bottom:i.clientHeight||n.clientHeight,height:i.clientHeight||n.clientHeight}}return this._expandRectByRootMargin(t)},o.prototype._expandRectByRootMargin=function(t){var e=this._rootMarginValues.map((function(e,i){return"px"==e.unit?e.value:e.value*(i%2?t.width:t.height)/100})),i={top:t.top-e[0],right:t.right+e[1],bottom:t.bottom+e[2],left:t.left-e[3]};return i.width=i.right-i.left,i.height=i.bottom-i.top,i},o.prototype._hasCrossedThreshold=function(t,e){var i=t&&t.isIntersecting?t.intersectionRatio||0:-1,n=e.isIntersecting?e.intersectionRatio||0:-1;if(i!==n)for(var o=0;o0&&(o=0),i.length>o+1&&i[o+1]){var a=i[o],r=a.indexOf(" --\x3e ");r>0&&(e.begin=Object(n.g)(a.substr(0,r)),e.end=Object(n.g)(a.substr(r+5)),e.text=i.slice(o+1).join("\r\n"))}return e}},function(t,e,i){"use strict";i.d(e,"a",(function(){return o})),i.d(e,"b",(function(){return a}));var n=i(5);function o(t){var e=-1;return t>=1280?e=7:t>=960?e=6:t>=800?e=5:t>=640?e=4:t>=540?e=3:t>=420?e=2:t>=320?e=1:t>=250&&(e=0),e}function a(t,e){var i="jw-breakpoint-"+e;Object(n.p)(t,/jw-breakpoint--?\d+/,i)}},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),a=n.sources.map((function(t){return"/*# sourceURL="+n.sourceRoot+t+" */"}));return[i].concat(a).concat([o]).join("\n")}var r;return[i].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+i+"}":i})).join("")},e.i=function(t,i){"string"==typeof t&&(t=[[null,t,""]]);for(var n={},o=0;o1&&(i+=" ["+e+"]")),{label:i,unknownCount:e}}i.d(e,"a",(function(){return n})),i.d(e,"b",(function(){return o}))},function(t,e,i){"use strict";function n(t){return new Promise((function(e,i){if(t.paused)return i(o("NotAllowedError",0,"play() failed."));var n=function(){t.removeEventListener("play",a),t.removeEventListener("playing",r),t.removeEventListener("pause",r),t.removeEventListener("abort",r),t.removeEventListener("error",r)},a=function(){t.addEventListener("playing",r),t.addEventListener("abort",r),t.addEventListener("error",r),t.addEventListener("pause",r)},r=function(t){if(n(),"playing"===t.type)e();else{var a='The play() request was interrupted by a "'.concat(t.type,'" event.');"error"===t.type?i(o("NotSupportedError",9,a)):i(o("AbortError",20,a))}};t.addEventListener("play",a)}))}function o(t,e,i){var n=new Error(i);return n.name=t,n.code=e,n}i.d(e,"a",(function(){return n}))},function(t,e,i){"use strict";function n(t,e){return t!==1/0&&Math.abs(t)>=Math.max(a(e),0)}function o(t,e){var i="VOD";return t===1/0?i="LIVE":t<0&&(i=n(t,a(e))?"DVR":"LIVE"),i}function a(t){return void 0===t?120:Math.max(t,0)}i.d(e,"a",(function(){return n})),i.d(e,"b",(function(){return o}))},function(t,e,i){"use strict";var n=i(64),o=i(16),a=i(22),r=i(4),s=i(57),l=i(2),c=i(1);function u(t){throw new c.n(null,t)}function d(t,e,n){t.xhr=Object(a.a)(t.file,(function(a){!function(t,e,n,a){var d,p,f=t.responseXML?t.responseXML.firstChild:null;if(f)for("xml"===Object(r.b)(f)&&(f=f.nextSibling);f.nodeType===f.COMMENT_NODE;)f=f.nextSibling;try{if(f&&"tt"===Object(r.b)(f))d=function(t){t||u(306007);var e=[],i=t.getElementsByTagName("p"),n=30,o=t.getElementsByTagName("tt");if(o&&o[0]){var a=parseFloat(o[0].getAttribute("ttp:frameRate"));isNaN(a)||(n=a)}i||u(306005),i.length||(i=t.getElementsByTagName("tt:p")).length||(i=t.getElementsByTagName("tts:p"));for(var r=0;r\s+<").replace(/(<\/?)tts?:/g,"$1").replace(//g,"\r\n");if(f){var h=s.getAttribute("begin"),j=s.getAttribute("dur"),g=s.getAttribute("end"),b={begin:Object(l.g)(h,n),text:f};g?b.end=Object(l.g)(g,n):j&&(b.end=b.begin+Object(l.g)(j,n)),e.push(b)}}return e.length||u(306005),e}(t.responseXML),p=w(d),delete e.xhr,n(p);else{var h=t.responseText;h.indexOf("WEBVTT")>=0?i.e(10).then(function(t){return i(92).default}.bind(null,i)).catch(Object(o.c)(301131)).then((function(t){var i=new t(window);p=[],i.oncue=function(t){p.push(t)},i.onflush=function(){delete e.xhr,n(p)},i.parse(h)})).catch((function(t){delete e.xhr,a(Object(c.v)(null,c.b,t))})):(d=Object(s.a)(h),p=w(d),delete e.xhr,n(p))}}catch(t){delete e.xhr,a(Object(c.v)(null,c.b,t))}}(a,t,e,n)}),(function(t,e,i,o){n(Object(c.u)(o,c.b))}))}function p(t){t&&t.forEach((function(t){var e=t.xhr;e&&(e.onload=null,e.onreadystatechange=null,e.onerror=null,"abort"in e&&e.abort()),delete t.xhr}))}function w(t){return t.map((function(t){return new n.a(t.begin,t.end,t.text)}))}i.d(e,"c",(function(){return d})),i.d(e,"a",(function(){return p})),i.d(e,"b",(function(){return w}))},function(t,e,i){"use strict";var n=window.VTTCue;function o(t){if("string"!=typeof t)return!1;return!!{start:!0,middle:!0,end:!0,left:!0,right:!0}[t.toLowerCase()]&&t.toLowerCase()}if(!n){(n=function(t,e,i){var n=this;n.hasBeenReset=!1;var a="",r=!1,s=t,l=e,c=i,u=null,d="",p=!0,w="auto",f="start",h="auto",j=100,g="middle";Object.defineProperty(n,"id",{enumerable:!0,get:function(){return a},set:function(t){a=""+t}}),Object.defineProperty(n,"pauseOnExit",{enumerable:!0,get:function(){return r},set:function(t){r=!!t}}),Object.defineProperty(n,"startTime",{enumerable:!0,get:function(){return s},set:function(t){if("number"!=typeof t)throw new TypeError("Start time must be set to a number.");s=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"endTime",{enumerable:!0,get:function(){return l},set:function(t){if("number"!=typeof t)throw new TypeError("End time must be set to a number.");l=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"text",{enumerable:!0,get:function(){return c},set:function(t){c=""+t,this.hasBeenReset=!0}}),Object.defineProperty(n,"region",{enumerable:!0,get:function(){return u},set:function(t){u=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"vertical",{enumerable:!0,get:function(){return d},set:function(t){var e=function(t){return"string"==typeof t&&(!!{"":!0,lr:!0,rl:!0}[t.toLowerCase()]&&t.toLowerCase())}(t);if(!1===e)throw new SyntaxError("An invalid or illegal string was specified.");d=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"snapToLines",{enumerable:!0,get:function(){return p},set:function(t){p=!!t,this.hasBeenReset=!0}}),Object.defineProperty(n,"line",{enumerable:!0,get:function(){return w},set:function(t){if("number"!=typeof t&&"auto"!==t)throw new SyntaxError("An invalid number or illegal string was specified.");w=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"lineAlign",{enumerable:!0,get:function(){return f},set:function(t){var e=o(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");f=e,this.hasBeenReset=!0}}),Object.defineProperty(n,"position",{enumerable:!0,get:function(){return h},set:function(t){if(t<0||t>100)throw new Error("Position must be between 0 and 100.");h=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"size",{enumerable:!0,get:function(){return j},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");j=t,this.hasBeenReset=!0}}),Object.defineProperty(n,"align",{enumerable:!0,get:function(){return g},set:function(t){var e=o(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");g=e,this.hasBeenReset=!0}}),n.displayState=void 0}).prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)}}e.a=n},function(t,e,i){var n=i(66);"string"==typeof n&&(n=[["all-players",n,""]]),i(35).style(n,"all-players"),n.locals&&(t.exports=n.locals)},function(t,e,i){(t.exports=i(59)(!1)).push([t.i,'.jw-reset{text-align:left;direction:ltr}.jw-reset-text,.jw-reset{color:inherit;background-color:transparent;padding:0;margin:0;float:none;font-family:Arial,Helvetica,sans-serif;font-size:1em;line-height:1em;list-style:none;text-transform:none;vertical-align:baseline;border:0;font-variant:inherit;font-stretch:inherit;-webkit-tap-highlight-color:rgba(255,255,255,0)}body .jw-error,body .jwplayer.jw-state-error{height:100%;width:100%}.jw-title{position:absolute;top:0}.jw-background-color{background:rgba(0,0,0,0.4)}.jw-text{color:rgba(255,255,255,0.8)}.jw-knob{color:rgba(255,255,255,0.8);background-color:#fff}.jw-button-color{color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):focus,:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):hover{color:#fff}.jw-toggle{color:#fff}.jw-toggle.jw-off{color:rgba(255,255,255,0.8)}.jw-toggle.jw-off:focus{color:#fff}.jw-toggle:focus{outline:none}:not(.jw-flag-touch) .jw-toggle.jw-off:hover{color:#fff}.jw-rail{background:rgba(255,255,255,0.3)}.jw-buffer{background:rgba(255,255,255,0.3)}.jw-progress{background:#f2f2f2}.jw-time-tip,.jw-volume-tip{border:0}.jw-slider-volume.jw-volume-tip.jw-background-color.jw-slider-vertical{background:none}.jw-skip{padding:.5em;outline:none}.jw-skip .jw-skiptext,.jw-skip .jw-skip-icon{color:rgba(255,255,255,0.8)}.jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skip.jw-skippable:focus .jw-skip-icon{color:#fff}.jw-icon-cast google-cast-launcher{--connected-color:#fff;--disconnected-color:rgba(255,255,255,0.8)}.jw-icon-cast google-cast-launcher:focus{outline:none}.jw-icon-cast google-cast-launcher.jw-off{--connected-color:rgba(255,255,255,0.8)}.jw-icon-cast:focus google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-icon-cast:hover google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-nextup-container{bottom:2.5em;padding:5px .5em}.jw-nextup{border-radius:0}.jw-color-active{color:#fff;stroke:#fff;border-color:#fff}:not(.jw-flag-touch) .jw-color-active-hover:hover,:not(.jw-flag-touch) .jw-color-active-hover:focus{color:#fff;stroke:#fff;border-color:#fff}.jw-color-inactive{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-color-inactive-hover:hover{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}.jw-option{color:rgba(255,255,255,0.8)}.jw-option.jw-active-option{color:#fff;background-color:rgba(255,255,255,0.1)}:not(.jw-flag-touch) .jw-option:hover{color:#fff}.jwplayer{width:100%;font-size:16px;position:relative;display:block;min-height:0;overflow:hidden;box-sizing:border-box;font-family:Arial,Helvetica,sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.jwplayer *{box-sizing:inherit}.jwplayer.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jwplayer.jw-flag-aspect-mode{height:auto !important}.jwplayer.jw-flag-aspect-mode .jw-aspect{display:block}.jwplayer .jw-aspect{display:none}.jwplayer .jw-swf{outline:none}.jw-media,.jw-preview{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}.jw-media{overflow:hidden;cursor:pointer}.jw-plugin{position:absolute;bottom:66px}.jw-breakpoint-7 .jw-plugin{bottom:132px}.jw-plugin .jw-banner{max-width:100%;opacity:0;cursor:pointer;position:absolute;margin:auto auto 0;left:0;right:0;bottom:0;display:block}.jw-preview,.jw-captions,.jw-title{pointer-events:none}.jw-media,.jw-logo{pointer-events:all}.jw-wrapper{background-color:#000;position:absolute;top:0;left:0;right:0;bottom:0}.jw-hidden-accessibility{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.jw-contract-trigger::before{content:"";overflow:hidden;width:200%;height:200%;display:block;position:absolute;top:0;left:0}.jwplayer .jw-media video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:auto;background:transparent}.jwplayer .jw-media video::-webkit-media-controls-start-playback-button{display:none}.jwplayer.jw-stretch-uniform .jw-media video{object-fit:contain}.jwplayer.jw-stretch-none .jw-media video{object-fit:none}.jwplayer.jw-stretch-fill .jw-media video{object-fit:cover}.jwplayer.jw-stretch-exactfit .jw-media video{object-fit:fill}.jw-preview{position:absolute;display:none;opacity:1;visibility:visible;width:100%;height:100%;background:#000 no-repeat 50% 50%}.jwplayer .jw-preview,.jw-error .jw-preview{background-size:contain}.jw-stretch-none .jw-preview{background-size:auto auto}.jw-stretch-fill .jw-preview{background-size:cover}.jw-stretch-exactfit .jw-preview{background-size:100% 100%}.jw-title{display:none;padding-top:20px;width:100%;z-index:1}.jw-title-primary,.jw-title-secondary{color:#fff;padding-left:20px;padding-right:20px;padding-bottom:.5em;overflow:hidden;text-overflow:ellipsis;direction:unset;white-space:nowrap;width:100%}.jw-title-primary{font-size:1.625em}.jw-breakpoint-2 .jw-title-primary,.jw-breakpoint-3 .jw-title-primary{font-size:1.5em}.jw-flag-small-player .jw-title-primary{font-size:1.25em}.jw-flag-small-player .jw-title-secondary,.jw-title-secondary:empty{display:none}.jw-captions{position:absolute;width:100%;height:100%;text-align:center;display:none;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-decoration:none;pointer-events:none;overflow:hidden;top:0}.jw-captions.jw-captions-enabled{display:block}.jw-captions-window{display:none;padding:.25em;border-radius:.25em}.jw-captions-window.jw-captions-window-active{display:inline-block}.jw-captions-text{display:inline-block;color:#fff;background-color:#000;word-wrap:normal;word-break:normal;white-space:pre-line;font-style:normal;font-weight:normal;text-align:center;text-decoration:none}.jw-text-track-display{font-size:inherit;line-height:1.5}.jw-text-track-cue{background-color:rgba(0,0,0,0.5);color:#fff;padding:.1em .3em}.jwplayer video::-webkit-media-controls{display:none;justify-content:flex-start}.jwplayer video::-webkit-media-text-track-display{min-width:-webkit-min-content}.jwplayer video::cue{background-color:rgba(0,0,0,0.5)}.jwplayer video::-webkit-media-controls-panel-container{display:none}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing) .jw-captions,.jwplayer.jw-flag-media-audio.jw-state-playing .jw-captions,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden) .jw-captions{max-height:calc(100% - 60px)}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-flag-media-audio.jw-state-playing:not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container{max-height:calc(100% - 60px)}.jw-logo{position:absolute;margin:20px;cursor:pointer;pointer-events:all;background-repeat:no-repeat;background-size:contain;top:auto;right:auto;left:auto;bottom:auto;outline:none}.jw-logo.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-flag-audio-player .jw-logo{display:none}.jw-logo-top-right{top:0;right:0}.jw-logo-top-left{top:0;left:0}.jw-logo-bottom-left{left:0}.jw-logo-bottom-right{right:0}.jw-logo-bottom-left,.jw-logo-bottom-right{bottom:44px;transition:bottom 150ms cubic-bezier(0, .25, .25, 1)}.jw-state-idle .jw-logo{z-index:1}.jw-state-setup .jw-wrapper{background-color:inherit}.jw-state-setup .jw-logo,.jw-state-setup .jw-controls,.jw-state-setup .jw-controls-backdrop{visibility:hidden}span.jw-break{display:block}body .jw-error,body .jwplayer.jw-state-error{background-color:#333;color:#fff;font-size:16px;display:table;opacity:1;position:relative}body .jw-error .jw-display,body .jwplayer.jw-state-error .jw-display{display:none}body .jw-error .jw-media,body .jwplayer.jw-state-error .jw-media{cursor:default}body .jw-error .jw-preview,body .jwplayer.jw-state-error .jw-preview{background-color:#333}body .jw-error .jw-error-msg,body .jwplayer.jw-state-error .jw-error-msg{background-color:#000;border-radius:2px;display:flex;flex-direction:row;align-items:stretch;padding:20px}body .jw-error .jw-error-msg .jw-icon,body .jwplayer.jw-state-error .jw-error-msg .jw-icon{height:30px;width:30px;margin-right:20px;flex:0 0 auto;align-self:center}body .jw-error .jw-error-msg .jw-icon:empty,body .jwplayer.jw-state-error .jw-error-msg .jw-icon:empty{display:none}body .jw-error .jw-error-msg .jw-info-container,body .jwplayer.jw-state-error .jw-error-msg .jw-info-container{margin:0;padding:0}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg{flex-direction:column}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text{text-align:center}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon{flex:.5 0 auto;margin-right:0;margin-bottom:20px}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break{display:inline}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break:before{content:" "}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg{height:100%;width:100%;top:0;position:absolute;left:0;background:#000;-webkit-transform:none;transform:none;padding:4px 16px;z-index:1}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg.jw-info-overlay{max-width:none;max-height:none}body .jwplayer.jw-state-error .jw-title,.jw-state-idle .jw-title,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-title{display:block}body .jwplayer.jw-state-error .jw-preview,.jw-state-idle .jw-preview,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-preview{display:block}.jw-state-idle .jw-captions,.jwplayer.jw-state-complete .jw-captions,body .jwplayer.jw-state-error .jw-captions{display:none}.jw-state-idle video::-webkit-media-text-track-container,.jwplayer.jw-state-complete video::-webkit-media-text-track-container,body .jwplayer.jw-state-error video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-fullscreen{width:100% !important;height:100% !important;top:0;right:0;bottom:0;left:0;z-index:1000;margin:0;position:fixed}body .jwplayer.jw-flag-flash-blocked .jw-title{display:block}.jwplayer.jw-flag-controls-hidden .jw-media{cursor:default}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:45px}.jw-flag-floating{background-size:cover;background-color:#000}.jw-flag-floating .jw-wrapper{position:fixed;z-index:2147483647;-webkit-animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;top:auto;bottom:1rem;left:auto;right:1rem;max-width:400px;max-height:400px;margin:0 auto}@media screen and (max-width:480px){.jw-flag-floating .jw-wrapper{width:100%;left:0;right:0}}.jw-flag-floating .jw-wrapper .jw-media{touch-action:none}@media screen and (max-device-width:480px) and (orientation:portrait){.jw-flag-touch.jw-flag-floating .jw-wrapper{-webkit-animation:none;animation:none;top:62px;bottom:auto;left:0;right:0;max-width:none;max-height:none}}.jw-flag-floating .jw-float-icon{pointer-events:all;cursor:pointer;display:none}.jw-flag-floating .jw-float-icon .jw-svg-icon{-webkit-filter:drop-shadow(0 0 1px #000);filter:drop-shadow(0 0 1px #000)}.jw-flag-floating.jw-floating-dismissible .jw-dismiss-icon{display:none}.jw-flag-floating.jw-floating-dismissible.jw-flag-ads .jw-float-icon{display:flex}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-logo,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-logo{display:none}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-float-icon,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-float-icon{display:flex}.jw-float-icon{display:none;position:absolute;top:3px;right:5px;align-items:center;justify-content:center}@-webkit-keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.jw-flag-top{margin-top:2em;overflow:visible}.jw-top{height:2em;line-height:2;pointer-events:none;text-align:center;opacity:.8;position:absolute;top:-2em;width:100%}.jw-top .jw-icon{cursor:pointer;pointer-events:all;height:auto;width:auto}.jw-top .jw-text{color:#555}',""])},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e,i){var n=i(91);"string"==typeof n&&(n=[["all-players",n,""]]),i(35).style(n,"all-players"),n.locals&&(t.exports=n.locals)},function(t,e,i){(t.exports=i(59)(!1)).push([t.i,'.jw-overlays,.jw-controls,.jw-controls-backdrop,.jw-flag-small-player .jw-settings-menu,.jw-settings-submenu{height:100%;width:100%}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-settings-menu .jw-icon.jw-button-color::after{position:absolute;right:0}.jw-overlays,.jw-controls,.jw-controls-backdrop,.jw-settings-item-active::before{top:0;position:absolute;left:0}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-settings-menu .jw-icon.jw-button-color::after{position:absolute;bottom:0;left:0}.jw-nextup-close{position:absolute;top:0;right:0}.jw-overlays,.jw-controls,.jw-flag-small-player .jw-settings-menu{position:absolute;bottom:0;right:0}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after,.jw-time-tip::after,.jw-settings-menu .jw-icon.jw-button-color::after,.jw-text-live::before,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{content:"";display:block}.jw-svg-icon{height:24px;width:24px;fill:currentColor;pointer-events:none}.jw-icon{height:44px;width:44px;background-color:transparent;outline:none}.jw-icon.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-icon-airplay .jw-svg-icon-airplay-off{display:none}.jw-off.jw-icon-airplay .jw-svg-icon-airplay-off{display:block}.jw-icon-airplay .jw-svg-icon-airplay-on{display:block}.jw-off.jw-icon-airplay .jw-svg-icon-airplay-on{display:none}.jw-icon-cc .jw-svg-icon-cc-off{display:none}.jw-off.jw-icon-cc .jw-svg-icon-cc-off{display:block}.jw-icon-cc .jw-svg-icon-cc-on{display:block}.jw-off.jw-icon-cc .jw-svg-icon-cc-on{display:none}.jw-icon-fullscreen .jw-svg-icon-fullscreen-off{display:none}.jw-off.jw-icon-fullscreen .jw-svg-icon-fullscreen-off{display:block}.jw-icon-fullscreen .jw-svg-icon-fullscreen-on{display:block}.jw-off.jw-icon-fullscreen .jw-svg-icon-fullscreen-on{display:none}.jw-icon-volume .jw-svg-icon-volume-0{display:none}.jw-off.jw-icon-volume .jw-svg-icon-volume-0{display:block}.jw-icon-volume .jw-svg-icon-volume-100{display:none}.jw-full.jw-icon-volume .jw-svg-icon-volume-100{display:block}.jw-icon-volume .jw-svg-icon-volume-50{display:block}.jw-off.jw-icon-volume .jw-svg-icon-volume-50,.jw-full.jw-icon-volume .jw-svg-icon-volume-50{display:none}.jw-settings-menu .jw-icon::after,.jw-icon-settings::after,.jw-icon-volume::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon[aria-checked="true"]::after,.jw-settings-open .jw-icon-settings::after,.jw-icon-volume.jw-open::after{opacity:1}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-cc,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-settings,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-audio-tracks,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-hd,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-settings-sharing,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-fullscreen,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player).jw-flag-cast-available .jw-icon-airplay,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player).jw-flag-cast-available .jw-icon-cast{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-volume,.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-text-live{bottom:6px}.jwplayer.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-icon-volume::after{display:none}.jw-overlays,.jw-controls{pointer-events:none}.jw-controls-backdrop{display:block;background:linear-gradient(to bottom, transparent, rgba(0,0,0,0.4) 77%, rgba(0,0,0,0.4) 100%) 100% 100% / 100% 240px no-repeat transparent;transition:opacity 250ms cubic-bezier(0, .25, .25, 1),background-size 250ms cubic-bezier(0, .25, .25, 1);pointer-events:none}.jw-overlays{cursor:auto}.jw-controls{overflow:hidden}.jw-flag-small-player .jw-controls{text-align:center}.jw-text{height:1em;font-family:Arial,Helvetica,sans-serif;font-size:.75em;font-style:normal;font-weight:normal;color:#fff;text-align:center;font-variant:normal;font-stretch:normal}.jw-controlbar,.jw-skip,.jw-display-icon-container .jw-icon,.jw-nextup-container,.jw-autostart-mute,.jw-overlays .jw-plugin{pointer-events:all}.jwplayer .jw-display-icon-container,.jw-error .jw-display-icon-container{width:auto;height:auto;box-sizing:content-box}.jw-display{display:table;height:100%;padding:57px 0;position:relative;width:100%}.jw-flag-dragging .jw-display{display:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-display-container{display:table-cell;height:100%;text-align:center;vertical-align:middle}.jw-display-controls{display:inline-block}.jwplayer .jw-display-icon-container{float:left}.jw-display-icon-container{display:inline-block;padding:5.5px;margin:0 22px}.jw-display-icon-container .jw-icon{height:75px;width:75px;cursor:pointer;display:flex;justify-content:center;align-items:center}.jw-display-icon-container .jw-icon .jw-svg-icon{height:33px;width:33px;padding:0;position:relative}.jw-display-icon-container .jw-icon .jw-svg-icon-rewind{padding:.2em .05em}.jw-breakpoint--1 .jw-nextup-container{display:none}.jw-breakpoint-0 .jw-display-icon-next,.jw-breakpoint--1 .jw-display-icon-next,.jw-breakpoint-0 .jw-display-icon-rewind,.jw-breakpoint--1 .jw-display-icon-rewind{display:none}.jw-breakpoint-0 .jw-display .jw-icon,.jw-breakpoint--1 .jw-display .jw-icon,.jw-breakpoint-0 .jw-display .jw-svg-icon,.jw-breakpoint--1 .jw-display .jw-svg-icon{width:44px;height:44px;line-height:44px}.jw-breakpoint-0 .jw-display .jw-icon:before,.jw-breakpoint--1 .jw-display .jw-icon:before,.jw-breakpoint-0 .jw-display .jw-svg-icon:before,.jw-breakpoint--1 .jw-display .jw-svg-icon:before{width:22px;height:22px}.jw-breakpoint-1 .jw-display .jw-icon,.jw-breakpoint-1 .jw-display .jw-svg-icon{width:44px;height:44px;line-height:44px}.jw-breakpoint-1 .jw-display .jw-icon:before,.jw-breakpoint-1 .jw-display .jw-svg-icon:before{width:22px;height:22px}.jw-breakpoint-1 .jw-display .jw-icon.jw-icon-rewind:before{width:33px;height:33px}.jw-breakpoint-2 .jw-display .jw-icon,.jw-breakpoint-3 .jw-display .jw-icon,.jw-breakpoint-2 .jw-display .jw-svg-icon,.jw-breakpoint-3 .jw-display .jw-svg-icon{width:77px;height:77px;line-height:77px}.jw-breakpoint-2 .jw-display .jw-icon:before,.jw-breakpoint-3 .jw-display .jw-icon:before,.jw-breakpoint-2 .jw-display .jw-svg-icon:before,.jw-breakpoint-3 .jw-display .jw-svg-icon:before{width:38.5px;height:38.5px}.jw-breakpoint-4 .jw-display .jw-icon,.jw-breakpoint-5 .jw-display .jw-icon,.jw-breakpoint-6 .jw-display .jw-icon,.jw-breakpoint-7 .jw-display .jw-icon,.jw-breakpoint-4 .jw-display .jw-svg-icon,.jw-breakpoint-5 .jw-display .jw-svg-icon,.jw-breakpoint-6 .jw-display .jw-svg-icon,.jw-breakpoint-7 .jw-display .jw-svg-icon{width:88px;height:88px;line-height:88px}.jw-breakpoint-4 .jw-display .jw-icon:before,.jw-breakpoint-5 .jw-display .jw-icon:before,.jw-breakpoint-6 .jw-display .jw-icon:before,.jw-breakpoint-7 .jw-display .jw-icon:before,.jw-breakpoint-4 .jw-display .jw-svg-icon:before,.jw-breakpoint-5 .jw-display .jw-svg-icon:before,.jw-breakpoint-6 .jw-display .jw-svg-icon:before,.jw-breakpoint-7 .jw-display .jw-svg-icon:before{width:44px;height:44px}.jw-controlbar{display:flex;flex-flow:row wrap;align-items:center;justify-content:center;position:absolute;left:0;bottom:0;width:100%;border:none;border-radius:0;background-size:auto;box-shadow:none;max-height:72px;transition:250ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s}.jw-breakpoint-7 .jw-controlbar{max-height:140px}.jw-breakpoint-7 .jw-controlbar .jw-button-container{padding:0 48px 20px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-tooltip{margin-bottom:-7px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume .jw-overlay{padding-bottom:40%}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-text{font-size:1em}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-text.jw-text-elapsed{justify-content:flex-end}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-inline,.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume{height:60px;width:60px}.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-inline .jw-svg-icon,.jw-breakpoint-7 .jw-controlbar .jw-button-container .jw-icon-volume .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-controlbar .jw-slider-time{padding:0 60px;height:34px}.jw-breakpoint-7 .jw-controlbar .jw-slider-time .jw-slider-container{height:10px}.jw-controlbar .jw-button-image{background:no-repeat 50% 50%;background-size:contain;max-height:24px}.jw-controlbar .jw-spacer{flex:1 1 auto;align-self:stretch}.jw-controlbar .jw-icon.jw-button-color:hover{color:#fff}.jw-button-container{display:flex;flex-flow:row nowrap;flex:1 1 auto;align-items:center;justify-content:center;width:100%;padding:0 12px}.jw-slider-horizontal{background-color:transparent}.jw-icon-inline{position:relative}.jw-icon-inline,.jw-icon-tooltip{height:44px;width:44px;align-items:center;display:flex;justify-content:center}.jw-icon-inline:not(.jw-text),.jw-icon-tooltip,.jw-slider-horizontal{cursor:pointer}.jw-text-elapsed,.jw-text-duration{justify-content:flex-start;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.jw-icon-tooltip{position:relative}.jw-knob:hover,.jw-icon-inline:hover,.jw-icon-tooltip:hover,.jw-icon-display:hover,.jw-option:before:hover{color:#fff}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{pointer-events:none}.jw-icon-cast{display:none;margin:0;padding:0}.jw-icon-cast google-cast-launcher{background-color:transparent;border:none;padding:0;width:24px;height:24px;cursor:pointer}.jw-icon-inline.jw-icon-volume{display:none}.jwplayer .jw-text-countdown{display:none}.jw-flag-small-player .jw-display{padding-top:0;padding-bottom:0}.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-rewind,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-next,.jw-flag-small-player:not(.jw-flag-audio-player):not(.jw-flag-ads) .jw-controlbar .jw-button-container>.jw-icon-playback{display:none}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controlbar{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-ads-vpaid:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-playing:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop,.jw-flag-user-inactive.jw-state-buffering:not(.jw-flag-media-audio):not(.jw-flag-audio-player):not(.jw-flag-ads-vpaid-controls):not(.jw-flag-casting) .jw-controls-backdrop{opacity:0}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-countdown{display:flex}.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-elapsed,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint--1 .jw-text-duration,.jwplayer:not(.jw-flag-ads):not(.jw-flag-live).jw-breakpoint-0 .jw-text-duration{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-text-countdown,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-related-btn,.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-slider-volume{display:none}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-controlbar{flex-direction:column-reverse}.jwplayer.jw-breakpoint--1:not(.jw-flag-ads):not(.jw-flag-audio-player) .jw-button-container{height:30px}.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-volume,.jw-breakpoint--1.jw-flag-ads:not(.jw-flag-audio-player) .jw-icon-fullscreen{display:none}.jwplayer:not(.jw-breakpoint-0) .jw-text-duration:before,.jwplayer:not(.jw-breakpoint--1) .jw-text-duration:before{content:"/";padding-right:1ch;padding-left:1ch}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar{will-change:transform}.jwplayer:not(.jw-flag-user-inactive) .jw-controlbar .jw-text{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.jw-slider-container{display:flex;align-items:center;position:relative;touch-action:none}.jw-rail,.jw-buffer,.jw-progress{position:absolute;cursor:pointer}.jw-progress{background-color:#f2f2f2}.jw-rail{background-color:rgba(255,255,255,0.3)}.jw-buffer{background-color:rgba(255,255,255,0.3)}.jw-knob{height:13px;width:13px;background-color:#fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,0.4);opacity:1;pointer-events:none;position:absolute;-webkit-transform:translate(-50%, -50%) scale(0);transform:translate(-50%, -50%) scale(0);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform}.jw-flag-dragging .jw-slider-time .jw-knob,.jw-icon-volume:active .jw-slider-volume .jw-knob{box-shadow:0 0 26px rgba(0,0,0,0.2),0 0 10px rgba(0,0,0,0.4),0 0 0 6px rgba(255,255,255,0.2)}.jw-slider-horizontal,.jw-slider-vertical{display:flex}.jw-slider-horizontal .jw-slider-container{height:5px;width:100%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue,.jw-slider-horizontal .jw-knob{top:50%}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-cue{-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress{height:5px}.jw-slider-horizontal .jw-rail{width:100%}.jw-slider-vertical{align-items:center;flex-direction:column}.jw-slider-vertical .jw-slider-container{height:88px;width:5px}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress,.jw-slider-vertical .jw-knob{left:50%}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress{height:100%;width:5px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out;bottom:0}.jw-slider-vertical .jw-knob{-webkit-transform:translate(-50%, 50%);transform:translate(-50%, 50%)}.jw-slider-time.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-slider-time,.jw-flag-audio-player .jw-slider-volume{height:17px;width:100%;align-items:center;background:transparent none;padding:0 12px}.jw-slider-time .jw-cue{background-color:rgba(33,33,33,0.8);cursor:pointer;position:absolute;width:6px}.jw-slider-time,.jw-horizontal-volume-container{z-index:1;outline:none}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail,.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer,.jw-slider-time .jw-progress,.jw-horizontal-volume-container .jw-progress,.jw-slider-time .jw-cue,.jw-horizontal-volume-container .jw-cue{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;-webkit-transform:translate(0, -50%) scale(1, .6);transform:translate(0, -50%) scale(1, .6);transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out}.jw-slider-time:hover .jw-rail,.jw-horizontal-volume-container:hover .jw-rail,.jw-slider-time:focus .jw-rail,.jw-horizontal-volume-container:focus .jw-rail,.jw-flag-dragging .jw-slider-time .jw-rail,.jw-flag-dragging .jw-horizontal-volume-container .jw-rail,.jw-flag-touch .jw-slider-time .jw-rail,.jw-flag-touch .jw-horizontal-volume-container .jw-rail,.jw-slider-time:hover .jw-buffer,.jw-horizontal-volume-container:hover .jw-buffer,.jw-slider-time:focus .jw-buffer,.jw-horizontal-volume-container:focus .jw-buffer,.jw-flag-dragging .jw-slider-time .jw-buffer,.jw-flag-dragging .jw-horizontal-volume-container .jw-buffer,.jw-flag-touch .jw-slider-time .jw-buffer,.jw-flag-touch .jw-horizontal-volume-container .jw-buffer,.jw-slider-time:hover .jw-progress,.jw-horizontal-volume-container:hover .jw-progress,.jw-slider-time:focus .jw-progress,.jw-horizontal-volume-container:focus .jw-progress,.jw-flag-dragging .jw-slider-time .jw-progress,.jw-flag-dragging .jw-horizontal-volume-container .jw-progress,.jw-flag-touch .jw-slider-time .jw-progress,.jw-flag-touch .jw-horizontal-volume-container .jw-progress,.jw-slider-time:hover .jw-cue,.jw-horizontal-volume-container:hover .jw-cue,.jw-slider-time:focus .jw-cue,.jw-horizontal-volume-container:focus .jw-cue,.jw-flag-dragging .jw-slider-time .jw-cue,.jw-flag-dragging .jw-horizontal-volume-container .jw-cue,.jw-flag-touch .jw-slider-time .jw-cue,.jw-flag-touch .jw-horizontal-volume-container .jw-cue{-webkit-transform:translate(0, -50%) scale(1, 1);transform:translate(0, -50%) scale(1, 1)}.jw-slider-time:hover .jw-knob,.jw-horizontal-volume-container:hover .jw-knob,.jw-slider-time:focus .jw-knob,.jw-horizontal-volume-container:focus .jw-knob{-webkit-transform:translate(-50%, -50%) scale(1);transform:translate(-50%, -50%) scale(1)}.jw-slider-time .jw-rail,.jw-horizontal-volume-container .jw-rail{background-color:rgba(255,255,255,0.2)}.jw-slider-time .jw-buffer,.jw-horizontal-volume-container .jw-buffer{background-color:rgba(255,255,255,0.4)}.jw-flag-touch .jw-slider-time::before,.jw-flag-touch .jw-horizontal-volume-container::before{height:44px;width:100%;content:"";position:absolute;display:block;bottom:calc(100% - 17px);left:0}.jw-slider-time.jw-tab-focus:focus .jw-rail,.jw-horizontal-volume-container.jw-tab-focus:focus .jw-rail{outline:solid 2px #4d90fe}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time{height:17px;padding:0}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-slider-container{height:10px}.jw-breakpoint--1:not(.jw-flag-audio-player) .jw-slider-time .jw-knob{border-radius:0;border:1px solid rgba(0,0,0,0.75);height:12px;width:10px}.jw-modal{width:284px}.jw-breakpoint-7 .jw-modal,.jw-breakpoint-6 .jw-modal,.jw-breakpoint-5 .jw-modal{height:232px}.jw-breakpoint-4 .jw-modal,.jw-breakpoint-3 .jw-modal{height:192px}.jw-breakpoint-2 .jw-modal,.jw-flag-small-player .jw-modal{bottom:0;right:0;height:100%;width:100%;max-height:none;max-width:none;z-index:2}.jwplayer .jw-rightclick{display:none;position:absolute;white-space:nowrap}.jwplayer .jw-rightclick.jw-open{display:block}.jwplayer .jw-rightclick .jw-rightclick-list{border-radius:1px;list-style:none;margin:0;padding:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item{background-color:rgba(0,0,0,0.8);border-bottom:1px solid #444;margin:0}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo{color:#fff;display:inline-flex;padding:0 10px 0 0;vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-logo .jw-svg-icon{height:20px;width:20px}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item .jw-rightclick-link{border:none;color:#fff;display:block;font-size:11px;line-height:1em;padding:15px 23px;text-align:start;text-decoration:none;width:100%}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:last-child{border-bottom:none}.jwplayer .jw-rightclick .jw-rightclick-list .jw-rightclick-item:hover{cursor:pointer}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured{vertical-align:middle}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link{color:#fff}.jwplayer .jw-rightclick .jw-rightclick-list .jw-featured .jw-rightclick-link span{color:#fff}.jwplayer .jw-rightclick .jw-info-overlay-item,.jwplayer .jw-rightclick .jw-share-item,.jwplayer .jw-rightclick .jw-shortcuts-item{border:none;background-color:transparent;outline:none;cursor:pointer}.jw-icon-tooltip.jw-open .jw-overlay{opacity:1;pointer-events:auto;transition-delay:0s}.jw-icon-tooltip.jw-open .jw-overlay:focus{outline:none}.jw-icon-tooltip.jw-open .jw-overlay:focus.jw-tab-focus{outline:solid 2px #4d90fe}.jw-slider-time .jw-overlay:before{height:1em;top:auto}.jw-slider-time .jw-icon-tooltip.jw-open .jw-overlay{pointer-events:none}.jw-volume-tip{padding:13px 0 26px}.jw-time-tip,.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{height:auto;width:100%;box-shadow:0 0 10px rgba(0,0,0,0.4);color:#fff;display:block;margin:0 0 14px;pointer-events:none;position:relative;z-index:0}.jw-time-tip::after,.jw-controlbar .jw-tooltip::after,.jw-settings-menu .jw-tooltip::after{top:100%;position:absolute;left:50%;height:14px;width:14px;border-radius:1px;background-color:currentColor;-webkit-transform-origin:75% 50%;transform-origin:75% 50%;-webkit-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);z-index:-1}.jw-time-tip .jw-text,.jw-controlbar .jw-tooltip .jw-text,.jw-settings-menu .jw-tooltip .jw-text{background-color:#fff;border-radius:1px;color:#000;font-size:10px;height:auto;line-height:1;padding:7px 10px;display:inline-block;min-width:100%;vertical-align:middle}.jw-controlbar .jw-overlay{position:absolute;bottom:100%;left:50%;margin:0;min-height:44px;min-width:44px;opacity:0;pointer-events:none;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility;transition-delay:0s, 150ms;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);width:100%;z-index:1}.jw-controlbar .jw-overlay .jw-contents{position:relative}.jw-controlbar .jw-option{position:relative;white-space:nowrap;cursor:pointer;list-style:none;height:1.5em;font-family:inherit;line-height:1.5em;padding:0 .5em;font-size:.8em;margin:0}.jw-controlbar .jw-option::before{padding-right:.125em}.jw-controlbar .jw-tooltip,.jw-settings-menu .jw-tooltip{position:absolute;bottom:100%;left:50%;opacity:0;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);transition:100ms 0s cubic-bezier(0, .25, .25, 1);transition-property:opacity, visibility, -webkit-transform;transition-property:opacity, transform, visibility;transition-property:opacity, transform, visibility, -webkit-transform;visibility:hidden;white-space:nowrap;width:auto;z-index:1}.jw-controlbar .jw-tooltip.jw-open,.jw-settings-menu .jw-tooltip.jw-open{opacity:1;-webkit-transform:translate(-50%, -10px);transform:translate(-50%, -10px);transition-duration:150ms;transition-delay:500ms,0s,500ms;visibility:visible}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen{left:auto;right:0;-webkit-transform:translate(0, 0);transform:translate(0, 0)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen.jw-open,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen.jw-open{-webkit-transform:translate(0, -10px);transform:translate(0, -10px)}.jw-controlbar .jw-tooltip.jw-tooltip-fullscreen::after,.jw-settings-menu .jw-tooltip.jw-tooltip-fullscreen::after{left:auto;right:9px}.jw-tooltip-time{height:auto;width:0;bottom:100%;line-height:normal;padding:0;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jw-tooltip-time .jw-overlay{bottom:0;min-height:0;width:auto}.jw-tooltip{bottom:57px;display:none;position:absolute}.jw-tooltip .jw-text{height:100%;white-space:nowrap;text-overflow:ellipsis;direction:unset;max-width:246px;overflow:hidden}.jw-flag-audio-player .jw-tooltip{display:none}.jw-flag-small-player .jw-time-thumb{display:none}.jwplayer .jw-shortcuts-tooltip{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column;z-index:1}.jwplayer .jw-shortcuts-tooltip.jw-open{display:flex}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-close{flex:0 0 auto;margin:5px 5px 5px auto}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container{display:flex;flex:1 1 auto;flex-flow:column;font-size:12px;margin:0 20px 20px;overflow-y:auto;padding:5px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar{background-color:transparent;width:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-title{font-weight:bold}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list{display:flex;max-width:340px;margin:0 10px}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-tooltip-descriptions{width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row{display:flex;align-items:center;justify-content:space-between;margin:10px 0;width:100%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-description{margin-right:10px;max-width:70%}.jwplayer .jw-shortcuts-tooltip .jw-shortcuts-container .jw-shortcuts-tooltip-list .jw-shortcuts-row .jw-shortcuts-key{background:#fefefe;color:#333;overflow:hidden;padding:7px 10px;text-overflow:ellipsis;white-space:nowrap}.jw-skip{color:rgba(255,255,255,0.8);cursor:default;position:absolute;display:flex;right:.75em;bottom:56px;padding:.5em;border:1px solid #333;background-color:#000;align-items:center;height:2em}.jw-skip.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-skip.jw-skippable{cursor:pointer;padding:.25em .75em}.jw-skip.jw-skippable:hover{cursor:pointer;color:#fff}.jw-skip.jw-skippable .jw-skip-icon{display:inline;height:24px;width:24px;margin:0}.jw-breakpoint-7 .jw-skip{padding:1.35em 1em;bottom:130px}.jw-breakpoint-7 .jw-skip .jw-text{font-size:1em;font-weight:normal}.jw-breakpoint-7 .jw-skip .jw-icon-inline{height:30px;width:30px}.jw-breakpoint-7 .jw-skip .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-skip .jw-skip-icon{display:none;margin-left:-0.75em;padding:0 .5em;pointer-events:none}.jw-skip .jw-skip-icon .jw-svg-icon-next{display:block;padding:0}.jw-skip .jw-text,.jw-skip .jw-skip-icon{vertical-align:middle;font-size:.7em}.jw-skip .jw-text{font-weight:bold}.jw-cast{background-size:cover;display:none;height:100%;position:relative;width:100%}.jw-cast-container{background:linear-gradient(180deg, rgba(25,25,25,0.75), rgba(25,25,25,0.25), rgba(25,25,25,0));left:0;padding:20px 20px 80px;position:absolute;top:0;width:100%}.jw-cast-text{color:#fff;font-size:1.6em}.jw-breakpoint--1 .jw-cast-text,.jw-breakpoint-0 .jw-cast-text{font-size:1.15em}.jw-breakpoint-1 .jw-cast-text,.jw-breakpoint-2 .jw-cast-text,.jw-breakpoint-3 .jw-cast-text{font-size:1.3em}.jw-nextup-container{position:absolute;bottom:66px;left:0;background-color:transparent;cursor:pointer;margin:0 auto;padding:12px;pointer-events:none;right:0;text-align:right;visibility:hidden;width:100%}.jw-settings-open .jw-nextup-container,.jw-info-open .jw-nextup-container{display:none}.jw-breakpoint-7 .jw-nextup-container{padding:60px}.jw-flag-small-player .jw-nextup-container{padding:0 12px 0 0}.jw-flag-small-player .jw-nextup-container .jw-nextup-title,.jw-flag-small-player .jw-nextup-container .jw-nextup-duration,.jw-flag-small-player .jw-nextup-container .jw-nextup-close{display:none}.jw-flag-small-player .jw-nextup-container .jw-nextup-tooltip{height:30px}.jw-flag-small-player .jw-nextup-container .jw-nextup-header{font-size:12px}.jw-flag-small-player .jw-nextup-container .jw-nextup-body{justify-content:center;align-items:center;padding:.75em .3em}.jw-flag-small-player .jw-nextup-container .jw-nextup-thumbnail{width:50%}.jw-flag-small-player .jw-nextup-container .jw-nextup{max-width:65px}.jw-flag-small-player .jw-nextup-container .jw-nextup.jw-nextup-thumbnail-visible{max-width:120px}.jw-nextup{background:#333;border-radius:0;box-shadow:0 0 10px rgba(0,0,0,0.5);color:rgba(255,255,255,0.8);display:inline-block;max-width:280px;overflow:hidden;opacity:0;position:relative;width:64%;pointer-events:all;-webkit-transform:translate(0, -5px);transform:translate(0, -5px);transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;transition-delay:0s}.jw-nextup:hover .jw-nextup-tooltip{color:#fff}.jw-nextup.jw-nextup-thumbnail-visible{max-width:400px}.jw-nextup.jw-nextup-thumbnail-visible .jw-nextup-thumbnail{display:block}.jw-nextup-container-visible{visibility:visible}.jw-nextup-container-visible .jw-nextup{opacity:1;-webkit-transform:translate(0, 0);transform:translate(0, 0);transition-delay:0s, 0s, 150ms}.jw-nextup-tooltip{display:flex;height:80px}.jw-nextup-thumbnail{width:120px;background-position:center;background-size:cover;flex:0 0 auto;display:none}.jw-nextup-body{flex:1 1 auto;overflow:hidden;padding:.75em .875em;display:flex;flex-flow:column wrap;justify-content:space-between}.jw-nextup-header,.jw-nextup-title{font-size:14px;line-height:1.35}.jw-nextup-header{font-weight:bold}.jw-nextup-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.jw-nextup-duration{align-self:flex-end;text-align:right;font-size:12px}.jw-nextup-close{height:24px;width:24px;border:none;color:rgba(255,255,255,0.8);cursor:pointer;margin:6px;visibility:hidden}.jw-nextup-close:hover{color:#fff}.jw-nextup-sticky .jw-nextup-close{visibility:visible}.jw-autostart-mute{position:absolute;bottom:0;right:12px;height:44px;width:44px;background-color:rgba(33,33,33,0.4);padding:5px 4px 5px 6px;display:none}.jwplayer.jw-flag-autostart:not(.jw-flag-media-audio) .jw-nextup{display:none}.jw-settings-menu{position:absolute;bottom:57px;right:12px;align-items:flex-start;background-color:#333;display:none;flex-flow:column nowrap;max-width:284px;pointer-events:auto}.jw-settings-open .jw-settings-menu{display:flex}.jw-breakpoint-7 .jw-settings-menu{bottom:130px;right:60px;max-height:none;max-width:none;height:35%;width:25%}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline{height:60px;width:60px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-svg-icon{height:30px;width:30px}.jw-breakpoint-7 .jw-settings-menu .jw-settings-topbar .jw-icon-inline .jw-tooltip .jw-text{font-size:1em}.jw-breakpoint-6 .jw-settings-menu,.jw-breakpoint-5 .jw-settings-menu{height:232px;width:284px;max-height:232px}.jw-breakpoint-4 .jw-settings-menu,.jw-breakpoint-3 .jw-settings-menu{height:192px;width:284px;max-height:192px}.jw-breakpoint-2 .jw-settings-menu{height:179px;width:284px;max-height:179px}.jw-flag-small-player .jw-settings-menu{max-width:none}.jw-settings-menu .jw-icon.jw-button-color::after{height:100%;width:24px;box-shadow:inset 0 -3px 0 -1px currentColor;margin:auto;opacity:0;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-settings-menu .jw-icon.jw-button-color[aria-checked="true"]::after{opacity:1}.jw-settings-topbar{align-items:center;background-color:rgba(0,0,0,0.4);display:flex;flex:0 0 auto;padding:3px 5px 0;width:100%}.jw-settings-topbar .jw-settings-close{margin-left:auto}.jw-settings-submenu{display:none;flex:1 1 auto;overflow-y:auto;padding:8px 20px 0 5px}.jw-settings-submenu::-webkit-scrollbar{background-color:transparent;width:6px}.jw-settings-submenu::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-settings-submenu.jw-settings-submenu-active{display:block}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item{font-size:1em;padding:11px 0 11px 30px}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-settings-item-active::before{justify-content:flex-end}.jw-breakpoint-7 .jw-settings-submenu .jw-settings-content-item .jw-auto-label{font-size:.85em;padding-left:10px}.jw-flag-touch .jw-settings-submenu{overflow-y:scroll;-webkit-overflow-scrolling:touch}.jw-auto-label{font-size:10px;font-weight:initial;opacity:.75;padding-left:5px}.jw-settings-content-item{position:relative;color:rgba(255,255,255,0.8);cursor:pointer;font-size:12px;line-height:1;padding:7px 0 7px 15px;width:100%;text-align:left;outline:none}.jw-settings-content-item:hover{color:#fff}.jw-settings-content-item:focus{font-weight:bold}.jw-flag-small-player .jw-settings-content-item{line-height:1.75}.jw-settings-content-item.jw-tab-focus:focus{border:solid 2px #4d90fe}.jw-settings-item-active{font-weight:bold;position:relative}.jw-settings-item-active::before{height:100%;width:1em;align-items:center;content:"\\2022";display:inline-flex;justify-content:center}.jw-breakpoint-2 .jw-settings-open .jw-display-container,.jw-flag-small-player .jw-settings-open .jw-display-container,.jw-flag-touch .jw-settings-open .jw-display-container{display:none}.jw-breakpoint-2 .jw-settings-open.jw-controls,.jw-flag-small-player .jw-settings-open.jw-controls,.jw-flag-touch .jw-settings-open.jw-controls{z-index:1}.jw-flag-small-player .jw-settings-open .jw-controlbar{display:none}.jw-settings-open .jw-icon-settings::after{opacity:1}.jw-settings-open .jw-tooltip-settings{display:none}.jw-sharing-link{cursor:pointer}.jw-shortcuts-container .jw-switch{position:relative;display:inline-block;transition:ease-out .15s;transition-property:opacity, background;border-radius:18px;width:80px;height:20px;padding:10px;background:rgba(80,80,80,0.8);cursor:pointer;font-size:inherit;vertical-align:middle}.jw-shortcuts-container .jw-switch .jw-switch-knob{position:absolute;top:2px;left:1px;transition:ease-out .15s;box-shadow:0 0 10px rgba(0,0,0,0.4);border-radius:13px;width:15px;height:15px;background:#fefefe}.jw-shortcuts-container .jw-switch:before,.jw-shortcuts-container .jw-switch:after{position:absolute;top:3px;transition:inherit;color:#fefefe}.jw-shortcuts-container .jw-switch:before{content:attr(data-jw-switch-disabled);right:8px}.jw-shortcuts-container .jw-switch:after{content:attr(data-jw-switch-enabled);left:8px;opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]{background:#475470}.jw-shortcuts-container .jw-switch[aria-checked="true"]:before{opacity:0}.jw-shortcuts-container .jw-switch[aria-checked="true"]:after{opacity:1}.jw-shortcuts-container .jw-switch[aria-checked="true"] .jw-switch-knob{left:60px}.jw-idle-icon-text{display:none;line-height:1;position:absolute;text-align:center;text-indent:.35em;top:100%;white-space:nowrap;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.jw-idle-label{border-radius:50%;color:#fff;-webkit-filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));filter:drop-shadow(1px 1px 5px rgba(12,26,71,0.25));font:normal 16px/1 Arial,Helvetica,sans-serif;position:relative;transition:background-color 150ms cubic-bezier(0, .25, .25, 1);transition-property:background-color,-webkit-filter;transition-property:background-color,filter;transition-property:background-color,filter,-webkit-filter;-webkit-font-smoothing:antialiased}.jw-state-idle .jw-icon-display.jw-idle-label .jw-idle-icon-text{display:block}.jw-state-idle .jw-icon-display.jw-idle-label .jw-svg-icon-play{-webkit-transform:scale(.7, .7);transform:scale(.7, .7)}.jw-breakpoint-0.jw-state-idle .jw-icon-display.jw-idle-label,.jw-breakpoint--1.jw-state-idle .jw-icon-display.jw-idle-label{font-size:12px}.jw-info-overlay{top:50%;position:absolute;left:50%;background:#333;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);display:none;color:#fff;pointer-events:all;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;overflow:hidden;flex-direction:column}.jw-info-overlay .jw-info-close{flex:0 0 auto;margin:5px 5px 5px auto}.jw-info-open .jw-info-overlay{display:flex}.jw-info-container{display:flex;flex:1 1 auto;flex-flow:column;margin:0 20px 20px;overflow-y:auto;padding:5px}.jw-info-container [class*="jw-info"]:not(:first-of-type){color:rgba(255,255,255,0.8);padding-top:10px;font-size:12px}.jw-info-container .jw-info-description{margin-bottom:30px;text-align:start}.jw-info-container .jw-info-description:empty{display:none}.jw-info-container .jw-info-duration{text-align:start}.jw-info-container .jw-info-title{text-align:start;font-size:12px;font-weight:bold}.jw-info-container::-webkit-scrollbar{background-color:transparent;width:6px}.jw-info-container::-webkit-scrollbar-thumb{background-color:#fff;border:1px solid #333;border-radius:6px}.jw-info-clientid{align-self:flex-end;font-size:12px;color:rgba(255,255,255,0.8);margin:0 20px 20px 44px;text-align:right}.jw-flag-touch .jw-info-open .jw-display-container{display:none}@supports ((-webkit-filter: drop-shadow(0 0 3px #000)) or (filter: drop-shadow(0 0 3px #000))){.jwplayer.jw-ab-drop-shadow .jw-controls .jw-svg-icon,.jwplayer.jw-ab-drop-shadow .jw-controls .jw-icon.jw-text,.jwplayer.jw-ab-drop-shadow .jw-slider-container .jw-rail,.jwplayer.jw-ab-drop-shadow .jw-title{text-shadow:none;box-shadow:none;-webkit-filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3));filter:drop-shadow(0 2px 3px rgba(0,0,0,0.3))}.jwplayer.jw-ab-drop-shadow .jw-button-color{opacity:.8;transition-property:color, opacity}.jwplayer.jw-ab-drop-shadow .jw-button-color:not(:hover){color:#fff;opacity:.8}.jwplayer.jw-ab-drop-shadow .jw-button-color:hover{opacity:1}.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0), hsla(0, 0%, 0%, 0.00787) 10.79%, hsla(0, 0%, 0%, 0.02963) 21.99%, hsla(0, 0%, 0%, 0.0625) 33.34%, hsla(0, 0%, 0%, 0.1037) 44.59%, hsla(0, 0%, 0%, 0.15046) 55.48%, hsla(0, 0%, 0%, 0.2) 65.75%, hsla(0, 0%, 0%, 0.24954) 75.14%, hsla(0, 0%, 0%, 0.2963) 83.41%, hsla(0, 0%, 0%, 0.3375) 90.28%, hsla(0, 0%, 0%, 0.37037) 95.51%, hsla(0, 0%, 0%, 0.39213) 98.83%, hsla(0, 0%, 0%, 0.4));mix-blend-mode:multiply;transition-property:opacity}.jw-state-idle.jwplayer.jw-ab-drop-shadow .jw-controls-backdrop{background-image:linear-gradient(to bottom, hsla(0, 0%, 0%, 0.2), hsla(0, 0%, 0%, 0.19606) 1.17%, hsla(0, 0%, 0%, 0.18519) 4.49%, hsla(0, 0%, 0%, 0.16875) 9.72%, hsla(0, 0%, 0%, 0.14815) 16.59%, hsla(0, 0%, 0%, 0.12477) 24.86%, hsla(0, 0%, 0%, 0.1) 34.25%, hsla(0, 0%, 0%, 0.07523) 44.52%, hsla(0, 0%, 0%, 0.05185) 55.41%, hsla(0, 0%, 0%, 0.03125) 66.66%, hsla(0, 0%, 0%, 0.01481) 78.01%, hsla(0, 0%, 0%, 0.00394) 89.21%, hsla(0, 0%, 0%, 0));background-size:100% 7rem;background-position:50% 0}.jwplayer.jw-ab-drop-shadow.jw-state-idle .jw-controls{background-color:transparent}}.jw-video-thumbnail-container{position:relative;overflow:hidden}.jw-video-thumbnail-container:not(.jw-related-shelf-item-image){height:100%;width:100%}.jw-video-thumbnail-container.jw-video-thumbnail-generated{position:absolute;top:0;left:0}.jw-video-thumbnail-container:hover,.jw-related-item-content:hover .jw-video-thumbnail-container,.jw-related-shelf-item:hover .jw-video-thumbnail-container{cursor:pointer}.jw-video-thumbnail-container:hover .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-item-content:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed),.jw-related-shelf-item:hover .jw-video-thumbnail-container .jw-video-thumbnail:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail{position:absolute;top:50%;left:50%;bottom:unset;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:100%;height:auto;min-width:100%;min-height:100%;opacity:0;transition:opacity .3s ease;object-fit:cover;background:#000}.jw-related-item-next-up .jw-video-thumbnail-container .jw-video-thumbnail{height:100%;width:auto}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-visible:not(.jw-video-thumbnail-completed){opacity:1}.jw-video-thumbnail-container .jw-video-thumbnail.jw-video-thumbnail-completed{opacity:0}.jw-video-thumbnail-container .jw-video-thumbnail~.jw-svg-icon-play{display:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-shelf-item-aspect{pointer-events:none}.jw-video-thumbnail-container .jw-video-thumbnail+.jw-related-item-poster-content{pointer-events:none}.jw-state-idle:not(.jw-flag-cast-available) .jw-display{padding:0}.jw-state-idle .jw-controls{background:rgba(0,0,0,0.4)}.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-slider-time,.jw-state-idle.jw-flag-cast-available:not(.jw-flag-audio-player) .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay),.jw-state-idle.jw-flag-cardboard-available .jw-controlbar .jw-icon:not(.jw-icon-cardboard):not(.jw-icon-cast):not(.jw-icon-airplay){display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon:focus{border:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-icon .jw-svg-icon-buffer{-webkit-animation:jw-spin 2s linear infinite;animation:jw-spin 2s linear infinite;display:block}@-webkit-keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jw-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jwplayer.jw-state-buffering .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-pause{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-play{display:none}.jwplayer.jw-state-playing .jw-display .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-playing .jw-icon-playback .jw-svg-icon-pause{display:block}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-controls-backdrop{opacity:0}.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio) .jw-logo-bottom-left,.jwplayer.jw-state-playing.jw-flag-user-inactive:not(.jw-flag-audio-player):not(.jw-flag-casting):not(.jw-flag-media-audio):not(.jw-flag-autostart) .jw-logo-bottom-right{bottom:0}.jwplayer .jw-icon-playback .jw-svg-icon-stop{display:none}.jwplayer.jw-state-paused .jw-svg-icon-pause,.jwplayer.jw-state-idle .jw-svg-icon-pause,.jwplayer.jw-state-error .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-svg-icon-pause{display:none}.jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-complete .jw-icon-display .jw-svg-icon-play,.jwplayer.jw-state-buffering .jw-icon-display .jw-svg-icon-play{display:none}.jwplayer:not(.jw-state-buffering) .jw-svg-icon-buffer{display:none}.jwplayer:not(.jw-state-complete) .jw-svg-icon-replay{display:none}.jwplayer:not(.jw-state-error) .jw-svg-icon-error{display:none}.jwplayer.jw-state-complete .jw-display .jw-icon-display .jw-svg-icon-replay{display:block}.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-state-complete .jw-controls{background:rgba(0,0,0,0.4);height:100%}.jw-state-idle .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-state-paused .jw-icon-display .jw-svg-icon-pause,.jwplayer.jw-state-complete .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-state-idle .jw-display-icon-rewind,.jwplayer.jw-state-buffering .jw-display-icon-rewind,.jwplayer.jw-state-complete .jw-display-icon-rewind,body .jw-error .jw-display-icon-rewind,body .jwplayer.jw-state-error .jw-display-icon-rewind,.jw-state-idle .jw-display-icon-next,.jwplayer.jw-state-buffering .jw-display-icon-next,.jwplayer.jw-state-complete .jw-display-icon-next,body .jw-error .jw-display-icon-next,body .jwplayer.jw-state-error .jw-display-icon-next{display:none}body .jw-error .jw-icon-display,body .jwplayer.jw-state-error .jw-icon-display{cursor:default}body .jw-error .jw-icon-display .jw-svg-icon-error,body .jwplayer.jw-state-error .jw-icon-display .jw-svg-icon-error{display:block}body .jw-error .jw-icon-container{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-preview{display:none}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title{padding-top:4px}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-primary{width:auto;display:inline-block;padding-right:.5ch}body .jwplayer.jw-state-error.jw-flag-audio-player .jw-title-secondary{width:auto;display:inline-block;padding-left:0}body .jwplayer.jw-state-error .jw-controlbar,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-controlbar{display:none}body .jwplayer.jw-state-error .jw-settings-menu,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-settings-menu{height:100%;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}body .jwplayer.jw-state-error .jw-display,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-display{padding:0}body .jwplayer.jw-state-error .jw-logo-bottom-left,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-left,body .jwplayer.jw-state-error .jw-logo-bottom-right,.jwplayer.jw-state-idle:not(.jw-flag-audio-player):not(.jw-flag-cast-available):not(.jw-flag-cardboard-available) .jw-logo-bottom-right{bottom:0}.jwplayer.jw-state-playing.jw-flag-user-inactive .jw-display{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-state-playing:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display,.jwplayer.jw-state-paused:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting):not(.jw-flag-play-rejected) .jw-display{display:none}.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-rewind,.jwplayer.jw-state-paused.jw-flag-play-rejected:not(.jw-flag-touch):not(.jw-flag-small-player):not(.jw-flag-casting) .jw-display-icon-next{display:none}.jwplayer.jw-state-buffering .jw-display-icon-display .jw-text,.jwplayer.jw-state-complete .jw-display .jw-text{display:none}.jwplayer.jw-flag-casting:not(.jw-flag-audio-player) .jw-cast{display:block}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-display-icon-container{display:none}.jwplayer.jw-flag-casting .jw-icon-hd,.jwplayer.jw-flag-casting .jw-captions,.jwplayer.jw-flag-casting .jw-icon-fullscreen,.jwplayer.jw-flag-casting .jw-icon-audio-tracks{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-volume{display:none}.jwplayer.jw-flag-casting.jw-flag-airplay-casting .jw-icon-airplay{color:#fff}.jw-state-playing.jw-flag-casting:not(.jw-flag-audio-player) .jw-display,.jw-state-paused.jw-flag-casting:not(.jw-flag-audio-player) .jw-display{display:table}.jwplayer.jw-flag-cast-available .jw-icon-cast,.jwplayer.jw-flag-cast-available .jw-icon-airplay{display:flex}.jwplayer.jw-flag-cardboard-available .jw-icon-cardboard{display:flex}.jwplayer.jw-flag-live .jw-display-icon-rewind{visibility:hidden}.jwplayer.jw-flag-live .jw-controlbar .jw-text-elapsed,.jwplayer.jw-flag-live .jw-controlbar .jw-text-duration,.jwplayer.jw-flag-live .jw-controlbar .jw-text-countdown,.jwplayer.jw-flag-live .jw-controlbar .jw-slider-time{display:none}.jwplayer.jw-flag-live .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-live .jw-controlbar .jw-overlay:after{display:none}.jwplayer.jw-flag-live .jw-nextup-container{bottom:44px}.jwplayer.jw-flag-live .jw-text-elapsed,.jwplayer.jw-flag-live .jw-text-duration{display:none}.jwplayer.jw-flag-live .jw-text-live{cursor:default}.jwplayer.jw-flag-live .jw-text-live:hover{color:rgba(255,255,255,0.8)}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-stop,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-stop{display:block}.jwplayer.jw-flag-live.jw-state-playing .jw-icon-playback .jw-svg-icon-pause,.jwplayer.jw-flag-live.jw-state-buffering .jw-icon-playback .jw-svg-icon-pause{display:none}.jw-text-live{height:24px;width:auto;align-items:center;border-radius:1px;color:rgba(255,255,255,0.8);display:flex;font-size:12px;font-weight:bold;margin-right:10px;padding:0 1ch;text-rendering:geometricPrecision;text-transform:uppercase;transition:150ms cubic-bezier(0, .25, .25, 1);transition-property:box-shadow,color}.jw-text-live::before{height:8px;width:8px;background-color:currentColor;border-radius:50%;margin-right:6px;opacity:1;transition:opacity 150ms cubic-bezier(0, .25, .25, 1)}.jw-text-live.jw-dvr-live{box-shadow:inset 0 0 0 2px currentColor}.jw-text-live.jw-dvr-live::before{opacity:.5}.jw-text-live.jw-dvr-live:hover{color:#fff}.jwplayer.jw-flag-controls-hidden .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-controls-hidden:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-controls-hidden .jw-plugin{bottom:.5em}.jwplayer.jw-flag-controls-hidden .jw-nextup-container{bottom:0}.jw-flag-controls-hidden .jw-controlbar,.jw-flag-controls-hidden .jw-display{visibility:hidden;pointer-events:none;opacity:0;transition-delay:0s, 250ms}.jw-flag-controls-hidden .jw-controls-backdrop{opacity:0}.jw-flag-controls-hidden .jw-logo{visibility:visible}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-logo.jw-hide{visibility:hidden;pointer-events:none;opacity:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-casting) .jw-logo-top-right{top:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-plugin{bottom:.5em}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing .jw-nextup-container{bottom:0}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-controls-hidden) .jw-media{cursor:none;-webkit-cursor-visibility:auto-hide}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing.jw-flag-casting .jw-display{display:table}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-state-playing:not(.jw-flag-ads) .jw-autostart-mute{display:flex}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting .jw-nextup-container{bottom:66px}.jwplayer.jw-flag-user-inactive:not(.jw-flag-media-audio).jw-flag-casting.jw-state-idle .jw-nextup-container{display:none}.jw-flag-media-audio .jw-preview{display:block}.jwplayer.jw-flag-ads .jw-preview,.jwplayer.jw-flag-ads .jw-logo,.jwplayer.jw-flag-ads .jw-captions.jw-captions-enabled,.jwplayer.jw-flag-ads .jw-nextup-container,.jwplayer.jw-flag-ads .jw-text-duration,.jwplayer.jw-flag-ads .jw-text-elapsed{display:none}.jwplayer.jw-flag-ads video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-rewind,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-next,.jwplayer.jw-flag-ads.jw-flag-small-player .jw-display-icon-display{display:none}.jwplayer.jw-flag-ads.jw-flag-small-player.jw-state-buffering .jw-display-icon-display{display:inline-block}.jwplayer.jw-flag-ads .jw-controlbar{flex-wrap:wrap-reverse}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time{height:auto;padding:0;pointer-events:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-slider-container{height:5px}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-rail,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-knob,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-buffer,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-cue,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-icon-settings{display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-time .jw-progress{-webkit-transform:none;transform:none;top:auto}.jwplayer.jw-flag-ads .jw-controlbar .jw-tooltip,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-tooltip:not(.jw-icon-volume),.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-inline:not(.jw-icon-playback):not(.jw-icon-fullscreen):not(.jw-icon-volume){display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-volume-tip{padding:13px 0}.jwplayer.jw-flag-ads .jw-controlbar .jw-text-alt{display:flex}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid) .jw-controls .jw-controlbar,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart .jw-controls .jw-controlbar{display:flex;pointer-events:all;visibility:visible;opacity:1}.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-user-inactive .jw-controls-backdrop,.jwplayer.jw-flag-ads.jw-flag-ads.jw-state-playing.jw-flag-touch:not(.jw-flag-ads-vpaid).jw-flag-autostart.jw-flag-user-inactive .jw-controls-backdrop{opacity:1;background-size:100% 60px}.jwplayer.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-display-container,.jwplayer.jw-flag-ads-vpaid .jw-skip,.jwplayer.jw-flag-touch.jw-flag-ads-vpaid .jw-skip{display:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls{background:none}.jwplayer.jw-flag-ads-vpaid.jw-flag-small-player .jw-controls::after{content:none}.jwplayer.jw-flag-ads-hide-controls .jw-controls-backdrop,.jwplayer.jw-flag-ads-hide-controls .jw-controls{display:none !important}.jw-flag-overlay-open-related .jw-controls,.jw-flag-overlay-open-related .jw-title,.jw-flag-overlay-open-related .jw-logo{display:none}.jwplayer.jw-flag-rightclick-open{overflow:visible}.jwplayer.jw-flag-rightclick-open .jw-rightclick{z-index:16777215}body .jwplayer.jw-flag-flash-blocked .jw-controls,body .jwplayer.jw-flag-flash-blocked .jw-overlays,body .jwplayer.jw-flag-flash-blocked .jw-controls-backdrop,body .jwplayer.jw-flag-flash-blocked .jw-preview{display:none}body .jwplayer.jw-flag-flash-blocked .jw-error-msg{top:25%}.jw-flag-touch.jw-breakpoint-7 .jw-captions,.jw-flag-touch.jw-breakpoint-6 .jw-captions,.jw-flag-touch.jw-breakpoint-5 .jw-captions,.jw-flag-touch.jw-breakpoint-4 .jw-captions,.jw-flag-touch.jw-breakpoint-7 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-6 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-5 .jw-nextup-container,.jw-flag-touch.jw-breakpoint-4 .jw-nextup-container{bottom:4.25em}.jw-flag-touch .jw-controlbar .jw-icon-volume{display:flex}.jw-flag-touch .jw-display,.jw-flag-touch .jw-display-container,.jw-flag-touch .jw-display-controls{pointer-events:none}.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-next,.jw-flag-touch.jw-state-paused:not(.jw-breakpoint-1) .jw-display-icon-rewind,.jw-flag-touch.jw-state-playing:not(.jw-breakpoint-1) .jw-display-icon-rewind{display:none}.jw-flag-touch.jw-state-paused.jw-flag-dragging .jw-display{display:none}.jw-flag-audio-player{background-color:#000}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:44px}.jw-flag-audio-player:not(.jw-flag-live) .jw-spacer{display:none}.jw-flag-audio-player .jw-preview,.jw-flag-audio-player .jw-display,.jw-flag-audio-player .jw-title,.jw-flag-audio-player .jw-nextup-container{display:none}.jw-flag-audio-player .jw-controlbar{position:relative}.jw-flag-audio-player .jw-controlbar .jw-button-container{padding-right:3px;padding-left:0}.jw-flag-audio-player .jw-controlbar .jw-icon-tooltip,.jw-flag-audio-player .jw-controlbar .jw-icon-inline{display:none}.jw-flag-audio-player .jw-controlbar .jw-icon-volume,.jw-flag-audio-player .jw-controlbar .jw-icon-playback,.jw-flag-audio-player .jw-controlbar .jw-icon-next,.jw-flag-audio-player .jw-controlbar .jw-icon-rewind,.jw-flag-audio-player .jw-controlbar .jw-icon-cast,.jw-flag-audio-player .jw-controlbar .jw-text-live,.jw-flag-audio-player .jw-controlbar .jw-icon-airplay,.jw-flag-audio-player .jw-controlbar .jw-logo-button,.jw-flag-audio-player .jw-controlbar .jw-text-elapsed,.jw-flag-audio-player .jw-controlbar .jw-text-duration{display:flex;flex:0 0 auto}.jw-flag-audio-player .jw-controlbar .jw-text-duration,.jw-flag-audio-player .jw-controlbar .jw-text-countdown{padding-right:10px}.jw-flag-audio-player .jw-controlbar .jw-slider-time{flex:0 1 auto;align-items:center;display:flex;order:1}.jw-flag-audio-player .jw-controlbar .jw-icon-volume{margin-right:0;transition:margin-right 150ms cubic-bezier(0, .25, .25, 1)}.jw-flag-audio-player .jw-controlbar .jw-icon-volume .jw-overlay{display:none}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container{transition:width 300ms cubic-bezier(0, .25, .25, 1);width:0}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open{width:140px}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open .jw-slider-volume{padding-right:24px;transition:opacity 300ms;opacity:1}.jw-flag-audio-player .jw-controlbar .jw-horizontal-volume-container.jw-open~.jw-slider-time{flex:1 1 auto;width:auto;transition:opacity 300ms, width 300ms}.jw-flag-audio-player .jw-controlbar .jw-slider-volume{opacity:0}.jw-flag-audio-player .jw-controlbar .jw-slider-volume .jw-knob{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.jw-flag-audio-player .jw-controlbar .jw-slider-volume~.jw-icon-volume{margin-right:140px}.jw-flag-audio-player.jw-breakpoint-1 .jw-horizontal-volume-container.jw-open~.jw-slider-time,.jw-flag-audio-player.jw-breakpoint-2 .jw-horizontal-volume-container.jw-open~.jw-slider-time{opacity:0}.jw-flag-audio-player.jw-flag-small-player .jw-text-elapsed,.jw-flag-audio-player.jw-flag-small-player .jw-text-duration{display:none}.jw-flag-audio-player.jw-flag-ads .jw-slider-time{display:none}.jw-hidden{display:none}',""])}]]); \ No newline at end of file diff --git a/ui/v2.5/public/jwplayer/jwplayer.core.js b/ui/v2.5/public/jwplayer/jwplayer.core.js new file mode 100644 index 000000000..17f29f33d --- /dev/null +++ b/ui/v2.5/public/jwplayer/jwplayer.core.js @@ -0,0 +1,95 @@ +/*! +JW Player version 8.11.5 +Copyright (c) 2019, JW Player, All Rights Reserved +https://github.com/jwplayer/jwplayer/blob/v8.11.5/README.md + +This source code and its use and distribution is subject to the terms and conditions of the applicable license agreement. +https://www.jwplayer.com/tos/ + +This product includes portions of other software. For the full text of licenses, see below: + +JW Player Third Party Software Notices and/or Additional Terms and Conditions + +************************************************************************************************** +The following software is used under Apache License 2.0 +************************************************************************************************** + +vtt.js v0.13.0 +Copyright (c) 2019 Mozilla (http://mozilla.org) +https://github.com/mozilla/vtt.js/blob/v0.13.0/LICENSE + +* * * + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and +limitations under the License. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under MIT license +************************************************************************************************** + +Underscore.js v1.6.0 +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +https://github.com/jashkenas/underscore/blob/1.6.0/LICENSE + +Backbone backbone.events.js v1.1.2 +Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud +https://github.com/jashkenas/backbone/blob/1.1.2/LICENSE + +Promise Polyfill v7.1.1 +Copyright (c) 2014 Taylor Hakes and Forbes Lindesay +https://github.com/taylorhakes/promise-polyfill/blob/v7.1.1/LICENSE + +can-autoplay.js v3.0.0 +Copyright (c) 2017 video-dev +https://github.com/video-dev/can-autoplay/blob/v3.0.0/LICENSE + +* * * + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under W3C license +************************************************************************************************** + +Intersection Observer v0.5.0 +Copyright (c) 2016 Google Inc. (http://google.com) +https://github.com/w3c/IntersectionObserver/blob/v0.5.0/LICENSE.md + +* * * + +W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. + +This work is being provided by the copyright holders under the following license. + +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. + +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders. +*/ +(window.webpackJsonpjwplayer=window.webpackJsonpjwplayer||[]).push([[2],{18:function(e,t,n){"use strict";n.r(t);var i=n(0),o=n(12),r=n(50),a=n(37);var s=n(44),l=n(51),c=n(26),u=n(25),d=n(3),f=n(46),h=n(2),g=n(7),p=n(34);function b(e){var t=!1;return{async:function(){var n=this,i=arguments;return Promise.resolve().then((function(){if(!t)return e.apply(n,i)}))},cancel:function(){t=!0},cancelled:function(){return t}}}var m=n(1);function w(e){return function(t,n){var o=e.mediaModel,r=Object(i.h)({},n,{type:t});switch(t){case d.T:if(o.get(d.T)===n.mediaType)return;o.set(d.T,n.mediaType);break;case d.U:return void o.set(d.U,Object(i.h)({},n));case d.M:if(n[t]===e.model.getMute())return;break;case d.bb:n.newstate===d.mb&&(e.thenPlayPromise.cancel(),o.srcReset());var a=o.attributes.mediaState;o.attributes.mediaState=n.newstate,o.trigger("change:mediaState",o,n.newstate,a);break;case d.F:return e.beforeComplete=!0,e.trigger(d.B,r),void(e.attached&&!e.background&&e._playbackComplete());case d.G:o.get("setup")?(e.thenPlayPromise.cancel(),o.srcReset()):(t=d.tb,r.code+=1e5);break;case d.K:r.metadataType||(r.metadataType="unknown");var s=n.duration;Object(i.v)(s)&&(o.set("seekRange",n.seekRange),o.set("duration",s));break;case d.D:o.set("buffer",n.bufferPercent);case d.S:o.set("seekRange",n.seekRange),o.set("position",n.position),o.set("currentTime",n.currentTime);var l=n.duration;Object(i.v)(l)&&o.set("duration",l),t===d.S&&Object(i.s)(e.item.starttime)&&delete e.item.starttime;break;case d.R:var c=e.mediaElement;c&&c.paused&&o.set("mediaState","paused");break;case d.I:o.set(d.I,n.levels);case d.J:var u=n.currentQuality,f=n.levels;u>-1&&f.length>1&&o.set("currentLevel",parseInt(u));break;case d.f:o.set(d.f,n.tracks);case d.g:var h=n.currentTrack,g=n.tracks;h>-1&&g.length>0&&h=Math.max(l,f.a)&&(e.preloadNextItem(),y=!0)}function E(e){var t={};w.tag&&(t.tag=w.tag),this.trigger(d.F,t),R.call(this,e)}function R(e){b={},r&&p+10?e:null,g&&g.model.set("skipOffset",s)}};Object(i.h)(le.prototype,g.a);var ce=le,ue=n(63),de=n(60),fe=function(e){var t=this,n=[],i={},o=0,r=0;function a(e){if(e.data=e.data||[],e.name=e.label||e.name||e.language,e._id=Object(de.a)(e,n.length),!e.name){var t=Object(de.b)(e,o);e.name=t.label,o=t.unknownCount}i[e._id]=e,n.push(e)}function s(){for(var e=[{id:"off",label:"Off"}],t=0;t')+'
    '},pe=n(36),be=44,me=function(e){var t=e.get("height");if(e.get("aspectratio"))return!1;if("string"==typeof t&&t.indexOf("%")>-1)return!1;var n=1*t||NaN;return!!(n=isNaN(n)?e.get("containerHeight"):n)&&(n&&n<=be)},we=n(54);function ve(e,t){if(e.get("fullscreen"))return 1;if(!e.get("activeTab"))return 0;if(e.get("isFloating"))return 1;var n=e.get("intersectionRatio");return void 0===n&&(n=function(e){var t=document.documentElement,n=document.body,i={top:0,left:0,right:t.clientWidth||n.clientWidth,width:t.clientWidth||n.clientWidth,bottom:t.clientHeight||n.clientHeight,height:t.clientHeight||n.clientHeight};if(!n.contains(e))return 0;if("none"===window.getComputedStyle(e).display)return 0;var o=ye(e);if(!o)return 0;var r=o,a=e.parentNode,s=!1;for(;!s;){var l=null;if(a===n||a===t||1!==a.nodeType?(s=!0,l=i):"visible"!==window.getComputedStyle(a).overflow&&(l=ye(a)),l&&(c=l,u=r,d=void 0,f=void 0,h=void 0,g=void 0,p=void 0,b=void 0,d=Math.max(c.top,u.top),f=Math.min(c.bottom,u.bottom),h=Math.max(c.left,u.left),g=Math.min(c.right,u.right),b=f-d,!(r=(p=g-h)>=0&&b>=0&&{top:d,bottom:f,left:h,right:g,width:p,height:b})))return 0;a=a.parentNode}var c,u,d,f,h,g,p,b;var m=o.width*o.height,w=r.width*r.height;return m?w/m:0}(t),window.top!==window.self&&n)?0:n}function ye(e){try{return e.getBoundingClientRect()}catch(e){}}var je=n(49),ke=n(42),Oe=n(58),xe=n(10);var Ce=n(32),Me=n(5),_e=n(6),Se=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"],Pe=function(e,t,n){for(var i=e.requestFullscreen||e.webkitRequestFullscreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen,o=t.exitFullscreen||t.webkitExitFullscreen||t.webkitCancelFullScreen||t.mozCancelFullScreen||t.msExitFullscreen,r=!(!i||!o),a=Se.length;a--;)t.addEventListener(Se[a],n);return{events:Se,supportsDomFullscreen:function(){return r},requestFullscreen:function(){i.call(e,{navigationUI:"hide"})},exitFullscreen:function(){null!==this.fullscreenElement()&&o.apply(t)},fullscreenElement:function(){var e=t.fullscreenElement,n=t.webkitCurrentFullScreenElement,i=t.mozFullScreenElement,o=t.msFullscreenElement;return null===e?e:e||n||i||o},destroy:function(){for(var e=Se.length;e--;)t.removeEventListener(Se[e],n)}}},Te=n(40);function Ae(e,t){for(var n=0;no?r:i*a/n)*u}return e}(n))/10}g.get("renderCaptionsNatively")?function(e,t){var n="#".concat(e," .jw-video::-webkit-media-text-track-display");t&&(t+="px",v.OS.iOS&&Object(xe.b)(n,{fontSize:"inherit"},e,!0));f.fontSize=t,Object(xe.b)(n,f,e,!0)}(g.get("id"),t):Object(xe.d)(s,{fontSize:t})}}function m(e,t,n){var i=Object(xe.c)("#000000",n);"dropshadow"===e?t.textShadow="0 2px 1px "+i:"raised"===e?t.textShadow="0 0 5px "+i+", 0 1px 5px "+i+", 0 2px 5px "+i:"depressed"===e?t.textShadow="0 -2px 1px "+i:"uniform"===e&&(t.textShadow="-2px 0 1px "+i+",2px 0 1px "+i+",0 -2px 1px "+i+",0 2px 1px "+i+",-1px 1px 1px "+i+",1px 1px 1px "+i+",1px -1px 1px "+i+",1px 1px 1px "+i)}(s=document.createElement("div")).className="jw-captions jw-reset",this.show=function(){Object(Me.a)(s,"jw-captions-enabled")},this.hide=function(){Object(Me.o)(s,"jw-captions-enabled")},this.populate=function(e){g.get("renderCaptionsNatively")||(r=[],o=e,e?this.selectCues(e,a):this.renderCues())},this.resize=function(){b(),this.renderCues(!0)},this.renderCues=function(e){e=!!e,Ee&&Ee.processCues(window,r,s,e)},this.selectCues=function(e,t){if(e&&e.data&&t&&!g.get("renderCaptionsNatively")){var n=this.getAlignmentPosition(e,t);!1!==n&&(r=this.getCurrentCues(e.data,n),this.renderCues(!0))}},this.getCurrentCues=function(e,t){return Object(i.i)(e,(function(e){return t>=e.startTime&&(!e.endTime||t<=e.endTime)}))},this.getAlignmentPosition=function(e,t){var n=e.source,o=t.metadata,r=t.currentTime;return n&&o&&Object(i.s)(o[n])&&(r=o[n]),r},this.clear=function(){Object(Me.g)(s)},this.setup=function(e,n){l=document.createElement("div"),c=document.createElement("span"),l.className="jw-captions-window jw-reset",c.className="jw-captions-text jw-reset",t=Object(i.h)({},Le,n),u=Le.fontScale,p(t.fontSize);var o=t.windowColor,r=t.windowOpacity,a=t.edgeStyle;f={};var d={};!function(e,t){var n=t.color,i=t.fontOpacity;(n||i!==Le.fontOpacity)&&(e.color=Object(xe.c)(n||"#ffffff",i));if(t.back){var o=t.backgroundColor,r=t.backgroundOpacity;o===Le.backgroundColor&&r===Le.backgroundOpacity||(e.backgroundColor=Object(xe.c)(o,r))}else e.background="transparent";t.fontFamily&&(e.fontFamily=t.fontFamily);t.fontStyle&&(e.fontStyle=t.fontStyle);t.fontWeight&&(e.fontWeight=t.fontWeight);t.textDecoration&&(e.textDecoration=t.textDecoration)}(d,t),(o||r!==Le.windowOpacity)&&(f.backgroundColor=Object(xe.c)(o||"#000000",r)),m(a,d,t.fontOpacity),t.back||null!==a||m("uniform",d),Object(xe.d)(l,f),Object(xe.d)(c,d),function(e,t){b(),function(e,t){v.Browser.safari&&Object(xe.b)("#"+e+" .jw-video::-webkit-media-text-track-display-backdrop",{backgroundColor:t.backgroundColor},e,!0);Object(xe.b)("#"+e+" .jw-video::-webkit-media-text-track-display",f,e,!0),Object(xe.b)("#"+e+" .jw-video::cue",t,e,!0)}(e,t),function(e,t){Object(xe.b)("#"+e+" .jw-text-track-display",f,e),Object(xe.b)("#"+e+" .jw-text-track-cue",t,e)}(e,t)}(e,d),l.appendChild(c),s.appendChild(l),g.change("captionsTrack",(function(e,t){this.populate(t)}),this),g.set("captions",t)},this.element=function(){return s},this.destroy=function(){g.off(null,null,this),this.off()};var w=function(e){a=e,h.selectCues(o,a)};g.on("change:playlistItem",(function(){a=null,r=[]}),this),g.on(d.Q,(function(e){r=[],w(e)}),this),g.on(d.S,w,this),g.on("subtitlesTrackData",(function(){this.selectCues(o,a)}),this),g.on("change:captionsList",(function e(t,i){var o=this;1!==i.length&&(t.get("renderCaptionsNatively")||Ee||(n.e(8).then(function(e){Ee=n(93).default}.bind(null,n)).catch(Object(Ie.c)(301121)).catch((function(e){o.trigger(d.tb,e)})),t.off("change:captionsList",e,this)))}),this)};Object(i.h)(Ve.prototype,g.a);var Fe=Ve,ze=function(e,t){var n=t?" jw-hide":"";return'')},He={linktarget:"_blank",margin:8,hide:!1,position:"top-right"};function Ne(e){var t,n;Object(i.h)(this,g.a);var o=new Image;this.setup=function(){(n=Object(i.h)({},He,e.get("logo"))).position=n.position||He.position,n.hide="true"===n.hide.toString(),n.file&&"control-bar"!==n.position&&(t||(t=Object(Me.e)(ze(n.position,n.hide))),e.set("logo",n),o.onload=function(){var i=this.height,o=this.width,r={backgroundImage:'url("'+this.src+'")'};if(n.margin!==He.margin){var a=/(\w+)-(\w+)/.exec(n.position);3===a.length&&(r["margin-"+a[1]]=n.margin,r["margin-"+a[2]]=n.margin)}var s=.15*e.get("containerHeight"),l=.15*e.get("containerWidth");if(i>s||o>l){var c=o/i;l/s>c?(i=s,o=s*c):(o=l,i=l/c)}r.width=Math.round(o),r.height=Math.round(i),Object(xe.d)(t,r),e.set("logoWidth",r.width)},o.src=n.file,n.link&&(t.setAttribute("tabindex","0"),t.setAttribute("aria-label",e.get("localization").logo)),this.ui=new Te.a(t).on("click tap enter",(function(e){e&&e.stopPropagation&&e.stopPropagation(),this.trigger(d.A,{link:n.link,linktarget:n.linktarget})}),this))},this.setContainer=function(e){t&&e.appendChild(t)},this.element=function(){return t},this.position=function(){return n.position},this.destroy=function(){o.onload=null,this.ui&&this.ui.destroy()}}var Be=function(e){this.model=e,this.image=null};Object(i.h)(Be.prototype,{setup:function(e){this.el=e},setImage:function(e){var t=this.image;t&&(t.onload=null),this.image=null;var n="";"string"==typeof e&&(n='url("'+e+'")',(t=this.image=new Image).src=e),Object(xe.d)(this.el,{backgroundImage:n})},resize:function(e,t,n){if("uniform"===n){if(e&&(this.playerAspectRatio=e/t),!this.playerAspectRatio||!this.image||"complete"!==(s=this.model.get("state"))&&"idle"!==s&&"error"!==s&&"buffering"!==s)return;var i=this.image,o=null;if(i){if(0===i.width){var r=this;return void(i.onload=function(){r.resize(e,t,n)})}var a=i.width/i.height;Math.abs(this.playerAspectRatio-a)<.09&&(o="cover")}Object(xe.d)(this.el,{backgroundSize:o})}var s},element:function(){return this.el}});var qe=Be,De=function(e){this.model=e.player};Object(i.h)(De.prototype,{hide:function(){Object(xe.d)(this.el,{display:"none"})},show:function(){Object(xe.d)(this.el,{display:""})},setup:function(e){this.el=e;var t=this.el.getElementsByTagName("div");this.title=t[0],this.description=t[1],this.model.on("change:logoWidth",this.update,this),this.model.change("playlistItem",this.playlistItem,this)},update:function(e){var t={},n=e.get("logo");if(n){var i=1*(""+n.margin).replace("px",""),o=e.get("logoWidth")+(isNaN(i)?0:i+10);"top-left"===n.position?t.paddingLeft=o:"top-right"===n.position&&(t.paddingRight=o)}Object(xe.d)(this.el,t)},playlistItem:function(e,t){if(t)if(e.get("displaytitle")||e.get("displaydescription")){var n="",i="";t.title&&e.get("displaytitle")&&(n=t.title),t.description&&e.get("displaydescription")&&(i=t.description),this.updateText(n,i)}else this.hide()},updateText:function(e,t){Object(Me.q)(this.title,e),Object(Me.q)(this.description,t),this.title.firstChild||this.description.firstChild?this.show():this.hide()},element:function(){return this.el}});var We=De;function Ue(e,t){for(var n=0;ne)}if(t.get("controls")){var a=me(t);Object(Me.v)(u,"jw-flag-audio-player",a),t.set("audioMode",a)}}function V(){t.set("visibility",ve(t,u))}this.updateBounds=function(){Object(ke.a)(k);var e=t.get("isFloating")?f:u,n=document.body.contains(e),i=Object(Me.c)(e),a=Math.round(i.width),s=Math.round(i.height);if(P=Object(Me.c)(u),a===o&&s===r)return o&&r||R(),void t.set("inDom",n);a&&s||o&&r||R(),(a||s||n)&&(t.set("containerWidth",a),t.set("containerHeight",s)),t.set("inDom",n),n&&we.a.observe(u)},this.updateStyles=function(){var e=t.get("containerWidth"),n=t.get("containerHeight");L(e,n),A&&A.resize(e,n),Z(e,n),y.resize(),x&&B()},this.checkResized=function(){var e=t.get("containerWidth"),n=t.get("containerHeight"),i=t.get("isFloating");if(e!==o||n!==r){this.resizeListener||(this.resizeListener=new Xe.a(f,this,t)),o=e,r=n,l.trigger(d.hb,{width:e,height:n});var s=Object(Oe.a)(e);T!==s&&(T=s,l.trigger(d.j,{breakpoint:T}))}i!==a&&(a=i,l.trigger(d.x,{floating:i}),V())},this.responsiveListener=R,this.setup=function(){var i,o,r,a;m.setup(u.querySelector(".jw-preview")),w.setup(u.querySelector(".jw-title")),(n=new Ne(t)).setup(),n.setContainer(f),n.on(d.A,G),y.setup(u.id,t.get("captions")),w.element().parentNode.insertBefore(y.element(),w.element()),i=e,r=new Re(o=t,p),a=o.get("controls"),r.on({click:function(){l.trigger(d.p),A&&(ce()?A.settingsMenu.close():ue()?A.infoOverlay.close():i.playToggle({reason:"interaction"}))},tap:function(){u.removeEventListener("mousemove",U),u.removeEventListener("mouseout",Y),u.removeEventListener("mouseover",Q),l.trigger(d.p),ce()&&A.settingsMenu.close(),ue()&&A.infoOverlay.close();var e=o.get("state");if(a&&(e===d.mb||e===d.kb||o.get("instream")&&e===d.ob)&&i.playToggle({reason:"interaction"}),a&&e===d.ob){if(o.get("instream")||o.get("castActive")||"audio"===o.get("mediaType"))return;Object(Me.v)(u,"jw-flag-controls-hidden"),l.dismissible&&Object(Me.v)(u,"jw-floating-dismissible",Object(Me.i)(u,"jw-flag-controls-hidden")),y.renderCues(!0)}else A&&(A.showing?A.userInactive():A.userActive())},doubleClick:function(){return A&&i.setFullscreen()}}),u.addEventListener("mousemove",U),u.addEventListener("mouseover",Q),u.addEventListener("mouseout",Y),C=r,_=new Te.a(u).on("click",(function(){})),M=Pe(u,document,te),t.on("change:hideAdsControls",(function(e,t){Object(Me.v)(u,"jw-flag-ads-hide-controls",t)})),t.on("change:scrubbing",(function(e,t){Object(Me.v)(u,"jw-flag-dragging",t)})),t.on("change:playRejected",(function(e,t){Object(Me.v)(u,"jw-flag-play-rejected",t)})),t.on(d.X,ee),t.on("change:".concat(d.U),(function(){Z(),y.resize()})),t.player.on("change:errorEvent",re),t.change("stretching",X);var s=t.get("width"),c=t.get("height"),g=$(s,c);Object(xe.d)(u,g),t.change("aspectratio",J),L(s,c),t.get("controls")||(Object(Me.a)(u,"jw-flag-controls-hidden"),Object(Me.o)(u,"jw-floating-dismissible")),Ge&&Object(Me.a)(u,"jw-ie");var b=t.get("skin")||{};b.name&&Object(Me.p)(u,/jw-skin-\S+/,"jw-skin-"+b.name);var j=function(e){e||(e={});var t=e.active,n=e.inactive,i=e.background,o={};return o.controlbar=function(e){if(e||t||n||i){var o={};return e=e||{},o.iconsActive=e.iconsActive||t,o.icons=e.icons||n,o.text=e.text||n,o.background=e.background||i,o}}(e.controlbar),o.timeslider=function(e){if(e||t){var n={};return e=e||{},n.progress=e.progress||t,n.rail=e.rail,n}}(e.timeslider),o.menus=function(e){if(e||t||n||i){var o={};return e=e||{},o.text=e.text||n,o.textActive=e.textActive||t,o.background=e.background||i,o}}(e.menus),o.tooltips=function(e){if(e||n||i){var t={};return e=e||{},t.text=e.text||n,t.background=e.background||i,t}}(e.tooltips),o}(b);!function(e,t){var n;function i(t,n,i,o){if(i){t=Object(h.f)(t,"#"+e+(o?"":" "));var r={};r[n]=i,Object(xe.b)(t.join(", "),r,e)}}t&&(t.controlbar&&function(t){i([".jw-controlbar .jw-icon-inline.jw-text",".jw-title-primary",".jw-title-secondary"],"color",t.text),t.icons&&(i([".jw-button-color:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:not(.jw-icon-cast)"],"color",t.icons),i([".jw-display-icon-container .jw-button-color"],"color",t.icons),Object(xe.b)("#".concat(e," .jw-icon-cast google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.icons,"}"),e));t.iconsActive&&(i([".jw-display-icon-container .jw-button-color:hover",".jw-display-icon-container .jw-button-color:focus"],"color",t.iconsActive),i([".jw-button-color.jw-toggle:not(.jw-icon-cast)",".jw-button-color:hover:not(.jw-icon-cast)",".jw-button-color:focus:not(.jw-icon-cast)",".jw-button-color.jw-toggle.jw-off:hover:not(.jw-icon-cast)"],"color",t.iconsActive),i([".jw-svg-icon-buffer"],"fill",t.icons),Object(xe.b)("#".concat(e," .jw-icon-cast:hover google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(xe.b)("#".concat(e," .jw-icon-cast:focus google-cast-launcher.jw-off"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(xe.b)("#".concat(e," .jw-icon-cast google-cast-launcher.jw-off:focus"),"{--disconnected-color: ".concat(t.iconsActive,"}"),e),Object(xe.b)("#".concat(e," .jw-icon-cast google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(xe.b)("#".concat(e," .jw-icon-cast google-cast-launcher:focus"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(xe.b)("#".concat(e," .jw-icon-cast:hover google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e),Object(xe.b)("#".concat(e," .jw-icon-cast:focus google-cast-launcher"),"{--connected-color: ".concat(t.iconsActive,"}"),e));i([" .jw-settings-topbar",":not(.jw-state-idle) .jw-controlbar",".jw-flag-audio-player .jw-controlbar"],"background",t.background,!0)}(t.controlbar),t.timeslider&&function(e){var t=e.progress;"none"!==t&&(i([".jw-progress",".jw-knob"],"background-color",t),i([".jw-buffer"],"background-color",Object(xe.c)(t,50)));i([".jw-rail"],"background-color",e.rail),i([".jw-background-color.jw-slider-time",".jw-slider-time .jw-cue"],"background-color",e.background)}(t.timeslider),t.menus&&(i([".jw-option",".jw-toggle.jw-off",".jw-skip .jw-skip-icon",".jw-nextup-tooltip",".jw-nextup-close",".jw-settings-content-item",".jw-related-title"],"color",(n=t.menus).text),i([".jw-option.jw-active-option",".jw-option:not(.jw-active-option):hover",".jw-option:not(.jw-active-option):focus",".jw-settings-content-item:hover",".jw-nextup-tooltip:hover",".jw-nextup-tooltip:focus",".jw-nextup-close:hover"],"color",n.textActive),i([".jw-nextup",".jw-settings-menu"],"background",n.background)),t.tooltips&&function(e){i([".jw-skip",".jw-tooltip .jw-text",".jw-time-tip .jw-text"],"background-color",e.background),i([".jw-time-tip",".jw-tooltip"],"color",e.background),i([".jw-skip"],"border","none"),i([".jw-skip .jw-text",".jw-skip .jw-icon",".jw-time-tip .jw-text",".jw-tooltip .jw-text"],"color",e.text)}(t.tooltips),t.menus&&function(t){if(t.textActive){var n={color:t.textActive,borderColor:t.textActive,stroke:t.textActive};Object(xe.b)("#".concat(e," .jw-color-active"),n,e),Object(xe.b)("#".concat(e," .jw-color-active-hover:hover"),n,e)}if(t.text){var i={color:t.text,borderColor:t.text,stroke:t.text};Object(xe.b)("#".concat(e," .jw-color-inactive"),i,e),Object(xe.b)("#".concat(e," .jw-color-inactive-hover:hover"),i,e)}}(t.menus))}(t.get("id"),j),t.set("mediaContainer",p),t.set("iFrame",v.Features.iframe),t.set("activeTab",Object(je.a)()),t.set("touchMode",Je&&("string"==typeof c||c>=be)),we.a.add(this),t.get("enableGradient")&&!Ge&&Object(Me.a)(u,"jw-ab-drop-shadow"),this.isSetup=!0,t.trigger("viewSetup",u);var k=document.body.contains(u);k&&we.a.observe(u),t.set("inDom",k)},this.init=function(){this.updateBounds(),t.on("change:fullscreen",K),t.on("change:activeTab",V),t.on("change:fullscreen",V),t.on("change:intersectionRatio",V),t.on("change:visibility",W),t.on("instreamMode",(function(e){e?de():fe()})),V(),1!==we.a.size()||t.get("visibility")||W(t,1,0);var e=t.player;t.change("state",ae),e.change("controls",q),t.change("streamType",ie),t.change("mediaType",oe),e.change("playlistItem",(function(e,t){le(e,t)})),o=r=null,x&&v.OS.mobile&&we.a.addScrollHandler(B),this.checkResized()};var F,z=62,H=!0;function N(){var e=t.get("isFloating"),n=P.top0&&void 0!==arguments[0])||arguments[0],t={x:0,y:0,width:o||0,height:r||0};return A&&e&&(t.height-=A.controlbarHeight()),t},this.setCaptions=function(e){y.clear(),y.setup(t.get("id"),e),y.resize()},this.setIntersection=function(e){var n=Math.round(100*e.intersectionRatio)/100;t.set("intersectionRatio",n),x&&!E()&&(S=S||n>=.5)&&he(n)},this.stopFloating=function(e,n){if(e&&(x=null,we.a.removeScrollHandler(B)),Ke===u){Ke=null,t.set("isFloating",!1);var i=function(){Object(Me.o)(u,"jw-flag-floating"),J(t,t.get("aspectratio")),Object(xe.d)(u,{backgroundImage:null}),Object(xe.d)(f,{maxWidth:null,width:null,height:null,left:null,right:null,top:null,bottom:null,margin:null,transform:null,transition:null,"transition-timing-function":null})};n?(Object(xe.d)(f,{transform:"translateY(-".concat(z-P.top,"px)"),"transition-timing-function":"ease-out"}),setTimeout(i,150)):i(),b.disable(),R()}},this.destroy=function(){t.destroy(),we.a.unobserve(u),we.a.remove(this),this.isSetup=!1,this.off(),Object(ke.a)(k),clearTimeout(j),Ke===u&&(Ke=null),_&&(_.destroy(),_=null),M&&(M.destroy(),M=null),A&&A.disable(t),C&&(C.destroy(),u.removeEventListener("mousemove",U),u.removeEventListener("mouseout",Y),u.removeEventListener("mouseover",Q),C=null),y.destroy(),n&&(n.destroy(),n=null),Object(xe.a)(t.get("id")),this.resizeListener&&(this.resizeListener.destroy(),delete this.resizeListener),x&&v.OS.mobile&&we.a.removeScrollHandler(B)}};function Ze(e,t,n){return(Ze="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var i=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=rt(e)););return e}(e,t);if(i){var o=Object.getOwnPropertyDescriptor(i,t);return o.get?o.get.call(n):o.value}})(e,t,n||e)}function et(e){return(et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function tt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function nt(e,t){for(var n=0;nt&&e(),t=i}};function Pt(e,t){t.off(d.N,e._onPlayAttempt),t.off(d.fb,e._triggerFirstFrame),t.off(d.S,e._onTime),e.off("change:activeTab",e._onTabVisible)}var Tt=function(e,t){e.change("mediaModel",(function(e,n,i){e._qoeItem&&i&&e._qoeItem.end(i.get("mediaState")),e._qoeItem=new Ct.a,e._qoeItem.getFirstFrame=function(){var e=this.between(d.N,d.H),t=this.between(_t,d.H);return t>0&&t0&&ae(t,e.tracks)}),C).on(d.F,(function(){Promise.resolve().then(re)}),C).on(d.G,C.triggerError,C),Tt(M,F),M.on(d.w,C.triggerError,C),M.on("change:state",(function(e,t,n){X()||J.call(x,e,t,n)}),this),M.on("change:castState",(function(e,t){C.trigger(d.m,t)})),M.on("change:fullscreen",(function(e,t){C.trigger(d.y,{fullscreen:t}),t&&e.set("playOnViewable",!1)})),M.on("change:volume",(function(e,t){C.trigger(d.V,{volume:t})})),M.on("change:mute",(function(e){C.trigger(d.M,{mute:e.getMute()})})),M.on("change:playbackRate",(function(e,t){C.trigger(d.ab,{playbackRate:t,position:e.get("position")})}));var z=function e(t,n){"clickthrough"!==n&&"interaction"!==n&&"external"!==n||(M.set("playOnViewable",!1),M.off("change:playReason change:pauseReason",e))};function H(e,t){Object(i.u)(t)||M.set("viewable",Math.round(t))}function N(){de&&(!0!==M.get("autostart")||M.get("playOnViewable")||Z("autostart"),de.flush())}function B(e,t){C.trigger("viewable",{viewable:t}),q()}function q(){if((o.a[0]===t||1===M.get("viewable"))&&"idle"===M.get("state")&&!1===M.get("autostart"))if(!w.primed()&&v.OS.android){var e=w.getTestElement(),n=C.getMute();Promise.resolve().then((function(){return wt(e,{muted:n})})).then((function(){"idle"===M.get("state")&&F.preloadVideo()})).catch(Rt)}else F.preloadVideo()}function D(e){C._instreamAdapter.noResume=!e,e||te({reason:"viewable"})}function W(e){e||(C.pause({reason:"viewable"}),M.set("playOnViewable",!e))}function U(e,t){var n=X();if(e.get("playOnViewable")){if(t){var i=e.get("autoPause").pauseAds,o=e.get("pauseReason");G()===d.mb?Z("viewable"):n&&!i||"interaction"===o||K({reason:"viewable"})}else v.OS.mobile&&!n&&(C.pause({reason:"autostart"}),M.set("playOnViewable",!0));v.OS.mobile&&n&&D(t)}}function Q(e,t){var n=e.get("state"),i=X(),o=e.get("playReason");i?e.get("autoPause").pauseAds?W(t):D(t):n===d.pb||n===d.jb?W(t):n===d.mb&&"playlist"===o&&e.once("change:state",(function(){W(t)}))}function X(){var e=C._instreamAdapter;return!!e&&e.getState()}function G(){var e=X();return e||M.get("state")}function K(e){if(T.cancel(),S=!1,M.get("state")===d.lb)return Promise.resolve();var n=$(e);return M.set("playReason",n),X()?(t.pauseAd(!1,e),Promise.resolve()):(M.get("state")===d.kb&&(ee(!0),C.setItemIndex(0)),!_&&(_=!0,C.trigger(d.C,{playReason:n,startTime:e&&e.startTime?e.startTime:M.get("playlistItem").starttime}),_=!1,xt()&&!w.primed()&&w.prime(),"playlist"===n&&M.get("autoPause").viewability&&Q(M,M.get("viewable")),O)?(xt()&&!L&&M.get("mediaElement").load(),O=!1,k=null,Promise.resolve()):F.playVideo(n).then(w.played))}function $(e){return e&&e.reason?e.reason:"unknown"}function Z(e){if(G()===d.mb){T=b(N);var t=M.get("advertising");(function(e,t){var n=t.cancelable,i=t.muted,o=void 0!==i&&i,r=t.allowMuted,a=void 0!==r&&r,s=t.timeout,l=void 0===s?1e4:s,c=e.getTestElement(),u=o?"muted":"".concat(a);kt[u]||(kt[u]=wt(c,{muted:o}).catch((function(e){if(!n.cancelled()&&!1===o&&a)return wt(c,{muted:o=!0});throw e})).then((function(){return o?(kt[u]=null,yt):vt})).catch((function(e){throw clearTimeout(d),kt[u]=null,e.reason=jt,e})));var d,f=kt[u].then((function(e){if(clearTimeout(d),n.cancelled()){var t=new Error("Autoplay test was cancelled");throw t.reason="cancelled",t}return e})),h=new Promise((function(e,t){d=setTimeout((function(){kt[u]=null;var e=new Error("Autoplay test timed out");e.reason="timeout",t(e)}),l)}));return Promise.race([f,h])})(w,{cancelable:T,muted:C.getMute(),allowMuted:!t||t.autoplayadsmuted}).then((function(t){return M.set("canAutoplay",t),t!==yt||C.getMute()||(M.set("autostartMuted",!0),ue(),M.once("change:autostartMuted",(function(e){e.off("change:viewable",U),C.trigger(d.M,{mute:M.getMute()})}))),C.getMute()&&M.get("enableDefaultCaptions")&&j.selectDefaultIndex(1),K({reason:e}).catch((function(){C._instreamAdapter||M.set("autostartFailed",!0),k=null}))})).catch((function(e){if(M.set("canAutoplay",jt),M.set("autostart",!1),!T.cancelled()){var t=Object(m.w)(e);C.trigger(d.h,{reason:e.reason,code:t,error:e})}}))}}function ee(e){if(T.cancel(),de.empty(),X()){var t=C._instreamAdapter;return t&&(t.noResume=!0),void(k=function(){return F.stopVideo()})}k=null,!e&&(S=!0),_&&(O=!0),M.set("errorEvent",void 0),F.stopVideo()}function te(e){var t=$(e);M.set("pauseReason",t),M.set("playOnViewable","viewable"===t)}function ne(e){k=null,T.cancel();var n=X();if(n&&n!==d.ob)return te(e),void t.pauseAd(!0,e);switch(M.get("state")){case d.lb:return;case d.pb:case d.jb:te(e),F.pause();break;default:_&&(O=!0)}}function ie(e,t){ee(!0),C.setItemIndex(e),C.play(t)}function oe(e){ie(M.get("item")+1,e)}function re(){C.completeCancelled()||(k=C.completeHandler,C.shouldAutoAdvance()?C.nextItem():M.get("repeat")?oe({reason:"repeat"}):(v.OS.iOS&&le(!1),M.set("playOnViewable",!1),M.set("state",d.kb),C.trigger(d.cb,{})))}function ae(e,t){e=parseInt(e,10)||0,M.persistVideoSubtitleTrack(e,t),F.subtitles=e,C.trigger(d.k,{tracks:se(),track:e})}function se(){return j.getCaptionsList()}function le(e){Object(i.o)(e)||(e=!M.get("fullscreen")),M.set("fullscreen",e),C._instreamAdapter&&C._instreamAdapter._adModel&&C._instreamAdapter._adModel.set("fullscreen",e)}function ue(){F.mute=M.getMute(),F.volume=M.get("volume")}M.on("change:playReason change:pauseReason",z),C.on(d.c,(function(e){return z(0,e.playReason)})),C.on(d.b,(function(e){return z(0,e.pauseReason)})),M.on("change:scrubbing",(function(e,t){t?(P=M.get("state")!==d.ob,ne()):P&&K({reason:"interaction"})})),M.on("change:captionsList",(function(e,t){C.trigger(d.l,{tracks:t,track:M.get("captionsIndex")||0})})),M.on("change:mediaModel",(function(e,t){var n=this;e.set("errorEvent",void 0),t.change("mediaState",(function(t,n){var i;e.get("errorEvent")||e.set(d.bb,(i=n)===d.nb||i===d.qb?d.jb:i)}),this),t.change("duration",(function(t,n){if(0!==n){var i=e.get("minDvrWindow"),o=Object(Ot.b)(n,i);e.setStreamType(o)}}),this);var i=e.get("item")+1,o="autoplay"===(e.get("related")||{}).oncomplete,r=e.get("playlist")[i];if((r||o)&&L){t.on("change:position",(function e(i,a){var s=r&&!r.daiSetting,l=t.get("duration");s&&a&&l>0&&a>=l-f.b?(t.off("change:position",e,n),F.backgroundLoad(r)):o&&(r=M.get("nextUp"))}),this)}})),(j=new he(M)).on("all",I,C),V.on("viewSetup",(function(e){Object(r.b)(x,e)})),this.playerReady=function(){y.once(d.hb,(function(){try{!function(){M.change("visibility",H),E.off(),C.trigger(d.gb,{setupTime:0}),M.change("playlist",(function(e,t){if(t.length){var n={playlist:t},o=M.get("feedData");o&&(n.feedData=Object(i.h)({},o)),C.trigger(d.eb,n)}})),M.change("playlistItem",(function(e,t){if(t){var n=t.title,i=t.image;if("mediaSession"in navigator&&window.MediaMetadata&&(n||i))try{navigator.mediaSession.metadata=new window.MediaMetadata({title:n,artist:window.location.hostname,artwork:[{src:i||""}]})}catch(e){}e.set("cues",[]),C.trigger(d.db,{index:M.get("item"),item:t})}})),E.flush(),E.destroy(),E=null,M.change("viewable",B),M.change("viewable",U),M.get("autoPause").viewability?M.change("viewable",Q):M.once("change:autostartFailed change:mute",(function(e){e.off("change:viewable",U)}));N(),M.on("change:itemReady",(function(e,t){t&&de.flush()}))}()}catch(e){C.triggerError(Object(m.v)(m.m,m.a,e))}})),y.init()},this.preload=q,this.load=function(e,t){var n,i=C._instreamAdapter;switch(i&&(i.noResume=!0),C.trigger("destroyPlugin",{}),ee(!0),T.cancel(),T=b(N),A.cancel(),xt()&&w.prime(),At(e)){case"string":M.attributes.item=0,M.attributes.itemReady=!1,A=b((function(e){if(e)return C.updatePlaylist(Object(c.a)(e.playlist),e)})),n=function(e){var t=this;return new Promise((function(n,i){var o=new l.a;o.on(d.eb,(function(e){n(e)})),o.on(d.w,i,t),o.load(e)}))}(e).then(A.async);break;case"object":M.attributes.item=0,n=C.updatePlaylist(Object(c.a)(e),t||{});break;case"number":n=C.setItemIndex(e);break;default:return}n.catch((function(e){C.triggerError(Object(m.u)(e,m.c))})),n.then(T.async).catch(Rt)},this.play=function(e){return K(e).catch(Rt)},this.pause=ne,this.seek=function(e,t){var n=M.get("state");if(n!==d.lb){F.position=e;var i=n===d.mb;M.get("scrubbing")||!i&&n!==d.kb||(i&&((t=t||{}).startTime=e),this.play(t))}},this.stop=ee,this.playlistItem=ie,this.playlistNext=oe,this.playlistPrev=function(e){ie(M.get("item")-1,e)},this.setCurrentCaptions=ae,this.setCurrentQuality=function(e){F.quality=e},this.setFullscreen=le,this.getCurrentQuality=function(){return F.quality},this.getQualityLevels=function(){return F.qualities},this.setCurrentAudioTrack=function(e){F.audioTrack=e},this.getCurrentAudioTrack=function(){return F.audioTrack},this.getAudioTracks=function(){return F.audioTracks},this.getCurrentCaptions=function(){return j.getCurrentIndex()},this.getCaptionsList=se,this.getVisualQuality=function(){var e=this._model.get("mediaModel");return e?e.get(d.U):null},this.getConfig=function(){return this._model?this._model.getConfiguration():void 0},this.getState=G,this.next=Rt,this.completeHandler=re,this.completeCancelled=function(){return(e=M.get("state"))!==d.mb&&e!==d.kb&&e!==d.lb||!!S&&(S=!1,!0);var e},this.shouldAutoAdvance=function(){return M.get("item")!==M.get("playlist").length-1},this.nextItem=function(){oe({reason:"playlist"})},this.setConfig=function(e){!function(e,t){var n=e._model,i=n.attributes;t.height&&(t.height=Object(a.b)(t.height),t.width=t.width||i.width),t.width&&(t.width=Object(a.b)(t.width),t.aspectratio?(i.width=t.width,delete t.width):t.height=i.height),t.width&&t.height&&!t.aspectratio&&e._view.resize(t.width,t.height),Object.keys(t).forEach((function(o){var r=t[o];if(void 0!==r)switch(o){case"aspectratio":n.set(o,Object(a.a)(r,i.width));break;case"autostart":!function(e,t,n){e.setAutoStart(n),"idle"===e.get("state")&&!0===n&&t.play({reason:"autostart"})}(n,e,r);break;case"mute":e.setMute(r);break;case"volume":e.setVolume(r);break;case"playbackRateControls":case"playbackRates":case"repeat":case"stretching":n.set(o,r)}}))}(C,e)},this.setItemIndex=function(e){F.stopVideo();var t=M.get("playlist").length;return(e=(parseInt(e,10)||0)%t)<0&&(e+=t),F.setActiveItem(e).catch((function(e){e.code>=151&&e.code<=162&&(e=Object(m.u)(e,m.e)),x.triggerError(Object(m.v)(m.k,m.d,e))}))},this.detachMedia=function(){if(_&&(O=!0),M.get("autoPause").viewability&&Q(M,M.get("viewable")),!L)return F.setAttached(!1);F.backgroundActiveMedia()},this.attachMedia=function(){L?F.restoreBackgroundMedia():F.setAttached(!0),"function"==typeof k&&k()},this.routeEvents=function(e){return F.routeEvents(e)},this.forwardEvents=function(){return F.forwardEvents()},this.playVideo=function(e){return F.playVideo(e)},this.stopVideo=function(){return F.stopVideo()},this.castVideo=function(e,t){return F.castVideo(e,t)},this.stopCast=function(){return F.stopCast()},this.backgroundActiveMedia=function(){return F.backgroundActiveMedia()},this.restoreBackgroundMedia=function(){return F.restoreBackgroundMedia()},this.preloadNextItem=function(){F.background.currentMedia&&F.preloadVideo()},this.isBeforeComplete=function(){return F.beforeComplete},this.setVolume=function(e){M.setVolume(e),ue()},this.setMute=function(e){M.setMute(e),ue()},this.setPlaybackRate=function(e){M.setPlaybackRate(e)},this.getProvider=function(){return M.get("provider")},this.getWidth=function(){return M.get("containerWidth")},this.getHeight=function(){return M.get("containerHeight")},this.getItemQoe=function(){return M._qoeItem},this.addButton=function(e,t,n,i,o){var r=M.get("customButtons")||[],a=!1,s={img:e,tooltip:t,callback:n,id:i,btnClass:o};r=r.reduce((function(e,t){return t.id===i?(a=!0,e.push(s)):e.push(t),e}),[]),a||r.unshift(s),M.set("customButtons",r)},this.removeButton=function(e){var t=M.get("customButtons")||[];t=t.filter((function(t){return t.id!==e})),M.set("customButtons",t)},this.resize=y.resize,this.getSafeRegion=y.getSafeRegion,this.setCaptions=y.setCaptions,this.checkBeforePlay=function(){return _},this.setControls=function(e){Object(i.o)(e)||(e=!M.get("controls")),M.set("controls",e),F.controls=e},this.addCues=function(e){this.setCues(M.get("cues").concat(e))},this.setCues=function(e){M.set("cues",e)},this.updatePlaylist=function(e,t){try{var n=Object(c.b)(e,M,t);Object(c.e)(n);var o=Object(i.h)({},t);delete o.playlist,M.set("feedData",o),M.set("playlist",n)}catch(e){return Promise.reject(e)}return this.setItemIndex(M.get("item"))},this.setPlaylistItem=function(e,t){(t=Object(c.d)(M,new u.a(t),t.feedData||{}))&&(M.get("playlist")[e]=t,e===M.get("item")&&"idle"===M.get("state")&&this.setItemIndex(e))},this.playerDestroy=function(){this.off(),this.stop(),Object(r.b)(this,this.originalContainer),y&&y.destroy(),M&&M.destroy(),de&&de.destroy(),j&&j.destroy(),F&&F.destroy(),this.instreamDestroy()},this.isBeforePlay=this.checkBeforePlay,this.createInstream=function(){return this.instreamDestroy(),this._instreamAdapter=new ce(this,M,y,w),this._instreamAdapter},this.instreamDestroy=function(){C._instreamAdapter&&(C._instreamAdapter.destroy(),C._instreamAdapter=null)};var de=new s.a(this,["play","pause","setCurrentAudioTrack","setCurrentCaptions","setCurrentQuality","setFullscreen"],(function(){return!x._model.get("itemReady")||E}));de.queue.push.apply(de.queue,p),y.setup()},get:function(e){if(e in j.a){var t=this._model.get("mediaModel");return t?t.get(e):j.a[e]}return this._model.get(e)},getContainer:function(){return this.currentContainer||this.originalContainer},getMute:function(){return this._model.getMute()},triggerError:function(e){var t=this._model;e.message=t.get("localization").errors[e.key],delete e.key,t.set("errorEvent",e),t.set("state",d.lb),t.once("change:state",(function(){this.set("errorEvent",void 0)}),t),this.trigger(d.w,e)}});t.default=Et},57:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var i=n(2);function o(e){var t=[],n=(e=Object(i.i)(e)).split("\r\n\r\n");1===n.length&&(n=e.split("\n\n"));for(var o=0;o0&&(o=0),n.length>o+1&&n[o+1]){var r=n[o],a=r.indexOf(" --\x3e ");a>0&&(t.begin=Object(i.g)(r.substr(0,a)),t.end=Object(i.g)(r.substr(a+5)),t.text=n.slice(o+1).join("\r\n"))}return t}},58:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return r}));var i=n(5);function o(e){var t=-1;return e>=1280?t=7:e>=960?t=6:e>=800?t=5:e>=640?t=4:e>=540?t=3:e>=420?t=2:e>=320?t=1:e>=250&&(t=0),t}function r(e,t){var n="jw-breakpoint-"+t;Object(i.p)(e,/jw-breakpoint--?\d+/,n)}},59:function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",i=e[3];if(!i)return n;if(t&&"function"==typeof btoa){var o=(a=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),r=i.sources.map((function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"}));return[n].concat(r).concat([o]).join("\n")}var a;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var i={},o=0;o1&&(n+=" ["+t+"]")),{label:n,unknownCount:t}}n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}))},61:function(e,t,n){"use strict";function i(e){return new Promise((function(t,n){if(e.paused)return n(o("NotAllowedError",0,"play() failed."));var i=function(){e.removeEventListener("play",r),e.removeEventListener("playing",a),e.removeEventListener("pause",a),e.removeEventListener("abort",a),e.removeEventListener("error",a)},r=function(){e.addEventListener("playing",a),e.addEventListener("abort",a),e.addEventListener("error",a),e.addEventListener("pause",a)},a=function(e){if(i(),"playing"===e.type)t();else{var r='The play() request was interrupted by a "'.concat(e.type,'" event.');"error"===e.type?n(o("NotSupportedError",9,r)):n(o("AbortError",20,r))}};e.addEventListener("play",r)}))}function o(e,t,n){var i=new Error(n);return i.name=e,i.code=t,i}n.d(t,"a",(function(){return i}))},62:function(e,t,n){"use strict";function i(e,t){return e!==1/0&&Math.abs(e)>=Math.max(r(t),0)}function o(e,t){var n="VOD";return e===1/0?n="LIVE":e<0&&(n=i(e,r(t))?"DVR":"LIVE"),n}function r(e){return void 0===e?120:Math.max(e,0)}n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}))},63:function(e,t,n){"use strict";var i=n(64),o=n(16),r=n(22),a=n(4),s=n(57),l=n(2),c=n(1);function u(e){throw new c.n(null,e)}function d(e,t,i){e.xhr=Object(r.a)(e.file,(function(r){!function(e,t,i,r){var d,f,g=e.responseXML?e.responseXML.firstChild:null;if(g)for("xml"===Object(a.b)(g)&&(g=g.nextSibling);g.nodeType===g.COMMENT_NODE;)g=g.nextSibling;try{if(g&&"tt"===Object(a.b)(g))d=function(e){e||u(306007);var t=[],n=e.getElementsByTagName("p"),i=30,o=e.getElementsByTagName("tt");if(o&&o[0]){var r=parseFloat(o[0].getAttribute("ttp:frameRate"));isNaN(r)||(i=r)}n||u(306005),n.length||(n=e.getElementsByTagName("tt:p")).length||(n=e.getElementsByTagName("tts:p"));for(var a=0;a\s+<").replace(/(<\/?)tts?:/g,"$1").replace(//g,"\r\n");if(g){var p=s.getAttribute("begin"),b=s.getAttribute("dur"),m=s.getAttribute("end"),w={begin:Object(l.g)(p,i),text:g};m?w.end=Object(l.g)(m,i):b&&(w.end=w.begin+Object(l.g)(b,i)),t.push(w)}}return t.length||u(306005),t}(e.responseXML),f=h(d),delete t.xhr,i(f);else{var p=e.responseText;p.indexOf("WEBVTT")>=0?n.e(10).then(function(e){return n(92).default}.bind(null,n)).catch(Object(o.c)(301131)).then((function(e){var n=new e(window);f=[],n.oncue=function(e){f.push(e)},n.onflush=function(){delete t.xhr,i(f)},n.parse(p)})).catch((function(e){delete t.xhr,r(Object(c.v)(null,c.b,e))})):(d=Object(s.a)(p),f=h(d),delete t.xhr,i(f))}}catch(e){delete t.xhr,r(Object(c.v)(null,c.b,e))}}(r,e,t,i)}),(function(e,t,n,o){i(Object(c.u)(o,c.b))}))}function f(e){e&&e.forEach((function(e){var t=e.xhr;t&&(t.onload=null,t.onreadystatechange=null,t.onerror=null,"abort"in t&&t.abort()),delete e.xhr}))}function h(e){return e.map((function(e){return new i.a(e.begin,e.end,e.text)}))}n.d(t,"c",(function(){return d})),n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return h}))},64:function(e,t,n){"use strict";var i=window.VTTCue;function o(e){if("string"!=typeof e)return!1;return!!{start:!0,middle:!0,end:!0,left:!0,right:!0}[e.toLowerCase()]&&e.toLowerCase()}if(!i){(i=function(e,t,n){var i=this;i.hasBeenReset=!1;var r="",a=!1,s=e,l=t,c=n,u=null,d="",f=!0,h="auto",g="start",p="auto",b=100,m="middle";Object.defineProperty(i,"id",{enumerable:!0,get:function(){return r},set:function(e){r=""+e}}),Object.defineProperty(i,"pauseOnExit",{enumerable:!0,get:function(){return a},set:function(e){a=!!e}}),Object.defineProperty(i,"startTime",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e)throw new TypeError("Start time must be set to a number.");s=e,this.hasBeenReset=!0}}),Object.defineProperty(i,"endTime",{enumerable:!0,get:function(){return l},set:function(e){if("number"!=typeof e)throw new TypeError("End time must be set to a number.");l=e,this.hasBeenReset=!0}}),Object.defineProperty(i,"text",{enumerable:!0,get:function(){return c},set:function(e){c=""+e,this.hasBeenReset=!0}}),Object.defineProperty(i,"region",{enumerable:!0,get:function(){return u},set:function(e){u=e,this.hasBeenReset=!0}}),Object.defineProperty(i,"vertical",{enumerable:!0,get:function(){return d},set:function(e){var t=function(e){return"string"==typeof e&&(!!{"":!0,lr:!0,rl:!0}[e.toLowerCase()]&&e.toLowerCase())}(e);if(!1===t)throw new SyntaxError("An invalid or illegal string was specified.");d=t,this.hasBeenReset=!0}}),Object.defineProperty(i,"snapToLines",{enumerable:!0,get:function(){return f},set:function(e){f=!!e,this.hasBeenReset=!0}}),Object.defineProperty(i,"line",{enumerable:!0,get:function(){return h},set:function(e){if("number"!=typeof e&&"auto"!==e)throw new SyntaxError("An invalid number or illegal string was specified.");h=e,this.hasBeenReset=!0}}),Object.defineProperty(i,"lineAlign",{enumerable:!0,get:function(){return g},set:function(e){var t=o(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");g=t,this.hasBeenReset=!0}}),Object.defineProperty(i,"position",{enumerable:!0,get:function(){return p},set:function(e){if(e<0||e>100)throw new Error("Position must be between 0 and 100.");p=e,this.hasBeenReset=!0}}),Object.defineProperty(i,"size",{enumerable:!0,get:function(){return b},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");b=e,this.hasBeenReset=!0}}),Object.defineProperty(i,"align",{enumerable:!0,get:function(){return m},set:function(e){var t=o(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");m=t,this.hasBeenReset=!0}}),i.displayState=void 0}).prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)}}t.a=i},65:function(e,t,n){var i=n(66);"string"==typeof i&&(i=[["all-players",i,""]]),n(35).style(i,"all-players"),i.locals&&(e.exports=i.locals)},66:function(e,t,n){(e.exports=n(59)(!1)).push([e.i,'.jw-reset{text-align:left;direction:ltr}.jw-reset-text,.jw-reset{color:inherit;background-color:transparent;padding:0;margin:0;float:none;font-family:Arial,Helvetica,sans-serif;font-size:1em;line-height:1em;list-style:none;text-transform:none;vertical-align:baseline;border:0;font-variant:inherit;font-stretch:inherit;-webkit-tap-highlight-color:rgba(255,255,255,0)}body .jw-error,body .jwplayer.jw-state-error{height:100%;width:100%}.jw-title{position:absolute;top:0}.jw-background-color{background:rgba(0,0,0,0.4)}.jw-text{color:rgba(255,255,255,0.8)}.jw-knob{color:rgba(255,255,255,0.8);background-color:#fff}.jw-button-color{color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):focus,:not(.jw-flag-touch) .jw-button-color:not(.jw-logo-button):hover{color:#fff}.jw-toggle{color:#fff}.jw-toggle.jw-off{color:rgba(255,255,255,0.8)}.jw-toggle.jw-off:focus{color:#fff}.jw-toggle:focus{outline:none}:not(.jw-flag-touch) .jw-toggle.jw-off:hover{color:#fff}.jw-rail{background:rgba(255,255,255,0.3)}.jw-buffer{background:rgba(255,255,255,0.3)}.jw-progress{background:#f2f2f2}.jw-time-tip,.jw-volume-tip{border:0}.jw-slider-volume.jw-volume-tip.jw-background-color.jw-slider-vertical{background:none}.jw-skip{padding:.5em;outline:none}.jw-skip .jw-skiptext,.jw-skip .jw-skip-icon{color:rgba(255,255,255,0.8)}.jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skip.jw-skippable:focus .jw-skip-icon{color:#fff}.jw-icon-cast google-cast-launcher{--connected-color:#fff;--disconnected-color:rgba(255,255,255,0.8)}.jw-icon-cast google-cast-launcher:focus{outline:none}.jw-icon-cast google-cast-launcher.jw-off{--connected-color:rgba(255,255,255,0.8)}.jw-icon-cast:focus google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-icon-cast:hover google-cast-launcher{--connected-color:#fff;--disconnected-color:#fff}.jw-nextup-container{bottom:2.5em;padding:5px .5em}.jw-nextup{border-radius:0}.jw-color-active{color:#fff;stroke:#fff;border-color:#fff}:not(.jw-flag-touch) .jw-color-active-hover:hover,:not(.jw-flag-touch) .jw-color-active-hover:focus{color:#fff;stroke:#fff;border-color:#fff}.jw-color-inactive{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}:not(.jw-flag-touch) .jw-color-inactive-hover:hover{color:rgba(255,255,255,0.8);stroke:rgba(255,255,255,0.8);border-color:rgba(255,255,255,0.8)}.jw-option{color:rgba(255,255,255,0.8)}.jw-option.jw-active-option{color:#fff;background-color:rgba(255,255,255,0.1)}:not(.jw-flag-touch) .jw-option:hover{color:#fff}.jwplayer{width:100%;font-size:16px;position:relative;display:block;min-height:0;overflow:hidden;box-sizing:border-box;font-family:Arial,Helvetica,sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.jwplayer *{box-sizing:inherit}.jwplayer.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jwplayer.jw-flag-aspect-mode{height:auto !important}.jwplayer.jw-flag-aspect-mode .jw-aspect{display:block}.jwplayer .jw-aspect{display:none}.jwplayer .jw-swf{outline:none}.jw-media,.jw-preview{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}.jw-media{overflow:hidden;cursor:pointer}.jw-plugin{position:absolute;bottom:66px}.jw-breakpoint-7 .jw-plugin{bottom:132px}.jw-plugin .jw-banner{max-width:100%;opacity:0;cursor:pointer;position:absolute;margin:auto auto 0;left:0;right:0;bottom:0;display:block}.jw-preview,.jw-captions,.jw-title{pointer-events:none}.jw-media,.jw-logo{pointer-events:all}.jw-wrapper{background-color:#000;position:absolute;top:0;left:0;right:0;bottom:0}.jw-hidden-accessibility{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.jw-contract-trigger::before{content:"";overflow:hidden;width:200%;height:200%;display:block;position:absolute;top:0;left:0}.jwplayer .jw-media video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:auto;background:transparent}.jwplayer .jw-media video::-webkit-media-controls-start-playback-button{display:none}.jwplayer.jw-stretch-uniform .jw-media video{object-fit:contain}.jwplayer.jw-stretch-none .jw-media video{object-fit:none}.jwplayer.jw-stretch-fill .jw-media video{object-fit:cover}.jwplayer.jw-stretch-exactfit .jw-media video{object-fit:fill}.jw-preview{position:absolute;display:none;opacity:1;visibility:visible;width:100%;height:100%;background:#000 no-repeat 50% 50%}.jwplayer .jw-preview,.jw-error .jw-preview{background-size:contain}.jw-stretch-none .jw-preview{background-size:auto auto}.jw-stretch-fill .jw-preview{background-size:cover}.jw-stretch-exactfit .jw-preview{background-size:100% 100%}.jw-title{display:none;padding-top:20px;width:100%;z-index:1}.jw-title-primary,.jw-title-secondary{color:#fff;padding-left:20px;padding-right:20px;padding-bottom:.5em;overflow:hidden;text-overflow:ellipsis;direction:unset;white-space:nowrap;width:100%}.jw-title-primary{font-size:1.625em}.jw-breakpoint-2 .jw-title-primary,.jw-breakpoint-3 .jw-title-primary{font-size:1.5em}.jw-flag-small-player .jw-title-primary{font-size:1.25em}.jw-flag-small-player .jw-title-secondary,.jw-title-secondary:empty{display:none}.jw-captions{position:absolute;width:100%;height:100%;text-align:center;display:none;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-decoration:none;pointer-events:none;overflow:hidden;top:0}.jw-captions.jw-captions-enabled{display:block}.jw-captions-window{display:none;padding:.25em;border-radius:.25em}.jw-captions-window.jw-captions-window-active{display:inline-block}.jw-captions-text{display:inline-block;color:#fff;background-color:#000;word-wrap:normal;word-break:normal;white-space:pre-line;font-style:normal;font-weight:normal;text-align:center;text-decoration:none}.jw-text-track-display{font-size:inherit;line-height:1.5}.jw-text-track-cue{background-color:rgba(0,0,0,0.5);color:#fff;padding:.1em .3em}.jwplayer video::-webkit-media-controls{display:none;justify-content:flex-start}.jwplayer video::-webkit-media-text-track-display{min-width:-webkit-min-content}.jwplayer video::cue{background-color:rgba(0,0,0,0.5)}.jwplayer video::-webkit-media-controls-panel-container{display:none}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing) .jw-captions,.jwplayer.jw-flag-media-audio.jw-state-playing .jw-captions,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden) .jw-captions{max-height:calc(100% - 60px)}.jwplayer:not(.jw-flag-controls-hidden):not(.jw-state-playing):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-flag-media-audio.jw-state-playing:not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container,.jwplayer.jw-state-playing:not(.jw-flag-user-inactive):not(.jw-flag-controls-hidden):not(.jw-flag-ios-fullscreen) video::-webkit-media-text-track-container{max-height:calc(100% - 60px)}.jw-logo{position:absolute;margin:20px;cursor:pointer;pointer-events:all;background-repeat:no-repeat;background-size:contain;top:auto;right:auto;left:auto;bottom:auto;outline:none}.jw-logo.jw-tab-focus:focus{outline:solid 2px #4d90fe}.jw-flag-audio-player .jw-logo{display:none}.jw-logo-top-right{top:0;right:0}.jw-logo-top-left{top:0;left:0}.jw-logo-bottom-left{left:0}.jw-logo-bottom-right{right:0}.jw-logo-bottom-left,.jw-logo-bottom-right{bottom:44px;transition:bottom 150ms cubic-bezier(0, .25, .25, 1)}.jw-state-idle .jw-logo{z-index:1}.jw-state-setup .jw-wrapper{background-color:inherit}.jw-state-setup .jw-logo,.jw-state-setup .jw-controls,.jw-state-setup .jw-controls-backdrop{visibility:hidden}span.jw-break{display:block}body .jw-error,body .jwplayer.jw-state-error{background-color:#333;color:#fff;font-size:16px;display:table;opacity:1;position:relative}body .jw-error .jw-display,body .jwplayer.jw-state-error .jw-display{display:none}body .jw-error .jw-media,body .jwplayer.jw-state-error .jw-media{cursor:default}body .jw-error .jw-preview,body .jwplayer.jw-state-error .jw-preview{background-color:#333}body .jw-error .jw-error-msg,body .jwplayer.jw-state-error .jw-error-msg{background-color:#000;border-radius:2px;display:flex;flex-direction:row;align-items:stretch;padding:20px}body .jw-error .jw-error-msg .jw-icon,body .jwplayer.jw-state-error .jw-error-msg .jw-icon{height:30px;width:30px;margin-right:20px;flex:0 0 auto;align-self:center}body .jw-error .jw-error-msg .jw-icon:empty,body .jwplayer.jw-state-error .jw-error-msg .jw-icon:empty{display:none}body .jw-error .jw-error-msg .jw-info-container,body .jwplayer.jw-state-error .jw-error-msg .jw-info-container{margin:0;padding:0}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg{flex-direction:column}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-error-text,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-error-text{text-align:center}body .jw-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-flag-small-player .jw-error-msg .jw-icon,body .jw-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon,body .jwplayer.jw-state-error:not(.jw-flag-audio-player).jw-breakpoint-2 .jw-error-msg .jw-icon{flex:.5 0 auto;margin-right:0;margin-bottom:20px}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break{display:inline}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-flag-small-player .jw-error-msg .jw-break:before,.jwplayer.jw-state-error.jw-breakpoint-2 .jw-error-msg .jw-break:before{content:" "}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg{height:100%;width:100%;top:0;position:absolute;left:0;background:#000;-webkit-transform:none;transform:none;padding:4px 16px;z-index:1}.jwplayer.jw-state-error.jw-flag-audio-player .jw-error-msg.jw-info-overlay{max-width:none;max-height:none}body .jwplayer.jw-state-error .jw-title,.jw-state-idle .jw-title,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-title{display:block}body .jwplayer.jw-state-error .jw-preview,.jw-state-idle .jw-preview,.jwplayer.jw-state-complete:not(.jw-flag-casting):not(.jw-flag-audio-player):not(.jw-flag-overlay-open-related) .jw-preview{display:block}.jw-state-idle .jw-captions,.jwplayer.jw-state-complete .jw-captions,body .jwplayer.jw-state-error .jw-captions{display:none}.jw-state-idle video::-webkit-media-text-track-container,.jwplayer.jw-state-complete video::-webkit-media-text-track-container,body .jwplayer.jw-state-error video::-webkit-media-text-track-container{display:none}.jwplayer.jw-flag-fullscreen{width:100% !important;height:100% !important;top:0;right:0;bottom:0;left:0;z-index:1000;margin:0;position:fixed}body .jwplayer.jw-flag-flash-blocked .jw-title{display:block}.jwplayer.jw-flag-controls-hidden .jw-media{cursor:default}.jw-flag-audio-player:not(.jw-flag-flash-blocked) .jw-media{visibility:hidden}.jw-flag-audio-player .jw-title{background:none}.jw-flag-audio-player object{min-height:45px}.jw-flag-floating{background-size:cover;background-color:#000}.jw-flag-floating .jw-wrapper{position:fixed;z-index:2147483647;-webkit-animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;animation:jw-float-to-bottom 150ms cubic-bezier(0, .25, .25, 1) forwards 1;top:auto;bottom:1rem;left:auto;right:1rem;max-width:400px;max-height:400px;margin:0 auto}@media screen and (max-width:480px){.jw-flag-floating .jw-wrapper{width:100%;left:0;right:0}}.jw-flag-floating .jw-wrapper .jw-media{touch-action:none}@media screen and (max-device-width:480px) and (orientation:portrait){.jw-flag-touch.jw-flag-floating .jw-wrapper{-webkit-animation:none;animation:none;top:62px;bottom:auto;left:0;right:0;max-width:none;max-height:none}}.jw-flag-floating .jw-float-icon{pointer-events:all;cursor:pointer;display:none}.jw-flag-floating .jw-float-icon .jw-svg-icon{-webkit-filter:drop-shadow(0 0 1px #000);filter:drop-shadow(0 0 1px #000)}.jw-flag-floating.jw-floating-dismissible .jw-dismiss-icon{display:none}.jw-flag-floating.jw-floating-dismissible.jw-flag-ads .jw-float-icon{display:flex}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-logo,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-logo{display:none}.jw-flag-floating.jw-floating-dismissible.jw-state-paused .jw-float-icon,.jw-flag-floating.jw-floating-dismissible:not(.jw-flag-user-inactive) .jw-float-icon{display:flex}.jw-float-icon{display:none;position:absolute;top:3px;right:5px;align-items:center;justify-content:center}@-webkit-keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes jw-float-to-bottom{from{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.jw-flag-top{margin-top:2em;overflow:visible}.jw-top{height:2em;line-height:2;pointer-events:none;text-align:center;opacity:.8;position:absolute;top:-2em;width:100%}.jw-top .jw-icon{cursor:pointer;pointer-events:all;height:auto;width:auto}.jw-top .jw-text{color:#555}',""])}}]); \ No newline at end of file diff --git a/ui/v2.5/public/jwplayer/jwplayer.js b/ui/v2.5/public/jwplayer/jwplayer.js new file mode 100644 index 000000000..8b8ed97e9 --- /dev/null +++ b/ui/v2.5/public/jwplayer/jwplayer.js @@ -0,0 +1,95 @@ +/*! +JW Player version 8.11.5 +Copyright (c) 2019, JW Player, All Rights Reserved +https://github.com/jwplayer/jwplayer/blob/v8.11.5/README.md + +This source code and its use and distribution is subject to the terms and conditions of the applicable license agreement. +https://www.jwplayer.com/tos/ + +This product includes portions of other software. For the full text of licenses, see below: + +JW Player Third Party Software Notices and/or Additional Terms and Conditions + +************************************************************************************************** +The following software is used under Apache License 2.0 +************************************************************************************************** + +vtt.js v0.13.0 +Copyright (c) 2019 Mozilla (http://mozilla.org) +https://github.com/mozilla/vtt.js/blob/v0.13.0/LICENSE + +* * * + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and +limitations under the License. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under MIT license +************************************************************************************************** + +Underscore.js v1.6.0 +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +https://github.com/jashkenas/underscore/blob/1.6.0/LICENSE + +Backbone backbone.events.js v1.1.2 +Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud +https://github.com/jashkenas/backbone/blob/1.1.2/LICENSE + +Promise Polyfill v7.1.1 +Copyright (c) 2014 Taylor Hakes and Forbes Lindesay +https://github.com/taylorhakes/promise-polyfill/blob/v7.1.1/LICENSE + +can-autoplay.js v3.0.0 +Copyright (c) 2017 video-dev +https://github.com/video-dev/can-autoplay/blob/v3.0.0/LICENSE + +* * * + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under W3C license +************************************************************************************************** + +Intersection Observer v0.5.0 +Copyright (c) 2016 Google Inc. (http://google.com) +https://github.com/w3c/IntersectionObserver/blob/v0.5.0/LICENSE.md + +* * * + +W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. + +This work is being provided by the copyright holders under the following license. + +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. + +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders. +*/ +window.jwplayer=function(t){function e(e){for(var n,i,o=e[0],u=e[1],a=0,s=[];a2;if(null==t&&(t=[]),p&&t.reduce===p)return r&&(e=G(e,r)),i?t.reduce(e,n):t.reduce(e);if(k(t,(function(t,o,u){i?n=e.call(r,n,t,o,u):(n=t,i=!0)})),!i)throw new TypeError(S);return n},T=E,A=E,_=function(t,e,n){var r;return R(t,(function(t,i,o){if(e.call(n,t,i,o))return r=t,!0})),r},F=_,L=function(t,e,n){var r=[];return null==t?r:v&&t.filter===v?t.filter(e,n):(k(t,(function(t,i,o){e.call(n,t,i,o)&&r.push(t)})),r)},I=L,M=function(t,e,n){e||(e=kt);var r=!0;return null==t?r:b&&t.every===b?t.every(e,n):(k(t,(function(t,o,u){if(!(r=r&&e.call(n,t,o,u)))return i})),!!r)},N=M,R=function(t,e,n){e||(e=kt);var r=!1;return null==t?r:g&&t.some===g?t.some(e,n):(k(t,(function(t,o,u){if(r||(r=e.call(n,t,o,u)))return i})),!!r)},D=R,B=function(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}},q=function(t){return null==t?kt:vt(t)?t:Ct(t)},z=function(t){return function(e,n,r){var i={};return n=q(n),k(e,(function(o,u){var a=n.call(r,o,u,e);t(i,a,o)})),i}},V=z((function(t,e,n){Ot(t,e)?t[e].push(n):t[e]=[n]})),Q=z((function(t,e,n){t[e]=n})),W=function(t,e,n,r){for(var i=(n=q(n)).call(r,e),o=0,u=t.length;o>>1;n.call(r,t[a])=0)},H=X,Y=function(t,e){return _(t,Pt(e))},U=function(t){var e=s.apply(o,c.call(arguments,1));return L(t,(function(t){return!X(e,t)}))},J=function(t,e,n){if(null==t)return-1;var r=0,i=t.length;if(n){if("number"!=typeof n)return t[r=W(t,e)]===e?r:-1;r=n<0?Math.max(0,i+n):n}if(m&&t.indexOf===m)return t.indexOf(e,n);for(;r1&&void 0!==arguments[1]?arguments[1]:100;return function(){for(var r=this,i=arguments.length,o=new Array(i),u=0;ui&&(r=t,i=a)})),r},memoize:tt,now:xt,omit:function(t){var e={},n=s.apply(o,c.call(arguments,1));for(var r in t)X(n,r)||(e[r]=t[r]);return e},once:Z,partial:K,pick:st,pluck:function(t,e){return P(t,Ct(e))},property:Ct,propertyOf:function(t){return null==t?function(){}:function(e){return t[e]}},reduce:E,reject:function(t,e,n){return L(t,(function(t,r,i){return!e.call(n,t,r,i)}),n)},result:function(t,e){if(null!=t){var n=t[e];return vt(n)?n.call(t):n}},select:I,size:function(t){return null==t?0:t.length===+t.length?t.length:it(t).length},some:D,sortedIndex:W,throttle:rt,where:function(t,e){return L(t,Pt(e))},without:function(t){return U(t,c.call(arguments,1))}}},function(t,e,n){"use strict";n.d(e,"t",(function(){return o})),n.d(e,"s",(function(){return u})),n.d(e,"r",(function(){return a})),n.d(e,"o",(function(){return c})),n.d(e,"p",(function(){return s})),n.d(e,"a",(function(){return l})),n.d(e,"c",(function(){return f})),n.d(e,"q",(function(){return d})),n.d(e,"d",(function(){return p})),n.d(e,"h",(function(){return h})),n.d(e,"e",(function(){return v})),n.d(e,"b",(function(){return O})),n.d(e,"f",(function(){return k})),n.d(e,"g",(function(){return C})),n.d(e,"k",(function(){return P})),n.d(e,"i",(function(){return x})),n.d(e,"j",(function(){return S})),n.d(e,"l",(function(){return E})),n.d(e,"m",(function(){return T})),n.d(e,"n",(function(){return A})),n.d(e,"v",(function(){return _})),n.d(e,"u",(function(){return F})),n.d(e,"w",(function(){return L}));var r=n(0);function i(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:null;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.code=Object(r.v)(n)?n:0,this.sourceError=i,e&&(this.key=e)}var e,n,o;return e=t,o=[{key:"logMessage",value:function(t){var e=t%1e3,n=Math.floor((t-e)/1e3),r=t;return e>=400&&e<600&&(r="".concat(n,"400-").concat(n,"599")),"JW Player ".concat(t>299999&&t<4e5?"Warning":"Error"," ").concat(t,". For more information see https://developer.jwplayer.com/jw-player/docs/developer-guide/api/errors-reference#").concat(r)}}],(n=null)&&i(e.prototype,n),o&&i(e,o),t}();function _(t,e,n){return n instanceof A&&n.code?n:new A(t,e,n)}function F(t,e){var n=_(T,e,t);return n.code=(t&&t.code||0)+e,n}function L(t){var e=t.name,n=t.message;switch(e){case"AbortError":return/pause/.test(n)?y:/load/.test(n)?m:g;case"NotAllowedError":return w;case"NotSupportedError":return j;default:return b}}},function(t,e,n){"use strict";n.d(e,"i",(function(){return o})),n.d(e,"e",(function(){return u})),n.d(e,"j",(function(){return a})),n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return s})),n.d(e,"g",(function(){return l})),n.d(e,"d",(function(){return f})),n.d(e,"f",(function(){return d})),n.d(e,"h",(function(){return p})),n.d(e,"c",(function(){return h}));var r=n(0),i=window.parseFloat;function o(t){return t.replace(/^\s+|\s+$/g,"")}function u(t,e,n){for(t=""+t,n=n||"0";t.length-1?t.substr(t.lastIndexOf(".")+1,t.length).toLowerCase():void 0}function s(t){var e=(t/60|0)%60,n=t%60;return u(t/3600|0,2)+":"+u(e,2)+":"+u(n.toFixed(3),6)}function l(t,e){if(!t)return 0;if(Object(r.v)(t))return t;var n=t.replace(",","."),o=n.slice(-1),u=n.split(":"),a=u.length,c=0;if("s"===o)c=i(n);else if("m"===o)c=60*i(n);else if("h"===o)c=3600*i(n);else if(a>1){var s=a-1;4===a&&(e&&(c=i(u[s])/e),s-=1),c+=i(u[s]),c+=60*i(u[s-1]),a>=3&&(c+=3600*i(u[s-2]))}else c=i(n);return Object(r.v)(c)?c:0}function f(t,e,n){if(Object(r.t)(t)&&"%"===t.slice(-1)){var o=i(t);return e&&Object(r.v)(e)&&Object(r.v)(o)?e*o/100:null}return l(t,n)}function d(t,e){return t.map((function(t){return e+t}))}function p(t,e){return t.map((function(t){return t+e}))}function h(t){return"string"==typeof t&&"%"===t.slice(-1)}},function(t,e,n){"use strict";n.d(e,"jb",(function(){return r})),n.d(e,"mb",(function(){return i})),n.d(e,"kb",(function(){return o})),n.d(e,"ob",(function(){return u})),n.d(e,"pb",(function(){return a})),n.d(e,"lb",(function(){return c})),n.d(e,"nb",(function(){return s})),n.d(e,"qb",(function(){return l})),n.d(e,"s",(function(){return f})),n.d(e,"u",(function(){return d})),n.d(e,"t",(function(){return p})),n.d(e,"n",(function(){return h})),n.d(e,"q",(function(){return v})),n.d(e,"rb",(function(){return b})),n.d(e,"r",(function(){return g})),n.d(e,"Z",(function(){return m})),n.d(e,"W",(function(){return y})),n.d(e,"v",(function(){return w})),n.d(e,"Y",(function(){return j})),n.d(e,"w",(function(){return O})),n.d(e,"tb",(function(){return k})),n.d(e,"a",(function(){return C})),n.d(e,"b",(function(){return P})),n.d(e,"c",(function(){return x})),n.d(e,"d",(function(){return S})),n.d(e,"e",(function(){return E})),n.d(e,"h",(function(){return T})),n.d(e,"F",(function(){return A})),n.d(e,"gb",(function(){return _})),n.d(e,"Q",(function(){return F})),n.d(e,"C",(function(){return L})),n.d(e,"B",(function(){return I})),n.d(e,"E",(function(){return M})),n.d(e,"p",(function(){return N})),n.d(e,"cb",(function(){return R})),n.d(e,"m",(function(){return D})),n.d(e,"G",(function(){return B})),n.d(e,"H",(function(){return q})),n.d(e,"N",(function(){return z})),n.d(e,"O",(function(){return V})),n.d(e,"R",(function(){return Q})),n.d(e,"ib",(function(){return W})),n.d(e,"bb",(function(){return X})),n.d(e,"D",(function(){return H})),n.d(e,"S",(function(){return Y})),n.d(e,"P",(function(){return U})),n.d(e,"T",(function(){return J})),n.d(e,"V",(function(){return $})),n.d(e,"M",(function(){return G})),n.d(e,"L",(function(){return K})),n.d(e,"K",(function(){return Z})),n.d(e,"I",(function(){return tt})),n.d(e,"J",(function(){return et})),n.d(e,"U",(function(){return nt})),n.d(e,"o",(function(){return rt})),n.d(e,"y",(function(){return it})),n.d(e,"hb",(function(){return ot})),n.d(e,"db",(function(){return ut})),n.d(e,"eb",(function(){return at})),n.d(e,"f",(function(){return ct})),n.d(e,"g",(function(){return st})),n.d(e,"ab",(function(){return lt})),n.d(e,"A",(function(){return ft})),n.d(e,"l",(function(){return dt})),n.d(e,"k",(function(){return pt})),n.d(e,"fb",(function(){return ht})),n.d(e,"sb",(function(){return vt})),n.d(e,"z",(function(){return bt})),n.d(e,"j",(function(){return gt})),n.d(e,"X",(function(){return mt})),n.d(e,"i",(function(){return yt})),n.d(e,"x",(function(){return wt}));var r="buffering",i="idle",o="complete",u="paused",a="playing",c="error",s="loading",l="stalled",f="drag",d="dragStart",p="dragEnd",h="click",v="doubleClick",b="tap",g="doubleTap",m="over",y="move",w="enter",j="out",O=c,k="warning",C="adClick",P="adPause",x="adPlay",S="adSkipped",E="adTime",T="autostartNotAllowed",A=o,_="ready",F="seek",L="beforePlay",I="beforeComplete",M="bufferFull",N="displayClick",R="playlistComplete",D="cast",B="mediaError",q="firstFrame",z="playAttempt",V="playAttemptFailed",Q="seeked",W="setupError",X="state",H="bufferChange",Y="time",U="ratechange",J="mediaType",$="volume",G="mute",K="metadataCueParsed",Z="meta",tt="levels",et="levelsChanged",nt="visualQuality",rt="controls",it="fullscreen",ot="resize",ut="playlistItem",at="playlist",ct="audioTracks",st="audioTrackChanged",lt="playbackRateChanged",ft="logoClick",dt="captionsList",pt="captionsChanged",ht="providerFirstFrame",vt="userAction",bt="instreamClick",gt="breakpoint",mt="fullscreenchange",yt="bandwidthEstimate",wt="float"},function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"d",(function(){return o})),n.d(e,"a",(function(){return u})),n.d(e,"c",(function(){return a}));var r=n(2);function i(t){var e="";return t&&(t.localName?e=t.localName:t.baseName&&(e=t.baseName)),e}function o(t){var e="";return t&&(t.textContent?e=Object(r.i)(t.textContent):t.text&&(e=Object(r.i)(t.text))),e}function u(t,e){return t.childNodes[e]}function a(t){return t.childNodes?t.childNodes.length:0}},function(t,e,n){"use strict";n.d(e,"i",(function(){return a})),n.d(e,"e",(function(){return c})),n.d(e,"q",(function(){return s})),n.d(e,"j",(function(){return l})),n.d(e,"s",(function(){return f})),n.d(e,"r",(function(){return d})),n.d(e,"u",(function(){return p})),n.d(e,"d",(function(){return b})),n.d(e,"a",(function(){return g})),n.d(e,"o",(function(){return m})),n.d(e,"p",(function(){return y})),n.d(e,"v",(function(){return w})),n.d(e,"t",(function(){return j})),n.d(e,"h",(function(){return O})),n.d(e,"b",(function(){return k})),n.d(e,"g",(function(){return C})),n.d(e,"c",(function(){return P})),n.d(e,"m",(function(){return x})),n.d(e,"k",(function(){return S})),n.d(e,"n",(function(){return E})),n.d(e,"l",(function(){return T})),n.d(e,"f",(function(){return A}));var r,i=n(0),o=n(2),u=n(8);function a(t,e){return t.classList.contains(e)}function c(t){return l(t).firstChild}function s(t,e){O(t),function(t,e){if(!e)return;for(var n=document.createDocumentFragment(),r=l(e).childNodes,i=0;i0?"":"px")}function h(t){return Object(i.t)(t.className)?t.className.split(" "):[]}function v(t,e){e=Object(o.i)(e),t.className!==e&&(t.className=e)}function b(t){return t.classList?t.classList:h(t)}function g(t,e){var n=h(t);(Array.isArray(e)?e:e.split(" ")).forEach((function(t){Object(i.b)(n,t)||n.push(t)})),v(t,n.join(" "))}function m(t,e){var n=h(t),r=Array.isArray(e)?e:e.split(" ");v(t,Object(i.f)(n,r).join(" "))}function y(t,e,n){var r=t.className||"";e.test(r)?r=r.replace(e,n):n&&(r+=" "+n),v(t,r)}function w(t,e,n){var r=a(t,e);(n=Object(i.o)(n)?n:!r)!==r&&(n?g(t,e):m(t,e))}function j(t,e,n){t.setAttribute(e,n)}function O(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function k(t){var e=document.createElement("link");e.rel="stylesheet",e.href=t,document.getElementsByTagName("head")[0].appendChild(e)}function C(t){t&&O(t)}function P(t){var e={left:0,right:0,width:0,height:0,top:0,bottom:0};if(!t||!document.body.contains(t))return e;var n=t.getBoundingClientRect(),r=window.pageYOffset,i=window.pageXOffset;return n.width||n.height||n.left||n.top?(e.left=n.left+i,e.right=n.right+i,e.top=n.top+r,e.bottom=n.bottom+r,e.width=n.right-n.left,e.height=n.bottom-n.top,e):e}function x(t,e){t.insertBefore(e,t.firstChild)}function S(t){return t.nextElementSibling}function E(t){return t.previousElementSibling}function T(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=document.createElement("a");r.href=t,r.target=e,r=Object(i.h)(r,n),u.Browser.firefox?r.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,view:window})):r.click()}function A(){var t=window.screen.orientation;return!!t&&("landscape-primary"===t.type||"landscape-secondary"===t.type)||90===window.orientation||-90===window.orientation}},function(t,e,n){"use strict";n.d(e,"h",(function(){return u})),n.d(e,"f",(function(){return a})),n.d(e,"l",(function(){return s})),n.d(e,"k",(function(){return f})),n.d(e,"p",(function(){return d})),n.d(e,"g",(function(){return p})),n.d(e,"e",(function(){return h})),n.d(e,"n",(function(){return v})),n.d(e,"d",(function(){return b})),n.d(e,"i",(function(){return g})),n.d(e,"q",(function(){return m})),n.d(e,"j",(function(){return y})),n.d(e,"c",(function(){return w})),n.d(e,"b",(function(){return j})),n.d(e,"o",(function(){return O})),n.d(e,"m",(function(){return k})),n.d(e,"a",(function(){return C}));var r=navigator.userAgent;function i(t){return null!==r.match(t)}function o(t){return function(){return i(t)}}function u(){var t=C();return!!(t&&t>=18)}var a=o(/gecko\//i),c=o(/trident\/.+rv:\s*11/i),s=o(/iP(hone|od)/i),l="MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,f=function(){return i(/iPad/i)||l},d=function(){return i(/Macintosh/i)&&!l},p=o(/FBAV/i);function h(){return i(/\sEdge\/\d+/i)}function v(){return i(/msie/i)}function b(){return i(/\s(?:(?:Headless)?Chrome|CriOS)\//i)&&!h()&&!i(/UCBrowser/i)}function g(){return h()||c()||v()}function m(){return i(/safari/i)&&!i(/(?:Chrome|CriOS|chromium|android|phantom)/i)}function y(){return i(/iP(hone|ad|od)/i)||l}function w(){return!(i(/chrome\/[123456789]/i)&&!i(/chrome\/18/i)&&!a())&&j()}function j(){return i(/Android/i)&&!i(/Windows Phone/i)}function O(){return y()||j()||i(/Windows Phone/i)}function k(){try{return window.self!==window.top}catch(t){return!0}}function C(){if(j())return 0;var t,e=navigator.plugins;if(e&&(t=e["Shockwave Flash"])&&t.description)return parseFloat(t.description.replace(/\D+(\d+\.?\d*).*/,"$1"));if(void 0!==window.ActiveXObject){try{if(t=new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return parseFloat(t.GetVariable("$version").split(" ")[1].replace(/\s*,\s*/,"."))}catch(t){return 0}return t}return 0}},function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){for(var n=0;ne)return t[e]}var o=n(0);n.d(e,"Browser",(function(){return a})),n.d(e,"OS",(function(){return c})),n.d(e,"Features",(function(){return s}));var u=navigator.userAgent;var a={},c={},s={};Object.defineProperties(a,{androidNative:{get:Object(o.y)(r.c),enumerable:!0},chrome:{get:Object(o.y)(r.d),enumerable:!0},edge:{get:Object(o.y)(r.e),enumerable:!0},facebook:{get:Object(o.y)(r.g),enumerable:!0},firefox:{get:Object(o.y)(r.f),enumerable:!0},ie:{get:Object(o.y)(r.i),enumerable:!0},msie:{get:Object(o.y)(r.n),enumerable:!0},safari:{get:Object(o.y)(r.q),enumerable:!0},version:{get:Object(o.y)(function(t,e){var n,r,i,o;return t.chrome?n=-1!==e.indexOf("Chrome")?e.substring(e.indexOf("Chrome")+7):e.substring(e.indexOf("CriOS")+6):t.safari?n=e.substring(e.indexOf("Version")+8):t.firefox?n=e.substring(e.indexOf("Firefox")+8):t.edge?n=e.substring(e.indexOf("Edge")+5):t.ie&&(-1!==e.indexOf("rv:")?n=e.substring(e.indexOf("rv:")+3):-1!==e.indexOf("MSIE")&&(n=e.substring(e.indexOf("MSIE")+5))),n&&(-1!==(o=n.indexOf(";"))&&(n=n.substring(0,o)),-1!==(o=n.indexOf(" "))&&(n=n.substring(0,o)),-1!==(o=n.indexOf(")"))&&(n=n.substring(0,o)),r=parseInt(n,10),i=parseInt(n.split(".")[1],10)),{version:n,major:r,minor:i}}.bind(void 0,a,u)),enumerable:!0}}),Object.defineProperties(c,{android:{get:Object(o.y)(r.b),enumerable:!0},iOS:{get:Object(o.y)(r.j),enumerable:!0},mobile:{get:Object(o.y)(r.o),enumerable:!0},mac:{get:Object(o.y)(r.p),enumerable:!0},iPad:{get:Object(o.y)(r.k),enumerable:!0},iPhone:{get:Object(o.y)(r.l),enumerable:!0},windows:{get:Object(o.y)((function(){return u.indexOf("Windows")>-1})),enumerable:!0},version:{get:Object(o.y)(function(t,e){var n,r,o;if(t.windows)switch(n=i(/Windows(?: NT|)? ([._\d]+)/.exec(e),1)){case"6.1":n="7.0";break;case"6.2":n="8.0";break;case"6.3":n="8.1"}else t.android?n=i(/Android ([._\d]+)/.exec(e),1):t.iOS?n=i(/OS ([._\d]+)/.exec(e),1):t.mac&&(n=i(/Mac OS X (10[._\d]+)/.exec(e),1));if(n){r=parseInt(n,10);var u=n.split(/[._]/);u&&(o=parseInt(u[1],10))}return{version:n,major:r,minor:o}}.bind(void 0,c,u)),enumerable:!0}}),Object.defineProperties(s,{flash:{get:Object(o.y)(r.h),enumerable:!0},flashVersion:{get:Object(o.y)(r.a),enumerable:!0},iframe:{get:Object(o.y)(r.m),enumerable:!0},passiveEvents:{get:Object(o.y)((function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){return t=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch(t){}return t})),enumerable:!0},backgroundLoading:{get:Object(o.y)((function(){return!(c.iOS||a.safari)})),enumerable:!0}})},function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}n.r(e),n.d(e,"exists",(function(){return o})),n.d(e,"isHTTPS",(function(){return u})),n.d(e,"isFileProtocol",(function(){return a})),n.d(e,"isRtmp",(function(){return c})),n.d(e,"isYouTube",(function(){return s})),n.d(e,"typeOf",(function(){return l})),n.d(e,"isDeepKeyCompliant",(function(){return f}));var i=window.location.protocol;function o(t){switch(r(t)){case"string":return t.length>0;case"object":return null!==t;case"undefined":return!1;default:return!0}}function u(){return"https:"===i}function a(){return"file:"===i}function c(t,e){return 0===t.indexOf("rtmp:")||"rtmp"===e}function s(t,e){return"youtube"===e||/^(http|\/\/).*(youtube\.com|youtu\.be)\/.+/.test(t)}function l(t){if(null===t)return"null";var e=r(t);return"object"===e&&Array.isArray(t)?"array":e}function f(t,e,n){var i=Object.keys(t);return Object.keys(e).length>=i.length&&i.every((function(i){var o=t[i],u=e[i];return o&&"object"===r(o)?!(!u||"object"!==r(u))&&f(o,u,n):n(i,t)}))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"e",(function(){return p})),n.d(e,"c",(function(){return h}));var r=n(2),i=n(35),o=n.n(i);function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var a,c=o.a.clear;function s(t,e,n,r){n=n||"all-players";var i="";if("object"===u(e)){var a=document.createElement("div");l(a,e);var c=a.style.cssText;Object.prototype.hasOwnProperty.call(e,"content")&&c&&(c="".concat(c,' content: "').concat(e.content,'";')),r&&c&&(c=c.replace(/;/g," !important;")),i="{"+c+"}"}else"string"==typeof e&&(i=e);""!==i&&"{}"!==i?o.a.style([[t,t+i]],n):o.a.clear(n,t)}function l(t,e){if(null!=t){var n;void 0===t.length&&(t=[t]);var r={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=d(n,e[n]));for(var i=0;i-1?t:parseInt(t.replace("px",""),10):t}function l(t,e){if(t<=0&&!e||Object(i.r)(parseInt(t)))return"00:00";var n=t<0?"-":"";t=Math.abs(t);var r=Math.floor(t/3600),o=Math.floor((t-3600*r)/60),u=Math.floor(t%60);return n+(r?r+":":"")+(o<10?"0":"")+o+":"+(u<10?"0":"")+u}},function(t,e,n){"use strict";e.a=[]},function(t,e,n){"use strict";n.d(e,"h",(function(){return d})),n.d(e,"c",(function(){return h})),n.d(e,"e",(function(){return b})),n.d(e,"f",(function(){return g})),n.d(e,"b",(function(){return m})),n.d(e,"d",(function(){return w})),n.d(e,"g",(function(){return j})),n.d(e,"a",(function(){return O}));var r=n(0),i=n(6),o=n(22),u=n(9),a=n(33),c={},s={zh:"Chinese",nl:"Dutch",en:"English",fr:"French",de:"German",it:"Italian",ja:"Japanese",pt:"Portuguese",ru:"Russian",es:"Spanish",el:"Greek",fi:"Finnish",id:"Indonesian",ko:"Korean",th:"Thai",vi:"Vietnamese"};Object(r.n)(s);function l(t){var e=f(t),n=e.indexOf("_");return-1===n?e:e.substring(0,n)}function f(t){return t.toLowerCase().replace("-","_")}function d(t){return t?Object.keys(t).reduce((function(e,n){return e[f(n)]=t[n],e}),{}):{}}function p(t){var e=t.querySelector("html");return e?e.getAttribute("lang"):null}function h(){var t=p(document);if(!t&&Object(i.m)())try{t=p(window.top.document)}catch(t){}return t||navigator.language||"en"}var v=["ar","da","de","el","es","fi","fr","he","id","it","ja","ko","nl","no","oc","pt","ro","ru","sl","sv","th","tr","vi","zh"];function b(t){return 8207===t.charCodeAt(0)||/^[\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC]/.test(t)}function g(t){return v.indexOf(l(t))>=0}function m(t,e,n){return Object(r.h)({},function(t){var e=t.advertising,n=t.related,i=t.sharing,o=t.abouttext,u=Object(r.h)({},t.localization);e&&(u.advertising=u.advertising||{},y(u.advertising,e,"admessage"),y(u.advertising,e,"cuetext"),y(u.advertising,e,"loadingAd"),y(u.advertising,e,"podmessage"),y(u.advertising,e,"skipmessage"),y(u.advertising,e,"skiptext"));"string"==typeof u.related?u.related={heading:u.related}:u.related=u.related||{};n&&y(u.related,n,"autoplaymessage");i&&(u.sharing=u.sharing||{},y(u.sharing,i,"heading"),y(u.sharing,i,"copied"));o&&y(u,t,"abouttext");var a=u.close||u.nextUpClose;a&&(u.close=a);return u}(t),e[l(n)],e[f(n)])}function y(t,e,n){var r=t[n]||e[n];r&&(t[n]=r)}function w(t){return Object(u.isDeepKeyCompliant)(a.a,t,(function(t,e){return"string"==typeof e[t]}))}function j(t,e){var n=c[e];if(!n){var r="".concat(t,"translations/").concat(l(e),".json");c[e]=n=new Promise((function(t,n){Object(o.a)({url:r,oncomplete:t,onerror:function(t,r,i,o){c[e]=null,n(o)},responseType:"json"})}))}return n}function O(t,e){var n=Object(r.h)({},t,e);return k(n,"errors",t,e),k(n,"related",t,e),k(n,"sharing",t,e),k(n,"advertising",t,e),k(n,"shortcuts",t,e),n}function k(t,e,n,i){t[e]=Object(r.h)({},n[e],i[e])}},function(t,e,n){"use strict";var r=n(52),i=n(9),o=document.createElement("video"),u={aac:"audio/mp4",mp4:"video/mp4",f4v:"video/mp4",m4v:"video/mp4",mov:"video/mp4",mp3:"audio/mpeg",mpeg:"audio/mpeg",ogv:"video/ogg",ogg:"video/ogg",oga:"video/ogg",vorbis:"video/ogg",webm:"video/webm",f4a:"video/aac",m3u8:"application/vnd.apple.mpegurl",m3u:"application/vnd.apple.mpegurl",hls:"application/vnd.apple.mpegurl"},a=[{name:"html5",supports:function(t){if(!1===Object(r.a)(t))return!1;if(!o.canPlayType)return!1;var e=t.file,n=t.type;if(Object(i.isRtmp)(e,n))return!1;var a=t.mimeType||u[n];if(!a)return!1;var c=t.mediaTypes;c&&c.length&&(a=[a].concat(c.slice()).join("; "));return!!o.canPlayType(a)}}];e.a=a},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r=Date.now||function(){return(new Date).getTime()}},function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"d",(function(){return f})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return p}));var r=n(25),i=n(26),o=n(14),u=n(21),a=n(32),c=n(1),s=null,l={};function f(t){return s||(s=function(t){var e=t.get("controls"),s=h(),f=function(t,e){var n=t.get("playlist");if(Array.isArray(n)&&n.length)for(var u=Object(i.c)(Object(r.a)(n[0]),t),a=0;a=0)return r.substr(0,i+1)}}return""}),o=function(){return i("jwplayer.js")},u=function(t){var e=("0"+t).split(/\W/),n=r.a.split(/\W/),i=parseFloat(e[0]),o=parseFloat(n[0]);return!(i>o)&&!(i===o&&parseFloat("0"+e[1])>parseFloat(n[1]))},a=function(){return i("jwplayer.js")}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var r=n(28),i=n(14),o=n(53),u=n(0);function a(t){var e=t.getName().name;if(!r.a[e]){if(!Object(u.j)(i.a,Object(u.x)({name:e}))){if(!Object(u.q)(t.supports))throw new Error("Tried to register a provider with an invalid object");i.a.unshift({name:e,supports:t.supports})}Object(u.e)(t.prototype,o.a),r.a[e]=t}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return m}));var r=n(0),i=n(11),o=n(9),u=n(1),a=1,c=2,s=3,l=4,f=5,d=6,p=7,h=601,v=602,b=611,g=function(){};function m(t,e,n,h){var O;t===Object(t)&&(t=(h=t).url);var k=Object(r.h)({xhr:null,url:t,withCredentials:!1,retryWithoutCredentials:!1,timeout:6e4,timeoutId:-1,oncomplete:e||g,onerror:n||g,mimeType:h&&!h.responseType?"text/xml":"",requireValidXML:!1,responseType:h&&h.plainText?"text":"",useDomParser:!1,requestFilter:null},h),C=function(t,e){return function(t,n){var i=t.currentTarget||e.xhr;if(clearTimeout(e.timeoutId),e.retryWithoutCredentials&&e.xhr.withCredentials)return y(i),void m(Object(r.h)({},e,{xhr:null,withCredentials:!1,retryWithoutCredentials:!1}));!n&&i.status>=400&&i.status<600&&(n=i.status),w(e,n?u.k:u.m,n||d,t)}}(0,k);if("XMLHttpRequest"in window){if(O=k.xhr=k.xhr||new window.XMLHttpRequest,"function"==typeof k.requestFilter){var P;try{P=k.requestFilter({url:t,xhr:O})}catch(t){return C(t,f),O}P&&"open"in P&&"send"in P&&(O=k.xhr=P)}O.onreadystatechange=function(t){return function(e){var n=e.currentTarget||t.xhr;if(4===n.readyState){clearTimeout(t.timeoutId);var a=n.status;if(a>=400)return void w(t,u.k,a<600?a:d);if(200===a)return function(t){return function(e){var n=e.currentTarget||t.xhr;if(clearTimeout(t.timeoutId),t.responseType){if("json"===t.responseType)return function(t,e){if(!t.response||"string"==typeof t.response&&'"'!==t.responseText.substr(1))try{t=Object(r.h)({},t,{response:JSON.parse(t.responseText)})}catch(t){return void w(e,u.k,b,t)}return e.oncomplete(t)}(n,t)}else{var o,a=n.responseXML;if(a)try{o=a.firstChild}catch(t){}if(a&&o)return j(n,a,t);if(t.useDomParser&&n.responseText&&!a&&(a=Object(i.parseXML)(n.responseText))&&a.firstChild)return j(n,a,t);if(t.requireValidXML)return void w(t,u.k,v)}t.oncomplete(n)}}(t)(e);0===a&&Object(o.isFileProtocol)()&&!/^[a-z][a-z0-9+.-]*:/.test(t.url)&&w(t,u.k,p)}}}(k),O.onerror=C,"overrideMimeType"in O?k.mimeType&&O.overrideMimeType(k.mimeType):k.useDomParser=!0;try{t=t.replace(/#.*$/,""),O.open("GET",t,!0)}catch(t){return C(t,s),O}if(k.responseType)try{O.responseType=k.responseType}catch(t){}k.timeout&&(k.timeoutId=setTimeout((function(){y(O),w(k,u.m,a)}),k.timeout),O.onabort=function(){clearTimeout(k.timeoutId)});try{k.withCredentials&&"withCredentials"in O&&(O.withCredentials=!0),O.send()}catch(t){C(t,l)}return O}w(k,u.m,c)}function y(t){t.onload=null,t.onprogress=null,t.onreadystatechange=null,t.onerror=null,"abort"in t&&t.abort()}function w(t,e,n,r){t.onerror(e,t.url,t.xhr,new u.n(e,n,r))}function j(t,e,n){var i=e.documentElement;if(!n.requireValidXML||"parsererror"!==i.nodeName&&!i.getElementsByTagName("parsererror").length)return t.responseXML||(t=Object(r.h)({},t,{responseXML:e})),n.oncomplete(t);w(n,u.k,h)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r="8.11.5+local.2019-12-05-12-22-47-982"},function(t,e,n){"use strict";var r=n(0),i=n(15),o=window.performance||{timing:{}},u=o.timing.navigationStart||Object(i.a)();function a(){return u+o.now()}"now"in o||(o.now=function(){return Object(i.a)()-u});e.a=function(){var t={},e={},n={},i={};return{start:function(e){t[e]=a(),n[e]=n[e]+1||1},end:function(n){if(t[n]){var r=a()-t[n];delete t[n],e[n]=e[n]+r||r}},dump:function(){var o=Object(r.h)({},e);for(var u in t)if(Object.prototype.hasOwnProperty.call(t,u)){var c=a()-t[u];o[u]=o[u]+c||c}return{counts:Object(r.h)({},n),sums:o,events:Object(r.h)({},i)}},tick:function(t){i[t]=a()},clear:function(t){delete i[t]},between:function(t,e){return i[e]&&i[t]?i[e]-i[t]:null}}}},function(t,e,n){"use strict";var r=n(0),i=n(29),o=function(t){if(t&&t.file)return Object(r.h)({},{kind:"captions",default:!1},t)},u=Array.isArray;e.a=function(t){u((t=t||{}).tracks)||delete t.tracks;var e=Object(r.h)({},{sources:[],tracks:[],minDvrWindow:120,dvrSeekLimit:25},t);e.dvrSeekLimit<5&&(e.dvrSeekLimit=5),e.sources!==Object(e.sources)||u(e.sources)||(e.sources=[Object(i.a)(e.sources)]),u(e.sources)&&0!==e.sources.length||(t.levels?e.sources=t.levels:e.sources=[Object(i.a)(t)]);for(var n=0;n0)return d;var n=t.indexOf("/"),r=Object(f.a)(t);return!(e<0&&n<0)||r&&isNaN(r)?p:2}};var v=function(t){this.url=t,this.promise_=null};Object.defineProperties(v.prototype,{promise:{get:function(){return this.promise_||this.load()},set:function(){}}}),Object(i.h)(v.prototype,{load:function(){var t=this,e=this.promise_;if(!e){if(2===h(this.url))e=Promise.resolve(this);else{var n=new s.a(function(t){switch(h(t)){case d:return t;case p:return Object(l.getAbsolutePath)(t,window.location.href)}}(this.url));this.loader=n,e=n.load().then((function(){return t}))}this.promise_=e}return e},registerPlugin:function(t,e,n){this.name=t,this.target=e,this.js=n},getNewInstance:function(t,e,n){var i=this.js;if("function"!=typeof i)throw new r.n(null,u(this.url)+100);var o=new i(t,e,n);return o.addToPlayer=function(){var e=t.getContainer().querySelector(".jw-overlays");e&&(n.left=e.style.left,n.top=e.style.top,e.appendChild(n),o.displayArea=e)},o.resizeHandler=function(){var t=o.displayArea;t&&o.resize(t.clientWidth,t.clientHeight)},o}});var b=v,g=n(39),m={},y=function(){},w=y.prototype;w.setupPlugin=function(t){var e=this.getPlugin(t);return e?(e.url!==t&&Object(g.a)('JW Plugin "'.concat(o(t),'" already loaded from "').concat(e.url,'". Ignoring "').concat(t,'."')),e.promise):this.addPlugin(t).load()},w.addPlugin=function(t){var e=o(t),n=m[e];return n||(n=new b(t),m[e]=n),n},w.getPlugin=function(t){return m[o(t)]},w.removePlugin=function(t){delete m[o(t)]},w.getPlugins=function(){return m};var j=y;n.d(e,"b",(function(){return k})),n.d(e,"a",(function(){return C}));var O=new j,k=function(t,e,n){var r=O.addPlugin(t);r.js||r.registerPlugin(t,e,n)};function C(t,e){var n=t.get("plugins");return window.jwplayerPluginJsonp=k,(t.pluginLoader=t.pluginLoader||new c).load(e,O,n,t).then((function(e){if(!t.attributes._destroyed)return delete window.jwplayerPluginJsonp,e}))}},function(t,e,n){"use strict";e.a={}},function(t,e,n){"use strict";var r=n(0),i=n(9),o=n(2);e.a=function(t){if(t&&t.file){var e=Object(r.h)({},{default:!1},t);e.file=Object(o.i)(""+e.file);var n=/^[^/]+\/(?:x-)?([^/]+)$/;if(n.test(e.type)&&(e.mimeType=e.type,e.type=e.type.replace(n,"$1")),Object(i.isYouTube)(e.file)?e.type="youtube":Object(i.isRtmp)(e.file)?e.type="rtmp":e.type||(e.type=Object(o.a)(e.file)),e.type){switch(e.type){case"m3u8":case"vnd.apple.mpegurl":e.type="hls";break;case"dash+xml":e.type="dash";break;case"m4a":e.type="aac";break;case"smil":e.type="rtmp"}return Object.keys(e).forEach((function(t){""===e[t]&&delete e[t]})),e}}}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u}));var r=n(16),i=null,o={};function u(){return i||(i=n.e(1).then(function(t){var e=n(17).default;return o.controls=e,e}.bind(null,n)).catch((function(){i=null,Object(r.c)(301130)()}))),i}},function(t,e,n){"use strict";e.a={advertising:{admessage:"This ad will end in xx",cuetext:"Advertisement",displayHeading:"Advertisement",loadingAd:"Loading ad",podmessage:"Ad __AD_POD_CURRENT__ of __AD_POD_LENGTH__.",skipmessage:"Skip ad in xx",skiptext:"Skip"},airplay:"AirPlay",audioTracks:"Audio Tracks",auto:"Auto",buffer:"Loading",cast:"Chromecast",cc:"Closed Captions",close:"Close",errors:{badConnection:"This video cannot be played because of a problem with your internet connection.",cantLoadPlayer:"Sorry, the video player failed to load.",cantPlayInBrowser:"The video cannot be played in this browser.",cantPlayVideo:"This video file cannot be played.",errorCode:"Error Code",liveStreamDown:"The live stream is either down or has ended.",protectedContent:"There was a problem providing access to protected content.",technicalError:"This video cannot be played because of a technical error."},exitFullscreen:"Exit Fullscreen",fullscreen:"Fullscreen",hd:"Quality",liveBroadcast:"Live",logo:"Logo",mute:"Mute",next:"Next",nextUp:"Next Up",notLive:"Not Live",off:"Off",pause:"Pause",play:"Play",playback:"Play",playbackRates:"Playback Rates",player:"Video Player",poweredBy:"Powered by",prev:"Previous",related:{autoplaymessage:"Next up in xx",heading:"More Videos"},replay:"Replay",rewind:"Rewind 10 Seconds",settings:"Settings",sharing:{copied:"Copied",email:"Email",embed:"Embed",heading:"Share",link:"Link"},slider:"Seek",stop:"Stop",unmute:"Unmute",videoInfo:"About This Video",volume:"Volume",volumeSlider:"Volume",shortcuts:{playPause:"Play/Pause",volumeToggle:"Mute/Unmute",fullscreenToggle:"Fullscreen/Exit Fullscreen",seekPercent:"Seek %",keyboardShortcuts:"Keyboard Shortcuts",increaseVolume:"Increase Volume",decreaseVolume:"Decrease Volume",seekForward:"Seek Forward",seekBackward:"Seek Backward",spacebar:"SPACE",captionsToggle:"Captions On/Off"}}},function(t,e,n){"use strict";var r=n(0),i=n(14),o=n(21),u=n(28),a=n(16);function c(t){this.config=t||{}}var s={html5:function(){return n.e(9).then(function(t){var e=n(31).default;return Object(o.a)(e),e}.bind(null,n)).catch(Object(a.b)(152))}};Object(r.h)(c.prototype,{load:function(t){var e=s[t],n=function(){return Promise.reject(new Error("Failed to load media"))};return e?e().then((function(){var e=u.a[t];return e||n()})):n()},providerSupports:function(t,e){return t.supports(e)},choose:function(t){if(t===Object(t))for(var e=i.a.length,n=0;n')+'
    '+'
    '.concat(e||"",'').concat(i,"
    ")+"
    "},i=n(5),o=n(10);function u(t,e){var n=e.message,u=e.code,a=r(t.get("id"),n,t.get("localization").errors.errorCode,u),c=t.get("width"),s=t.get("height"),l=Object(i.e)(a);return Object(o.d)(l,{width:c.toString().indexOf("%")>0?c:"".concat(c,"px"),height:s.toString().indexOf("%")>0?s:"".concat(s,"px")}),l}n.d(e,"a",(function(){return u}))},function(t,e,n){"use strict";function r(t){return t.slice&&"px"===t.slice(-2)&&(t=t.slice(0,-2)),t}function i(t,e){if(-1===e.toString().indexOf("%"))return 0;if("string"!=typeof t||!t)return 0;if(/^\d*\.?\d+%$/.test(t))return t;var n=t.indexOf(":");if(-1===n)return 0;var r=parseFloat(t.substr(0,n)),i=parseFloat(t.substr(n+1));return r<=0||i<=0?0:i/r*100+"%"}n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}))},function(t,e,n){"use strict";var r=n(0),i=n(7),o=n(3),u={},a=45e3,c=2,s=3;function l(t){var e=document.createElement("link");return e.type="text/css",e.rel="stylesheet",e.href=t,e}function f(t,e){var n=document.createElement("script");return n.type="text/javascript",n.charset="utf-8",n.async=!0,n.timeout=e||a,n.src=t,n}var d=function(t,e,n){var r=this,i=0;function d(t){i=c,r.trigger(o.w,t).off()}function p(t){i=s,r.trigger(o.kb,t).off()}this.getStatus=function(){return i},this.load=function(){var r=u[t];return 0!==i?r:(r&&r.then(p).catch(d),i=1,r=new Promise((function(r,i){var o=(e?l:f)(t,n),u=function(){o.onerror=o.onload=null,clearTimeout(s)},c=function(t){u(),d(t),i(t)},s=setTimeout((function(){c(new Error("Network timeout ".concat(t)))}),a);o.onerror=function(){c(new Error("Failed to load ".concat(t)))},o.onload=function(t){u(),p(t),r(t)};var h=document.getElementsByTagName("head")[0]||document.documentElement;h.insertBefore(o,h.firstChild)})),u[t]=r,r)}};Object(r.h)(d.prototype,i.a),e.a=d},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r="function"==typeof console.log?console.log.bind(console):function(){}},function(t,e,n){"use strict";n.d(e,"a",(function(){return x})),n.d(e,"b",(function(){return _}));var r=n(8),i=n(3),o=n(7),u=n(15),a=n(5);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function s(t,e){for(var n=0;nk*k&&(N(t,i.u,e),t.dragged=!0,N(t,i.s,e))}n||"touchmove"!==e.type||D(e)},s=function(n){if(clearTimeout(h),t.el)if(I(t),L(t,y),t.dragged)t.dragged=!1,N(t,i.t,n);else if(-1===n.type.indexOf("cancel")&&e.contains(n.target)){if(Object(u.a)()-t.lastStart>P)return;var r="pointerup"===n.type||"pointercancel"===n.type,o="mouseup"===n.type||r&&"mouse"===n.pointerType;!function(t,e,n){if(t.enableDoubleTap)if(Object(u.a)()-t.lastClick4&&void 0!==arguments[4]?arguments[4]:O,o=t.handlers[e],u=t.options[e];if(o||(o=t.handlers[e]={},u=t.options[e]={}),o[n])throw new Error("".concat(e," ").concat(n," already registered"));o[n]=r,u[n]=i;var a=t.el;(e===y?_(a):a).addEventListener(n,r,i)}function L(t,e){var n=t.el,r=t.handlers,i=t.options,o=e===y?_(n):n,u=r[e],a=i[e];u&&(Object.keys(u).forEach((function(t){var e=a[t];"boolean"==typeof e?o.removeEventListener(t,u[t],e):o.removeEventListener(t,u[t])})),r[e]=null,i[e]=null)}function I(t){var e=t.el;null!==t.pointerId&&(e.releasePointerCapture(t.pointerId),t.pointerId=null)}function M(t,e,n){var r=t.el,i=n.target;t.trigger(e,{type:e,sourceEvent:n,currentTarget:r,target:i})}function N(t,e,n){var r=function(t,e,n){var r,i=e.target,o=e.touches,u=e.changedTouches,a=e.pointerType;o||u?(r=o&&o.length?o[0]:u[0],a=a||"touch"):(r=e,a=a||"mouse");var c=r,s=c.pageX,l=c.pageY;return{type:t,pointerType:a,pageX:s,pageY:l,sourceEvent:e,currentTarget:n,target:i}}(e,n,t.el);t.trigger(e,r)}function R(t){return 0===t.type.indexOf("touch")?(t.originalEvent||t).changedTouches[0]:t}function D(t){t.preventDefault&&t.preventDefault()}},function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}));var r={audioMode:!1,flashBlocked:!1,item:0,itemMeta:{},playbackRate:1,playRejected:!1,state:n(3).mb,itemReady:!1,controlsEnabled:!1},i={position:0,duration:0,buffer:0,currentTime:0}},function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}));var r=window.requestAnimationFrame||function(t){return setTimeout(t,17)},i=window.cancelAnimationFrame||clearTimeout},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r=function(t,e,n){return Math.max(Math.min(t,n),e)}},function(t,e,n){"use strict";function r(t,e,n){var r=[],i={};function o(){for(;r.length>0;){var e=r.shift(),n=e.command,o=e.args;(i[n]||t[n]).apply(t,o)}}e.forEach((function(e){var u=t[e];i[e]=u,t[e]=function(){var t=Array.prototype.slice.call(arguments,0);n()?r.push({command:e,args:t}):(o(),u&&u.apply(this,t))}})),Object.defineProperty(this,"queue",{enumerable:!0,get:function(){return r}}),this.flush=o,this.empty=function(){r.length=0},this.off=function(){e.forEach((function(e){var n=i[e];n&&(t[e]=n,delete i[e])}))},this.destroy=function(){this.off(),this.empty()}}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){for(var n=0;n=.25&&t<=4})).map((function(t){return Math.round(100*t)/100}))).indexOf(1)<0&&g.push(1),g.sort(),h.playbackRateControls=!0,h.playbackRates=g}(!h.playbackRateControls||h.playbackRates.indexOf(h.defaultPlaybackRate)<0)&&(h.defaultPlaybackRate=1),h.playbackRate=h.defaultPlaybackRate,h.aspectratio||delete h.aspectratio;var m=h.playlist;if(m)Array.isArray(m.playlist)&&(h.feedData=m,h.playlist=m.playlist);else{var y=Object(r.z)(h,["title","description","type","mediaid","image","images","file","sources","tracks","preload","duration"]);h.playlist=[y]}h.qualityLabels=h.qualityLabels||h.hlslabels,delete h.duration;var w=h.liveTimeout;null!==w&&(Object(r.v)(w)?0!==w&&(w=Math.max(30,w)):w=null,h.liveTimeout=w);var j,O,k=parseFloat(h.bandwidthEstimate),C=parseFloat(h.bitrateSelection);return h.bandwidthEstimate=Object(r.v)(k)?k:(j=h.defaultBandwidthEstimate,O=parseFloat(j),Object(r.v)(O)?Math.max(O,1):f.bandwidthEstimate),h.bitrateSelection=Object(r.v)(C)?C:f.bitrateSelection,h.backgroundLoading=Object(r.o)(h.backgroundLoading)?h.backgroundLoading:c.Features.backgroundLoading,h},p=n(16),h=n(27),v=n(3),b=n(51),g=n(26),m=n(38),y=n(1);function w(t,e,n){var r=t.attributes;r.playlist=Object(g.a)(e),r.feedData=n}function j(t){return function(t){var e=t.get("playlist");return new Promise((function(n,r){if("string"!=typeof e){var i=t.get("feedData")||{};return w(t,e,i),n()}var o=new b.a;o.on(v.eb,(function(e){var r=e.playlist;delete e.playlist,w(t,r,e),n()})),o.on(v.w,(function(e){w(t,[],{}),r(Object(y.u)(e,y.p))})),o.load(e)}))}(t).then((function(){if(!C(t)){var e=Object(g.b)(t.get("playlist"),t);t.attributes.playlist=e;try{Object(g.e)(e)}catch(t){throw t.code+=y.p,t}var n=t.getProviders(),r=n.choose(e[0].sources[0]),i=r.provider,o=r.name;return"function"==typeof i?i:p.a.html5&&"html5"===o?p.a.html5:n.load(o).catch((function(t){throw Object(y.u)(t,y.q)}))}}))}function O(t){var e=t.get("skin")?t.get("skin").url:void 0;if("string"==typeof e&&!function(t){for(var e=document.styleSheets,n=0,r=e.length;n0&&(n=t(l,n));break;case"title":n.title=Object(o.d)(l);break;case"description":n.description=Object(o.d)(l);break;case"guid":n.mediaid=Object(o.d)(l);break;case"thumbnail":n.image||(n.image=Object(u.j)(l,"url"));break;case"group":t(l,n);break;case"subtitle":var p={};p.file=Object(u.j)(l,"url"),p.kind="captions",Object(u.j)(l,"lang").length>0&&(p.label=(r=Object(u.j)(l,"lang"),i=void 0,(i={zh:"Chinese",nl:"Dutch",en:"English",fr:"French",de:"German",it:"Italian",ja:"Japanese",pt:"Portuguese",ru:"Russian",es:"Spanish"})[r]?i[r]:r)),c.push(p)}}}n.hasOwnProperty("tracks")||(n.tracks=[]);for(var h=0;h0&&(r[f][n]="true"===r[f][n],r[f].label.length||delete r[f].label,e.sources.push(r[f]))}if(i.length){e.tracks=[];for(var d=0;d0&&(i[d][n]="true"===i[d][n],i[d].kind=i[d].kind.length?i[d].kind:"captions",i[d].label.length||delete i[d].label,e.tracks.push(i[d]))}return e},f=n(25);function d(t){for(var e={},n=0;n=4.4):null}},function(t,e,n){"use strict";var r=n(3),i=function(){},o=function(){return!1},u={name:"default"},a={supports:o,play:i,pause:i,preload:i,load:i,stop:i,volume:i,mute:i,seek:i,resize:i,remove:i,destroy:i,setVisibility:i,setFullscreen:i,getFullscreen:o,supportsFullscreen:o,getContainer:i,setContainer:i,getName:function(){return u},getQualityLevels:i,getCurrentQuality:i,setCurrentQuality:i,getAudioTracks:i,getCurrentAudioTrack:i,setCurrentAudioTrack:i,getSeekRange:function(){return{start:0,end:this.getDuration()}},setPlaybackRate:i,getPlaybackRate:function(){return 1},getBandwidthEstimate:function(){return null},getLiveLatency:function(){return null},setControls:i,attachMedia:i,detachMedia:i,init:i,setState:function(t){this.state=t,this.trigger(r.bb,{newstate:t})},sendMediaType:function(t){var e=t[0],n=e.type,i=e.mimeType,o="aac"===n||"mp3"===n||"mpeg"===n||i&&0===i.indexOf("audio/");this.trigger(r.T,{mediaType:o?"audio":"video"})}};e.a=a},function(t,e,n){"use strict";var r,i=n(49),o=n(8),u=n(5),a=[],c=[],s=[],l={},f="screen"in window&&"orientation"in window.screen,d=o.OS.android&&o.Browser.chrome,p=!1;function h(t,e){for(var n=e.length;n--;){var r=e[n];if(t.target===r.getContainer()){r.setIntersection(t);break}}}function v(){a.forEach((function(t){var e=t.model;if(!(e.get("audioMode")||!e.get("controls")||e.get("visibility")<.75)){var n=e.get("state"),r=Object(u.f)();!r&&"paused"===n&&t.api.getFullscreen()?t.api.setFullscreen(!1):"playing"===n&&t.api.setFullscreen(r)}}))}function b(){a.forEach((function(t){t.model.set("activeTab",Object(i.a)())}))}function g(t,e){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}function m(t){s.forEach((function(e){e(t)}))}document.addEventListener("visibilitychange",b),document.addEventListener("webkitvisibilitychange",b),d&&f&&window.screen.orientation.addEventListener("change",v),window.addEventListener("beforeunload",(function(){document.removeEventListener("visibilitychange",b),document.removeEventListener("webkitvisibilitychange",b),window.removeEventListener("scroll",m),d&&f&&window.screen.orientation.removeEventListener("change",v)})),e.a={add:function(t){a.push(t)},remove:function(t){g(t,a)},addScrollHandler:function(t){p||(p=!0,window.addEventListener("scroll",m)),s.push(t)},removeScrollHandler:function(t){var e=s.indexOf(t);-1!==e&&s.splice(e,1)},addWidget:function(t){c.push(t)},removeWidget:function(t){g(t,c)},size:function(){return a.length},observe:function(t){var e;e=window.IntersectionObserver,r||(r=new e((function(t){if(t&&t.length)for(var e=t.length;e--;){var n=t[e];h(n,a),h(n,c)}}),{threshold:[0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]})),l[t.id]||(l[t.id]=!0,r.observe(t))},unobserve:function(t){r&&l[t.id]&&(delete l[t.id],r.unobserve(t))}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var r=n(0),i=n(42),o=n(5),u=n(10);function a(t,e){for(var n=0;n
    '),d=f.firstChild,p=d.firstChild,h=d.nextSibling;Object(u.d)([d,h],Object(r.h)({overflow:"auto"},a,s)),Object(u.d)(f,Object(r.h)({},a,s)),this.expandElement=d,this.expandChild=p,this.contractElement=h,this.hiddenElement=f,this.element=e,this.view=n,this.model=i,this.width=0,this.resized=!1,e.firstChild?e.insertBefore(f,e.firstChild):e.appendChild(f),e.addEventListener("scroll",l,!0),c.push(this),l()}var e,n,i;return e=t,(n=[{key:"destroy",value:function(){if(this.view){var t=c.indexOf(this);-1!==t&&c.splice(t,1),this.element.removeEventListener("scroll",l,!0),this.element.removeChild(this.hiddenElement),this.view=this.model=null}}}])&&a(e.prototype,n),i&&a(e,i),t}()},function(t,e,n){"use strict";n.r(e);var r=setTimeout;function i(){}function o(t){if(!(this instanceof o))throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(t,this)}function u(t,e){for(;3===t._state;)t=t._value;0!==t._state?(t._handled=!0,o._immediateFn((function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null!==n){var r;try{r=n(t._value)}catch(t){return void c(e.promise,t)}a(e.promise,r)}else(1===t._state?a:c)(e.promise,t._value)}))):t._deferreds.push(e)}function a(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof o)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void f((r=n,i=e,function(){r.apply(i,arguments)}),t)}t._state=1,t._value=e,s(t)}catch(e){c(t,e)}var r,i}function c(t,e){t._state=2,t._value=e,s(t)}function s(t){2===t._state&&0===t._deferreds.length&&o._immediateFn((function(){t._handled||o._unhandledRejectionFn(t._value)}));for(var e=0,n=t._deferreds.length;e2&&void 0!==arguments[2]?arguments[2]:[];if(j.a.debug)return t.apply(e||this,n);try{return t.apply(e||this,n)}catch(e){return new A(t.name,e)}},Error:A,Timer:P.a,log:N.a,genId:R.b,between:M.a,foreach:function(t,e){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e(n,t[n])},flashVersion:_.a,isIframe:_.m,indexOf:w.m,trim:T.i,pad:T.e,extension:T.a,hms:T.b,seconds:T.g,prefix:T.f,suffix:T.h,noop:function(){}}),B=0;function q(t,e){var n=new k.a(e);return n.on(C.gb,(function(e){t._qoe.tick("ready"),e.setupTime=t._qoe.between("setup","ready")})),n.on("all",(function(e,n){t.trigger(e,n)})),n}function z(t,e){var n=t.plugins;Object.keys(n).forEach((function(t){delete n[t]})),e.get("setupConfig")&&t.trigger("remove"),t.off(),e.playerDestroy(),e.getContainer().removeAttribute("data-jwplayer-id")}function V(t){var e=++B,n=t.id||"player-".concat(e),r=new P.a,i={},o=q(this,t);r.tick("init"),t.setAttribute("data-jwplayer-id",n),Object.defineProperties(this,{id:{enumerable:!0,get:function(){return n}},uniqueId:{enumerable:!0,get:function(){return e}},plugins:{enumerable:!0,get:function(){return i}},_qoe:{enumerable:!0,get:function(){return r}},version:{enumerable:!0,get:function(){return y.a}},Events:{enumerable:!0,get:function(){return x.a}},utils:{enumerable:!0,get:function(){return D}},_:{enumerable:!0,get:function(){return w.d}}}),Object(w.h)(this,{_events:{},setup:function(e){return r.clear("ready"),r.tick("setup"),z(this,o),(o=q(this,t)).init(e,this),this.on(e.events,null,this)},remove:function(){return function(t){for(var e=h.a.length;e--;)if(h.a[e].uniqueId===t.uniqueId){h.a.splice(e,1);break}}(this),z(this,o),this},qoe:function(){var t=o.getItemQoe();return{setupTime:this._qoe.between("setup","ready"),firstFrame:t.getFirstFrame?t.getFirstFrame():null,player:this._qoe.dump(),item:t.dump()}},addCues:function(t){return Array.isArray(t)&&o.addCues(t),this},getAudioTracks:function(){return o.getAudioTracks()},getBuffer:function(){return o.get("buffer")},getCaptions:function(){return o.get("captions")},getCaptionsList:function(){return o.getCaptionsList()},getConfig:function(){return o.getConfig()},getContainer:function(){return o.getContainer()},getControls:function(){return o.get("controls")},getCues:function(){return o.get("cues")},getCurrentAudioTrack:function(){return o.getCurrentAudioTrack()},getCurrentCaptions:function(){return o.getCurrentCaptions()},getCurrentQuality:function(){return o.getCurrentQuality()},getCurrentTime:function(){return o.get("currentTime")},getDuration:function(){return o.get("duration")},getEnvironment:function(){return O},getFullscreen:function(){return o.get("fullscreen")},getHeight:function(){return o.getHeight()},getItemMeta:function(){return o.get("itemMeta")||{}},getMute:function(){return o.getMute()},getPlaybackRate:function(){return o.get("playbackRate")},getPlaylist:function(){return o.get("playlist")},getPlaylistIndex:function(){return o.get("item")},getPlaylistItem:function(t){if(!D.exists(t))return o.get("playlistItem");var e=this.getPlaylist();return e?e[t]:null},getPosition:function(){return o.get("position")},getProvider:function(){return o.getProvider()},getQualityLevels:function(){return o.getQualityLevels()},getSafeRegion:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return o.getSafeRegion(t)},getState:function(){return o.getState()},getStretching:function(){return o.get("stretching")},getViewable:function(){return o.get("viewable")},getVisualQuality:function(){return o.getVisualQuality()},getVolume:function(){return o.get("volume")},getWidth:function(){return o.getWidth()},setCaptions:function(t){return o.setCaptions(t),this},setConfig:function(t){return o.setConfig(t),this},setControls:function(t){return o.setControls(t),this},setCurrentAudioTrack:function(t){o.setCurrentAudioTrack(t)},setCurrentCaptions:function(t){o.setCurrentCaptions(t)},setCurrentQuality:function(t){o.setCurrentQuality(t)},setFullscreen:function(t){return o.setFullscreen(t),this},setMute:function(t){return o.setMute(t),this},setPlaybackRate:function(t){return o.setPlaybackRate(t),this},setPlaylistItem:function(t,e){return o.setPlaylistItem(t,e),this},setCues:function(t){return Array.isArray(t)&&o.setCues(t),this},setVolume:function(t){return o.setVolume(t),this},load:function(t,e){return o.load(t,e),this},play:function(t){return o.play(t),this},pause:function(t){return o.pause(t),this},playToggle:function(t){switch(this.getState()){case C.pb:case C.jb:return this.pause(t);default:return this.play(t)}},seek:function(t,e){return o.seek(t,e),this},playlistItem:function(t,e){return o.playlistItem(t,e),this},playlistNext:function(t){return o.playlistNext(t),this},playlistPrev:function(t){return o.playlistPrev(t),this},next:function(t){return o.next(t),this},castToggle:function(){return o.castToggle(),this},createInstream:function(){return o.createInstream()},stop:function(){return o.stop(),this},resize:function(t,e){return o.resize(t,e),this},addButton:function(t,e,n,r,i){return o.addButton(t,e,n,r,i),this},removeButton:function(t){return o.removeButton(t),this},attachMedia:function(){return o.attachMedia(),this},detachMedia:function(){return o.detachMedia(),this},isBeforeComplete:function(){return o.isBeforeComplete()},isBeforePlay:function(){return o.isBeforePlay()}})}Object(w.h)(V.prototype,{on:function(t,e,n){return x.c.call(this,t,e,n)},once:function(t,e,n){return x.d.call(this,t,e,n)},off:function(t,e,n){return x.b.call(this,t,e,n)},trigger:function(t,e){return(e=w.d.isObject(e)?Object(w.h)({},e):{}).type=t,j.a.debug?x.e.call(this,t,e):x.f.call(this,t,e)},getPlugin:function(t){return this.plugins[t]},addPlugin:function(t,e){this.plugins[t]=e,this.on("ready",e.addToPlayer),e.resize&&this.on("resize",e.resizeHandler)},registerPlugin:function(t,e,n){Object(m.b)(t,e,n)},getAdBlock:function(){return!1},playAd:function(t){},pauseAd:function(t){},skipAd:function(){}}),n.d(e,"assignLibraryProperties",(function(){return X})),n.p=Object(p.loadFrom)();var Q=function(t){var e,n;if(t?"string"==typeof t?(e=W(t))||(n=document.getElementById(t)):"number"==typeof t?e=h.a[t]:t.nodeType&&(e=W((n=t).id||n.getAttribute("data-jwplayer-id"))):e=h.a[0],e)return e;if(n){var r=new V(n);return h.a.push(r),r}return{registerPlugin:m.b}};function W(t){for(var e=0;e0}});else{var n=[];i.prototype.THROTTLE_TIMEOUT=100,i.prototype.POLL_INTERVAL=null,i.prototype.USE_MUTATION_OBSERVER=!0,i.prototype.observe=function(t){if(!this._observationTargets.some((function(e){return e.element==t}))){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(),this._checkForIntersections()}},i.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter((function(e){return e.element!=t})),this._observationTargets.length||(this._unmonitorIntersections(),this._unregisterInstance())},i.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorIntersections(),this._unregisterInstance()},i.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},i.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter((function(t,e,n){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==n[e-1]}))},i.prototype._parseRootMargin=function(t){var e=(t||"0px").split(/\s+/).map((function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}}));return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},i.prototype._monitorIntersections=function(){this._monitoringIntersections||(this._monitoringIntersections=!0,this.POLL_INTERVAL?this._monitoringInterval=setInterval(this._checkForIntersections,this.POLL_INTERVAL):(r(t,"resize",this._checkForIntersections,!0),r(e,"scroll",this._checkForIntersections,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in t&&(this._domObserver=new MutationObserver(this._checkForIntersections),this._domObserver.observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))))},i.prototype._unmonitorIntersections=function(){this._monitoringIntersections&&(this._monitoringIntersections=!1,clearInterval(this._monitoringInterval),this._monitoringInterval=null,s(t,"resize",this._checkForIntersections,!0),s(e,"scroll",this._checkForIntersections,!0),this._domObserver&&(this._domObserver.disconnect(),this._domObserver=null))},i.prototype._checkForIntersections=function(){var e=this._rootIsInDom(),n=e?this._getRootRect():{top:0,bottom:0,left:0,right:0,width:0,height:0};this._observationTargets.forEach((function(i){var r=i.element,s=h(r),c=this._rootContainsTarget(r),a=i.entry,u=e&&c&&this._computeTargetAndRootIntersection(r,n),p=i.entry=new o({time:t.performance&&performance.now&&performance.now(),target:r,boundingClientRect:s,rootBounds:n,intersectionRect:u});a?e&&c?this._hasCrossedThreshold(a,p)&&this._queuedEntries.push(p):a&&a.isIntersecting&&this._queuedEntries.push(p):this._queuedEntries.push(p)}),this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)},i.prototype._computeTargetAndRootIntersection=function(n,o){if("none"!=t.getComputedStyle(n).display){for(var i,r,s,c,u,p,l,d,f=h(n),g=a(n),_=!1;!_;){var v=null,m=1==g.nodeType?t.getComputedStyle(g):{};if("none"==m.display)return;if(g==this.root||g==e?(_=!0,v=o):g!=e.body&&g!=e.documentElement&&"visible"!=m.overflow&&(v=h(g)),v&&(i=v,r=f,s=void 0,c=void 0,u=void 0,p=void 0,l=void 0,d=void 0,s=Math.max(i.top,r.top),c=Math.min(i.bottom,r.bottom),u=Math.max(i.left,r.left),p=Math.min(i.right,r.right),d=c-s,!(f=(l=p-u)>=0&&d>=0&&{top:s,bottom:c,left:u,right:p,width:l,height:d})))break;g=a(g)}return f}},i.prototype._getRootRect=function(){var t;if(this.root)t=h(this.root);else{var n=e.documentElement,o=e.body;t={top:0,left:0,right:n.clientWidth||o.clientWidth,width:n.clientWidth||o.clientWidth,bottom:n.clientHeight||o.clientHeight,height:n.clientHeight||o.clientHeight}}return this._expandRectByRootMargin(t)},i.prototype._expandRectByRootMargin=function(t){var e=this._rootMarginValues.map((function(e,n){return"px"==e.unit?e.value:e.value*(n%2?t.width:t.height)/100})),n={top:t.top-e[0],right:t.right+e[1],bottom:t.bottom+e[2],left:t.left-e[3]};return n.width=n.right-n.left,n.height=n.bottom-n.top,n},i.prototype._hasCrossedThreshold=function(t,e){var n=t&&t.isIntersecting?t.intersectionRatio||0:-1,o=e.isIntersecting?e.intersectionRatio||0:-1;if(n!==o)for(var i=0;i59?e(i[1],i[2],0,i[4]):e(0,i[1],i[2],i[4]):null}i.r(e),r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}};var o={"&":"&","<":"<",">":">","‎":"‎","‏":"‏"," ":" "},a={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"},s={v:"title",lang:"lang"},l={rt:"ruby"};function h(t,e){function i(){if(!e)return null;var t,i=e.match(/^([^<]*)(<[^>]+>?)?/);return t=i[1]?i[1]:i[2],e=e.substr(t.length),t}function r(t){return o[t]}function h(t){for(var e;e=t.match(/&(amp|lt|gt|lrm|rlm|nbsp);/);)t=t.replace(e[0],r);return t}function c(t,e){return!l[e.localName]||l[e.localName]===t.localName}function p(e,i){var r=a[e];if(!r)return null;var n=t.document.createElement(r),o=s[e];return o&&i&&(n[o]=i.trim()),n}for(var f,u=t.document.createElement("div"),d=u,g=[];null!==(f=i());)if("<"!==f[0])d.appendChild(t.document.createTextNode(h(f)));else{if("/"===f[1]){g.length&&g[g.length-1]===f.substr(2).replace(">","")&&(g.pop(),d=d.parentNode);continue}var m=n(f.substr(1,f.length-2)),v=void 0;if(m){v=t.document.createProcessingInstruction("timestamp",m),d.appendChild(v);continue}var y=f.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!y)continue;if(!(v=p(y[1],y[3])))continue;if(!c(d,v))continue;y[2]&&(v.className=y[2].substr(1).replace("."," ")),g.push(y[1]),d.appendChild(v),d=v}return u}var c=[[1470,1470],[1472,1472],[1475,1475],[1478,1478],[1488,1514],[1520,1524],[1544,1544],[1547,1547],[1549,1549],[1563,1563],[1566,1610],[1645,1647],[1649,1749],[1765,1766],[1774,1775],[1786,1805],[1807,1808],[1810,1839],[1869,1957],[1969,1969],[1984,2026],[2036,2037],[2042,2042],[2048,2069],[2074,2074],[2084,2084],[2088,2088],[2096,2110],[2112,2136],[2142,2142],[2208,2208],[2210,2220],[8207,8207],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64449],[64467,64829],[64848,64911],[64914,64967],[65008,65020],[65136,65140],[65142,65276],[67584,67589],[67592,67592],[67594,67637],[67639,67640],[67644,67644],[67647,67669],[67671,67679],[67840,67867],[67872,67897],[67903,67903],[67968,68023],[68030,68031],[68096,68096],[68112,68115],[68117,68119],[68121,68147],[68160,68167],[68176,68184],[68192,68223],[68352,68405],[68416,68437],[68440,68466],[68472,68479],[68608,68680],[126464,126467],[126469,126495],[126497,126498],[126500,126500],[126503,126503],[126505,126514],[126516,126519],[126521,126521],[126523,126523],[126530,126530],[126535,126535],[126537,126537],[126539,126539],[126541,126543],[126545,126546],[126548,126548],[126551,126551],[126553,126553],[126555,126555],[126557,126557],[126559,126559],[126561,126562],[126564,126564],[126567,126570],[126572,126578],[126580,126583],[126585,126588],[126590,126590],[126592,126601],[126603,126619],[126625,126627],[126629,126633],[126635,126651],[1114109,1114109]];function p(t){for(var e=0;e=i[0]&&t<=i[1])return!0}return!1}function f(t,e){for(var i=e.childNodes.length-1;i>=0;i--)t.push(e.childNodes[i])}function u(t){if(!t||!t.length)return null;var e=t.pop(),i=e.textContent||e.innerText;if(i){var r=i.match(/^.*(\n|\r)/);return r?(t.length=0,r[0]):i}return"ruby"===e.tagName?u(t):e.childNodes?(f(t,e),u(t)):void 0}function d(t){if(!t||!t.childNodes)return"ltr";var e,i=[];for(f(i,t);e=u(i);)for(var r=0;r=0&&t.line<=100))return t.line;if(!t.track||!t.track.textTrackList||!t.track.textTrackList.mediaElement)return-1;for(var e=t.track,i=e.textTrackList,r=0,n=0;nu&&(f=f<0?-1:1,f*=Math.ceil(u/c)*c),s<0)f+=a.vertical?i.width:i.height,f-=n*c,l=l.slice().reverse();f-=n,o.move(d,f)}else{var g=o.lineHeight/i.height*100;switch(a.lineAlign){case"middle":s-=g/2;break;case"end":s-=g}switch(a.vertical){case"":e.applyStyles({top:e.formatStyle(s,"%")});break;case"rl":e.applyStyles({left:e.formatStyle(s,"%")});break;case"lr":e.applyStyles({paddingRight:e.formatStyle(s,"%")})}l=["+y","-x","+x","-y"],o=new v(e)}var m=function t(e,n){for(var o,a,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,l=new v(e),h=0,c=0;ct.left&&this.topt.top},v.prototype.overlapsAny=function(t){for(var e=0;e=t.top&&this.bottom<=t.bottom&&this.left>=t.left&&this.right<=t.right},v.prototype.overlapsOppositeAxis=function(t,e){switch(e){case"+x":return this.leftt.right;case"+y":return this.topt.bottom}},v.prototype.intersectPercentage=function(t){return Math.max(0,Math.min(this.right,t.right)-Math.max(this.left,t.left))*Math.max(0,Math.min(this.bottom,t.bottom)-Math.max(this.top,t.top))/(this.height*this.width)},v.prototype.toCSSCompatValues=function(t){return{top:this.top-t.top,bottom:t.bottom-this.bottom,left:this.left-t.left,paddingRight:t.right-this.right,height:this.height,width:this.width}},v.getSimpleBoxPosition=function(t){var e=t.div?t.div.offsetHeight:t.tagName?t.offsetHeight:0,i=t.div?t.div.offsetWidth:t.tagName?t.offsetWidth:0,r=t.div?t.div.offsetTop:t.tagName?t.offsetTop:0,n=(t=t.div?t.div.getBoundingClientRect():t.tagName?t.getBoundingClientRect():t).height||e;return{left:t.left,right:t.right,top:t.top||r,height:n,bottom:t.bottom||r+n,width:t.width||i}},b.StringDecoder=function(){return{decode:function(t){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}},b.convertCueToDOMTree=function(t,e){return t&&e?h(t,e):null};b.processCues=function(t,e,i,r){if(!t||!e||!i)return null;for(;i.firstChild;)i.removeChild(i.firstChild);if(!e.length)return null;var n=t.document.createElement("div");if(n.className="jw-text-track-container jw-reset",n.style.position="absolute",n.style.left="0",n.style.right="0",n.style.top="0",n.style.bottom="0",n.style.margin="1.5%",i.appendChild(n),function(t){for(var e=0;e=0&&(r.metadata.mpegts=n+t)}var a=this.getLiveLatency();null!==a&&(r.latency=a),(this.state===s.pb||this.seeking)&&this.trigger(s.S,r)}},click:function(e){this.trigger(s.n,e)},volumechange:function(){var e=this.video;this.trigger(s.V,{volume:Math.round(100*e.volume)}),this.trigger(s.M,{mute:e.muted})},seeked:function(){this.seeking&&(this.seeking=!1,this.trigger(s.R))},playing:function(){-1===this.stallTime&&this.setState(s.pb),this.trigger(s.fb)},pause:function(){this.state!==s.kb&&(this.video.ended||this.video.error||this.video.currentTime!==this.video.duration&&this.setState(s.ob))},progress:function(){var e=this.getDuration();if(!(e<=0||e===1/0)){var t=this.video.buffered;if(t&&0!==t.length){var i=Object(c.a)(t.end(t.length-1)/e,0,1);this.trigger(s.D,{bufferPercent:100*i,position:this.getCurrentTime(),duration:e,currentTime:this.video.currentTime,seekRange:this.getSeekRange()})}}},ratechange:function(){this.trigger(s.P,{playbackRate:this.video.playbackRate})},ended:function(){this.videoHeight=0,this.streamBitrate=-1,this.state!==s.mb&&this.state!==s.kb&&this.trigger(s.F)},loadeddata:function(){this.renderNatively&&this.setTextTracks(this.video.textTracks)}},o=i(10);function d(e){return e&&e.length?e.end(e.length-1):0}var l={container:null,volume:function(e){this.video.volume=Math.min(Math.max(0,e/100),1)},mute:function(e){this.video.muted=!!e,this.video.muted||this.video.removeAttribute("muted")},resize:function(e,t,i){var r=this.video,a=r.videoWidth,s=r.videoHeight;if(e&&t&&a&&s){var c={objectFit:"",width:"",height:""};if("uniform"===i){var u=e/t,d=a/s,l=Math.abs(u-d);l<.09&&l>.0025&&(c.objectFit="fill",i="exactfit")}if(n.Browser.ie||n.OS.iOS&&n.OS.version.major<9||n.Browser.androidNative)if("uniform"!==i){c.objectFit="contain";var h=e/t,f=a/s,v=1,T=1;"none"===i?v=T=h>f?Math.ceil(100*s/t)/100:Math.ceil(100*a/e)/100:"fill"===i?v=T=h>f?h/f:f/h:"exactfit"===i&&(h>f?(v=h/f,T=1):(v=1,T=f/h)),Object(o.e)(r,"matrix(".concat(v.toFixed(2),", 0, 0, ").concat(T.toFixed(2),", 0, 0)"))}else c.top=c.left=c.margin="",Object(o.e)(r,"");Object(o.d)(r,c)}},getContainer:function(){return this.container},setContainer:function(e){this.container=e,this.video.parentNode!==e&&e.appendChild(this.video)},remove:function(){this.stop(),this.destroy();var e=this.container;e&&e===this.video.parentNode&&e.removeChild(this.video)},atEdgeOfLiveStream:function(){if(!this.isLive())return!1;return d(this.video.buffered)-this.video.currentTime<=2}},h={eventsOn_:function(){},eventsOff_:function(){},attachMedia:function(){this.eventsOn_()},detachMedia:function(){return this.eventsOff_()}},f=i(62),v=i(5),T=i(53),g=i(7),m=i(63),k=i(60),b={TIT2:"title",TT2:"title",WXXX:"url",TPE1:"artist",TP1:"artist",TALB:"album",TAL:"album"};function p(e,t){for(var i,r,n,a=e.length,s="",c=t||0;c>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:s+=String.fromCharCode(i);break;case 12:case 13:r=e[c++],s+=String.fromCharCode((31&i)<<6|63&r);break;case 14:r=e[c++],n=e[c++],s+=String.fromCharCode((15&i)<<12|(63&r)<<6|(63&n)<<0)}return s}function y(e){var t=function(e){for(var t="0x",i=0;i>1|(8323072&t)>>2|(2130706432&t)>>3}function x(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).reduce((function(e,t){if(!("value"in t)&&"data"in t&&t.data instanceof ArrayBuffer){var i=new Uint8Array(t.data),r=i.length;t={value:{key:"",data:""}};for(var n=10;n<14&&n0){var o=p(i.subarray(a,a+=c),0);if("PRIV"===t.value.key){if("com.apple.streaming.transportStreamTimestamp"===o){var d=1&y(i.subarray(a,a+=4)),l=y(i.subarray(a,a+=4))+(d?4294967296:0);t.value.data=l}else t.value.data=p(i,a+1);t.value.info=o}else t.value.info=o,t.value.data=p(i,a+1)}else{var h=i[a];t.value.data=1===h||2===h?function(e,t){for(var i=e.length-1,r="",n=t||0;n=0&&n[a].startTime>t.startTime;a--)i.unshift(n[a]),e.removeCue(n[a]);try{e.addCue(t),i.forEach((function(t){return e.addCue(t)}))}catch(e){console.error(e)}e.mode=r}(t,r)}else try{t.addCue(i)}catch(e){console.error(e)}}function j(e,t){t&&t.length&&Object(r.g)(t,(function(t){if(!(n.Browser.ie&&e&&/^(native|subtitle|cc)/.test(t._id))){n.Browser.ie&&"disabled"===t.mode||(t.mode="disabled",t.mode="hidden");for(var i=t.cues.length;i--;)t.removeCue(t.cues[i]);t.embedded||(t.mode="disabled"),t.inuse=!1}}))}function E(e){return"subtitles"===e||"captions"===e}function S(e){var t,i=Object(k.b)(e,this._unknownCount),n=i.label;if(this._unknownCount=i.unknownCount,this.renderNatively||"metadata"===e.kind){var a=this.video.textTracks;(t=Object(r.k)(a,{label:n}))||(t=this.video.addTextTrack(e.kind,n,e.language||"")),t.default=e.default,t.mode="disabled",t.inuse=!0}else(t=e).data=t.data||[];return t._id||(t._id=Object(k.a)(e,this._textTracks.length)),t}function L(e){this._textTracks.push(e),this._tracksById[e._id]=e}function I(){if(this._textTracks){var e=this._textTracks.filter((function(e){return e.embedded||"subs"===e.groupid}));this._initTextTracks(),e.forEach((function(e){this._tracksById[e._id]=e})),this._textTracks=e}}function N(e){this.triggerActiveCues(e.currentTarget.activeCues)}function R(e,t,i){var r=e.kind;this._cachedVTTCues[e._id]||(this._cachedVTTCues[e._id]={});var n,a=this._cachedVTTCues[e._id];switch(r){case"captions":case"subtitles":n=i||Math.floor(20*t.startTime);var s="_"+t.line,c=Math.floor(20*t.endTime),u=a[n+s]||a[n+1+s]||a[n-1+s];return!(u&&Math.abs(u-c)<=1)&&(a[n+s]=c,!0);case"metadata":var o=t.data?new Uint8Array(t.data).join(""):t.text;return!a[n=i||t.startTime+o]&&(a[n]=t.endTime,!0);default:return!1}}function M(e){if(e.length>this._textTracks.length)return!0;for(var t=0;t=0&&(T.retries=0),T.currentTime=p.currentTime,j&&O!==p.currentTime&&Z(p.currentTime),u.timeupdate.call(T),ve(),n.Browser.ie&&Y()},resize:Y,ended:function(){B=-1,Te(),u.ended.call(T)},loadedmetadata:function(){var e=T.getDuration();M&&e===1/0&&(e=0);var t={metadataType:"media",duration:e,height:p.videoHeight,width:p.videoWidth,seekRange:T.getSeekRange()};T.trigger(s.K,t),Y()},durationchange:function(){M||u.progress.call(T)},loadeddata:function(){var e;!function(){if(p.getStartDate){var e=p.getStartDate(),t=e.getTime?e.getTime():NaN;if(t!==T.startDateTime&&!isNaN(t)){T.startDateTime=t;var i=e.toISOString(),r=T.getSeekRange(),n=r.start,a=r.end,c={metadataType:"program-date-time",programDateTime:i,start:n,end:a},u=T.createCue(n,a,JSON.stringify(c));T.addVTTCue({type:"metadata",cue:u}),delete c.metadataType,T.trigger(s.L,{metadataType:"program-date-time",metadata:c})}}}(),u.loadeddata.call(T),function(e){if(S=null,!e)return;if(e.length){for(var t=0;t0&&(t=e.map((function(e,t){return{label:e.label||t}}))),t}function ie(e){T.currentTime=-1,m=e.minDvrWindow,b=e.sources,B=function(e){var i=Math.max(0,B),r=t.qualityLabel;if(e)for(var n=0;n0&&(w=-1,T.seek(e)),e>0&&p.currentTime!==e&&T.seek(e);var r=te(b);r&&T.trigger(s.I,{levels:r,currentQuality:B}),b.length&&"hls"!==b[0].type&&fe()}function ae(e){S=null,L=-1,y.reason||(y.reason="initial choice",y.level={}),_=!1;var t=document.createElement("source");t.src=e.file,p.src!==t.src&&(p.src=e.file)}function se(){p&&(T.disableTextTrack(),p.removeAttribute("preload"),p.removeAttribute("src"),Object(v.h)(p),Object(o.d)(p,{objectFit:""}),B=-1,!n.Browser.msie&&"load"in p&&p.load())}function ce(){var e=1/0;return["buffered","seekable"].forEach((function(t){for(var i=p[t],n=i?i.length:0;n--;){var a=Math.min(e,i.start(n));Object(r.p)(a)&&(e=a)}})),e}function ue(){var e=0;return["buffered","seekable"].forEach((function(t){for(var i=p[t],n=i?i.length:0;n--;){var a=Math.max(e,i.end(n));Object(r.p)(a)&&(e=a)}})),e}function oe(){for(var e=-1,t=0;t-1&&e1)&&function(e){z=e.end,G=Math.min(0,p.currentTime-z),$=Object(D.a)()}(t),Object(f.a)(t.end-t.start,m))return G}return e}(p.currentTime)},T.getDuration=function(){var e=p.duration;if(M&&e===1/0&&0===p.currentTime||isNaN(e))return 0;var t=ue();if(T.isLive()&&t){var i=t-ce();Object(f.a)(i,m)&&(e=-i)}return e},T.getSeekRange=function(){var e={start:0,end:p.duration};return p.seekable.length&&(e.end=ue(),e.start=ce()),e},T.getLiveLatency=function(){var e=null,t=ue();return T.isLive()&&t&&(e=t+(Object(D.a)()-$)/1e3-p.currentTime),e},this.stop=function(){Te(),se(),this.clearTracks(),n.Browser.ie&&p.pause(),this.setState(s.mb)},this.destroy=function(){E=q,J(k,p),this.removeTracksListener(p.audioTracks,"change",oe),this.removeTracksListener(p.textTracks,"change",T.textTrackChangeHandler),this.off()},this.init=function(e){T.retries=0,T.maxRetries=e.adType?0:3,ie(e);var t=b[B];(M=Object(a.a)(t))&&(T.supportsPlaybackRate=!1,k.waiting=q),T.eventsOn_(),b.length&&"hls"!==b[0].type&&this.sendMediaType(b),y.reason=""},this.preload=function(e){ie(e);var t=b[B],i=t.preload||"metadata";"none"!==i&&(p.setAttribute("preload",i),ae(t))},this.load=function(e){ie(e),ne(e.starttime),this.setupSideloadedTracks(e.tracks)},this.play=function(){return E(),re()},this.pause=function(){Te(),E=function(){if(p.paused&&p.currentTime&&T.isLive()){var e=ue(),t=e-ce(),i=!Object(f.a)(t,m),n=e-p.currentTime;if(i&&e&&(n>15||n<0)){if(C=Math.max(e-10,e-t),!Object(r.p)(C))return;Z(p.currentTime),p.currentTime=C}}},p.pause()},this.seek=function(e){var t=T.getSeekRange(),i=e;if(e<0&&(i+=t.end),_||(_=!!ue()),_){w=0;try{if(T.seeking=!0,T.isLive()&&Object(f.a)(t.end-t.start,m))if(G=Math.min(0,i-z),e<0)i+=Math.min(12,(Object(D.a)()-$)/1e3);C=i,Z(p.currentTime),p.currentTime=i}catch(e){T.seeking=!1,w=i}}else w=i,n.Browser.firefox&&p.paused&&re()},this.setVisibility=function(e){(e=!!e)||n.OS.android?Object(o.d)(T.container,{visibility:"visible",opacity:1}):Object(o.d)(T.container,{visibility:"",opacity:0})},this.setFullscreen=function(e){if(e=!!e){try{var t=p.webkitEnterFullscreen||p.webkitEnterFullScreen;t&&t.apply(p)}catch(e){return!1}return T.getFullScreen()}var i=p.webkitExitFullscreen||p.webkitExitFullScreen;return i&&i.apply(p),e},T.getFullScreen=function(){return j||!!p.webkitDisplayingFullscreen},this.setCurrentQuality=function(e){B!==e&&e>=0&&b&&b.length>e&&(B=e,y.reason="api",y.level={},this.trigger(s.J,{currentQuality:e,levels:te(b)}),t.qualityLabel=b[e].label,ne(p.currentTime||0),re())},this.setPlaybackRate=function(e){p.playbackRate=p.defaultPlaybackRate=e},this.getPlaybackRate=function(){return p.playbackRate},this.getCurrentQuality=function(){return B},this.getQualityLevels=function(){return Array.isArray(b)?b.map((function(e){return function(e){return{bitrate:e.bitrate,label:e.label,width:e.width,height:e.height}}(e)})):[]},this.getName=function(){return{name:Q}},this.setCurrentAudioTrack=le,this.getAudioTracks=function(){return S||[]},this.getCurrentAudioTrack=function(){return L}}Object(r.h)(z.prototype,T.a),z.getName=function(){return{name:"html5"}};t.default=z;var K=220001},57:function(e,t,i){"use strict";i.d(t,"a",(function(){return n}));var r=i(2);function n(e){var t=[],i=(e=Object(r.i)(e)).split("\r\n\r\n");1===i.length&&(i=e.split("\n\n"));for(var n=0;n0&&(n=0),i.length>n+1&&i[n+1]){var a=i[n],s=a.indexOf(" --\x3e ");s>0&&(t.begin=Object(r.g)(a.substr(0,s)),t.end=Object(r.g)(a.substr(s+5)),t.text=i.slice(n+1).join("\r\n"))}return t}},60:function(e,t,i){"use strict";function r(e,t){var i=e.kind||"cc";return e.default||e.defaulttrack?"default":e._id||e.file||i+t}function n(e,t){var i=e.label||e.name||e.language;return i||(i="Unknown CC",(t+=1)>1&&(i+=" ["+t+"]")),{label:i,unknownCount:t}}i.d(t,"a",(function(){return r})),i.d(t,"b",(function(){return n}))},61:function(e,t,i){"use strict";function r(e){return new Promise((function(t,i){if(e.paused)return i(n("NotAllowedError",0,"play() failed."));var r=function(){e.removeEventListener("play",a),e.removeEventListener("playing",s),e.removeEventListener("pause",s),e.removeEventListener("abort",s),e.removeEventListener("error",s)},a=function(){e.addEventListener("playing",s),e.addEventListener("abort",s),e.addEventListener("error",s),e.addEventListener("pause",s)},s=function(e){if(r(),"playing"===e.type)t();else{var a='The play() request was interrupted by a "'.concat(e.type,'" event.');"error"===e.type?i(n("NotSupportedError",9,a)):i(n("AbortError",20,a))}};e.addEventListener("play",a)}))}function n(e,t,i){var r=new Error(i);return r.name=e,r.code=t,r}i.d(t,"a",(function(){return r}))},62:function(e,t,i){"use strict";function r(e,t){return e!==1/0&&Math.abs(e)>=Math.max(a(t),0)}function n(e,t){var i="VOD";return e===1/0?i="LIVE":e<0&&(i=r(e,a(t))?"DVR":"LIVE"),i}function a(e){return void 0===e?120:Math.max(e,0)}i.d(t,"a",(function(){return r})),i.d(t,"b",(function(){return n}))},63:function(e,t,i){"use strict";var r=i(64),n=i(16),a=i(22),s=i(4),c=i(57),u=i(2),o=i(1);function d(e){throw new o.n(null,e)}function l(e,t,r){e.xhr=Object(a.a)(e.file,(function(a){!function(e,t,r,a){var l,h,v=e.responseXML?e.responseXML.firstChild:null;if(v)for("xml"===Object(s.b)(v)&&(v=v.nextSibling);v.nodeType===v.COMMENT_NODE;)v=v.nextSibling;try{if(v&&"tt"===Object(s.b)(v))l=function(e){e||d(306007);var t=[],i=e.getElementsByTagName("p"),r=30,n=e.getElementsByTagName("tt");if(n&&n[0]){var a=parseFloat(n[0].getAttribute("ttp:frameRate"));isNaN(a)||(r=a)}i||d(306005),i.length||(i=e.getElementsByTagName("tt:p")).length||(i=e.getElementsByTagName("tts:p"));for(var s=0;s\s+<").replace(/(<\/?)tts?:/g,"$1").replace(//g,"\r\n");if(v){var T=c.getAttribute("begin"),g=c.getAttribute("dur"),m=c.getAttribute("end"),k={begin:Object(u.g)(T,r),text:v};m?k.end=Object(u.g)(m,r):g&&(k.end=k.begin+Object(u.g)(g,r)),t.push(k)}}return t.length||d(306005),t}(e.responseXML),h=f(l),delete t.xhr,r(h);else{var T=e.responseText;T.indexOf("WEBVTT")>=0?i.e(10).then(function(e){return i(92).default}.bind(null,i)).catch(Object(n.c)(301131)).then((function(e){var i=new e(window);h=[],i.oncue=function(e){h.push(e)},i.onflush=function(){delete t.xhr,r(h)},i.parse(T)})).catch((function(e){delete t.xhr,a(Object(o.v)(null,o.b,e))})):(l=Object(c.a)(T),h=f(l),delete t.xhr,r(h))}}catch(e){delete t.xhr,a(Object(o.v)(null,o.b,e))}}(a,e,t,r)}),(function(e,t,i,n){r(Object(o.u)(n,o.b))}))}function h(e){e&&e.forEach((function(e){var t=e.xhr;t&&(t.onload=null,t.onreadystatechange=null,t.onerror=null,"abort"in t&&t.abort()),delete e.xhr}))}function f(e){return e.map((function(e){return new r.a(e.begin,e.end,e.text)}))}i.d(t,"c",(function(){return l})),i.d(t,"a",(function(){return h})),i.d(t,"b",(function(){return f}))},64:function(e,t,i){"use strict";var r=window.VTTCue;function n(e){if("string"!=typeof e)return!1;return!!{start:!0,middle:!0,end:!0,left:!0,right:!0}[e.toLowerCase()]&&e.toLowerCase()}if(!r){(r=function(e,t,i){var r=this;r.hasBeenReset=!1;var a="",s=!1,c=e,u=t,o=i,d=null,l="",h=!0,f="auto",v="start",T="auto",g=100,m="middle";Object.defineProperty(r,"id",{enumerable:!0,get:function(){return a},set:function(e){a=""+e}}),Object.defineProperty(r,"pauseOnExit",{enumerable:!0,get:function(){return s},set:function(e){s=!!e}}),Object.defineProperty(r,"startTime",{enumerable:!0,get:function(){return c},set:function(e){if("number"!=typeof e)throw new TypeError("Start time must be set to a number.");c=e,this.hasBeenReset=!0}}),Object.defineProperty(r,"endTime",{enumerable:!0,get:function(){return u},set:function(e){if("number"!=typeof e)throw new TypeError("End time must be set to a number.");u=e,this.hasBeenReset=!0}}),Object.defineProperty(r,"text",{enumerable:!0,get:function(){return o},set:function(e){o=""+e,this.hasBeenReset=!0}}),Object.defineProperty(r,"region",{enumerable:!0,get:function(){return d},set:function(e){d=e,this.hasBeenReset=!0}}),Object.defineProperty(r,"vertical",{enumerable:!0,get:function(){return l},set:function(e){var t=function(e){return"string"==typeof e&&(!!{"":!0,lr:!0,rl:!0}[e.toLowerCase()]&&e.toLowerCase())}(e);if(!1===t)throw new SyntaxError("An invalid or illegal string was specified.");l=t,this.hasBeenReset=!0}}),Object.defineProperty(r,"snapToLines",{enumerable:!0,get:function(){return h},set:function(e){h=!!e,this.hasBeenReset=!0}}),Object.defineProperty(r,"line",{enumerable:!0,get:function(){return f},set:function(e){if("number"!=typeof e&&"auto"!==e)throw new SyntaxError("An invalid number or illegal string was specified.");f=e,this.hasBeenReset=!0}}),Object.defineProperty(r,"lineAlign",{enumerable:!0,get:function(){return v},set:function(e){var t=n(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}}),Object.defineProperty(r,"position",{enumerable:!0,get:function(){return T},set:function(e){if(e<0||e>100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}}),Object.defineProperty(r,"size",{enumerable:!0,get:function(){return g},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");g=e,this.hasBeenReset=!0}}),Object.defineProperty(r,"align",{enumerable:!0,get:function(){return m},set:function(e){var t=n(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");m=t,this.hasBeenReset=!0}}),r.displayState=void 0}).prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)}}t.a=r}}]); \ No newline at end of file diff --git a/ui/v2.5/public/jwplayer/vttparser.js b/ui/v2.5/public/jwplayer/vttparser.js new file mode 100644 index 000000000..f285f7949 --- /dev/null +++ b/ui/v2.5/public/jwplayer/vttparser.js @@ -0,0 +1,95 @@ +/*! +JW Player version 8.11.5 +Copyright (c) 2019, JW Player, All Rights Reserved +https://github.com/jwplayer/jwplayer/blob/v8.11.5/README.md + +This source code and its use and distribution is subject to the terms and conditions of the applicable license agreement. +https://www.jwplayer.com/tos/ + +This product includes portions of other software. For the full text of licenses, see below: + +JW Player Third Party Software Notices and/or Additional Terms and Conditions + +************************************************************************************************** +The following software is used under Apache License 2.0 +************************************************************************************************** + +vtt.js v0.13.0 +Copyright (c) 2019 Mozilla (http://mozilla.org) +https://github.com/mozilla/vtt.js/blob/v0.13.0/LICENSE + +* * * + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and +limitations under the License. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under MIT license +************************************************************************************************** + +Underscore.js v1.6.0 +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +https://github.com/jashkenas/underscore/blob/1.6.0/LICENSE + +Backbone backbone.events.js v1.1.2 +Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud +https://github.com/jashkenas/backbone/blob/1.1.2/LICENSE + +Promise Polyfill v7.1.1 +Copyright (c) 2014 Taylor Hakes and Forbes Lindesay +https://github.com/taylorhakes/promise-polyfill/blob/v7.1.1/LICENSE + +can-autoplay.js v3.0.0 +Copyright (c) 2017 video-dev +https://github.com/video-dev/can-autoplay/blob/v3.0.0/LICENSE + +* * * + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +************************************************************************************************** +The following software is used under W3C license +************************************************************************************************** + +Intersection Observer v0.5.0 +Copyright (c) 2016 Google Inc. (http://google.com) +https://github.com/w3c/IntersectionObserver/blob/v0.5.0/LICENSE.md + +* * * + +W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. + +This work is being provided by the copyright holders under the following license. + +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. + +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: + +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. + +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." + +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders. +*/ +(window.webpackJsonpjwplayer=window.webpackJsonpjwplayer||[]).push([[10],{92:function(t,e,r){"use strict";r.r(e);var n=r(42),i=r(64),s=/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/,a=/^-?\d+$/,u=/\r\n|\n/,o=/^NOTE($|[ \t])/,c=/^[^\sa-zA-Z-]+/,l=/:/,f=/\s/,h=/^\s+/,g=/-->/,d=/^WEBVTT([ \t].*)?$/,p=function(t,e){this.window=t,this.state="INITIAL",this.buffer="",this.decoder=e||new b,this.regionList=[],this.maxCueBatch=1e3};function b(){return{decode:function(t){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}}function v(){this.values=Object.create(null)}v.prototype={set:function(t,e){this.get(t)||""===e||(this.values[t]=e)},get:function(t,e,r){return r?this.has(t)?this.values[t]:e[r]:this.has(t)?this.values[t]:e},has:function(t){return t in this.values},alt:function(t,e,r){for(var n=0;n=0&&e<=100&&(this.set(t,e),!0)}};var E=new i.a(0,0,0),w="middle"===E.align?"middle":"center";function T(t,e,r){var n=t;function i(){var e=function(t){function e(t,e,r,n){return 3600*(0|t)+60*(0|e)+(0|r)+(0|n)/1e3}var r=t.match(s);return r?r[3]?e(r[1],r[2],r[3].replace(":",""),r[4]):r[1]>59?e(r[1],r[2],0,r[4]):e(0,r[1],r[2],r[4]):null}(t);if(null===e)throw new Error("Malformed timestamp: "+n);return t=t.replace(c,""),e}function a(){t=t.replace(h,"")}if(a(),e.startTime=i(),a(),"--\x3e"!==t.substr(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+n);t=t.substr(3),a(),e.endTime=i(),a(),function(t,e){var n=new v;!function(t,e,r,n){for(var i=n?t.split(n):[t],s=0;s<=i.length;s+=1)if("string"==typeof i[s]){var a=i[s].split(r);if(2===a.length)e(a[0],a[1])}}(t,(function(t,e){switch(t){case"region":for(var i=r.length-1;i>=0;i--)if(r[i].id===e){n.set(t,r[i].region);break}break;case"vertical":n.alt(t,e,["rl","lr"]);break;case"line":var s=e.split(","),a=s[0];n.integer(t,a),n.percent(t,a)&&n.set("snapToLines",!1),n.alt(t,a,["auto"]),2===s.length&&n.alt("lineAlign",s[1],["start",w,"end"]);break;case"position":var u=e.split(",");n.percent(t,u[0]),2===u.length&&n.alt("positionAlign",u[1],["start",w,"end","line-left","line-right","auto"]);break;case"size":n.percent(t,e);break;case"align":n.alt(t,e,["start",w,"end","left","right"])}}),l,f),e.region=n.get("region",null),e.vertical=n.get("vertical","");var i=n.get("line","auto");"auto"===i&&-1===E.line&&(i=-1),e.line=i,e.lineAlign=n.get("lineAlign","start"),e.snapToLines=n.get("snapToLines",!0),e.size=n.get("size",100),e.align=n.get("align",w);var s=n.get("position","auto");"auto"===s&&50===E.position&&(s="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=s}(t,e)}p.prototype={parse:function(t,e){var r,s=this;function a(){for(var t=s.buffer,e=0;e ( +
    + + +
    + + + + {/* */} + + + + + + + + +
    +
    +
    +); diff --git a/ui/v2.5/src/components/ErrorBoundary.tsx b/ui/v2.5/src/components/ErrorBoundary.tsx new file mode 100644 index 000000000..eb47f4547 --- /dev/null +++ b/ui/v2.5/src/components/ErrorBoundary.tsx @@ -0,0 +1,34 @@ +import React from "react"; + +export class ErrorBoundary extends React.Component { + constructor(props: any) { + super(props); + this.state = { error: null, errorInfo: null }; + } + + public componentDidCatch(error: any, errorInfo: any) { + this.setState({ + error, + errorInfo, + }); + } + + public render() { + if (this.state.errorInfo) { + // Error path + return ( +
    +

    Something went wrong.

    +
    + {this.state.error && this.state.error.toString()} +
    + {this.state.errorInfo.componentStack} +
    +
    + ); + } + + // Normally, just render children + return this.props.children; + } +} diff --git a/ui/v2.5/src/components/Galleries/Galleries.tsx b/ui/v2.5/src/components/Galleries/Galleries.tsx new file mode 100644 index 000000000..51db624b5 --- /dev/null +++ b/ui/v2.5/src/components/Galleries/Galleries.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import { Route, Switch } from "react-router-dom"; +import { Gallery } from "./Gallery"; +import { GalleryList } from "./GalleryList"; + +const Galleries = () => ( + + + + +); + +export default Galleries; diff --git a/ui/v2.5/src/components/Galleries/Gallery.tsx b/ui/v2.5/src/components/Galleries/Gallery.tsx new file mode 100644 index 000000000..57890d875 --- /dev/null +++ b/ui/v2.5/src/components/Galleries/Gallery.tsx @@ -0,0 +1,30 @@ +import _ from "lodash"; +import React, { useEffect, useState } from "react"; +import { Spinner } from 'react-bootstrap'; +import * as GQL from "../../core/generated-graphql"; +import { StashService } from "../../core/StashService"; +import { IBaseProps } from "../../models"; +import { GalleryViewer } from "./GalleryViewer"; + +interface IProps extends IBaseProps {} + +export const Gallery: React.FC = (props: IProps) => { + const [gallery, setGallery] = useState>({}); + const [isLoading, setIsLoading] = useState(false); + + const { data, error, loading } = StashService.useFindGallery(props.match.params.id); + + useEffect(() => { + setIsLoading(loading); + if (!data || !data.findGallery || !!error) { return; } + setGallery(data.findGallery); + }, [data]); + + if (!data || !data.findGallery || isLoading) { return ; } + if (!!error) { return <>{error.message}; } + return ( +
    + +
    + ); +}; diff --git a/ui/v2.5/src/components/Galleries/GalleryList.tsx b/ui/v2.5/src/components/Galleries/GalleryList.tsx new file mode 100644 index 000000000..fa3ec30af --- /dev/null +++ b/ui/v2.5/src/components/Galleries/GalleryList.tsx @@ -0,0 +1,54 @@ +import _ from "lodash"; +import React from "react"; +import { Table } from 'react-bootstrap'; +import { QueryHookResult } from "react-apollo-hooks"; +import { Link } from "react-router-dom"; +import { FindGalleriesQuery, FindGalleriesVariables } from "../../core/generated-graphql"; +import { ListHook } from "../../hooks/ListHook"; +import { IBaseProps } from "../../models/base-props"; +import { ListFilterModel } from "../../models/list-filter/filter"; +import { DisplayMode, FilterMode } from "../../models/list-filter/types"; + +interface IProps extends IBaseProps {} + +export const GalleryList: React.FC = (props: IProps) => { + const listData = ListHook.useList({ + filterMode: FilterMode.Galleries, + props, + renderContent, + }); + + function renderContent(result: QueryHookResult, filter: ListFilterModel) { + if (!result.data || !result.data.findGalleries) { return; } + if (filter.displayMode === DisplayMode.Grid) { + return

    TODO

    ; + } else if (filter.displayMode === DisplayMode.List) { + return ( + + + + + + + + + {result.data.findGalleries.galleries.map((gallery) => ( + + + + + ))} + +
    PreviewPath
    + + {gallery.files.length > 0 ? : undefined} + + {gallery.path}
    + ); + } else if (filter.displayMode === DisplayMode.Wall) { + return

    TODO

    ; + } + } + + return listData.template; +}; diff --git a/ui/v2.5/src/components/Galleries/GalleryViewer.tsx b/ui/v2.5/src/components/Galleries/GalleryViewer.tsx new file mode 100644 index 000000000..5a1e7a3ef --- /dev/null +++ b/ui/v2.5/src/components/Galleries/GalleryViewer.tsx @@ -0,0 +1,47 @@ +import _ from "lodash"; +import React, { FunctionComponent, useState } from "react"; +import Lightbox from "react-images"; +import Gallery from "react-photo-gallery"; +import * as GQL from "../../core/generated-graphql"; + +interface IProps { + gallery: GQL.GalleryDataFragment; +} + +export const GalleryViewer: FunctionComponent = (props: IProps) => { + const [currentImage, setCurrentImage] = useState(0); + const [lightboxIsOpen, setLightboxIsOpen] = useState(false); + + function openLightbox(event: any, obj: any) { + setCurrentImage(obj.index); + setLightboxIsOpen(true); + } + function closeLightbox() { + setCurrentImage(0); + setLightboxIsOpen(false); + } + function gotoPrevious() { + setCurrentImage(currentImage - 1); + } + function gotoNext() { + setCurrentImage(currentImage + 1); + } + + const photos = props.gallery.files.map((file) => ({src: file.path || "", caption: file.name})); + const thumbs = props.gallery.files.map((file) => ({src: `${file.path}?thumb=true` || "", width: 1, height: 1})); + return ( +
    + + window.open(photos[currentImage].src, "_blank")} + width={9999} + /> +
    + ); +}; diff --git a/ui/v2.5/src/components/MainNavbar.tsx b/ui/v2.5/src/components/MainNavbar.tsx new file mode 100644 index 000000000..410d69b28 --- /dev/null +++ b/ui/v2.5/src/components/MainNavbar.tsx @@ -0,0 +1,94 @@ +import { Nav, Navbar, Button } from "react-bootstrap"; +import { LinkContainer } from 'react-router-bootstrap'; +import React from "react"; +import { Link, useLocation } from "react-router-dom"; + +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { IconName } from '@fortawesome/fontawesome-svg-core'; + +interface IMenuItem { + text: string; + href: string; + icon: IconName; +} + +const menuItems:IMenuItem[] = [ +{ + icon: "play-circle", + text: "Scenes", + href: "/scenes" +}, +{ + href: "/scenes/markers", + icon: "map-marker-alt", + text: "Markers" +}, +{ + href: "/galleries", + icon: "image", + text: "Galleries" +}, +{ + href: "/performers", + icon: "user", + text: "Performers" +}, +{ + href: "/studios", + icon: "video", + text: "Studios" +}, +{ + href: "/tags", + icon: "tag", + text: "Tags" +} +]; + +export const MainNavbar: React.FC = () => { + const location = useLocation(); + + const path = location.pathname === '/performers' + ? '/performers/new' + : location.pathname === '/studios' + ? '/studios/new' : null; + const newButton = path === null ? '' : ( + + + + ); + + return ( + + + + + + + + + + ); +}; diff --git a/ui/v2.5/src/components/PageNotFound.tsx b/ui/v2.5/src/components/PageNotFound.tsx new file mode 100644 index 000000000..8e7cfb32e --- /dev/null +++ b/ui/v2.5/src/components/PageNotFound.tsx @@ -0,0 +1,7 @@ +import React, { FunctionComponent } from "react"; + +export const PageNotFound: FunctionComponent = () => { + return ( +

    Page not found.

    + ); +}; diff --git a/ui/v2.5/src/components/Settings/Settings.tsx b/ui/v2.5/src/components/Settings/Settings.tsx new file mode 100644 index 000000000..61f8294c9 --- /dev/null +++ b/ui/v2.5/src/components/Settings/Settings.tsx @@ -0,0 +1,50 @@ +import { + Card, + Tab, + Tabs, +} from "@blueprintjs/core"; +import queryString from "query-string"; +import React, { FunctionComponent, useEffect, useState } from "react"; +import { IBaseProps } from "../../models"; +import { SettingsAboutPanel } from "./SettingsAboutPanel"; +import { SettingsConfigurationPanel } from "./SettingsConfigurationPanel"; +import { SettingsInterfacePanel } from "./SettingsInterfacePanel"; +import { SettingsLogsPanel } from "./SettingsLogsPanel"; +import { SettingsTasksPanel } from "./SettingsTasksPanel/SettingsTasksPanel"; + +interface IProps extends IBaseProps {} + +type TabId = "configuration" | "tasks" | "logs" | "about"; + +export const Settings: FunctionComponent = (props: IProps) => { + const [tabId, setTabId] = useState(getTabId()); + + useEffect(() => { + const location = Object.assign({}, props.history.location); + location.search = queryString.stringify({tab: tabId}, {encode: false}); + props.history.replace(location); + }, [tabId]); + + function getTabId(): TabId { + const queryParams = queryString.parse(props.location.search); + if (!queryParams.tab || typeof queryParams.tab !== "string") { return "tasks"; } + return queryParams.tab as TabId; + } + + return ( + + setTabId(newId as TabId)} + defaultSelectedTabId={getTabId()} + > + } /> + } /> + } /> + } /> + } /> + + + ); +}; diff --git a/ui/v2.5/src/components/Settings/SettingsAboutPanel.tsx b/ui/v2.5/src/components/Settings/SettingsAboutPanel.tsx new file mode 100644 index 000000000..f995b0552 --- /dev/null +++ b/ui/v2.5/src/components/Settings/SettingsAboutPanel.tsx @@ -0,0 +1,57 @@ +import { + H1, + H4, + H6, + HTMLTable, + Spinner, + Tag, +} from "@blueprintjs/core"; +import React, { FunctionComponent } from "react"; +import * as GQL from "../../core/generated-graphql"; +import { TextUtils } from "../../utils/text"; +import { StashService } from "../../core/StashService"; + +interface IProps {} + +export const SettingsAboutPanel: FunctionComponent = (props: IProps) => { + const { data, error, loading } = StashService.useVersion(); + + function maybeRenderTag() { + if (!data || !data.version || !data.version.version) { return; } + return ( + + Version: + {data.version.version} + + ); + } + + function renderVersion() { + if (!data || !data.version) { return; } + return ( + <> + + + {maybeRenderTag()} + + Build hash: + {data.version.hash} + + + Build time: + {data.version.build_time} + + + + + ); + } + return ( + <> +

    About

    + {!data || loading ? : undefined} + {!!error ? error.message : undefined} + {renderVersion()} + + ); +}; diff --git a/ui/v2.5/src/components/Settings/SettingsConfigurationPanel.tsx b/ui/v2.5/src/components/Settings/SettingsConfigurationPanel.tsx new file mode 100644 index 000000000..bf52604b3 --- /dev/null +++ b/ui/v2.5/src/components/Settings/SettingsConfigurationPanel.tsx @@ -0,0 +1,292 @@ +import { + AnchorButton, + Button, + Divider, + FormGroup, + H1, + H4, + H6, + InputGroup, + Spinner, + Tag, + Checkbox, + HTMLSelect, +} from "@blueprintjs/core"; +import React, { FunctionComponent, useEffect, useState } from "react"; +import * as GQL from "../../core/generated-graphql"; +import { StashService } from "../../core/StashService"; +import { ErrorUtils } from "../../utils/errors"; +import { ToastUtils } from "../../utils/toasts"; +import { FolderSelect } from "../Shared/FolderSelect/FolderSelect"; + +interface IProps {} + +export const SettingsConfigurationPanel: FunctionComponent = (props: IProps) => { + // Editing config state + const [stashes, setStashes] = useState([]); + const [databasePath, setDatabasePath] = useState(undefined); + const [generatedPath, setGeneratedPath] = useState(undefined); + const [maxTranscodeSize, setMaxTranscodeSize] = useState(undefined); + const [maxStreamingTranscodeSize, setMaxStreamingTranscodeSize] = useState(undefined); + const [username, setUsername] = useState(undefined); + const [password, setPassword] = useState(undefined); + const [logFile, setLogFile] = useState(); + const [logOut, setLogOut] = useState(true); + const [logLevel, setLogLevel] = useState("Info"); + const [logAccess, setLogAccess] = useState(true); + const [excludes, setExcludes] = useState<(string)[]>([]); + + const { data, error, loading } = StashService.useConfiguration(); + + const updateGeneralConfig = StashService.useConfigureGeneral({ + stashes, + databasePath, + generatedPath, + maxTranscodeSize, + maxStreamingTranscodeSize, + username, + password, + logFile, + logOut, + logLevel, + logAccess, + excludes, + + }); + + useEffect(() => { + if (!data || !data.configuration || !!error) { return; } + const conf = StashService.nullToUndefined(data.configuration) as GQL.ConfigDataFragment; + if (!!conf.general) { + setStashes(conf.general.stashes || []); + setDatabasePath(conf.general.databasePath); + setGeneratedPath(conf.general.generatedPath); + setMaxTranscodeSize(conf.general.maxTranscodeSize); + setMaxStreamingTranscodeSize(conf.general.maxStreamingTranscodeSize); + setUsername(conf.general.username); + setPassword(conf.general.password); + setLogFile(conf.general.logFile); + setLogOut(conf.general.logOut); + setLogLevel(conf.general.logLevel); + setLogAccess(conf.general.logAccess); + setExcludes(conf.general.excludes); + } + }, [data]); + + function onStashesChanged(directories: string[]) { + setStashes(directories); + } + + function excludeRegexChanged(idx: number, value: string) { + const newExcludes = excludes.map((regex, i)=> { + const ret = ( idx !== i ) ? regex : value ; + return ret + }) + setExcludes(newExcludes); + } + + function excludeRemoveRegex(idx: number) { + const newExcludes = excludes.filter((regex, i) => i!== idx ); + + setExcludes(newExcludes); + } + + function excludeAddRegex() { + const demo = "sample\\.mp4$" + const newExcludes = excludes.concat(demo); + + setExcludes(newExcludes); + } + + + async function onSave() { + try { + const result = await updateGeneralConfig(); + console.log(result); + ToastUtils.success("Updated config"); + } catch (e) { + ErrorUtils.handle(e); + } + } + + const transcodeQualities = [ + GQL.StreamingResolutionEnum.Low, + GQL.StreamingResolutionEnum.Standard, + GQL.StreamingResolutionEnum.StandardHd, + GQL.StreamingResolutionEnum.FullHd, + GQL.StreamingResolutionEnum.FourK, + GQL.StreamingResolutionEnum.Original + ].map(resolutionToString); + + function resolutionToString(r : GQL.StreamingResolutionEnum | undefined) { + switch (r) { + case GQL.StreamingResolutionEnum.Low: return "240p"; + case GQL.StreamingResolutionEnum.Standard: return "480p"; + case GQL.StreamingResolutionEnum.StandardHd: return "720p"; + case GQL.StreamingResolutionEnum.FullHd: return "1080p"; + case GQL.StreamingResolutionEnum.FourK: return "4k"; + case GQL.StreamingResolutionEnum.Original: return "Original"; + } + + return "Original"; + } + + function translateQuality(quality : string) { + switch (quality) { + case "240p": return GQL.StreamingResolutionEnum.Low; + case "480p": return GQL.StreamingResolutionEnum.Standard; + case "720p": return GQL.StreamingResolutionEnum.StandardHd; + case "1080p": return GQL.StreamingResolutionEnum.FullHd; + case "4k": return GQL.StreamingResolutionEnum.FourK; + case "Original": return GQL.StreamingResolutionEnum.Original; + } + + return GQL.StreamingResolutionEnum.Original; + } + + return ( + <> + {!!error ?

    {error.message}

    : undefined} + {(!data || !data.configuration || loading) ? : undefined} +

    Library

    + + + + + + + + + setDatabasePath(e.target.value)} /> + + + + setGeneratedPath(e.target.value)} /> + + + + + { (excludes) ? excludes.map((regexp, i) => { + return( + excludeRegexChanged(i, e.target.value)} + rightElement={ + + ); +}; diff --git a/ui/v2.5/src/components/Settings/SettingsInterfacePanel.tsx b/ui/v2.5/src/components/Settings/SettingsInterfacePanel.tsx new file mode 100644 index 000000000..3fef846ca --- /dev/null +++ b/ui/v2.5/src/components/Settings/SettingsInterfacePanel.tsx @@ -0,0 +1,145 @@ +import { + Button, + Checkbox, + Divider, + FormGroup, + H4, + Spinner, + TextArea, + NumericInput +} from "@blueprintjs/core"; +import _ from "lodash"; +import React, { FunctionComponent, useEffect, useState } from "react"; +import { StashService } from "../../core/StashService"; +import { ErrorUtils } from "../../utils/errors"; +import { ToastUtils } from "../../utils/toasts"; + +interface IProps {} + +export const SettingsInterfacePanel: FunctionComponent = () => { + const config = StashService.useConfiguration(); + const [soundOnPreview, setSoundOnPreview] = useState(); + const [wallShowTitle, setWallShowTitle] = useState(); + const [maximumLoopDuration, setMaximumLoopDuration] = useState(0); + const [autostartVideo, setAutostartVideo] = useState(); + const [showStudioAsText, setShowStudioAsText] = useState(); + const [css, setCSS] = useState(); + const [cssEnabled, setCSSEnabled] = useState(); + + const updateInterfaceConfig = StashService.useConfigureInterface({ + soundOnPreview, + wallShowTitle, + maximumLoopDuration, + autostartVideo, + showStudioAsText, + css, + cssEnabled + }); + + useEffect(() => { + if (!config.data || !config.data.configuration || !!config.error) { return; } + if (!!config.data.configuration.interface) { + let iCfg = config.data.configuration.interface; + setSoundOnPreview(iCfg.soundOnPreview !== undefined ? iCfg.soundOnPreview : true); + setWallShowTitle(iCfg.wallShowTitle !== undefined ? iCfg.wallShowTitle : true); + setMaximumLoopDuration(iCfg.maximumLoopDuration || 0); + setAutostartVideo(iCfg.autostartVideo !== undefined ? iCfg.autostartVideo : false); + setShowStudioAsText(iCfg.showStudioAsText !== undefined ? iCfg.showStudioAsText : false); + setCSS(config.data.configuration.interface.css || ""); + setCSSEnabled(config.data.configuration.interface.cssEnabled || false); + } + }, [config.data]); + + async function onSave() { + try { + const result = await updateInterfaceConfig(); + console.log(result); + ToastUtils.success("Updated config"); + } catch (e) { + ErrorUtils.handle(e); + } + } + + return ( + <> + {!!config.error ?

    {config.error.message}

    : undefined} + {(!config.data || !config.data.configuration || config.loading) ? : undefined} +

    User Interface

    + + setWallShowTitle(!wallShowTitle)} + /> + setSoundOnPreview(!soundOnPreview)} + /> + + + + { + setShowStudioAsText(!showStudioAsText) + }} + /> + + + + { + setAutostartVideo(!autostartVideo) + }} + /> + + + setMaximumLoopDuration(value)} + min={0} + minorStepSize={1} + /> + + + + + { + setCSSEnabled(!cssEnabled) + }} + /> + + + + + + + + ); +}; diff --git a/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx b/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx new file mode 100644 index 000000000..0f3a72337 --- /dev/null +++ b/ui/v2.5/src/components/Settings/SettingsLogsPanel.tsx @@ -0,0 +1,188 @@ +import { + H4, FormGroup, HTMLSelect, +} from "@blueprintjs/core"; +import React, { FunctionComponent, useState, useEffect, useRef } from "react"; +import * as GQL from "../../core/generated-graphql"; +import { StashService } from "../../core/StashService"; + +interface IProps {} + +function convertTime(logEntry : GQL.LogEntryDataFragment) { + function pad(val : number) { + var ret = val.toString(); + if (val <= 9) { + ret = "0" + ret; + } + + return ret; + } + + var date = new Date(logEntry.time); + var month = date.getMonth() + 1; + var day = date.getDate(); + var dateStr = date.getFullYear() + "-" + pad(month) + "-" + pad(day); + dateStr += " " + pad(date.getHours()) + ":" + pad(date.getMinutes()) + ":" + pad(date.getSeconds()); + + return dateStr; +} + +class LogEntry { + public time: string; + public level: string; + public message: string; + public id: string; + + private static nextId: number = 0; + + public constructor(logEntry: GQL.LogEntryDataFragment) { + this.time = convertTime(logEntry); + this.level = logEntry.level; + this.message = logEntry.message; + + var id = LogEntry.nextId++; + this.id = id.toString(); + } +} + +export const SettingsLogsPanel: FunctionComponent = (props: IProps) => { + const { data, error } = StashService.useLoggingSubscribe(); + const { data: existingData } = StashService.useLogs(); + + const logEntries = useRef([]); + const [logLevel, setLogLevel] = useState("Info"); + const [filteredLogEntries, setFilteredLogEntries] = useState([]); + const lastUpdate = useRef(0); + const updateTimeout = useRef(); + + // maximum number of log entries to display. Subsequent entries will truncate + // the list, dropping off the oldest entries first. + const MAX_LOG_ENTRIES = 200; + + function truncateLogEntries(entries : LogEntry[]) { + entries.length = Math.min(entries.length, MAX_LOG_ENTRIES); + } + + function prependLogEntries(toPrepend : LogEntry[]) { + var newLogEntries = toPrepend.concat(logEntries.current); + truncateLogEntries(newLogEntries); + logEntries.current = newLogEntries; + } + + function appendLogEntries(toAppend : LogEntry[]) { + var newLogEntries = logEntries.current.concat(toAppend); + truncateLogEntries(newLogEntries); + logEntries.current = newLogEntries; + } + + useEffect(() => { + if (!data) { return; } + + // append data to the logEntries + var convertedData = data.loggingSubscribe.map(convertLogEntry); + + // filter subscribed data as it comes in, otherwise we'll end up + // truncating stuff that wasn't filtered out + convertedData = convertedData.filter(filterByLogLevel) + + // put newest entries at the top + convertedData.reverse(); + prependLogEntries(convertedData); + + updateFilteredEntries(); + }, [data]); + + useEffect(() => { + if (!existingData || !existingData.logs) { return; } + + var convertedData = existingData.logs.map(convertLogEntry); + appendLogEntries(convertedData); + + updateFilteredEntries(); + }, [existingData]); + + function updateFilteredEntries() { + if (!updateTimeout.current) { + console.log("Updating after timeout"); + } + updateTimeout.current = undefined; + + var filteredEntries = logEntries.current.filter(filterByLogLevel); + setFilteredLogEntries(filteredEntries); + + lastUpdate.current = new Date().getTime(); + } + + useEffect(() => { + updateFilteredEntries(); + }, [logLevel]); + + function convertLogEntry(logEntry : GQL.LogEntryDataFragment) { + return new LogEntry(logEntry); + } + + function levelClass(level : string) { + return level.toLowerCase().trim(); + } + + interface ILogElementProps { + logEntry : LogEntry + } + + function LogElement(props : ILogElementProps) { + // pad to maximum length of level enum + var level = props.logEntry.level.padEnd(GQL.LogLevel.Progress.length); + + return ( + <> + {props.logEntry.time}  + {level}  + {props.logEntry.message} +
    + + ); + } + + function maybeRenderError() { + if (error) { + return ( + <> + Error connecting to log server: {error.message}
    + + ); + } + } + + const logLevels = ["Debug", "Info", "Warning", "Error"]; + + function filterByLogLevel(logEntry : LogEntry) { + if (logLevel == "Debug") { + return true; + } + + var logLevelIndex = logLevels.indexOf(logLevel); + var levelIndex = logLevels.indexOf(logEntry.level); + + return levelIndex >= logLevelIndex; + } + + return ( + <> +

    Logs

    +
    + + setLogLevel(event.target.value)} + value={logLevel} + /> + +
    +
    + {maybeRenderError()} + {filteredLogEntries.map((logEntry) => + + )} +
    + + ); +}; diff --git a/ui/v2.5/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx b/ui/v2.5/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx new file mode 100644 index 000000000..a37bea831 --- /dev/null +++ b/ui/v2.5/src/components/Settings/SettingsTasksPanel/GenerateButton.tsx @@ -0,0 +1,53 @@ +import { + Button, + Checkbox, + FormGroup, +} from "@blueprintjs/core"; +import React, { FunctionComponent, useState } from "react"; +import { StashService } from "../../../core/StashService"; +import { ErrorUtils } from "../../../utils/errors"; +import { ToastUtils } from "../../../utils/toasts"; + +interface IProps {} + +export const GenerateButton: FunctionComponent = () => { + const [sprites, setSprites] = useState(true); + const [previews, setPreviews] = useState(true); + const [markers, setMarkers] = useState(true); + const [transcodes, setTranscodes] = useState(true); + + async function onGenerate() { + try { + await StashService.queryMetadataGenerate({sprites, previews, markers, transcodes}); + ToastUtils.success("Started generating"); + } catch (e) { + ErrorUtils.handle(e); + } + } + + return ( + + setSprites(!sprites)} /> + setPreviews(!previews)} + /> + setMarkers(!markers)} + /> + setTranscodes(!transcodes)} + /> + + ); + } + + function renderSaveButton() { + if (!props.isEditing) { return; } + return ; + } + + function renderDeleteButton() { + if (props.isNew || props.isEditing) { return; } + return ; + } + + function renderImageInput() { + if (!props.isEditing) { return; } + return ( + + Choose image... + + + ) + } + + function renderScraperMenu() { + if (!props.performer) { return; } + if (!props.isEditing) { return; } + + const popover = ( + + +
    + { props.scrapers ? props.scrapers.map((s) => ( +
    props.onDisplayScraperDialog && props.onDisplayScraperDialog(s) }> + {s.name} +
    + )) : ''} +
    +
    +
    + ); + + return ( + + + + ); + } + + function renderAutoTagButton() { + if (props.isNew || props.isEditing) { return; } + if (!!props.onAutoTag) { + return () + } + } + + function renderScenesButton() { + if (props.isEditing) { return; } + let linkSrc: string = "#"; + if (!!props.performer) { + linkSrc = NavigationUtils.makePerformerScenesUrl(props.performer); + } else if (!!props.studio) { + linkSrc = NavigationUtils.makeStudioScenesUrl(props.studio); + } + return ( + + Scenes + + ); + } + + function renderDeleteAlert() { + var name; + + if (props.performer) { + name = props.performer.name; + } + if (props.studio) { + name = props.studio.name; + } + + return ( + + + Are you sure you want to delete {name}? + + + + + + + ); + } + + + return ( + <> + {renderDeleteAlert()} + + + + + ); +}; diff --git a/ui/v2.5/src/components/Shared/DurationInput.tsx b/ui/v2.5/src/components/Shared/DurationInput.tsx new file mode 100644 index 000000000..08663d983 --- /dev/null +++ b/ui/v2.5/src/components/Shared/DurationInput.tsx @@ -0,0 +1,134 @@ +import React, { useState, useEffect } from "react"; +import { Button, ButtonGroup, InputGroup, Form } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { TextUtils } from "../../utils/text"; + +interface IProps { + disabled?: boolean + numericValue: number + onValueChange(valueAsNumber: number): void + onReset?(): void +} + +export const DurationInput: React.FC = (props: IProps) => { + const [value, setValue] = useState(secondsToString(props.numericValue)); + + useEffect(() => { + setValue(secondsToString(props.numericValue)); + }, [props.numericValue]); + + function secondsToString(seconds : number) { + let ret = TextUtils.secondsToTimestamp(seconds); + + if (ret.startsWith("00:")) { + ret = ret.substr(3); + + if (ret.startsWith("0")) { + ret = ret.substr(1); + } + } + + return ret; + } + + function stringToSeconds(v : string) { + if (!v) { + return 0; + } + + let splits = v.split(":"); + + if (splits.length > 3) { + return 0; + } + + let seconds = 0; + let factor = 1; + while(splits.length > 0) { + let thisSplit = splits.pop(); + if (thisSplit === undefined) { + return 0; + } + + let thisInt = parseInt(thisSplit, 10); + if (isNaN(thisInt)) { + return 0; + } + + seconds += factor * thisInt; + factor *= 60; + } + + return seconds; + } + + function increment() { + let seconds = stringToSeconds(value); + seconds += 1; + props.onValueChange(seconds); + } + + function decrement() { + let seconds = stringToSeconds(value); + seconds -= 1; + props.onValueChange(seconds); + } + + function renderButtons() { + return ( + + + + + ) + } + + function onReset() { + if (props.onReset) { + props.onReset(); + } + } + + function maybeRenderReset() { + if (props.onReset) { + return ( + + ) + } + } + + return ( + + + setValue(e.target.value)} + onBlur={() => props.onValueChange(stringToSeconds(value))} + placeholder="hh:mm:ss" + > + {renderButtons()} + + + {maybeRenderReset()} + + + + ) +}; diff --git a/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx b/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx new file mode 100644 index 000000000..56936a43d --- /dev/null +++ b/ui/v2.5/src/components/Shared/FolderSelect/FolderSelect.tsx @@ -0,0 +1,85 @@ +import { Button, InputGroup, Form, Modal, Spinner } from 'react-bootstrap'; +import React, { useEffect, useState } from "react"; +import { StashService } from "../../../core/StashService"; + +interface IProps { + directories: string[]; + onDirectoriesChanged: (directories: string[]) => void; +} + +export const FolderSelect: React.FC = (props: IProps) => { + const [currentDirectory, setCurrentDirectory] = useState(""); + const [isDisplayingDialog, setIsDisplayingDialog] = useState(false); + const [selectedDirectories, setSelectedDirectories] = useState([]); + const { data, error, loading } = StashService.useDirectories(currentDirectory); + + useEffect(() => { + setSelectedDirectories(props.directories); + }, [props.directories]); + + const selectableDirectories:string[] = data && data.directories && !error ? StashService.nullToUndefined(data.directories) : []; + + function onSelectDirectory() { + selectedDirectories.push(currentDirectory); + setSelectedDirectories(selectedDirectories); + setCurrentDirectory(""); + setIsDisplayingDialog(false); + props.onDirectoriesChanged(selectedDirectories); + } + + function onRemoveDirectory(directory: string) { + const newSelectedDirectories = selectedDirectories.filter((dir) => dir !== directory); + setSelectedDirectories(newSelectedDirectories); + props.onDirectoriesChanged(newSelectedDirectories); + } + + function renderDialog() { + return ( + setIsDisplayingDialog(false)} + title="" + > + + Select Directory + + +
    + + setCurrentDirectory(e.target.value)} + defaultValue={currentDirectory} + /> + + {(!data || !data.directories || loading) ? : undefined} + + + + /> + {selectableDirectories.map((path) => { + return
    setCurrentDirectory(path)}>{path}
    ; + })} +
    +
    + + + +
    + ); + } + + return ( + <> + {!!error ?

    {error.message}

    : undefined} + {renderDialog()} + + {selectedDirectories.map((path) => { + return ; + })} + + + + + ); +}; diff --git a/ui/v2.5/src/components/Shared/TagLink.tsx b/ui/v2.5/src/components/Shared/TagLink.tsx new file mode 100644 index 000000000..fbff86926 --- /dev/null +++ b/ui/v2.5/src/components/Shared/TagLink.tsx @@ -0,0 +1,35 @@ +import { Badge } from 'react-bootstrap'; +import React from "react"; +import { Link } from "react-router-dom"; +import { PerformerDataFragment, SceneMarkerDataFragment, TagDataFragment } from "../../core/generated-graphql"; +import { NavigationUtils } from "../../utils/navigation"; +import { TextUtils } from "../../utils/text"; + +interface IProps { + tag?: Partial; + performer?: Partial; + marker?: Partial; +} + +export const TagLink: React.FC = (props: IProps) => { + let link: string = "#"; + let title: string = ""; + if (!!props.tag) { + link = NavigationUtils.makeTagScenesUrl(props.tag); + title = props.tag.name || ""; + } else if (!!props.performer) { + link = NavigationUtils.makePerformerScenesUrl(props.performer); + title = props.performer.name || ""; + } else if (!!props.marker) { + link = NavigationUtils.makeSceneMarkerUrl(props.marker); + title = `${props.marker.title} - ${TextUtils.secondsToTimestamp(props.marker.seconds || 0)}`; + } + return ( + + {title} + + ); +}; diff --git a/ui/v2.5/src/components/Stats.tsx b/ui/v2.5/src/components/Stats.tsx new file mode 100644 index 000000000..9f7cea304 --- /dev/null +++ b/ui/v2.5/src/components/Stats.tsx @@ -0,0 +1,63 @@ +import { Spinner } from 'react-bootstrap'; +import React, { FunctionComponent } from "react"; +import { StashService } from "../core/StashService"; + +export const Stats: FunctionComponent = () => { + const { data, error, loading } = StashService.useStats(); + + function renderStats() { + if (!data || !data.stats) { return; } + return ( + + ); + } + + return ( +
    + {!data || loading ? + + Loading... + : undefined} + {!!error ? error.message : undefined} + {renderStats()} + +

    Notes

    +
    +        {`
    +        This is still an early version, some things are still a work in progress.
    +        `}
    +      
    +
    + ); +}; diff --git a/ui/v2.5/src/components/Studios/StudioCard.tsx b/ui/v2.5/src/components/Studios/StudioCard.tsx new file mode 100644 index 000000000..91d4cc95d --- /dev/null +++ b/ui/v2.5/src/components/Studios/StudioCard.tsx @@ -0,0 +1,28 @@ +import { Card } from 'react-bootstrap'; +import React from "react"; +import { Link } from "react-router-dom"; +import * as GQL from "../../core/generated-graphql"; + +interface IProps { + studio: GQL.StudioDataFragment; +} + +export const StudioCard: React.FC = (props: IProps) => { + return ( + + +
    +

    + {props.studio.name} +

    + {props.studio.scene_count} scenes. +
    +
    + ); +}; diff --git a/ui/v2.5/src/components/Studios/StudioDetails/Studio.tsx b/ui/v2.5/src/components/Studios/StudioDetails/Studio.tsx new file mode 100644 index 000000000..6dac927d9 --- /dev/null +++ b/ui/v2.5/src/components/Studios/StudioDetails/Studio.tsx @@ -0,0 +1,162 @@ +import { Form, Spinner, Table } from 'react-bootstrap'; +import React, { useEffect, useState } from "react"; +import { useParams, useHistory } from 'react-router-dom'; + +import * as GQL from "../../../core/generated-graphql"; +import { StashService } from "../../../core/StashService"; +import { ErrorUtils } from "../../../utils/errors"; +import { TableUtils } from "../../../utils/table"; +import { DetailsEditNavbar } from "../../Shared/DetailsEditNavbar"; +import { ToastUtils } from "../../../utils/toasts"; +import { ImageUtils } from "../../../utils/image"; + +export const Studio: React.FC = () => { + const { id = '' } = useParams(); + const history = useHistory(); + const isNew = id === "new"; + + // Editing state + const [isEditing, setIsEditing] = useState(isNew); + + // Editing studio state + const [image, setImage] = useState(undefined); + const [name, setName] = useState(undefined); + const [url, setUrl] = useState(undefined); + + // Studio state + const [studio, setStudio] = useState>({}); + const [imagePreview, setImagePreview] = useState(undefined); + + const { data, error, loading } = StashService.useFindStudio(id); + const updateStudio = StashService.useStudioUpdate(getStudioInput() as GQL.StudioUpdateInput); + const createStudio = StashService.useStudioCreate(getStudioInput() as GQL.StudioCreateInput); + const deleteStudio = StashService.useStudioDestroy(getStudioInput() as GQL.StudioDestroyInput); + + function updateStudioEditState(state: Partial) { + setName(state.name); + setUrl(state.url); + } + + function updateStudioData(studio:Partial) { + setImage(undefined); + updateStudioEditState(studio); + setImagePreview(studio.image_path); + setStudio(studio); + } + + useEffect(() => { + if (data && data.findStudio) { + setImage(undefined); + updateStudioEditState(data.findStudio); + setImagePreview(data.findStudio.image_path); + setStudio(data.findStudio); + } + }, [data]); + + function onImageLoad(this: FileReader) { + setImagePreview(this.result as string); + setImage(this.result as string); + } + + ImageUtils.addPasteImageHook(onImageLoad); + + if (!isNew && !isEditing) { + if (!data || !data.findStudio || loading) { return ; } + if (!!error) { return <>error...; } + } + + function getStudioInput() { + const input: Partial = { + name, + url, + image, + }; + + if (!isNew) { + (input as GQL.StudioUpdateInput).id = id; + } + return input; + } + + async function onSave() { + try { + if (!isNew) { + const result = await updateStudio(); + updateStudioData(result.data.studioUpdate) + setIsEditing(false); + } else { + const result = await createStudio(); + history.push(`/studios/${result.data.studioCreate.id}`); + } + } catch (e) { + ErrorUtils.handle(e); + } + } + + async function onAutoTag() { + if (!studio || !studio.id) { + return; + } + try { + await StashService.queryMetadataAutoTag({ studios: [studio.id]}); + ToastUtils.success("Started auto tagging"); + } catch (e) { + ErrorUtils.handle(e); + } + } + + async function onDelete() { + try { + await deleteStudio(); + } catch (e) { + ErrorUtils.handle(e); + } + + // redirect to studios page + history.push(`/studios`); + } + + function onImageChange(event: React.FormEvent) { + ImageUtils.onImageChange(event, onImageLoad); + } + + // TODO: CSS class + return ( +
    +
    + +
    +
    + { setIsEditing(!isEditing); updateStudioEditState(studio); }} + onSave={onSave} + onDelete={onDelete} + onAutoTag={onAutoTag} + onImageChange={onImageChange} + /> +

    + { !isEditing + ? {studio.name} + : + Name + setName(event.target.value)} + /> + + } +

    + + + + {TableUtils.renderInputGroup({title: "URL", value: studio.url, isEditing, onChange: (val:string) => setUrl(val)})} + +
    +
    +
    + ); +}; diff --git a/ui/v2.5/src/components/Studios/StudioList.tsx b/ui/v2.5/src/components/Studios/StudioList.tsx new file mode 100644 index 000000000..ef1799b93 --- /dev/null +++ b/ui/v2.5/src/components/Studios/StudioList.tsx @@ -0,0 +1,36 @@ +import _ from "lodash"; +import React, { FunctionComponent } from "react"; +import { QueryHookResult } from "react-apollo-hooks"; +import { FindStudiosQuery, FindStudiosVariables } from "../../core/generated-graphql"; +import { ListHook } from "../../hooks/ListHook"; +import { IBaseProps } from "../../models/base-props"; +import { ListFilterModel } from "../../models/list-filter/filter"; +import { DisplayMode, FilterMode } from "../../models/list-filter/types"; +import { StudioCard } from "./StudioCard"; + +interface IProps extends IBaseProps {} + +export const StudioList: FunctionComponent = (props: IProps) => { + const listData = ListHook.useList({ + filterMode: FilterMode.Studios, + props, + renderContent, + }); + + function renderContent(result: QueryHookResult, filter: ListFilterModel) { + if (!result.data || !result.data.findStudios) { return; } + if (filter.displayMode === DisplayMode.Grid) { + return ( +
    + {result.data.findStudios.studios.map((studio) => ())} +
    + ); + } else if (filter.displayMode === DisplayMode.List) { + return

    TODO

    ; + } else if (filter.displayMode === DisplayMode.Wall) { + return

    TODO

    ; + } + } + + return listData.template; +}; diff --git a/ui/v2.5/src/components/Studios/Studios.tsx b/ui/v2.5/src/components/Studios/Studios.tsx new file mode 100644 index 000000000..5ad65d433 --- /dev/null +++ b/ui/v2.5/src/components/Studios/Studios.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import { Route, Switch } from "react-router-dom"; +import { Studio } from "./StudioDetails/Studio"; +import { StudioList } from "./StudioList"; + +const Studios = () => ( + + + + +); + +export default Studios; diff --git a/ui/v2.5/src/components/Tags/TagList.tsx b/ui/v2.5/src/components/Tags/TagList.tsx new file mode 100644 index 000000000..d12967ebb --- /dev/null +++ b/ui/v2.5/src/components/Tags/TagList.tsx @@ -0,0 +1,143 @@ +import React, { useState } from "react"; +import { Button, Form, Modal, Spinner } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { Link } from "react-router-dom"; +import * as GQL from "../../core/generated-graphql"; +import { StashService } from "../../core/StashService"; +import { ErrorUtils } from "../../utils/errors"; +import { NavigationUtils } from "../../utils/navigation"; +import { ToastUtils } from "../../utils/toasts"; + +export const TagList: React.FC = () => { + // Editing / New state + const [name, setName] = useState(''); + const [editingTag, setEditingTag] = useState | null>(null); + const [deletingTag, setDeletingTag] = useState | null>(null); + + const { data, error } = StashService.useAllTags(); + const updateTag = StashService.useTagUpdate(getTagInput() as GQL.TagUpdateInput); + const createTag = StashService.useTagCreate(getTagInput() as GQL.TagCreateInput); + const deleteTag = StashService.useTagDestroy(getDeleteTagInput() as GQL.TagDestroyInput); + + function getTagInput() { + const tagInput: Partial = { name }; + if (!!editingTag) { (tagInput as Partial).id = editingTag.id; } + return tagInput; + } + + function getDeleteTagInput() { + const tagInput: Partial = {}; + if (deletingTag) { + tagInput.id = deletingTag.id; + } + return tagInput; + } + + async function onEdit() { + try { + if (editingTag && editingTag.id) { + await updateTag(); + ToastUtils.success("Updated tag"); + } else { + await createTag(); + ToastUtils.success("Created tag"); + } + setEditingTag(null); + } catch (e) { + ErrorUtils.handle(e); + } + } + + async function onAutoTag(tag : GQL.TagDataFragment) { + if (!tag) { + return; + } + try { + await StashService.queryMetadataAutoTag({ tags: [tag.id]}); + ToastUtils.success("Started auto tagging"); + } catch (e) { + ErrorUtils.handle(e); + } + } + + async function onDelete() { + try { + await deleteTag(); + ToastUtils.success("Deleted tag"); + setDeletingTag(null); + } catch (e) { + ErrorUtils.handle(e); + } + } + + const deleteAlert = ( + {}} + show={!!deletingTag} + > + + + Are you sure you want to delete {deletingTag && deletingTag.name}? + + +
    + + +
    +
    +
    + ); + + if (!data || !data.allTags) { return ; } + if (!!error) { return <>{error.message}; } + + const tagElements = data.allTags.map((tag) => { + return ( + <> + {deleteAlert} +
    + setEditingTag(tag)}>{tag.name} +
    + + Scenes: {tag.scene_count} + + Markers: {tag.scene_marker_count} + + Total: {(tag.scene_count || 0) + (tag.scene_marker_count || 0)} + +
    +
    + + ); + }); + + return ( +
    + + + {setEditingTag(null)}} + show={!!editingTag} + > + + { editingTag && editingTag.id ? "Edit Tag" : "New Tag" } + + + + Name + setName(newValue.target.value)} + defaultValue={(editingTag && editingTag.name) || ''} + /> + + + + + + + {tagElements} +
    + ); +}; diff --git a/ui/v2.5/src/components/Tags/Tags.tsx b/ui/v2.5/src/components/Tags/Tags.tsx new file mode 100644 index 000000000..9c1f591f9 --- /dev/null +++ b/ui/v2.5/src/components/Tags/Tags.tsx @@ -0,0 +1,11 @@ +import React from "react"; +import { Route, Switch } from "react-router-dom"; +import { TagList } from "./TagList"; + +const Tags = () => ( + + + +); + +export default Tags; diff --git a/ui/v2.5/src/components/Wall/Wall.scss b/ui/v2.5/src/components/Wall/Wall.scss new file mode 100644 index 000000000..803241f16 --- /dev/null +++ b/ui/v2.5/src/components/Wall/Wall.scss @@ -0,0 +1,99 @@ +.wall-overlay { + background-color: rgba(0,0,0,.8); + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1; + pointer-events: none; + transition: transform .5s ease-in-out; +} +.visible { + opacity: 1; + transition: opacity .5s ease-in-out; +} +.hidden { + opacity: 0; + transition: opacity .5s ease-in-out; +} +.visible-unanimated { + opacity: 1; +} +.hidden-unanimated { + opacity: 0; +} + + +.double-scale { + position: absolute; + z-index: 2; + transform: scale(2); + background-color: black; +} + +.double-scale img { + opacity: 0; +} + +.scene-wall-item-container { + display: flex; + justify-content: center; + // align-items: center; + // overflow: hidden; // Commented out since it shows gaps in the wall + position: relative; + width: 100%; + height: 100%; + transition: transform .5s; + max-height: 253px; +} + +.scene-wall-item-container video { + position: absolute; + width: 100%; + height: 100%; + z-index: -1; +} + +.scene-wall-item-text-container { + position: absolute; + font-weight: 700; + color: #444; + padding: 5px; + width: 100%; + bottom: 0; + background: linear-gradient(rgba(255, 255, 255, 0.25), rgba(255, 255, 255, 0.65)); + overflow: hidden; + text-align: center; + + & span { + line-height: 1; + font-weight: 400; + font-size: 10px; + margin: 0 3px; + } +} + +.scene-wall-item-blur { + position: absolute; + top: -5px; + left: -5px; + right: -5px; + bottom: -5px; + /*background-color: rgba(255, 255, 255, 0.75);*/ + /*backdrop-filter: blur(5px);*/ + z-index: -1; +} + +.wall.grid-item video, .wall.grid-item img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.wall.grid-item { + padding: 0 !important; + line-height: 0; + overflow: visible; + position: relative; +} diff --git a/ui/v2.5/src/components/Wall/WallItem.tsx b/ui/v2.5/src/components/Wall/WallItem.tsx new file mode 100644 index 000000000..b7c3c7a64 --- /dev/null +++ b/ui/v2.5/src/components/Wall/WallItem.tsx @@ -0,0 +1,132 @@ +import _ from "lodash"; +import React, { FunctionComponent, useRef, useState, useEffect } from "react"; +import { Link } from "react-router-dom"; +import * as GQL from "../../core/generated-graphql"; +import { VideoHoverHook } from "../../hooks/VideoHover"; +import { TextUtils } from "../../utils/text"; +import { NavigationUtils } from "../../utils/navigation"; +import { StashService } from "../../core/StashService"; + +interface IWallItemProps { + scene?: GQL.SlimSceneDataFragment; + sceneMarker?: GQL.SceneMarkerDataFragment; + origin?: string; + onOverlay: (show: boolean) => void; + clickHandler?: (item: GQL.SlimSceneDataFragment | GQL.SceneMarkerDataFragment) => void; +} + +export const WallItem: FunctionComponent = (props: IWallItemProps) => { + const [videoPath, setVideoPath] = useState(undefined); + const [previewPath, setPreviewPath] = useState(""); + const [screenshotPath, setScreenshotPath] = useState(""); + const [title, setTitle] = useState(""); + const [tags, setTags] = useState([]); + const config = StashService.useConfiguration(); + const videoHoverHook = VideoHoverHook.useVideoHover({resetOnMouseLeave: true}); + const showTextContainer = !!config.data && !!config.data.configuration ? config.data.configuration.interface.wallShowTitle : true; + + function onMouseEnter() { + VideoHoverHook.onMouseEnter(videoHoverHook); + if (!videoPath || videoPath === "") { + if (!!props.sceneMarker) { + setVideoPath(props.sceneMarker.stream || ""); + } else if (!!props.scene) { + setVideoPath(props.scene.paths.preview || ""); + } + } + props.onOverlay(true); + } + const debouncedOnMouseEnter = useRef(_.debounce(onMouseEnter, 500)); + + function onMouseLeave() { + VideoHoverHook.onMouseLeave(videoHoverHook); + setVideoPath(""); + debouncedOnMouseEnter.current.cancel(); + props.onOverlay(false); + } + + function onClick() { + if (props.clickHandler === undefined) { return; } + if (props.scene !== undefined) { + props.clickHandler(props.scene); + } else if (props.sceneMarker !== undefined) { + props.clickHandler(props.sceneMarker); + } + } + + let linkSrc: string = "#"; + if (props.clickHandler === undefined) { + if (props.scene !== undefined) { + linkSrc = `/scenes/${props.scene.id}`; + } else if (props.sceneMarker !== undefined) { + linkSrc = NavigationUtils.makeSceneMarkerUrl(props.sceneMarker); + } + } + + function onTransitionEnd(event: React.TransitionEvent) { + const target = (event.target as any); + if (target.classList.contains("double-scale")) { + target.parentElement.style.zIndex = 10; + } else { + target.parentElement.style.zIndex = null; + } + } + + useEffect(() => { + if (!!props.sceneMarker) { + setPreviewPath(props.sceneMarker.preview); + setTitle(`${props.sceneMarker!.title} - ${TextUtils.secondsToTimestamp(props.sceneMarker.seconds)}`); + const thisTags = props.sceneMarker.tags.map((tag) => ({tag.name})); + thisTags.unshift({props.sceneMarker.primary_tag.name}); + setTags(thisTags); + } else if (!!props.scene) { + setPreviewPath(props.scene.paths.webp || ""); + setScreenshotPath(props.scene.paths.screenshot || ""); + setTitle(props.scene.title || ""); + // tags = props.scene.tags.map((tag) => ({tag.name})); + } + }, [props.sceneMarker, props.scene]); + + function previewNotFound() { + if (previewPath !== screenshotPath) { + setPreviewPath(screenshotPath); + } + } + + const className = ["scene-wall-item-container"]; + if (videoHoverHook.isHovering.current) { className.push("double-scale"); } + const style: React.CSSProperties = {}; + if (!!props.origin) { style.transformOrigin = props.origin; } + return ( +
    +
    debouncedOnMouseEnter.current()} + onMouseMove={() => debouncedOnMouseEnter.current()} + onMouseLeave={onMouseLeave} + > + onClick()} to={linkSrc}> +
    +
    + ); +}; diff --git a/ui/v2.5/src/components/Wall/WallPanel.tsx b/ui/v2.5/src/components/Wall/WallPanel.tsx new file mode 100644 index 000000000..df466f727 --- /dev/null +++ b/ui/v2.5/src/components/Wall/WallPanel.tsx @@ -0,0 +1,89 @@ +import _ from "lodash"; +import React, { FunctionComponent, useState } from "react"; +import * as GQL from "../../core/generated-graphql"; +import "./Wall.scss"; +import { WallItem } from "./WallItem"; + +interface IWallPanelProps { + scenes?: GQL.SlimSceneDataFragment[]; + sceneMarkers?: GQL.SceneMarkerDataFragment[]; + clickHandler?: (item: GQL.SlimSceneDataFragment | GQL.SceneMarkerDataFragment) => void; +} + +export const WallPanel: FunctionComponent = (props: IWallPanelProps) => { + const [showOverlay, setShowOverlay] = useState(false); + + function onOverlay(show: boolean) { + setShowOverlay(show); + } + + function getOrigin(index: number, rowSize: number, total: number): string { + const isAtStart = index % rowSize === 0; + const isAtEnd = index % rowSize === rowSize - 1; + const endRemaining = total % rowSize; + + // First row + if (total === 1) { return "top"; } + if (index === 0) { return "top left"; } + if (index === rowSize - 1 || (total < rowSize && index === total - 1)) { return "top right"; } + if (index < rowSize) { return "top"; } + + // Bottom row + if (isAtEnd && index === total - 1) { return "bottom right"; } + if (isAtStart && index === total - rowSize) { return "bottom left"; } + if (endRemaining !== 0 && index >= total - endRemaining) { return "bottom"; } + if (endRemaining === 0 && index >= total - rowSize) { return "bottom"; } + + // Everything else + if (isAtStart) { return "center left"; } + if (isAtEnd) { return "center right"; } + return "center"; + } + + function maybeRenderScenes() { + if (props.scenes === undefined) { return; } + return props.scenes.map((scene, index) => { + const origin = getOrigin(index, 5, props.scenes!.length); + return ( + + ); + }); + } + + function maybeRenderSceneMarkers() { + if (props.sceneMarkers === undefined) { return; } + return props.sceneMarkers.map((marker, index) => { + const origin = getOrigin(index, 5, props.sceneMarkers!.length); + return ( + + ); + }); + } + + function render() { + const overlayClassName = showOverlay ? "visible" : "hidden"; + return ( + <> +
    +
    + {maybeRenderScenes()} + {maybeRenderSceneMarkers()} +
    + + ); + } + + return render(); +}; diff --git a/ui/v2.5/src/components/list/AddFilter.tsx b/ui/v2.5/src/components/list/AddFilter.tsx new file mode 100644 index 000000000..fd3c9fa78 --- /dev/null +++ b/ui/v2.5/src/components/list/AddFilter.tsx @@ -0,0 +1,218 @@ +import { + Button, + Classes, + Dialog, + FormGroup, + HTMLSelect, + InputGroup, + Tooltip, +} from "@blueprintjs/core"; +import _ from "lodash"; +import React, { FunctionComponent, useEffect, useRef, useState } from "react"; +import { isArray } from "util"; +import { CriterionModifier } from "../../core/generated-graphql"; +import { Criterion, CriterionType } from "../../models/list-filter/criteria/criterion"; +import { NoneCriterion } from "../../models/list-filter/criteria/none"; +import { PerformersCriterion } from "../../models/list-filter/criteria/performers"; +import { StudiosCriterion } from "../../models/list-filter/criteria/studios"; +import { TagsCriterion } from "../../models/list-filter/criteria/tags"; +import { makeCriteria } from "../../models/list-filter/criteria/utils"; +import { ListFilterModel } from "../../models/list-filter/filter"; +import { FilterMultiSelect } from "../select/FilterMultiSelect"; + +interface IAddFilterProps { + onAddCriterion: (criterion: Criterion, oldId?: string) => void; + onCancel: () => void; + filter: ListFilterModel; + editingCriterion?: Criterion; +} + +export const AddFilter: FunctionComponent = (props: IAddFilterProps) => { + const singleValueSelect = useRef(null); + + const [isOpen, setIsOpen] = useState(false); + const [criterion, setCriterion] = useState>(new NoneCriterion()); + + const valueStage = useRef(criterion.value); + + // Configure if we are editing an existing criterion + useEffect(() => { + if (!props.editingCriterion) { return; } + setIsOpen(true); + setCriterion(props.editingCriterion); + }, [props.editingCriterion]); + + function onChangedCriteriaType(event: React.ChangeEvent) { + const newCriterionType = event.target.value as CriterionType; + const newCriterion = makeCriteria(newCriterionType); + setCriterion(newCriterion); + } + + function onChangedModifierSelect(event: React.ChangeEvent) { + const newCriterion = _.cloneDeep(criterion); + newCriterion.modifier = event.target.value as any; + setCriterion(newCriterion); + } + + function onChangedSingleSelect(event: React.ChangeEvent) { + const newCriterion = _.cloneDeep(criterion); + newCriterion.value = event.target.value; + setCriterion(newCriterion); + } + + function onChangedInput(event: React.ChangeEvent) { + valueStage.current = event.target.value; + } + + function onBlurInput() { + const newCriterion = _.cloneDeep(criterion); + newCriterion.value = valueStage.current; + setCriterion(newCriterion); + } + + function onAddFilter() { + if (!isArray(criterion.value) && !!singleValueSelect.current) { + const value = singleValueSelect.current.props.defaultValue; + if (criterion.options && (value === undefined || value === "" || typeof value === "number")) { + criterion.value = criterion.options[0]; + } else if (typeof value === "number" && value === undefined) { + criterion.value = 0; + } else if (value === undefined) { + criterion.value = ""; + } + } + const oldId = !!props.editingCriterion ? props.editingCriterion.getId() : undefined; + props.onAddCriterion(criterion, oldId); + onToggle(); + } + + function onToggle() { + if (isOpen) { + props.onCancel(); + } + setIsOpen(!isOpen); + setCriterion(makeCriteria()); + } + + const maybeRenderFilterPopoverContents = () => { + if (criterion.type === "none") { return; } + + function renderModifier() { + if (criterion.modifierOptions.length === 0) { return; } + return ( +
    + +
    + ); + } + + function renderSelect() { + // Hide the value select if the modifier is "IsNull" or "NotNull" + if (criterion.modifier === CriterionModifier.IsNull || criterion.modifier === CriterionModifier.NotNull) { + return; + } + + if (isArray(criterion.value)) { + let type: "performers" | "studios" | "tags" | "" = ""; + if (criterion instanceof PerformersCriterion) { + type = "performers"; + } else if (criterion instanceof StudiosCriterion) { + type = "studios"; + } else if (criterion instanceof TagsCriterion) { + type = "tags"; + } + + if (type === "") { + return (<>todo); + } else { + return ( + criterion.value = items.map((i) => ({id: i.id, label: i.name!}))} + openOnKeyDown={true} + initialIds={criterion.value.map((labeled: any) => labeled.id)} + /> + ); + } + } else { + if (criterion.options) { + return ( + + ); + } else { + return ( + + ) + } + } + } + return ( + <> + + {renderModifier()} + + + {renderSelect()} + + + ); + }; + + function maybeRenderFilterSelect() { + if (!!props.editingCriterion) { return; } + return ( + + + + ); + } + + const title = !props.editingCriterion ? "Add Filter" : "Update Filter"; + return ( + <> + + + + + onToggle()} title={title}> +
    + {maybeRenderFilterSelect()} + {maybeRenderFilterPopoverContents()} +
    +
    +
    + +
    +
    +
    + + ); +}; diff --git a/ui/v2.5/src/components/list/ListFilter.tsx b/ui/v2.5/src/components/list/ListFilter.tsx new file mode 100644 index 000000000..9524ea896 --- /dev/null +++ b/ui/v2.5/src/components/list/ListFilter.tsx @@ -0,0 +1,290 @@ +import { + Button, + ButtonGroup, + HTMLSelect, + InputGroup, + Menu, + MenuItem, + Popover, + Tag, + Tooltip, + Slider, +} from "@blueprintjs/core"; +import { debounce } from "lodash"; +import React, { FunctionComponent, SyntheticEvent, useEffect, useState } from "react"; +import { Criterion } from "../../models/list-filter/criteria/criterion"; +import { ListFilterModel } from "../../models/list-filter/filter"; +import { DisplayMode } from "../../models/list-filter/types"; +import { AddFilter } from "./AddFilter"; + +interface IListFilterOperation { + text: string; + onClick: () => void; +} + +interface IListFilterProps { + onChangePageSize: (pageSize: number) => void; + onChangeQuery: (query: string) => void; + onChangeSortDirection: (sortDirection: "asc" | "desc") => void; + onChangeSortBy: (sortBy: string) => void; + onChangeDisplayMode: (displayMode: DisplayMode) => void; + onAddCriterion: (criterion: Criterion, oldId?: string) => void; + onRemoveCriterion: (criterion: Criterion) => void; + zoomIndex?: number; + onChangeZoom?: (zoomIndex: number) => void; + onSelectAll?: () => void; + onSelectNone?: () => void; + otherOperations?: IListFilterOperation[]; + filter: ListFilterModel; +} + +const PAGE_SIZE_OPTIONS = ["20", "40", "60", "120"]; + +export const ListFilter: FunctionComponent = (props: IListFilterProps) => { + let searchCallback: any; + + const [editingCriterion, setEditingCriterion] = useState(undefined); + + useEffect(() => { + searchCallback = debounce((event: any) => { + props.onChangeQuery(event.target.value); + }, 500); + }); + + function onChangePageSize(event: SyntheticEvent) { + const val = event!.currentTarget!.value; + props.onChangePageSize(parseInt(val, 10)); + } + + function onChangeQuery(event: SyntheticEvent) { + event.persist(); + searchCallback(event); + } + + function onChangeSortDirection(_: any) { + if (props.filter.sortDirection === "asc") { + props.onChangeSortDirection("desc"); + } else { + props.onChangeSortDirection("asc"); + } + } + + function onChangeSortBy(event: React.MouseEvent) { + props.onChangeSortBy(event.currentTarget.text); + } + + function onChangeDisplayMode(displayMode: DisplayMode) { + props.onChangeDisplayMode(displayMode); + } + + function onAddCriterion(criterion: Criterion, oldId?: string) { + props.onAddCriterion(criterion, oldId); + } + + function onCancelAddCriterion() { + setEditingCriterion(undefined); + } + + let removedCriterionId = ""; + function onRemoveCriterionTag(criterion?: Criterion) { + if (!criterion) { return; } + setEditingCriterion(undefined); + removedCriterionId = criterion.getId(); + props.onRemoveCriterion(criterion); + } + function onClickCriterionTag(criterion?: Criterion) { + if (!criterion || removedCriterionId !== "") { return; } + setEditingCriterion(criterion); + } + + function renderSortByOptions() { + return props.filter.sortByOptions.map((option) => ( + + )); + } + + function renderDisplayModeOptions() { + function getIcon(option: DisplayMode) { + switch (option) { + case DisplayMode.Grid: return "grid-view"; + case DisplayMode.List: return "list"; + case DisplayMode.Wall: return "symbol-square"; + } + } + function getLabel(option: DisplayMode) { + switch (option) { + case DisplayMode.Grid: return "Grid"; + case DisplayMode.List: return "List"; + case DisplayMode.Wall: return "Wall"; + } + } + return props.filter.displayModeOptions.map((option) => ( + + + {renderSortByOptions()} + + + +
    +
    + {renderFilterTags()} +
    + + ); + } + + return render(); +}; diff --git a/ui/v2.5/src/components/list/Pagination.tsx b/ui/v2.5/src/components/list/Pagination.tsx new file mode 100644 index 000000000..057e9c0a4 --- /dev/null +++ b/ui/v2.5/src/components/list/Pagination.tsx @@ -0,0 +1,119 @@ +import { Button, ButtonGroup } from "@blueprintjs/core"; +import React from "react"; + +interface IPaginationProps { + itemsPerPage: number; + currentPage: number; + totalItems: number; + onChangePage: (page: number) => void; +} + +interface IPaginationState { + pages: number[]; + totalPages: number; +} + +export class Pagination extends React.Component { + constructor(props: IPaginationProps) { + super(props); + this.state = { + pages: [], + totalPages: Number.MAX_SAFE_INTEGER, + }; + } + + public componentWillMount() { + this.setPage(this.props.currentPage, false); + } + + public componentDidUpdate(prevProps: IPaginationProps) { + if (this.props.totalItems !== prevProps.totalItems || this.props.itemsPerPage !== prevProps.itemsPerPage) { + this.setPage(this.props.currentPage); + } + } + + public render() { + if (!this.state || !this.state.pages || this.state.pages.length <= 1) { return null; } + + return ( + + + + + ); + } + + function urlScrapable(url: string) : boolean { + return !!url && !!Scrapers.data && Scrapers.data.listPerformerScrapers && Scrapers.data.listPerformerScrapers.some((s) => { + return !!s.performer && !!s.performer.urls && s.performer.urls.some((u) => { return url.includes(u); }); + }); + } + + function maybeRenderScrapeButton() { + if (!url || !isEditing || !urlScrapable(url)) { + return undefined; + } + return ( + + ) + } + + function renderURLField() { + return ( + + + URL + {maybeRenderScrapeButton()} + + + {EditableTextUtils.renderInputGroup({ + value: url, isEditing, onChange: setUrl, placeholder: "URL" + })} + + + ); + } + + return ( + <> + {renderScraperDialog()} +
    +
    + +
    +
    + { setIsEditing(!isEditing); updatePerformerEditState(performer); }} + onSave={onSave} + onDelete={onDelete} + onImageChange={onImageChange} + scrapers={queryableScrapers} + onDisplayScraperDialog={onDisplayFreeOnesDialog} + onAutoTag={onAutoTag} + /> +

    + { !isEditing + ? {name} + : setName(event.target.value)} /> + } +

    +
    + + Aliases: + {EditableTextUtils.renderInputGroup({ + value: aliases, isEditing: isEditing, placeholder: "Aliases", onChange: setAliases + })} + +
    +
    + Favorite: + +
    + + + + {TableUtils.renderInputGroup( + {title: "Birthdate (YYYY-MM-DD)", value: birthdate, isEditing, onChange: setBirthdate})} + {renderEthnicity()} + {TableUtils.renderInputGroup( + {title: "Eye Color", value: eyeColor, isEditing, onChange: setEyeColor})} + {TableUtils.renderInputGroup( + {title: "Country", value: country, isEditing, onChange: setCountry})} + {TableUtils.renderInputGroup( + {title: "Height (CM)", value: height, isEditing, onChange: setHeight})} + {TableUtils.renderInputGroup( + {title: "Measurements", value: measurements, isEditing, onChange: setMeasurements})} + {TableUtils.renderInputGroup( + {title: "Fake Tits", value: fakeTits, isEditing, onChange: setFakeTits})} + {TableUtils.renderInputGroup( + {title: "Career Length", value: careerLength, isEditing, onChange: setCareerLength})} + {TableUtils.renderInputGroup( + {title: "Tattoos", value: tattoos, isEditing, onChange: setTattoos})} + {TableUtils.renderInputGroup( + {title: "Piercings", value: piercings, isEditing, onChange: setPiercings})} + {renderURLField()} + {TableUtils.renderInputGroup( + {title: "Twitter", value: twitter, isEditing, onChange: setTwitter})} + {TableUtils.renderInputGroup( + {title: "Instagram", value: instagram, isEditing, onChange: setInstagram})} + +
    +
    +
    + + ); +}; diff --git a/ui/v2.5/src/components/performers/PerformerList.tsx b/ui/v2.5/src/components/performers/PerformerList.tsx new file mode 100644 index 000000000..5fff1edb0 --- /dev/null +++ b/ui/v2.5/src/components/performers/PerformerList.tsx @@ -0,0 +1,62 @@ +import _ from "lodash"; +import React, { FunctionComponent } from "react"; +import { QueryHookResult } from "react-apollo-hooks"; +import { FindPerformersQuery, FindPerformersVariables } from "../../core/generated-graphql"; +import { ListHook } from "../../hooks/ListHook"; +import { IBaseProps } from "../../models/base-props"; +import { ListFilterModel } from "../../models/list-filter/filter"; +import { DisplayMode, FilterMode } from "../../models/list-filter/types"; +import { PerformerCard } from "./PerformerCard"; +import { PerformerListTable } from "./PerformerListTable"; +import { StashService } from "../../core/StashService"; + +interface IPerformerListProps extends IBaseProps {} + +export const PerformerList: FunctionComponent = (props: IPerformerListProps) => { + const otherOperations = [ + { + text: "Open Random", + onClick: getRandom, + } + ]; + + const listData = ListHook.useList({ + filterMode: FilterMode.Performers, + props, + otherOperations: otherOperations, + renderContent, + }); + + async function getRandom(result: QueryHookResult, filter: ListFilterModel) { + if (result.data && result.data.findPerformers) { + let count = result.data.findPerformers.count; + let index = Math.floor(Math.random() * count); + let filterCopy = _.cloneDeep(filter); + filterCopy.itemsPerPage = 1; + filterCopy.currentPage = index + 1; + const singleResult = await StashService.queryFindPerformers(filterCopy); + if (singleResult && singleResult.data && singleResult.data.findPerformers && singleResult.data.findPerformers.performers.length === 1) { + let id = singleResult!.data!.findPerformers!.performers[0]!.id; + props.history.push("/performers/" + id); + } + } + } + + function renderContent( + result: QueryHookResult, filter: ListFilterModel) { + if (!result.data || !result.data.findPerformers) { return; } + if (filter.displayMode === DisplayMode.Grid) { + return ( +
    + {result.data.findPerformers.performers.map((p) => ())} +
    + ); + } else if (filter.displayMode === DisplayMode.List) { + return ; + } else if (filter.displayMode === DisplayMode.Wall) { + return; + } + } + + return listData.template; +}; diff --git a/ui/v2.5/src/components/performers/PerformerListTable.tsx b/ui/v2.5/src/components/performers/PerformerListTable.tsx new file mode 100644 index 000000000..fc25cdd25 --- /dev/null +++ b/ui/v2.5/src/components/performers/PerformerListTable.tsx @@ -0,0 +1,100 @@ +import React from "react"; +import { Button, Table } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { Link } from "react-router-dom"; +import * as GQL from "../../core/generated-graphql"; +import { NavigationUtils } from "../../utils/navigation"; + +interface IPerformerListTableProps { + performers: GQL.PerformerDataFragment[]; +} + +export const PerformerListTable: React.FC = (props: IPerformerListTableProps) => { + + function maybeRenderFavoriteHeart(performer : GQL.PerformerDataFragment) { + if (!performer.favorite) { return; } + return ( + + ); + } + + function renderPerformerImage(performer : GQL.PerformerDataFragment) { + const style: React.CSSProperties = { + backgroundImage: `url('${performer.image_path}')`, + lineHeight: 5, + backgroundSize: "contain", + display: "inline-block", + backgroundPosition: "center", + backgroundRepeat: "no-repeat", + }; + + return ( + + ) + } + + function renderPerformerRow(performer : GQL.PerformerDataFragment) { + return ( + <> + + + {renderPerformerImage(performer)} + + + +
    + {performer.name} +
    + + + + {performer.aliases ? performer.aliases : ''} + + + {maybeRenderFavoriteHeart(performer)} + + + +
    {performer.scene_count}
    + + + + {performer.birthdate} + + + {performer.height} + + + + ) + } + + return ( + <> +
    + + + + + + + + + + + + + + {props.performers.map(renderPerformerRow)} + +
    NameAliasesFavouriteScene CountBirthdateHeight
    +
    + + ); +}; + diff --git a/ui/v2.5/src/components/performers/performers.tsx b/ui/v2.5/src/components/performers/performers.tsx new file mode 100644 index 000000000..e6a2347c8 --- /dev/null +++ b/ui/v2.5/src/components/performers/performers.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import { Route, Switch } from "react-router-dom"; +import { Performer } from "./PerformerDetails/Performer"; +import { PerformerList } from "./PerformerList"; + +const Performers = () => ( + + + + +); + +export default Performers; diff --git a/ui/v2.5/src/components/scenes/SceneCard.tsx b/ui/v2.5/src/components/scenes/SceneCard.tsx new file mode 100644 index 000000000..8f8a47658 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneCard.tsx @@ -0,0 +1,241 @@ +import { Button, ButtonGroup, Card, Form, Popover, OverlayTrigger } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import React, { useState } from "react"; +import { Link } from "react-router-dom"; +import * as GQL from "../../core/generated-graphql"; +import { VideoHoverHook } from "../../hooks/VideoHover"; +import { ColorUtils } from "../../utils/color"; +import { TextUtils } from "../../utils/text"; +import { TagLink } from "../Shared/TagLink"; +import { ZoomUtils } from "../../utils/zoom"; +import { StashService } from "../../core/StashService"; + +interface ISceneCardProps { + scene: GQL.SlimSceneDataFragment; + selected: boolean | undefined; + zoomIndex: number; + onSelectedChanged: (selected : boolean, shiftKey : boolean) => void; +} + +export const SceneCard: React.FC = (props: ISceneCardProps) => { + const [previewPath, setPreviewPath] = useState(undefined); + const videoHoverHook = VideoHoverHook.useVideoHover({resetOnMouseLeave: false}); + + const config = StashService.useConfiguration(); + const showStudioAsText = !!config.data && !!config.data.configuration ? config.data.configuration.interface.showStudioAsText : false; + + function maybeRenderRatingBanner() { + if (!props.scene.rating) { return; } + return ( +
    + RATING: {props.scene.rating} +
    + ); + } + + function maybeRenderSceneSpecsOverlay() { + return ( +
    + {!!props.scene.file.height ? {TextUtils.resolution(props.scene.file.height)} : undefined} + {props.scene.file.duration !== undefined && props.scene.file.duration >= 1 ? TextUtils.secondsToTimestamp(props.scene.file.duration) : ""} +
    + ); + } + + function maybeRenderSceneStudioOverlay() { + if (!props.scene.studio) { + return; + } + + let style: React.CSSProperties = { + backgroundImage: `url('${props.scene.studio.image_path}')`, + }; + + let text = ""; + + if (showStudioAsText) { + style = {}; + text = props.scene.studio.name; + } + + return ( +
    + + {text} + +
    + ); + } + + function maybeRenderTagPopoverButton() { + if (props.scene.tags.length <= 0) { return; } + + const popover = ( + + { props.scene.tags.map((tag) => ( + + )) } + + ); + + return ( + + + + ); + } + + function maybeRenderPerformerPopoverButton() { + if (props.scene.performers.length <= 0) { return; } + + const popover = ( + + { + props.scene.performers.map((performer) => { + return ( +
    + + +
    + ); + }) + } +
    + ); + + return ( + + + + ); + } + + function maybeRenderSceneMarkerPopoverButton() { + if (props.scene.scene_markers.length <= 0) + return; + + const popover = ( + + { props.scene.scene_markers.map((marker) => { + (marker as any).scene = {}; + (marker as any).scene.id = props.scene.id; + return ; + }) } + + ); + + return ( + + + + ); + } + + function maybeRenderPopoverButtonGroup() { + if (props.scene.tags.length > 0 || + props.scene.performers.length > 0 || + props.scene.scene_markers.length > 0) { + return ( + <> +
    + + {maybeRenderTagPopoverButton()} + {maybeRenderPerformerPopoverButton()} + {maybeRenderSceneMarkerPopoverButton()} + + + ); + } + } + + function onMouseEnter() { + if (!previewPath || previewPath === "") { + setPreviewPath(props.scene.paths.preview || ""); + } + VideoHoverHook.onMouseEnter(videoHoverHook); + } + function onMouseLeave() { + VideoHoverHook.onMouseLeave(videoHoverHook); + setPreviewPath(""); + } + + function isPortrait() { + let file = props.scene.file; + let width = file.width ? file.width : 0; + let height = file.height ? file.height : 0; + return height > width; + } + + function getLinkClassName() { + let ret = "image previewable"; + + if (isPortrait()) { + ret += " portrait"; + } + + return ret; + } + + function getVideoClassName() { + let ret = "preview"; + + if (isPortrait()) { + ret += " portrait"; + } + + return ret; + } + + var shiftKey = false; + + return ( + + props.onSelectedChanged(!props.selected, shiftKey)} + onClick={(event: React.MouseEvent) => { shiftKey = event.shiftKey; event.stopPropagation(); } } + /> + +
    + {maybeRenderRatingBanner()} + {maybeRenderSceneSpecsOverlay()} + {maybeRenderSceneStudioOverlay()} + +
    + +
    +

    + {!!props.scene.title ? props.scene.title : TextUtils.fileNameFromPath(props.scene.path)} +

    + {props.scene.date} +

    {TextUtils.truncate(props.scene.details, 100, "... (continued)")}

    +
    + + {maybeRenderPopoverButtonGroup()} +
    + ); +}; diff --git a/ui/v2.5/src/components/scenes/SceneDetails/Scene.tsx b/ui/v2.5/src/components/scenes/SceneDetails/Scene.tsx new file mode 100644 index 000000000..7427f5a75 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneDetails/Scene.tsx @@ -0,0 +1,95 @@ +import { Card, Spinner, Tab, Tabs } from 'react-bootstrap'; +import queryString from "query-string"; +import React, { FunctionComponent, useEffect, useState } from "react"; +import * as GQL from "../../../core/generated-graphql"; +import { StashService } from "../../../core/StashService"; +import { IBaseProps } from "../../../models"; +import { GalleryViewer } from "../../Galleries/GalleryViewer"; +import { ScenePlayer } from "../ScenePlayer/ScenePlayer"; +import { SceneDetailPanel } from "./SceneDetailPanel"; +import { SceneEditPanel } from "./SceneEditPanel"; +import { SceneFileInfoPanel } from "./SceneFileInfoPanel"; +import { SceneMarkersPanel } from "./SceneMarkersPanel"; +import { ScenePerformerPanel } from "./ScenePerformerPanel"; + +interface ISceneProps extends IBaseProps {} + +export const Scene: FunctionComponent = (props: ISceneProps) => { + const [timestamp, setTimestamp] = useState(0); + const [autoplay, setAutoplay] = useState(false); + const [scene, setScene] = useState>({}); + const [isLoading, setIsLoading] = useState(false); + const { data, error, loading } = StashService.useFindScene(props.match.params.id); + + useEffect(() => { + setIsLoading(loading); + if (!data || !data.findScene || !!error) { return; } + setScene(StashService.nullToUndefined(data.findScene)); + }, [data]); + + useEffect(() => { + const queryParams = queryString.parse(props.location.search); + if (!!queryParams.t && typeof queryParams.t === "string" && timestamp === 0) { + const newTimestamp = parseInt(queryParams.t, 10); + setTimestamp(newTimestamp); + } + if (queryParams.autoplay && typeof queryParams.autoplay === "string") { + setAutoplay(queryParams.autoplay === "true"); + } + }); + + function onClickMarker(marker: GQL.SceneMarkerDataFragment) { + setTimestamp(marker.seconds); + } + + if (!data || !data.findScene || isLoading || Object.keys(scene).length === 0) { + return ; + } + const modifiedScene = + Object.assign({scene_marker_tags: data.sceneMarkerTags}, scene) as GQL.SceneDataFragment; // TODO Hack from angular + if (!!error) { return <>error...; } + + return ( + <> + + + + + + + + + + {modifiedScene.performers.length > 0 ? + + + : '' + } + {!!modifiedScene.gallery ? + + + : '' + } + + + + + setScene(newScene)} + onDelete={() => props.history.push("/scenes")} + /> + + + + + ); +}; diff --git a/ui/v2.5/src/components/scenes/SceneDetails/SceneDetailPanel.tsx b/ui/v2.5/src/components/scenes/SceneDetails/SceneDetailPanel.tsx new file mode 100644 index 000000000..cbdba0872 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneDetails/SceneDetailPanel.tsx @@ -0,0 +1,48 @@ +import React from "react"; +import * as GQL from "../../../core/generated-graphql"; +import { TextUtils } from "../../../utils/text"; +import { TagLink } from "../../Shared/TagLink"; +import { SceneHelpers } from "../helpers"; + +interface ISceneDetailProps { + scene: GQL.SceneDataFragment; +} + +export const SceneDetailPanel: React.FC = (props: ISceneDetailProps) => { + function renderDetails() { + if (!props.scene.details || props.scene.details === "") { return; } + return ( + <> +
    Details
    +

    {props.scene.details}

    + + ); + } + + function renderTags() { + if (props.scene.tags.length === 0) { return; } + const tags = props.scene.tags.map((tag) => ( + + )); + return ( + <> +
    Tags
    + {tags} + + ); + } + + return ( + <> + {SceneHelpers.maybeRenderStudio(props.scene, 70)} +

    + {!!props.scene.title ? props.scene.title : TextUtils.fileNameFromPath(props.scene.path)} +

    + {!!props.scene.date ?

    {props.scene.date}

    : undefined} + {!!props.scene.rating ?
    Rating: {props.scene.rating}
    : undefined} + {!!props.scene.file.height ?
    Resolution: {TextUtils.resolution(props.scene.file.height)}
    : undefined} + {renderDetails()} + {renderTags()} + + ); +}; diff --git a/ui/v2.5/src/components/scenes/SceneDetails/SceneEditPanel.tsx b/ui/v2.5/src/components/scenes/SceneDetails/SceneEditPanel.tsx new file mode 100644 index 000000000..e446da27a --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneDetails/SceneEditPanel.tsx @@ -0,0 +1,393 @@ +import React, { useEffect, useState } from "react"; +import * as GQL from "../../../core/generated-graphql"; +import { StashService } from "../../../core/StashService"; +import { ErrorUtils } from "../../../utils/errors"; +import { ToastUtils } from "../../../utils/toasts"; +import { FilterMultiSelect } from "../../select/FilterMultiSelect"; +import { FilterSelect } from "../../select/FilterSelect"; +import { ValidGalleriesSelect } from "../../select/ValidGalleriesSelect"; +import { ImageUtils } from "../../../utils/image"; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { Collapse, Dropdown, DropdownButton, Form, Button, Modal, Spinner } from 'react-bootstrap'; + +interface IProps { + scene: GQL.SceneDataFragment; + onUpdate: (scene: GQL.SceneDataFragment) => void; + onDelete: () => void; +} + +export const SceneEditPanel: React.FC = (props: IProps) => { + const [title, setTitle] = useState(undefined); + const [details, setDetails] = useState(undefined); + const [url, setUrl] = useState(undefined); + const [date, setDate] = useState(undefined); + const [rating, setRating] = useState(undefined); + const [galleryId, setGalleryId] = useState(undefined); + const [studioId, setStudioId] = useState(undefined); + const [performerIds, setPerformerIds] = useState(undefined); + const [tagIds, setTagIds] = useState(undefined); + const [coverImage, setCoverImage] = useState(undefined); + + const Scrapers = StashService.useListSceneScrapers(); + const [queryableScrapers, setQueryableScrapers] = useState([]); + + const [isDeleteAlertOpen, setIsDeleteAlertOpen] = useState(false); + const [deleteFile, setDeleteFile] = useState(false); + const [deleteGenerated, setDeleteGenerated] = useState(true); + + const [isCoverImageOpen, setIsCoverImageOpen] = useState(false); + const [coverImagePreview, setCoverImagePreview] = useState(undefined); + + // Network state + const [isLoading, setIsLoading] = useState(false); + + const updateScene = StashService.useSceneUpdate(getSceneInput()); + const deleteScene = StashService.useSceneDestroy(getSceneDeleteInput()); + + useEffect(() => { + var newQueryableScrapers : GQL.ListSceneScrapersListSceneScrapers[] = []; + + if (!!Scrapers.data && Scrapers.data.listSceneScrapers) { + newQueryableScrapers = Scrapers.data.listSceneScrapers.filter((s) => { + return s.scene && s.scene.supported_scrapes.includes(GQL.ScrapeType.Fragment); + }); + } + + setQueryableScrapers(newQueryableScrapers); + + }, [Scrapers.data]) + + function updateSceneEditState(state: Partial) { + const perfIds = !!state.performers ? state.performers.map((performer) => performer.id) : undefined; + const tIds = !!state.tags ? state.tags.map((tag) => tag.id) : undefined; + + setTitle(state.title); + setDetails(state.details); + setUrl(state.url); + setDate(state.date); + setRating(state.rating === null ? NaN : state.rating); + setGalleryId(state.gallery ? state.gallery.id : undefined); + setStudioId(state.studio ? state.studio.id : undefined); + setPerformerIds(perfIds); + setTagIds(tIds); + } + + useEffect(() => { + updateSceneEditState(props.scene); + setCoverImagePreview(props.scene.paths.screenshot); + }, [props.scene]); + + ImageUtils.addPasteImageHook(onImageLoad); + + function getSceneInput(): GQL.SceneUpdateInput { + return { + id: props.scene.id, + title, + details, + url, + date, + rating, + gallery_id: galleryId, + studio_id: studioId, + performer_ids: performerIds, + tag_ids: tagIds, + cover_image: coverImage, + }; + } + + async function onSave() { + setIsLoading(true); + try { + const result = await updateScene(); + props.onUpdate(result.data.sceneUpdate); + ToastUtils.success("Updated scene"); + } catch (e) { + ErrorUtils.handle(e); + } + setIsLoading(false); + } + + function getSceneDeleteInput(): GQL.SceneDestroyInput { + return { + id: props.scene.id, + delete_file: deleteFile, + delete_generated: deleteGenerated + }; + } + + async function onDelete() { + setIsDeleteAlertOpen(false); + setIsLoading(true); + try { + await deleteScene(); + ToastUtils.success("Deleted scene"); + } catch (e) { + ErrorUtils.handle(e); + } + setIsLoading(false); + + props.onDelete(); + } + + function renderMultiSelect(type: "performers" | "tags", initialIds: string[] | undefined) { + return ( + { + const ids = items.map((i) => i.id); + switch (type) { + case "performers": setPerformerIds(ids); break; + case "tags": setTagIds(ids); break; + } + }} + initialIds={initialIds} + /> + ); + } + + function renderDeleteAlert() { + return ( + {}} + show={isDeleteAlertOpen} + > + + + Delete Scene? + + +

    + Are you sure you want to delete this scene? Unless the file is also deleted, this scene will be re-added when scan is performed. +

    +
    + setDeleteFile(!deleteFile)} /> + setDeleteGenerated(!deleteGenerated)} /> + +
    + + +
    + + +
    +
    +
    + ); + } + + function onImageLoad(this: FileReader) { + setCoverImagePreview(this.result as string); + setCoverImage(this.result as string); + } + + function onCoverImageChange(event: React.FormEvent) { + ImageUtils.onImageChange(event, onImageLoad); + } + + async function onScrapeClicked(scraper : GQL.ListSceneScrapersListSceneScrapers) { + setIsLoading(true); + try { + const result = await StashService.queryScrapeScene(scraper.id, getSceneInput()); + if (!result.data || !result.data.scrapeScene) { return; } + updateSceneFromScrapedScene(result.data.scrapeScene); + } catch (e) { + ErrorUtils.handle(e); + } finally { + setIsLoading(false); + } + } + + function renderScraperMenu() { + if (!queryableScrapers || queryableScrapers.length === 0) { + return; + } + + return ( + + { queryableScrapers.map(s => ( + onScrapeClicked(s)}>{s.name} + )) + } + + ); + } + + function urlScrapable(url: string) : boolean { + return !!url && !!Scrapers.data && Scrapers.data.listSceneScrapers && Scrapers.data.listSceneScrapers.some((s) => { + return !!s.scene && !!s.scene.urls && s.scene.urls.some((u) => { return url.includes(u); }); + }); + } + + function updateSceneFromScrapedScene(scene : GQL.ScrapedSceneDataFragment) { + if (!title && scene.title) { + setTitle(scene.title); + } + + if (!details && scene.details) { + setDetails(scene.details); + } + + if (!date && scene.date) { + setDate(scene.date); + } + + if (!url && scene.url) { + setUrl(scene.url); + } + + if (!studioId && scene.studio && scene.studio.id) { + setStudioId(scene.studio.id); + } + + if ((!performerIds || performerIds.length === 0) && scene.performers && scene.performers.length > 0) { + let idPerfs = scene.performers.filter((p) => { + return p.id !== undefined && p.id !== null; + }); + + if (idPerfs.length > 0) { + let newIds = idPerfs.map((p) => p.id); + setPerformerIds(newIds as string[]); + } + } + + if ((!tagIds || tagIds.length === 0) && scene.tags && scene.tags.length > 0) { + let idTags = scene.tags.filter((p) => { + return p.id !== undefined && p.id !== null; + }); + + if (idTags.length > 0) { + let newIds = idTags.map((p) => p.id); + setTagIds(newIds as string[]); + } + } + } + + async function onScrapeSceneURL() { + if (!url) { return; } + setIsLoading(true); + try { + const result = await StashService.queryScrapeSceneURL(url); + if (!result.data || !result.data.scrapeSceneURL) { return; } + updateSceneFromScrapedScene(result.data.scrapeSceneURL); + } catch (e) { + ErrorUtils.handle(e); + } finally { + setIsLoading(false); + } + } + + function maybeRenderScrapeButton() { + if (!url || !urlScrapable(url)) { + return undefined; + } + return ( + + ) + } + + return ( + <> + {renderDeleteAlert()} + {isLoading ? : undefined} +
    + + Title + setTitle(newValue.target.value)} + value={title} + /> + + + + Details + setDetails(newValue.target.value)} + value={details} + /> + + + + URL + setUrl(newValue.target.value)} + value={url} + /> + {maybeRenderScrapeButton()} + + + + Date + setDate(newValue.target.value)} + value={date} + /> +
    YYYY-MM-DD
    +
    + + + Rating + setRating(parseInt(event.target.value, 10))}> + { ["", 1, 2, 3, 4, 5].map(opt => ( + + )) } + + + + + Gallery + setGalleryId(item ? item.id : undefined)} + /> + + + + Studio + setStudioId(item ? item.id : undefined)} + initialId={studioId} + /> + + + + Performers + {renderMultiSelect("performers", performerIds)} + + + + Tags + {renderMultiSelect("tags", tagIds)} + + +
    + + +
    + + + + +
    +
    +
    + +
    + + + {renderScraperMenu()} + + ); +}; diff --git a/ui/v2.5/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx b/ui/v2.5/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx new file mode 100644 index 000000000..48c8f2118 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneDetails/SceneFileInfoPanel.tsx @@ -0,0 +1,137 @@ +import { Table } from 'react-bootstrap'; +import React, { FunctionComponent } from "react"; +import * as GQL from "../../../core/generated-graphql"; +import { TextUtils } from "../../../utils/text"; + +interface ISceneFileInfoPanelProps { + scene: GQL.SceneDataFragment; +} + +export const SceneFileInfoPanel: FunctionComponent = (props: ISceneFileInfoPanelProps) => { + function renderChecksum() { + return ( + + Checksum + {props.scene.checksum} + + ); + } + + function renderPath() { + return ( + + Path + {"file://"+props.scene.path} + + ); + } + + function renderStream() { + return ( + + Stream + {props.scene.paths.stream} + + ); + } + + function renderFileSize() { + if (props.scene.file.size === undefined) { return; } + return ( + + File Size + {TextUtils.fileSize(parseInt(props.scene.file.size, 10))} + + ); + } + + function renderDuration() { + if (props.scene.file.duration === undefined) { return; } + return ( + + Duration + {TextUtils.secondsToTimestamp(props.scene.file.duration)} + + ); + } + + function renderDimensions() { + if (props.scene.file.duration === undefined) { return; } + return ( + + Dimensions + {props.scene.file.width} x {props.scene.file.height} + + ); + } + + function renderFrameRate() { + if (props.scene.file.framerate === undefined) { return; } + return ( + + Frame Rate + {props.scene.file.framerate} frames per second + + ); + } + + function renderBitRate() { + if (props.scene.file.bitrate === undefined) { return; } + return ( + + Bit Rate + {TextUtils.bitRate(props.scene.file.bitrate)} + + ); + } + + function renderVideoCodec() { + if (props.scene.file.video_codec === undefined) { return; } + return ( + + Video Codec + {props.scene.file.video_codec} + + ); + } + + function renderAudioCodec() { + if (props.scene.file.audio_codec === undefined) { return; } + return ( + + Audio Codec + {props.scene.file.audio_codec} + + ); + } + + function renderUrl() { + if (!props.scene.url || props.scene.url === "") { return; } + return ( + + Downloaded From + {props.scene.url} + + ); + } + + return ( + <> + + + {renderChecksum()} + {renderPath()} + {renderStream()} + {renderFileSize()} + {renderDuration()} + {renderDimensions()} + {renderFrameRate()} + {renderBitRate()} + {renderVideoCodec()} + {renderAudioCodec()} + {renderUrl()} + +
    + + ); +}; diff --git a/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx b/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx new file mode 100644 index 000000000..80c497ac4 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneDetails/SceneMarkersPanel.tsx @@ -0,0 +1,267 @@ +import { Badge, Button, Card, Collapse, Form as BootstrapForm } from 'react-bootstrap'; +import { Field, FieldProps, Form, Formik, FormikActions, FormikProps } from "formik"; +import React, { CSSProperties, FunctionComponent, useState } from "react"; +import * as GQL from "../../../core/generated-graphql"; +import { StashService } from "../../../core/StashService"; +import { TextUtils } from "../../../utils/text"; +import { FilterMultiSelect } from "../../select/FilterMultiSelect"; +import { FilterSelect } from "../../select/FilterSelect"; +import { MarkerTitleSuggest } from "../../select/MarkerTitleSuggest"; +import { WallPanel } from "../../Wall/WallPanel"; +import { SceneHelpers } from "../helpers"; +import { ErrorUtils } from "../../../utils/errors"; +import { DurationInput } from "../../Shared/DurationInput"; + +interface ISceneMarkersPanelProps { + scene: GQL.SceneDataFragment; + onClickMarker: (marker: GQL.SceneMarkerDataFragment) => void; +} + +interface IFormFields { + title: string; + seconds: string; + primaryTagId: string; + tagIds: string[]; +} + +export const SceneMarkersPanel: FunctionComponent = (props: ISceneMarkersPanelProps) => { + const [isEditorOpen, setIsEditorOpen] = useState(false); + const [editingMarker, setEditingMarker] = useState(null); + + const sceneMarkerCreate = StashService.useSceneMarkerCreate(); + const sceneMarkerUpdate = StashService.useSceneMarkerUpdate(); + const sceneMarkerDestroy = StashService.useSceneMarkerDestroy(); + + const jwplayer = SceneHelpers.getPlayer(); + + function onOpenEditor(marker: GQL.SceneMarkerDataFragment | null = null) { + setIsEditorOpen(true); + setEditingMarker(marker); + } + + function onClickMarker(marker: GQL.SceneMarkerDataFragment) { + props.onClickMarker(marker); + } + + function renderTags() { + function renderMarkers(primaryTag: GQL.FindSceneSceneMarkerTags) { + const markers = primaryTag.scene_markers.map((marker) => { + const markerTags = marker.tags.map((tag) => ( + {tag.name} + )); + + return ( +
    +
    + +
    + {TextUtils.secondsToTimestamp(marker.seconds)} +
    +
    + {markerTags} +
    +
    + ); + }); + return markers; + } + + const style: CSSProperties = { + height: "300px", + overflowY: "auto", + overflowX: "hidden", + display: "inline-block", + margin: "5px", + width: "300px", + flex: "0 0 auto", + }; + const tags = (props.scene as any).scene_marker_tags.map((primaryTag: GQL.FindSceneSceneMarkerTags) => { + + return ( +
    + +
    +

    {primaryTag.tag.name}

    + {renderMarkers(primaryTag)} +
    +
    +
    + ); + }); + return tags; + } + + function renderForm() { + function onSubmit(values: IFormFields, _: FormikActions) { + const isEditing = !!editingMarker; + const variables: GQL.SceneMarkerCreateVariables | GQL.SceneMarkerUpdateVariables = { + title: values.title, + seconds: parseFloat(values.seconds), + scene_id: props.scene.id, + primary_tag_id: values.primaryTagId, + tag_ids: values.tagIds, + }; + if (!isEditing) { + sceneMarkerCreate({ variables }).then((response) => { + setIsEditorOpen(false); + setEditingMarker(null); + }).catch((err) => ErrorUtils.handleApolloError(err)); + } else { + const updateVariables = variables as GQL.SceneMarkerUpdateVariables; + updateVariables.id = editingMarker!.id; + sceneMarkerUpdate({ variables: updateVariables }).then((response) => { + setIsEditorOpen(false); + setEditingMarker(null); + }).catch((err) => ErrorUtils.handleApolloError(err)); + } + } + function onDelete() { + if (!editingMarker) { return; } + sceneMarkerDestroy({variables: {id: editingMarker.id}}).then((response) => { + console.log(response); + }).catch((err) => console.error(err)); + setIsEditorOpen(false); + setEditingMarker(null); + } + function renderTitleField(fieldProps: FieldProps) { + return ( + fieldProps.form.setFieldValue("title", query)} + /> + ); + } + function renderSecondsField(fieldProps: FieldProps) { + return ( + fieldProps.form.setFieldValue("seconds", s)} + onReset={() => fieldProps.form.setFieldValue("seconds", Math.round(jwplayer.getPosition()))} + numericValue={fieldProps.field.value} + /> + ); + } + function renderPrimaryTagField(fieldProps: FieldProps) { + return ( + fieldProps.form.setFieldValue("primaryTagId", tag ? tag.id : undefined)} + initialId={!!editingMarker ? editingMarker.primary_tag.id : undefined} + /> + ); + } + function renderTagsField(fieldProps: FieldProps) { + return ( + fieldProps.form.setFieldValue("tagIds", tags.map((tag) => tag.id))} + initialIds={!!editingMarker ? fieldProps.form.values.tagIds : undefined} + /> + ); + } + function renderFormFields(formikProps: FormikProps) { + let deleteButton: JSX.Element | undefined; + if (!!editingMarker) { + deleteButton = ( + + ); + } + return ( +
    +
    + + Scene Marker Title + + + + Time + + + + Primary Tag + + + + Tags + + +
    +
    + + + {deleteButton} +
    +
    + ); + } + let initialValues: any; + if (!!editingMarker) { + initialValues = { + title: editingMarker.title, + seconds: editingMarker.seconds, + primaryTagId: editingMarker.primary_tag.id, + tagIds: editingMarker.tags.map((tag) => tag.id), + }; + } else { + initialValues = {title: "", seconds: Math.round(jwplayer.getPosition()), primaryTagId: "", tagIds: []}; + } + return ( + +
    + +
    +
    + ); + } + + function render() { + const newMarkerForm = ( +
    + + {renderForm()} +
    + ); + if (props.scene.scene_markers.length === 0) { + return newMarkerForm; + } + + const containerStyle: CSSProperties = { + overflowY: "hidden", + overflowX: "scroll", + whiteSpace: "nowrap", + display: "flex", + flexWrap: "nowrap", + marginBottom: "20px", + }; + return ( + <> + {newMarkerForm} +
    + {renderTags()} +
    + { window.scrollTo(0, 0); onClickMarker(marker as any); }} + /> + + ); + } + + return render(); +}; diff --git a/ui/v2.5/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx b/ui/v2.5/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx new file mode 100644 index 000000000..9c2aa6373 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneDetails/ScenePerformerPanel.tsx @@ -0,0 +1,21 @@ +import React, { FunctionComponent } from "react"; +import * as GQL from "../../../core/generated-graphql"; +import { PerformerCard } from "../../performers/PerformerCard"; + +interface IScenePerformerPanelProps { + scene: GQL.SceneDataFragment; +} + +export const ScenePerformerPanel: FunctionComponent = (props: IScenePerformerPanelProps) => { + const cards = props.scene.performers.map((performer) => ( + + )); + + return ( + <> +
    + {cards} +
    + + ); +}; diff --git a/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx b/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx new file mode 100644 index 000000000..fdae8f375 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneFilenameParser.tsx @@ -0,0 +1,982 @@ +import { Badge, Button, Card, Collapse, Dropdown, DropdownButton, Form, Table, Spinner } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import React, { useEffect, useState } from "react"; +import { StashService } from "../../core/StashService"; +import * as GQL from "../../core/generated-graphql"; +import { SlimSceneDataFragment, Maybe } from "../../core/generated-graphql"; +import { TextUtils } from "../../utils/text"; +import _ from "lodash"; +import { ToastUtils } from "../../utils/toasts"; +import { ErrorUtils } from "../../utils/errors"; +import { Pagination } from "../list/Pagination"; +import { FilterMultiSelect } from "../select/FilterMultiSelect"; +import { FilterSelect } from "../select/FilterSelect"; + +class ParserResult { + public value: Maybe; + public originalValue: Maybe; + public set: boolean = false; + + public setOriginalValue(v : Maybe) { + this.originalValue = v; + this.value = v; + } + + public setValue(v : Maybe) { + if (!!v) { + this.value = v; + this.set = !_.isEqual(this.value, this.originalValue); + } + } +} + +class ParserField { + public field : string; + public helperText? : string; + + constructor(field: string, helperText?: string) { + this.field = field; + this.helperText = helperText; + } + + public getFieldPattern() { + return "{" + this.field + "}"; + } + + static Title = new ParserField("title"); + static Ext = new ParserField("ext", "File extension"); + + static I = new ParserField("i", "Matches any ignored word"); + static D = new ParserField("d", "Matches any delimiter (.-_)"); + + static Performer = new ParserField("performer"); + static Studio = new ParserField("studio"); + static Tag = new ParserField("tag"); + + // date fields + static Date = new ParserField("date", "YYYY-MM-DD"); + static YYYY = new ParserField("yyyy", "Year"); + static YY = new ParserField("yy", "Year (20YY)"); + static MM = new ParserField("mm", "Two digit month"); + static DD = new ParserField("dd", "Two digit date"); + static YYYYMMDD = new ParserField("yyyymmdd"); + static YYMMDD = new ParserField("yymmdd"); + static DDMMYYYY = new ParserField("ddmmyyyy"); + static DDMMYY = new ParserField("ddmmyy"); + static MMDDYYYY = new ParserField("mmddyyyy"); + static MMDDYY = new ParserField("mmddyy"); + + static validFields = [ + ParserField.Title, + ParserField.Ext, + ParserField.D, + ParserField.I, + ParserField.Performer, + ParserField.Studio, + ParserField.Tag, + ParserField.Date, + ParserField.YYYY, + ParserField.YY, + ParserField.MM, + ParserField.DD, + ParserField.YYYYMMDD, + ParserField.YYMMDD, + ParserField.DDMMYYYY, + ParserField.DDMMYY, + ParserField.MMDDYYYY, + ParserField.MMDDYY + ] + + static fullDateFields = [ + ParserField.YYYYMMDD, + ParserField.YYMMDD, + ParserField.DDMMYYYY, + ParserField.DDMMYY, + ParserField.MMDDYYYY, + ParserField.MMDDYY + ]; +} +class SceneParserResult { + public id: string; + public filename: string; + public title: ParserResult = new ParserResult(); + public date: ParserResult = new ParserResult(); + + public studio: ParserResult = new ParserResult(); + public studioId: ParserResult = new ParserResult(); + public tags: ParserResult = new ParserResult(); + public tagIds: ParserResult = new ParserResult(); + public performers: ParserResult = new ParserResult(); + public performerIds: ParserResult = new ParserResult(); + + public scene : SlimSceneDataFragment; + + constructor(result : GQL.ParseSceneFilenamesResults) { + this.scene = result.scene; + + this.id = this.scene.id; + this.filename = TextUtils.fileNameFromPath(this.scene.path); + this.title.setOriginalValue(this.scene.title); + this.date.setOriginalValue(this.scene.date); + this.performerIds.setOriginalValue(this.scene.performers.map((p) => p.id)); + this.performers.setOriginalValue(this.scene.performers); + this.tagIds.setOriginalValue(this.scene.tags.map((t) => t.id)); + this.tags.setOriginalValue(this.scene.tags); + this.studioId.setOriginalValue(this.scene.studio ? this.scene.studio.id : undefined); + this.studio.setOriginalValue(this.scene.studio); + + this.title.setValue(result.title); + this.date.setValue(result.date); + this.performerIds.setValue(result.performer_ids); + this.tagIds.setValue(result.tag_ids); + this.studioId.setValue(result.studio_id); + + if (result.performer_ids) { + this.performers.setValue(result.performer_ids.map((p) => { + return { + id: p, + name: "", + favorite: false, + image_path: "" + }; + })); + } + + if (result.tag_ids) { + this.tags.setValue(result.tag_ids.map((t) => { + return { + id: t, + name: "", + }; + })); + } + + if (result.studio_id) { + this.studio.setValue({ + id: result.studio_id, + name: "", + image_path: "" + }); + } + } + + private static setInput(object: any, key: string, parserResult : ParserResult) { + if (parserResult.set) { + object[key] = parserResult.value; + } + } + + // returns true if any of its fields have set == true + public isChanged() { + return this.title.set || this.date.set || this.performerIds.set || this.studioId.set || this.tagIds.set; + } + + public toSceneUpdateInput() { + var ret = { + id: this.id, + title: this.scene.title, + details: this.scene.details, + url: this.scene.url, + date: this.scene.date, + rating: this.scene.rating, + gallery_id: this.scene.gallery ? this.scene.gallery.id : undefined, + studio_id: this.scene.studio ? this.scene.studio.id : undefined, + performer_ids: this.scene.performers.map((performer) => performer.id), + tag_ids: this.scene.tags.map((tag) => tag.id) + }; + + SceneParserResult.setInput(ret, "title", this.title); + SceneParserResult.setInput(ret, "date", this.date); + SceneParserResult.setInput(ret, "performer_ids", this.performerIds); + SceneParserResult.setInput(ret, "studio_id", this.studioId); + SceneParserResult.setInput(ret, "tag_ids", this.tagIds); + + return ret; + } +}; + +interface IParserInput { + pattern: string, + ignoreWords: string[], + whitespaceCharacters: string, + capitalizeTitle: boolean, + page: number, + pageSize: number, + findClicked: boolean +} + +interface IParserRecipe { + pattern: string, + ignoreWords: string[], + whitespaceCharacters: string, + capitalizeTitle: boolean, + description: string +} + +const builtInRecipes = [ + { + pattern: "{title}", + ignoreWords: [], + whitespaceCharacters: "", + capitalizeTitle: false, + description: "Filename" + }, + { + pattern: "{title}.{ext}", + ignoreWords: [], + whitespaceCharacters: "", + capitalizeTitle: false, + description: "Without extension" + }, + { + pattern: "{}.{yy}.{mm}.{dd}.{title}.XXX.{}.{ext}", + ignoreWords: [], + whitespaceCharacters: ".", + capitalizeTitle: true, + description: "" + }, + { + pattern: "{}.{yy}.{mm}.{dd}.{title}.{ext}", + ignoreWords: [], + whitespaceCharacters: ".", + capitalizeTitle: true, + description: "" + }, + { + pattern: "{title}.XXX.{}.{ext}", + ignoreWords: [], + whitespaceCharacters: ".", + capitalizeTitle: true, + description: "" + }, + { + pattern: "{}.{yy}.{mm}.{dd}.{title}.{i}.{ext}", + ignoreWords: ["cz", "fr"], + whitespaceCharacters: ".", + capitalizeTitle: true, + description: "Foreign language" + } +]; + +export const SceneFilenameParser: React.FC = () => { + const [parserResult, setParserResult] = useState([]); + const [parserInput, setParserInput] = useState(initialParserInput()); + + const [allTitleSet, setAllTitleSet] = useState(false); + const [allDateSet, setAllDateSet] = useState(false); + const [allPerformerSet, setAllPerformerSet] = useState(false); + const [allTagSet, setAllTagSet] = useState(false); + const [allStudioSet, setAllStudioSet] = useState(false); + + const [showFields, setShowFields] = useState>(initialShowFieldsState()); + + const [totalItems, setTotalItems] = useState(0); + + // Network state + const [isLoading, setIsLoading] = useState(false); + + const updateScenes = StashService.useScenesUpdate(getScenesUpdateData()); + + function initialParserInput() { + return { + pattern: "{title}.{ext}", + ignoreWords: [], + whitespaceCharacters: "._", + capitalizeTitle: true, + page: 1, + pageSize: 20, + findClicked: false + }; + } + + function initialShowFieldsState() { + return new Map([ + ["Title", true], + ["Date", true], + ["Performers", true], + ["Tags", true], + ["Studio", true] + ]); + } + + function getParserFilter() { + return { + q: parserInput.pattern, + page: parserInput.page, + per_page: parserInput.pageSize, + sort: "path", + direction: GQL.SortDirectionEnum.Asc, + }; + } + + function getParserInput() { + return { + ignoreWords: parserInput.ignoreWords, + whitespaceCharacters: parserInput.whitespaceCharacters, + capitalizeTitle: parserInput.capitalizeTitle + }; + } + + async function onFind() { + setParserResult([]); + + setIsLoading(true); + + try { + const response = await StashService.queryParseSceneFilenames(getParserFilter(), getParserInput()); + + let result = response.data.parseSceneFilenames; + if (!!result) { + parseResults(result.results); + setTotalItems(result.count); + } + } catch (err) { + ErrorUtils.handle(err); + } + + setIsLoading(false); + } + + useEffect(() => { + if(parserInput.findClicked) { + onFind(); + } + }, [parserInput]); + + function onPageSizeChanged(newSize : number) { + var newInput = _.clone(parserInput); + newInput.page = 1; + newInput.pageSize = newSize; + setParserInput(newInput); + } + + function onPageChanged(newPage : number) { + if (newPage !== parserInput.page) { + var newInput = _.clone(parserInput); + newInput.page = newPage; + setParserInput(newInput); + } + } + + function onFindClicked(input : IParserInput) { + input.page = 1; + input.findClicked = true; + setParserInput(input); + setTotalItems(0); + } + + function getScenesUpdateData() { + return parserResult.filter((result) => result.isChanged()).map((result) => result.toSceneUpdateInput()); + } + + async function onApply() { + setIsLoading(true); + + try { + await updateScenes(); + ToastUtils.success("Updated scenes"); + } catch (e) { + ErrorUtils.handle(e); + } + + setIsLoading(false); + } + + function parseResults(results : GQL.ParseSceneFilenamesResults[]) { + if (results) { + var result = results.map((r) => { + return new SceneParserResult(r); + }).filter((r) => !!r) as SceneParserResult[]; + + setParserResult(result); + determineFieldsToHide(); + } + } + + function determineFieldsToHide() { + var pattern = parserInput.pattern; + var titleSet = pattern.includes("{title}"); + var dateSet = pattern.includes("{date}") || + pattern.includes("{dd}") || // don't worry about other partial date fields since this should be implied + ParserField.fullDateFields.some((f) => { + return pattern.includes("{" + f.field + "}"); + }); + var performerSet = pattern.includes("{performer}"); + var tagSet = pattern.includes("{tag}"); + var studioSet = pattern.includes("{studio}"); + + var showFieldsCopy = _.clone(showFields); + showFieldsCopy.set("Title", titleSet); + showFieldsCopy.set("Date", dateSet); + showFieldsCopy.set("Performers", performerSet); + showFieldsCopy.set("Tags", tagSet); + showFieldsCopy.set("Studio", studioSet); + setShowFields(showFieldsCopy); + } + + useEffect(() => { + var newAllTitleSet = !parserResult.some((r) => { + return !r.title.set; + }); + var newAllDateSet = !parserResult.some((r) => { + return !r.date.set; + }); + var newAllPerformerSet = !parserResult.some((r) => { + return !r.performerIds.set; + }); + var newAllTagSet = !parserResult.some((r) => { + return !r.tagIds.set; + }); + var newAllStudioSet = !parserResult.some((r) => { + return !r.studioId.set; + }); + + if (newAllTitleSet != allTitleSet) { + setAllTitleSet(newAllTitleSet); + } + if (newAllDateSet != allDateSet) { + setAllDateSet(newAllDateSet); + } + if (newAllPerformerSet != allPerformerSet) { + setAllTagSet(newAllPerformerSet); + } + if (newAllTagSet != allTagSet) { + setAllTagSet(newAllTagSet); + } + if (newAllStudioSet != allStudioSet) { + setAllStudioSet(newAllStudioSet); + } + }, [parserResult]); + + function onSelectAllTitleSet(selected : boolean) { + var newResult = [...parserResult]; + + newResult.forEach((r) => { + r.title.set = selected; + }); + + setParserResult(newResult); + setAllTitleSet(selected); + } + + function onSelectAllDateSet(selected : boolean) { + var newResult = [...parserResult]; + + newResult.forEach((r) => { + r.date.set = selected; + }); + + setParserResult(newResult); + setAllDateSet(selected); + } + + function onSelectAllPerformerSet(selected : boolean) { + var newResult = [...parserResult]; + + newResult.forEach((r) => { + r.performerIds.set = selected; + }); + + setParserResult(newResult); + setAllPerformerSet(selected); + } + + function onSelectAllTagSet(selected : boolean) { + var newResult = [...parserResult]; + + newResult.forEach((r) => { + r.tagIds.set = selected; + }); + + setParserResult(newResult); + setAllTagSet(selected); + } + + function onSelectAllStudioSet(selected : boolean) { + var newResult = [...parserResult]; + + newResult.forEach((r) => { + r.studioId.set = selected; + }); + + setParserResult(newResult); + setAllStudioSet(selected); + } + + interface IShowFieldsProps { + fields: Map + onShowFieldsChanged: (fields : Map) => void + } + + function ShowFields(props: IShowFieldsProps) { + const [open, setOpen] = useState(false); + + function handleClick(label: string) { + const copy = new Map(props.fields); + copy.set(label, !props.fields.get(label)); + props.onShowFieldsChanged(copy); + } + + const fieldRows = [...props.fields.entries()].map(([label, enabled]) => ( +
    {handleClick(label)}}> + + {label} +
    + )); + + return ( +
    +
    setOpen(!open)}> + + Display fields +
    + +
    + {fieldRows} +
    +
    +
    + ); + } + + interface IParserInputProps { + input: IParserInput, + onFind: (input : IParserInput) => void + } + + function ParserInput(props : IParserInputProps) { + const [pattern, setPattern] = useState(props.input.pattern); + const [ignoreWords, setIgnoreWords] = useState(props.input.ignoreWords.join(" ")); + const [whitespaceCharacters, setWhitespaceCharacters] = useState(props.input.whitespaceCharacters); + const [capitalizeTitle, setCapitalizeTitle] = useState(props.input.capitalizeTitle); + + function onFind() { + props.onFind({ + pattern: pattern, + ignoreWords: ignoreWords.split(" "), + whitespaceCharacters: whitespaceCharacters, + capitalizeTitle: capitalizeTitle, + page: 1, + pageSize: props.input.pageSize, + findClicked: props.input.findClicked + }); + } + + function setParserRecipe(recipe: IParserRecipe) { + setPattern(recipe.pattern); + setIgnoreWords(recipe.ignoreWords.join(" ")); + setWhitespaceCharacters(recipe.whitespaceCharacters); + setCapitalizeTitle(recipe.capitalizeTitle); + } + + const validFields = [new ParserField("", "Wildcard")].concat(ParserField.validFields); + + function addParserField(field: ParserField) { + setPattern(pattern + field.getFieldPattern()); + } + + const PAGE_SIZE_OPTIONS = ["20", "40", "60", "120"]; + + return ( + + + setPattern(newValue.target.value)} + value={pattern} + /> + + { validFields.map(item => ( + addParserField(item)}> + {item.field}{item.helperText} + + ))} + +
    Use '\\' to escape literal {} characters
    +
    + + + Ignored words:: + setIgnoreWords(newValue.target.value)} + value={ignoreWords} + /> +
    Matches with {"{i}"}
    +
    + + +
    Title
    + Whitespace characters: + setWhitespaceCharacters(newValue.target.value)} + value={whitespaceCharacters} + /> + + Capitalize title + setCapitalizeTitle(!capitalizeTitle)} + /> + +
    These characters will be replaced with whitespace in the title
    +
    + + {/* TODO - mapping stuff will go here */} + + + + { builtInRecipes.map(item => ( + setParserRecipe(item)}> + {item.pattern}{item.description} + + ))} + + + + + setShowFields(fields)} + /> + + + + + onPageSizeChanged(parseInt(event.target.value))} + defaultValue={props.input.pageSize} + className="filter-item" + > + { PAGE_SIZE_OPTIONS.map(val => ) } + + +
    + ); + } + + interface ISceneParserFieldProps { + parserResult : ParserResult + className? : string + fieldName : string + onSetChanged : (set : boolean) => void + onValueChanged : (value : any) => void + originalParserResult? : ParserResult + renderOriginalInputField: (props : ISceneParserFieldProps) => JSX.Element + renderNewInputField: (props : ISceneParserFieldProps, onChange : (event : any) => void) => JSX.Element + } + + function SceneParserField(props : ISceneParserFieldProps) { + + function maybeValueChanged(value : any) { + if (value !== props.parserResult.value) { + props.onValueChanged(value); + } + } + + if (!showFields.get(props.fieldName)) { + return null; + } + + return ( + <> + + {props.onSetChanged(!props.parserResult.set)}} + /> + + + + {props.renderOriginalInputField(props)} + {props.renderNewInputField(props, (value) => maybeValueChanged(value))} + + + + ); + } + + function renderOriginalInputGroup(props: ISceneParserFieldProps) { + var parserResult = props.originalParserResult || props.parserResult; + + return ( + + ); + } + + interface IInputGroupWrapperProps { + parserResult: ParserResult + onChange : (event : any) => void + className? : string + } + + function InputGroupWrapper(props: IInputGroupWrapperProps) { + return ( + props.onChange(event.target.value)} + /> + ); + } + + function renderNewInputGroup(props : ISceneParserFieldProps, onChange : (value : any) => void) { + return ( + {onChange(value)}} + parserResult={props.parserResult} + /> + ); + } + + interface HasName { + name: string + } + + function renderOriginalSelect(props : ISceneParserFieldProps) { + const parserResult = props.originalParserResult || props.parserResult; + + const elements = parserResult.originalValue + ? Array.isArray(parserResult.originalValue) + ? parserResult.originalValue.map((el:HasName) => el.name) + : parserResult.originalValue.name + : []; + + return ( +
    + { elements.map((name:string) => {name}) } +
    + ); + } + + function renderNewMultiSelect(type: "performers" | "tags", props : ISceneParserFieldProps, onChange : (value : any) => void) { + return ( + { + const ids = items.map((i) => i.id); + onChange(ids); + }} + initialIds={props.parserResult.value} + /> + ); + } + + function renderNewPerformerSelect(props : ISceneParserFieldProps, onChange : (value : any) => void) { + return renderNewMultiSelect("performers", props, onChange); + } + + function renderNewTagSelect(props : ISceneParserFieldProps, onChange : (value : any) => void) { + return renderNewMultiSelect("tags", props, onChange); + } + + function renderNewStudioSelect(props : ISceneParserFieldProps, onChange : (value : any) => void) { + return ( + onChange(item ? item.id : undefined)} + initialId={props.parserResult.value} + /> + ); + } + + interface ISceneParserRowProps { + scene : SceneParserResult, + onChange: (changedScene : SceneParserResult) => void + } + + function SceneParserRow(props : ISceneParserRowProps) { + + function changeParser(result : ParserResult, set : boolean, value : any) { + var newParser = _.clone(result); + newParser.set = set; + newParser.value = value; + return newParser; + } + + function onTitleChanged(set : boolean, value: string | undefined) { + var newResult = _.clone(props.scene); + newResult.title = changeParser(newResult.title, set, value); + props.onChange(newResult); + } + + function onDateChanged(set : boolean, value: string | undefined) { + var newResult = _.clone(props.scene); + newResult.date = changeParser(newResult.date, set, value); + props.onChange(newResult); + } + + function onPerformerIdsChanged(set : boolean, value: string[] | undefined) { + var newResult = _.clone(props.scene); + newResult.performerIds = changeParser(newResult.performerIds, set, value); + props.onChange(newResult); + } + + function onTagIdsChanged(set : boolean, value: string[] | undefined) { + var newResult = _.clone(props.scene); + newResult.tagIds = changeParser(newResult.tagIds, set, value); + props.onChange(newResult); + } + + function onStudioIdChanged(set : boolean, value: string | undefined) { + var newResult = _.clone(props.scene); + newResult.studioId = changeParser(newResult.studioId, set, value); + props.onChange(newResult); + } + + return ( + + + {props.scene.filename} + + onTitleChanged(set, props.scene.title.value)} + onValueChanged={(value) => onTitleChanged(props.scene.title.set, value)} + renderOriginalInputField={renderOriginalInputGroup} + renderNewInputField={renderNewInputGroup} + /> + onDateChanged(set, props.scene.date.value)} + onValueChanged={(value) => onDateChanged(props.scene.date.set, value)} + renderOriginalInputField={renderOriginalInputGroup} + renderNewInputField={renderNewInputGroup} + /> + onPerformerIdsChanged(set, props.scene.performerIds.value)} + onValueChanged={(value) => onPerformerIdsChanged(props.scene.performerIds.set, value)} + renderOriginalInputField={renderOriginalSelect} + renderNewInputField={renderNewPerformerSelect} + /> + onTagIdsChanged(set, props.scene.tagIds.value)} + onValueChanged={(value) => onTagIdsChanged(props.scene.tagIds.set, value)} + renderOriginalInputField={renderOriginalSelect} + renderNewInputField={renderNewTagSelect} + /> + onStudioIdChanged(set, props.scene.studioId.value)} + onValueChanged={(value) => onStudioIdChanged(props.scene.studioId.set, value)} + renderOriginalInputField={renderOriginalSelect} + renderNewInputField={renderNewStudioSelect} + /> + + ) + } + + function onChange(scene : SceneParserResult, changedScene : SceneParserResult) { + var newResult = [...parserResult]; + + var index = newResult.indexOf(scene); + newResult[index] = changedScene; + + setParserResult(newResult); + } + + function renderHeader(fieldName: string, allSet: boolean, onAllSet: (set: boolean) => void) { + if (!showFields.get(fieldName)) { + return null; + } + + return ( + <> + + {onAllSet(!allSet)}} + /> + + {fieldName} + + ) + } + + function renderTable() { + if (parserResult.length == 0) { return undefined; } + + return ( + <> +
    +
    + + + + + {renderHeader("Title", allTitleSet, onSelectAllTitleSet)} + {renderHeader("Date", allDateSet, onSelectAllDateSet)} + {renderHeader("Performers", allPerformerSet, onSelectAllPerformerSet)} + {renderHeader("Tags", allTagSet, onSelectAllTagSet)} + {renderHeader("Studio", allStudioSet, onSelectAllStudioSet)} + + + + {parserResult.map((scene) => + onChange(scene, changedScene)}/> + )} + +
    Filename
    +
    + onPageChanged(page)} + /> + +
    + + ) + } + + return ( + +

    Scene Filename Parser

    + onFindClicked(input)} + /> + + {isLoading ? : undefined} + {renderTable()} +
    + ); +}; + diff --git a/ui/v2.5/src/components/scenes/SceneList.tsx b/ui/v2.5/src/components/scenes/SceneList.tsx new file mode 100644 index 000000000..77e84e664 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneList.tsx @@ -0,0 +1,104 @@ +import _ from "lodash"; +import React from "react"; +import { QueryHookResult } from "react-apollo-hooks"; +import { FindScenesQuery, FindScenesVariables, SlimSceneDataFragment } from "../../core/generated-graphql"; +import { ListHook } from "../../hooks/ListHook"; +import { IBaseProps } from "../../models/base-props"; +import { ListFilterModel } from "../../models/list-filter/filter"; +import { DisplayMode, FilterMode } from "../../models/list-filter/types"; +import { WallPanel } from "../Wall/WallPanel"; +import { SceneCard } from "./SceneCard"; +import { SceneListTable } from "./SceneListTable"; +import { SceneSelectedOptions } from "./SceneSelectedOptions"; +import { StashService } from "../../core/StashService"; + +interface ISceneListProps extends IBaseProps {} + +export const SceneList: React.FC = (props: ISceneListProps) => { + const otherOperations = [ + { + text: "Play Random", + onClick: playRandom, + } + ]; + + const listData = ListHook.useList({ + filterMode: FilterMode.Scenes, + props, + zoomable: true, + otherOperations: otherOperations, + renderContent, + renderSelectedOptions + }); + + async function playRandom(result: QueryHookResult, filter: ListFilterModel, selectedIds: Set) { + // query for a random scene + if (result.data && result.data.findScenes) { + let count = result.data.findScenes.count; + + let index = Math.floor(Math.random() * count); + let filterCopy = _.cloneDeep(filter); + filterCopy.itemsPerPage = 1; + filterCopy.currentPage = index + 1; + const singleResult = await StashService.queryFindScenes(filterCopy); + if (singleResult && singleResult.data && singleResult.data.findScenes && singleResult.data.findScenes.scenes.length === 1) { + let id = singleResult!.data!.findScenes!.scenes[0].id; + // navigate to the scene player page + props.history.push("/scenes/" + id + "?autoplay=true"); + } + } + } + + function renderSelectedOptions(result: QueryHookResult, selectedIds: Set) { + // find the selected items from the ids + if (!result.data || !result.data.findScenes) { return undefined; } + + var scenes = result.data.findScenes.scenes; + + var selectedScenes : SlimSceneDataFragment[] = []; + selectedIds.forEach((id) => { + var scene = scenes.find((scene) => { + return scene.id === id; + }); + + if (scene) { + selectedScenes.push(scene); + } + }); + + return ( + <> + { return; }}/> + + ); + } + + function renderSceneCard(scene : SlimSceneDataFragment, selectedIds: Set, zoomIndex: number) { + return ( + listData.onSelectChange(scene.id, selected, shiftKey)} + /> + ) + } + + function renderContent(result: QueryHookResult, filter: ListFilterModel, selectedIds: Set, zoomIndex: number) { + if (!result.data || !result.data.findScenes) { return; } + if (filter.displayMode === DisplayMode.Grid) { + return ( +
    + {result.data.findScenes.scenes.map((scene) => renderSceneCard(scene, selectedIds, zoomIndex))} +
    + ); + } else if (filter.displayMode === DisplayMode.List) { + return ; + } else if (filter.displayMode === DisplayMode.Wall) { + return ; + } + } + + return listData.template; +}; diff --git a/ui/v2.5/src/components/scenes/SceneListTable.tsx b/ui/v2.5/src/components/scenes/SceneListTable.tsx new file mode 100644 index 000000000..8acfb55e3 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneListTable.tsx @@ -0,0 +1,121 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import * as GQL from "../../core/generated-graphql"; +import { TextUtils } from "../../utils/text"; +import { NavigationUtils } from "../../utils/navigation"; + +import { Table } from 'react-bootstrap'; + +interface ISceneListTableProps { + scenes: GQL.SlimSceneDataFragment[]; +} + +export const SceneListTable: React.FC = (props: ISceneListTableProps) => { + + function renderSceneImage(scene : GQL.SlimSceneDataFragment) { + const style: React.CSSProperties = { + backgroundImage: `url('${scene.paths.screenshot}')`, + lineHeight: 5, + backgroundSize: "contain", + display: "inline-block", + backgroundPosition: "center", + backgroundRepeat: "no-repeat", + }; + + return ( + + ) + } + + function renderDuration(scene : GQL.SlimSceneDataFragment) { + if (scene.file.duration === undefined) { return; } + return TextUtils.secondsToTimestamp(scene.file.duration); + } + + function renderTags(tags : GQL.SlimSceneDataTags[]) { + return tags.map((tag) => ( + +
    {tag.name}
    + + )); + } + + function renderPerformers(performers : GQL.SlimSceneDataPerformers[]) { + return performers.map((performer) => ( + +
    {performer.name}
    + + )); + } + + function renderStudio(studio : GQL.SlimSceneDataStudio | undefined) { + if (!!studio) { + return ( + +
    {studio.name}
    + + ); + } + } + + function renderSceneRow(scene : GQL.SlimSceneDataFragment) { + return ( + <> + + + {renderSceneImage(scene)} + + + +
    + {!!scene.title ? scene.title : TextUtils.fileNameFromPath(scene.path)} +
    + + + + {scene.rating ? scene.rating : ''} + + + {renderDuration(scene)} + + + {renderTags(scene.tags)} + + + {renderPerformers(scene.performers)} + + + {renderStudio(scene.studio)} + + + + ) + } + + return ( + <> +
    + + + + + + + + + + + + + + {props.scenes.map(renderSceneRow)} + +
    TitleRatingDurationTagsPerformersStudio
    +
    + + ); +}; + diff --git a/ui/v2.5/src/components/scenes/SceneMarkerList.tsx b/ui/v2.5/src/components/scenes/SceneMarkerList.tsx new file mode 100644 index 000000000..c865f9d08 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneMarkerList.tsx @@ -0,0 +1,59 @@ +import _ from "lodash"; +import React, { FunctionComponent } from "react"; +import { QueryHookResult } from "react-apollo-hooks"; +import { FindSceneMarkersQuery, FindSceneMarkersVariables } from "../../core/generated-graphql"; +import { ListHook } from "../../hooks/ListHook"; +import { IBaseProps } from "../../models/base-props"; +import { ListFilterModel } from "../../models/list-filter/filter"; +import { DisplayMode, FilterMode } from "../../models/list-filter/types"; +import { WallPanel } from "../Wall/WallPanel"; +import { StashService } from "../../core/StashService"; +import { NavigationUtils } from "../../utils/navigation"; + +interface IProps extends IBaseProps {} + +export const SceneMarkerList: FunctionComponent = (props: IProps) => { + const otherOperations = [ + { + text: "Play Random", + onClick: playRandom, + } + ]; + + const listData = ListHook.useList({ + filterMode: FilterMode.SceneMarkers, + otherOperations: otherOperations, + props, + renderContent, + }); + + async function playRandom(result: QueryHookResult, filter: ListFilterModel, selectedIds: Set) { + // query for a random scene + if (result.data && result.data.findSceneMarkers) { + let count = result.data.findSceneMarkers.count; + + let index = Math.floor(Math.random() * count); + let filterCopy = _.cloneDeep(filter); + filterCopy.itemsPerPage = 1; + filterCopy.currentPage = index + 1; + const singleResult = await StashService.queryFindSceneMarkers(filterCopy); + if (singleResult && singleResult.data && singleResult.data.findSceneMarkers && singleResult.data.findSceneMarkers.scene_markers.length === 1) { + // navigate to the scene player page + let url = NavigationUtils.makeSceneMarkerUrl(singleResult!.data!.findSceneMarkers!.scene_markers[0]) + props.history.push(url); + } + } + } + + function renderContent( + result: QueryHookResult, + filter: ListFilterModel, + ) { + if (!result.data || !result.data.findSceneMarkers) { return; } + if (filter.displayMode === DisplayMode.Wall) { + return ; + } + } + + return listData.template; +}; diff --git a/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayer.tsx b/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayer.tsx new file mode 100644 index 000000000..93bd6013e --- /dev/null +++ b/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayer.tsx @@ -0,0 +1,196 @@ +import React from "react"; +import ReactJWPlayer from "react-jw-player"; +import { HotKeys } from "react-hotkeys"; +import * as GQL from "../../../core/generated-graphql"; +import { SceneHelpers } from "../helpers"; +import { ScenePlayerScrubber } from "./ScenePlayerScrubber"; +import { StashService } from "../../../core/StashService"; + +interface IScenePlayerProps { + scene: GQL.SceneDataFragment; + timestamp: number; + autoplay?: boolean; + onReady?: any; + onSeeked?: any; + onTime?: any; + config?: GQL.ConfigInterfaceDataFragment; +} +interface IScenePlayerState { + scrubberPosition: number; +} + +const KeyMap = { + NUM0: "0", + NUM1: "1", + NUM2: "2", + SPACE: " " +} + +export class ScenePlayerImpl extends React.Component { + private player: any; + private lastTime = 0; + + constructor(props: IScenePlayerProps) { + super(props); + this.onReady = this.onReady.bind(this); + this.onSeeked = this.onSeeked.bind(this); + this.onTime = this.onTime.bind(this); + + this.onScrubberSeek = this.onScrubberSeek.bind(this); + this.onScrubberScrolled = this.onScrubberScrolled.bind(this); + + this.state = {scrubberPosition: 0}; + } + + public componentDidUpdate(prevProps: IScenePlayerProps) { + if (prevProps.timestamp !== this.props.timestamp) { + this.player.seek(this.props.timestamp); + } + } + + renderPlayer() { + const config = this.makeJWPlayerConfig(this.props.scene); + return ( + + ); + } + + onIncrease() { + const currentPlaybackRate = !!this.player ? this.player.getPlaybackRate() : 1; + this.player.setPlaybackRate(currentPlaybackRate + 0.5); + }; + onDecrease() { + const currentPlaybackRate = !!this.player ? this.player.getPlaybackRate() : 1; + this.player.setPlaybackRate(currentPlaybackRate - 0.5); + }; + onReset() { this.player.setPlaybackRate(1); }; + onPause() { this.player.getState().paused ? this.player.play() : this.player.pause(); }; + + private KeyHandlers = { + NUM0: () => {this.onReset()}, + NUM1: () => {this.onDecrease()}, + NUM2: () => {this.onIncrease()}, + SPACE: () => {this.onPause()} + } + + public render() { + return ( + +
    + {this.renderPlayer()} + +
    +
    + ); + } + + private shouldRepeat(scene: GQL.SceneDataFragment) { + let maxLoopDuration = this.props.config ? this.props.config.maximumLoopDuration : 0; + return !!scene.file.duration && !!maxLoopDuration && scene.file.duration < maxLoopDuration; + } + + private makeJWPlayerConfig(scene: GQL.SceneDataFragment) { + if (!scene.paths.stream) { return {}; } + + let repeat = this.shouldRepeat(scene); + let getDurationHook: (() => GQL.Maybe) | undefined = undefined; + let seekHook: ((seekToPosition: number, _videoTag: any) => void) | undefined = undefined; + let getCurrentTimeHook: ((_videoTag: any) => number) | undefined = undefined; + + if (!this.props.scene.is_streamable) { + getDurationHook = () => { + return this.props.scene.file.duration; + }; + + seekHook = (seekToPosition: number, _videoTag: any) => { + _videoTag.start = seekToPosition; + _videoTag.src = (this.props.scene.paths.stream + "?start=" + seekToPosition); + _videoTag.play(); + }; + + getCurrentTimeHook = (_videoTag: any) => { + let start = _videoTag.start || 0; + return _videoTag.currentTime + start; + } + } + + let ret = { + file: scene.paths.stream, + image: scene.paths.screenshot, + tracks: [ + { + file: scene.paths.vtt, + kind: "thumbnails", + }, + { + file: scene.paths.chapters_vtt, + kind: "chapters", + }, + ], + aspectratio: "16:9", + width: "100%", + floating: { + dismissible: true, + }, + cast: {}, + primary: "html5", + autostart: this.props.autoplay || (this.props.config ? this.props.config.autostartVideo : false), + repeat: repeat, + playbackRateControls: true, + playbackRates: [0.75, 1, 1.5, 2, 3, 4], + getDurationHook: getDurationHook, + seekHook: seekHook, + getCurrentTimeHook: getCurrentTimeHook + }; + + return ret; + } + + private onReady() { + this.player = SceneHelpers.getPlayer(); + if (this.props.timestamp > 0) { + this.player.seek(this.props.timestamp); + } + } + + private onSeeked() { + const position = this.player.getPosition(); + this.setState({scrubberPosition: position}); + this.player.play(); + } + + private onTime(data: any) { + const position = this.player.getPosition(); + const difference = Math.abs(position - this.lastTime); + if (difference > 1) { + this.lastTime = position; + this.setState({scrubberPosition: position}); + } + } + + private onScrubberSeek(seconds: number) { + this.player.seek(seconds); + } + + private onScrubberScrolled() { + this.player.pause(); + } +} + +export const ScenePlayer: React.FC = (props: IScenePlayerProps) => { + const config = StashService.useConfiguration(); + + return +} diff --git a/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.scss b/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.scss new file mode 100644 index 000000000..1ddcafb7f --- /dev/null +++ b/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.scss @@ -0,0 +1,128 @@ +.scrubber-wrapper { + position: relative; + overflow: hidden; + margin: 5px 0; +} + +#scrubber-back { + float: left; +} + +#scrubber-forward { + float: right; +} + +.scrubber-button { + width: 1.5%; + height: 100%; + line-height: 120px; + padding: 0; + text-align: center; + border: 1px solid #555; + font-weight: 800; + font-size: 20px; + color: #FFF; + cursor: pointer; +} + +.scrubber-content { + -webkit-user-select: none; + -webkit-overflow-scrolling: touch; + cursor: -webkit-grab; + height: 120px; + width: 96%; + margin: 0 0.5%; + display: inline-block; + position: relative; + overflow: hidden; +} + +.scrubber-content.dragging { + cursor: -webkit-grabbing; +} + +.scrubber-tags-background { + background-color: #555; + position: absolute; + left: 0; + right: 0; + height: 20px; +} + +#scrubber-position-indicator { + background-color: #CCC; + width: 100%; + left: -100%; + height: 20px; + z-index: 0; + position: absolute; +} + +#scrubber-current-position { + background-color: #FFF; + width: 2px; + height: 30px; + left: 50%; + z-index: 1; + position: absolute; +} + +.scrubber-viewport { + position: static; + height: 100%; + overflow: hidden; +} + +.scrubber-slider { + position: absolute; + width: 100%; + height: 100%; + left: 0; + transition: 333ms ease-out; +} + +.scrubber-tags { + height: 20px; + position: relative; + margin-bottom: 10px; +} + +.scrubber-tag { + position: absolute; + background-color: #000; + font-size: 10px; + white-space: nowrap; + padding: 0 10px; + cursor: pointer; +} +.scrubber-tag:hover { + z-index: 1; + background-color: #444; +} +.scrubber-tag:after { + content: ""; + position: absolute; + bottom: -5px; + left: 50%; + margin-left: -5px; + border-top: solid 5px #000; + border-left: solid 5px transparent; + border-right: solid 5px transparent; +} + +.scrubber-item { + position: absolute; + display: flex; + margin-right: 10px; + cursor: pointer; + color: white; + text-shadow: 1px 1px black; + text-align: center; + font-size: 10px; +} + +.scrubber-item span { + display: inline-block; + align-self: flex-end; + width: 100%; +} \ No newline at end of file diff --git a/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx b/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx new file mode 100644 index 000000000..e524b6194 --- /dev/null +++ b/ui/v2.5/src/components/scenes/ScenePlayer/ScenePlayerScrubber.tsx @@ -0,0 +1,316 @@ +import axios from "axios"; +import React, { CSSProperties, FunctionComponent, RefObject, useEffect, useRef, useState } from "react"; +import * as GQL from "../../../core/generated-graphql"; +import { TextUtils } from "../../../utils/text"; +import "./ScenePlayerScrubber.scss"; + +interface IScenePlayerScrubberProps { + scene: GQL.SceneDataFragment; + position: number; + onSeek: (seconds: number) => void; + onScrolled: () => void; +} + +interface ISceneSpriteItem { + start: number; + end: number; + x: number; + y: number; + w: number; + h: number; +} + +export const ScenePlayerScrubber: FunctionComponent = (props: IScenePlayerScrubberProps) => { + const contentEl = useRef(null); + const positionIndicatorEl = useRef(null); + const scrubberSliderEl = useRef(null); + const mouseDown = useRef(false); + const lastMouseEvent = useRef(null); + const startMouseEvent = useRef(null); + const velocity = useRef(0); + + const _position = useRef(0); + function getPostion() { return _position.current; } + function setPosition(newPostion: number, shouldEmit: boolean = true) { + if (!scrubberSliderEl.current || !positionIndicatorEl.current) { return; } + if (shouldEmit) { props.onScrolled(); } + + const midpointOffset = scrubberSliderEl.current.clientWidth / 2; + + const bounds = getBounds() * -1; + if (newPostion > midpointOffset) { + _position.current = midpointOffset; + } else if (newPostion < bounds - midpointOffset) { + _position.current = bounds - midpointOffset; + } else { + _position.current = newPostion; + } + + scrubberSliderEl.current.style.transform = `translateX(${_position.current}px)`; + + const indicatorPosition = ( + (newPostion - midpointOffset) / (bounds - (midpointOffset * 2)) * scrubberSliderEl.current.clientWidth + ); + positionIndicatorEl.current.style.transform = `translateX(${indicatorPosition}px)`; + } + + const [spriteItems, setSpriteItems] = useState([]); + const [delayedRender, setDelayedRender] = useState(false); + + useEffect(() => { + if (!scrubberSliderEl.current) { return; } + scrubberSliderEl.current.style.transform = `translateX(${scrubberSliderEl.current.clientWidth / 2}px)`; + }, [scrubberSliderEl]); + + useEffect(() => { + fetchSpriteInfo(); + }, [props.scene]); + + useEffect(() => { + if (!scrubberSliderEl.current) { return; } + const duration = Number(props.scene.file.duration); + const percentage = props.position / duration; + const position = ( + (scrubberSliderEl.current.scrollWidth * percentage) - (scrubberSliderEl.current.clientWidth / 2) + ) * -1; + setPosition(position, false); + }, [props.position]); + + useEffect(() => { + window.addEventListener("mouseup", onMouseUp, false); + return () => { + window.removeEventListener("mouseup", onMouseUp); + }; + }); + + useEffect(() => { + if (!contentEl.current) { return; } + contentEl.current.addEventListener("mousedown", onMouseDown, false); + return () => { + if (!contentEl.current) { return; } + contentEl.current.removeEventListener("mousedown", onMouseDown); + }; + }); + + useEffect(() => { + if (!contentEl.current) { return; } + contentEl.current.addEventListener("mousemove", onMouseMove, false); + return () => { + if (!contentEl.current) { return; } + contentEl.current.removeEventListener("mousemove", onMouseMove); + }; + }); + + function onMouseUp(this: Window, event: MouseEvent) { + if (!startMouseEvent.current || !scrubberSliderEl.current) { return; } + mouseDown.current = false; + const delta = Math.abs(event.clientX - startMouseEvent.current.clientX); + if (delta < 1 && event.target instanceof HTMLDivElement) { + const target: HTMLDivElement = event.target; + let seekSeconds: number | undefined; + + const spriteIdString = target.getAttribute("data-sprite-item-id"); + if (spriteIdString != null) { + const spritePercentage = event.offsetX / target.clientWidth; + const offset = target.offsetLeft + (target.clientWidth * spritePercentage); + const percentage = offset / scrubberSliderEl.current.scrollWidth; + seekSeconds = percentage * (props.scene.file.duration || 0); + } + + const markerIdString = target.getAttribute("data-marker-id"); + if (markerIdString != null) { + const marker = props.scene.scene_markers[Number(markerIdString)]; + seekSeconds = marker.seconds; + } + + if (!!seekSeconds) { props.onSeek(seekSeconds); } + } else if (Math.abs(velocity.current) > 25) { + const newPosition = getPostion() + (velocity.current * 10); + setPosition(newPosition); + velocity.current = 0; + } + } + + function onMouseDown(this: HTMLDivElement, event: MouseEvent) { + event.preventDefault(); + mouseDown.current = true; + lastMouseEvent.current = event; + startMouseEvent.current = event; + velocity.current = 0; + } + + function onMouseMove(this: HTMLDivElement, event: MouseEvent) { + if (!mouseDown.current) { return; } + + // negative dragging right (past), positive left (future) + const delta = event.clientX - lastMouseEvent.current.clientX; + + const movement = event.movementX; + velocity.current = movement; + + const newPostion = getPostion() + delta; + setPosition(newPostion); + lastMouseEvent.current = event; + } + + function getBounds(): number { + if (!scrubberSliderEl.current || !positionIndicatorEl.current) { return 0; } + return scrubberSliderEl.current.scrollWidth - scrubberSliderEl.current.clientWidth; + } + + function goBack() { + if (!scrubberSliderEl.current) { return; } + const newPosition = getPostion() + scrubberSliderEl.current.clientWidth; + setPosition(newPosition); + } + + function goForward() { + if (!scrubberSliderEl.current) { return; } + const newPosition = getPostion() - scrubberSliderEl.current.clientWidth; + setPosition(newPosition); + } + + async function fetchSpriteInfo() { + if (!props.scene || !props.scene.paths.vtt) { return; } + + const response = await axios.get(props.scene.paths.vtt, {responseType: "text"}); + if (response.status !== 200) { + console.log(response.statusText); + } + + // TODO: This is gnarly + const lines = response.data.split("\n"); + if (lines.shift() !== "WEBVTT") { return; } + if (lines.shift() !== "") { return; } + let item: ISceneSpriteItem = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0}; + const newSpriteItems: ISceneSpriteItem[] = []; + while (lines.length) { + const line = lines.shift(); + if (line === undefined) { continue; } + + if (line.includes("#") && line.includes("=") && line.includes(",")) { + const size = line.split("#")[1].split("=")[1].split(","); + item.x = Number(size[0]); + item.y = Number(size[1]); + item.w = Number(size[2]); + item.h = Number(size[3]); + + newSpriteItems.push(item); + item = {start: 0, end: 0, x: 0, y: 0, w: 0, h: 0}; + } else if (line.includes(" --> ")) { + const times = line.split(" --> "); + + const start = times[0].split(":"); + item.start = (+start[0]) * 60 * 60 + (+start[1]) * 60 + (+start[2]); + + const end = times[1].split(":"); + item.end = (+end[0]) * 60 * 60 + (+end[1]) * 60 + (+end[2]); + } + } + + setSpriteItems(newSpriteItems); + // TODO: Very hacky. Need to wait for the scroll width to update from the image loading. + setTimeout(() => { + setDelayedRender(true); + }, 100); + } + + function renderTags() { + function getTagStyle(i: number): CSSProperties { + if (!scrubberSliderEl.current || + spriteItems.length === 0 || + getBounds() === 0) { return {}; } + + const tags = window.document.getElementsByClassName("scrubber-tag"); + if (tags.length === 0) { return {}; } + + let tag: any; + for (let index = 0; index < tags.length; index++) { + tag = tags.item(index) as any; + const id = tag.getAttribute("data-marker-id"); + if (id === i.toString()) { + break; + } + } + + const marker = props.scene.scene_markers[i]; + const duration = Number(props.scene.file.duration); + const percentage = marker.seconds / duration; + + const left = (scrubberSliderEl.current.scrollWidth * percentage) - (tag.clientWidth / 2); + return { + left: `${left}px`, + height: 20, + }; + } + + return props.scene.scene_markers.map((marker, index) => { + const dataAttrs = { + "data-marker-id": index, + }; + return ( +
    + {marker.title} +
    + ); + }); + } + + function renderSprites() { + function getStyleForSprite(index: number): CSSProperties { + if (!props.scene.paths.vtt) { return {}; } + const sprite = spriteItems[index]; + const left = sprite.w * index; + const path = props.scene.paths.vtt.replace("_thumbs.vtt", "_sprite.jpg"); // TODO: Gnarly + return { + width: `${sprite.w}px`, + height: `${sprite.h}px`, + margin: "0px auto", + backgroundPosition: -sprite.x + "px " + -sprite.y + "px", + backgroundImage: `url(${path})`, + left: `${left}px`, + }; + } + + return spriteItems.map((spriteItem, index) => { + const dataAttrs = { + "data-sprite-item-id": index, + }; + return ( +
    + {TextUtils.secondsToTimestamp(spriteItem.start)} - {TextUtils.secondsToTimestamp(spriteItem.end)} +
    + ); + }); + } + + return ( +
    + goBack()}>< +
    +
    +
    +
    +
    +
    +
    + {renderTags()} +
    + {renderSprites()} +
    +
    +
    + goForward()}>> +
    + ); +}; diff --git a/ui/v2.5/src/components/scenes/SceneSelectedOptions.tsx b/ui/v2.5/src/components/scenes/SceneSelectedOptions.tsx new file mode 100644 index 000000000..da3941dd7 --- /dev/null +++ b/ui/v2.5/src/components/scenes/SceneSelectedOptions.tsx @@ -0,0 +1,301 @@ +import _ from "lodash"; +import { Button, ButtonGroup, Form, Spinner } from 'react-bootstrap'; +import React, { useEffect, useState } from "react"; +import { FilterSelect } from "../select/FilterSelect"; +import { FilterMultiSelect } from "../select/FilterMultiSelect"; +import { StashService } from "../../core/StashService"; +import * as GQL from "../../core/generated-graphql"; +import { ErrorUtils } from "../../utils/errors"; +import { ToastUtils } from "../../utils/toasts"; + +interface IListOperationProps { + selected: GQL.SlimSceneDataFragment[], + onScenesUpdated: () => void; +} + +export const SceneSelectedOptions: React.FC = (props: IListOperationProps) => { + const [rating, setRating] = useState(""); + const [studioId, setStudioId] = useState(undefined); + const [performerIds, setPerformerIds] = useState(undefined); + const [tagIds, setTagIds] = useState(undefined); + + const updateScenes = StashService.useBulkSceneUpdate(getSceneInput()); + + // Network state + const [isLoading, setIsLoading] = useState(false); + + function getSceneInput() : GQL.BulkSceneUpdateInput { + // need to determine what we are actually setting on each scene + var aggregateRating = getRating(props.selected); + var aggregateStudioId = getStudioId(props.selected); + var aggregatePerformerIds = getPerformerIds(props.selected); + var aggregateTagIds = getTagIds(props.selected); + + var sceneInput : GQL.BulkSceneUpdateInput = { + ids: props.selected.map((scene) => { + return scene.id; + }) + }; + + // if rating is undefined + if (rating === "") { + // and all scenes have the same rating, then we are unsetting the rating. + if(aggregateRating) { + // an undefined rating is ignored in the server, so set it to 0 instead + sceneInput.rating = 0; + } + // otherwise not setting the rating + } else { + // if rating is set, then we are setting the rating for all + sceneInput.rating = Number.parseInt(rating); + } + + // if studioId is undefined + if (studioId === undefined) { + // and all scenes have the same studioId, + // then unset the studioId, otherwise ignoring studioId + if (aggregateStudioId) { + // an undefined studio_id is ignored in the server, so set it to empty string instead + sceneInput.studio_id = ""; + } + } else { + // if studioId is set, then we are setting it + sceneInput.studio_id = studioId; + } + + // if performerIds are empty + if (!performerIds || performerIds.length === 0) { + // and all scenes have the same ids, + if (aggregatePerformerIds.length > 0) { + // then unset the performerIds, otherwise ignore + sceneInput.performer_ids = performerIds; + } + } else { + // if performerIds non-empty, then we are setting them + sceneInput.performer_ids = performerIds; + } + + // if tagIds non-empty, then we are setting them + if (!tagIds || tagIds.length === 0) { + // and all scenes have the same ids, + if (aggregateTagIds.length > 0) { + // then unset the tagIds, otherwise ignore + sceneInput.tag_ids = tagIds; + } + } else { + // if tagIds non-empty, then we are setting them + sceneInput.tag_ids = tagIds; + } + + return sceneInput; + } + + async function onSave() { + setIsLoading(true); + try { + const result = await updateScenes(); + ToastUtils.success("Updated scenes"); + } catch (e) { + ErrorUtils.handle(e); + } + setIsLoading(false); + props.onScenesUpdated(); + } + + function getRating(state: GQL.SlimSceneDataFragment[]) { + var ret : number | undefined; + var first = true; + + state.forEach((scene : GQL.SlimSceneDataFragment) => { + if (first) { + ret = scene.rating; + first = false; + } else { + if (ret !== scene.rating) { + ret = undefined; + } + } + }); + + return ret; + } + + function getStudioId(state: GQL.SlimSceneDataFragment[]) { + var ret : string | undefined; + var first = true; + + state.forEach((scene : GQL.SlimSceneDataFragment) => { + if (first) { + ret = scene.studio ? scene.studio.id : undefined; + first = false; + } else { + var studioId = scene.studio ? scene.studio.id : undefined; + if (ret != studioId) { + ret = undefined; + } + } + }); + + return ret; + } + + function toId(object : any) { + return object.id; + } + + function getPerformerIds(state: GQL.SlimSceneDataFragment[]) { + var ret : string[] = []; + var first = true; + + state.forEach((scene : GQL.SlimSceneDataFragment) => { + if (first) { + ret = !!scene.performers ? scene.performers.map(toId).sort() : []; + first = false; + } else { + const perfIds = !!scene.performers ? scene.performers.map(toId).sort() : []; + + if (!_.isEqual(ret, perfIds)) { + ret = []; + } + } + }); + + return ret; + } + + function getTagIds(state: GQL.SlimSceneDataFragment[]) { + var ret : string[] = []; + var first = true; + + state.forEach((scene : GQL.SlimSceneDataFragment) => { + if (first) { + ret = !!scene.tags ? scene.tags.map(toId).sort() : []; + first = false; + } else { + const tIds = !!scene.tags ? scene.tags.map(toId).sort() : []; + + if (!_.isEqual(ret, tIds)) { + ret = []; + } + } + }); + + return ret; + } + + function updateScenesEditState(state: GQL.SlimSceneDataFragment[]) { + function toId(object : any) { + return object.id; + } + + var rating : string = ""; + var studioId : string | undefined; + var performerIds : string[] = []; + var tagIds : string[] = []; + var first = true; + + state.forEach((scene : GQL.SlimSceneDataFragment) => { + var thisRating = scene.rating ? scene.rating.toString() : ""; + var thisStudio = scene.studio ? scene.studio.id : undefined; + + if (first) { + rating = thisRating; + studioId = thisStudio; + performerIds = !!scene.performers ? scene.performers.map(toId).sort() : []; + tagIds = !!scene.tags ? scene.tags.map(toId).sort() : []; + first = false; + } else { + if (rating !== thisRating) { + rating = ""; + } + if (studioId != thisStudio) { + studioId = undefined; + } + const perfIds = !!scene.performers ? scene.performers.map(toId).sort() : []; + const tIds = !!scene.tags ? scene.tags.map(toId).sort() : []; + + if (!_.isEqual(performerIds, perfIds)) { + performerIds = []; + } + + if (!_.isEqual(tagIds, tIds)) { + tagIds = []; + } + } + }); + + setRating(rating); + setStudioId(studioId); + setPerformerIds(performerIds); + setTagIds(tagIds); + } + + useEffect(() => { + updateScenesEditState(props.selected); + }, [props.selected]); + + function renderMultiSelect(type: "performers" | "tags", initialIds: string[] | undefined) { + return ( + { + const ids = items.map((i) => i.id); + switch (type) { + case "performers": setPerformerIds(ids); break; + case "tags": setTagIds(ids); break; + } + }} + initialIds={initialIds} + /> + ); + } + + function render() { + return ( + <> + {isLoading ? : undefined} +
    + + Rating + setRating(event.target.value)}> + { ["", 1, 2, 3, 4, 5].map(opt => ( + + )) } + + + + + Studio + setStudioId(item ? item.id : undefined)} + initialId={studioId} + /> + + + + Performers + {renderMultiSelect("performers", performerIds)} + + + + Performers + {renderMultiSelect("tags", tagIds)} + + + + + +
    + + ); + } + + return render(); +}; diff --git a/ui/v2.5/src/components/scenes/helpers.tsx b/ui/v2.5/src/components/scenes/helpers.tsx new file mode 100644 index 000000000..b6c195786 --- /dev/null +++ b/ui/v2.5/src/components/scenes/helpers.tsx @@ -0,0 +1,34 @@ +import React, { } from "react"; +import { Link } from "react-router-dom"; +import * as GQL from "../../core/generated-graphql"; + +export class SceneHelpers { + public static maybeRenderStudio( + scene: GQL.SceneDataFragment | GQL.SlimSceneDataFragment, + height: number + ) { + if (!scene.studio) + return; + const style: React.CSSProperties = { + backgroundImage: `url('${scene.studio.image_path}')`, + width: "100%", + height: `${height}px`, + lineHeight: 5, + backgroundSize: "contain", + display: "inline-block", + backgroundPosition: "center", + backgroundRepeat: "no-repeat", + }; + return ( + + ); + } + + public static getJWPlayerId(): string { return "main-jwplayer"; } + public static getPlayer(): any { + return (window as any).jwplayer("main-jwplayer"); + } +} diff --git a/ui/v2.5/src/components/scenes/scenes.tsx b/ui/v2.5/src/components/scenes/scenes.tsx new file mode 100644 index 000000000..4efeec38b --- /dev/null +++ b/ui/v2.5/src/components/scenes/scenes.tsx @@ -0,0 +1,15 @@ +import React from "react"; +import { Route, Switch } from "react-router-dom"; +import { Scene } from "./SceneDetails/Scene"; +import { SceneList } from "./SceneList"; +import { SceneMarkerList } from "./SceneMarkerList"; + +const Scenes = () => ( + + + + + +); + +export default Scenes; diff --git a/ui/v2.5/src/components/select/FilterMultiSelect.tsx b/ui/v2.5/src/components/select/FilterMultiSelect.tsx new file mode 100644 index 000000000..a5c8d7462 --- /dev/null +++ b/ui/v2.5/src/components/select/FilterMultiSelect.tsx @@ -0,0 +1,190 @@ +import * as React from "react"; + +import { MenuItem } from "@blueprintjs/core"; +import { IMultiSelectProps, ItemPredicate, ItemRenderer, MultiSelect } from "@blueprintjs/select"; +import * as GQL from "../../core/generated-graphql"; +import { StashService } from "../../core/StashService"; +import { HTMLInputProps } from "../../models"; +import { ErrorUtils } from "../../utils/errors"; +import { ToastUtils } from "../../utils/toasts"; + +const InternalPerformerMultiSelect = MultiSelect.ofType(); +const InternalTagMultiSelect = MultiSelect.ofType(); +const InternalStudioMultiSelect = MultiSelect.ofType(); + +type ValidTypes = + GQL.AllPerformersForFilterAllPerformers | + GQL.AllTagsForFilterAllTags | + GQL.AllStudiosForFilterAllStudios; + +interface IProps extends HTMLInputProps, Partial> { + type: "performers" | "studios" | "tags"; + initialIds?: string[]; + onUpdate: (items: ValidTypes[]) => void; +} + +export const FilterMultiSelect: React.FunctionComponent = (props: IProps) => { + let MultiSelectImpl = getMultiSelectImpl(); + let InternalMultiSelect = MultiSelectImpl.getInternalMultiSelect(); + const data = MultiSelectImpl.getData(); + + const [selectedItems, setSelectedItems] = React.useState([]); + const [items, setItems] = React.useState([]); + const [newTagName, setNewTagName] = React.useState(""); + const createTag = StashService.useTagCreate(getTagInput() as GQL.TagCreateInput); + + React.useEffect(() => { + if (!!data) { + MultiSelectImpl.translateData(); + } + }, [data]); + + function getTagInput() { + const tagInput: Partial = { name: newTagName }; + return tagInput; + } + + async function onCreateNewObject(item: ValidTypes) { + var created : any; + if (props.type === "tags") { + try { + created = await createTag(); + + items.push(created.data.tagCreate); + setItems(items.slice()); + addSelectedItem(created.data.tagCreate); + + ToastUtils.success("Created tag"); + } catch (e) { + ErrorUtils.handle(e); + } + } + } + + function createNewTag(query : string) { + setNewTagName(query); + return { + name : query + }; + } + + function createNewRenderer(query: string, active: boolean, handleClick: React.MouseEventHandler) { + // if tag already exists with that name, then don't return anything + if (items.find((item) => { + return item.name === query; + })) { + return undefined; + } + + return ( + + ); + } + + React.useEffect(() => { + if (!!props.initialIds && !!items) { + const initialItems = items.filter((item) => props.initialIds!.includes(item.id)); + setSelectedItems(initialItems); + } + }, [props.initialIds, items]); + + function getMultiSelectImpl() { + let getInternalMultiSelect: () => new (props: IMultiSelectProps) => MultiSelect; + let getData: () => GQL.AllPerformersForFilterQuery | GQL.AllStudiosForFilterQuery | GQL.AllTagsForFilterQuery | undefined; + let translateData: () => void; + let createNewObject: ((query : string) => void) | undefined = undefined; + + switch (props.type) { + case "performers": { + getInternalMultiSelect = () => { return InternalPerformerMultiSelect; }; + getData = () => { const { data } = StashService.useAllPerformersForFilter(); return data; } + translateData = () => { let perfData = data as GQL.AllPerformersForFilterQuery; setItems(!!perfData && !!perfData.allPerformers ? perfData.allPerformers : []); }; + break; + } + case "studios": { + getInternalMultiSelect = () => { return InternalStudioMultiSelect; }; + getData = () => { const { data } = StashService.useAllStudiosForFilter(); return data; } + translateData = () => { let studioData = data as GQL.AllStudiosForFilterQuery; setItems(!!studioData && !!studioData.allStudios ? studioData.allStudios : []); }; + break; + } + case "tags": { + getInternalMultiSelect = () => { return InternalTagMultiSelect; }; + getData = () => { const { data } = StashService.useAllTagsForFilter(); return data; } + translateData = () => { let tagData = data as GQL.AllTagsForFilterQuery; setItems(!!tagData && !!tagData.allTags ? tagData.allTags : []); }; + createNewObject = createNewTag; + break; + } + default: { + throw "Unhandled case in FilterMultiSelect"; + } + } + + return { + getInternalMultiSelect: getInternalMultiSelect, + getData: getData, + translateData: translateData, + createNewObject: createNewObject + }; + } + + const renderItem: ItemRenderer = (item, itemProps) => { + if (!itemProps.modifiers.matchesPredicate) { return null; } + return ( + + ); + }; + + const filter: ItemPredicate = (query, item) => { + if (selectedItems.includes(item)) { return false; } + return item.name!.toLowerCase().indexOf(query.toLowerCase()) >= 0; + }; + + function addSelectedItem(item: ValidTypes) { + selectedItems.push(item); + setSelectedItems(selectedItems); + props.onUpdate(selectedItems); + } + + function onItemSelect(item: ValidTypes) { + if (item.id === undefined) { + // create the new item, if applicable + onCreateNewObject(item); + } else { + addSelectedItem(item); + } + } + + function onItemRemove(value: string, index: number) { + const newSelectedItems = selectedItems.filter((_, i) => i !== index); + setSelectedItems(newSelectedItems); + props.onUpdate(newSelectedItems); + } + + return ( + tag.name} + tagInputProps={{ onRemove: onItemRemove }} + onItemSelect={onItemSelect} + resetOnSelect={true} + popoverProps={{position: "bottom"}} + createNewItemFromQuery={MultiSelectImpl.createNewObject} + createNewItemRenderer={createNewRenderer} + {...props} + /> + ); +}; diff --git a/ui/v2.5/src/components/select/FilterSelect.tsx b/ui/v2.5/src/components/select/FilterSelect.tsx new file mode 100644 index 000000000..b906667db --- /dev/null +++ b/ui/v2.5/src/components/select/FilterSelect.tsx @@ -0,0 +1,117 @@ +import * as React from "react"; + +import { Button, MenuItem } from "@blueprintjs/core"; +import { ISelectProps, ItemPredicate, ItemRenderer, Select } from "@blueprintjs/select"; +import * as GQL from "../../core/generated-graphql"; +import { StashService } from "../../core/StashService"; +import { HTMLInputProps } from "../../models"; + +const InternalPerformerSelect = Select.ofType(); +const InternalTagSelect = Select.ofType(); +const InternalStudioSelect = Select.ofType(); + +type ValidTypes = + GQL.AllPerformersForFilterAllPerformers | + GQL.AllTagsForFilterAllTags | + GQL.AllStudiosForFilterAllStudios; + +interface IProps extends HTMLInputProps { + type: "performers" | "studios" | "tags"; + initialId?: string; + noSelectionString?: string; + onSelectItem: (item: ValidTypes | undefined) => void; +} + +function addNoneOption(items: ValidTypes[]) { + // Add a none option to clear the gallery + if (!items.find((item) => item.id === "0")) { items.unshift({id: "0", name: "None"}); } +} + +export const FilterSelect: React.FunctionComponent = (props: IProps) => { + let items: ValidTypes[]; + let InternalSelect: new (props: ISelectProps) => Select; + switch (props.type) { + case "performers": { + const { data } = StashService.useAllPerformersForFilter(); + items = !!data && !!data.allPerformers ? data.allPerformers : []; + addNoneOption(items); + InternalSelect = InternalPerformerSelect; + break; + } + case "studios": { + const { data } = StashService.useAllStudiosForFilter(); + items = !!data && !!data.allStudios ? data.allStudios : []; + addNoneOption(items); + InternalSelect = InternalStudioSelect; + break; + } + case "tags": { + const { data } = StashService.useAllTagsForFilter(); + items = !!data && !!data.allTags ? data.allTags : []; + InternalSelect = InternalTagSelect; + break; + } + default: { + console.error("Unhandled case in FilterSelect"); + return <>Unhandled case in FilterSelect; + } + } + + /* eslint-disable react-hooks/rules-of-hooks */ + const [selectedItem, setSelectedItem] = React.useState(undefined); + + React.useEffect(() => { + if (!!items) { + const initialItem = items.find((item) => props.initialId === item.id); + if (!!initialItem) { + setSelectedItem(initialItem); + } else { + setSelectedItem(undefined); + } + } + }, [props.initialId, items]); + /* eslint-enable */ + + const renderItem: ItemRenderer = (item, itemProps) => { + if (!itemProps.modifiers.matchesPredicate) { return null; } + return ( + + ); + }; + + const filter: ItemPredicate = (query, item) => { + return item.name!.toLowerCase().indexOf(query.toLowerCase()) >= 0; + }; + + function onItemSelect(item: ValidTypes | undefined) { + if (item && item.id == "0") { + item = undefined; + } + + props.onSelectItem(item); + setSelectedItem(item); + } + + const noSelection = props.noSelectionString !== undefined ? props.noSelectionString : "(No selection)" + const buttonText = selectedItem ? selectedItem.name : noSelection; + return ( + } + onItemSelect={onItemSelect} + popoverProps={{position: "bottom"}} + {...props} + > +