The Engine | 2019 FIFA Women’s World Cup on FOX & FS1
‘, ‘‘, ‘See Full Coverage’, ‘‘, ‘
‘, ‘close‘, ‘
‘, ”, ”];
if (!isSmallContainer) {
var flags = [‘
‘, ‘
vs
‘, ‘
‘, ‘
‘].join(”);
endcardLayout.splice(2, 0, flags);
}
endcardLayout = endcardLayout.join(”);
playerElem.insertAdjacentHTML(‘afterend’, endcardLayout);
var endcardElem = document.getElementById(endcardLayoutId);
var endcardCloseElem = document.getElementById(endcardLayoutCloseId);
var endcardFullCavElem = document.getElementById(endcardFullCavId);
var seconds = 0;
var timeInterval = setInterval(function () {
if (seconds === 9) {
endcardCloseClick();
return;
}
seconds++;
}, 1000);
var endacardFullCavClick = function endacardFullCavClick() {
return window.open(fullCoverageUrl, target);
};
if (!isEmbed) {
endcardFullCavElem.addEventListener(‘click’, endacardFullCavClick);
}
var endcardCloseClick = function endcardCloseClick(e) {
endcardCloseElem.removeEventListener(‘click’, endcardCloseClick);
!isEmbed && endcardFullCavElem.removeEventListener(‘click’, endacardFullCavClick);
clearInterval(timeInterval);
endcardElem.remove();
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_0__[“default”].dispatchEvent(‘onForcePlay’, {
player: data.player
});
};
endcardCloseElem.addEventListener(‘click’, endcardCloseClick);
}
}]);
return FsVideoWcEndcard;
}();
/* harmony default export */ __webpack_exports__[“default”] = (new FsVideoWcEndcard());
/***/ }),
/***/ “./assets/components/platformPlayer/Pinner.js”:
/*!****************************************************!*
!*** ./assets/components/platformPlayer/Pinner.js ***!
****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _components_fsUtils_Viewports__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../components/fsUtils/Viewports */ “./assets/components/fsUtils/Viewports.js”);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(“Cannot call a class as a function”); } }
function _defineProperties(target, props) { for (var i = 0; i 0) {
while (i–) {
var el = arr[i];
if (el.elem === ‘Video’ + vid.id || el.elemId === ‘Video’ + vid.id) {
return true;
}
}
}
return false;
}
}, {
key: “loadVideos”,
value: function loadVideos(Player, videoElementsData) {
var sendPageView = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var context = this;
var videos = videoElementsData || context.getVideoElementsData();
if (videos.length > 0) {
videos.map(function (videoData) {
if (!window.fngPlayers) window.fngPlayers = [];
if (!context.ArrayContainsVideo(window.fngPlayers, videoData)) {
Object(_foxdcg_fs_segment_analytics__WEBPACK_IMPORTED_MODULE_3__[“getAuthData”])().then(function (res) {
videoData.auth = res;
var videoPlayer = new _components_jw_player_JWPlayer__WEBPACK_IMPORTED_MODULE_1__[“default”](Player, videoData);
videoData.sendPageView = sendPageView;
window.fngPlayers.push(videoPlayer);
});
}
});
}
}
}, {
key: “loadPlatformVideos”,
value: function loadPlatformVideos(FDM_Player, videoElementsData) {
var sendPageView = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var context = this;
var videos = videoElementsData || context.getVideoElementsData();
if (videos.length > 0) {
videos.map(function (videoData) {
if (!window.fdmPlayer) window.fdmPlayer = [];
if (!context.ArrayContainsVideo(window.fdmPlayer, videoData)) {
var videoPlayer = new _fsVideo__WEBPACK_IMPORTED_MODULE_0__[“default”]();
videoData.sendPageView = sendPageView;
videoPlayer.initializeFSPlayer(videoData, FDM_Player);
window.fdmPlayer.push(videoPlayer.player);
}
});
}
}
}, {
key: “loadScript”,
value: function loadScript(callback, videoElementsData, sendPageView) {
if (typeof FDM_Player === ‘function’) {
callback(FDM_Player, videoElementsData, sendPageView);
} else {
// Create a new script and setup the basics.
var script = document.createElement(“script”);
var firstScript = document.getElementsByTagName(‘script’)[0];
script.async = false;
script.src = function (loc) {
var metaEl = document.querySelector(‘[fs-prop=”video”]’);
var scripturl = metaEl && metaEl.getAttribute(“script”);
if (scripturl === null) {
scripturl = ‘//player.foxdcg.com/sports’;
}
if (window.location.search.indexOf(‘debugVideoPlayer’) > -1) {
if (scripturl.indexOf(‘?’) > -1) scripturl = scripturl + ‘&debug=all’;else scripturl = scripturl + ‘?debug=all’;
}
return scripturl;
}(window.location); // Handle the case where an optional callback was passed in.
script.onload = function () {
if (typeof FDM_Player === ‘function’) {
callback(FDM_Player, videoElementsData, sendPageView);
} else if (typeof FNGPlayer.default === ‘function’) {
callback(FNGPlayer, videoElementsData, sendPageView);
} else {
throw new Error(‘FDM_Player failed to load’);
} // Clear it out to avoid getting called more than once or any memory leaks.
script.onload = script.onreadystatechange = undefined;
}.bind(this);
script.onreadystatechange = function () {
if (“loaded” === script.readyState || “complete” === script.readyState) {
script.onload();
}
}; //Attach the script tag to the page (before the first script) so the magic can happen.
firstScript.parentNode.insertBefore(script, firstScript);
}
return this;
}
}]);
return criticalVideoLoader;
}();
window.criticalVideoLoader = new criticalVideoLoader();
/* harmony default export */ __webpack_exports__[“default”] = (criticalVideoLoader);
/***/ }),
/***/ “./assets/components/platformPlayer/fsVideo.js”:
/*!*****************************************************!*
!*** ./assets/components/platformPlayer/fsVideo.js ***!
*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _Pinner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Pinner */ “./assets/components/platformPlayer/Pinner.js”);
/* harmony import */ var _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/fsUtils/TrackingUtils */ “./assets/components/fsUtils/TrackingUtils.js”);
/* harmony import */ var _FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FsVideoEventHandler */ “./assets/components/platformPlayer/FsVideoEventHandler.js”);
/* harmony import */ var _components_fsUtils_Viewports__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/fsUtils/Viewports */ “./assets/components/fsUtils/Viewports.js”);
/* harmony import */ var _fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../fsUtils/fsPlayerUtils */ “./assets/components/fsUtils/fsPlayerUtils.js”);
function _typeof(obj) { if (typeof Symbol === “function” && typeof Symbol.iterator === “symbol”) { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === “function” && obj.constructor === Symbol && obj !== Symbol.prototype ? “symbol” : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(“Cannot call a class as a function”); } }
function _defineProperties(target, props) { for (var i = 0; i .trending-title’);
_this.urlQuery = location.search;
_this.isModalEnabled = document.body.classList.contains(‘video-modal’);
_this.bodySection = document.querySelector(‘.body-content’);
_this.isSectionFront = document.body.classList.contains(‘single-fox_sectionfront’);
_this.isCollectionSF = !!document.querySelector(‘.collections-section-front’);
_this.isMediaHub = document.body.classList.contains(‘single-fox_media_hub’);
_this.isBB = _this.bodySection ? _this.bodySection.classList.contains(‘body-content-big-board’) : false;
_this.viewports = new _components_fsUtils_Viewports__WEBPACK_IMPORTED_MODULE_3__[“default”]();
_this.currentUrl = location.href;
if (trendingTitleEl != null) {
_this.collectionOneUtm.term = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].formatStringAsSlug(trendingTitleEl.innerHTML);
}
return _this;
}
_createClass(FsVideo, [{
key: “initPlayer”,
value: function initPlayer(playerId, playerData) {
//init player
var player = new FDM_Player(playerId); // set player settings directly
player.autoplay = playerData.autoplay;
player.share_embed = playerData.share_embed;
player.endcard = playerData.endcard;
player.endcard_feed = playerData.endcard_feed;
player.endcard_countdown = playerData.endcard_countdown;
player.releaseURL = playerData.releaseURL;
player.tag = playerData.tag ? playerData.tag : ”;
player.title = playerData.title ? playerData.title : ”;
player.vid = playerData.vid ? playerData.vid : null;
player.url = playerData.url ? playerData.url : ”;
player.endcard_autoadvance = playerData.endcard_autoadvance ? playerData.endcard_autoadvance : false;
player.siteSection = playerData.siteSection ? playerData.siteSection : ”;
if (playerData.categoryName) player.categoryName = playerData.categoryName;
if (playerData.adpol) player.freewheel_keyvalue = encodeURIComponent(‘adpol=’ + playerData.adpol);
if (playerData.wcEndcard) player.wcEndcard = playerData.wcEndcard;
return player;
}
/**
* gets player data from url
*/
}, {
key: “getPlayerDataFromUrl”,
value: function getPlayerDataFromUrl() {
var urlQuery = location.search;
var videourl = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “videourl”);
var autoplay = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “autoplay”);
var share = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “share”);
var endcard_feed = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “endcard_feed”);
var siteSection = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “siteSection”);
var category = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “category”);
var endcard_autoadvance = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “endcard_autoadvance”);
var url = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “url”);
var isAmp = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “amp”);
var host = location.protocol + ‘//’ + location.hostname + ‘/’;
var deepLink = “http://www.foxsports.com/” + category + ‘/video/’;
var iframeurl = host + ‘video-embed?videourl=’ + videourl + ‘&share=’ + share + ‘&siteSection=’ + siteSection + ‘&autoplay=’ + autoplay + ‘&category=’ + category + ‘&endcard_autoadvance=’ + endcard_autoadvance + (endcard_feed ? ‘&endcard_feed=’ + endcard_feed : ”);
var isWCEndacrd = Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “wcEndcard”) === ‘true’;
var vid = decodeURIComponent(url).split(‘/’).pop();
var wcEndcard = false;
if (isWCEndacrd) {
wcEndcard = {
homeTeamCountryImgSrc: decodeURIComponent(Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “homeTeam”)),
awayTeamCountryImgSrc: decodeURIComponent(Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “awayTeam”)),
fullCoverageUrl: “https://www.foxsports.com” + decodeURIComponent(Object(_fsUtils_fsPlayerUtils__WEBPACK_IMPORTED_MODULE_4__[“getParam”])(urlQuery, “fcUrl”))
};
}
return {
releaseURL: decodeURIComponent(videourl),
autoplay: autoplay,
share: share,
endcard_feed: decodeURIComponent(endcard_feed),
isAmp: isAmp,
siteSection: siteSection,
category: category,
endcard_autoadvance: endcard_autoadvance,
url: url,
deeplink: deepLink,
iframeurl: iframeurl,
vid: vid,
wcEndcard: wcEndcard
};
}
/**
* initializes FS video embed player
* @param {*} data – player data
*/
}, {
key: “initializeFSPlayer”,
value: function initializeFSPlayer(data) {
this.playerData = this.preparePlayerData(data);
this.elId = this.getPlayerElement(this.playerData).id;
this.el = document.getElementById(this.elId);
this.utmObj = {}; //check if player has its own utm params
if (typeof this.playerData.utm !== ‘undefined’) {
this.utmObj = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getUtmObj(this.playerData.utm);
} else {
this.utmObj = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getUtmObj(_components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getUtmParams(this.playerData.pageName));
} //init player
this.player = this.initPlayer(this.elId, this.playerData);
this.isPlaying = false;
this.isPaused = false;
this.isFullScreen = false; //init an empty set that will keep track all the videos that have been played
this.playedVideos = new Set();
this.sendPageView = data.sendPageView; // set player settings using functions
this.setPlayerShare();
this.setPlayerEvents();
document.addEventListener(‘visibilitychange’, this.onVisibilityChange.bind(this)); //start pinning from Pinner.js. Dont enable on iphone
!this.isIphone() && this.startPinning();
this.saveToPlayerCollection();
}
/**
* initializes FS video embed player
*/
}, {
key: “initializeFSEmbedPlayer”,
value: function initializeFSEmbedPlayer() {
//init player
var playerData = this.getPlayerDataFromUrl();
this.player = this.initPlayer(“player”, playerData);
this.utmObj = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getUtmObj({
‘medium’: playerData.isAmp ? “amp_video_player” : “embed_video_player”,
‘source’: ’embed-video-page’,
‘content’: playerData.category,
‘term’: ”
});
if (playerData.share) {
this.player.share = {
deeplinkfunc: function deeplinkfunc(z, A) {
return playerData.deeplink + z;
},
embed: true,
iframeurl: playerData.iframeurl,
emailscript: “”,
sharetargets: [{
name: “Facebook”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNTgwMTE3NDA3MjA2ODExODA4M0NDMTM4MEMyQTVFQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOUMxMDdGMkE2MTYxMUUyOEJFQUJDRTMzOERDQjM5MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOUMxMDdGMUE2MTYxMUUyOEJFQUJDRTMzOERDQjM5MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUM3QUJGQTkzODIwNjgxMThDMTQ5OEFGOTgxQUJBQ0UiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDU4MDExNzQwNzIwNjgxMTgwODNDQzEzODBDMkE1RUIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4rzsvUAAADP0lEQVR42uycvU9TURiHX9ryESiiFoEIAQQDVkUGRaMghkAgGhMSNcpAiDoxkKiJRhmdhD/BQQcndVcUN4MmLiRGEye0lIIJiECQUuiHnlOLG4OX1ntanyf5Le29afs+vfc995ybm9V86YEkqFQZVDmjUq7iFEglEZUZlecq91T8+kVH4s0ulY8q/QkxyEg9rkStdc0/qHRuCKlWeaJSSI1sY5vKU5UqLeS2ShE1sR3t4I4j0TPADE47Eg0czKDCQQM3CqeDGpgFQhACCEEIIAQhkApclOA32S6HNHrLpKGuVOr2eGR3iVuKd+ZLbrZL8nJdEg5HJbQeiW+7GorIcnBdlld01mT++6p8W1iR2fmgzC8G5d37AEKssrfaIxe69supo5VSWJC7ubBsZzwavV2Jp2DTbVt6HiLkb6koLZKBviZpOVzJKctOsrJEznUekIHeI3/+8Qix68c6HTLY3ypdJ2to6iY07bvX2qS1qYphrwlcv3zceBn/jZCO5lrp7qjnwtAE9BD1xpVjXKmbQm/3ISly5yHEBNz5OXK+y5tW3zmjhZxtq49PeyDEENpP1KTdd85YIcU7CmRfjQchptDoLY1Pk6TdbEKmCvHW7trS/tFoTF6OfZa341PyaWJOlpZDElqLIMQqVeXW7479OvdDbg2/El9ggSMkWZQVuy3tpxeibg6NyuT0Ij0kmXi251vab+T1hG0yMlpITra1n/Zm3M8oKxVYvSD0BRYRYhJ6NIUQgwiGwggxiVjsJ0IAIQgBhCAEEIIQQAhCwD6MXw8Ze3w1bT4vEo1Je9+j+GojR4gB+GeWtiQDIUlmUgmhh5gkZBohRuFLwtIvQpLIlwBCjEGvo0zNIMQY9L1c6+EoQjKpfyAkmUICCOEIgdRegyAkqaesBYSYwuz8StLu5zJ+ttfqk3Wsztpu5Uk+HCEZCEIQAghBCCAEIYAQhABCEAIIAYQgBBCCEEAIQgAhCAGEAEIQAghBCCAEIYAQhABCACEIAQtCopTBGKJayAx1MIaAFvKMOhjDiBYyrLJELWxHOxjSQnwqPSrL1MQ2dO0vqkxujLJeqDSo3Ffx0+j/TQNP1FrX/KDKqH7xlwADADHHxixr3zsSAAAAAElFTkSuQmCC”,
urlTemplate: “http://www.facebook.com/sharer.php?u=”
}, {
name: “Twitter”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAABHCAMAAABibqotAAAATlBMVEX///9Ny+dAvuFDweJJyOZEw+NCwOJMyudBv+JLyeZIxuVGxORHxeRDweNq0Orq+fyA1+3C7Pb2/P7U8vnf9fum4/KS3fBczOi06PROxeX5zaKxAAABnElEQVRYw+3UyW6DMBCA4aHBSSFkvC+8/4u2RYq8LwcOTZv/aFmfRowFTOf0Z53bOb2dF3OWc3o7ZznolACgji3PbOjMUbe5kuXwTOJxgtzMvthZpC0zSCHIzNZIoFPVYUBtkREQdahsrjoOQBWgSUGe/j6vOT/3KWaOLjETczpw1rBjXsHWuEXkDJUAavJ3UufI3aJTBsWoXWuOel6JRtIdJnfCR+JPXYmRnskdE15kN69niWVtOLuI7nJma/OINXfygXyUa1Oah7adWUK/vmOWaRCSTUcIrumQw1NnC1Mwmt7iYscNO6zp4LBjm842ui61pc49CsWYo+9JiUPMmIO5k2RGJlL3rkOQ9x2TOyRp3/sS3Ula5iD0M6TvkP7q6dZyxgdiZMTprp6ThjMO0X3UIajqjEDSdXyM08bH6Tu+u26sfNxB2WRy51Gq8qIFe9SCSxpBraCYwku10GFOOy5F/Zd8aTseauyb26rhHS/JioKXdnBNsvnXkWa/9vJOQDHNlQAAQZXTzCNNp9+/dj7P6e28mPNxTr/N+QKykG1J+VJKjAAAAABJRU5ErkJggg==”,
urlTemplate: “http://twitter.com/share?url=&text=”
}, {
name: “googleplus”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAABHCAIAAADa0s1IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1MTk2MjM1MjAyMkI2ODExODIyQTk5Q0E3REMxQjY1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzFEQkU3NEQxREQxMUUyQTFFMDkyMkNGNjZGNjlBMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzFEQkU3M0QxREQxMUUyQTFFMDkyMkNGNjZGNjlBMyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzcwMDlDNTA2QzIwNjgxMTgwODNCQzhEOTRBRjBDQjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE5NjIzNTIwMjJCNjgxMTgyMkE5OUNBN0RDMUI2NTUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4yaoL9AAAETklEQVR42uyaPyxkQRzHcZdoqFSruwKVgiVscyRy5MLWwiYiQUTj/O381yp0BDW2kYjVW81SrEqDRsVdTaXZ+9y+ZDKZZ9++efa9fSfzK2TevJm3853v7/f9/Wai8s/PHxWa9iuerNC31LeEh1m/IzkPs6oqPqMZVAaVQWVQGVQGlUFlUBlUBtXnscpYLGa4MqgMKoOquH3N5XKGK4OqjB74wfmRSOR73lpbW93PSiaT29vbYURVU1MzMzPT39+vNev19XVzc/Py8jKMXEHO8vIywGizxIODg4eHBx67uroGBwcbGhrkwc/PzzADHtr39/dWw8EymYxoeyt9Kjs7O3XnwM/S0pLVZrm4kzJgfHx8bGxMoWhkZAR4br7/cVRVOU2DJQHp5ubm+PjYPmZ/f18JG2hklsufkCfmPJmeBtbW1gpIVtAXGgnadDot9yAnukEYkLITMwATj8q6FbOrHDyHEZW82bif82Ci6Pz8XO5BS0KXryJ50/o6qBSv4wuKZlxdXTl8wf7WjbxVaaFSBKDoFDufuvvie3WrjGxsbHQzlwTFSEXTPrJiN9M1uCLPKj1u4kTJuUWjMei4enl5ISRkF0LTnGVQcdR3IXV0dCg919fXDm9Lr4EKhoGBAec4IQ3I7kcSC6OysywYk3tWVlYcxssuClFFiS0ZKq1K5OnpiUJWqRio+gqNJ2sLzVhcXAxpxYQdHR2lUim5Z2JiYnZ21j4SGi33A9LU1JRCcujOwhsbG9Svcs/Q0NDp6akIMxxvZ2eHR9psQcCQ/p1E2tvbPZ+CYclaeiEDElsQ/AnfOyqhcoSWEDpwym97enoCZqk09xYsOp032tFoVKkqygKpxPeByoUMBHLUB9v/fXNmZ2Zra0s+j/2XqC4uLuyKsru7G0ydLtuX+vr6Un2LQhZmmpub5c66ujp08vb21uVVTCjUguBhX+Ri712dhDFS3N7eXqhRAYPMS7Z1HzaIPq64vr4eRg0Ez/z8vCziZ2dnVK7ZbJYqUYxpamoChuLeuCKSeHh46HsWVpKMsw0PD8/NzYlH1odfFUpK0MjgeDyu6GQikRD4y68Wq6uro6OjYnHT09MnJydvb2+FxvOK7Aw5sVisurra6qTBXIgNhbLDkrzrCwsLLleG3E9OTsp8anmHj6jgU3Y8Aklrs6FLFomwoFJqVo5YHhK037Gkjaq7u1vZew+/FGQWdoWqLLWc7/cW9jsWD3cJ4grt7u4u57N5qW7RQ90p6A15WRyQQ+GBiJ78iIgpubWoUY5YDTRD+ZovWdjNMQF5AIbIpJZ+EP0uZWNtba2vr0/Ae3x8DAUqcmgmk+nt7VWA4VfOx3hYJVMJCQWe/QzmSx3o/v8kwMCy7Dk0mzc0QMBra2tjsxgpyjEcj7l+F0peUIntpwJyXx8AlaxNHRzkzYw2KsFbNG9Wwz7AYo+/wbiciqqlpaXi05n5nzODyqAqvf0VYACumehAOSSQtwAAAABJRU5ErkJggg==”,
urlTemplate: “https://plus.google.com/share?url=”
}, {
name: “reddit”,
image: “data:image/png;base64,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V7fKKqv4QYMG+auvvlrxgWDRokU18KR9oEs3KYgZeMoppyjDtttuO3/qqaf6e++913/00Uf+r7/+qlVnmI6AYCRh8MS4Hn/8cb/mmmsGIZgwsv1tttnGz5gxQ/GXIpQmp7KEmaoufvvtN7fZZpu5L774ooZGWHXVVV3v3r3dRhttpPHSsl3fvn3dyiuvXCMdDyIgt+KKK7onnnjC7bXXXhqPmhNuu9VXX91JT3F///23++yzz9zixYtVfeGDf8KECa5z587hfS3kSS9qNZVG/sJa5fjx47U1C0Pztuq2bdv69ddf3x900EGqct58800/d+7cwIUffvjBd+rUKeAQwfkxY8ZoL1iwYIH//fff/eTJk/3BBx+saVZaaSX1995774CDnpYWmpTKMjVD5Y8++ujAxIEDB/rDDjvMS0/wbdq0Ce+z1Q3PjA3Swv3IkSP99ddf7w855JCQHmE888wzibw966yzQlpwPfvss5oWVZgWmpRAbPCdNWuW79GjR2DOrbfeqvyQWZF/++23/XXXXeePOOIIHYjbtWsX0uUSkAkJ/8ILL1Q89EIba6Apaivwe9tttw34aBQGaXtJkxKIqav77rsvMGWttdby33zzjfGlhv/HH3/4999/399xxx3+uOOO81tssYVfY401Qt5YGDL2+M8//1zzG50YmU0UbrzxxpB/8803D8KSsSVOnhhuUit1YaAOlY888kgYMmWG5bp166YDMQO+cEIXd6wfGMg32GADdaKadACWGZITIbl33nnHPf/88+6DDz5QXKw1RLgaZlWeDfauT58+OqmA1q+//urmz5/vRMjZyROfm4xAbJYjvcG98sorocIjRozQsKgMnQVZBILhnQkIhiIkGIrbZ5993C677OK23357zcJsSnqGZU/0paeEBSgNxBpJYoasiNqizkrQWB5hLCCDrps9e7aGu3fv7oYMGaLh7B+mrzALIRjTEBAtG+YDTFtlFqZhes7UqVM1zHQ4Bmgb/ddffz1Erb322o5pNpB2V6BJCARG2raFLOACQ3bccUcnizl9NpUSIrMCMIw0CMdwsZ6QGVpIedlll2lYprbaW+iV5livILRbbrklpN966601jJAL0Q+ZRLKNHmyQnTZtWo1BWRZ0WjeLL6aiNggLg3WQtvXM8ccf7y0uxvfll196WYiGAV0WjnknAXHeOExXa/RgDLriiisCQ/r37+9lUNW6WXwxFZVWHZLvvPPOird169bqb7rppv6qq67SNcljjz3mzzzzTM9sTnqXN8FdfvnlJdFu9AKJGTd06NAgkJNOOqkkhgQpSMAEySblJptsEnDD+HzuxBNPDGji8oWXeQKNXiDGNLYvWEnDKBmovewlabWLWSXn4pOpO9ly18VkPkG0b9/eX3nllQFNscIgY5OZ9j755JNhdsRAvOWWW+o4KQwM42UpAWZhwljdTGTAPuqoo9wDDzzgpkyZ4jgXAT+zKQbwAw44wPXs2VPJMNFIPZBHBWvUAqHSMIT1ATuyBrvttpvu0sLIcgUCTnAYrq222srhANlYVKbL/pg+80M6BFGKMMjfqAVilZf9KW2xWiFp0XvuuSfBOgWEIhpFp7kwm2dbo0BIVKfSo0eVA+XlLodyyrz0AhiBb8CaAcd7QGY6ITx48GDdCjHmkc/Sw0jCpQJ5bY1i5QIXeMsVhJWpQQnEGG+MphVa1yecDbyjl8jZR4iSbfbANNlKD+8tACNNuCagUoRk5TK8deXXu0BgKAKggrhsxhMv2+lODorU/fTTT+7nn3/WAZU4Vsd2KgieF154wZGG1TSrdDlc0i0QtkE6dOgQ6MQMzC5DHPdPh+vlCBfGoXNzCeD77793H374oZNprO60fv311zp4smkHxAKjpRsziaOlEx+3XujwThZ1Ts4+dONwww03dBtvvLFaishUlawB6mosCAiLDJQlEBiLA2BGoa5vgjA9TD5mSEwhZd3gJk6cqOfTMJ+ZC/g4G0dIMRgto4dQDCwuLpvFyaGVbrmTnhnSaqutpntVQ2QDEiere0uqao10jA1GJ0RmBWJaRj8rSerHogViOthUTEwpKc7exwMfveDRRx91L730kpODn6D3xdRGUdKqqZwJHIatu+66qnZQQwgMfLR8Yxh0/lzwp1u8ZLGb9+s8N3vWbFV32FAxEzMAJ2mZJaHGYDz0sK2SbRK3++67O3aKDayXGR3eW52K4YPhy+enFohVgoIb8E5O3ZQh8VyceCpJBSh4LAjWCyyw3n33XcegK4YC2gOsJZKeMwwsRrAG4WAIpsE8DpToXXEZrCy5fBjJVjk0OCxiWx4ViIBee+019/LLL6t6gyblpQeBm3pxDsIiUE4RA2rwIQDis8vAQRQgNlohPYFcwqyRIOshlUAosOllKvfUU085OcDXiomFhjIepqGbOdRh29vSG70HH3zQybaCqqSOHTtqXtJQMRix//77a+URQqe1Orm2q2TOISx/kg9zDOIWbO9y+dQHAaEKZYfYvfrqq07O2bXMMJC6cMrHRGKHHXZwYt8VFoOGD1XL2cvTTz+t5yRMNADGpPXWW8/ttNNO2tvYlqeMuGyeGK4aviTMC1LAEP/QQw95OfLMu7EmDPYYi8l4oPnYU8JQje1orD6EeMiPIRtWHN99912wDgzEJCCM0/fSeoPPu9RuSc385PM5LHIwUmD7XLZE1DqFOuCwSMQCRXq/mglJz9LiYU0Sb7Vb+mxf1kQ1rFSoRyFAcokQIzjjjDMCI7MJ53qWAdOLLlZB9OrVy0vr1U0/fEwuqVz2xp8xPmZ4YuFKjDDcMa0Y1fw/5ns5T/fnnXeelxbtRUVqHarEfFT2rPx+++3nbRs+V71zvbvkkksCiZin4WUUSFRZkiYMlqeffrqqG7qcVEjVzB577OGGDRum6oZ3n3zyiXvuueecGJo5Zkk49L8UQI2SUQXXXnut23XXXWsMmOQFUDdpVY5mqMMf6ko5qJ+Vweo07v5x7uJLLtY6YyzBrA8ja9Y5OPa1UE9MOIDp06erSketx3DBBRe4c845R1UX741OnEbDkXBqBE1VYQ+L1Gkp+Fj5yblxjbTxw/Dhw1UtyYxFewSt7Oyzzw6nZ5bWWqg9Nwhf1Fl2uUQw2mPMMlEmH16MILSOo0aNSiy2LFA9miHuMSIkTW9b+rky51RZJox58+Z5kXxAyviBsRlAwUn3559/6rP0CLXy40zCCixTRy/T2nDQY/moZEMHykgdDWQW5e+55x4VhLRurSOng6NHj7YkaoMFT6x+WMvHQuGk0YzqYtwBgQTyCuS2224LwoDRkyZN0rwmBJM0Nq6ivvQ8u1v3bjpecPY889uZgVZc0PCyEQRgrjVQiit2Wp6TSXo+DQ/NYaeTxFta49GLL74YeEhvEZsxkoV0+hD91BKISZc0DGDW5bCNBYyg+QgFYXBaJvtFWlAGbSsQLSHGqUga4Y+26OqOjakq90TgDbMwhMKM0cBav9Vb1lWBj2ZeSpzFWz78WgIxZLT6eIqLeSaAICwNzwceeKDOQmQA155x11138VrBhGbPBX1UGWoidryrSyiDBgxcsjijxjBDPf/885XR9BSEM3bsWC0p9SataZAbbrghCEROMoMgUgnEmMjBPmMAhLAIx0gZgIgJBP2JKpOFXS1hWME1U6EfmIRLgqXLdHlSkoLvwR+NCbXSE5evDFEG4xHjpsycglBkluTlKFlTwidLJ7PPIBAmOzJT0zTGxwh17R5iSGKBMHiZQCgEIOaaOsDRZREaZjEGuQhZXC0/ZsJ8Kehn07yf8h/vP3rP+zmzliUvRyjQMHkvkYXuzBnevy/jIe4bCS+uvn5Gmrg8y6jXChmfuB+CGkJtMYB36dLFyw6ApjdelSUQY2aSyoISCzru1Jn+pEB0YaDonkEmGPLSeO9H7e79INGifcUNELfPet7ffaP3v1ZfoClFKDGDv5CV9ujTvR9STQM6hC8W/U9DMIjz2Lscvgll5syZvnevzFjC4vHwww/X1LbwjVWWrFuKU1mxXss1qEMJgzTZj9IBnG4qB0RaACugPhT6sUojjJuld8EchLHjSt7v1N77Ye2831qeeX/SAd7/XN1b8qmdbJrQMDrvvul9/2p8Q8UfvkbGbV/9Djr/eS2DwfJk48vxbA1YNiqVH7J4rGGGRJZ4UD/mmGMUC3yOeW2opRS1wRgbT3tRW7JlrokZW1ifsEhibg4kEdDIXD9W6adlGggzRkhv2K2HCKLNMrdzR+klm2TiLz2LGUUGk+XNhTd+Z8L79mvv/1toDBY3cgMRxCrLaBAeOTATRwNAnQGWN/OU+LtU9ssAeMYCGJ6wZ8cCGXix3GkvSEwgLAxBzhiBY/590UUXeVoBPYPuN2t2puVaSyF/QbDKzv3Z+wMGe/9fwohdu3pPa92xpbjm4lp4v4M8D2vt/S7dMkKZOiWD2vLnIxQL7fbrMvkRBr1DaQh+aBCG7oj+mTT/vnoZ1hjHsre1QlZ3sY5XPskmkPLo7rvv9iwGjX9pFoY5rd8Fge5BYUrPHgzA3gvnByKQcJgkY4fr2KGj1GbZvpcmTvvzzXTnJr/j3Kod5OhQtq+bc8TP3la1ZUgzOXvxciejWXUxp72fwSxlSQ0L5Jxi0kvOccn2L7mm0AJctCcDCTcXfIt+z6SZ9KJz83/LREq90oAIQJNxdHDaaacJdq9nPXKRNJgnkUCuxKm9mDT4xK34nAIhMxttAOcUJ598sjIdxnMdeLpsoAFyZUt9UVfJm2WaIuFn7pxMRLMVqxNEwghZhCnG/18yZw5CTHhagFkWv+AP53782LnWghDh5gLS4ijGnBlOjh1zpUp810wECg84ZOP8BODAikM7eAbImkXPinimwSdBokDoERABuBfBIQ3AKR9xhx56qF4V4x3PJcGKcAngTDwJB8zXRBCvDhThCZNcazFkgIRLrC6VyHTOVnLil4dhSZSN8fQSTg2xfMHnvWzlu3PPPVez8pyPX3lKmOkloh8V0aWXXupQUTLfVglz4Z4jVSAfAU2Q9NOlmxyxSSTqCvVUSygISRpF8+oWVdUrg4mGUqgRWHy71ZzrKz15nmRt2VaEm6sXQloEh6bqM9g58gCGI/OU97d5tVrltHHfffdVnnBaKKt3FQiZaeCmeZKQ5RUImWw8IQwBAAF06dpFw4Ukromyf6yiXaucG3GWczPFDLNtb0llXYFGQFjet1lXVM505wYOcG6DTeRdSoAG6gJhDt0tk6m59LAVZLzScQrB4CTNCnLLijhg6B4iOPmITBqhZ3Jkfmk7AhhdVFVletjecVwNyMq9oDBIV1AgMNx0HmfMDEhAh/ZUjDobE/Ux3Q/MosKMUwce49w68vzhFKmN9IBWXcVViZPes5II6cdPMi33tOudW0Mqp0wuWOya5RgslvDHjXbuk2nyXhpVqx41HSbOn37q3KgLnNtim0xeylgE2MBOFgz06Ak4M2GCh2l4JSVJDyA0pNZb0ufOSokwYG6X7s5dK8y4QnrK8w9mJZLHXjLO/N94mUFsWzuu0BuYCo0WUs2jThIBi4q9/OTcuU653LmDR2V6B2rNZna5U9d+q6Qy44OpchKZioJvFq6dedmbogTCgG69BUOzssEY1rOPc/97i3P7CUOmTnZu7iyZgrZzrreoKVr3mp0zpGBukS1X08Pg1iKMf4lQtt7euXffcu67GRmca/dwbpCY+gzYsJpGCcKQnDDcxlKzQOGd8SuDvPBvKoEYMfShEbCrx1aIwqQSUsBg1FcbGXBhFm6JTE9p1TbIIwigWGFkcmVau7X6fgOdwy1lnBKwCQNhS0O4RGDgxhYZH2djSFp0BZUxDAcxILuZgZCYzYRWgcDKAlVfQqOajmshgyrC4BmHIEoVhhUMFUQ5wUdxEQSOsL6TQLFqynCLbzxAc8g3uQTlUh1ve/bsqaksPsqSM1hQIOQyZFwVwxKQqfDEVyY6jOTieH0o9Qdm2LgC43A84+oKEKriq8avDamaTpkCNx4xiJvFCcZ2cnilpU+rSVLV1pDxXRDsatlSmfjqRLXJVWpSpzoD6w1lMihveWIadUAHYdiAjeE4/KJnyPGE3j+kLMbDvOWSyFQCgRhEkTg3lEwvYoelhZH9IWshhQg2xXjqDsOx2eJCKEsD3mG3BuTbu6rFD8mYCuywBbMeDBoEke7/8/UEwHY8UyFLSCR6V/GAi/DygrqmY2XFLFYmPV56h8fGwE4O7Ww9TX1S9RCkaLMrPnckl+jVUo+ec+edd4YWIAWrJfC0L6Sw2srAiaPFlYMviS44wR3TgXapYPi4Ij320rGKhjGWnV5ubRFm0zE1pJGapbFeMmHCBG0JVWLvKhULBsUc1kgBLXlq3/LQkt566y21FLTM0t0zOItHayjC4Vl8vCzXIfwbb7wRDNesDCFTikCc55prrtHDKQ7uMIfCJgGg/MUAui41UAArBOfofN+Dw32Rvn4fF0TFFoA8pu4wBgAXjo++mJEAaaBLOpyWIY+ArJw10oNEgLN/cBsd+0CN1SuTqvCvlYeUNFDpdcoPrHD4qhxQjKrSDPJTlEDIZAznUxPYI62zzjr6wRW5F+IxIIvT6EOKHzsGHTdunDJK7v+pj+3se++9l7NixhBjuvlJvRTDPb44io0uwpDPxKp/++23awmLEYjRJiPH2uDjiBsDB7kjH2pMmYqFogUCAZM8RtecISMYfDkj8bJtoGUIqiZFiYwZmNScd/55WkEGRWvFcgqnNsLffvttjV5TCDX4MMCQq3P+yCOPDPi4qwJuviLKMTVgZSiEk3SWVr7XqzZpCIOBnMYp5yCKwnhUCF92fOJ1BClwXhCG62Al58ZOWp1eP2P1LpYqeqDFgCbE1DGAFgLSMtiy8Hz44Yf1uyHZeZjXc0OrX79+Or9nPcTNWsNPXm5GsWDlU398L5FJRy7gRhd3CdkkNdq50sXvRBCBFri5hsC+FfcROZDi04Lc7hVhhGPuOH+qcLaE0j7TSqxLMqAJMTWIYEzB+MEsVMBHOmtV+fAbPtJwo0lOKkOrBn+5jm9ood+xozKIadq7bD+uK3FYklAWega2aXJPRHswcTbxIVwKlKSyjFBcGYzBKCTqi4IS5uNe1nWzK2U4sv0YJ3GY9HPVDONm7qYUK5Qh2w3R21CsEWzmA9405SGNjZnk4YNofPOXAZw6MsvkphhWnIDVVR9K/ClZZQljFKTQqmpQN1xz5nOrHGOKvtd1BLevOPoV/arppZxBRZAnF1gaU0WkWbhooZsze44e+AhjHQ5DAjbzUJ8Ap3UYFmCIwcXRzmt11k+7chEzphWXWTNm/eSiP2XyFDfmf8Y4PkHL9hFpuBks9y6dNBQtA2u1mE4W2nSPgrhsiFsSqoqvr8n2itq6MthLIT2zGbPhMoL0Bu0RCVNY8BJvszDLF/vE04pxpE8Co5WUxmhpeSIkX834yos9ga63qEvffpnPlfNtd5vAlKumInLFT3vjzHGYClmXZYoppkNaCRZKCITK8OVo1I/NRCx/EjMsHj9OQ7gQmADwk9LHOLPxzZgxw6OGKTvjIjdxmUVJr9BLq5a+LoUBzrLGECtU7JtQeMe+F5/bli6ulWGfB8EwFtx88826mLQrXoYjZhLhfMy0+Fy+4TM/pJHdBBOWxZnPtTXZrdV7HiYIfAZuxgo+0M9U1yCuq70r169zgVAg1Id1fcK0NJmq6pYCJvuiTHXrhW0XehKr5enTpyeuMWCmMdH8wOBqodV4jphO+qTFImVFCFzR5nIr6yhrNJQRQaB6mTXyhy4GCMLqZ+/qyi97UM83UknBw3yc9QFrgptuukmPONnK5xMX0gJ141Iq5MQyXD+p0a9/P9etazcdnBmo6wqgwadAWDuwTuFL1XyJ+v7771cS0njUYoSyMWngT1+OPfZYJ+NFWH+QRnp5XRWpFp7lKhCoSctVZ5WQ/SnH16cRDh+95643Czq+QYJwLF2Hjh3c8GHD9YMwckNLd075eg8LQYwtzGXXCKZDA5z4tlCUr0Xot7UQAjMjZnCkhcEAx9MAz0OGDFHLzKFDh+o7e18ns6iAMXdguQvEyEoX1yCVMuDsmeNOPjomg6iucInjoIftbCBmAgwEuvfo7vr07qOtGSHGAB2YzxeGWD0Dlob8Vg6mrvQ+3jF9tV0AvgbEBw8MEBDCi6fgFrc8/H9MIFZ4egxMwSQ1Bvk3Nf0KBJ9RohWzjiGdmR6h/lh3YNFRDLCFg50UPQ/m0mt4lr0n/TYjX/vhy0N8pcHAenXcGCxuefv/uECsQnFrNTVlcfw7ASqMP9vikx34PNNriMNZS4d5MZgqYo8KYaISOXJGADIF130wfHpBdqtH6LHajPH+U+F6E0hcQWuRMCNWaXEawggCdYajt8h6Rx0tn7z0OtQQDjXE5iN+tsANb9wo/km1ZPRz+Q1CIHHBYFLsYDQuuzXHedKEETp4DQwvfkOCBieQJObEQjLGmh/nMQYbw4mLw3HahhhuNAJpiMxbHmUqfHK0PKhWcCZyoCKQRNbUT0RFIPXD90SqFYEksqZ+IioCqR++J1KtCCSRNfUTURFI/fA9kWpFIImsqZ+IikDqh++JVCsCSWRN/UT8P2aTTWyT9B9LAAAAAElFTkSuQmCC”,
urlTemplate: “http://reddit.com/submit?url=”
}, {
name: “stumbleupon”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAABHCAIAAADa0s1IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTZDQkNBMUQxREYxMUUyQTFFMDkyMkNGNjZGNjlBMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MTZDQkNBMkQxREYxMUUyQTFFMDkyMkNGNjZGNjlBMyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNkNCQzlGRDFERjExRTJBMUUwOTIyQ0Y2NkY2OUEzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgxNkNCQ0EwRDFERjExRTJBMUUwOTIyQ0Y2NkY2OUEzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aTdOkwAACxtJREFUeNrMWwuM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”,
urlTemplate: “http://www.stumbleupon.com/submit?url=”
}],
omitSeries: true
};
}
this.setPlayerEvents();
}
}, {
key: “isIphone”,
value: function isIphone() {
return /iPhone/i.test(navigator.userAgent);
} //save instances of player to collection
}, {
key: “saveToPlayerCollection”,
value: function saveToPlayerCollection() {
window.fsPlayerCollection = window.fsPlayerCollection || [];
window.fsPlayerCollection.push(this);
}
/**
* @desc pause other players in the page triggered by setPlay method
*/
}, {
key: “pauseOtherPlayers”,
value: function pauseOtherPlayers() {
var _this2 = this;
try {
//returns all players except the current player the user is interacting with
var players = window.fsPlayerCollection.filter(function (fsPlayer) {
return fsPlayer.elId !== _this2.elId;
});
} catch (e) {
console.log(“VIDEO: error – “, e);
}
if (players.length > 0) {
players.forEach(function (fsPlayer) {
fsPlayer.isPinned && fsPlayer.unpin(fsPlayer.parentEl);
fsPlayer.isPlaying = false;
fsPlayer.player.pause();
});
}
}
}, {
key: “pauseAllPlayers”,
value: function pauseAllPlayers() {
var players = window.fdmPlayer;
try {
players.forEach(function (player, index) {
if (index !== players.length – 1) {
player.releaseUrl = ”;
player.releaseURL = ”;
player.setReleaseCall(”);
player.pause();
}
});
} catch (e) {
console.log(‘something went wrong’, e);
}
}
}, {
key: “onVisibilityChange”,
value: function onVisibilityChange() {
document.hidden && this.player.pause();
}
/**
* @desc event triggered on player OnMediaStart and OnMediaUnpause events
* @param isAd True or False for e.data.baseClip.isAd that is passed from player OnMediaStart and OnMediaUnpause events
* @returns {FsVideo}
*/
}, {
key: “setPlay”,
value: function setPlay(isAd) {
this.isPlaying = true;
this.isPaused = false;
if (window.fsPlayerCollection) {
this.pauseOtherPlayers();
}
_components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].sendPlay(isAd, this.player, this.utmObj);
return this;
}
}, {
key: “pause”,
value: function pause() {
this.player.pause(true);
}
/**
* @desc event triggered on player OnMediaStart event
* @returns {FsVideo}
*/
}, {
key: “setPause”,
value: function setPause(isAd) {
this.isPlaying = false;
this.isPaused = true;
_components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].sendPause(isAd, this.player, this.utmObj);
return this;
}
/*
get page type of where the video player is set/loaded
*/
}, {
key: “getPageType”,
value: function getPageType(playerData) {
/*
first 3 conditions supercedes what is set on the video config’s “pageName”
which, from testing, doesn’t reflect the actual page type of where the video is set.
*/
if (this.isSectionFront) return ‘section-front’; // if page is section front
if (this.isMediaHub) return ‘media-hub’; // if page is media hub
// if page isn’t section front or media hub, but the url of the post passed on the video config is a story
if (playerData.url.indexOf(‘/story/’) > -1) return ‘story-page’; // everything else aside from the conditions above are assumed
var pageName = playerData.pageName.split(/:/);
return pageName[pageName.length – 1].replace(/ /g, “-“);
}
/**
* send page view to Parsely on video player. We only send the page view on first click on section front pages.
* We send page view only if the video ID is in the video player url that is available to us
*/
}, {
key: “sendParselyTracking”,
value: function sendParselyTracking() {
//add player video id into the set if it is not in the set so that it is only tracked on the first click on that video
var vid = this.player.videoinfo.id ? this.player.videoinfo.id : this.player.vid;
if (_components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].isTrackable(vid, this.currentUrl) && !this.playedVideos.has(vid)) {
// update player url
if (vid !== this.player.vid) {
this.player.url = this.getVideoUrl(this.player.videoinfo.id);
this.player.vid = vid;
}
if (typeof PARSELY !== ‘undefined’ && _typeof(PARSELY.beacon) === ‘object’ && typeof PARSELY.beacon.trackPageView === ‘function’) {
// set up for UTM Campaign tracking – FSCOM-12271
var metadata = _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].getTrackingMeta(this.player); // failover for utm_content (start with defined utmObj, metadata, videoinfo, categoryName)
this.utmObj.utm_content = this.utmObj.utm_content || metadata.section || this.player.videoinfo.primary || this.playerData.categoryName;
var trackingObj = {
url: _components_fsUtils_TrackingUtils__WEBPACK_IMPORTED_MODULE_1__[“default”].addTrackingQuery(this.utmObj, this.player.url),
// URL to be tracked
urlref: location.href,
js: 1 // flag indicating that this is a dynamic event, keep it “1”
}; // TEMP(FOR STG/PROD): bug found on homepage “fox-five” tracking, but can’t recreate on DEV env
// need reports of these two objects.
window[‘utmProdTest’] = {
‘utmObj’: this.utmObj,
‘trackingObj’: trackingObj
};
PARSELY.beacon.trackPageView(trackingObj);
}
this.playedVideos.add(this.player.videoinfo.id);
}
}
}, {
key: “setPlayerEvents”,
value: function setPlayerEvents() {
var _this3 = this;
var player = this.player;
if (this.playerData) {
var playerData = this.playerData;
}
player.start = function () {
performance.mark(“fs-videoplayer-startplayer”);
return player.bind(), player;
};
if (this.playerData) {
if (typeof this.playerData.onMediaPause === ‘function’) {
player.addEventListener(‘OnMediaPause’, function (e) {
performance.mark(“fs-videoplayer-onmediapause”);
playerData.onMediaPause(null, e, player);
});
}
} //check is free wheel enabled
if (playerData && playerData.isFwEnabled == true) {
player = this.setSiteSection(player, playerData.siteSection);
}
/**
* @desc Fires when playback of the current clip is paused.
*/
player.addEventListener(‘OnMediaPause’, function (e) {
if (this.player.wcEndcard) {
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoPause, {
e: e,
player: this.player
});
}
try {
//passing video clip OnMediaPause to check if it is an ad when setting video pause
this.setPause(e.data.clip.baseClip.isAd);
} catch (err) {
console.log(‘Error OnMediaPause: ‘, err.message);
}
performance.mark(“fs-videoplayer-onmediapause”);
if (playerData) playerData[“onMediaPause”] && typeof playerData.onMediaPause === ‘function’ && playerData.onMediaPause(null, e, player);
}.bind(this));
/**
* @desc Fires when the current clip resumes playback after having been paused.
*/
player.addEventListener(‘OnMediaUnpause’, function (e) {
try {
//passing video clip OnMediaUnpause to check if it is an ad when setting video play
this.setPlay(e.data.clip.baseClip.isAd);
} catch (err) {
console.log(‘Error OnMediaUnpause: ‘, err.message);
}
}.bind(this));
/**
* @desc Fires when a clip starts playing. This includes individual chapter starts within a media item.
* The ClipInfo component listens for this event to update its content. This is the only event where video
* or ad metadata is dispatched to the player. Video metadata can be pulled out of the event data object.
*/
player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoStart, function (e) {
try {
if (!e.data.baseClip.isAd && this.sendPageView) {
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoStart, {
e: e,
player: this.player
});
this.sendParselyTracking();
} //passing video clip OnMediaStart to check if it is an ad when setting video play
this.setPlay(e.data.baseClip.isAd);
} catch (err) {
console.log(‘Error OnMediaStart: ‘, err.message);
}
if (playerData) playerData[_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoStart] && typeof playerData.onMediaStart === ‘function’ && playerData.onMediaStart(null, e, player);
performance.mark(“fs-videoplayer-onmediastart”);
}.bind(this));
/**
* @desc Fries when clip ends
*/
player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoEnd, function (e) {
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoEnd, {
e: e,
player: this.player
});
}.bind(this));
/**
* @desc Fires during clip playing
*/
player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoProgress, function (e) {
if (player.wcEndcard) {
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoProgress, {
e: e,
player: this.player
});
}
}.bind(this));
/**
* @desc Fires when the player begins to load a new clip.
*/
player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].videoLoading, function (e) {
performance.mark(“fs-videoplayer-onmedialoadstart”);
});
/**
* @desc Fires when the player loads
*/
player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].playerReady, function (e) {
if (_this3.player.elem === e.originator.controlId) {
performance.mark(“fs-videoplayer-onplayerloaded”);
_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“default”].dispatchEvent(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].playerReady, {
e: e,
player: _this3.player,
playerData: _this3.playerData
});
window.currentPlayer = player;
}
});
/**
* @desc Fires when the release url starts
*/
player.addEventListener(‘OnReleaseStart’, function (e) {
performance.mark(“fs-videoplayer-onreleasestart”);
this.isModalEnabled && this.pauseAllPlayers();
}.bind(this));
/**
* @desc Fires when user clicks on the play button
*/
player.addEventListener(‘OnPlayButtonClicked’, function (e) {
performance.mark(“fs-videoplayer-onplaybuttonclicked”);
if (this.isIphone()) {
var playerId = ‘#’ + e.originator.controlId;
var vidTag = document.querySelector(playerId + ‘ video’);
if (!vidTag.hasAttribute(‘playsinline’)) {
vidTag.setAttribute(‘playsinline’, ”);
}
}
}.bind(this));
/**
* @desc Fires when the release url starts
*/
player.addEventListener(_FsVideoEventHandler__WEBPACK_IMPORTED_MODULE_2__[“fsEvents”].playerFullScreen, function (e) {
performance.mark(“fs-videoplayer-onfullscreen”); //set if player is fullscreen
this.isFullScreen = e.data;
}.bind(this));
player.start();
this.player = player;
this.playerData = playerData;
return this;
}
}, {
key: “setSiteSection”,
value: function setSiteSection(player, siteSectionPath) {
//freewheel
if (typeof siteSectionPath !== ‘”undefined”‘) {
console.log(‘has siteSection’);
} else {
siteSectionPath = ‘/nfl/test/default’;
}
var fwSiteSection = siteSectionPath; // condition if siteSection already sets ‘www.’
if (fwSiteSection.indexOf(‘www.’) > -1) {
fwSiteSection = fwSiteSection.replace(‘www.’, ”);
}
fwSiteSection = this.getAdViewport(window.innerWidth) + ‘.’ + fwSiteSection; //get adzone
var adZoneVal = this.getAdZoneParam(); //assign siteSection
player.siteSection = adZoneVal !== “” ? adZoneVal : fwSiteSection;
return player;
}
}, {
key: “getAdZoneParam”,
value: function getAdZoneParam() {
function getParameterByName(name) {
name = name.replace(/[[]/, “\[“).replace(/[]]/, “\]”);
var regex = new RegExp(“[\?&]” + name + “=([^]*)”),
results = regex.exec(location.search);
return results == null ? “” : decodeURIComponent(results[1].replace(/+/g, ” “));
}
var adzoneParam = getParameterByName(‘adzone’);
if (adzoneParam !== “”) return adzoneParam;else return ”;
}
/*
desktop = 1024 pixels and up
tablet = 768 – 1023
handheld = 767 and below
Touch detection for 1023 and below would override the breakpoints
*/
}, {
key: “getAdViewport”,
value: function getAdViewport(windowWidth) {
var isTouch = this.isTouchDevice();
var viewportName = ‘www’;
switch (true) {
case !isTouch || windowWidth > 1023:
viewportName = “www”;
break;
case windowWidth > 767 && isTouch:
viewportName = “mtab”;
break;
default:
viewportName = “mweb”;
}
return viewportName;
}
}, {
key: “isTouchDevice”,
value: function isTouchDevice() {
return ‘ontouchstart’ in window;
}
}, {
key: “getVideoUrl”,
value: function getVideoUrl(id) {
return this.getCleanedDomain() + ‘/’ + this.playerData.categoryName + ‘/video/’ + id;
}
}, {
key: “setPlayerShare”,
value: function setPlayerShare() {
if (window.innerWidth > 1024) {
// older implementations incorrectly return share as a boolean
if (_typeof(this.playerData.share) === ‘object’ && this.playerData.share) {
this.player.share = this.playerData.share;
} else {
this.player.share = {
showembedfunc: function showembedfunc(mid, vi) {
if (vi.primary == ‘nfl’ && vi.contentType == ‘highlights’ || _typeof(this.state.clip) === ‘object’ && typeof this.state.clip !== null && this.state.clip.baseClip.contentCustomData[“non-EmbeddableHighlights”] == “true”) {
return false;
} else {
return true;
}
},
emailscript: ”,
sharetargets: this.playerData.fdmsharetargetsArr
};
}
this.player.share = {
embed: true,
iframeurl: this.playerData.iframeUrl
};
if (typeof this.playerData.share_deeplinkfunc === ‘function’) {
this.player.share.deeplinkfunc = playerData.share_deeplinkfunc;
} else {
this.player.share.deeplinkfunc = function (mediaId, title, guid) {
return this.getVideoUrl(mediaId);
}.bind(this);
}
}
return this;
}
}, {
key: “getCleanedDomain”,
value: function getCleanedDomain() {
var l = window.location;
return l.origin || l.protocol + ‘//’ + l.hostname + (l.port ? ‘:’ + l.port : ”);
}
}, {
key: “defaultOpts”,
value: function defaultOpts() {
// disable autoplay for mobile
var autoplay = this.viewports.isMobile ? false : true;
return {
autoplay: autoplay,
share: false,
share_embed: true,
endcard: true,
endcard_feed: ”,
endcard_countdown: true,
hideMeta: false,
isFwEnabled: false,
iu: ”,
siteSection: ”,
pageLocation: ‘index’,
pageName: ‘fscom::videos:video page’,
releaseUrl: ”,
categoryName: ”,
fdmsharetargetsArr: [{
name: “Facebook”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAACl0lEQVR42u3a3UsUURzGcf+vELuI8iK6iLrIzOidoheCUC+yF4KitEAJcq11UyplVzaKyo1dEBZXslwlpUAqS6LxQszNyG3dml9zYgiJ2pyZnT20fh94Ls7VwO8zMMM5p2LNtnbDqljNWc1bNe01LX5Ne8Y5e21UMBS9BQAAABgEAABQAACgAABAAQCAAgDAqurWY3fkxMVH0hJMSkf4qYSiaQn2jfxqoHdYWrtTcr59QJpa43L8wgPZ2RiRTQe7paq2AwCnXVt3XU63JSQx9FoyC1nxms1HbgGwkq7bFbTe6Gcy/8n70Jdny9HbAPyrDS0xmZv/In4EgAKt3B6QnofPxc8AUGD48dQr8TsA/KV9jyekFAHgD1W/i6UKAL+1em9IMp+zAOhqr88fXQAKdMOeTsl+zQOgq1dCg1LqALCsoy8+AKBzq+G7aQKgq4fP3S/KQFOj09IcTMq+k9Gfw1XflUKtrAkAoKq2jL1E7YweOnuP8wC3DfePewJQ+/wcyHjowPAb18OfnJrlRMxrh8amXQPcjKYB8Nqxl4ZrgDNXEwDoBKhv7gdAJ4D6hQUAAAAAAAAAAAAAAAAAAFjVADvqw5IceeuoXm5CjE/OOH6e6qUbyfIEKNbhit+51vMEAJ051RYHQGfUsSUAGrPxQBcAuqIugJXtX9D/ADD1/iMAOjOYfgeAzkRiEwDojLqHBIDGNF6OAaAzdQ0RAHRm/e5OAHRFbfyV9W7o/qa7MjO74KhLS99cD3Qus+joWeoGNecBnAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj2Imc1b9UEwLea9oxz9tr4AS/jbaNehFRZAAAAAElFTkSuQmCC”,
urlTemplate: “http://www.facebook.com/sharer.php?u=”
}, {
name: “Twitter”,
image: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAIAAABt+uBvAAAFGUlEQVR42u2b+W8TVxDH80/WCQHSCEUtLagHoodKS6tWRRShNkUQ9aAIqVVb0fhITGISIElNnPtwE0hCMM1JYhKzh/e+O5IhVRPq2uv33m7ojN4PtiXvvv3svO/MvJ2te6mdw1Fm1CECBISAEBACQkAICAEhIBwICAEhIASEgBAQAkJAOBAQAkJACAgBVTUOJ/gLY3J6xVgv2pbjlYzTnJnH1i931TduCBUeJ/LiAWrq4OMLmmq5XlnL5s33b4tljvNWj5hZM5o7eHaAPuwvRijT+TQtgZt4lZnreslFrSG2+yAfDRSH1w3H9QaWDXZL7GCc5zWnfV6jR+eHacV1vWrt7pb1cgdfH+XAoWB6j4p26Xfb8d7sEdkBujQul078/ZRCg843k4rn1wqqs3dJ+ruX/gFNbZo75744LpOlc6q/6LgeQZvbthqiDKNYJMrtukWXp4n5UWOM25QcgnRynNXc+VSbjyT51lGZOqDjKWHvPBL3NSKafTWrEKQzuWlCHHytW2ibkCc2TMN2P/m9SB3QB33F585mfMOsNo7u9c0thZj7CLoLUECSdn759Z7KYonBTfi3OeVlB/D5BnR6oOhRs/5lg1Gi+N5tscw8QF8hZDTG/bhSdF6jRAdc6UCMlUi3JIX/nNCG5JwZlKo9MlwGDTp3Vo36KNtarMIEd3bLqmrFLQs2cTrX5vxHD/+A+pb0qrLbc0NSpIJ7SFChS3altvyjroYqqWo13Vac2IJ2ordcvr8qEvYguDGBbXcs8T4vBiJd9wP9/LDUktwt5OBrLw6gMsG+cgMty+bNGzn9xxkVShb4TBZQVWkh+f2g3oe6F24rv0lErRZ79gEyi1nSi4Ksvd0bBKALY/LgqlGK34fi/MxjM7SADsX5AACdzUil00NUTq8YP8+qoLshpAMCF8ym/cmborcfbH7bCgZQQ5TTLTf8gHoe6oE99hlZN8MP6OtROTBAXzyToTDb691CYICgsCJeFpC1gurUvr1ZU6LooxxjaamcHjAgGF0PwptJ11hkkAFUH6W1xVWjibrrb4eM/LN5qDYya0bYAHUuknnkS6Z5AUqzy9OKFprMCOZxLCWECFBpvHJd6M7pYcAEqz5c/UHHU8LRLqEpwTd38id6xb4l3XL2vTyTBNQ6KodHfabzJsFlQQYQ6LSgh0WA3r0lhg5QqZcnDHTSKwZBOiQBQdJxvxDw1qJiui1JIaSAYIBOP1GDFOdLpNuUyDdxQggLitHIukmcDpUuV/Aj9mttS3F2WqT2QZ806NGVrCLojFxJt9yTN0UaF0K3Txpi/8VxeeyRqZoUMwDX9c5mJHpXwaKRHBwK1h0EYBqA2iZkqpNnAQjoUNoSodSBzA7QwTj/04xKo3y1Ha91VGZwd2kBaurgr/6h8hoVnZYM92Ny5ShTQI0x7sygBNW8btMS5hxn1/6sgiKgV7uExtjfjw+PJPl3bonnh6Xf5rRs3qS6GeS4XmLhOe+qhAvQqf5iqW+KcfH+J2/X2MjCbolB2P52UimwKingRG0TSiTKsadTkwZBHvjdlLLzshEN25BsOMWBWDBoyIh0pJ37LC1l1gyDnCqbjje0Znx+RwrKa6hEscMJ/qsReWDZ8L30oOCEv385Ijcl+MC50M2DjqUEiGvtcxo4wuITC5Ap/yzH4Oum5CwULKg/rt1Tzw1JkG3jW8/4WjgCQkA4EBACQkAICAEhIASEgHAgIASEgBAQAkJACAgB/b/HXwPPdZ/z7BalAAAAAElFTkSuQmCC”,
urlTemplate: “http://twitter.com/share?url=”
}]
};
}
}, {
key: “preparePlayerData”,
value: function preparePlayerData(opts) {
var playerData = this.defaultOpts();
Object.keys(opts).map(function (key) {
playerData[key] = opts[key];
}); // iu (interactive unit) is similar to a page path
// ex., ‘/fscom/homepage/video’, ‘/fscom/nfl/video’
if (typeof playerData.iu === ‘string’) {
playerData.releaseURL += ‘&iu=’ + playerData.iu;
playerData.endcard_feed += ‘¶ms=iu=’ + playerData.iu;
}
return playerData;
}
}, {
key: “getPlayerElement”,
value: function getPlayerElement(opts) {
return document.getElementById(‘Video’ + opts.id);
}
}]);
return FsVideo;
}(_Pinner__WEBPACK_IMPORTED_MODULE_0__[“default”]);
window.FsVideo = FsVideo;
/* harmony default export */ __webpack_exports__[“default”] = (FsVideo);
/***/ }),
/***/ “./assets/layouts/app/critical-video.js”:
/*!**********************************************!*
!*** ./assets/layouts/app/critical-video.js ***!
**********************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var usertiming__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! usertiming */ “./node_modules/usertiming/src/usertiming.js”);
/* harmony import */ var usertiming__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(usertiming__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _components_platformPlayer_criticalVideoLoader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/platformPlayer/criticalVideoLoader */ “./assets/components/platformPlayer/criticalVideoLoader.js”);
/* harmony import */ var lazysizes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lazysizes */ “./node_modules/lazysizes/lazysizes.js”);
/* harmony import */ var lazysizes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lazysizes__WEBPACK_IMPORTED_MODULE_2__);
// user timing API
// NEO Video Loader
//Lazy Loading
/***/ }),
/***/ “./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/SegmentAnalytics.js”:
/*!***********************************************************************************!*
!*** ./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/SegmentAnalytics.js ***!
***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ “./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/utils.js”);
var SegmentAnalytics =
/*#__PURE__*/
function () {
function SegmentAnalytics() {
this.metaEl = document.querySelector(‘[fs-prop=”analytics”]’) != null ? Object(_utils__WEBPACK_IMPORTED_MODULE_0__[“getPageMetadata”])() : null;
this.defaultSpaReferrer = window.location.href;
this.segmentApiKey = null; // tracking functions
this.trackPage = this.trackPage.bind(this);
this.trackEvent = this.trackEvent.bind(this);
this.trackVideoEvent = this.trackVideoEvent.bind(this);
this.isCanTrackVideo = this.isCanTrackVideo.bind(this);
this.setSegmentLoaded = this.setSegmentLoaded.bind(this);
this.initScript = this.initScript.bind(this); // data retrieval functions
this.sportsTypes = this.getSportsTypes();
this.duration = 0;
this.secondsViewed = 0;
this.adCurrentTime = 0;
this.last_video_length = 0;
this.current_video_length = 0;
this.total_length = 0;
this.getDefaultProps = this.getDefaultProps.bind(this);
this.getPageProps = this.getPageProps.bind(this);
this.getEventProps = this.getEventProps.bind(this);
this.getCategory = this.getCategory.bind(this);
this.getContentName = this.getContentName.bind(this);
this.getLandingName = this.getLandingName.bind(this);
this.getPageName = this.getPageName.bind(this);
this.getPageType = this.getPageType.bind(this);
this.getSubCategory = this.getSubCategory.bind(this);
this.getPageSubType = this.getPageSubType.bind(this);
this.getStoryTitle = this.getStoryTitle.bind(this);
this.getPageContentLevels = this.getPageContentLevels.bind(this);
this.getDuration = this.getDuration.bind(this);
this.setSecondsViewed = this.setSecondsViewed.bind(this);
this.getSecondsViewed = this.getSecondsViewed.bind(this);
}
var _proto = SegmentAnalytics.prototype;
_proto.getSportsTypes = function getSportsTypes() {
return [‘mlb’, ‘nfl’, ‘nascar’, ‘college-football’, ‘college-basketball’, ‘soccer’, ‘ufc’, ‘golf’, ‘nhl’, ‘nba’, ‘tennis’, ‘boxing’, ‘olympics’, ‘motor’, ‘horse-racing’, ‘other’, ‘baseball’, ‘basketball’, ‘bowling’, ‘cricket’, ‘cycling’, ‘football’, ‘gymnastics’, ‘hockey’, ‘mma’, ‘rugby’, ‘skiing’, ‘swimming’, ‘volleyball’, ‘water-polo’, ‘wnba’, ‘womens-college-basketball’, ‘wrestling’, ‘wwe’];
};
_proto.getCategory = function getCategory() {
return this.metaEl[‘category’];
};
_proto.getSubCategory = function getSubCategory() {
return this.metaEl[‘sub_category’];
};
_proto.getLandingName = function getLandingName() {
var name = this.metaEl[‘landing_name’];
if (name) name = name.replace(/ss+/g, ‘ ‘); // CHECK: if page has hash string
if (window.location.hash) {
var hash = window.location.hash;
if (hash.indexOf(‘nav-option’) > -1) {
name = name.replace(‘Landing’, ‘Category’);
}
}
return name;
};
_proto.getPageName = function getPageName() {
var pageName = this.metaEl ? this.metaEl[‘seg_page_name’] : “no page name”;
if (pageName) return pageName.replace(‘::’, ‘:’);
};
_proto.getPageSubType = function getPageSubType() {
return this.metaEl ? this.metaEl[‘page_sub_type’] : “no page sub type”;
};
_proto.getContentName = function getContentName() {
return this.metaEl ? this.metaEl[‘content_name’] : “no content name”;
};
_proto.getStoryTitle = function getStoryTitle() {
return this.metaEl ? this.metaEl[‘story_title’] : “no story title”;
};
_proto.getBuildVersion = function getBuildVersion() {
return this.metaEl ? this.metaEl[‘build_version’] : “no build version”;
};
_proto.getPageType = function getPageType() {
var pageType = this.metaEl ? this.metaEl[‘page_type’] : “no page type”;
if (pageType === ‘home’) return ‘section front’;
return pageType;
};
_proto.getPageContentLevels = function getPageContentLevels(props) {
if (this.metaEl) {
if (this.metaEl.page_content_level_1) props.properties.page_content_level_1 = this.metaEl.page_content_level_1.replace(‘::’, ‘:’);
if (this.metaEl.page_content_level_2) props.properties.page_content_level_2 = this.metaEl.page_content_level_2.replace(‘::’, ‘:’);
if (this.metaEl.page_content_level_3) props.properties.page_content_level_3 = this.metaEl.page_content_level_3.replace(‘::’, ‘:’);
if (this.metaEl.page_content_level_4) props.properties.page_content_level_4 = this.metaEl.page_content_level_4.replace(‘::’, ‘:’);
} else {
props.properties.page_content_level_1 = “no content level 1”;
props.properties.page_content_level_2 = “no content level 2”;
props.properties.page_content_level_3 = “no content level 3”;
props.properties.page_content_level_4 = “no content level 4”;
}
return props;
};
_proto.getPosition = function getPosition(position, adTime) {
if (adTime === void 0) {
adTime = 0;
}
return parseInt(position – adTime, 10);
};
_proto.getDuration = function getDuration(duration) {
if (duration) {
duration = parseInt(duration, 10);
if (duration > 0 && duration != this.duration) this.duration = duration;
}
return this.duration;
};
_proto.setSecondsViewed = function setSecondsViewed(secondsViewed) {
if (secondsViewed && secondsViewed > 0) this.secondsViewed = secondsViewed;
};
_proto.getSecondsViewed = function getSecondsViewed(eventName) {
if (eventName.indexOf(‘Playing’) > -1) return 10;
return Math.floor(this.secondsViewed % 10);
};
_proto.setCampaignTraits = function setCampaignTraits(props) {
var campaignTraits = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[“getSessionCampaignTraits”])();
if (campaignTraits) {
for (var trait in campaignTraits) {
props.properties[trait] = campaignTraits[trait];
}
}
return props;
};
_proto.getDefaultProps = function getDefaultProps(type, eventName) {
var traits = {
dcg_profile_id: ”,
appsflyer_id: ”,
network_entitlement_list: ”,
lastKnownProfileId: ”,
lastAnonymousProfileId: ”,
mvpd: ”
};
var defaultProps = {
primary_business_unit: ‘fng’,
secondary_business_unit: ‘fox sports’,
app_name: ‘foxsports.com’,
app_platform: ‘web’,
app_version: ”,
app_build: ”,
referrer: this.defaultSpaReferrer,
page_test_name: ”,
page_timePartingDay: ”,
page_timePartingHour: ”,
campaign_tracking_code: ”,
campaign_organization: ”,
campaign_marketing_channel: ”,
campaign_source: ”,
campaign_name: ”,
campaign_additional: ”,
campaign_agency: ”,
page_name: ”,
page_type: ”,
page_content_level_1: ”,
page_content_level_2: ”,
page_content_level_3: ”,
page_content_level_4: ”,
favorites_length: ”,
favorites_list: ”,
favorites_sports_length: ”,
favorites_sports_list: ”,
favorites_teams_length: ”,
favorites_teams_list: ”,
rivals_sports_length: ”,
rivals_sports_list: ”,
rivals_teams_length: ”,
rivals_teams_list: ”,
subscriptions_length: ”,
subscriptions_list: ”,
push_enabled: ”
};
var props; // for page view
if (type === ‘page’) {
props = Object.assign(defaultProps, {
keywords: ”,
page_content_author: ”,
page_content_original_publish_date: ”,
page_content_major_publish_date: ”,
page_content_modified_date: ”,
page_content_original_publish_time: ”,
page_content_major_publish_time: ”,
page_content_modified_time: ”,
page_content_version: ”,
page_content_title: ”,
page_content_id: ”,
page_content_type: ”,
page_content_type_of_story: ”,
page_content_tags: ”,
page_content_category: ”,
page_content_subcategory: ”,
page_content_language: ”,
page_login_state: ”,
page_content_originator: ”
});
return {
name: ‘no page name’,
context: {
traits: traits
},
properties: props
};
} // for event
if (type === ‘video’ && eventName) {
// for video events
props = Object.assign(defaultProps, this.getVideoEventDefaultProps(eventName));
} else {
// for custom/other events
props = defaultProps;
}
return {
event: eventName || ‘no event name’,
context: {
traits: traits
},
properties: props
};
};
_proto.getVideoEventDefaultProps = function getVideoEventDefaultProps(eventName) {
// main default props for video events
var props = {
session_id: ”,
position: 0,
total_length: ”,
video_player_state: ”,
video_player_content_type: ”,
video_asset_title: ”,
video_asset_id: ”,
video_channel_group_id: ”,
video_primary_business_unit: ‘fng’,
video_secondary_business_unit: ‘fox sports’,
video_series_id: ”,
video_series_name: ”,
video_fox_profile: false,
video_content_length: 86400,
video_content_type: ”,
video_ad_supported: false,
video_ad_model: ”,
video_content_length_format: ”,
video_rating: ”,
video_asset_category: ”,
video_genre: ”,
video_season_number: ”,
video_episode_number: ”,
video_tms_id: ”,
video_station_id: ”,
video_network: ”,
video_affiliate_window: ”,
video_authorizing_network: ”,
video_player_type: ”,
video_content_channel: ”,
video_ugc_clip: ”,
video_sports_type: ”,
video_sponsor: ”,
video_screen_layout: ”,
video_airplay: false,
video_first_air_date: ”,
video_first_digital_date: ”,
video_originator: ”,
video_cross_device_play: false,
video_cast_source_name: ”,
video_cast_source_platform: ”,
video_cast_source_version: ”,
video_cast_source_build: ”,
video_content_subscription_type: ”,
video_feed: ”,
video_is_resume: false,
video_is_continuous: false,
video_is_restart: false,
video_is_autoplay: false,
video_is_fullscreen: false,
video_is_livestream: false,
video_volume: ”
}; // other props, segregated to subtypes (playback, content, ad)
var subtypesProps = {
playback: {
bitrate: ”,
framerate: ”,
livestream: false,
ad_type: ”,
ad_asset_id: ”,
ad_pod_id: ”,
video_player: ”,
sound: ”,
full_screen: false,
ad_enabled: true,
quality: ”
},
content: {
bitrate: ”,
framerate: ”,
livestream: false,
asset_id: ”,
pod_id: ”,
title: ”,
publisher: ”,
description: ”,
keywords: ”,
season: ”,
episode: ”,
genre: ”,
program: ”,
channel: ”,
full_episode: false,
airdate: ”
},
ad: {
asset_id: ”,
pod_id: ”,
title: ”,
publisher: ”,
content: null,
pod_position: ”,
pod_length: ”,
type: ”,
load_type: ”,
video_ad_name: ”,
video_ad_length: ”,
video_ad_id: ”,
video_fw_vcid2: ”,
video_fw_sitesection: ”,
video_ad_break_type: ”,
video_ad_break_name: ”,
video_ad_break_position: ”,
video_ad_pod_id: ”,
video_ad_pod_type: ”,
video_ad_pod_name: ”,
video_ad_pod_position: ”,
video_ad_in_pod_position: ”,
video_ad_campaign_id: ”,
video_ad_creative_id: ”,
video_ad_site_id: ”,
video_ad_placement_id: ”,
video_ad_advertiser: ”,
video_ad_creative_url: ”
}
};
switch (eventName) {
case ‘Video Playback Seek Started’:
props = Object.assign(props, {
seek_position: ”
});
break;
case ‘Video Playback Started’:
props = Object.assign(props, {
content_asset_ids: ”,
content_pod_ids: ”
});
break;
case ‘Video Playback Interrupted’:
props = Object.assign(props, {
method: ”
});
break;
case ‘Video Ad Playing’:
props = Object.assign(props, {
video_seconds_viewed: 0,
quartile: null
});
break;
case ‘Video Content Playing’:
case ‘Video Content Completed’:
props = Object.assign(props, {
video_seconds_viewed: 0
});
break;
default:
break;
}
var subtype = this.getVideoSubType(eventName);
if (subtype) props = Object.assign(props, subtypesProps[subtype]);
return props;
};
_proto.getSegmentEventName = function getSegmentEventName(eventName) {
var eventsEnum = {
‘OnPlaybackStart’: ‘Video Playback Started’,
‘OnPlaybackComplete’: ‘Video Playback Completed’,
‘OnContentStart’: ‘Video Content Started’,
‘OnContentComplete’: ‘Video Content Completed’,
‘OnContentPlaying’: ‘Video Content Playing’,
// TODO: delete once JW player is implemented 100%
// TODO: un-comment video ads-related events once its ready for tracking
// ‘OnMediaPlay’: ‘Video Playback Started’,
// ‘OnMediaPause’: ‘Video Playback Paused’,
// ‘OnMediaUnpause’: ‘Video Playback Resumed’,
// ‘OnMediaEnd’: ‘Video Playback Completed’,
// ‘OnMediaBuffer’: ‘Video Playback Buffer Started’,
// ‘OnMediaSeek’: ‘Video Playback Seek Started’,
// ‘OnMediaPlaying’: ‘Video Content Playing’,
// ‘OnMediaStart’: ‘Video Content Started’,
// ‘OnMediaComplete’: ‘Video Content Completed’,
‘OnAdStart’: ‘Video Ad Started’,
‘OnAdPlaying’: ‘Video Ad Playing’,
‘OnAdComplete’: ‘Video Ad Completed’ // ‘onSeekStart’: ‘Video Playback Seek Started’,
// ‘onSeekComplete’: ‘Video Playback Seek Completed’,
// videoLoad: ‘OnLoadReleaseUrl’,
// videoError: ‘OnMediaError’,
// videoLoading: ‘OnMediaLoadStart’,
// videoReady: ‘OnLoadRelease’,
// videoMute: ‘OnMute’,
// playerReady: ‘OnPlayerLoaded’,
// playerOverlayUp: ‘OnShowPlayOverlay’
// playerFullScreen: ‘OnShowFullScreen’,
// adPodStart: ‘onAdPodStart’,
// adPodComplete: ‘onAdPodComplete’,
};
return eventsEnum[eventName] ? eventsEnum[eventName] : null;
};
_proto.getVideoSubType = function getVideoSubType(eventName) {
var subTypesEnum = {
‘Video Playback Started’: ‘playback’,
‘Video Playback Paused’: ‘playback’,
‘Video Playback Buffer Started’: ‘playback’,
‘Video Playback Buffer Completed’: ‘playback’,
‘Video Playback Resumed’: ‘playback’,
‘Video Playback Completed’: ‘playback’,
‘Video Playback Interrupted’: ‘playback’,
‘Video Playback Seek Started’: ‘playback’,
‘Video Playback Seek Completed’: ‘playback’,
‘Video Content Started’: ‘content’,
‘Video Content Playing’: ‘content’,
‘Video Content Completed’: ‘content’,
‘Video Ad Started’: ‘ad’,
‘Video Ad Playing’: ‘ad’,
‘Video Ad Completed’: ‘ad’,
‘Video Ad Break Started’: ‘ad’,
‘Video Ad Break Completed’: ‘ad’,
‘Video Ad Paused’: ‘ad’,
‘Video Ad Resumed’: ‘ad’
};
return subTypesEnum[eventName] ? subTypesEnum[eventName] : null;
}
/**
* sets global trais and custom properties
* @param {*} props – segment global props
* @param {*} data – player config
*/
;
_proto.setGlobalProps = function setGlobalProps(props) {
var pageName = this.getPageName();
var pageType = this.getPageType();
var storyTitle = this.getStoryTitle();
var buildVersion = this.getBuildVersion();
if (pageName) props.properties.page_name = pageName;
if (pageType) props.properties.page_type = pageType;
if (storyTitle) {
props.properties.story_title = storyTitle;
if (props.properties.title) props.properties.title = storyTitle;
if (props.properties.program) props.properties.program = storyTitle;
}
if (buildVersion) {
props.properties.app_build = buildVersion;
props.properties.app_version = buildVersion;
}
props.context.traits = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[“getProfileData”])(props.context.traits);
if (this.auth) {
props.context.traits.mvpd = this.auth.mvpdId || ”;
props.context.traits.network_entitlement_list = this.auth.networkEntitlementList || ”;
}
props = this.getPageContentLevels(props);
props = this.setCampaignTraits(props);
return props;
}
/**
* removes all empty/null custom properties
* @param {Object} props – analytics props object
* @return {Object} – returns object only if not empty/null
*/
;
_proto.updateAllProps = function updateAllProps(props) {
var newProperties = {};
for (var prop in props.properties) {
if (props.properties[prop] || typeof props.properties[prop] === “boolean” || typeof props.properties[prop] === “number”) {
newProperties[prop] = props.properties[prop];
}
}
props.properties = newProperties;
return props;
};
_proto.getPageProps = function getPageProps(name, data) {
var props = this.setGlobalProps(this.getDefaultProps(‘page’));
props.name = name || this.getLandingName();
if (data) {
if (data.properties) {
for (var prop in data.properties) {
props.properties[prop] = data.properties[prop];
}
}
if (data.context && data.context.traits) {
for (var trait in data.context.traits) {
props.context.traits[trait] = data.context.traits[trait];
}
}
}
props = this.updateAllProps(props);
return props;
};
_proto.getEventProps = function getEventProps(eventName, data) {
eventName = this.getSegmentEventName(eventName);
var props = this.setGlobalProps(this.getDefaultProps(‘event’, eventName));
props.event = eventName;
if (data) {
if (data.properties) {
for (var prop in data.properties) {
props.properties[prop] = data.properties[prop];
}
}
if (data.context && data.context.traits) {
for (var trait in data.context.traits) {
props.context.traits[trait] = data.context.traits[trait];
}
}
}
props = this.updateAllProps(props);
return props;
};
_proto.getVideoEventProps = function getVideoEventProps(eventName, data) {
var props = this.setGlobalProps(this.getDefaultProps(‘video’, eventName));
props.event = eventName;
props.properties.session_id = data.player.guid;
props.properties.position = eventName.indexOf(‘Started’) > -1 ? 0 : this.getPosition(data.player.playerGetPosition(), data.player.priorAdTime);
this.current_video_length = this.getDuration(data.player.duration);
if (this.current_video_length != this.last_video_length && data.player.contentType == ‘main’) {
this.last_video_length = this.current_video_length;
this.total_length += this.current_video_length;
}
if (this.total_length > 0) props.properties.total_length = this.total_length;
if (data.player.options.mode) {
props.properties.livestream = data.player.isLive;
if (props.properties.livestream) {
props.properties.video_content_type = ‘LIVE’;
} else {
props.properties.video_content_type = data.player.options.mode.toUpperCase();
}
}
props.properties.video_fox_profile = props.context.traits.dcg_profile_id != null;
props.properties.video_player_state = function (playerState) {
if (playerState === ‘Started’) return ‘start’;
if (playerState === ‘Completed’) return ‘end’;
if (playerState === ‘Playing’) return ‘play’;
return ‘no player state’;
}(eventName.split(/[s,]+/).pop()); // conditional props
if (data.player.contentAssetId) props.properties.content_asset_ids = [data.player.contentAssetId];
if (data.player.currentId) props.properties.video_asset_id = data.player.currentId;
if (data.player.currentId) props.properties.asset_id = data.player.currentId;
if (data.player.contentType) props.properties.video_player_content_type = data.player.contentType;
if (!data.player.isLive && this.current_video_length > 0) {
props.properties.video_content_length = this.current_video_length;
}
props.properties.video_content_length_format = props.properties.video_content_type && props.properties.video_content_type === ‘LIVE’ ? ‘long-form’ : ‘short-form’;
if (data.network) props.properties.video_network = data.network;
if (data.sportsTag) props.properties.video_sports_type = data.sportsTag;
if (typeof props.properties.video_seconds_viewed !== ‘undefined’) {
props.properties.video_seconds_viewed = this.getSecondsViewed(eventName);
}
if (data.event) {
var event = data.event;
var trackingData = event.trackingData;
if (event.chapter) {
props.properties.pod_id = event.chapter.index + 1 + ”;
if (event.chapters && !data.player.isLive && props.properties.hasOwnProperty(‘content_pod_ids’)) {
var contentPodIds = event.chapters.map(function (c, i) {
return i + 1 + ”;
}).slice(event.chapter.index);
props.properties.content_pod_ids = contentPodIds;
}
}
if (eventName === ‘Video Ad Playing’) {
this.adCurrentTime = event.currentTime;
props.properties.video_seconds_viewed = 1;
}
if (eventName === ‘Video Ad Completed’) {
this.adCurrentTime = 0;
props.properties.video_seconds_viewed = 1;
}
if (trackingData) {
var eventType = trackingData.content || trackingData.ad;
if (eventType) {
props.properties.title = eventType.title;
}
if (trackingData.content) {
props.properties.program = trackingData.content.program;
}
}
}
if (data.data) {
props.properties.program = data.data.categoryName || props.properties.program;
}
props = this.updateAllProps(props);
return props;
};
_proto.setSegmentLoaded = function setSegmentLoaded(flag) {
return window.segmentLoaded = flag;
};
_proto.check = function check() {
return typeof window.segmentLoaded === ‘undefined’ ? false : window.segmentLoaded;
};
_proto.trackPage = function trackPage(name, props) {
var self = this;
return new Promise(function (resolve, reject) {
/* https://segment.com/docs/sources/website/analytics.js/#page */
if (!self.check()) {
try {
self.initScript(self.segmentApiKey, false);
} catch (e) {
return reject(‘SEGMENT ANALYTICS !! – Segment Analytics is not initialized’);
}
}
var meta = props || self.metaEl;
if (!meta) {
return reject(‘SEGMENT ANALYTICS !! – analytics meta tag or props are required and are missing’);
}
props = self.getPageProps(name, meta);
name = name || props.name;
/* NOTE: `trackPage` params takes priority over default/meta values from getPageProps */
console.debug(“Segment page tracking (” + name + “): ” + JSON.stringify(props));
window.analytics.page(name, props.properties, {
context: props.context
});
resolve();
});
};
_proto.isCanTrackVideo = function isCanTrackVideo(eventName, data) {
if (eventName === ‘Video Ad Playing’ && data.event) {
return Math.floor(this.adCurrentTime) !== Math.floor(data.event.currentTime);
}
return true;
};
_proto.trackVideoEvent = function trackVideoEvent(eventName, data) {
var _this = this;
var self = this;
return new Promise(function (resolve, reject) {
/* https://segment.com/docs/sources/website/analytics.js/#track */
if (!self.check()) {
try {
self.initScript(self.segmentApiKey, false);
} catch (e) {
return reject(‘SEGMENT ANALYTICS !! – Segment Analytics is not initialized’);
}
}
if (!eventName) return reject(‘SEGMENT ANALYTICS !! – video event name is required’);
if (!data) return reject(‘SEGMENT ANALYTICS !! – video event data is required’);
eventName = self.getSegmentEventName(eventName);
if (eventName == null) {
return reject(“SEGMENT ANALYTICS !! – event(” + eventName + “) is not recognized as a segment event.”);
}
if (!_this.isCanTrackVideo(eventName, data)) {
return resolve();
}
self.auth = data.auth;
var props = self.getVideoEventProps(eventName, data);
console.debug(“Segment video event tracking (” + eventName + “) – ” + JSON.stringify(props));
window.analytics.track(eventName, props.properties, {
context: props.context
});
resolve();
});
};
_proto.trackEvent = function trackEvent(eventName, data) {
var self = this;
return new Promise(function (resolve, reject) {
/* https://segment.com/docs/sources/website/analytics.js/#track */
if (!self.check()) {
try {
self.initScript(self.segmentApiKey, false);
} catch (e) {
return reject(‘SEGMENT ANALYTICS !! – Segment Analytics is not initialized’);
}
}
if (!eventName) return reject(‘SEGMENT ANALYTICS !! – event name is required’);
if (!data) return reject(‘SEGMENT ANALYTICS !! – event data is required’);
var props = self.getEventProps(eventName, data);
console.debug(“Segment event tracking (” + eventName + “) – ” + JSON.stringify(props));
window.analytics.track(eventName, props.properties, {
context: props.context
});
resolve();
});
};
_proto.initScript = function initScript(segmentApiKey, enablePageLoadTracking) {
if (segmentApiKey === void 0) {
segmentApiKey = null;
}
if (enablePageLoadTracking === void 0) {
enablePageLoadTracking = true;
}
var self = this;
if (!self.check()) {
self.segmentApiKey = function (key) {
if (typeof key === ‘string’ && key.length > 0) return key;
return self.metaEl != null && self.metaEl.hasOwnProperty(‘segment_api_key’) && self.metaEl[‘segment_api_key’] ? self.metaEl[‘segment_api_key’] : null;
}(segmentApiKey);
!function () {
var analytics = window.analytics = window.analytics || [];
if (!analytics.initialize) if (analytics.invoked) window.console && console.error && console.error(“Segment snippet included twice.”);else {
analytics.invoked = !0;
analytics.methods = [“trackSubmit”, “trackClick”, “trackLink”, “trackForm”, “pageview”, “identify”, “reset”, “group”, “track”, “ready”, “alias”, “debug”, “page”, “once”, “off”, “on”];
analytics.factory = function (t) {
return function () {
var e = Array.prototype.slice.call(arguments);
e.unshift(t);
analytics.push(e);
return analytics;
};
};
for (var t = 0; t = 0 ? att.replace(/-/g, ‘_’) : att;
data[att] = val.trim();
}
}
return data;
} // query string helpers
function setCampaignTraitsSession() {
if (window.location.search.length == 0) return;
var queryStr = window.location.search;
var campaignTraits = {
“org”: “campaign_organization”,
“ag”: “campaign_agency”,
“mc”: “campaign_type”,
“src”: “campaign_source”,
“cmp”: “campaign_name”,
“add”: “campaign_additional”,
“cmpid”: “campaign_tracking_code”
};
var query = new URLSearchParams(queryStr);
var params = Object.keys(campaignTraits);
var result;
for (var _iterator = query.keys(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var key = _ref;
if (key in params) {
if (!result) result = {};
result[campaignTraits[key]] = query.get(key);
}
}
if (result) {
window.sessionStorage.setItem(‘sessionCampaignTraits’, JSON.stringify(result));
}
return result;
}
;
function getSessionCampaignTraits() {
var result;
try {
result = JSON.parse(window.sessionStorage.getItem(‘sessionCampaignTraits’));
if (!result) {
result = setCampaignTraitsSession();
}
} catch (e) {
return;
}
return result;
}
;
/*
`lastAnonymousProfileId`
+ populate when user hasn’t logged in
+ pass blank on tracking when user is logged in
+ pass last anon id if user is logged out (?)
`lastKnownProfileId`
+ pass blank when user hasn’t logged in
+ populate when user logs out
+ pass blank when user logs back in (?)
*/
function isObjectEmpty(obj) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) return false;
}
return true;
}
function getProfileData(objData) {
if (objData === void 0) {
objData = {};
}
var wisReg = window.wisRegistration;
if (wisReg) {
var isLoggedIn = isUserLoggedIn();
if (isLoggedIn) {
var profileId = wisReg.getProfileId();
objData.dcg_profile_id = profileId || ”;
sessionStorage.setItem(‘lastKnownProfileId’, profileId);
}
objData.lastKnownProfileId = sessionStorage.getItem(‘lastKnownProfileId’) || ”;
var lastAnonProfileId = getAnonProfileId(wisReg) || sessionStorage.getItem(‘lastAnonymousProfileId’);
objData.lastAnonymousProfileId = lastAnonProfileId || ”;
sessionStorage.setItem(‘lastAnonymousProfileId’, objData.lastAnonymousProfileId);
}
return objData;
}
function getJWT() {
return _getJWT.apply(this, arguments);
}
function _getJWT() {
_getJWT = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee() {
var wisReg;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
wisReg = window.wisRegistration;
if (!wisReg) {
_context.next = 3;
break;
}
return _context.abrupt(“return”, wisReg.getJWT());
case 3:
return _context.abrupt(“return”, null);
case 4:
case “end”:
return _context.stop();
}
}
}, _callee);
}));
return _getJWT.apply(this, arguments);
}
function getAnonProfileId(wisReg) {
if (wisReg.getAnonProfileId === “function”) {
return wisReg.getAnonProfileId();
}
return null;
}
function isUserLoggedIn() {
var wisReg = window.wisRegistration;
if (wisReg && wisReg.isUserLoggedIn === “function”) {
return wisReg.isUserLoggedIn();
}
return null;
}
function getAuthData() {
return _getAuthData.apply(this, arguments);
}
function _getAuthData() {
_getAuthData = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee2() {
var profile, geo, auth;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
profile = getProfileData();
geo = getGeoLocation();
_context2.t0 = isProfileAnon();
_context2.t1 = profile.dcg_profile_id || null;
_context2.next = 6;
return getJWT();
case 6:
_context2.t2 = _context2.sent;
_context2.t3 = profile.lastKnownProfileId;
_context2.t4 = profile.lastAnonymousProfileId;
_context2.t5 = {
profileAnonymous: _context2.t0,
profileId: _context2.t1,
accessToken: _context2.t2,
lastKnownProfileId: _context2.t3,
lastAnonymousProfileId: _context2.t4
};
_context2.t6 = getMVPDId();
_context2.next = 13;
return getUserEntitlementsList();
case 13:
_context2.t7 = _context2.sent;
_context2.t8 = _extends({}, geo);
auth = {
upstreamUserID: null,
profile: _context2.t5,
authorizingNetwork: null,
mvpdId: _context2.t6,
networkEntitlementList: _context2.t7,
geo: _context2.t8
};
return _context2.abrupt(“return”, auth);
case 17:
case “end”:
return _context2.stop();
}
}
}, _callee2);
}));
return _getAuthData.apply(this, arguments);
}
function isProfileAnon() {
var isLoggedIn = isUserLoggedIn();
if (isLoggedIn) {
return !isLoggedIn;
}
return true;
}
/**
* set geo location on session storage
*/
function setGeoLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (pos) {
var geo = {
geoLatitude: pos.coords.latitude,
geoLongitude: pos.coords.longitude
};
sessionStorage.setItem(‘fs_geolocation’, JSON.stringify(geo));
});
}
}
/**
* get geo location from session storage
*/
function getGeoLocation() {
// Get geolocation data from sessionStorage
var geo = sessionStorage.getItem(‘fs_geolocation’);
if (geo) {
return JSON.parse(geo);
}
return {
geoLatitude: null,
geoLongitude: null
};
}
function getUserEntitlementsList() {
return _getUserEntitlementsList.apply(this, arguments);
}
/**
* returns mvpd id
*/
function _getUserEntitlementsList() {
_getUserEntitlementsList = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee3() {
var wisReg, entitlements, channels, ppvEvents, formmattedList;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
wisReg = window.wisRegistration;
if (!wisReg) {
_context3.next = 13;
break;
}
_context3.next = 4;
return wisReg.getUserEntitlements();
case 4:
entitlements = _context3.sent;
if (entitlements) {
_context3.next = 7;
break;
}
return _context3.abrupt(“return”, null);
case 7:
channels = entitlements.channels.map(function (e) {
return e.name;
});
ppvEvents = entitlements.ppvEvents.map(function (e) {
return e.uri;
});
formmattedList = ”;
if (channels) {
formmattedList = channels.toString();
}
if (ppvEvents && ppvEvents.length > 0) {
formmattedList += “,” + ppvEvents.toString();
}
return _context3.abrupt(“return”, formmattedList);
case 13:
return _context3.abrupt(“return”, null);
case 14:
case “end”:
return _context3.stop();
}
}
}, _callee3);
}));
return _getUserEntitlementsList.apply(this, arguments);
}
function getMVPDId() {
var wisReg = window.wisRegistration;
if (wisReg && typeof wisReg.getMVPDDetails === “function”) {
var details = wisReg.getMVPDDetails();
if (details) {
return details.providerId;
}
return null;
}
}
/***/ }),
/***/ “./node_modules/@foxdcg/fs-segment-analytics/lib/index.js”:
/*!****************************************************************!*
!*** ./node_modules/@foxdcg/fs-segment-analytics/lib/index.js ***!
****************************************************************/
/*! exports provided: SegmentAnalytics, getAuthData, setGeoLocation, getGeoLocation */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _helpers_SegmentAnalytics__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/SegmentAnalytics */ “./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/SegmentAnalytics.js”);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, “SegmentAnalytics”, function() { return _helpers_SegmentAnalytics__WEBPACK_IMPORTED_MODULE_0__[“default”]; });
/* harmony import */ var _helpers_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/utils */ “./node_modules/@foxdcg/fs-segment-analytics/lib/helpers/utils.js”);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, “getAuthData”, function() { return _helpers_utils__WEBPACK_IMPORTED_MODULE_1__[“getAuthData”]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, “setGeoLocation”, function() { return _helpers_utils__WEBPACK_IMPORTED_MODULE_1__[“setGeoLocation”]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, “getGeoLocation”, function() { return _helpers_utils__WEBPACK_IMPORTED_MODULE_1__[“getGeoLocation”]; });
/***/ }),
/***/ “./node_modules/isomorphic-fetch/fetch-npm-browserify.js”:
/*!***************************************************************!*
!*** ./node_modules/isomorphic-fetch/fetch-npm-browserify.js ***!
***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// the whatwg-fetch polyfill installs the fetch() function
// on the global object (window or self)
//
// Return that as the export for use in Webpack, Browserify etc.
__webpack_require__(/*! whatwg-fetch */ “./node_modules/whatwg-fetch/fetch.js”);
module.exports = self.fetch.bind(self);
/***/ }),
/***/ “./node_modules/lazysizes/lazysizes.js”:
/*!*********************************************!*
!*** ./node_modules/lazysizes/lazysizes.js ***!
*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
(function(window, factory) {
var lazySizes = factory(window, window.document);
window.lazySizes = lazySizes;
if( true && module.exports){
module.exports = lazySizes;
}
}(window, function l(window, document) {
‘use strict’;
/*jshint eqnull:true */
if(!document.getElementsByClassName){return;}
var lazySizesConfig;
var docElem = document.documentElement;
var Date = window.Date;
var supportPicture = window.HTMLPictureElement;
var _addEventListener = ‘addEventListener’;
var _getAttribute = ‘getAttribute’;
var addEventListener = window[_addEventListener];
var setTimeout = window.setTimeout;
var requestAnimationFrame = window.requestAnimationFrame || setTimeout;
var requestIdleCallback = window.requestIdleCallback;
var regPicture = /^picture$/i;
var loadEvents = [‘load’, ‘error’, ‘lazyincluded’, ‘_lazyloaded’];
var regClassCache = {};
var forEach = Array.prototype.forEach;
var hasClass = function(ele, cls) {
if(!regClassCache[cls]){
regClassCache[cls] = new RegExp(‘(\s|^)’+cls+'(\s|$)’);
}
return regClassCache[cls].test(ele[_getAttribute](‘class’) || ”) && regClassCache[cls];
};
var addClass = function(ele, cls) {
if (!hasClass(ele, cls)){
ele.setAttribute(‘class’, (ele[_getAttribute](‘class’) || ”).trim() + ‘ ‘ + cls);
}
};
var removeClass = function(ele, cls) {
var reg;
if ((reg = hasClass(ele,cls))) {
ele.setAttribute(‘class’, (ele[_getAttribute](‘class’) || ”).replace(reg, ‘ ‘));
}
};
var addRemoveLoadEvents = function(dom, fn, add){
var action = add ? _addEventListener : ‘removeEventListener’;
if(add){
addRemoveLoadEvents(dom, fn);
}
loadEvents.forEach(function(evt){
dom[action](evt, fn);
});
};
var triggerEvent = function(elem, name, detail, noBubbles, noCancelable){
var event = document.createEvent(‘CustomEvent’);
event.initCustomEvent(name, !noBubbles, !noCancelable, detail || {});
elem.dispatchEvent(event);
return event;
};
var updatePolyfill = function (el, full){
var polyfill;
if( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){
polyfill({reevaluate: true, elements: [el]});
} else if(full && full.src){
el.src = full.src;
}
};
var getCSS = function (elem, style){
return (getComputedStyle(elem, null) || {})[style];
};
var getWidth = function(elem, parent, width){
width = width || elem.offsetWidth;
while(width 0);
if(visible && getCSS(parent, ‘overflow’) != ‘visible’){
outerRect = parent.getBoundingClientRect();
visible = eLright > outerRect.left &&
eLleft outerRect.top – 1 &&
eLtop 500 ? 500 : 400;
}
defaultExpand = lazySizesConfig.expand;
preloadExpand = defaultExpand * lazySizesConfig.expFactor;
}
if(currentExpand 2 && loadMode > 2 && !document.hidden){
currentExpand = preloadExpand;
lowRuns = 0;
} else if(loadMode > 1 && lowRuns > 1 && isLoading = elemNegativeExpand &&
(eLtop = rect.top) = elemNegativeExpand * hFac &&
(eLleft = rect.left) 9){break;}
} else if(!loadedSomething && isCompleted && !autoLoadElem &&
isLoading 2 &&
(preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&
(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != ‘auto’)))){
autoLoadElem = preloadElems[0] || lazyloadElems[i];
}
}
if(autoLoadElem && !loadedSomething){
unveilElement(autoLoadElem);
}
}
};
var throttledCheckElements = throttle(checkElements);
var switchLoadingClass = function(e){
addClass(e.target, lazySizesConfig.loadedClass);
removeClass(e.target, lazySizesConfig.loadingClass);
addRemoveLoadEvents(e.target, rafSwitchLoadingClass);
};
var rafedSwitchLoadingClass = rAFIt(switchLoadingClass);
var rafSwitchLoadingClass = function(e){
rafedSwitchLoadingClass({target: e.target});
};
var changeIframeSrc = function(elem, src){
try {
elem.contentWindow.location.replace(src);
} catch(e){
elem.src = src;
}
};
var handleSources = function(source){
var customMedia, parent;
var sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);
if( (customMedia = lazySizesConfig.customMedia[source[_getAttribute](‘data-media’) || source[_getAttribute](‘media’)]) ){
source.setAttribute(‘media’, customMedia);
}
if(sourceSrcset){
source.setAttribute(‘srcset’, sourceSrcset);
}
//https://bugzilla.mozilla.org/show_bug.cgi?id=1170572
if(customMedia){
parent = source.parentNode;
parent.insertBefore(source.cloneNode(), source);
parent.removeChild(source);
}
};
var lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){
var src, srcset, parent, isPicture, event, firesLoad;
if(!(event = triggerEvent(elem, ‘lazybeforeunveil’, detail)).defaultPrevented){
if(sizes){
if(isAuto){
addClass(elem, lazySizesConfig.autosizesClass);
} else {
elem.setAttribute(‘sizes’, sizes);
}
}
srcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);
src = elem[_getAttribute](lazySizesConfig.srcAttr);
if(isImg) {
parent = elem.parentNode;
isPicture = parent && regPicture.test(parent.nodeName || ”);
}
firesLoad = detail.firesLoad || ((‘src’ in elem) && (srcset || src || isPicture));
event = {target: elem};
if(firesLoad){
addRemoveLoadEvents(elem, resetPreloading, true);
clearTimeout(resetPreloadingTimer);
resetPreloadingTimer = setTimeout(resetPreloading, 2500);
addClass(elem, lazySizesConfig.loadingClass);
addRemoveLoadEvents(elem, rafSwitchLoadingClass, true);
}
if(isPicture){
forEach.call(parent.getElementsByTagName(‘source’), handleSources);
}
if(srcset){
elem.setAttribute(‘srcset’, srcset);
} else if(src && !isPicture){
if(regIframe.test(elem.nodeName)){
changeIframeSrc(elem, src);
} else {
elem.src = src;
}
}
if(srcset || isPicture){
updatePolyfill(elem, {src: src});
}
}
rAF(function(){
if(elem._lazyRace){
delete elem._lazyRace;
}
removeClass(elem, lazySizesConfig.lazyClass);
if( !firesLoad || elem.complete ){
if(firesLoad){
resetPreloading(event);
} else {
isLoading–;
}
switchLoadingClass(event);
}
});
});
var unveilElement = function (elem){
var detail;
var isImg = regImg.test(elem.nodeName);
//allow using sizes=”auto”, but don’t use. it’s invalid. Use data-sizes=”auto” or a valid value for sizes instead (i.e.: sizes=”80vw”)
var sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute](‘sizes’));
var isAuto = sizes == ‘auto’;
if( (isAuto || !isCompleted) && isImg && (elem.src || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass)){return;}
detail = triggerEvent(elem, ‘lazyunveilread’).detail;
if(isAuto){
autoSizer.updateElem(elem, true, elem.offsetWidth);
}
elem._lazyRace = true;
isLoading++;
lazyUnveil(elem, detail, isAuto, sizes, isImg);
};
var onload = function(){
if(isCompleted){return;}
if(Date.now() – started 0);
},
checkElems: throttledCheckElements,
unveil: unveilElement
};
})();
var autoSizer = (function(){
var autosizesElems;
var sizeElement = rAFIt(function(elem, parent, event, width){
var sources, i, len;
elem._lazysizesWidth = width;
width += ‘px’;
elem.setAttribute(‘sizes’, width);
if(regPicture.test(parent.nodeName || ”)){
sources = parent.getElementsByTagName(‘source’);
for(i = 0, len = sources.length; i 1) {
for (var i = 1; i
* @licence MIT
*
*/
(function(self) {
‘use strict’;
var nativeURLSearchParams = (self.URLSearchParams && self.URLSearchParams.prototype.get) ? self.URLSearchParams : null,
isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === ‘a=1’,
// There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.
decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams(‘s=%2B’).get(‘s’) === ‘+’),
__URLSearchParams__ = “__URLSearchParams__”,
// Fix bug in Edge which cannot encode ‘ &’ correctly
encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {
var ampersandTest = new nativeURLSearchParams();
ampersandTest.append(‘s’, ‘ &’);
return ampersandTest.toString() === ‘s=+%26’;
})() : true,
prototype = URLSearchParamsPolyfill.prototype,
iterable = !!(self.Symbol && self.Symbol.iterator);
if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly) {
return;
}
/**
* Make a URLSearchParams instance
*
* @param {object|string|URLSearchParams} search
* @constructor
*/
function URLSearchParamsPolyfill(search) {
search = search || “”;
// support construct object with another URLSearchParams instance
if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {
search = search.toString();
}
this [__URLSearchParams__] = parseToDict(search);
}
/**
* Appends a specified key/value pair as a new search parameter.
*
* @param {string} name
* @param {string} value
*/
prototype.append = function(name, value) {
appendTo(this [__URLSearchParams__], name, value);
};
/**
* Deletes the given search parameter, and its associated value,
* from the list of all search parameters.
*
* @param {string} name
*/
prototype[‘delete’] = function(name) {
delete this [__URLSearchParams__] [name];
};
/**
* Returns the first value associated to the given search parameter.
*
* @param {string} name
* @returns {string|null}
*/
prototype.get = function(name) {
var dict = this [__URLSearchParams__];
return name in dict ? dict[name][0] : null;
};
/**
* Returns all the values association with a given search parameter.
*
* @param {string} name
* @returns {Array}
*/
prototype.getAll = function(name) {
var dict = this [__URLSearchParams__];
return name in dict ? dict [name].slice(0) : [];
};
/**
* Returns a Boolean indicating if such a search parameter exists.
*
* @param {string} name
* @returns {boolean}
*/
prototype.has = function(name) {
return name in this [__URLSearchParams__];
};
/**
* Sets the value associated to a given search parameter to
* the given value. If there were several values, delete the
* others.
*
* @param {string} name
* @param {string} value
*/
prototype.set = function set(name, value) {
this [__URLSearchParams__][name] = [” + value];
};
/**
* Returns a string containg a query string suitable for use in a URL.
*
* @returns {string}
*/
prototype.toString = function() {
var dict = this[__URLSearchParams__], query = [], i, key, name, value;
for (key in dict) {
name = encode(key);
for (i = 0, value = dict[key]; i -1
}
}
function normalizeName(name) {
if (typeof name !== ‘string’) {
name = String(name)
}
if (/[^a-z0-9-#$%&’*+.^_`|~]/i.test(name)) {
throw new TypeError(‘Invalid character in header field name’)
}
return name.toLowerCase()
}
function normalizeValue(value) {
if (typeof value !== ‘string’) {
value = String(value)
}
return value
}
// Build a destructive iterator for the value list
function iteratorFor(items) {
var iterator = {
next: function() {
var value = items.shift()
return {done: value === undefined, value: value}
}
}
if (support.iterable) {
iterator[Symbol.iterator] = function() {
return iterator
}
}
return iterator
}
function Headers(headers) {
this.map = {}
if (headers instanceof Headers) {
headers.forEach(function(value, name) {
this.append(name, value)
}, this)
} else if (Array.isArray(headers)) {
headers.forEach(function(header) {
this.append(header[0], header[1])
}, this)
} else if (headers) {
Object.getOwnPropertyNames(headers).forEach(function(name) {
this.append(name, headers[name])
}, this)
}
}
Headers.prototype.append = function(name, value) {
name = normalizeName(name)
value = normalizeValue(value)
var oldValue = this.map[name]
this.map[name] = oldValue ? oldValue + ‘, ‘ + value : value
}
Headers.prototype[‘delete’] = function(name) {
delete this.map[normalizeName(name)]
}
Headers.prototype.get = function(name) {
name = normalizeName(name)
return this.has(name) ? this.map[name] : null
}
Headers.prototype.has = function(name) {
return this.map.hasOwnProperty(normalizeName(name))
}
Headers.prototype.set = function(name, value) {
this.map[normalizeName(name)] = normalizeValue(value)
}
Headers.prototype.forEach = function(callback, thisArg) {
for (var name in this.map) {
if (this.map.hasOwnProperty(name)) {
callback.call(thisArg, this.map[name], name, this)
}
}
}
Headers.prototype.keys = function() {
var items = []
this.forEach(function(value, name) {
items.push(name)
})
return iteratorFor(items)
}
Headers.prototype.values = function() {
var items = []
this.forEach(function(value) {
items.push(value)
})
return iteratorFor(items)
}
Headers.prototype.entries = function() {
var items = []
this.forEach(function(value, name) {
items.push([name, value])
})
return iteratorFor(items)
}
if (support.iterable) {
Headers.prototype[Symbol.iterator] = Headers.prototype.entries
}
function consumed(body) {
if (body.bodyUsed) {
return Promise.reject(new TypeError(‘Already read’))
}
body.bodyUsed = true
}
function fileReaderReady(reader) {
return new Promise(function(resolve, reject) {
reader.onload = function() {
resolve(reader.result)
}
reader.onerror = function() {
reject(reader.error)
}
})
}
function readBlobAsArrayBuffer(blob) {
var reader = new FileReader()
var promise = fileReaderReady(reader)
reader.readAsArrayBuffer(blob)
return promise
}
function readBlobAsText(blob) {
var reader = new FileReader()
var promise = fileReaderReady(reader)
reader.readAsText(blob)
return promise
}
function readArrayBufferAsText(buf) {
var view = new Uint8Array(buf)
var chars = new Array(view.length)
for (var i = 0; i -1 ? upcased : method
}
function Request(input, options) {
options = options || {}
var body = options.body
if (input instanceof Request) {
if (input.bodyUsed) {
throw new TypeError(‘Already read’)
}
this.url = input.url
this.credentials = input.credentials
if (!options.headers) {
this.headers = new Headers(input.headers)
}
this.method = input.method
this.mode = input.mode
this.signal = input.signal
if (!body && input._bodyInit != null) {
body = input._bodyInit
input.bodyUsed = true
}
} else {
this.url = String(input)
}
this.credentials = options.credentials || this.credentials || ‘same-origin’
if (options.headers || !this.headers) {
this.headers = new Headers(options.headers)
}
this.method = normalizeMethod(options.method || this.method || ‘GET’)
this.mode = options.mode || this.mode || null
this.signal = options.signal || this.signal
this.referrer = null
if ((this.method === ‘GET’ || this.method === ‘HEAD’) && body) {
throw new TypeError(‘Body not allowed for GET or HEAD requests’)
}
this._initBody(body)
}
Request.prototype.clone = function() {
return new Request(this, {body: this._bodyInit})
}
function decode(body) {
var form = new FormData()
body
.trim()
.split(‘&’)
.forEach(function(bytes) {
if (bytes) {
var split = bytes.split(‘=’)
var name = split.shift().replace(/+/g, ‘ ‘)
var value = split.join(‘=’).replace(/+/g, ‘ ‘)
form.append(decodeURIComponent(name), decodeURIComponent(value))
}
})
return form
}
function parseHeaders(rawHeaders) {
var headers = new Headers()
// Replace instances of rn and n followed by at least one space or horizontal tab with a space
// https://tools.ietf.org/html/rfc7230#section-3.2
var preProcessedHeaders = rawHeaders.replace(/r?n[t ]+/g, ‘ ‘)
preProcessedHeaders.split(/r?n/).forEach(function(line) {
var parts = line.split(‘:’)
var key = parts.shift().trim()
if (key) {
var value = parts.join(‘:’).trim()
headers.append(key, value)
}
})
return headers
}
Body.call(Request.prototype)
function Response(bodyInit, options) {
if (!options) {
options = {}
}
this.type = ‘default’
this.status = options.status === undefined ? 200 : options.status
this.ok = this.status >= 200 && this.status 3 && arguments[3] !== undefined ? arguments[3] : _utils__WEBPACK_IMPORTED_MODULE_1__[“headers”];
var options = Object.assign({
method: ‘GET’
}, customHeaders);
return fetchData(url, options, callback, error);
}
function post(url, data, callback, error) {
var customHeaders = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _utils__WEBPACK_IMPORTED_MODULE_1__[“headers”];
var options = Object.assign({
method: ‘POST’,
body: JSON.stringify(data)
}, customHeaders);
return sendPost(url, options, callback, error);
}
/***/ }),
/***/ “./react-app-src/shared/services/FsPlaylistService.js”:
/*!************************************************************!*
!*** ./react-app-src/shared/services/FsPlaylistService.js ***!
************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ “./react-app-src/shared/constants.js”);
/* harmony import */ var _FetchService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FetchService */ “./react-app-src/shared/services/FetchService.js”);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(“Cannot call a class as a function”); } }
function _defineProperties(target, props) { for (var i = 0; i 0 && arguments[0] !== undefined ? arguments[0] : ”;
var defaultVideoTags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ”;
var postId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
if (this.parselyPlaylist) {
return this.parselyPlaylist;
}
var tags = ‘?parselytags=’ + parselyFeedTags + (defaultVideoTags && ‘&defaulttags=’ + defaultVideoTags) + ‘&postid=’ + postId;
this.parselyPlaylist = Object(_FetchService__WEBPACK_IMPORTED_MODULE_1__[“get”])(_constants__WEBPACK_IMPORTED_MODULE_0__[“settings”].PARSELY_URL_V2 + tags, function (json) {
if (!json.success) return [];
var data = json.data;
return Array.isArray(data) ? data : [data];
}, function () {
return [];
});
return this.parselyPlaylist;
}
}, {
key: “getParselyContentByFeed”,
value: function getParselyContentByFeed(feedUrl) {
var postId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
if (this.playlist) {
return this.playlist;
}
var url = ‘?feedurl=’ + encodeURIComponent(feedUrl) + ‘&postid=’ + postId;
this.playlist = Object(_FetchService__WEBPACK_IMPORTED_MODULE_1__[“get”])(_constants__WEBPACK_IMPORTED_MODULE_0__[“settings”].PARSELY_URL_V2 + url, function (json) {
if (!json.success) return [];
var data = json.data;
return Array.isArray(data) ? data : [data];
}, function () {
return [];
});
return this.playlist;
}
}]);
return FsPlaylistService;
}();
/* harmony default export */ __webpack_exports__[“default”] = (FsPlaylistService);
/***/ }),
/***/ “./react-app-src/shared/utils.js”:
/*!***************************************!*
!*** ./react-app-src/shared/utils.js ***!
***************************************/
/*! exports provided: headers, handleFetchedErrors, getPostId, assetsDomain, decodeHtmlEntities, getOrderedChannels, parseImagesTag, parseSeconds, isFlashEnabled, isTabletOrMobile, isAndroid, getQueryString, getCookie, getAuthStatus */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
“use strict”;
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “headers”, function() { return headers; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “handleFetchedErrors”, function() { return handleFetchedErrors; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getPostId”, function() { return getPostId; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “assetsDomain”, function() { return assetsDomain; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “decodeHtmlEntities”, function() { return decodeHtmlEntities; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getOrderedChannels”, function() { return getOrderedChannels; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “parseImagesTag”, function() { return parseImagesTag; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “parseSeconds”, function() { return parseSeconds; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “isFlashEnabled”, function() { return isFlashEnabled; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “isTabletOrMobile”, function() { return isTabletOrMobile; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “isAndroid”, function() { return isAndroid; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getQueryString”, function() { return getQueryString; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getCookie”, function() { return getCookie; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, “getAuthStatus”, function() { return getAuthStatus; });
var headers = {
headers: {
Accept: ‘application/json’,
‘Content-Type’: ‘application/json’
},
credentials: ‘include’
};
function handleFetchedErrors(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}
function getPostId() {
var pageInfo = document.getElementById(‘page-information’);
if (pageInfo) {
var body = document.querySelector(‘.fox_sectionfront .body-content’);
if (body) {
return body.getAttribute(‘post-id’);
}
}
return document.body.getAttribute(‘post-id’);
}
function getAssetsDomain() {
var locationName = location.hostname;
if (locationName.match(/www.foxsports.com/)) {
return ‘https://b.fssta.com/sta/’;
}
if (locationName.match(/wp.foxsports.com/)) {
return ‘https://b.dev.fssta.com/sta/’;
}
return ‘/wp-content/themes/foxsports/assets/dist/’;
}
var assetsDomain = getAssetsDomain();
function decodeHtmlEntities(text) {
if (!text) return ”;
return text.replace(/&(w*|#d*);/g, function (s) {
return decodeTable[s] || ”;
});
}
/**
*
* @param {*} chans – channels coming from ddp entitlements res
*/
function getOrderedChannels(chans) {
// channels are defined as per priority
var channels = [{
name: “fbc-fox”
}, {
name: “fs1”
}, {
name: “fs2”
}, {
name: “btn”
}, {
name: “foxdep”
}];
var result = channels.filter(function (el) {
return chans.some(function (el2) {
return el.name === el2.name;
});
});
return result;
}
var decodeTable = {
‘&’: ‘&’,
‘”‘: ‘”‘,
‘<': '',
' ': ' ',
'!': '!',
'"': '"',
'#': '#',
'$': '$',
'%': '%',
'&': '&',
''': ''',
''': ''',
'(': '(',
')': ')',
'*': '*',
'+': '+',
',': ',',
'-': '-',
'.': '.',
'/': '/',
'–': '–',
'—': '—',
'‘': '‘',
'’': '’',
'‚': '‚',
'“': '“',
'”': '”',
'„': '„',
'†': '†',
'‡': '‡',
'•': '•',
'…': '…',
'‰': '‰',
'€': '€',
'™': '™'
};
function parseImagesTag(text) {
text = "
“.concat(text, “
“);
var parser = new DOMParser();
var result = {
srcSet: ”,
sizes: ”,
src: ”,
noscript: ”
};
try {
var el = parser.parseFromString(text, ‘text/html’);
var images = el.getElementsByTagName(‘img’);
if (images.length > 0) {
var img = images[0];
result.sizes = img.getAttribute(‘data-sizes’) || img.getAttribute(‘sizes’);
result.srcSet = img.getAttribute(‘data-srcset’) || img.getAttribute(‘srcset’);
result.src = img.getAttribute(‘data-src’) || img.getAttribute(‘src’);
}
var noscripts = el.getElementsByTagName(‘noscript’);
if (noscripts.length > 0) {
var noscript = noscripts[0];
result.noscript = noscript.innerHTML;
}
} finally {
return result;
}
}
function parseSeconds(time) {
if (!time || time.indexOf(‘.’) === -1) {
return time;
}
var minutes = Math.floor(time / 60);
var seconds = Math.floor(time – minutes * 60);
return minutes + ‘:’ + (seconds