{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///delegated ./node_modules/prop-types/index.js from dll-reference vendor_lib","webpack:///delegated ./node_modules/react/index.js from dll-reference vendor_lib","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///delegated ./node_modules/classnames/index.js from dll-reference vendor_lib","webpack:///./src/app/helpers/GlobalHelper.js","webpack:///delegated ./node_modules/react-router/es/index.js from dll-reference vendor_lib","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///delegated ./node_modules/axios/index.js from dll-reference vendor_lib","webpack:///delegated ./node_modules/react-redux/es/index.js from dll-reference vendor_lib","webpack:///./node_modules/lodash/includes.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/lodash/isEmpty.js","webpack:///./node_modules/date-fns/parse/index.js","webpack:///./node_modules/lodash/find.js","webpack:///./src/app/screens/Debug/Debug.module.scss","webpack:///./node_modules/lodash/map.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./src/app/screens/Collection/Collection.module.scss","webpack:///./node_modules/react-scroll/modules/index.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/lodash/filter.js","webpack:///./node_modules/lodash/toLower.js","webpack:///./src/app/screens/Live/Live.module.scss","webpack:///delegated ./node_modules/react-timeout/src/web.js from dll-reference vendor_lib","webpack:///./src/app/screens/ContentDetail/components/FoxContentDensitySkeleton/FoxContentDensitySkeleton.module.scss","webpack:///./node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/modules/es6.array.slice.js","webpack:///./src/app/screens/Live/components/ScheduleItem/ScheduleItem.module.scss","webpack:///./node_modules/lodash/isEqual.js","webpack:///./src/app/components/VideoPlayerGlobal/components/VideoDetail/VideoDetail.module.scss","webpack:///./node_modules/lodash/findIndex.js","webpack:///./node_modules/lodash/forEach.js","webpack:///./src/app/components/Account/AccountComponents/Signup/SignUp.module.scss","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/set.js","webpack:///./src/app/screens/SeriesDetail/styles/SeriesDetail.css","webpack:///./src/app/components/Header/Header.module.scss","webpack:///./src/app/components/Account/AccountComponents/ResetPassword/ResetPassword.module.scss","webpack:///./src/app/screens/SiteMap/SiteMap.css","webpack:///./src/app/components/VideoContainer/Overlays/OverlayTheme.css","webpack:///./node_modules/react-dotdotdot/src/index.js","webpack:///./node_modules/lodash/pick.js","webpack:///./src/app/components/Account/AccountComponents/FacebookLinking/FacebookLinking.module.scss","webpack:///./src/app/components/Account/AccountComponents/ParentalControls/ParentalControls.module.scss","webpack:///./node_modules/date-fns/index.js","webpack:///./src/app/components/Account/AccountComponents/VerifyAccount/VerifyAccount.module.scss","webpack:///./src/app/screens/Live/components/EPGItem/EPGItem.module.scss","webpack:///./src/app/screens/Live/components/PrimeTimeGrid/PrimeTimeGrid.module.scss","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./src/app/screens/Live/components/PrimeTimeItem/PrimeTimeItem.module.scss","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/lodash/split.js","webpack:///./node_modules/lodash/noop.js","webpack:///./node_modules/lodash/cloneDeep.js","webpack:///./node_modules/react-waypoint/es/index.js","webpack:///./src/app/screens/SeriesDetail/components/Branding/Branding.module.scss","webpack:///./src/app/screens/SignIn/SignIn.module.scss","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/trim.js","webpack:///./src/app/components/Account/AccountComponents/SocialFacebookPasswordLink/SocialFacebookPasswordLink.module.scss","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///external \"vendor_lib\"","webpack:///./src/app/screens/Live/components/FilterSearchBar/FilterSearchBar.module.scss","webpack:///./src/app/components/Account/AccountComponents/CreatePassword/CreatePassword.module.scss","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./src/app/screens/Live/styles/Dropdown.css","webpack:///./src/app/screens/Debug/panels/FeatureFlag/FeatureFlag.module.scss","webpack:///./src/app/components/PosterV2/styles/Simplified.module.scss","webpack:///./src/app/components/Auth/MVPDStart/Providers/Providers.module.scss","webpack:///./src/app/screens/SeriesDetail/components/TabList/TabList.module.scss","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/toInteger.js","webpack:///./src/app/components/Account/SharedStyles/SharedStyles.module.scss","webpack:///./node_modules/lodash/some.js","webpack:///./src/app/screens/ContentDetail/components/Clips/Clips.module.scss","webpack:///./src/app/components/VideoPlayerGlobal/components/Endcard/Endcard.module.scss","webpack:///./src/app/components/TileV2/Styles/LiveTile.module.scss","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/lodash/concat.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/ActionButton/ActionButton.module.scss","webpack:///./src/app/components/TileV2/Styles/SeasonTile.module.scss","webpack:///./src/app/screens/Live/components/EPGRow/EPGRow.module.scss","webpack:///./src/app/components/Dropdown/Dropdown.module.scss","webpack:///./src/app/themes/VideoHero.module.scss","webpack:///./src/app/components/Account/AccountComponents/ChangePassword/ChangePassword.module.scss","webpack:///./src/app/components/Account/AccountComponents/ConsolidatedSignInFlow/components/PasswordCollection/PasswordCollection.module.scss","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./src/app/components/TileV2/components/ActionButtons/ActionButtons.module.scss","webpack:///./src/app/components/TileV2/Styles/ClipTile.module.scss","webpack:///./src/app/screens/Error404/Error404.css","webpack:///./src/app/components/Account/AccountComponents/AppleLinking/AppleLinking.module.scss","webpack:///./src/app/components/Account/AccountComponents/ConsolidatedSignInFlow/components/SignIn/SignIn.module.scss","webpack:///./src/app/components/AuthClientless/Overlays/ResumeWithProfile/ResumeWithProfile.module.scss","webpack:///./src/app/components/Header/DefaultHeaderComponents/BuythroughProfileIcon/BuythroughProfileIcon.module.scss","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/remove.js","webpack:///./src/app/components/EmailSubmissionForm/EmailSubmissionForm.module.scss","webpack:///./src/app/screens/Collection/components/CollectionTile/components/ImageOverlay/overlays/Hover/style.css","webpack:///./src/app/components/Account/AccountComponents/Signin/SignIn.module.scss","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///delegated ./node_modules/react-dom/index.js from dll-reference vendor_lib","webpack:///./node_modules/lodash/last.js","webpack:///./src/app/components/Auth/PlaybackError/Geolocation/Geolocation.module.scss","webpack:///./src/app/screens/ContentDetail/components/Hero/components/ActionButton/ActionButton.module.scss","webpack:///./src/app/components/VideoTile/VideoTile.module.scss","webpack:///./src/app/screens/Collection/components/UpcomingModal/UpcomingModal.module.scss","webpack:///./src/app/components/Article/Article.module.scss","webpack:///./src/app/components/Account/AccountComponents/EditAccount/EditAccount.module.scss","webpack:///./src/app/components/AuthClientless/Overlays/ResumeWithoutProfile/ResumeWithoutProfile.module.scss","webpack:///./node_modules/core-js/modules/es6.number.is-nan.js","webpack:///./node_modules/lodash/isString.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/react-sticky/lib/index.js","webpack:///./node_modules/hls.js/dist/hls.js","webpack:///./src/app/screens/Collection/Carousel.module.scss","webpack:///./src/app/screens/ContentDetail/components/Overlay/Overlay.module.scss","webpack:///./src/app/screens/Search/components/SearchResults/geoLocation.css","webpack:///./src/app/screens/ContentDetail/components/Cast/CastDetail/CastDetail.module.scss","webpack:///./src/app/screens/Subscription/Subscription.module.scss","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./src/app/components/TileLegacy/TileLegacy.module.scss","webpack:///./src/app/components/TileV2/Styles/SearchTile.module.scss","webpack:///./src/app/components/Carousel/Carousel.module.scss","webpack:///./src/app/screens/Live/components/SearchResults/SearchResults.module.scss","webpack:///./src/app/components/HomeSlidePromo/HomeSlidePromo.module.scss","webpack:///./src/app/screens/Collection/components/CollectionTile/style.css","webpack:///./src/app/screens/GeoBlock/GeoBlock.css","webpack:///./src/app/components/Account/AccountComponents/Header/AccountHeader.module.scss","webpack:///./src/app/components/Account/AccountComponents/ResetPasswordSuccess/ResetPasswordSuccess.module.scss","webpack:///./src/app/screens/ContentDetail/components/Cast/CastMember/CastMember.module.scss","webpack:///./src/app/screens/ContentDetail/components/SeeAll/SeeAll.module.scss","webpack:///./src/app/components/Header/DefaultHeaderComponents/DefaultHeader.module.scss","webpack:///./src/app/components/FooterUpsell/FooterUpsell.module.scss","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/replace.js","webpack:///./node_modules/lodash/merge.js","webpack:///delegated ./node_modules/@friendsofreactjs/react-css-themr/lib/index.js from dll-reference vendor_lib","webpack:///./node_modules/react-visibility-sensor/visibility-sensor.js","webpack:///./node_modules/lodash/uniqBy.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/components/FirstTile/FirstTile.module.scss","webpack:///./src/app/components/PosterV2/styles/MoreLike.module.scss","webpack:///./src/app/screens/Error500/Error500.css","webpack:///./src/app/components/Account/AccountComponents/ForgotPassword/ForgotPassword.module.scss","webpack:///./src/app/components/Account/AccountComponents/Logout/SignOut.module.scss","webpack:///./src/app/components/Account/AccountComponents/Perks/Perks.module.scss","webpack:///./src/app/screens/ContentDetail/FoxContentDensity.module.scss","webpack:///./src/app/components/PopUpModal/PopUpModal.module.scss","webpack:///./src/app/components/VideoPlayerGlobal/components/UpNextToast/UpNextToast.module.scss","webpack:///./src/app/components/VideoPlayerGlobal/VideoPlayerGlobal.module.scss","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/startsWith.js","webpack:///./src/app/themes/AuthShared.module.scss","webpack:///./src/app/components/VideoModal/VideoModal.module.scss","webpack:///./src/app/components/Account/AccountComponents/SocialLogin/SocialLogin.module.scss","webpack:///./src/app/components/AltHeader/AltHeader.module.scss","webpack:///./src/app/components/MarketingBanner/MarketingBanner.module.scss","webpack:///./src/app/components/Account/AccountComponents/DeleteAccount/DeleteAccount.module.scss","webpack:///./src/app/components/ContextPlayer/ContextPromo.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTModule/NFTModule.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/Thumbnail/Thumbnail.module.scss","webpack:///./src/app/index/App.module.scss","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///delegated ./node_modules/webpack/buildin/global.js from dll-reference vendor_lib","webpack:///./node_modules/lodash/compact.js","webpack:///./node_modules/react-slick/lib/index.js","webpack:///./src/app/components/Skeleton/Skeleton.module.scss","webpack:///./node_modules/lodash/sortBy.js","webpack:///delegated ./node_modules/redux/es/redux.js from dll-reference vendor_lib","webpack:///./node_modules/react-cookie/build/cookie.js","webpack:///./src/app/screens/Shows/Shows.css","webpack:///./src/app/components/Account/AccountComponents/SignInApple/SignInApple.module.scss","webpack:///./src/app/components/UpsellProgressBar/UpsellProgressBar.module.scss","webpack:///./src/app/themes/styleguide/redesign/v2/HomeSlideHeader.module.scss","webpack:///./src/app/components/VideoContainer/Overlays/RetryError/theme.css","webpack:///./src/app/screens/Collection/smallPromo.css","webpack:///./src/app/components/Account/AccountComponents/ForgotPasswordSuccess/ForgotPasswordSuccess.module.scss","webpack:///./src/app/components/Account/AccountComponents/SignupSuccess/SignupSuccess.module.scss","webpack:///./src/app/components/Search/Search.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/NFTThumbnail/NFTThumbnail.module.scss","webpack:///./src/app/screens/ContentDetail/components/Hero/components/SecondaryButtons/SecondaryButtons.module.scss","webpack:///./src/app/screens/ContentDetail/components/Seasons/Seasons.module.scss","webpack:///./src/app/screens/Watch/Watch.module.scss","webpack:///./src/app/components/NetworkList/components/Item/style.css","webpack:///./src/app/components/Footer/Footer.module.scss","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/date-fns/get_iso_year/index.js","webpack:///./node_modules/date-fns/start_of_iso_week/index.js","webpack:///./node_modules/date-fns/start_of_day/index.js","webpack:///./node_modules/lodash/first.js","webpack:///./node_modules/lodash/size.js","webpack:///./node_modules/validator/lib/isEmail.js","webpack:///./src/app/components/TileGrid/TileGrid.module.scss","webpack:///./src/app/components/TileV2/Styles/SeeAllTile.module.scss","webpack:///./src/app/components/StrikeBanner/StrikeBanner.module.scss","webpack:///./src/app/screens/Live/components/FutureCellModal/FutureCellModal.module.scss","webpack:///./src/app/components/VideoPlayer/VideoPlayer.module.scss","webpack:///./src/app/screens/Collection/components/CollectionLinkTile/style.css","webpack:///./src/app/screens/Search/components/SearchTabs/SearchTabs.module.scss","webpack:///./src/app/components/ContextPlayer/ContextPlayer.module.scss","webpack:///./src/app/screens/SeriesDetail/components/TabListMobile/TabListMobile.module.scss","webpack:///./src/app/screens/SeriesDetail/components/HeadlineBumper/HeadlineBumper.module.scss","webpack:///./src/app/components/Auth/VideoProviderSearch/components/ProvidersList/ProviderList.module.scss","webpack:///./src/app/components/Auth/VideoProviderSearch/VideoProviderSearch.module.scss","webpack:///./src/app/components/Header/DefaultHeaderComponents/ProviderLogo/ProviderLogo.module.scss","webpack:///./src/app/components/ErrorFallback/style.css","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/commonmark/lib/common.js","webpack:///./node_modules/lodash/_baseFlatten.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./src/app/helpers/TestHelper.js","webpack:///./node_modules/lodash/clone.js","webpack:///./node_modules/uuid/index.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/lodash/groupBy.js","webpack:///./node_modules/lodash/uniqueId.js","webpack:///./node_modules/dompurify/dist/purify.js","webpack:///delegated ./node_modules/react-helmet/es/Helmet.js from dll-reference vendor_lib","webpack:///./src/app/screens/Live/styles/Favorite.css","webpack:///./node_modules/lodash/assign.js","webpack:///./node_modules/cookie/index.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/ModalImage/ModalImage.module.scss","webpack:///./src/app/screens/Live/components/EPGLoader/EPGLoader.module.scss","webpack:///./src/app/screens/Live/components/EPGTimeline/EPGTimeline.module.scss","webpack:///./src/app/screens/Live/components/CurrentTimer/CurrentTimer.module.scss","webpack:///./src/app/components/Account/AccountComponents/ActivationSuccess/activationSuccess.module.scss","webpack:///./src/app/components/Account/AccountComponents/SignInSeparator/SignInSeparator.module.scss","webpack:///./src/app/screens/Search/components/SearchResults/SearchResults.module.scss","webpack:///./src/app/screens/SeriesDetail/components/TabListMobile/DropdownHeader.module.scss","webpack:///./src/app/screens/SeriesDetail/components/NationWhatIs/NationWhatIs.css","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/DropTimer/DropTimer.module.scss","webpack:///./src/app/screens/ContentDetail/components/Hero/components/TitleLink/TitleLink.module.scss","webpack:///./src/app/screens/ContentDetail/components/Links/Links.module.scss","webpack:///./src/app/components/AuthClientless/Overlays/MVPDIncomplete/MVPDIncomplete.module.scss","webpack:///./src/app/components/AuthClientless/Overlays/UnlockUpsell/UnlockUpsell.module.scss","webpack:///./src/app/components/NetworkBar/components/Item/style.css","webpack:///./src/app/components/Header/DefaultHeaderComponents/HeaderIcons/HeaderIcons.module.scss","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./node_modules/lodash/_baseIndexOf.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/date-fns/add_days/index.js","webpack:///./node_modules/date-fns/add_milliseconds/index.js","webpack:///./node_modules/date-fns/start_of_iso_year/index.js","webpack:///./node_modules/date-fns/compare_asc/index.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/react-slick/lib/utils/innerSliderUtils.js","webpack:///./node_modules/lodash/flatten.js","webpack:///./node_modules/lodash/isEqualWith.js","webpack:///./node_modules/lodash/toUpper.js","webpack:///./node_modules/lodash/findKey.js","webpack:///./node_modules/lodash/each.js","webpack:///./src/app/components/Loader/Img.module.scss","webpack:///./src/app/components/DropdownIcon/DropdownIcon.module.scss","webpack:///./src/app/components/TileV2/components/NetworkBubble/NetworkBubble.module.scss","webpack:///./src/app/screens/Live/components/EPGCurrentTimer/EPGCurrentTimer.module.scss","webpack:///./src/app/screens/Live/components/EPGRow/components/LiveImage/LiveImage.module.scss","webpack:///./src/app/screens/Live/components/EPGGrid/EPGGrid.module.scss","webpack:///./src/app/components/VideoHeader/VideoHeader.module.scss","webpack:///./src/app/themes/MoreInfoButton.module.scss","webpack:///./src/app/components/HomeSlideHeader/Components/InfoTags/InfoTags.module.scss","webpack:///./src/app/components/VideoContainer/Overlays/Countdown/Countdown.module.scss","webpack:///./src/app/components/Account/AccountComponents/GoogleSignInButton/GoogleSignInButton.module.scss","webpack:///./src/app/components/Account/AccountComponents/ConsolidatedSignInFlow/components/ForgotPassword/ForgotPassword.module.scss","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/components/UpsellBanner/UpsellBanner.module.scss","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/styles/VideosTab.css","webpack:///./src/app/screens/SeriesDetail/components/PhotoGallery/PhotoGallery.module.scss","webpack:///./src/app/screens/ContentDetail/components/Cast/CastSlider/CastSlider.module.scss","webpack:///./src/app/screens/ContentDetail/components/InfoContainer/InfoContainer.module.scss","webpack:///./src/app/screens/Shows/components/ShowsTile/style.css","webpack:///./src/app/screens/Watch/styles/WatchTile.module.scss","webpack:///./src/app/components/StickyBanner/StickyBanner.module.scss","webpack:///./src/app/components/Header/DefaultHeaderComponents/Categories/Categories.module.scss","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/react-scroll/modules/mixins/scroller.js","webpack:///./node_modules/react-scroll/modules/mixins/utils.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/validator/lib/util/assertString.js","webpack:///./node_modules/date-fns/start_of_week/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_days/index.js","webpack:///./node_modules/date-fns/add_months/index.js","webpack:///./node_modules/date-fns/difference_in_milliseconds/index.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/lodash/_castSlice.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/_hasUnicode.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./node_modules/lodash/values.js","webpack:///./node_modules/lodash/join.js","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./src/app/screens/Collection/CarouselTile.module.scss","webpack:///./node_modules/lodash/uniq.js","webpack:///./node_modules/lodash/dropRight.js","webpack:///./node_modules/lodash/pickBy.js","webpack:///./node_modules/react-lazy-load/lib/LazyLoad.js","webpack:///./src/app/screens/Search/components/SearchDropdown/SearchDropdown.module.scss","webpack:///./node_modules/react-infinite-scroller/index.js","webpack:///./src/app/screens/SeriesDetail/styles/SeriesDetailsCarousel.module.scss","webpack:///./src/app/screens/SeriesDetail/styles/SeriesDetailsCarouselTile.module.scss","webpack:///./src/app/themes/AuthMVPDSearch.module.scss","webpack:///./src/app/components/Icon/Icon.module.scss","webpack:///./src/app/components/Favorite/Favorite.module.scss","webpack:///./src/app/screens/Live/components/LiveCollections/LiveCollections.module.scss","webpack:///./src/app/components/HomeSlideHeader/HomeSlideHeader.module.scss","webpack:///./src/app/components/VideoContainer/Overlays/AreYouWatching/theme.css","webpack:///./src/app/components/Account/AccountComponents/ForgotPasswordCTA/ForgotPasswordCTA.module.scss","webpack:///./src/app/components/Account/AccountComponents/AccountMain/Menu.module.scss","webpack:///./src/app/components/Account/AccountComponents/ManageFavorites/ManageFavorites.module.scss","webpack:///./src/app/components/Account/AccountComponents/ShareMyEmailUpsell/ShareMyEmailUpsell.module.scss","webpack:///./src/app/components/Search/SearchHeader/SearchHeader.module.scss","webpack:///./src/app/screens/SeriesDetail/components/Bio/Bio.module.scss","webpack:///./node_modules/lodash/camelCase.js","webpack:///./src/app/screens/SeriesDetail/components/StartFreeTrial/StartFreeTrial.css","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/NFTBanner.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/components/Thumbnail/Thumbnail.module.scss","webpack:///./src/app/screens/ContentDetail/components/AboutV2/AboutV2.module.scss","webpack:///./src/app/screens/ContentDetail/components/Cast/Cast.module.scss","webpack:///./src/app/screens/ContentDetail/components/Hero/Hero.module.scss","webpack:///./src/app/components/Auth/VideoProviderSearch/components/SearchInput/SearchInput.module.scss","webpack:///./src/app/components/AuthClientless/Overlays/PlaybackError/PlaybackError.module.scss","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/react-scroll/modules/mixins/scroll-link.js","webpack:///./node_modules/react-scroll/modules/mixins/scroll-spy.js","webpack:///./node_modules/react-scroll/modules/mixins/passive-event-listeners.js","webpack:///./node_modules/react-scroll/modules/mixins/scroll-events.js","webpack:///delegated ./node_modules/process/browser.js from dll-reference vendor_lib","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/_baseUnset.js","webpack:///./node_modules/lodash/_baseSlice.js","webpack:///./node_modules/lodash/_baseClone.js","webpack:///./node_modules/lodash/_arrayEach.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_getAllKeysIn.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/date-fns/is_date/index.js","webpack:///./node_modules/date-fns/get_days_in_month/index.js","webpack:///./node_modules/date-fns/add_weeks/index.js","webpack:///./node_modules/date-fns/compare_desc/index.js","webpack:///./node_modules/date-fns/difference_in_months/index.js","webpack:///./node_modules/date-fns/difference_in_seconds/index.js","webpack:///./node_modules/date-fns/locale/en/index.js","webpack:///./node_modules/date-fns/end_of_day/index.js","webpack:///./node_modules/date-fns/get_iso_week/index.js","webpack:///./node_modules/date-fns/is_same_week/index.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/commonmark/lib/node.js","webpack:///./node_modules/lodash/_baseUniq.js","webpack:///./node_modules/lodash/_arrayIncludes.js","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/core/index.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/core/Auth.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/core/Logger.js","webpack:///delegated ./node_modules/redux-promise/lib/index.js from dll-reference vendor_lib","webpack:///./node_modules/lodash/round.js","webpack:///./src/app/themes/FavoriteAccount.css","webpack:///./src/app/components/Breadcrumbs/Links/Links.module.scss","webpack:///./src/app/screens/Live/components/FutureCellModal/components/CloseButton/Close.module.scss","webpack:///./src/app/components/CountdownText/CountdownText.module.scss","webpack:///./node_modules/consolidated-events/lib/index.esm.js","webpack:///./node_modules/lodash/indexOf.js","webpack:///delegated ./node_modules/scriptjs/dist/script.js from dll-reference vendor_lib","webpack:///./src/app/components/VideoContainer/Overlays/ContentBlackout/theme.css","webpack:///./src/app/components/VideoContainer/Overlays/ExpiredVod/theme.css","webpack:///./src/app/components/VideoContainer/VideoContainer.module.scss","webpack:///./src/app/screens/Shows/AltHeader.css","webpack:///./src/app/screens/ArticleDetail/ArticleDetail.css","webpack:///./node_modules/react-slider/react-slider.js","webpack:///./src/app/components/Account/AccountComponents/CTA/CTA.module.scss","webpack:///./src/app/screens/SeriesDetail/components/TabList/SeasonDropdown.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/Header/Header.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/Description/Description.module.scss","webpack:///./src/app/screens/ContentDetail/components/AboutV2/components/SocialIcons.module.scss","webpack:///./src/app/screens/ContentDetail/components/Hero/components/Description/Description.module.scss","webpack:///./src/app/screens/ContentDetail/components/Hero/components/ProgressBar/ProgressBar.module.scss","webpack:///./src/app/screens/ContentDetail/components/Hero/components/TuneIn/TuneIn.module.scss","webpack:///./src/app/components/Grid/style.css","webpack:///./src/app/screens/Watch/styles/WatchTileGrid.css","webpack:///./src/app/components/Auth/VideoProviderSearch/components/Provider/Provider.module.scss","webpack:///./src/app/components/Auth/VideoProviderSearch/components/ProviderGroup/ProviderGroup.module.scss","webpack:///./src/app/themes/AuthUpsellError.module.scss","webpack:///./src/app/components/NetworkBar/networkBar.module.scss","webpack:///./src/app/components/SignUpModalContainer/SignUpModal.module.scss","webpack:///./src/app/components/Header/DefaultHeaderComponents/HeaderButton/HeaderButton.module.scss","webpack:///./node_modules/lodash/throttle.js","webpack:///./src/app/components/VideoPlayerGlobal/components/DynamicRating/DynamicRating.css","webpack:///./src/app/components/VideoPlayerGlobal/VideoPlayerGlobalHero.module.scss","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_baseFindIndex.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash.throttle/index.js","webpack:///./node_modules/react-scroll/modules/mixins/animate-scroll.js","webpack:///./node_modules/react-scroll/modules/mixins/scroll-hash.js","webpack:///./node_modules/react-scroll/modules/mixins/scroll-element.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/lodash/_baseFilter.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_getSymbolsIn.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/lodash/_castFunction.js","webpack:///./node_modules/lodash/_baseMap.js","webpack:///./node_modules/validator/lib/util/merge.js","webpack:///./node_modules/date-fns/add_hours/index.js","webpack:///./node_modules/date-fns/add_iso_years/index.js","webpack:///./node_modules/date-fns/set_iso_year/index.js","webpack:///./node_modules/date-fns/add_minutes/index.js","webpack:///./node_modules/date-fns/add_quarters/index.js","webpack:///./node_modules/date-fns/add_seconds/index.js","webpack:///./node_modules/date-fns/add_years/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_iso_years/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_months/index.js","webpack:///./node_modules/date-fns/get_quarter/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_years/index.js","webpack:///./node_modules/date-fns/difference_in_days/index.js","webpack:///./node_modules/date-fns/sub_iso_years/index.js","webpack:///./node_modules/date-fns/distance_in_words/index.js","webpack:///./node_modules/date-fns/end_of_week/index.js","webpack:///./node_modules/date-fns/end_of_month/index.js","webpack:///./node_modules/date-fns/get_day_of_year/index.js","webpack:///./node_modules/date-fns/start_of_year/index.js","webpack:///./node_modules/date-fns/is_valid/index.js","webpack:///./node_modules/date-fns/is_leap_year/index.js","webpack:///./node_modules/date-fns/get_iso_day/index.js","webpack:///./node_modules/date-fns/is_same_hour/index.js","webpack:///./node_modules/date-fns/start_of_hour/index.js","webpack:///./node_modules/date-fns/is_same_iso_week/index.js","webpack:///./node_modules/date-fns/is_same_iso_year/index.js","webpack:///./node_modules/date-fns/is_same_minute/index.js","webpack:///./node_modules/date-fns/start_of_minute/index.js","webpack:///./node_modules/date-fns/is_same_month/index.js","webpack:///./node_modules/date-fns/is_same_quarter/index.js","webpack:///./node_modules/date-fns/start_of_quarter/index.js","webpack:///./node_modules/date-fns/is_same_second/index.js","webpack:///./node_modules/date-fns/start_of_second/index.js","webpack:///./node_modules/date-fns/is_same_year/index.js","webpack:///./node_modules/date-fns/last_day_of_week/index.js","webpack:///./node_modules/date-fns/set_month/index.js","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_arrayReduce.js","webpack:///./node_modules/lodash/_charsStartIndex.js","webpack:///./node_modules/entities/index.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/lodash/_baseOrderBy.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/enquire.js/src/Util.js","webpack:///./node_modules/react-sticky/lib/channel.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/lodash/_basePickBy.js","webpack:///./node_modules/lodash/_baseSet.js","webpack:///delegated ./node_modules/create-react-class/index.js from dll-reference vendor_lib","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/lodash/_flatRest.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/core/Api.js","webpack:///./node_modules/es6-promise/dist/es6-promise.js","webpack:///./node_modules/lodash/mergeWith.js","webpack:///./node_modules/lodash/upperCase.js","webpack:///./src/app/themes/_variablesFox.js","webpack:///./node_modules/lodash/unset.js","webpack:///./node_modules/lodash/trimStart.js","webpack:///./node_modules/lodash/forOwn.js","webpack:///./node_modules/react-markdown/src/react-markdown.js","webpack:///./node_modules/lodash/flatMap.js","webpack:///./src/app/themes/TileGridAccountFavorites.css","webpack:///./src/app/themes/TileAccountFavorites.css","webpack:///./src/app/themes/ListAccountFavorites.module.scss","webpack:///./node_modules/lodash/union.js","webpack:///./node_modules/lodash/has.js","webpack:///./node_modules/lodash/intersection.js","webpack:///./src/app/components/NetworkLink/NetworkLink.module.scss","webpack:///./node_modules/lodash/lowerCase.js","webpack:///./src/app/screens/Live/styles/DropdownIcon.css","webpack:///./src/app/components/VideoPlayerGlobal/VideoContainerHero.module.scss","webpack:///./src/app/components/VideoPlayerGlobal/VideoContainerStandard.module.scss","webpack:///./src/app/components/Breadcrumbs/Breadcrumbs.module.scss","webpack:///./src/app/screens/Live/components/FutureCellModal/components/TuneInMeta/TuneInMeta.module.scss","webpack:///./src/app/screens/Live/components/FutureCellModal/components/Title/Title.module.scss","webpack:///./src/app/screens/Live/components/FutureCellModal/components/DescriptionMeta/DescriptionMeta.module.scss","webpack:///./src/app/components/Poster/Poster.module.scss","webpack:///./src/app/screens/Live/FoxLive.module.scss","webpack:///./node_modules/lodash/partition.js","webpack:///./src/app/screens/Live/components/ScheduleItem/ScheduleItemTile.css","webpack:///delegated ./node_modules/react-is/index.js from dll-reference vendor_lib","webpack:///./src/app/screens/Live/components/PrimeTimeGrid/MobileList.module.scss","webpack:///./src/app/screens/Live/components/PrimeTimeGrid/AltHeaderPrimeTime.css","webpack:///./src/app/screens/Live/styles/Breadcrumbs.module.scss","webpack:///./src/app/components/HomeSlideHeader/VideoHeader.v2.module.scss","webpack:///./src/app/components/HomeSlideHeader/VideoHeaderSingle.v2.module.scss","webpack:///./src/app/components/Overlay/Overlay.module.scss","webpack:///./node_modules/lodash/isInteger.js","webpack:///./node_modules/lodash/isNil.js","webpack:///./src/app/components/WatchDetail/Favorite.css","webpack:///./src/app/components/WatchDetail/ReadMore.css","webpack:///./src/app/components/VideoModal/WatchDetail.module.scss","webpack:///./src/app/components/VideoModal/VideoContainer.module.scss","webpack:///./src/app/screens/Collection/components/CollectionTile/components/NetworkImage/style.css","webpack:///./src/app/screens/Collection/components/CollectionTile/components/ProgressBar/style.css","webpack:///./src/app/screens/Collection/GenreTile.module.scss","webpack:///./src/app/screens/Collection/LatestEpisodes.module.scss","webpack:///./src/app/screens/Collection/CarouselPoster.module.scss","webpack:///./node_modules/lodash/transform.js","webpack:///./src/app/screens/ArticleDetail/Breadcrumbs.css","webpack:///./src/app/screens/LatestEpisode/LatestEpisode.css","webpack:///./src/app/screens/Loading/Loading.module.scss","webpack:///./src/app/components/OverlayFooter/OverlayFooter.module.scss","webpack:///./node_modules/react-google-login/dist/google-login.js","webpack:///./node_modules/lodash/reject.js","webpack:///./src/app/components/SupportLink/SupportLink.css","webpack:///./node_modules/lodash/orderBy.js","webpack:///./src/app/components/PromoList/PromoList.css","webpack:///./src/app/components/PromoList/tiles.css","webpack:///./src/app/screens/SeriesDetail/components/Bio/CastItem/CastItem.css","webpack:///./src/app/screens/SeriesDetail/components/Bio/BioDetail/CastItem.css","webpack:///./src/app/screens/SeriesDetail/components/Bio/BioDetail/BioDetail.css","webpack:///./src/app/screens/SeriesDetail/styles/AltHeader.css","webpack:///./node_modules/react-scrollspy/lib/scrollspy.js","webpack:///./node_modules/lodash/countBy.js","webpack:///./node_modules/lodash/reduce.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/styles/seriesCollectionVideoTiles.css","webpack:///./src/app/screens/SeriesDetail/styles/Article.css","webpack:///./src/app/screens/SeriesDetail/styles/SeriesDetailsCarouselPoster.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/components/Header/Header.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/components/Description/Description.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/components/MyRewardsCTA/MyRewardsCTA.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/NFTTitle/NFTTitle.module.scss","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/DropCTA/DropCTA.module.scss","webpack:///./src/app/screens/ContentDetail/components/Heading/Heading.module.scss","webpack:///./src/app/screens/ContentDetail/components/Divider/Divider.module.scss","webpack:///./src/app/screens/ContentDetail/components/Background/Background.module.scss","webpack:///./src/app/themes/styleguide/redesign/ContentDetail/Hero/Favorite.css","webpack:///./src/app/screens/ContentDetail/components/Hero/components/Meta/Meta.module.scss","webpack:///./src/app/themes/Favorite.css","webpack:///./src/app/screens/ContentDetail/components/Clips/ClipsTileGrid.module.scss","webpack:///./src/app/screens/ContentDetail/components/Clips/ClipsTile.module.scss","webpack:///./src/app/screens/ContentDetail/components/Recommended/Recommended.module.scss","webpack:///./src/app/screens/Shows/components/ShowsTile/components/Image/style.css","webpack:///./src/app/screens/Shows/components/ShowsTile/components/NetworkImage/style.css","webpack:///./src/app/screens/Watch/styles/Breadcrumbs.css","webpack:///./node_modules/lodash/isUndefined.js","webpack:///./node_modules/lodash/isBoolean.js","webpack:///./node_modules/react-window-size-listener/lib/index.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/index.js","webpack:///./node_modules/lodash/isFinite.js","webpack:///./src/app/themes/AuthContentBlackout.module.scss","webpack:///./src/app/themes/AuthProfileSignIn.module.scss","webpack:///./src/app/themes/AuthProfileSignInV2.module.scss","webpack:///./src/app/themes/AuthMVPDIncomplete.module.scss","webpack:///./src/app/themes/AuthMvpdDirectSignInRedirect.module.scss","webpack:///./src/app/themes/AuthMVPDIframe.module.scss","webpack:///./src/app/themes/AuthSuccess.module.scss","webpack:///./src/app/themes/AuthFailure.module.scss","webpack:///./src/app/themes/AuthCookiesBlocked.module.scss","webpack:///./src/app/themes/AuthMVPDUpsellRedirecting.module.scss","webpack:///./src/app/themes/AuthSignInV2.module.scss","webpack:///./src/app/themes/AuthSignIn.module.scss","webpack:///./src/app/themes/AuthMVPDRetry.module.scss","webpack:///./src/app/themes/AuthLoading.module.scss","webpack:///./node_modules/lodash/difference.js","webpack:///./src/app/themes/ExpiredPreviewPassV2.module.scss","webpack:///./src/app/themes/ExpiredPreviewPass.module.scss","webpack:///./src/app/components/AuthClientless/Overlays/MVPDStart/MVPDStartOverlay.module.scss","webpack:///delegated ./node_modules/react-headroom/dist/index.js from dll-reference vendor_lib","webpack:///./src/app/components/NetworkList/style.css","webpack:///./src/app/components/VideoPlayerGlobal/components/VideoDetail/Favorite.css","webpack:///./src/app/components/VideoPlayerGlobal/components/VideoDetail/ReadMore.css","webpack:///./node_modules/lodash/isNumber.js","webpack:///./node_modules/lodash/omit.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_baseIsNaN.js","webpack:///./node_modules/lodash/_strictIndexOf.js","webpack:///./node_modules/lodash/toFinite.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/_baseValues.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/react-scroll/modules/components/Link.js","webpack:///./node_modules/react-scroll/modules/mixins/smooth.js","webpack:///./node_modules/react-scroll/modules/mixins/cancel-events.js","webpack:///./node_modules/react-scroll/modules/components/Button.js","webpack:///./node_modules/react-scroll/modules/components/Element.js","webpack:///./node_modules/react-scroll/modules/mixins/Helpers.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/react-cookie/node_modules/cookie/index.js","webpack:///delegated ./node_modules/object-assign/index.js from dll-reference vendor_lib","webpack:///./node_modules/is-node/index.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/_basePullAt.js","webpack:///./node_modules/lodash/_parent.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/_baseAssign.js","webpack:///./node_modules/lodash/_baseAssignIn.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_copySymbols.js","webpack:///./node_modules/lodash/_copySymbolsIn.js","webpack:///./node_modules/lodash/_initCloneArray.js","webpack:///./node_modules/lodash/_initCloneByTag.js","webpack:///./node_modules/lodash/_cloneDataView.js","webpack:///./node_modules/lodash/_cloneRegExp.js","webpack:///./node_modules/lodash/_cloneSymbol.js","webpack:///./node_modules/lodash/isMap.js","webpack:///./node_modules/lodash/_baseIsMap.js","webpack:///./node_modules/lodash/isSet.js","webpack:///./node_modules/lodash/_baseIsSet.js","webpack:///./node_modules/lodash/_baseClamp.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/validator/lib/isByteLength.js","webpack:///./node_modules/validator/lib/isFQDN.js","webpack:///./node_modules/validator/lib/isIP.js","webpack:///./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/are_ranges_overlapping/index.js","webpack:///./node_modules/date-fns/closest_index_to/index.js","webpack:///./node_modules/date-fns/closest_to/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_iso_weeks/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_quarters/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_weeks/index.js","webpack:///./node_modules/date-fns/difference_in_hours/index.js","webpack:///./node_modules/date-fns/difference_in_iso_years/index.js","webpack:///./node_modules/date-fns/difference_in_minutes/index.js","webpack:///./node_modules/date-fns/difference_in_quarters/index.js","webpack:///./node_modules/date-fns/difference_in_weeks/index.js","webpack:///./node_modules/date-fns/difference_in_years/index.js","webpack:///./node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js","webpack:///./node_modules/date-fns/locale/en/build_format_locale/index.js","webpack:///./node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js","webpack:///./node_modules/date-fns/distance_in_words_strict/index.js","webpack:///./node_modules/date-fns/distance_in_words_to_now/index.js","webpack:///./node_modules/date-fns/each_day/index.js","webpack:///./node_modules/date-fns/end_of_hour/index.js","webpack:///./node_modules/date-fns/end_of_iso_week/index.js","webpack:///./node_modules/date-fns/end_of_iso_year/index.js","webpack:///./node_modules/date-fns/end_of_minute/index.js","webpack:///./node_modules/date-fns/end_of_quarter/index.js","webpack:///./node_modules/date-fns/end_of_second/index.js","webpack:///./node_modules/date-fns/end_of_today/index.js","webpack:///./node_modules/date-fns/end_of_tomorrow/index.js","webpack:///./node_modules/date-fns/end_of_year/index.js","webpack:///./node_modules/date-fns/end_of_yesterday/index.js","webpack:///./node_modules/date-fns/format/index.js","webpack:///./node_modules/date-fns/get_date/index.js","webpack:///./node_modules/date-fns/get_day/index.js","webpack:///./node_modules/date-fns/get_days_in_year/index.js","webpack:///./node_modules/date-fns/get_hours/index.js","webpack:///./node_modules/date-fns/get_iso_weeks_in_year/index.js","webpack:///./node_modules/date-fns/get_milliseconds/index.js","webpack:///./node_modules/date-fns/get_minutes/index.js","webpack:///./node_modules/date-fns/get_month/index.js","webpack:///./node_modules/date-fns/get_overlapping_days_in_ranges/index.js","webpack:///./node_modules/date-fns/get_seconds/index.js","webpack:///./node_modules/date-fns/get_time/index.js","webpack:///./node_modules/date-fns/get_year/index.js","webpack:///./node_modules/date-fns/is_after/index.js","webpack:///./node_modules/date-fns/is_before/index.js","webpack:///./node_modules/date-fns/is_equal/index.js","webpack:///./node_modules/date-fns/is_first_day_of_month/index.js","webpack:///./node_modules/date-fns/is_friday/index.js","webpack:///./node_modules/date-fns/is_future/index.js","webpack:///./node_modules/date-fns/is_last_day_of_month/index.js","webpack:///./node_modules/date-fns/is_monday/index.js","webpack:///./node_modules/date-fns/is_past/index.js","webpack:///./node_modules/date-fns/is_same_day/index.js","webpack:///./node_modules/date-fns/is_saturday/index.js","webpack:///./node_modules/date-fns/is_sunday/index.js","webpack:///./node_modules/date-fns/is_this_hour/index.js","webpack:///./node_modules/date-fns/is_this_iso_week/index.js","webpack:///./node_modules/date-fns/is_this_iso_year/index.js","webpack:///./node_modules/date-fns/is_this_minute/index.js","webpack:///./node_modules/date-fns/is_this_month/index.js","webpack:///./node_modules/date-fns/is_this_quarter/index.js","webpack:///./node_modules/date-fns/is_this_second/index.js","webpack:///./node_modules/date-fns/is_this_week/index.js","webpack:///./node_modules/date-fns/is_this_year/index.js","webpack:///./node_modules/date-fns/is_thursday/index.js","webpack:///./node_modules/date-fns/is_today/index.js","webpack:///./node_modules/date-fns/is_tomorrow/index.js","webpack:///./node_modules/date-fns/is_tuesday/index.js","webpack:///./node_modules/date-fns/is_wednesday/index.js","webpack:///./node_modules/date-fns/is_weekend/index.js","webpack:///./node_modules/date-fns/is_within_range/index.js","webpack:///./node_modules/date-fns/is_yesterday/index.js","webpack:///./node_modules/date-fns/last_day_of_iso_week/index.js","webpack:///./node_modules/date-fns/last_day_of_iso_year/index.js","webpack:///./node_modules/date-fns/last_day_of_month/index.js","webpack:///./node_modules/date-fns/last_day_of_quarter/index.js","webpack:///./node_modules/date-fns/last_day_of_year/index.js","webpack:///./node_modules/date-fns/max/index.js","webpack:///./node_modules/date-fns/min/index.js","webpack:///./node_modules/date-fns/set_date/index.js","webpack:///./node_modules/date-fns/set_day/index.js","webpack:///./node_modules/date-fns/set_day_of_year/index.js","webpack:///./node_modules/date-fns/set_hours/index.js","webpack:///./node_modules/date-fns/set_iso_day/index.js","webpack:///./node_modules/date-fns/set_iso_week/index.js","webpack:///./node_modules/date-fns/set_milliseconds/index.js","webpack:///./node_modules/date-fns/set_minutes/index.js","webpack:///./node_modules/date-fns/set_quarter/index.js","webpack:///./node_modules/date-fns/set_seconds/index.js","webpack:///./node_modules/date-fns/set_year/index.js","webpack:///./node_modules/date-fns/start_of_month/index.js","webpack:///./node_modules/date-fns/start_of_today/index.js","webpack:///./node_modules/date-fns/start_of_tomorrow/index.js","webpack:///./node_modules/date-fns/start_of_yesterday/index.js","webpack:///./node_modules/date-fns/sub_days/index.js","webpack:///./node_modules/date-fns/sub_hours/index.js","webpack:///./node_modules/date-fns/sub_milliseconds/index.js","webpack:///./node_modules/date-fns/sub_minutes/index.js","webpack:///./node_modules/date-fns/sub_months/index.js","webpack:///./node_modules/date-fns/sub_quarters/index.js","webpack:///./node_modules/date-fns/sub_seconds/index.js","webpack:///./node_modules/date-fns/sub_weeks/index.js","webpack:///./node_modules/date-fns/sub_years/index.js","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/deburr.js","webpack:///./node_modules/lodash/_deburrLetter.js","webpack:///./node_modules/lodash/_basePropertyOf.js","webpack:///./node_modules/lodash/words.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/_createFind.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/isRegExp.js","webpack:///./node_modules/lodash/_baseIsRegExp.js","webpack:///./node_modules/lodash/_baseSome.js","webpack:///./node_modules/lodash/_createRound.js","webpack:///./node_modules/lodash/_stringSize.js","webpack:///./node_modules/lodash/_asciiSize.js","webpack:///./node_modules/lodash/_unicodeSize.js","webpack:///./node_modules/commonmark/lib/index.js","webpack:///./node_modules/commonmark/lib/blocks.js","webpack:///./node_modules/mdurl/encode.js","webpack:///./node_modules/mdurl/decode.js","webpack:///./node_modules/entities/lib/encode.js","webpack:///./node_modules/entities/lib/decode.js","webpack:///./node_modules/entities/lib/decode_codepoint.js","webpack:///./node_modules/commonmark/lib/inlines.js","webpack:///./node_modules/commonmark/lib/normalize-reference.js","webpack:///./node_modules/commonmark/lib/from-code-point.js","webpack:///./node_modules/string.prototype.repeat/repeat.js","webpack:///./node_modules/commonmark/lib/html.js","webpack:///./node_modules/commonmark/lib/xml.js","webpack:///./node_modules/commonmark-react-renderer/src/commonmark-react-renderer.js","webpack:///./node_modules/lodash.assign/index.js","webpack:///./node_modules/lodash.isplainobject/index.js","webpack:///./node_modules/xss-filters/src/xss-filters.js","webpack:///./node_modules/pascalcase/index.js","webpack:///./node_modules/lodash/_isFlattenable.js","webpack:///./node_modules/lodash/_charsEndIndex.js","webpack:///./node_modules/react-dotdotdot/src/clamp.js","webpack:///./node_modules/object.pick/index.js","webpack:///./node_modules/isobject/index.js","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/lodash/_createSet.js","webpack:///./node_modules/lodash/_baseHas.js","webpack:///./node_modules/lodash/_baseIntersection.js","webpack:///./node_modules/lodash/_castArrayLikeObject.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/head.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./node_modules/lodash/_baseSortBy.js","webpack:///./node_modules/lodash/_compareMultiple.js","webpack:///./node_modules/lodash/_compareAscending.js","webpack:///./node_modules/react-slick/lib/slider.js","webpack:///./node_modules/react-slick/lib/inner-slider.js","webpack:///./node_modules/react-slick/lib/initial-state.js","webpack:///./node_modules/react-slick/lib/track.js","webpack:///./node_modules/react-slick/lib/dots.js","webpack:///./node_modules/react-slick/lib/arrows.js","webpack:///./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./node_modules/json2mq/index.js","webpack:///./node_modules/string-convert/camel2hyphen.js","webpack:///./node_modules/react-slick/lib/default-props.js","webpack:///./node_modules/enquire.js/src/index.js","webpack:///./node_modules/enquire.js/src/MediaQueryDispatch.js","webpack:///./node_modules/enquire.js/src/MediaQuery.js","webpack:///./node_modules/enquire.js/src/QueryHandler.js","webpack:///./node_modules/lodash/_baseFindKey.js","webpack:///./node_modules/react-sticky/lib/sticky.js","webpack:///./node_modules/react-sticky/lib/container.js","webpack:///./src/app/themes/styleguide/redesign/v2/App.css","webpack:///./src/app/components/HomeImageHeader/HomeImageHeader.css","webpack:///./src/app/screens/Live/components/PrimeTimeGrid/DropdownPrimetime.css","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/styles/videoTiles.css","webpack:///./src/app/themes/StringList.css","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/react-visibility-sensor/lib/is-visible-with-offset.js","webpack:///./node_modules/eventlistener/eventlistener.js","webpack:///./node_modules/react-lazy-load/lib/utils/parentScroll.js","webpack:///./node_modules/react-lazy-load/lib/utils/inViewport.js","webpack:///./node_modules/react-lazy-load/lib/utils/getElementPosition.js","webpack:///./node_modules/nodelist-foreach/nodelist-foreach.js","webpack:///./node_modules/can-autoplay/build/can-autoplay.es.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/lodash/negate.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/react-scrollspy/lib/throttle.js","webpack:///./node_modules/lodash/_baseReduce.js","webpack:///./node_modules/react-infinite-scroller/dist/InfiniteScroll.js","webpack:///./node_modules/lodash/_basePick.js","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./node_modules/jwt-decode/lib/index.js","webpack:///./node_modules/jwt-decode/lib/base64_url_decode.js","webpack:///./node_modules/jwt-decode/lib/atob.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/helpers/Auth.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/integrations/NewRelic/index.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/integrations/index.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/integrations/Redfast/index.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/integrations/Redfast/Actions.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/core/Evergent.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/helpers/Evergent.js","webpack:///./node_modules/@foxcorp/cpe-commerce-web/lib/helpers/PaymentMethods.js","webpack:///./node_modules/lodash/_baseDifference.js","webpack:///./node_modules/lodash/_customOmitClone.js","webpack:///./src/app/vars.js","webpack:///./node_modules/redux-thunk/es/index.js","webpack:///./src/app/components/Icon/index.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/Enums.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/TealiumHelper.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/SegmentHelper.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/CommonHelper.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/utils/CreateFunctionContext.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/DataLayer.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/FloodlightHelper.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/LogReportingHelpers.js","webpack:///./node_modules/@foxcorp/delta-web-analytics/lib/NewRelicHelper.js","webpack:///./src/app/helpers/DateTimeHelper.js","webpack:///./src/app/helpers/Account.js","webpack:///./src/app/components/Favorite/index.js","webpack:///./src/app/helpers/BadgeHelper.js","webpack:///./src/app/helpers/VideoHelper.js","webpack:///./src/app/components/Badge/index.js","webpack:///./src/app/components/PosterV2/components/HoverStateToolTip/index.js","webpack:///./src/app/components/PosterV2/components/Overlay/index.js","webpack:///./node_modules/react-cool-img/dist/index.esm.js","webpack:///./src/app/helpers/utils.js","webpack:///./src/app/helpers/BreakpointHelper.js","webpack:///./src/app/helpers/ImageHelper.js","webpack:///./src/app/components/PosterV2/components/SimplifiedImage/index.js","webpack:///./src/app/components/PosterV2/views/Simplified/index.js","webpack:///./src/app/components/PosterV2/helpers/processor.js","webpack:///./src/app/components/PosterV2/views/MoreLike/index.js","webpack:///./src/app/components/PosterV2/index.js","webpack:///./src/app/helpers/GeoLocationHelper.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/timer.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/context/customerDataTracker.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/mergeInto.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/addEventListener.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/encoder.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/error.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack:///./node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/vital/vitalCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/matchOption.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/configuration/configuration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/configuration/remoteConfiguration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/preStartRum.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/plugins.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/error.types.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/valueHistory.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewHistory.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/performanceObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/discardNegativeDuration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/firstInputPolyfill.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/polyfills.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/privacy.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/interactionSelectorCache.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestResourceEntry.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/performanceUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/resource/retrieveInitialDocumentResourceTiming.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/batch.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/flushController.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/cookieObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializationUtils.js","webpack:///./node_modules/@datadog/browser-rum/esm/types/sessionReplayConstants.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeStyleSheets.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttribute.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttributes.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeNode.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeDocument.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/eventsUtils.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/assembly.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMove.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMouseInteraction.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackScroll.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewportResize.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMediaInteraction.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackStyleSheet.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFocus.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFrustration.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewEnd.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackInput.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMutation.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/record.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/elementsScrollPositions.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/shadowRootsController.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/startFullSnapshots.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/recordIds.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/buildReplayPayload.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","webpack:///./node_modules/@datadog/browser-rum/esm/entries/main.js","webpack:///./src/app/helpers/LogReportHelpers.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/commonContext.js","webpack:///./node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciVisibilityContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/longAnimationFrame/longAnimationFrameCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/startRecording.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/startRecordBridge.js","webpack:///./src/app/helpers/Regex.js","webpack:///./src/app/helpers/PlayerHelper.js","webpack:///./src/app/helpers/Data.js","webpack:///./src/app/helpers/Live.js","webpack:///./src/app/components/ProgressBar/index.js","webpack:///./src/app/components/TileLegacy/components/ActionButtons/index.js","webpack:///./src/app/components/TileLegacy/components/Description/index.js","webpack:///./node_modules/react-truncate/lib/Truncate.js","webpack:///./src/app/components/ReadMore/index.js","webpack:///./src/app/components/TileLegacy/components/Subtitle/index.js","webpack:///./src/app/helpers/Lifecycle.js","webpack:///./src/app/components/VideoTile/index.js","webpack:///./src/app/components/TileLegacy/components/TileContent/Views/TileVideo/index.js","webpack:///./src/app/components/TileLegacy/components/TileContent/Views/TileImage/index.js","webpack:///./src/app/components/CallSign/images/BTN.svg","webpack:///./src/app/components/CallSign/images/FBN.svg","webpack:///./src/app/components/CallSign/images/FEED.svg","webpack:///./src/app/components/CallSign/images/FNC.svg","webpack:///./src/app/components/CallSign/images/FOX.svg","webpack:///./src/app/components/CallSign/images/FOXDEP.svg","webpack:///./src/app/components/CallSign/images/FOX-DIGITAL.svg","webpack:///./src/app/components/CallSign/images/FOX-FOOD.svg","webpack:///./src/app/components/CallSign/images/SOUL.svg","webpack:///./src/app/components/CallSign/images/FOX-WEATHER.svg","webpack:///./src/app/components/CallSign/images/FS1.svg","webpack:///./src/app/components/CallSign/images/FS2.svg","webpack:///./src/app/components/CallSign/images/FSP.svg","webpack:///./src/app/components/CallSign/images/KCPQ.svg","webpack:///./src/app/components/CallSign/images/KDFW.svg","webpack:///./src/app/components/CallSign/images/KMSP.svg","webpack:///./src/app/components/CallSign/images/KRIV.svg","webpack:///./src/app/components/CallSign/images/KSAZ.svg","webpack:///./src/app/components/CallSign/images/KTBC.svg","webpack:///./src/app/components/CallSign/images/KTTV.svg","webpack:///./src/app/components/CallSign/images/KTVU.svg","webpack:///./src/app/components/CallSign/images/newsnow.svg","webpack:///./src/app/components/CallSign/images/WAGA.svg","webpack:///./src/app/components/CallSign/images/WFLD.svg","webpack:///./src/app/components/CallSign/images/WITI.svg","webpack:///./src/app/components/CallSign/images/WJBK.svg","webpack:///./src/app/components/CallSign/images/WNYW.svg","webpack:///./src/app/components/CallSign/images/WOFL.svg","webpack:///./src/app/components/CallSign/images/WOGX.svg","webpack:///./src/app/components/CallSign/images/WTTG.svg","webpack:///./src/app/components/CallSign/images/WTVT.svg","webpack:///./src/app/components/CallSign/images/WTXF.svg","webpack:///./src/app/components/CallSign/images/KION.svg","webpack:///./src/app/components/CallSign/images/WHIZDT2.svg","webpack:///./src/app/components/CallSign/index.js","webpack:///./src/app/components/TileLegacy/TilePartials.js","webpack:///./src/app/components/TileLegacy/components/TileContent/Views/ImageOverlay/index.js","webpack:///./src/app/components/TileLegacy/components/TileContent/index.js","webpack:///./src/app/components/TileLegacy/components/ToggleDetail/index.js","webpack:///./src/app/components/TileLegacy/components/Overlay/index.js","webpack:///./src/app/components/TileLegacy/index.js","webpack:///./src/app/components/TileGrid/index.js","webpack:///./src/app/components/List/index.js","webpack:///./src/app/helpers/GridHelper.js","webpack:///./src/app/helpers/AnonymousHelper.js","webpack:///./src/app/helpers/AccountHelper.js","webpack:///./src/app/components/AuthClientless/AuthHelper.js","webpack:///./src/app/index/AppActions.js","webpack:///./src/app/helpers/AuthClientlessHelper.js","webpack:///./src/app/components/Loader/index.js","webpack:///./src/app/components/NetworkImage/index.js","webpack:///./src/app/components/NetworkLink/index.js","webpack:///./src/app/components/UpsellProgressBar/index.js","webpack:///./src/app/components/EmailSubmissionForm/index.js","webpack:///./src/app/components/EmailSubmissionForm/EmailSubmissionFormActions.js","webpack:///./src/app/components/EmailSubmissionForm/EmailSubmissionFormHelpers.js","webpack:///./src/app/components/Auth/MVPDStart/Providers/index.js","webpack:///./src/app/helpers/AuthHelper.js","webpack:///./src/app/components/Auth/PlaybackError/Geolocation/index.js","webpack:///./src/app/helpers/OptimizelyHelper.js","webpack:///./src/app/helpers/ApiHelper.js","webpack:///./src/app/components/Header/HeaderHelpers.js","webpack:///./src/app/components/VideoContainer/VideoContainerHelper.js","webpack:///./src/app/components/DropdownIcon/index.js","webpack:///./src/app/screens/Live/LiveHelpers.js","webpack:///./src/app/screens/Watch/WatchHelpers.js","webpack:///./src/app/helpers/RouteHelper.js","webpack:///./src/app/components/VideoPlayerGlobal/Helper.js","webpack:///./src/app/components/TileV2/components/ActionButtons/index.js","webpack:///./src/app/components/TileV2/components/Detail/index.js","webpack:///./src/app/components/TileV2/components/Metadata/index.js","webpack:///./src/app/components/TileV2/components/MobilePlayButton/index.js","webpack:///./src/app/components/TileV2/components/NetworkBubble/index.js","webpack:///./src/app/components/TileV2/components/Overlay/index.js","webpack:///./src/app/components/TileV2/components/PlayButton/index.js","webpack:///./src/app/components/TileV2/components/ProgressBar/index.js","webpack:///./src/app/components/TileV2/components/Subtitle/index.js","webpack:///./src/app/components/TileV2/components/TileImage/index.js","webpack:///./src/app/components/TileV2/components/TileTitle/index.js","webpack:///./src/app/components/TileV2/helpers/processorHelper.js","webpack:///./src/app/components/TileV2/views/Carousel/LiveTile/index.js","webpack:///./src/app/components/TileV2/views/Carousel/SeasonTile/index.js","webpack:///./src/app/components/TileV2/views/Carousel/ClipTile/index.js","webpack:///./src/app/components/TileV2/views/Carousel/SeeAllTile/index.js","webpack:///./src/app/components/TileV2/views/Grid/SearchTile/index.js","webpack:///./src/app/components/TileV2/index.js","webpack:///./src/app/screens/Error404/index.js","webpack:///./src/app/screens/Error500/index.js","webpack:///./src/app/helpers/ContentHelper.js","webpack:///./src/app/helpers/Storage.js","webpack:///./src/app/helpers/auth.clientless.js","webpack:///./src/app/components/CanIAutoplay/Helper.js","webpack:///./src/app/helpers/ConfigHelper.js","webpack:///./src/app/components/Breadcrumbs/Links/index.js","webpack:///./src/app/components/Breadcrumbs/BreadcrumbsHelper.js","webpack:///./src/app/components/Breadcrumbs/BreadcrumbsDataParsers.js","webpack:///./src/app/components/Breadcrumbs/index.js","webpack:///./src/app/helpers/HelmetHelper.js","webpack:///./src/app/components/Footer/FooterActions.js","webpack:///./src/app/screens/Live/LiveActions.js","webpack:///./src/app/components/StrikeBanner/index.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/CloseButton/index.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/ModalImage/index.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/TuneInMeta/index.js","webpack:///./src/app/components/Article/ArticleHelpers.js","webpack:///./src/app/screens/SeriesDetail/PersonalityDetailHelpers.js","webpack:///./src/app/screens/SeriesDetail/SeriesDetailHelpers.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/Title/index.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/DescriptionMeta/index.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/ActionButton/index.js","webpack:///./src/app/screens/Live/components/FutureCellModal/components/ActionButton/FavoriteButton.js","webpack:///./src/app/screens/Live/components/FutureCellModal/index.js","webpack:///./src/app/components/Carousel/CarouselItem.js","webpack:///./src/app/components/Poster/components/Description/Description.js","webpack:///./src/app/components/Poster/components/Description/index.js","webpack:///./src/app/components/Poster/components/Logo/Logo.js","webpack:///./src/app/components/Poster/components/Logo/index.js","webpack:///./src/app/components/Poster/components/PosterCTA/PosterCTA.js","webpack:///./src/app/components/Poster/components/PosterCTA/index.js","webpack:///./src/app/components/Poster/components/PlayButton/PlayButton.js","webpack:///./src/app/components/Poster/components/PlayButton/index.js","webpack:///./src/app/components/Poster/components/Video/Video.js","webpack:///./src/app/components/Poster/components/Video/index.js","webpack:///./src/app/components/Poster/components/Overlay/Overlay.js","webpack:///./src/app/components/Poster/components/Overlay/index.js","webpack:///./src/app/components/Poster/components/PosterContent/PosterContent.js","webpack:///./src/app/components/Poster/components/PosterContent/index.js","webpack:///./src/app/components/Poster/index.js","webpack:///./src/app/components/Carousel/CarouselPoster.js","webpack:///./src/app/components/Carousel/index.js","webpack:///./src/app/helpers/VideoProcessorHelper.js","webpack:///./src/app/helpers/Processor/CarouselVideoProcessor.js","webpack:///./src/app/screens/ContentDetail/ContentDetailHelper.js","webpack:///./src/app/components/Divider/index.js","webpack:///./src/app/screens/Live/components/LiveCarouselSection/index.js","webpack:///./src/app/screens/Live/components/SearchResults/hooks/useSearchResults.js","webpack:///./src/app/screens/Live/components/SearchResults/index.js","webpack:///./src/app/screens/Live/components/FilterSearchBar/index.js","webpack:///./node_modules/reselect/es/defaultMemoize.js","webpack:///./node_modules/reselect/es/index.js","webpack:///./src/app/screens/Live/selectors.js","webpack:///./src/app/hooks/useCurrentPositionAndTime.js","webpack:///./src/app/screens/Live/components/EPGCurrentTimer/index.js","webpack:///./src/app/screens/Live/components/EPGLoader/index.js","webpack:///./src/app/screens/Live/components/EPGItem/index.js","webpack:///./src/app/components/Image/Image.js","webpack:///./src/app/components/Image/index.js","webpack:///./src/app/screens/Live/components/EPGRow/components/LiveImage/index.js","webpack:///./src/app/screens/Live/components/EPGRow/index.js","webpack:///./src/app/screens/Live/components/EPGTimeline/index.js","webpack:///./src/app/screens/Live/components/EPGGrid/index.js","webpack:///./src/app/screens/Live/components/LiveCollections/index.js","webpack:///./src/app/screens/Live/FoxLive.js","webpack:///./src/app/screens/Live/FoxLiveWrapper.js","webpack:///./src/app/helpers/PageHelper.js","webpack:///./src/app/components/VideoPlayerGlobal/Actions.js","webpack:///./src/app/screens/Live/components/PrimeTimeUpdater/PrimeTimeUpdater.js","webpack:///./src/app/screens/Live/components/PrimeTimeUpdater/index.js","webpack:///./src/app/components/Dropdown/index.js","webpack:///./src/app/helpers/FilterHelper.js","webpack:///./src/app/components/CountdownText/index.js","webpack:///./src/app/screens/Live/components/ScheduleItem/index.js","webpack:///./src/app/screens/Live/components/CurrentTimer/index.js","webpack:///./src/app/screens/Live/components/ScheduleGrid/index.js","webpack:///./src/app/components/AltHeader/index.js","webpack:///./src/app/components/identifiers.js","webpack:///./src/app/helpers/ThemeHelper.js","webpack:///./src/app/screens/Live/components/PrimeTimeItem/index.js","webpack:///./src/app/screens/Live/components/PrimeTimeGrid/index.js","webpack:///./src/app/screens/Live/Live.js","webpack:///./src/app/screens/Live/index.js","webpack:///./node_modules/react-idle-timer/dist/index.es.js","webpack:///./src/app/components/VideoHero/index.js","webpack:///./src/app/components/Panel/PanelActions.js","webpack:///./src/app/components/Panel/index.js","webpack:///./src/app/components/VideoHeader/index.js","webpack:///./src/app/components/Overlay/index.js","webpack:///./src/app/components/MoreInfoButton/Overlays/index.js","webpack:///./src/app/components/MoreInfoButton/index.js","webpack:///./src/app/components/HomeSlideHeader/Components/InfoTags/InfoTagHelper.js","webpack:///./src/app/components/HomeSlideHeader/Components/InfoTags/index.js","webpack:///./src/app/components/HomeSlideHeader/index.js","webpack:///./src/app/components/HomeSlidePromo/index.js","webpack:///./src/app/helpers/auth.blackout.js","webpack:///./src/app/components/VideoPlayer/index.js","webpack:///./src/app/components/VideoContainer/Overlays/AdBlock/index.js","webpack:///./src/app/components/VideoContainer/Overlays/AreYouWatching/index.js","webpack:///./src/app/components/VideoContainer/Overlays/ContentBlackout/index.js","webpack:///./src/app/components/VideoContainer/Overlays/Countdown/index.js","webpack:///./src/app/components/VideoContainer/Overlays/ExpiredVod/index.js","webpack:///./src/app/components/VideoContainer/Overlays/RetryError/index.js","webpack:///./src/app/components/VideoContainer/Timer.js","webpack:///./src/app/components/VideoContainer/MVPDTimer.js","webpack:///./src/app/components/VideoContainer/index.js","webpack:///./src/app/components/StringList/StringList.js","webpack:///./src/app/components/StringList/index.js","webpack:///./src/app/components/WatchDetail/index.js","webpack:///./src/app/components/VideoModal/VideoModalHelpers.js","webpack:///./src/app/components/VideoModal/components/ActionButtons.js","webpack:///./src/app/components/VideoModal/index.js","webpack:///./src/app/components/VideoModal/VideoModalActions.js","webpack:///./src/app/screens/Shows/ShowsActions.js","webpack:///./src/app/screens/Search/Actions.js","webpack:///./src/app/components/MarketingBanner/Header.js","webpack:///./src/app/components/MarketingBanner/Description.js","webpack:///./src/app/components/MarketingBanner/MarketingButtonCTA.js","webpack:///./src/app/components/MarketingBanner/index.js","webpack:///./src/app/screens/Collection/components/Carousel/components/Header/index.js","webpack:///./src/app/screens/Collection/components/Carousel/index.js","webpack:///./src/app/components/Tile/components/Image/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/components/ImageElement/index.js","webpack:///./src/app/components/Tile/components/PlayButton/index.js","webpack:///./src/app/components/Tile/components/NetworkImage/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/components/NetworkImage/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/components/ImageOverlay/overlays/Default/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/components/FavoriteLink/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/components/ImageOverlay/overlays/Hover/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/components/ImageOverlay/index.js","webpack:///./src/app/components/Tile/components/ProgressBar/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/components/ProgressBar/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/components/TitleLink/index.js","webpack:///./src/app/screens/Collection/components/CollectionTile/index.js","webpack:///./src/app/screens/Collection/components/CollectionLinkTile/index.js","webpack:///./src/app/screens/Collection/Helpers.js","webpack:///./src/app/screens/Collection/components/HeroCarousel/index.js","webpack:///./src/app/screens/Collection/components/UpcomingModal/index.js","webpack:///./src/app/screens/Collection/Actions.js","webpack:///./src/app/screens/Collection/selectors.js","webpack:///./src/app/screens/Collection/index.js","webpack:///./src/config/routes.helper.js","webpack:///./src/app/components/Account/AccountComponents/ParentalControls/ParentalControlsActions.js","webpack:///./src/app/index/AppReducer.js","webpack:///./src/app/components/Article/ArticleActions.js","webpack:///./src/app/components/Article/ArticleReducer.js","webpack:///./src/app/screens/Collection/components/VideoBanner/components/BannerVideo/Reducer.js","webpack:///./src/app/screens/SeriesDetail/components/Bio/BioHelpers.js","webpack:///./src/app/screens/SeriesDetail/components/Bio/BioActions.js","webpack:///./src/app/screens/SeriesDetail/components/Bio/BioReducer.js","webpack:///./src/app/components/BlackoutDefinitionFetcher/BlackoutDefinitionFetcherActions.js","webpack:///./src/app/components/BlackoutDefinitionFetcher/BlackoutDefinitionFetcherReducer.js","webpack:///./src/app/components/CanIAutoplay/Actions.js","webpack:///./src/app/components/CanIAutoplay/Reducer.js","webpack:///./src/app/screens/ContentDetail/components/Clips/ClipsActions.js","webpack:///./src/app/screens/ContentDetail/components/Clips/ClipsReducer.js","webpack:///./src/app/screens/Collection/Reducer.js","webpack:///./src/app/screens/Debug/DebugReducer.js","webpack:///./src/app/components/EmailSubmissionForm/EmailSubmissionFormReducer.js","webpack:///./src/app/components/Footer/FooterReducer.js","webpack:///./src/app/components/FooterUpsell/FooterUpsellReducer.js","webpack:///./src/app/components/Header/HoverMenu/HoverMenuReducer.js","webpack:///./src/app/screens/LatestEpisode/LatestEpisodeReducer.js","webpack:///./src/app/screens/Live/LiveReducer.js","webpack:///./src/app/components/NavSchedule/NavScheduleHelper.js","webpack:///./src/app/components/NavSchedule/NavScheduleReducer.js","webpack:///./src/app/components/Panel/PanelReducer.js","webpack:///./src/app/screens/SeriesDetail/components/PhotoGallery/PhotoGalleryReducer.js","webpack:///./src/app/components/PromoList/PromoListActions.js","webpack:///./src/app/components/PromoList/PromoListReducer.js","webpack:///./src/app/screens/Search/Reducer.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/VideosTabActions.js","webpack:///./src/app/screens/SeriesDetail/SeriesDetailActions.js","webpack:///./src/app/screens/SeriesDetail/SeriesDetailReducer.js","webpack:///./src/app/helpers/PaginationHelper.js","webpack:///./src/app/screens/Shows/ShowsReducer.js","webpack:///./src/app/screens/SiteMap/SiteMapActions.js","webpack:///./src/app/screens/SiteMap/SiteMapReducer.js","webpack:///./src/app/components/VideoModal/VideoModalReducer.js","webpack:///./src/app/components/VideoPlayerGlobal/Reducer.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/VideosTabReducer.js","webpack:///./src/app/screens/Watch/WatchActions.js","webpack:///./src/app/screens/Watch/WatchReducer.js","webpack:///./src/config/reducers.js","webpack:///./src/app/screens/Collection/components/VideoBanner/components/BannerVideo/Actions.js","webpack:///./src/app/screens/Debug/DebugActions.js","webpack:///./src/app/components/FooterUpsell/FooterUpsellActions.js","webpack:///./src/app/components/Header/HoverMenu/HoverMenuActions.js","webpack:///./src/app/screens/LatestEpisode/LatestEpisodeActions.js","webpack:///./src/app/components/NavSchedule/NavScheduleActions.js","webpack:///./src/app/screens/SeriesDetail/components/PhotoGallery/PhotoGalleryActions.js","webpack:///./src/app/screens/Account/index.js","webpack:///./src/app/components/Article/Article.js","webpack:///./src/app/components/Article/index.js","webpack:///./src/app/helpers/SchemaHelper.js","webpack:///./src/app/components/Article/selectors.js","webpack:///./src/app/screens/ArticleDetail/index.js","webpack:///./src/app/screens/Debug/panels/BlackoutPanel.js","webpack:///./src/app/screens/Debug/panels/AuthClientlessPanel.js","webpack:///./src/app/screens/Debug/panels/ResetPanel.js","webpack:///./src/app/screens/Debug/panels/LiveSteamPanel.js","webpack:///./src/app/screens/Debug/panels/LocationSettingsPanel.js","webpack:///./src/app/screens/Debug/panels/AdPanel.js","webpack:///./src/app/screens/Debug/panels/ApiPanel.js","webpack:///./src/app/screens/Debug/panels/UserPanel.js","webpack:///./src/app/screens/Debug/panels/FeatureFlag/components/Card/index.js","webpack:///./src/app/screens/Debug/panels/FeatureFlag/FlagMap.js","webpack:///./src/app/screens/Debug/panels/FeatureFlag/index.js","webpack:///./src/app/screens/Debug/panels/ErrorPanel.js","webpack:///./src/app/screens/Debug/index.js","webpack:///./src/app/screens/GeoBlock/index.js","webpack:///./src/app/screens/LatestEpisode/index.js","webpack:///./src/app/screens/Loading/index.js","webpack:///./src/app/screens/MVPD/index.js","webpack:///./src/app/helpers/ActivateHelper.js","webpack:///./src/app/helpers/Facebook.js","webpack:///./src/app/components/Account/AccountComponents/Header/index.js","webpack:///./src/app/components/Account/AccountComponents/ForgotPasswordCTA/index.js","webpack:///./src/app/components/Account/AccountComponents/ChangePassword/index.js","webpack:///./src/app/components/Account/Overlays/ChangePassword.js","webpack:///./src/app/components/OverlayFooter/index.js","webpack:///./src/app/components/Account/AccountComponents/CreatePassword/index.js","webpack:///./src/app/components/Account/Overlays/CreatePassword.js","webpack:///./src/app/components/Account/AccountComponents/EditAccount/index.js","webpack:///./src/app/components/Account/Overlays/EditAccount.js","webpack:///./src/app/components/Account/AccountComponents/FacebookLinking/index.js","webpack:///./src/app/components/Account/Overlays/FacebookLinking.js","webpack:///./src/app/components/Account/AccountComponents/AppleLinking/index.js","webpack:///./src/app/components/Account/Overlays/AppleLinking.js","webpack:///./src/app/components/Account/AccountComponents/ParentalIcons/index.js","webpack:///./src/app/components/Account/AccountComponents/ParentalControls/selectors.js","webpack:///./src/app/components/Account/AccountComponents/ParentalControls/index.js","webpack:///./src/app/components/Account/Overlays/ParentalControls.js","webpack:///./src/app/components/Account/AccountComponents/AccountMain/Menu.js","webpack:///./src/app/components/Account/AccountComponents/AccountMain/index.js","webpack:///./src/app/components/Account/AccountComponents/ActivationSuccess/index.js","webpack:///./src/app/components/Account/AccountComponents/SignInApple/components/SignInAppleButton.js","webpack:///./src/app/external-scripts/AsyncScriptLoader.js","webpack:///./src/app/components/Account/AccountComponents/SignInApple/index.js","webpack:///./static/images/svg/FoxSoul.svg","webpack:///./static/images/svg/PopIn.svg","webpack:///./src/app/components/Account/AccountComponents/GoogleSignInButton/hooks/useGetGoogleSignIn.js","webpack:///./src/app/hooks/useStateWithLabel.js","webpack:///./src/app/components/Account/AccountComponents/GoogleSignInButton/index.js","webpack:///./src/app/images/index.js","webpack:///./src/app/components/Account/AccountComponents/ConsolidatedSignInFlow/helpers/ConsolidatedHelper.js","webpack:///./src/app/components/Account/AccountComponents/ConsolidatedSignInFlow/components/SignIn/index.js","webpack:///./src/app/components/Account/AccountComponents/ConsolidatedSignInFlow/components/PasswordCollection/index.js","webpack:///./src/app/components/Account/AccountComponents/ConsolidatedSignInFlow/components/ForgotPassword/index.js","webpack:///./src/app/components/Account/AccountComponents/ConsolidatedSignInFlow/index.js","webpack:///./src/app/components/Account/AccountComponents/DeleteAccount/index.js","webpack:///./src/app/components/Account/AccountComponents/Network/index.js","webpack:///./src/app/components/Account/AccountComponents/ForgotPassword/index.js","webpack:///./src/app/components/Account/AccountComponents/ForgotPasswordSuccess/index.js","webpack:///./src/app/components/Account/AccountComponents/Logout/index.js","webpack:///./src/app/components/Account/AccountComponents/ManageFavorites/index.js","webpack:///./src/app/components/Account/AccountComponents/Perks/index.js","webpack:///./src/app/components/Account/AccountComponents/ResetPassword/index.js","webpack:///./src/app/components/Account/AccountComponents/ResetPasswordSuccess/index.js","webpack:///./src/app/components/Account/AccountComponents/ShareMyEmailUpsell/index.js","webpack:///./src/app/components/Account/AccountComponents/CTA/index.js","webpack:///./src/app/components/Account/AccountComponents/SocialLogin/components/SocialFacebook.js","webpack:///./src/app/components/Account/AccountComponents/SocialLogin/index.js","webpack:///./src/app/components/Account/AccountComponents/SignInSeparator/index.js","webpack:///./src/app/components/Account/AccountComponents/Signin/index.js","webpack:///./src/app/components/Account/AccountComponents/Signup/index.js","webpack:///./src/app/components/Account/AccountComponents/SignupSuccess/index.js","webpack:///./src/app/components/Account/AccountComponents/SocialFacebookPasswordLink/index.js","webpack:///./src/app/components/Account/AccountComponents/VerifyAccount/index.js","webpack:///./src/app/components/Account/index.js","webpack:///./src/app/screens/ResetPassword/index.js","webpack:///./src/app/components/Search/SearchHeader/index.js","webpack:///./src/app/components/Search/index.js","webpack:///./src/app/screens/Search/Helpers.js","webpack:///./src/app/components/InfiniteScroll/index.js","webpack:///./src/app/components/SupportLink/index.js","webpack:///./src/app/screens/Search/components/SearchResults/components/Shelf.js","webpack:///./src/app/screens/Search/components/SearchResults/index.js","webpack:///./src/app/screens/Search/components/SearchTabs/index.js","webpack:///./src/app/screens/Search/selectors.js","webpack:///./src/app/screens/Search/Search.js","webpack:///./src/app/screens/Search/index.js","webpack:///./src/app/components/ContextPlayer/ContextPromo.js","webpack:///./src/app/components/ContextPlayer/index.js","webpack:///./src/app/components/PromoList/PromoListHelpers.js","webpack:///./src/app/components/PromoList/PromoList.js","webpack:///./src/app/components/PromoList/index.js","webpack:///./src/app/screens/SeriesDetail/components/Bio/CastItem/CastItem.js","webpack:///./src/app/screens/SeriesDetail/components/Bio/CastItem/index.js","webpack:///./src/app/screens/SeriesDetail/components/Bio/BioDetail/BioDetail.js","webpack:///./src/app/screens/SeriesDetail/components/Bio/BioDetail/index.js","webpack:///./src/app/screens/SeriesDetail/components/Bio/index.js","webpack:///./src/app/screens/SeriesDetail/components/Branding/index.js","webpack:///./src/app/screens/SeriesDetail/components/TabListMobile/index.js","webpack:///./src/app/screens/SeriesDetail/components/TabList/index.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/components/Header/index.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/components/FirstTile/SeriesPromo.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/components/FirstTile/index.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/components/UpsellBanner/index.js","webpack:///./src/app/screens/SeriesDetail/components/VideosTab/index.js","webpack:///./src/app/screens/SeriesDetail/components/PhotoGallery/Components/PhotoGalleryImage.js","webpack:///./src/app/screens/SeriesDetail/components/PhotoGallery/Components/PhotoGalleryImages.js","webpack:///./src/app/screens/SeriesDetail/components/PhotoGallery/index.js","webpack:///./src/app/screens/SeriesDetail/components/PhotoGallery/PhotoGalleryHelper.js","webpack:///./src/app/screens/SeriesDetail/components/PersonalityBio/index.js","webpack:///./src/app/screens/SeriesDetail/components/NationWhatIs/index.js","webpack:///./src/app/screens/SeriesDetail/components/StartFreeTrial/index.js","webpack:///./src/app/screens/SeriesDetail/selectors.js","webpack:///./src/app/screens/SeriesDetail/components/HeadlineBumper/index.js","webpack:///./src/app/screens/SeriesDetail/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/components/Header/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/components/Description/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/components/MyRewardsCTA/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/components/Thumbnail/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTBanner/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/Header/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/Description/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/NFTTitle/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/NFTThumbnail/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/NFThelper.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/DropTimer/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/DropCTA/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/components/Thumbnail/index.js","webpack:///./src/app/screens/ContentDetail/components/NFTModule/index.js","webpack:///./src/app/hooks/useBoolean.js","webpack:///./src/app/hooks/useLockedBody.js","webpack:///./src/app/hooks/useWindowSize.js","webpack:///./src/app/hooks/useBreakpoint.js","webpack:///./src/app/screens/ContentDetail/components/Overlay/index.js","webpack:///./src/app/screens/ContentDetail/components/Modal/index.js","webpack:///./src/app/screens/ContentDetail/components/Heading/index.js","webpack:///./src/app/screens/ContentDetail/components/Divider/index.js","webpack:///./src/app/screens/ContentDetail/selectors.js","webpack:///./src/app/screens/ContentDetail/components/AboutV2/components/SocialIcons.js","webpack:///./src/app/screens/ContentDetail/components/AboutV2/index.js","webpack:///./src/app/screens/ContentDetail/components/Background/index.js","webpack:///./src/app/screens/ContentDetail/components/Cast/CastMember/index.js","webpack:///./src/app/screens/ContentDetail/components/Cast/CastSlider/index.js","webpack:///./src/app/screens/ContentDetail/components/Cast/CastDetail/index.js","webpack:///./src/app/screens/ContentDetail/components/Cast/CastOverlay/index.js","webpack:///./src/app/screens/ContentDetail/components/Cast/index.js","webpack:///./src/app/components/Skeleton/Carousel/index.js","webpack:///./src/app/components/Skeleton/CarouselTile/index.js","webpack:///./src/app/components/Skeleton/GradientImage/index.js","webpack:///./src/app/components/Skeleton/Repeater/index.js","webpack:///./src/app/components/Skeleton/TextRow/index.js","webpack:///./src/app/screens/ContentDetail/components/FoxContentDensitySkeleton/index.js","webpack:///./src/app/screens/ContentDetail/components/FoxContentDensitySkeleton/FoxContentDensitySkeleton.js","webpack:///./src/app/screens/ContentDetail/components/Hero/HeroHelper.js","webpack:///./src/app/screens/ContentDetail/components/Hero/components/ActionButton/index.js","webpack:///./src/app/screens/ContentDetail/components/Hero/components/Description/index.js","webpack:///./src/app/screens/ContentDetail/components/Hero/components/ProgressBar/index.js","webpack:///./src/app/screens/ContentDetail/components/Hero/components/TitleLink/index.js","webpack:///./src/app/screens/ContentDetail/components/Hero/components/TuneIn/index.js","webpack:///./src/app/screens/ContentDetail/components/Hero/components/Meta/index.js","webpack:///./src/app/screens/ContentDetail/components/Hero/components/SecondaryButtons/index.js","webpack:///./src/app/screens/ContentDetail/components/Hero/index.js","webpack:///./src/app/screens/ContentDetail/components/CarouselSection/index.js","webpack:///./src/app/screens/ContentDetail/components/Clips/ClipsDropdown.js","webpack:///./src/app/screens/ContentDetail/components/Clips/index.js","webpack:///./src/app/screens/ContentDetail/components/InfoContainer/index.js","webpack:///./src/app/screens/ContentDetail/components/Seasons/index.js","webpack:///./src/app/screens/ContentDetail/components/Links/index.js","webpack:///./src/app/screens/ContentDetail/components/SeeAll/index.js","webpack:///./src/app/screens/ContentDetail/components/Recommended/index.js","webpack:///./src/app/screens/ContentDetail/FoxContentDensity.js","webpack:///./src/app/screens/ContentDetail/index.js","webpack:///./src/app/components/Grid/index.js","webpack:///./src/app/screens/Shows/components/ShowsTile/components/Image/index.js","webpack:///./src/app/screens/Shows/components/ShowsTile/components/NetworkImage/index.js","webpack:///./src/app/screens/Shows/components/ShowsTile/index.js","webpack:///./src/app/screens/Shows/components/ShowsTiles/index.js","webpack:///./src/app/screens/Shows/index.js","webpack:///./src/app/screens/SignIn/index.js","webpack:///./src/app/screens/SiteMap/SiteMapHelper.js","webpack:///./src/app/screens/SiteMap/index.js","webpack:///./src/app/screens/Subscription/index.js","webpack:///./src/app/screens/Watch/selectors.js","webpack:///./src/app/screens/Watch/index.js","webpack:///./src/app/helpers/usprivacy-string.js","webpack:///./src/app/helpers/uspapi.js","webpack:///./src/app/components/StickyBanner/index.js","webpack:///./src/app/helpers/ScriptHelper.js","webpack:///./src/app/helpers/RedfastHelper.js","webpack:///./src/app/components/Auth/VideoProviderSearch/components/Provider/index.js","webpack:///./src/app/components/Auth/VideoProviderSearch/components/ProviderGroup/index.js","webpack:///./src/app/components/Auth/VideoProviderSearch/components/ProvidersList/index.js","webpack:///./src/app/components/Auth/VideoProviderSearch/components/SearchInput/index.js","webpack:///./src/app/components/Auth/VideoProviderSearch/index.js","webpack:///./src/app/helpers/Pcs.js","webpack:///./src/app/components/AuthClientless/Overlays/CookiesBlocked/index.js","webpack:///./src/app/components/AuthClientless/Overlays/ExpiredPreviewPass/index.js","webpack:///./src/app/components/AuthClientless/Overlays/Failure/index.js","webpack:///./src/app/components/AuthClientless/Overlays/Loading/index.js","webpack:///./src/app/components/AuthClientless/Overlays/MVPDIncomplete/index.js","webpack:///./src/app/components/AuthClientless/Overlays/MVPDRetry/index.js","webpack:///./src/app/components/AuthClientless/Overlays/MVPDSearch/index.js","webpack:///./src/app/components/AuthClientless/Overlays/MVPDStart/index.js","webpack:///./src/app/components/AuthClientless/Overlays/MVPDUpsellRedirecting/index.js","webpack:///./src/app/components/AuthClientless/Overlays/MvpdDirectSignInRedirect/index.js","webpack:///./src/app/components/AuthClientless/Overlays/NotEntitled/index.js","webpack:///./src/app/components/AuthClientless/Overlays/PlaybackError/index.js","webpack:///./src/app/components/AuthClientless/Overlays/PreviewPassWelcome/index.js","webpack:///./src/app/components/AuthClientless/Overlays/ResumeWithProfile/index.js","webpack:///./src/app/components/AuthClientless/Overlays/ResumeWithoutProfile/index.js","webpack:///./src/app/components/AuthClientless/Overlays/SignIn/index.js","webpack:///./src/app/components/AuthClientless/Overlays/UnlockUpsell/index.js","webpack:///./src/app/components/AuthClientless/Overlays/Success/index.js","webpack:///./src/app/components/AuthClientless/Overlays/UpsellConfirm/index.js","webpack:///./src/app/components/AuthClientless/Overlays/UpsellError/index.js","webpack:///./src/app/components/AuthClientless/index.js","webpack:///./src/app/components/AuthContainer/index.js","webpack:///./src/app/components/NetworkBar/components/Item/index.js","webpack:///./src/app/components/NetworkBar/index.js","webpack:///./src/app/components/SignUpModalContainer/index.js","webpack:///./src/app/components/Header/DefaultHeaderComponents/BuythroughProfileIcon/index.js","webpack:///./src/app/components/NetworkList/components/Item/index.js","webpack:///./src/app/components/NetworkList/index.js","webpack:///./src/app/components/Header/DefaultHeaderComponents/Categories/index.js","webpack:///./src/app/components/Header/DefaultHeaderComponents/HeaderLink.js","webpack:///./src/app/components/Header/DefaultHeaderComponents/ProviderLogo/index.js","webpack:///./src/app/components/Header/PreauthRefresh.js","webpack:///./src/app/components/Header/index.js","webpack:///./src/app/components/Header/DefaultHeaderComponents/HeaderButton/index.js","webpack:///./src/app/components/Header/DefaultHeaderComponents/HeaderIcons/index.js","webpack:///./src/app/components/Footer/components/Promos/index.js","webpack:///./src/app/components/Footer/components/Legal/index.js","webpack:///./src/app/components/Social/images/Facebook.svg","webpack:///./src/app/components/Footer/components/Collapse/index.js","webpack:///./src/app/components/Social/images/Instagram.svg","webpack:///./src/app/components/Social/images/Twitter.svg","webpack:///./src/app/components/Social/images/Youtube.svg","webpack:///./src/app/components/Social/images/Pinterest.svg","webpack:///./src/app/components/Social/index.js","webpack:///./src/app/components/Footer/components/LinkItem/index.js","webpack:///./src/app/components/Footer/components/LinkItems/index.js","webpack:///./src/app/components/Footer/components/FooterContent/index.js","webpack:///./src/app/components/Footer/index.js","webpack:///./src/app/hooks/useMvpdAuth.js","webpack:///./src/app/components/FooterUpsell/index.js","webpack:///./src/app/components/Segment/index.js","webpack:///./src/app/components/PopUpModal/index.js","webpack:///./src/app/components/VideoPlayerGlobal/components/DynamicRating/index.js","webpack:///./src/app/components/VideoPlayerGlobal/components/Endcard/index.js","webpack:///./src/app/components/VideoPlayerGlobal/components/GenericEndcard/index.js","webpack:///./src/app/components/VideoPlayerGlobal/components/UpNextToast/index.js","webpack:///./src/app/components/VideoPlayerGlobal/components/VideoDetail/index.js","webpack:///./src/app/components/VideoPlayerGlobal/components/Contexts/WatchContext.js","webpack:///./src/app/helpers/Functional.js","webpack:///./src/app/components/VideoPlayerGlobal/components/Contexts/LiveContext.js","webpack:///./src/app/components/VideoPlayerGlobal/VideoPlayerGlobal.js","webpack:///./src/app/components/VideoPlayerGlobal/index.js","webpack:///./src/app/components/CanIAutoplay/index.js","webpack:///./src/app/components/ErrorFallback/index.js","webpack:///./src/app/components/withErrorBoundary/index.js","webpack:///./src/app/components/IntervalAction/index.js","webpack:///./src/app/components/BlackoutDefinitionFetcher/BlackoutDefinitionFetcher.js","webpack:///./src/app/components/BlackoutDefinitionFetcher/index.js","webpack:///./src/app/index/AppFavoritesHelpers.js","webpack:///./src/app/external-scripts/UserZoomTag.js","webpack:///./src/app/external-scripts/GoogleSignIn.js","webpack:///./src/app/external-scripts/queue.js","webpack:///./src/app/external-scripts/segment.js","webpack:///./src/app/index/App.js","webpack:///./src/app/helpers/DataDogHelpers.js","webpack:///./src/app/index.js","webpack:///./src/config/routes-generator.js","webpack:///./src/index.js","webpack:///./src/config/routes-sync.js","webpack:///./node_modules/universal-cookie/es6/utils.js","webpack:///./node_modules/universal-cookie/es6/Cookies.js","webpack:///./node_modules/universal-cookie/es6/index.js"],"names":["root","factory","exports","module","define","amd","a","i","window","webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","1","__webpack_require__","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","jsonpArray","oldJsonpFunction","slice","s","baseGet","path","defaultValue","result","obj","configurable","writable","getLanguageObject","globalLanguage","global","windowLanguage","isBrowserIE","ua","isEdge","test","isIE11","toBoolean","indexOf","mergeStyles","baseStyle","extendedStyle","style","noop","$export","$filter","P","F","filter","callbackfn","this","arguments","toObject","$keys","it","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","has","DESCRIPTORS","redefine","META","KEY","$fails","shared","setToStringTag","uid","wks","wksExt","wksDefine","enumKeys","isArray","anObject","isObject","toIObject","toPrimitive","createDesc","_create","gOPNExt","$GOPD","$GOPS","$DP","gOPD","f","dP","gOPN","$Symbol","$JSON","JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","isEnum","propertyIsEnumerable","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","D","protoDesc","wrap","tag","sym","_k","isSymbol","iterator","$defineProperty","$defineProperties","keys","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","$getOwnPropertySymbols","IS_OP","TypeError","$set","set","G","W","es6Symbols","split","j","wellKnownSymbols","store","k","S","keyFor","useSetter","useSimple","defineProperties","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","FAILS_ON_PRIMITIVES","replacer","$replacer","args","apply","valueOf","Math","ownKeys","createProperty","getOwnPropertyDescriptors","desc","O","getDesc","self","ReferenceError","instance","Constructor","_defineProperties","props","descriptor","protoProps","staticProps","_typeof","assertThisInitialized","subClass","superClass","constructor","aFunction","fails","rConstruct","Reflect","construct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","proto","Function","FProto","nameRE","match","asyncGeneratorStep","gen","_next","_throw","arg","info","done","then","fn","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arr","$map","map","_extends","assign","source","baseIndexOf","isArrayLike","isString","toInteger","values","nativeMax","max","collection","fromIndex","guard","createHTML","url","baseKeys","getTag","isArguments","isBuffer","isPrototype","isTypedArray","splice","size","getTimezoneOffsetInMilliseconds","isDate","parseTokenDateTimeDelimeter","parseTokenPlainTime","parseTokenYY","parseTokensYYY","parseTokenYYYY","parseTokensYYYYY","parseTokenMM","parseTokenDDD","parseTokenMMDD","parseTokenWww","parseTokenWwwD","parseTokenHH","parseTokenHHMM","parseTokenHHMMSS","parseTokenTimezone","parseTokenTimezoneZ","parseTokenTimezoneHH","parseTokenTimezoneHHMM","dayOfISOYear","isoYear","week","day","date","Date","setUTCFullYear","diff","getUTCDay","setUTCDate","getUTCDate","argument","dirtyOptions","getTime","additionalDigits","Number","dateStrings","dateString","timeString","array","token","exec","time","replace","timezone","splitDateString","parseYearResult","parseTokenYYY","parseTokenYYYYY","yearString","year","parseInt","restDateString","centuryString","parseYear","month","dayOfYear","dayOfWeek","parseDate","offset","timestamp","hours","minutes","parseFloat","seconds","parseTime","timezoneString","absoluteOffset","parseTimezone","fullTime","fullTimeDate","fullTimeDateNextDay","setDate","getDate","offsetDiff","find","createFind","arrayMap","baseIteratee","baseMap","iteratee","toLength","advanceStringIndex","regExpExec","min","floor","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","defined","REPLACE","$replace","maybeCallNative","searchValue","replaceValue","String","regexp","res","rx","functionalReplace","fullUnicode","unicode","lastIndex","results","accumulatedResult","nextSourcePosition","matched","position","index","captures","namedCaptures","groups","replacerArgs","concat","replacement","getSubstitution","str","tailPos","symbols","ch","capture","charAt","arrayWithoutHoles","iterableToArray","nonIterableSpread","Helpers","ScrollElement","ScrollLink","animateScroll","scrollSpy","Events","scroller","Element","Button","Link","_Link2","_interopRequireDefault","_Button2","_Element2","_scroller2","_scrollEvents2","_scrollSpy2","_animateScroll2","_scrollLink2","_scrollElement2","_Helpers2","default","classof","arrayFilter","baseFilter","predicate","toString","toLowerCase","$includes","includes","el","context","searchString","isRegExp","speciesConstructor","callRegExpExec","regexpExec","$min","$push","LENGTH","SUPPORTS_Y","RegExp","SPLIT","$split","internalSplit","separator","limit","string","lastLength","output","flags","ignoreCase","multiline","sticky","lastLastIndex","splitLimit","separatorCopy","splitter","C","unicodeMatching","lim","q","A","z","html","cof","toAbsoluteIndex","arraySlice","begin","end","len","klass","start","upTo","cloned","Array","baseIsEqual","other","baseFindIndex","arrayEach","baseEach","castFunction","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","LIBRARY","ctx","anInstance","forOf","task","microtask","newPromiseCapabilityModule","perform","userAgent","promiseResolve","process","versions","v8","$Promise","isNode","empty","newPromiseCapability","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","_n","chain","_c","_v","ok","_s","run","reaction","exited","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","_a","v","onrejectionhandled","$reject","_d","_w","$resolve","wrapper","executor","onFulfilled","onRejected","capability","$$reject","x","iter","iterable","remaining","$index","alreadyCalled","race","baseSet","React","clamp","pick","PropTypes","ReactDOM","Dotdotdot","update","getContainerRef","container","Component","componentDidMount","addEventListener","dotdotdot","findDOMNode","componentWillUnmount","removeEventListener","componentDidUpdate","forceUpdate","render","tagName","ref","className","children","propTypes","node","oneOfType","number","bool","isRequired","truncationChar","useNativeClamp","defaultProps","basePick","flatRest","paths","addDays","addHours","addISOYears","addMilliseconds","addMinutes","addMonths","addQuarters","addSeconds","addWeeks","addYears","areRangesOverlapping","closestIndexTo","closestTo","compareAsc","compareDesc","differenceInCalendarDays","differenceInCalendarISOWeeks","differenceInCalendarISOYears","differenceInCalendarMonths","differenceInCalendarQuarters","differenceInCalendarWeeks","differenceInCalendarYears","differenceInDays","differenceInHours","differenceInISOYears","differenceInMilliseconds","differenceInMinutes","differenceInMonths","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","distanceInWords","distanceInWordsStrict","distanceInWordsToNow","eachDay","endOfDay","endOfHour","endOfISOWeek","endOfISOYear","endOfMinute","endOfMonth","endOfQuarter","endOfSecond","endOfToday","endOfTomorrow","endOfWeek","endOfYear","endOfYesterday","format","getDay","getDayOfYear","getDaysInMonth","getDaysInYear","getHours","getISODay","getISOWeek","getISOWeeksInYear","getISOYear","getMilliseconds","getMinutes","getMonth","getOverlappingDaysInRanges","getQuarter","getSeconds","getYear","isAfter","isBefore","isEqual","isFirstDayOfMonth","isFriday","isFuture","isLastDayOfMonth","isLeapYear","isMonday","isPast","isSameDay","isSameHour","isSameISOWeek","isSameISOYear","isSameMinute","isSameMonth","isSameQuarter","isSameSecond","isSameWeek","isSameYear","isSaturday","isSunday","isThisHour","isThisISOWeek","isThisISOYear","isThisMinute","isThisMonth","isThisQuarter","isThisSecond","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isValid","isWednesday","isWeekend","isWithinRange","isYesterday","lastDayOfISOWeek","lastDayOfISOYear","lastDayOfMonth","lastDayOfQuarter","lastDayOfWeek","lastDayOfYear","parse","setDay","setDayOfYear","setHours","setISODay","setISOWeek","setISOYear","setMilliseconds","setMinutes","setMonth","setQuarter","setSeconds","setYear","startOfDay","startOfHour","startOfISOWeek","startOfISOYear","startOfMinute","startOfMonth","startOfQuarter","startOfSecond","startOfToday","startOfTomorrow","startOfWeek","startOfYear","startOfYesterday","subDays","subHours","subISOYears","subMilliseconds","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","core","hide","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","B","expProto","U","R","MATCH","$match","matchStr","$find","forced","baseToString","castSlice","hasUnicode","isIterateeCall","stringToArray","baseClone","CLONE_DEEP_FLAG","_setPrototypeOf","_possibleConstructorReturn","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","computeOffsetPixels","contextHeight","pixelOffset","isNaN","isFinite","percentOffset","parseOffsetAsPercentage","isDOMElement","timeoutQueue","onNextTick","cb","item","isSubscribed","debug","scrollableAncestor","topOffset","bottomOffset","horizontal","onEnter","onLeave","onPositionChange","fireOnRapidScroll","Waypoint","_React$PureComponent","_inherits","_super","_this","_classCallCheck","refElement","_ref","_this2","getWindow","cancelOnNextTick","_this2$props","ensureRefIsProvidedByChild","_handleScroll","_findScrollableAncestor","scrollEventListenerUnsubscribe","passive","resizeEventListenerUnsubscribe","_this3","_this$props","resolveScrollableAncestorProp","parentNode","body","getComputedStyle","overflow","getPropertyValue","bounds","_getBounds","currentPosition","viewportBottom","viewportTop","waypointTop","waypointBottom","getCurrentPosition","previousPosition","_previousPosition","_this$props2","callbackArg","contextScrollTop","_this$props3","_this$_ref$getBoundin","getBoundingClientRect","left","top","right","bottom","innerWidth","innerHeight","offsetWidth","offsetHeight","_this$props4","_this4","cloneElement","current","innerRef","fontSize","PureComponent","above","below","inside","invisible","displayName","USE_SYMBOL","sameValue","SEARCH","$search","previousLastIndex","baseTrim","charsEndIndex","charsStartIndex","chars","strSymbols","chrSymbols","join","__g","addToUnscopables","step","Iterators","iterated","kind","_t","_i","Arguments","vendor_lib","$iterators","getKeys","ITERATOR","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","NAME","explicit","Collection","now","toNumber","nativeMin","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","toFinite","remainder","arraySome","baseSome","$at","point","$flags","$toString","arrayPush","baseFlatten","copyArray","inheritIfRequired","$trim","trim","$Number","Base","BROKEN_COF","TRIM","third","radix","maxCode","first","charCodeAt","NaN","code","digits","that","baseMatches","baseMatchesProperty","identity","arrayLikeKeys","baseGetTag","basePullAt","indexes","IE8_DOM_DEFINE","Attributes","freeGlobal","freeSelf","isObjectLike","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","Channel","StickyContainer","Sticky","_sticky2","_container2","_channel2","__webpack_exports__","enableLogs","logger","fakeLogger","trace","log","warn","exportedLogger","formatMsg","msg","consolePrintFn","_len","_key","debugConfig","_len2","functions","_key2","forEach","exportLoggerFunctions","MEDIA_ATTACHING","MEDIA_ATTACHED","MEDIA_DETACHING","MEDIA_DETACHED","BUFFER_RESET","BUFFER_CODECS","BUFFER_CREATED","BUFFER_APPENDING","BUFFER_APPENDED","BUFFER_EOS","BUFFER_FLUSHING","BUFFER_FLUSHED","MANIFEST_LOADING","MANIFEST_LOADED","MANIFEST_PARSED","LEVEL_SWITCHING","LEVEL_SWITCHED","LEVEL_LOADING","LEVEL_LOADED","LEVEL_UPDATED","LEVEL_PTS_UPDATED","AUDIO_TRACKS_UPDATED","AUDIO_TRACK_SWITCHING","AUDIO_TRACK_SWITCHED","AUDIO_TRACK_LOADING","AUDIO_TRACK_LOADED","SUBTITLE_TRACKS_UPDATED","SUBTITLE_TRACK_SWITCH","SUBTITLE_TRACK_LOADING","SUBTITLE_TRACK_LOADED","SUBTITLE_FRAG_PROCESSED","INIT_PTS_FOUND","FRAG_LOADING","FRAG_LOAD_PROGRESS","FRAG_LOAD_EMERGENCY_ABORTED","FRAG_LOADED","FRAG_DECRYPTED","FRAG_PARSING_INIT_SEGMENT","FRAG_PARSING_USERDATA","FRAG_PARSING_METADATA","FRAG_PARSING_DATA","FRAG_PARSED","FRAG_BUFFERED","FRAG_CHANGED","FPS_DROP","FPS_DROP_LEVEL_CAPPING","ERROR","DESTROYING","KEY_LOADING","KEY_LOADED","STREAM_STATE_TRANSITION","ErrorTypes","ErrorDetails","NETWORK_ERROR","MEDIA_ERROR","KEY_SYSTEM_ERROR","MUX_ERROR","OTHER_ERROR","KEY_SYSTEM_NO_KEYS","KEY_SYSTEM_NO_ACCESS","KEY_SYSTEM_NO_SESSION","KEY_SYSTEM_LICENSE_REQUEST_FAILED","MANIFEST_LOAD_ERROR","MANIFEST_LOAD_TIMEOUT","MANIFEST_PARSING_ERROR","MANIFEST_INCOMPATIBLE_CODECS_ERROR","LEVEL_LOAD_ERROR","LEVEL_LOAD_TIMEOUT","LEVEL_SWITCH_ERROR","AUDIO_TRACK_LOAD_ERROR","AUDIO_TRACK_LOAD_TIMEOUT","FRAG_LOAD_ERROR","FRAG_LOAD_TIMEOUT","FRAG_DECRYPT_ERROR","FRAG_PARSING_ERROR","REMUX_ALLOC_ERROR","KEY_LOAD_ERROR","KEY_LOAD_TIMEOUT","BUFFER_ADD_CODEC_ERROR","BUFFER_APPEND_ERROR","BUFFER_APPENDING_ERROR","BUFFER_STALLED_ERROR","BUFFER_FULL_ERROR","BUFFER_SEEK_OVER_HOLE","BUFFER_NUDGE_ON_STALL","INTERNAL_EXCEPTION","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","buildAbsoluteURL","baseURL","relativeURL","opts","alwaysNormalize","basePartsForNormalise","parseURL","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","builtParts","params","query","fragment","baseURLPath","newPath","substring","lastIndexOf","parts","reverse","utf8ArrayToStr","ID3","isHeader","isFooter","getID3Data","front","_readSize","subarray","getTimeStamp","frames","getID3Frames","frame","isTimeStampFrame","_readTimeStamp","_getFrameData","fromCharCode","id3Data","frameData","_decodeFrame","_decodePrivFrame","_decodeTextFrame","_decodeURLFrame","timeStampFrame","byteLength","Uint8Array","pts33Bit","round","owner","_utf8ArrayToStr","privateData","buffer","description","text","exitOnNull","char2","char3","aes_crypto","AESCrypto","subtle","iv","aesIV","decrypt","fast_aes_key","FastAESKey","fast_aes_key__classCallCheck","expandKey","importKey","aes_decryptor","AESDecryptor","aes_decryptor__classCallCheck","rcon","subMix","Uint32Array","invSubMix","sBox","invSBox","initTable","uint8ArrayToUint32Array_","arrayBuffer","view","DataView","newArray","getUint32","subMix0","subMix1","subMix2","subMix3","invSubMix0","invSubMix1","invSubMix2","invSubMix3","xi","sx","x2","x4","x8","keyBuffer","sameKey","keySize","ksRows","ksRow","invKsRow","keySchedule","invKeySchedule","sbox","prev","networkToHostOrderSwap","word","inputArrayBuffer","removePKCS7Padding","nRounds","invSBOX","initVector","initVector0","initVector1","initVector2","initVector3","inputInt32","Int32Array","outputInt32","t0","t1","t2","t3","s0","s1","s2","s3","inputWords0","inputWords1","inputWords2","inputWords3","swapWord","outputBytes","paddingBytes","getUint8","removePadding","destroy","errors","decrypter__classCallCheck","decrypter_Decrypter","Decrypter","observer","config","_ref$removePKCS7Paddi","logEnabled","browserCrypto","crypto","webkitSubtle","disableWebCrypto","isSync","enableSoftwareAES","callback","decryptor","fastAesKey","aesKey","catch","onWebCryptoError","trigger","Event","details","fatal","EventEmitter","_events","_maxListeners","isFunction","isUndefined","defaultMaxListeners","setMaxListeners","er","listeners","addListener","listener","newListener","warned","on","once","fired","g","removeListener","list","removeAllListeners","listenerCount","evlistener","emitter","__WEBPACK_IMPORTED_MODULE_0__utils_logger__","__WEBPACK_IMPORTED_MODULE_1__events__","UINT32_MAX","pow","MP4Demuxer","remuxer","resetTimeStamp","initPTS","resetInitSegment","initSegment","audioCodec","videoCodec","duration","initData","parseInitSegment","tracks","audio","video","audiovideo","codec","probe","findBox","bin2str","readUint16","val","readUint32","writeUint32","subresults","endbox","parseSegmentIndex","moov","moovEndOffset","sidx","references","version","timescale","startByte","referencesCount","referenceIndex","referenceInfo","referenceSize","subsegmentDuration","earliestPresentationTime","trak","tkhd","trackId","mdhd","hdlr","codecBox","codecType","id","getStartDTS","baseTimes","trafs","traf","tfhd","scale","tfdt","offsetStartDTS","timeOffset","baseMediaDecodeTime","upper","lower","append","contiguous","accurateTimeOffset","startDTS","_startDTS","remux","events","crypt_decrypter","isHeaderPattern","getHeaderLength","getFullFrameLength","adts_probe","frameLength","newOffset","initTrackConfig","track","samplerate","adtsSampleingIndex","adtsObjectType","adtsExtensionSampleingIndex","adtsChanelConfig","navigator","manifestCodec","adtsSampleingRates","channelCount","getAudioConfig","getFrameDuration","appendFrame","pts","frameIndex","header","frameDuration","headerLength","stamp","parseFrameHeader","aacSample","unit","dts","samples","sample","id3","aacdemuxer","AACDemuxer","_audioTrack","sequenceNumber","isAAC","inputTimeScale","id3Samples","mp4demuxer","MpegAudio","BitratesMap","SamplingRateMap","SamplesCoefficients","BytesInSlot","parseHeader","samplesPerFrame","sampleRate","headerB","headerC","headerE","headerF","headerG","columnInBitrates","bitRate","columnInSampleRates","sampleCoefficient","bytesInSlot","mpegaudio","exp_golomb","ExpGolomb","exp_golomb__classCallCheck","bytesAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","count","skipBytes","readBits","bits","valu","skipLZ","leadingZeroCount","skipUEG","skipEG","readUEG","clz","readEG","readBoolean","readUByte","readUShort","readUInt","skipScalingList","lastScale","nextScale","readSPS","profileIdc","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","numRefFramesInPicOrderCntCycle","scalingListCount","chromaFormatIdc","picOrderCntType","pixelRatio","width","ceil","height","readSliceType","sample_aes","SampleAesDecrypter","decryptdata","discardEPB","sample_aes__classCallCheck","decrypter","decryptBuffer","encryptedData","decryptAacSample","sampleIndex","sync","curUnit","encryptedBuffer","byteOffset","localthis","decryptedData","decryptAacSamples","getAvcEncryptedData","decodedData","encryptedDataLen","Int8Array","outputPos","inputPos","getAvcDecryptedUnit","decryptAvcSample","unitIndex","decryptAvcSamples","curUnits","units","RemuxerTrackIdConfig","tsdemuxer","TSDemuxer","typeSupported","tsdemuxer__classCallCheck","sampleAes","setDecryptData","method","syncOffset","_syncOffset","scanwindow","createTrack","pid","dropped","pmtParsed","_pmtId","_avcTrack","_id3Track","_txtTrack","aacOverFlow","aacLastPTS","avcSample","_duration","stt","pes","unknownPIDs","avcTrack","audioTrack","id3Track","avcId","audioId","id3Id","pmtId","avcData","pesData","audioData","parsePAT","_parsePAT","parsePMT","_parsePMT","parsePES","_parsePES","parseAVCPES","_parseAVCPES","parseAACPES","_parseAACPES","parseMPEGPES","_parseMPEGPES","parseID3PES","_parseID3PES","parsedPIDs","mpeg","mp3","avc","decryptAndRemux","videoTrack","textTrack","decryptAndRemuxAvc","_initPTS","_initDTS","mpegSupported","isSampleAes","tableEnd","stream","frag","pesFlags","pesLen","pesHdrLen","pesPts","pesDts","payloadStartOffset","newData","dataLen","pushAccesUnit","nbSamples","forceKeyFrameOnDiscontinuity","sps","last","_parseAVCNALu","expGolombDecoder","spsfound","createAVCSample","audFound","sliceType","payloadType","payloadSize","endOfCaptions","b","firstByte","totalCCs","byteArray","_insertSampleInOrder","bytes","codecarray","codecstring","h","pps","pos","_getLastNalUnit","lastUnit","state","naluState","lastState","lastUnitStart","lastUnitType","tmp","_lastUnit","_tmp","newLength","EPBPositions","sourceIndex","newPTS","abs","mp3demuxer","MP3Demuxer","mp3demuxer__classCallCheck","aac","AAC","aac__classCallCheck","getSilentFrame","mp4_generator","MP4","mp4_generator__classCallCheck","init","types","avc1","avcC","btrt","dinf","dref","esds","ftyp","mdat","mdia","mfhd","minf","moof","mp4a","mvex","mvhd","pasp","sdtp","stbl","stco","stsc","stsd","stsz","stts","trun","trex","vmhd","smhd","videoHdlr","audioHdlr","HDLR_TYPES","STTS","STSC","STCO","STSZ","VMHD","SMHD","STSD","majorBrand","avc1Brand","minorVersion","FTYP","box","DINF","payload","upperWordDuration","lowerWordDuration","sn","boxes","dependsOn","isDependedOn","hasRedundancy","avcc","hSpacing","vSpacing","configlen","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","arraylen","cts","isLeading","paddingValue","isNonSync","degradPrio","movie","mp4_remuxer","MP4Remuxer","vendor","mp4_remuxer__classCallCheck","isSafari","ISGenerated","defaultTimeStamp","generateIS","nbAudioSamples","nbVideoSamples","audioTimeOffset","videoTimeOffset","audiovideoDeltaDts","remuxAudio","audioTrackLength","endPTS","startPTS","remuxVideo","videoData","remuxEmptyAudio","remuxID3","remuxText","audioSamples","videoSamples","computePTSDTS","initDTS","Infinity","metadata","lastPTS","lastDTS","timeScale","mp4SampleDuration","firstPTS","firstDTS","inputSamples","outputSamples","ptsNormalize","_PTSNormalize","nextAvcDts","sort","deltadts","deltapts","PTSDTSshift","reduce","curr","delta","nbNalu","naluLen","_sample","nbUnits","sampleLen","mdatSize","setUint32","_i2","avcSampleUnits","mp4SampleLength","compositionTimeOffset","_j","_nbUnits","unitData","unitDataLen","lastFrameDuration","stretchShortVideoTrack","maxBufferHole","gapTolerance","deltaToFrameEnd","nextAudioPts","data1","data2","endDTS","hasAudio","hasVideo","nb","mp4timeScale","scaleFactor","inputSampleDuration","rawMPEG","mp4Sample","fillFrame","maxAudioFramesDrift","nextPts","toFixed","missing","newStamp","_j2","_nbSamples","audioSample","_pts","_delta","numMissingFrames","_i3","unitLen","lastSampleDuration","silentFrame","reference","passthrough_remuxer","PassThroughRemuxer","passthrough_remuxer__classCallCheck","rawData","streamType","demuxer_inline_DemuxerInline","DemuxerInline","demuxer_inline__classCallCheck","demuxer","discontinuity","trackSwitch","defaultInitPTS","startTime","performance","endTime","stats","tstart","tdecrypt","pushDecrypted","muxConfig","demux","mux","_remuxer","cues_namespaceObject","newCue","url_toolkit","url_toolkit_default","FORBIDDEN_EVENT_NAMES","Set","event_handler","EventHandler","hls","onEvent","handledEvents","useGenericHandler","registerListeners","onHandlerDestroying","unregisterListeners","onHandlerDestroyed","isEventHandler","off","onEventGeneric","funcName","_createClass","level_key","LevelKey","level_key__classCallCheck","_uri","reluri","baseuri","fragment__createClass","loader_fragment","Fragment","_elementaryStreams","fragment__classCallCheck","_url","_byteRange","_decryptdata","tagList","ElementaryStreamTypes","AUDIO","VIDEO","addElementaryStream","hasElementaryStream","createInitializationVector","segmentNumber","uint8View","fragmentDecryptdataFromLevelkey","levelkey","uri","relurl","baseurl","_programDateTime","rawProgramDateTime","rawByteRange","byteRange","lastByteRangeEndOffset","DECIMAL_RESOLUTION_REGEX","ATTR_LIST_REGEX","attr_list","AttrList","attrs","attr","attr_list__classCallCheck","parseAttrList","decimalInteger","attrName","intValue","MAX_SAFE_INTEGER","hexadecimalInteger","stringValue","hexadecimalIntegerAsNumber","decimalFloatingPoint","enumeratedString","decimalResolution","input","sampleEntryCodesISO","isCodecSupportedInMp4","MediaSource","isTypeSupported","MASTER_PLAYLIST_REGEX","MASTER_PLAYLIST_MEDIA_REGEX","LEVEL_PLAYLIST_REGEX_FAST","LEVEL_PLAYLIST_REGEX_SLOW","m3u8_parser","M3U8Parser","m3u8_parser__classCallCheck","findGroup","mediaGroupId","matchingGroup","group","convertAVC1ToAVCOTI","avcdata","substr","baseUrl","parseMasterPlaylist","levels","setCodecs","codecs","level","filtered","typeCodes","isCodecType","preferred","unknownCodecs","resolution","bitrate","CODECS","parseMasterPlaylistMedia","audioGroups","medias","media","TYPE","groupId","DEFAULT","autoselect","AUTOSELECT","FORCED","URI","lang","LANGUAGE","groupCodec","parseLevelPlaylist","currentSN","totalduration","fragments","live","startSN","cc","prevFrag","title","programDateTime","pdt","endPdt","byteRangeEndOffset","value1","value2","toUpperCase","targetduration","keyAttrs","decryptmethod","decrypturi","decryptiv","startTimeOffset","mapAttrs","BYTERANGE","pop","averagetargetduration","endSN","startCC","endCC","every","endsWith","needSidxRanges","playlist_loader__createClass","ContextType","MANIFEST","LEVEL","AUDIO_TRACK","SUBTITLE_TRACK","LevelType","MAIN","SUBTITLE","playlist_loader","_EventHandler","PlaylistLoader","playlist_loader__classCallCheck","loaders","canHaveQualityLevels","mapContextToLevelType","getResponseUrl","response","createInternalLoader","PLoader","pLoader","Loader","loader","getInternalLoader","resetInternalLoader","contextType","destroyInternalLoaders","onManifestLoading","load","onLevelLoading","onAudioTrackLoading","onSubtitleTrackLoading","loaderContext","abort","loaderConfig","loaderCallbacks","maxRetry","retryDelay","maxRetryDelay","manifestLoadingMaxRetry","manifestLoadingTimeOut","manifestLoadingRetryDelay","manifestLoadingMaxRetryTimeout","levelLoadingTimeOut","levelLoadingMaxRetry","levelLoadingRetryDelay","levelLoadingMaxRetryTimeout","responseType","onSuccess","loadsuccess","onError","loaderror","onTimeout","loadtimeout","networkDetails","isSidxRequest","_handleSidxRequest","_handlePlaylistLoaded","tload","_handleTrackOrLevelPlaylist","_handleMasterPlaylist","_handleManifestParsingError","_handleNetworkError","audioTracks","subtitles","embeddedAudioFound","unshift","levelId","levelType","levelDetails","singleLevel","tparsed","sidxUrl","rangeStart","rangeEnd","sidxInfo","segmentRef","segRefInfo","fragment_loader","FragmentLoader","fragment_loader__classCallCheck","fragment_loader__possibleConstructorReturn","fragment_loader__inherits","loaderName","onFragLoading","FragmentILoader","fLoader","DefaultILoader","loaded","progressData","byteRangeStartOffset","fragLoadingTimeOut","fragLoadingMaxRetryTimeout","onProgress","loadprogress","key_loader","KeyLoader","key_loader__classCallCheck","key_loader__possibleConstructorReturn","decryptkey","decrypturl","key_loader__inherits","onKeyLoading","fragLoadingMaxRetry","fragLoadingRetryDelay","binary_search","search","comparisonFunction","minIndex","maxIndex","currentIndex","currentElement","comparisonResult","buffer_helper","isBuffered","buffered","bufferInfo","maxHoleDuration","vbuffered","bufferedInfo","nextStart","buffered2","bufferLen","bufferStart","bufferEnd","bufferStartNext","buf2len","buf2end","demuxer_inline","events_events","events_default","webworkify_webpack","webworkify_webpack_default","getMediaSource","WebKitMediaSource","demuxer_MediaSource","demux_demuxer","Demuxer","demuxer__classCallCheck","forwardMessage","ev","mp4","enableWorker","Worker","w","onwmsg","onWorkerMessage","filename","lineno","postMessage","cmd","URL","revokeObjectURL","objectURL","terminate","lastFrag","nextSN","ArrayBuffer","FragmentState","fragment_tracker_FragmentTracker","FragmentTracker","fragment_tracker__classCallCheck","fragment_tracker__possibleConstructorReturn","bufferPadding","timeRanges","fragment_tracker__inherits","getBufferedFrag","bufferedFrags","fragmentEntity","bufferedFragKey","detectEvictedFragments","elementaryStream","timeRange","fragmentTimes","esData","range","isTimeBuffered","removeFragment","detectPartialFragments","fragKey","getFragmentKey","getBufferedTimes","fragmentPartial","partial","getPartialFragment","timePadding","bestFragment","bestOverlap","isPartial","getState","onFragLoaded","onBufferAppended","_this5","onFragBuffered","hasFragment","removeAllFragments","updatePTS","fromIdx","toIdx","fragFrom","fragTo","fragToPTS","updateFragPTSDTS","maxStartPTS","deltaPTS","drift","fragIdx","PTSKnown","mergeDetails","oldDetails","newDetails","oldfragments","newfragments","ccOffset","PTSFrag","oldFrag","newFrag","backtracked","sliding","time_ranges","adjustPts","alignDiscontinuities","lastLevel","shouldAlign","shouldAlignOnDiscontinuities","referenceFrag","prevDetails","curDetails","prevFrags","curFrags","prevStartFrag","firstFrag","currentFrag","findFirstFragWithCC","findDiscontinuousReferenceFrag","lastPDT","task_loop__classCallCheck","task_loop__possibleConstructorReturn","task_loop","TaskLoop","_tickInterval","_tickCallCount","task_loop__inherits","clearInterval","hasInterval","setInterval","_setInterval","_x","millis","tick","_clearInterval","doTick","stream_controller__createClass","State","stream_controller","_TaskLoop","StreamController","fragmentTracker","stream_controller__classCallCheck","stream_controller__possibleConstructorReturn","audioCodecSwap","_state","stream_controller__inherits","stopLoad","startLoad","startPosition","lastCurrentTime","fragLoadError","startFragRequested","startLevel","bitrateTest","nextLoadLevel","loadedmetadata","nextLoadPosition","forceStartLoad","fragCurrent","fragPrevious","_doTickIdle","retryDate","seeking","_checkBuffer","_checkFragmentChanged","levelLastLoaded","startFragPrefetch","currentTime","levelInfo","levelBitrate","maxBufLen","maxBufferSize","maxBufferLength","maxMaxBufferLength","mediaBuffer","altAudio","_fetchPayloadOrEos","fragLen","initialLiveManifestSize","_ensureFragmentAtLivePoint","_findFragment","_loadFragmentOrKey","maxLatency","liveMaxLatencyDuration","liveMaxLatencyDurationCount","maxFragLookUpTolerance","liveSyncPosition","computeLivePosition","readyState","_findFragmentByPDT","targetSN","fragNext","PDTValue","seg","_findFragmentBySN","foundFrag","fragmentWithinToleranceTest","candidate","candidateLookupTolerance","curSNIdx","sameLevel","nextFrag","fragState","autoLevel","autoLevelEnabled","_reduceMaxBufferLength","followingBufferedFrag","fragPlayingCurrent","playbackRate","fragPlaying","fragPlayingLevel","immediateLevelSwitch","immediateSwitch","previouslyPaused","paused","pause","flushMainBuffer","POSITIVE_INFINITY","immediateLevelSwitchEnd","play","nextLevelSwitch","fetchdelay","nextBufferedFrag","nextLevelId","nextLevel","fragLastKbps","startOffset","endOffset","flushScope","onMediaAttached","onvseeking","onMediaSeeking","onvseeked","onMediaSeeked","onvended","onMediaEnded","autoStartLoad","onMediaDetaching","ended","tolerance","fragStartOffset","fragEndOffset","stalled","onManifestParsed","heaac","audioCodecSwitch","onLevelLoaded","newLevelId","curLevel","onKeyLoaded","fragLoaded","currentLevel","tbuffered","defaultAudioCodec","lastAudioCodec","pendingBuffering","appended","initSegmentData","onFragParsingInitSegment","fragNew","trackName","levelCodec","parent","content","onFragParsingData","onFragParsed","_checkAppendedParsed","onAudioTrackSwitching","onAudioTrackSwitched","videoBuffer","onBufferCreated","mediaTrack","alternate","pending","total","tfirst","mediaBuffered","delay","levelRetry","minLength","expectedPlaying","stallReported","nudgeRetry","tnow","stalledDuration","lastEndTime","highBufferWatchdogPeriod","nudgeMaxRetry","_currentTime","targetTime","nudgeOffset","onFragLoadEmergencyAborted","onBufferFlushed","swapAudioCodec","targetLatency","liveSyncDuration","liveSyncDurationCount","nextState","previousState","_liveSyncPosition","level_controller__createClass","level_controller","LevelController","level_controller__classCallCheck","level_controller__possibleConstructorReturn","canload","currentLevelIndex","manualLevelIndex","timer","level_controller__inherits","cleanTimer","_levels","levelRetryCount","loadError","loadLevel","onManifestLoaded","bitrateStart","levelSet","levelFromSet","videoCodecFound","audioCodecFound","chromeOrFirefox","fragmentError","urlId","_ref2","_firstLevel","firstLevel","setLevelInternal","newLevel","levelProperties","levelError","levelIndex","recoverLevel","errorEvent","errorDetails","redundantLevels","nextAutoLevel","_ref3","targetdurationMs","reloadInterval","trequest","urlIndex","_startLevel","configStartLevel","sendAddTrackEvent","videoEl","createEvent","initEvent","dispatchEvent","clearCurrentCues","cues","removeCue","id3_track_controller","ID3TrackController","id3_track_controller__classCallCheck","id3_track_controller__possibleConstructorReturn","id3_track_controller__inherits","getID3Track","textTracks","label","addTextTrack","onFragParsingMetadata","Cue","WebKitDataCue","VTTCue","TextTrackCue","cue","addCue","ewma","EWMA","halfLife","ewma__classCallCheck","alpha_","estimate_","totalWeight_","weight","adjAlpha","getTotalWeight","getEstimate","zeroFactor","ewma_bandwidth_estimator","EwmaBandWidthEstimator","slow","fast","defaultEstimate","ewma_bandwidth_estimator__classCallCheck","defaultEstimate_","minWeight_","minDelayMs_","slow_","fast_","durationMs","numBytes","bandwidth","canEstimate","abr_controller__createClass","abr_controller","AbrController","abr_controller__classCallCheck","abr_controller__possibleConstructorReturn","lastLoadedFragLevel","_nextAutoLevel","_bwEstimator","onCheck","_abandonRulesCheck","abr_controller__inherits","clearTimer","isLive","ewmaFast","ewmaSlow","abrEwmaFastLive","abrEwmaSlowLive","abrEwmaFastVoD","abrEwmaSlowVoD","abrEwmaDefaultEstimate","minAutoLevel","aborted","requestDelay","loadRate","bw","realBitrate","expectedLen","fragLoadedDelay","bufferStarvationDelay","fragLevelNextLoadedDelay","levelNextBitrate","abrMaxWithRealBitrate","loadedBytes","loadedDuration","fragLoadingProcessingMs","bwEstimate","bitrateTestDelay","_findBestLevel","currentFragDuration","currentBw","maxAutoLevel","maxFetchDuration","bwFactor","bwUpFactor","avgDuration","adjustedbw","fetchDuration","forcedAutoLevel","bwEstimator","nextABRAutoLevel","_nextABRAutoLevel","avgbw","bestLevel","abrBandWidthFactor","abrBandWidthUpFactor","maxStarvationDelay","maxLoadingDelay","buffer_controller_MediaSource","buffer_controller","BufferController","buffer_controller__classCallCheck","buffer_controller__possibleConstructorReturn","_msDuration","_levelDuration","_live","_objectUrl","onsbue","onSBUpdateEnd","onsbe","onSBUpdateError","pendingTracks","buffer_controller__inherits","onLevelPtsUpdated","audioBuffer","sourceBuffer","timestampOffset","updating","audioTimestampOffset","audioExpected","videoExpected","sourceBufferNb","onMediaAttaching","ms","mediaSource","onmso","onMediaSourceOpen","onmse","onMediaSourceEnded","onmsc","onMediaSourceClose","createObjectURL","endOfStream","removeAttribute","flushRange","segments","checkPendingTracks","pendingTracksNb","createSourceBuffers","doAppending","_needsFlush","doFlush","_needsEos","checkEos","appending","counter","segment","updateMediaElementDuration","onBufferReset","sb","removeSourceBuffer","onBufferCodecs","mimeType","addSourceBuffer","onBufferAppending","onBufferAppendFail","onBufferEos","dataType","sbobj","onBufferFlushing","flushBufferCounter","onLevelUpdated","liveDurationInfinity","flushBuffer","appendBuffer","appendError","appendErrorMaxRetry","typeIn","bufStart","bufEnd","flushStart","flushEnd","remove","cap_level_controller__createClass","cap_level_controller","CapLevelController","cap_level_controller__classCallCheck","cap_level_controller__possibleConstructorReturn","cap_level_controller__inherits","capLevelToPlayerSize","restrictedLevels","autoLevelCapping","onFpsDropLevelCapping","isLevelAllowed","droppedLevel","HTMLVideoElement","getMaxLevel","detectPlayerSize","levelsLength","streamController","capLevelIndex","validLevels","getMaxLevelByMediaSize","mediaWidth","mediaHeight","maxLevelIndex","clientWidth","contentScaleFactor","clientHeight","devicePixelRatio","fps_controller","FPSController","fps_controller__classCallCheck","fps_controller__possibleConstructorReturn","fps_controller__inherits","isVideoPlaybackQualityAvailable","capLevelOnFPSDrop","getVideoPlaybackQuality","checkFPSInterval","fpsDroppedMonitoringPeriod","checkFPS","decodedFrames","droppedFrames","lastTime","currentPeriod","currentDropped","lastDroppedFrames","currentDecoded","lastDecodedFrames","droppedFPS","totalDroppedFrames","fpsDroppedMonitoringThreshold","videoPlaybackQuality","totalVideoFrames","droppedVideoFrames","webkitDecodedFrameCount","webkitDroppedFrameCount","xhr_loader","XhrLoader","xhr_loader__classCallCheck","xhrSetup","requestTimeout","retryTimeout","callbacks","retry","loadInternal","xhr","XMLHttpRequest","open","status","setRequestHeader","onreadystatechange","readystatechange","onprogress","send","currentTarget","responseText","responseURL","statusText","lengthComputable","audio_track_controller__createClass","audio_track_controller","AudioTrackController","audio_track_controller__classCallCheck","audio_track_controller__possibleConstructorReturn","ticks","ontick","audio_track_controller__inherits","updateTrack","defaultFound","onAudioTrackLoaded","setAudioTrackInternal","newId","eventObj","audioTrackId","audio_stream_controller__createClass","audio_stream_controller_State","audio_stream_controller","AudioStreamController","audio_stream_controller__classCallCheck","audio_stream_controller__possibleConstructorReturn","waitingFragment","videoTrackCC","audio_stream_controller__inherits","onInitPtsFound","demuxerId","trackDetails","mainBufferInfo","maxConfigBuffer","audioSwitch","CC","findFragWithCC","loadIdx","fragLoadIdx","nextBuffered","isSeeking","waitingFrag","waitingFragCC","onAudioTracksUpdated","appendObj","pendingData","appendOnBufferFlush","_config","vttcue","directionSetting","lr","rl","alignSetting","middle","findAlignSetting","extend","cobj","isIE8","baseObj","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","findDirectionSetting","SyntaxError","displayState","getCueAsHTML","WebVTT","convertCueToDOMTree","StringDecoder","decode","decodeURIComponent","encodeURIComponent","VTTParser","decoder","regionList","Settings","parseOptions","keyValueDelim","groupDelim","kv","dflt","defaultKey","alt","integer","percent","defaults","center","align","parseCue","oInput","consumeTimeStamp","ts","computeSeconds","parseTimeStamp","skipWhitespace","settings","region","vals","vals0","vertical","line","lineAlign","snapToLines","consumeCueSettings","fixLineBreaks","collectNextLine","alreadyCollectedLine","hasSubstring","oncue","onflush","vttparser","captionScreen","row","indenting","indent","rows","isEmpty","uchar","cueStartTime","cea_608_parser__classCallCheck","specialCea608CharsCodes","getCharForByte","byte","charCode","rowsLowCh1","rowsHighCh1","rowsLowCh2","rowsHighCh2","backgroundColors","cea_608_parser_logger","verboseFilter","verboseLevel","setTime","newTime","severity","numArrayToHexArray","numArray","hexArray","PenState","foreground","underline","italics","background","flash","reset","setStyles","styles","attribs","isDefault","equals","copy","newPenState","StyledUnicodeChar","penState","setChar","setPenState","newChar","Row","currPenState","equal","setCursor","absPos","moveCursor","relPos","newPos","backSpace","insertChar","char","clearFromPos","startPos","clear","clearToEndOfRow","getTextString","setPenStyles","CaptionScreen","currRow","NR_ROWS","nrRollUpRows","setPen","setPAC","pacData","newRow","topRowIndex","lastOutputScreen","prevLineTime","prevPos","color","setBkgData","bkgData","setRollUpRows","nrRows","rollUp","getDisplayText","topRow","asOneRow","displayText","rowNr","rowText","getTextAndFormat","Cea608Channel","channelNumber","outputFilter","chNr","verbose","displayedMemory","nonDisplayedMemory","currRollUpRow","writeScreen","lastCueEndTime","getHandler","setHandler","newHandler","setMode","newMode","insertChars","screen","outputDataUpdate","ccRCL","ccBS","ccAOF","ccAON","ccDER","ccRU","ccFON","ccRDC","ccTR","ccRTD","ccEDM","ccCR","ccENM","ccEOC","ccTO","nrCols","ccMIDROW","secondByte","colorIndex","dispatch","dispatchCue","cueSplitAtTime","cea_608_parser","Cea608Parser","field","out1","out2","outputs","channels","currChNr","lastCmdA","lastCmdB","bufferedData","dataCounters","addData","byteList","cmdFound","charsFound","parseCmd","parseMidrow","parsePAC","parseBackgroundAttributes","parseChars","padding","channel","interpretPAC","pacIndex","channelNr","charCodes","charCode1","oneCode","hexCodes","output_filter","OutputFilter","timelineController","output_filter__classCallCheck","addCues","createCaptionsTrack","startsWith","inputString","hash","webvtt_parser","vttByteArray","syncPTS","vttCCs","callBack","errorCallBack","vttLines","cueTime","mpegTs","localTime","presentationTime","parsingError","inHeader","parser","currCC","cueOffset","new","prevCC","presentationOffset","calculateOffset","onparsingerror","secs","mins","cueString2millis","timeline_controller","TimelineController","timeline_controller__classCallCheck","timeline_controller__possibleConstructorReturn","enabled","Cues","cueHandler","unparsedVttFrags","cueRanges","enableCEA708Captions","channel1","channel2","cea608Parser","timeline_controller__inherits","x1","y1","y2","ranges","merged","cueRange","overlap","getExistingTrack","trackVar","existingTrack","createTextTrack","_cleanTracks","textTrack1","textTrack2","lastSn","enableWebVTT","inUseTracks","inUseTrack","manifestTrack","reuseVttTextTrack","subtitleDisplay","onLevelSwitching","closedCaptions","decryptData","_parseVTTs","success","currentTrack","getCueById","textTrackCue","onFragDecrypted","onFragParsingUserdata","ccdatas","extractCea608Data","tmpByte","ccbyte1","ccbyte2","actualCCBytes","subtitle_track_controller__createClass","filterSubtitleTracks","textTrackList","subtitle_track_controller","SubtitleTrackController","subtitle_track_controller__classCallCheck","subtitle_track_controller__possibleConstructorReturn","subtitle_track_controller__inherits","_onTextTracksChanged","subtitleTrack","queuedDefaultTrack","trackChangeListener","useTextTrackPolling","subtitlePollingInterval","subtitleTracks","onTick","onSubtitleTrackLoaded","setSubtitleTrackInternal","subtitleTrackId","subtitle_stream_controller_State","subtitle_stream_controller","SubtitleStreamController","subtitle_stream_controller__classCallCheck","subtitle_stream_controller__possibleConstructorReturn","vttFragSNsProcessed","vttFragQueues","currentlyProcessing","currentTrackId","subtitle_stream_controller__inherits","clearVttFragQueues","onSubtitleFragProcessed","processedFragSNs","fragQueue","currentFragSN","alreadyProcessed","some","fragInQueue","alreadyInQueue","onSubtitleTracksUpdated","onSubtitleTrackSwitch","eme_controller__createClass","KeySystems","eme_controller","EMEController","eme_controller__classCallCheck","eme_controller__possibleConstructorReturn","_widevineLicenseUrl","widevineLicenseUrl","_licenseXhrSetup","licenseXhrSetup","_emeEnabled","emeEnabled","_requestMediaKeySystemAccess","requestMediaKeySystemAccessFunc","_mediaKeysList","_media","_hasSetMediaKeys","_isMediaEncrypted","_requestLicenseFailureCount","eme_controller__inherits","getLicenseServerUrl","keySystem","_attemptKeySystemAccess","audioCodecs","videoCodecs","mediaKeySystemConfigs","drmSystemOptions","baseConfig","videoCapabilities","contentType","createWidevineMediaKeySystemConfigurations","getSupportedMediaKeySystemConfigurations","requestMediaKeySystemAccess","mediaKeySystemAccess","_onMediaKeySystemAccessObtained","mediaKeysListItem","mediaKeys","mediaKeysSession","mediaKeysSessionInitialized","mediaKeySystemDomain","createMediaKeys","_onMediaKeysCreated","createSession","_onNewMediaKeySession","keySession","sessionId","_onKeySessionMessage","_requestLicense","_onMediaEncrypted","initDataType","_mediaEncryptionInitDataType","_mediaEncryptionInitData","_attemptSetMediaKeys","_generateRequestWithPreferredKeySession","keysListItem","setMediaKeys","_this6","generateRequest","_createLicenseXhr","keyMessage","_onLicenseRequestReadyStageChange","attemptsLeft","_generateLicenseRequestChallenge","challenge","_this7","hlsDefaultConfig","lowBufferWatchdogPeriod","abrController","bufferController","capLevelController","fpsController","minAutoBitrate","subtitleStreamController","subtitleTrackController","captionsTextTrack1Label","captionsTextTrack1LanguageCode","captionsTextTrack2Label","captionsTextTrack2LanguageCode","audioStreamController","audioTrackController","emeController","hls__createClass","hls__classCallCheck","hls_Hls","Hls","defaultConfig","DefaultConfig","prop","_autoLevelCapping","playListLoader","fragmentLoader","keyLoader","id3TrackController","levelController","networkControllers","Controller","coreComponents","isSupported","SourceBuffer","WebKitSourceBuffer","sourceBufferValidAPI","is_supported_isSupported","detachMedia","component","attachMedia","loadSource","location","href","controller","recoverMediaError","manualLevel","webpackBootstrapFunc","ENTRY_MODULE","quoteRegExp","getModuleDependencies","sources","queueName","retval","fnString","wrapperSignature","webpackRequireName","re","hasValuesInQueues","queues","hasValues","main","requiredModules","modulesQueue","seenModules","moduleToCheck","newModules","newModulesKeys","getRequiredModules","entryModule","blob","Blob","bare","workerUrl","webkitURL","mozURL","msURL","worker","__WEBPACK_IMPORTED_MODULE_0__demux_demuxer_inline__","__WEBPACK_IMPORTED_MODULE_2__utils_logger__","__WEBPACK_IMPORTED_MODULE_3_events__","__WEBPACK_IMPORTED_MODULE_3_events___default","transferable","stringLength","searchLength","SRC","TPL","inspectSource","safe","isLength","getRawTag","objectToString","symToStringTag","baseMerge","merge","createAssigner","srcIndex","createReactClass","isVisibleWithOffset","containmentPropType","any","instanceOf","onChange","active","partialVisibility","oneOf","delayedCall","shape","direction","scrollCheck","scrollDelay","scrollThrottle","resizeCheck","resizeDelay","resizeThrottle","intervalCheck","intervalDelay","containment","element","minTopValue","getDefaultProps","getInitialState","isVisible","visibilityRect","startWatching","stopWatching","componentWillReceiveProps","nextProps","setState","prevProps","getContainer","throttle","debounceCheck","later","check","getLastTimeout","interval","debounceEvent","debounceInfo","roundRectDown","rect","containmentRect","normalizeRect","containmentDOMRect","documentElement","hasSize","partialVisible","Children","only","baseUniq","IObject","baseClamp","resIndex","_default","baseOrderBy","baseRest","sortBy","iteratees","select","save","setRawCookie","plugToRequest","_cookie2","_objectAssign2","_isNode2","_rawCookie","_res","_isResWritable","headersSent","doNotParse","opt","cookies","cookie","cookieVal","regex","accumulator","newCookie","serialize","expressOpt","maxAge","expires","clearCookie","rawCookie","req","headers","__e","enumBugKeys","baseIsNative","getValue","assignValue","baseAssignValue","customizer","isNew","newValue","dirtyDate","getFullYear","fourthOfJanuaryOfNextYear","setFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","weekStartsOn","stringSize","_assertString","_merge","default_email_options","require_display_name","allow_display_name","display_email","splitNameAddress","display_name","_display_email","_arrayWithHoles","_arr","_e","next","_iterableToArrayLimit","_nonIterableRest","_slicedToArray","trim_quotes","display_name_without_quotes","validateDisplayName","ignore_max_length","user","lower_domain","domain_specific_validation","username","_isByteLength","_user_parts","gmailUserPart","_isFQDN","require_tld","allow_ip_domain","_isIP","noBracketdomain","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","pattern","emailUserUtf8Part","emailUserPart","user_parts","isKey","stringToPath","stubFalse","freeExports","nodeType","freeModule","Buffer","Map","WeakMap","toSource","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","baseForOwn","createBaseEach","encode","decodeHTML","ENTITY","OPENTAG","CLOSETAG","reHtmlTag","reBackslashOrAmp","ESCAPABLE","reEntityOrEscapedChar","reXmlSpecial","reXmlSpecialOrEntity","unescapeChar","replaceUnsafeChar","unescapeString","normalizeURI","escapeXml","preserve_entities","isFlattenable","depth","isStrict","findIndex","isTestEnvironment","v1","v4","uuid","upperFirst","createAggregator","groupBy","idCounter","prefix","isFrozen","freeze","seal","fun","thisValue","Func","arr2","from","_toConsumableArray","arrayForEach","unapply","arrayPop","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","addToSet","lcElement","clone","newObject","lookupGetter","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","html$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_toConsumableArray$1","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","suffix","currentScript","hasAttribute","getAttribute","policyName","html$$1","_","createDOMPurify","DOMPurify","removed","originalDocument","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","MozNamedAttrMap","Text","Comment","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","ownerDocument","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","hooks","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","transformCaseFunc","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","namespaceURI","parentTagName","Boolean","commonSvgAndHTMLElements","_forceRemove","removeChild","outerHTML","_removeAttribute","attribute","getAttributeNode","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","createDocument","innerHTML","insertBefore","createTextNode","childNodes","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","nodeName","textContent","attributes","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","allowedTags","firstElementChild","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","setAttributeNS","_sanitizeShadowDOM","shadowNode","shadowIterator","nextNode","sanitize","importedNode","oldNode","returnNode","toStaticHTML","firstChild","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","copyObject","pairs","pairSplitRegExp","dec","pair","eq_idx","tryDecode","enc","fieldContentRegExp","toUTCString","httpOnly","secure","sameSite","bitmap","px","random","def","TAG","stat","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","contentWindow","write","lt","close","Properties","castPath","toKey","symbolProto","symbolToString","baseIsNaN","strictIndexOf","baseIsArguments","objectProto","reIsUint","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","hiddenKeys","pIE","baseKeysIn","dirtyAmount","amount","fourthOfJanuary","dirtyDateLeft","dirtyDateRight","timeLeft","timeRight","overRest","setToString","canUseDOM","slidesOnLeft","slidesOnRight","siblingDirection","getTotalSlides","getPostClones","getPreClones","getTrackLeft","getTrackAnimateCSS","getTrackCSS","checkSpecKeys","getSlideCount","checkNavigable","getNavigableIndexes","swipeEnd","swipeMove","swipeStart","keyHandler","changeSlide","slideHandler","initializedState","extractObject","canGoNext","getSwipeDirection","getHeight","getWidth","lazySlidesOnRight","lazySlidesOnLeft","lazyEndIndex","lazyStartIndex","getRequiredLazySlides","getOnDemandLazySlides","safePreventDefault","_react","enumerableOnly","_objectSpread","_defineProperty","lowerBound","upperBound","_reactName","preventDefault","spec","onDemandSlides","startIndex","endIndex","slideIndex","lazyLoadedList","requiredSlides","currentSlide","centerMode","slidesToShow","centerPadding","elem","touchObject","xDist","yDist","swipeAngle","verticalSwiping","startX","curX","startY","curY","atan2","PI","canGo","infinite","slideCount","slideWidth","listNode","listRef","listWidth","trackNode","trackRef","trackWidth","centerPaddingAdj","slideHeight","querySelector","listHeight","initialSlide","rtl","slidesToLoad","autoplaying","autoplay","waitForAnimate","animating","fade","lazyLoad","slidesToScroll","useCSS","finalSlide","animationLeft","finalLeft","animationSlide","targetSlide","trackStyle","swipeLeft","indexOffset","previousInt","slideOffset","previousTargetSlide","accessibility","keyCode","swipe","draggable","dragging","touches","pageX","clientX","pageY","clientY","scrolling","swipeToSlide","edgeFriction","edgeDragged","onEdge","swiped","swiping","swipeEvent","curLeft","swipeLength","sqrt","verticalSwipeLength","positionOffset","dotCount","swipeDirection","touchSwipeLength","touchThreshold","onSwipe","minSwipe","newSlide","activeSlide","currentLeft","breakpoint","navigables","prevNavigable","centerOffset","swipedSlide","slickList","slides","querySelectorAll","slide","offsetTop","offsetLeft","dataset","keysArray","trackHeight","trackChildren","opacity","transition","WebkitTransition","useTransform","WebkitTransform","transform","msTransform","attachEvent","marginTop","marginLeft","speed","cssEase","unslick","targetLeft","variableWidth","slidesToOffset","targetSlideIndex","trackElem","baseFindKey","copyright","UNSCOPABLES","ArrayProto","ARG","T","tryGet","callee","nativeCreate","getNative","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","entry","eq","isKeyable","__data__","freeProcess","require","binding","_utils2","__mapped","__activeLink","unmount","register","unregister","getElementById","getElementsByName","getElementsByClassName","setActiveLink","link","getActiveLink","scrollTo","to","containerId","absolute","containerElement","scrollOffset","smooth","registered","scrollTop","animateTopScroll","pushHash","history","pushState","loc","pathname","getHash","filterElementInContainer","contains","compareDocumentPosition","scrollY","pageYOffset","asc","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","builtinExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","arg2","forceStringMethod","strfn","rxfn","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","baseIsEqualDeep","bitmask","stack","MapCache","setCacheAdd","setCacheHas","SetCache","add","cache","baseFor","objValue","getPrototype","overArg","invalidType","startOfDayLeft","startOfDayRight","timestampLeft","getTimezoneOffset","timestampRight","desiredMonth","dateWithDesiredMonth","daysInMonth","dateLeft","dateRight","isIndex","arrayReduce","deburr","words","reApos","isArrayIter","getIterFn","arrayLike","aLen","mapfn","mapping","iterFn","$startsWith","baseSlice","asciiToArray","unicodeToArray","reHasUnicode","strong","validate","getEntry","$endsWith","endPosition","baseValues","nativeJoin","kebabCase","createCompounder","basePickBy","getAllKeysIn","_react2","_propTypes2","_reactDom","_eventlistener","_lodash2","_lodash4","_parentScroll2","_inViewport2","LazyLoad","_Component","lazyLoadHandler","debounce","visible","_mounted","eventNode","getEventNode","_nextProps","detachListeners","_props","offsetVertical","offsetHorizontal","offsetBottom","offsetRight","_offsetAll","threshold","_offsetVertical","_offsetHorizontal","getOffset","onContentVisible","_props2","elStyles","elClasses","elementType","capitalize","camelCase","is","forbiddenField","BREAK","RETURN","SAFE_CLOSING","riter","skipClosing","$iterCreate","BUGGY","returnThis","IS_SET","methods","IteratorPrototype","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","reIsDeepProp","reIsPlainProp","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","webpackPolyfill","deprecate","nativeKeys","_scrollHash2","protoTypes","activeClass","spy","isDynamic","onClick","onSetActive","onSetInactive","ignoreCancelEvents","hashSpy","customScroller","_initialiseProps","scrollSpyContainer","getScrollSpyContainer","isMounted","mount","mapContainer","addSpyHandler","spyHandler","stateHandler","handleClick","stopPropagation","y","isInitialized","elemTopBound","elemBottomBound","containerTop","cords","offsetY","isInside","isOutside","activeLink","changeHash","_lodash","_passiveEventListeners","spyCallbacks","spySetState","scrollSpyContainers","eventHandler","eventThrottler","scrollHandler","addPassiveEventListener","currentPositionY","supportPageOffset","pageXOffset","isCSS1Compat","compatMode","addStateHandler","updateStates","eventName","supportsPassiveOption","removePassiveEventListener","scrollEvent","evtName","at","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","reCopy","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","meta","NEED","fastKey","getWeak","onFreeze","stubArray","nativeGetSymbols","getSymbols","symbol","baseAssign","baseAssignIn","cloneBuffer","copySymbols","copySymbolsIn","getAllKeys","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","keysIn","cloneableTags","isDeep","isFlat","isFull","isArr","isFunc","stacked","subValue","baseGetAllKeys","getSymbolsIn","monthIndex","sign","difference","buildDistanceInWordsLocale","buildFormatLocale","dateLeftStartOfWeek","dateRightStartOfWeek","assigner","isContainer","_type","resumeAt","entering","cur","_firstChild","_parent","NodeWalker","sourcepos","_lastChild","_prev","_sourcepos","_lastLineBlank","_open","_string_content","_literal","_listData","_info","_destination","_title","_isFenced","_fenceChar","_fenceLength","_fenceOffset","_level","_onEnter","_onExit","tight","delimiter","delim","child","unlink","prependChild","insertAfter","sibling","walker","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","comparator","isCommon","seen","outer","computed","seenIndex","arrayAggregator","baseAggregator","initializer","__export","__extends","extendStatics","__","__importDefault","mod","jwt_decode_1","universal_cookie_1","Auth_1","Logger_1","Auth","isDebug","_b","preProd","getToken","jwt","accessToken","logInfo","logError","logDebug","getAccessToken","setToken","authToken","setCookieOptions","getCookieOptions","removeToken","isUserSignedIn","isUserAnonymous","atype","getMvpdId","mvpdid","getUserId","AuthStore","NewRelic_1","nrNoticeError","logAction","nrAddPageAction","logAttribute","nrSetCustomAttribute","createRound","CAN_USE_DOM","memoized","canUsePassiveEventListeners","testPassiveEventListeners","ensureCanMutateNextEventHandlers","eventHandlers","handlers","nextHandlers","TargetEventHandlers","getEventHandlers","normalizedEventOptions","handleEvent","eventOptions","normalizeEventOptions","pauseEvent","ensureArray","undoEnsureArray","minDistance","arrayOf","orientation","handleClassName","handleActiveClassName","withBars","barClassName","pearling","disabled","snapDragDisabled","invert","onBeforeChange","onAfterChange","onSliderClick","_or","tempArray","pendingResizeTimeouts","zIndices","_trimAlignValue","sliderLength","newProps","_resize","linspace","_handleResize","_clearPendingResizeTimeouts","slider","handle","handle0","_sizeKey","sliderMax","_posMaxKey","sliderMin","_posMinKey","handleSize","sliderStart","resizeTimeout","nextTimeout","_calcOffset","_calcValue","_buildHandleStyle","willChange","zIndex","_buildBarStyle","_getClosestIndex","minDist","MAX_VALUE","closestIndex","dist","_calcOffsetFromPosition","_forceValueFromPosition","nextValue","_getMousePosition","_axisKey","_orthogonalAxisKey","_getTouchPosition","touch","_getKeyDownEventMap","_onKeyDown","_onBlur","_getMouseEventMap","_onMouseMove","_onMouseUp","_getTouchEventMap","_onTouchMove","_onTouchEnd","_createOnKeyDown","_start","_addHandlers","_createOnMouseDown","_createOnTouchStart","isScrolling","eventMap","_removeHandlers","activeEl","activeElement","handleRef","blur","hasMoved","_fireChangeEvent","prevState","startValue","_onEnd","diffPosition","_getDiffPosition","_getValueFromPosition","_move","diffMainDir","diffScrollDir","ctrlKey","shiftKey","altKey","_moveDownOneStep","_moveUpOneStep","diffValue","oldValue","valueBefore","valueAfter","_pushSucceeding","_trimSucceeding","_pushPreceding","_trimPreceding","_alignValue","_trimValue","valModStep","alignValue","_renderHandle","onMouseDown","onTouchStart","onFocus","tabIndex","role","ariaLabel","ariaValuetext","_renderHandles","renderHandle","_renderBar","offsetFrom","offsetTo","_renderBars","bars","_onSliderMouseDown","_onSliderClick","valueAtPos","handles","IS_INCLUDES","ret","getIteratorMethod","defer","port","invoke","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","queue","nextTick","port2","port1","onmessage","importScripts","un","PromiseCapability","$$resolve","TO_STRING","arrayIndexOf","funcToString","fromRight","trimmedEndIndex","reTrimStart","inherited","isArg","isBuff","isType","skipIndexes","reTrim","_smooth2","_cancelEvents2","getAnimationType","defaultEasing","requestAnimationFrameHelper","requestAnimationFrame","webkitRequestAnimationFrame","currentWindowProperties","easing","deltaTop","targetPositionY","startPositionY","progress","easedAnimate","setContainer","delayTimeout","subscribe","proceedOptions","scrollToTop","scrollToBottom","scrollHeight","scrollContainerHeight","toY","scrollMore","_utils","scrollHash","mountFlag","initialized","containers","handleHashChange","initStateFromHash","isInit","_React$Component","childBindings","domNode","registerElems","parentBindings","quot","p1","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","arrayLikeToArray","minLen","equalFunc","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","keysFunc","symbolsFunc","srcValue","baseHasIn","hasPath","hasFunc","createBaseFor","allocUnsafe","cloneArrayBuffer","typedArray","baseCreate","objectCreate","dirtyISOYear","enLocale","dirtyDateToCompare","comparison","locale","localize","localizeOptions","addSuffix","months","includeSeconds","monthsSinceStartOfYear","years","cleanDate","dateLeftStartOfHour","dateRightStartOfHour","dateLeftStartOfYear","dateRightStartOfYear","dateLeftStartOfMinute","dateRightStartOfMinute","dateLeftStartOfQuarter","dateRightStartOfQuarter","currentMonth","dateLeftStartOfSecond","dateRightStartOfSecond","dirtyMonth","assignMergeValue","baseMergeDeep","safeGet","funcProto","objectCtorString","otherArgs","baseSetToString","shortOut","initAccum","XML","HTML","decodeStrict","HTMLStrict","encodeXML","encodeHTML4","encodeHTML5","encodeHTML","decodeXML","decodeXMLStrict","decodeHTML4","decodeHTML5","decodeHTML4Strict","decodeHTML5Strict","decodeHTMLStrict","escape","rng","msCrypto","getRandomValues","rnds8","rnds","byteToHex","buf","bth","baseSortBy","compareMultiple","orders","each","unsubscribe","idx","redefineAll","$iterDefine","setSpecies","SIZE","_f","getConstructor","ADDER","_l","setStrong","$iterDetect","common","IS_WEAK","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","nested","$values","flatten","axios_1","Api","apiKey","interceptors","use","tokenConfig","Authorization","vertxNext","customSchedulerFn","asap","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isWorker","Uint8ClampedArray","useSetTimeout","globalSetTimeout","onFulfillment","onRejection","PROMISE_ID","makePromise","invokeCallback","_result","resolve$1","iterations","observe","characterData","useMutationObserver","useMessageChannel","vertx","runOnLoop","runOnContext","attemptVertx","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","objectOrFunction","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","hasCallback","succeeded","Enumerator","_instanceConstructor","_remaining","_enumerate","_eachEntry","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","enumerator","resolver","needsResolver","initializePromise","needsNew","finally","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","polyfill","local","promiseToString","cast","mergeWith","upperCase","typography","sansserif","proxima","monospace","layout","tempDesktopXLMin","tempDesktopLargeMin","desktopLargeMin","desktopMax","desktopMin","tabletMax","tabletV2Max","tabletMin","mobileMax","rem","maxPlayerWidth","maxPlayerWidthLarge","maxWidth","maxWidthLarge","sidePadding","headerHeightMobile","headerHeightTablet","headerHeightDesktop","theme","variables","white","white60","white20","black","highlight","inactive","border","baseUnset","Parser","ReactRenderer","ReactMarkdown","containerProps","renderer","ast","parserOptions","containerTagName","childBefore","childAfter","sourcePos","escapeHtml","skipHtml","softBreak","allowNode","allowedTypes","disallowedTypes","transformLinkUri","transformImageUri","unwrapDisallowed","renderers","uriTransformer","isArrayLikeObject","union","arrays","baseHas","baseIntersection","castArrayLikeObject","intersection","mapped","lowerCase","partition","isArrLike","resetWarningCache","objectOf","exact","checkPropTypes","return","u","paddingRight","fontWeight","paddingLeft","icon","paddingTop","paddingBottom","marginRight","borderRadius","xmlns","fill","fillRule","useState","disabledStyle","buttonText","onAutoLoadFinished","onRequest","onFailure","onScriptLoadFailure","clientId","cookiePolicy","loginHint","hostedDomain","autoLoad","isSignedIn","fetchBasicProfile","redirectUri","discoveryDocs","uxMode","scope","accessType","jsSrc","prompt","I","signIn","backgroundColor","alignItems","boxShadow","fontFamily","cursor","onMouseEnter","onMouseLeave","onMouseUp","getBasicProfile","getAuthResponse","googleId","getId","tokenObj","tokenId","id_token","access_token","profileObj","imageUrl","getImageUrl","email","getEmail","getName","givenName","getGivenName","familyName","getFamilyName","gapi","auth2","getAuthInstance","L","grantOfflineAccess","M","useEffect","client_id","cookie_policy","login_hint","hosted_domain","fetch_basic_profile","ux_mode","redirect_uri","access_type","currentUser","onLogoutSuccess","signOut","useCallback","disconnect","negate","_extends2","_defineProperty2","_toConsumableArray2","_classCallCheck2","_possibleConstructorReturn2","_getPrototypeOf2","_assertThisInitialized2","_createClass2","_inherits2","_propTypes","_classnames","_throttle","Scrollspy","targetItems","inViewState","isScrolledPast","_handleSpy","items","currentClassName","scrolledPastClassName","componentTag","rootEl","onUpdate","_getScrollDimension","targets","elemsInView","elemsOutView","viewStatusList","hasInViewAlready","currentContent","isInView","_isInView","isLastItem","isScrolled","_isScrolled","_isAtBottom","_fillArray","inView","outView","scrolledPast","_getScrolledPast","rootRect","winH","scrollBottom","elTop","elBottom","_this$_getScrollDimen2","hasFoundInView","elemensViewState","_getElemsViewState","currentStatuses","_update","prevStatuses","_spy","_initSpyTarget","_initFromProps","offEvent","Tag","_classNames","ChildTag","childClass","itemClass","countBy","baseReduce","withWindowSizeListener","windowSize","windowWidth","windowHeight","onResize","_listeners","DEBOUNCE_TIME","_debouncedResize","_DEBOUNCE_TIME","nativeIsFinite","baseDifference","customOmitClone","omit","macrotask","Observer","standalone","toggle","promiseCapability","nativeObjectToString","isOwn","unmasked","memoizeCapped","rePropName","reEscapeChar","quote","subString","memoize","Cache","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","reIsHostCtor","reIsNative","coreJsData","maskSrcKey","assocIndexOf","getMapData","reWhitespace","typedArrayTags","LinkElement","_temp","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","cancelEvent","ButtonElement","ElementWrapper","defaultScroller","Scroll","_React$Component2","original","gOPS","windowNames","getWindowNames","runtime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","stop","rootRecord","rval","exception","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","buggy","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","sourceKeys","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","LARGE_ARRAY_SIZE","equalArrays","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapToArray","symbolValueOf","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","isStrictComparable","hasIn","baseProperty","basePropertyDeep","previous","eachFunc","nativeKeysIn","isProto","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","dataView","reFlags","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","factories","partArgs","bound","encodeURI","default_fqdn_options","allow_trailing_dot","tld","part","allow_underscores","isIP","ipv4Maybe","blocks","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","ipv6Block","baseTimezoneOffset","dirtyInitialRangeStartDate","dirtyInitialRangeEndDate","dirtyComparedRangeStartDate","dirtyComparedRangeEndDate","initialStartTime","initialEndTime","comparedStartTime","comparedEndTime","dirtyDatesArray","timeToCompare","currentDate","distance","startOfISOWeekLeft","startOfISOWeekRight","startOfWeekLeft","startOfWeekRight","distanceInWordsLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormattingTokensRegExp","months3char","monthsFull","weekdays2char","weekdays3char","weekdaysFull","meridiemUppercase","meridiemLowercase","meridiemFull","formatters","formatterToken","rem100","ordinal","formattingTokensRegExp","commonFormatterKeys","formatterKeys","formattingTokens","mathPartial","partialMethod","dirtyStartDate","dirtyEndDate","dirtyStep","startDate","dates","addLeadingZeros","formatTimezone","removeFormattingTokens","delimeter","absOffset","targetLength","dirtyFormatStr","formatStr","localeFormatters","formatter","buildFormatFn","formatFn","thisYear","differenceInMs","dateToCompare","dirtyLeftDate","dirtyRightDate","dateLeftStartOfDay","dateRightStartOfDay","tomorrow","yesterday","dirtyDates","latestTimestamp","earliestTimestamp","dirtyDayOfMonth","dayOfMonth","dirtyDay","currentDay","dirtyDayOfYear","dirtyHours","dirtyISOWeek","isoWeek","dirtyMilliseconds","milliseconds","dirtyMinutes","dirtyQuarter","dirtySeconds","dirtyYear","isPlainObject","toPlainObject","mergeFunc","isTyped","constant","nativeNow","lastCalled","deburrLetter","reLatin","reComboMark","basePropertyOf","asciiWords","hasUnicodeWord","unicodeWords","reAsciiWord","reHasUnicodeWord","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsModifier","rsSeq","rsEmoji","reUnicodeWord","findIndexFunc","rsAstral","rsCombo","rsFitz","rsNonAstral","rsSymbol","reUnicode","baseIsRegExp","nodeIsRegExp","methodName","precision","asciiSize","unicodeSize","HtmlRenderer","XmlRenderer","InlineParser","reHtmlBlockOpen","reHtmlBlockClose","reThematicBreak","reMaybeSpecial","reNonSpace","reBulletListMarker","reOrderedListMarker","reATXHeadingMarker","reCodeFence","reClosingCodeFence","reSetextHeadingLine","reLineEnding","peek","ln","endsWithBlankLine","block","breakOutOfLists","last_list","finalize","lineNumber","tip","addLine","currentLine","addChild","canContain","column_number","newBlock","closeUnmatchedBlocks","allClosed","oldtip","lastMatchedContainer","Document","continue","acceptsLines","List","subitem","BlockQuote","indented","nextNonspace","advanceNextNonspace","advanceOffset","Item","blank","markerOffset","Heading","ThematicBreak","CodeBlock","newlinePos","firstLine","rest","HtmlBlock","_htmlBlockType","Paragraph","hasReferenceDefs","inlineParser","parseReference","refmap","blockStarts","fenceLength","blockType","heading","list_data","item_data","nextc","spacesStartCol","spacesStartOffset","bulletChar","column","blank_item","spaces_after_marker","parseListMarker","columns","charsToTab","nextNonspaceColumn","findNextNonspace","cols","incorporateLine","lastChild","all_matched","lastLineLength","matchedLeaf","starts","startsLen","lastLineBlank","cont","processInlines","lines","encodeCache","exclude","keepEscaped","nextCode","defaultChars","getEncodeCache","componentChars","decodeCache","getDecodeCache","seq","b1","b2","b3","b4","chr","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","getInverse","inverseHTML","htmlReplacer","inverse","single","multiple","re_nonASCII","re_astralSymbols","singleCharReplacer","astralReplacer","re_xmlChars","entityMap","legacyMap","xmlMap","decodeCodePoint","getStrictDecoder","getReplacer","legacy","sorter","decodeMap","codePoint","normalizeReference","fromCodePoint","ESCAPED_CHAR","IN_PARENS_NOSP","rePunctuation","reLinkTitle","reLinkDestinationBraces","reLinkDestination","reEscapable","reEntityHere","reTicks","reTicksHere","reEllipses","reDash","reEmailAutolink","reAutolink","reSpnl","reWhitespaceChar","reFinalSpace","reInitialSpace","reSpaceAtEndOfLine","reLinkLabel","reMain","subject","spnl","parseBackticks","afterOpenTicks","parseBackslash","subj","parseAutolink","dest","parseHtmlTag","scanDelims","char_before","char_after","cc_after","left_flanking","right_flanking","can_open","can_close","after_is_whitespace","after_is_punctuation","before_is_whitespace","before_is_punctuation","numdelims","startpos","handleDelim","contents","delimiters","removeDelimiter","processEmphasis","stack_bottom","opener","closer","old_closer","opener_inl","closer_inl","tempstack","use_delims","opener_found","openers_bottom","closercc","emph","literal","parseLinkTitle","parseLinkDestination","parseLinkLabel","parseOpenBracket","parseBang","parseCloseBracket","is_image","reflabel","savepos","beforelabel","destination","parseEntity","parseString","smart","enCount","emCount","repeat","parseNewline","lastc","hardbreak","rawlabel","matchChars","beforetitle","atLineEnd","normlabel","parseInline","parseInlines","$0","RangeError","stringFromCharCode","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","selfclosing","attrib","reUnsafeProtocol","reSafeDataProtocol","potentiallyUnsafe","renderNodes","info_words","tagname","grandparent","lastOut","disableTags","esc","cr","softbreak","onExit","listTight","listType","listStart","selfClosing","nodetype","indentLevel","listDelimiter","delimword","lit","xssFilters","pascalCase","typeAliases","blockquote","thematicbreak","htmlblock","htmlinline","codeblock","defaultRenderers","block_quote","linebreak","image","paragraph","thematic_break","html_block","html_inline","getCoreProps","code_block","language","coreTypes","dataPropKeys","propKey","base","nodeKey","dataAttributes","dataPropKey","normalizeTypeName","typeName","norm","coreProps","nodeProps","dangerouslySetInnerHTML","__html","actualProps","isBlock","isGrandChildOfList","react","nodeChildren","reduceChildren","flattenPosition","getNodeProps","codeInfo","codeinfo","inline","undef","linkTarget","getPosition","leaving","propOptions","prevIndex","isDocument","disallowedByConfig","disallowedByUser","isCompleteParent","childProps","defaultLinkUriFilter","decodeURI","uriInDoubleQuotedAttr","linkFilter","imageFilter","disallowed","normalized","nonEnumShadows","isHostObject","_getPrivFilters","LT","QUOT","SQUOT","AMP","NULL","SPECIAL_ATTR_VALUE_UNQUOTED_CHARS","SPECIAL_HTML_CHARS","SPECIAL_COMMENT_CHARS","SENSITIVE_HTML_ENTITIES","SENSITIVE_NAMED_REF_MAP","Tab","NewLine","colon","semi","lpar","rpar","apos","sol","comma","excl","midast","ensp","emsp","thinsp","nbsp","amp","gt","CSS_VALID_VALUE","CSS_DOUBLE_QUOTED_CHARS","CSS_SINGLE_QUOTED_CHARS","CSS_BLACKLIST","CSS_UNQUOTED_URL","URL_IPV6","URI_BLACKLIST_PROTOCOLS","URI_PROTOCOL_COLON","URI_PROTOCOL_WHITESPACES","URI_PROTOCOL_NAMED_REF_MAP","strReplace","getProtocol","htmlDecode","namedRefMap","reNamedRef","skipReplacement","num","named","named1","frCoPt","cssEncode","cssBlacklist","cssUrl","protocol","yufull","yup","ya","yd","yc","yavd","yavs","yavu","yu","yuc","yubl","yublf","yceu","yced","yces","yceuu","yceud","yceus","privFilters","_privFilters","uriInAttr","yav","inHTMLData","inHTMLComment","inSingleQuotedAttr","inDoubleQuotedAttr","inUnQuotedAttr","uriInSingleQuotedAttr","uriInUnQuotedAttr","uriInHTMLData","uriInHTMLComment","uriPathInSingleQuotedAttr","uriPathInDoubleQuotedAttr","uriPathInUnQuotedAttr","uriPathInHTMLData","uriPathInHTMLComment","uriQueryInSingleQuotedAttr","uriQueryInDoubleQuotedAttr","uriQueryInUnQuotedAttr","uriQueryInHTMLData","uriQueryInHTMLComment","uriComponentInSingleQuotedAttr","uriComponentInDoubleQuotedAttr","uriComponentInUnQuotedAttr","uriComponentInHTMLData","uriComponentInHTMLComment","uriFragmentInSingleQuotedAttr","uriFragmentInDoubleQuotedAttr","uriFragmentInUnQuotedAttr","uriFragmentInHTMLData","uriFragmentInHTMLComment","spreadableSymbol","isConcatSpreadable","truncationHTMLContainer","win","splitOnChars","animate","truncationHTML","sty","originalText","supportsNativeClamp","clampValue","isCSSValue","computeStyle","pseudo","currentStyle","getMaxLines","availHeight","lineHeight","getLineHeight","lh","chunks","lastChunk","clampedText","clmp","splitChar","getLastChild","nodeValue","COMMENT_NODE","previousSibling","applyEllipsis","textOverflow","webkitBoxOrient","webkitLineClamp","truncate","maxHeight","bytesToUuid","_seedBytes","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","msecs","nsecs","dt","tl","tmh","ii","caches","maxLength","createCaseFirst","comparer","compareAscending","objCriteria","criteria","othCriteria","ordersLength","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","_innerSlider","_json2mq","_defaultProps","_innerSliderUtils","enquire","Slider","innerSlider","slickPrev","slickNext","dontAnimate","slickGoTo","autoPlay","_responsiveMediaHandlers","responsive","breakpoints","breakpt","bQuery","minWidth","resp","toArray","slidesPerRow","newChildren","currentWidth","InnerSlider","innerSliderRefHandler","_initialState","_track","_dots","_arrows","_resizeObserverPolyfill","_objectWithoutProperties","_objectWithoutPropertiesLoose","adaptiveHeight","onInit","onLazyLoad","updateState","adaptHeight","lazyLoadTimer","progressiveLazyLoad","ro","onWindowResized","callbackTimers","onfocus","pauseOnFocus","onSlideFocus","onblur","onSlideBlur","animationEndCallback","detachEvent","autoplayTimer","checkImagesLoad","onReInit","setTrackStyle","didPropsChange","debouncedResize","resizeWindow","isTrackMounted","updatedState","_trackWidth","_trackLeft","childrenWidths","preClones","postClones","_trackStyle","childrenCount","trackLeft","images","imagesCount","loadedCount","onclick","prevClickHandler","focus","onLazyLoadError","_index","asNavFor","beforeChange","afterChange","_slideHandler","asNavForIndex","firstBatch","focusOnSelect","nodes","clickable","dir","ontouchmove","returnValue","disableBodyScroll","triggerSlideHandler","enableBodyScroll","nextIndex","playType","autoplaySpeed","pauseType","dots","prevArrow","nextArrow","trackProps","pauseOnHover","onTrackOver","onTrackLeave","onMouseOver","selectHandler","dotProps","pauseOnDotsHover","clickHandler","onDotsLeave","onDotsOver","Dots","arrowProps","arrows","PrevArrow","NextArrow","verticalHeightStyle","centerPaddingStyle","listStyle","touchMove","listProps","onMouseMove","onTouchMove","onTouchEnd","touchEnd","onTouchCancel","onKeyDown","innerSliderProps","listRefHandler","Track","trackRefHandler","ssrState","ssrInit","_Object$keys","currentDirection","getSlideClasses","slickActive","slickCenter","slickCloned","getKey","fallbackKey","renderSlides","preCloneSlides","postCloneSlides","childOnClickOptions","childStyle","getSlideStyle","slideClass","slideClasses","outline","preCloneNo","mouseEvents","_rightBound","rightBound","_leftBound","leftBound","dotOptions","customPaging","appendDots","dotsClass","prevClasses","prevHandler","prevArrowProps","customProps","_React$PureComponent2","_super2","nextClasses","nextHandler","nextArrowProps","MapShim","getIndex","class_1","__entries__","delete","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","timeoutCallback","timeStamp","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","subtree","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","camel2hyphen","obj2mq","mq","features","feature","isDimension","MediaQueryDispatch","MediaQuery","Util","matchMedia","queries","browserIsIncapable","shouldDegrade","isUnconditional","addHandler","removeHandler","QueryHandler","mql","assess","constuctor","qh","action","deferSetup","setup","initialised","unmatch","_reactDom2","updateContext","containerNode","containerOffset","distanceFromBottom","getDistanceFromBottom","recomputeState","isSticky","xOffset","getXOffset","hasChanged","onStickyStateChange","refs","placeholder","fromTop","getDistanceFromTop","fromBottom","topBreakpoint","bottomBreakpoint","evt","newState","propNames","placeholderStyle","_stickyStyle","bottomLimit","stickyClassName","stickyStyle","contextTypes","Container","updateOffset","parentChannel","childContextTypes","$assign","K","offsetDir","offsetVal","standard","fallback","useCapture","HTMLElement","inViewport","customOffset","offsetParent","isHidden","containerPosition","_getElementPosition2","elementPosition","_getElementPosition","setupDefaultValues","muted","startPlayback","elementCallback","_elementCallback","playResult","timeoutId","sendOutput","srcObject","playError","isEntries","InfiniteScroll","scrollListener","eventListenerOptions","mousewheelListener","pageLoaded","pageStart","attachScrollListener","isReverse","loadMore","parentElement","getParentElement","scrollComponent","beforeScrollHeight","beforeScrollTop","detachScrollListener","detachMousewheelListener","testOptions","isPassiveSupported","defaultLoader","scrollEl","useWindow","scrollParent","getScrollParent","hasMore","initialLoad","deltaY","calculateTopPosition","renderProps","filterProps","childrenArray","IntersectionObserverEntry","intersectionRatio","registry","crossOriginUpdater","crossOriginRect","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","_checkForIntersections","_resetCrossOriginUpdater","_observationTargets","_registerInstance","_monitorIntersections","_unmonitorIntersections","_unregisterInstance","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","_initThresholds","opt_threshold","_parseRootMargin","opt_rootMargin","margins","margin","_monitoringDocuments","monitoringInterval","domObserver","addEvent","_monitoringUnsubscribes","removeEvent","getFrameElement","rootDoc","itemDoc","unsubscribes","rootIsInDom","_rootIsInDom","_getRootRect","targetRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","newEntry","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","atRoot","parentRect","parentComputedStyle","frameRect","frameIntersect","computeRectIntersection","_expandRectByRootMargin","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","targetArea","intersectionArea","opt_options","rootMargin","opt_useCapture","detatchEvent","rect1","rect2","parentBoundingRect","parentIntersectionRect","host","assignedSlot","frameElement","base64_url_decode","InvalidTokenError","atob","b64DecodeUnicode","InvalidCharacterError","bs","bc","hostname","getCookieDomain","tokenExpiration","getTokenExpiration","getCookiePath","__assign","isNrAvailable","newrelic","nrAddRelease","addRelease","addPageAction","nrAddToTrace","addToTrace","noticeError","setCustomAttribute","nrSetPageViewName","setPageViewName","core_1","Actions_1","Redfast","createActions","FoxRedfast","RedfastActions","Evergent_1","apiUrl","Evergent","applyCoupon","couponCode","upgradeSubscription","planId","promotionId","getPaymentMethods","hasPaymentMethods","paymentmethodInfo","changeService","Api_1","PaymentMethods_1","api","profileId","GetPaymentMethodsRequestMessage","channelPartnerID","cpCustomerID","post","resolveResponse","parsePaymentMethods","shippingAddress","ChangeServiceRequestMessage","changeType","newServiceID","parameters","paramName","paramValue","ApplyCouponCodeRequestMessage","responseKey","responseCode","failureMessage","errorMessage","PAYMENT_METHODS","CARD","PAYPAL","APPLE","PAYMENT_METHODS_LABELS","parsePaymentMethodByLabel","cardInfo","CardInfoMessage","cardInfoMsg","paymentMethodId","getCardPaymentMethod","paypalInfo","PayPalAccountMessage","paypalAccountMsg","getPaypalPaymentMethod","appleInfo","ApplePayInfoMessage","getApplePaymentMethod","PaymentMethods","labels","paymentMethods","isAutoPayment","valuesLength","valuesIndex","createThunkMiddleware","extraArgument","thunk","withExtraArgument","Icon","ariaHidden","viewBox","classes","classNames","Style","preserveAspectRatio","data-testid","aria-label","aria-hidden","focusable","igStyle","stroke","strokeWidth","strokeLinecap","points","cx","cy","filterUnits","dy","in","stdDeviation","strokeLinejoin","fillOpacity","clipRule","ry","clipPath","renderGraphic","Brands","EventTypes","Vendors","ComscoreClientIds","CookieValues","LocalStorage","FoxProfileEvents","NewRelicErrors","NewRelicEvents","OptimizelyPlayerTypes","PageEvents","PageNames","SegmentActionLocations","SegmentBannerTypes","SegmentEventTypes","SegmentPageActionTypes","SegmentPageProfileTypes","SegmentPageStartSources","SegmentPlayerContextStrings","SegmentPlayerStates","SegmentProfileIdCookies","SegmentReferrerProps","SegmentSources","SegmentUiElements","SegmentVideoEventStrings","TealiumEventPrefixes","TealiumOnboardingActions","TealiumRedesignEvents","OptimizelyNotificationTypes","OptimizelyUserAttributes","OptimizelyAuthState","TrackEvents","EventVendorMap","ACCOUNT_UPDATE_PASSWORD_LANDING","SEGMENT","ADDED_FAVORITES","AUTHENTICATION_COMPLETED","AUTHENTICATION_STARTED","AUTHENTICATON_SELECT_PROVIDER_COMPLETED","AUTHENTICATON_SELECT_PROVIDER_ERROR","AUTHENTICATON_SELECT_PROVIDER_STARTED","AUTHETNTICATION_LOGGED_OUT","BANNER_CLICKED","BANNER_NOTIFICATION_ACTION","BANNER_NOTIFICATION_IMPRESSION","BROWSE_ITEM_SELECTED","TEALIUM","BUTTON_LINK_SELECTED","CAST_LANDING","CCPA_PAGE_LANDING","CHANNEL_PAGE_LANDING","COLLECTION_ITEMS_AVAILABLE","COLLECTION_ITEMS_RENDERED","CONTINUE_WATCHING_WIDGET","DETAILS_PAGE_PLAYLIST_LANDING","DETAIL_PAGE_DEFAULT_STATE","DETAIL_PAGE_MENU_ITEM_VIEW","EMAIL_ROADBLOCK_IMPRESSION","EMAIL_ROADBLOCK_SUBMIT","EMAIL_ROADBLOCK_BYPASS","EMAIL_ROADBLOCK_ABANDON","END_CARD_ITEM_SELECTED","EVENT_END_CARD_IMPRESSION","EXPERIMENT_VIEWED","EXPOSURE","FB_LINKING_COMPLETED","FB_LINKING_STARTED","FB_PASSWORD_CREATION_COMPLETED","FB_PASSWORD_CREATION_STARTED","FB_SIGN_IN_COMPLETED","FB_SIGN_IN_STARTED","FB_SIGN_UP_COMPLETED","FB_SIGN_UP_STARTED","FIND_SECTION_SEARCH","FOOTER_LINK_CLICKED","GLOBAL_NAV_CLICKED","HEADER_LINK_CLICKED","HERO_ITEM_SELECT_ACTION","IDLE_PROMPT","IDLE_PROMPT_ACTION","LIVE_TV_BUTTON_ACTION","LIVE_TV_EPG_CELL_TAPPED","LIVE_TV_EPG_DETAIL_EXPAND","LOCAL_SECTION_LANDING","MENU_ITEM_SELECTED","MODAL_CLOSED","PLAYER_LANDING","PLAYER_SCREEN_LAYOUT_CHANGED","OPTIMIZELY","PLAYLIST_BUTTON_ACTION","PREVIEW_PASS_EXPIRED","PRIVACY_POLICY_PAGE_VIEW","PRIVIEW_PASS_STARTED","PROFILE_APPLE_ID_LINK_COMPLETED","PROFILE_APPLE_ID_LINK_STARTED","PROFILE_APPLE_ID_SIGNUP_COMPLETED","PROFILE_APPLE_ID_SIGNUP_STARTED","PROFILE_GOOGLE_LINK_COMPLETED","PROFILE_GOOGLE_LINK_STARTED","PROFILE_INITIATED","PROFILE_LOGGED_OUT","PROFILE_PROMPT","PROFILE_PROMPT_LANDING","PROFILE_SCREEN_BACKED_OUT","PROFILE_SIGNIN_COMPLETED","PROFILE_SIGNUP_COMPLETED","PROFILE_SIGNUP_STATRED","PROFILE_SIGN_IN_ERROR","PROFILE_SIGN_IN_FORGOT_PASSWORD","PROFILE_SIGN_IN_LANDING","PROFILE_SIGN_IN_STARTED","PROFILE_SIGN_OUT","PROFILE_SIGN_OUT_STARTED","PROFILE_SIGN_UP_ERROR","PROFILE_SIGN_UP_LANDING","PROFILE_UPSELL_PRESENTED","PURCHASE_CTA_CLICKED","REMOVED_FAVORITES","ROADBLOCK_LANDING","SEARCH_APPLIED_FILTER","SEARCH_COMPLETED","SEARCH_RESULT_SELECTED","SEARCH_STARTED","SETTINGS_SECTION_LANDING","SHOP_NOW_BUTTON_CLICKED","TOP_LEVEL_SECTION_LANDING","UPGRADE_NOW_BUTTON_CLICKED","EventTypeMap","PAGE","TRACK","SegmentEventStrings","TealiumEventStrings","__awaiter","_arguments","fulfilled","rejected","__generator","trys","ops","verb","op","__read","ar","ALL_COLLECTIONS","CHANNEL","COLLECTION_ENTERTAINMENT","COLLECTION_HOME","COLLECTION_LISTEN","COLLECTION_LIVE_TV","COLLECTION_LOCAL","COLLECTION_MOVIES","COLLECTION_NEWS","COLLECTION_PERSONALITIES","COLLECTION_SHOWS","COLLECTION_SPORTS","DETAIL","FAVORITES_DETAIL","FAVORITES_LIVE","FOOTER","FX_CONFIRM_SUB","FX_MARKETING","FX_MVPD_NO_SUPPORT","HOME","HOME_COLLECTIONS","LIVE","LIVE_SCHEDULE","MOVIES","NETWORK_DETAIL","NEWS","PLAYER","PLAYER_COLLECTION","PLAYER_DETAIL","PLAYER_GENERAL","PROFILE_SIGN_IN","PROFILE_SIGN_UP","SETTINGS","SIGN_IN","SHOWS","COLLECTION_IMPRESSION","COLLECTION_ITEM_SELECT","HERO_ITEM_SELECT","ONBOARDING_START","ON_FAVORITE","ON_UNFAVORITE","PERKS_PRESENTED","PLAYER_IDLE_PROMPT","PLAYER_IDLE_PROMPT_CONFIRM","PREVIEW_PASS_STARTED","SCHEDULE_RESTART","SCHEDULE_WATCH_LIVE","SIGN_IN_COMPLETED","SIGN_IN_ERROR","SIGN_IN_FORGOT_PASSWORD_STARTED","SIGN_IN_INCOMPLETE","SIGN_IN_STARTED","SIGN_OUT_COMPLETED","SIGN_UP_COMPLETED","SIGN_UP_ERROR","SIGN_UP_INCOMPLETE","SIGN_UP_STARTED","eventPageTypes","SOURCE_IS_SHOW","PATH_GLOBAL","callContextEvent","network","sFallback","s_analytics","networkMappingConfig","ExternalConfig","epgNetworkLogoMapping","livestreamNetwork","contextData","linkTrackVars","IEcustomEventPolyfill","lclEvent","lclParams","bubbles","cancelable","initCustomEvent","callEvent","_g","_m","_o","_p","isTrackingEnabled","isTrackingEnabledForEvent","user_xid","DataLayer","getLocalStorage","last_anonymous_profile_id","getLastAnonymousProfileId","app_build","app_name","analytics","app_platform","app_version","primary_business_unit","secondary_business_unit","brand","businessUnit","eventPayload","CustomEvent","callPageView","account","footerType","isFounders","isFreemium","networkEntitlementList","pageName","pageTitle","detailType","pageType","panelExperimentData","provider","seriesType","useUtagGlobal","providerCookie","cookieProviderName","collectionType","collectionTitleFallback","collectionTitle","pTitle","cLength","eventPageType","cType","videoIdx","videoSeriesType","sport","matchup","homeTeam","awayTeam","sportsData","cTitle","eventPageName","favData","defaultProviderName","providerName","mvpd","isAuthenticated","authenticatedText","optimizelyExperimentData","experimentData","preauthorizedResources","formattedEntitlements","noEntitlementsString","userEntitlements","entitlementOverride","storagePageName","storagePageType","localStoragePageProps","page_name","page_type","utagData","pageName_1","callSign","favData_1","eventData","_q","_r","_u","_y","_z","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","_10","_11","_12","_13","_14","_15","_16","_17","_18","_19","_20","_21","_22","_23","_24","_25","_26","_27","getCookie","enums","MVPD_COOKIE","getMVPD","headline","collectionLength","member","totalItems","BUSINESS_UNIT","selectedItem","sportTag","home_team","away_team","getSportsFeatures","getEventPageName","getFavoritesData","adobePassId","isPreviewPass","getOptimizelyExperimentData","experiments","experimentString","deeplySetProperty","isNation","referrer","setLocalStorage","cleanObject","authentication_state","business_unit","collection_length","collection_title","collection_type","dcg_profile_id","favorites_content_length","favorites_content_list","network_entitlement_list","platform_version","BUILD_VERSION","testname","optimizely","pageTestName","entitlement_list","is_founders","utag_data","recursiveMerge","utag","firstEvent","isTealiumLoaded","tealium_event","scriptLoaded","call_sign","fireRedesignEvent","setProfileId","getCurrentBrand","headerLogo","getDetailTabData","seriesData","tab","hasParts","getDetailTabName","selectedMenuItem","PAGE_NAME_PREFIX","getFavoritesProps","getFavorites","getLiveAnalyticsEvents","tealiumEvents","getLiveEvents","executeEvent","activeCampaigns","getOptimizelyState","getExperimentStates","getOptimizelyActiveCampaigns","campaigns","campaign","isInExperimentHoldback","segmentCampaignData","experimentName","variationName","variation","testName","setSegmentOptimizelyData","getOptimizely","getPlayerAnalyticsEvents","getPlayerEvents","getRedesignHomeItemParams","collectionCount","containerTitle","horizontalPosition","playlistLength","subtitle","verticalPosition","volume","item_type","item_state","item_container_title","item_vertical_position","item_horizontal_position","item_title","item_subtitle","item_cc","item_volume","playlist_length","collection_count","getRedesignEvents","defaultData","visibleCollections","list3","getRedesignListVarString","collectionData","tealiumTileType","isUpcomingContent","isContentLive","isVideoTile","getRedesignCollectionTileType","getRedesignIndividualListVar","tileType","visibleCollectionItems","listVar","formatNames","currentActiveCollections","tileTitle","seriesName","visibleCollectionItem","collectionPosition","itemPosition","itemTitle","tileItemType","getSourceAuth","getSourceCollectionGlobal","SOURCE_COLLECTION","getSearchResultString","genreFilterName","itemIsLive","originalItem","selectedTabName","titleText","isPersonality","categoryType","liveShow","itemType","getSourceShow","isSourceShow","handleButtonAction","action_type","program_info","checkForUtagData","withoutTveEventsToDisable","TEALIUM_EVENT_PREFIX","isTveEnabled","setProfileStartSource","setSourceAuth","setSourceCollectionGlobal","setUtagPagePropsCallback","__rest","COLLECTION","COLLECTION_CTA_PAGE_VIEW","LIVE_LOC_REQ_PAGE_VIEW","TV_PROVIDER_SIGN_OUT_PAGE_VIEW","CONTINUOUS_PLAY","DEEPLINK","ENDCARD","FIND","MOVIE_DETAIL","SERIES_DETAIL","VOD_SECTION","FAT","MARKETING_VIDEO","SKINNY","NONE","POSITION","MVPDINCOMPLETE","PP_EXPIRATION","PP_SIGNIN","AUTH_SUCCESS_EVENT","TV_PROVIDER_FEAT_LIST","secondaryBusinessUnit","appName","appPlatform","defaultCampaignValues","campaign_tracking_code","campaign_organization","campaign_marketing_channel","campaign_source","campaign_name","campaign_additional","campaign_agency","defaultGlobalPageProperties","page_login_state","defaultVideoProperties","session_id","total_length","livestream","asset_id","pod_id","season","episode","program","content_asset_id","content_pod_id","content_pod_ids","video_asset_title","video_external_id","video_genre","video_is_livestream","video_player_state","video_player_content_type","video_asset_id","video_primary_business_unit","video_secondary_business_unit","video_fox_profile","video_content_length","video_content_type","video_content_length_format","video_station_id","video_network","video_sports_type","video_seconds_viewed","referrerPageMap","PAGE_NAME_CONTINUOUS_PLAY","PAGE_NAME_DEEPLINK","PAGE_NAME_ENDCARD","PAGE_NAME_HOME","PAGE_NAME_MOVIES","PAGE_NAME_NETWORK_DETAIL","PAGE_NAME_PLAYER","PAGE_NAME_SHOWS","PAGE_NAME_VOD_SECTION","callPlayerEvent","trackingProps","getDefaultEventProps","campaignTraits","getCampaignValues","mergedProps","eventType","TRACK_EVENT","fireCallbackWhenReady","analyticsLoaded","checkIfAnalyticsLoaded","ajs_anonymous_id","identified","secondScreenFlow","getContextTraits","page_collection_title","activationProps","getQueryParameter","getActivationProps","setSecondsScreenProfileCookie","omitProperties","cleanedProps","fireEvent","generatePageName","getAnonymousId","anonymousId","getAuthTrackEvents","MVPDEvents","getMVPDEvents","authenticationSelectProviderCompleted","authenticationCompleted","getBannerDimensions","bannerType","isMobile","getEndcardDetails","seasonNumber","episodeNumber","seasonNumFormat","getBannerType","panel","promoType","PROMO_TYPE_MARKETING_VIDEO","imageName","dimensions","getBannerTypeByRef","getDataLayerCampaignCodes","getSegmentContentUidString","showCode","uID","getContextBanners","banners","campaignCodes","parseQueryUrl","validMvpd","lastAnonymousProfileId","lastKnownProfileId","getLastKnownProfileId","dcgAccountData","getAccount","dcgProfileId","privacyCookie","appsflyer_id","entitlements","getEntitlements","excludePreviewPass","isSignedIntoProfile","us_privacy","purchase_source","getPurchaseSource","traits","device","getDeviceIdCookie","page","Optimizely","userId","bannerData","argsPageType","currentPageType","windowPropsPageType","argsPageName","currentPageName","page_content_title","pageLoginState","getPageLoginState","amplitude","pageContentPersonality","contentPersonality","pageBannerCount","pageBannerList","acc","banner","lastItem","bannerHeadline","bannerName","ctaText","favoritesData","getPageContentLevels","getTimePartingInfo","page_test_name","page_content_personality","page_banner_count","page_banner_list","page_is_dark_mode","isSeriesDetail","isMovieDetail","authCookie","sortEntitlements","getFavoritesEvents","generateFavoriteProps","actionLocation","favoritesProps","showID","page_action_location","page_item_title","page_favorite_type","page_favorite_update","addFavorite","handleAnalytics","removeFavorite","pageActivationCode","secondScreenAnonId","LAST_KNOWN_ANONYMOUS","accountCookie","LAST_KNOWN","getLivePageName","previousPath","authenticationStarted","mvpdProps","previewPassStarted","mvpdPreviewPassExpired","authenticationSelectProviderStarted","authenticationSelectProviderError","page_error_description","page_error_type","page_action_type","actionType","authenticationLoggedOut","splitPageLevels","page_content_level_1","page_content_level_2","page_content_level_3","page_content_level_4","getPageReferrerDataFromStorage","pageReferrerData","getSessionStorage","getPageStartSource","authStartSource","GENERAL","getReferrer","prevSegmentReferrer","noneReferrer","referrerDataFromStorage","getReferrerDataFromStorage","getPodId","chapter","referrerData","isDetailFindReferrer","isFind","getDetailFindReferrer","isDetailSearchReferrer","isSearch","getDetailSearchReferrer","isDetailCollectionReferrer","getDetailCollectionReferrer","isDetailDetailReferrer","getDetailDetailReferrer","isDetailLiveReferrer","getDetailLiveReferrer","isContinuousPlayReferrer","isContinuousPlay","getContinuousPlayReferrer","isDeeplinkReferrer","getDeeplinkReferrer","isEndcardReferrer","isEndcard","getEndcardReferrer","isHomeReferrer","getHomeReferrer","isVodSectionReferrer","isVodSection","getVodSectionReferrer","referrerDataLocation","referrerName","getSegmentModelMetadata","page_recs_configuration_id","modelMetadata","configurationId","page_recs_result_set_id","resultSetId","page_recs_source_id","sourceId","getSegmentPageCollectionIdList","contentUids","itemStr","getSegmentOptimizelyData","optimizelySegmentStorage","getSourceName","contextHome","home","sourceName","sourceHome","homeData","AUTOPLAY","END_SLATE","concatSourceNameData","getSourceType","epg","endslate","homeUrl","vodThumbnails","isHome","isDeeplink","handleSegmentAnalytics","featureFlag","favoritesContentList","favoritesContentLength","pageCollectionLength","pageCollectionTitle","pageCollectionType","page_collection_length","page_collection_type","PAGE_EVENT","callPageEvent","setContentPersonality","personality","previewPassExpired","previewPassSignIn","MVPDIncomplete","setPageStartSource","testData","getSegmentOptimizelyString","removeUndefinedString","campaignName","queryString","campaignCookie","preProdCookie","prodCookie","getCampaignCookieInfo","intPrefix","propertyNames","cmpid","fullQuery","includesCmpid","segmentCampaign","sessionStorage","campaignString","codes","keyValuesPair","setSessionStorage","campaignInfo","setDataLayerCampaignCodes","removeCampaignCookieInfo","removeCookie","removeUserIdCookie","segmentReadyCallback","dataLayer","pushProfileIdsToGoogleDataLayer","setContextSourceLive","setRestartedPlaybackGlobal","RESTARTED_PLAYBACK","dateToIncrement","setCookie","localeCompare","__spreadArray","il","FP_SIGNED_OUT","FP_SIGN_IN_ATTEMPTED","FP_SIGN_IN_COMPLETED","FP_SIGN_OUT_ATTEMPTED","FP_SIGN_UP_ATTEMPTED","FP_SIGN_UP_COMPLETED","CHANGE_PASSWORD_PAGE_VIEW","KNOWN_PROFILE_PAGE_VIEW","PARENTAL_CONTROLS_SETTINGS_PAGE_VIEW","COLLECTION_PRIMETIME","PROFILE_MARKETING_OPT_IN_CHANGED","SIGN_OUT_STARTED","BUILD_VERSION_UNIT","homeTabPageNames","entertainment","featured","listen","movies","news","personalities","primetime","shows","sports","checkRecommendationIdOnClick","currentRecIdData","nextRecIdData","setRecommendationId","currentRecId","recommendationId","nextRecId","newObj","initialValue","createProviderHook","createSelectorHook","createClearHook","createFunctionContext","documentTitle","pathName","getObjectPropertyByStringPath","addresses","address","setPropertyAtStringPath","pathString","e_1","concatenatedAddress","isLastAddress","e_1_1","getAccountAnalyticsEvents","foxProfileState","utagAccountSource","profile_start_source","onboarding_start_source","onboarding_action","COMPLETE","favorites_location","profile_type","onboardingAction","newsLetter","newsletter_opt_in","seriesId","objects","coerceToNumber","byMerger","typeSafeKey","page_profile_activation_method","page_activation_code","page_start_source","getAdjacentCollectionAbove","panels","getCollectionCount","hiddenPanels","getVisibleCollections","getCollectionPosition","getFavoritesListString","favorites","favorite","favoriteID","favoriteType","favs","favorites_personalities_list","getPersonalitiesListString","favorites_personalities_length","fav","getPreviewPassAnalyticsEvents","previewPassLength","buildVersion","preview_pass_length","preview_pass_start_source","PAUSE","videoPlaybackInterrupted","getRecommendationId","recIdData","getRecommendationIdDataForItem","videoObject","trackingData","properties","hour","getUTCHours","minute","getUTCMinutes","page_timePartingDay","page_timePartingHour","panelTypes","hiddenPanelsArr","collectionCTA","panelType","handleVendorAnalytics","tealiumPayload","tags","handleOptimizelyAnalytics","handleTealiumAnalytics","e_2","_loop_1","event_1","events_1","events_1_1","e_2_1","entitlementCookieName","mountSessionCam","setPageReferrerToStorage","setPageReferrerData","setBlockReferrerAnalyticsTracking","blockReferrerAnalyticsTracking","setOptimizelyCollectionViewedEvent","featuredTitle","panelId","viewId","collectionsViewed","sessionStorage_1","page_collection_vertical_position","page_url","segment_anonymousId","page_title","setPagePropsStorage","trackPageReferrerAnalytics","cancelSetTrackedAnalyticsReferrer","ignoreTrackedAnalyticsReferrer","trackedAnalyticsReferrer","updateNielsenOTTStatus","castData","OTTEnv","NOLBUNDLE","ottStatus","ottType","ottDevice","ottDeviceName","ottDeviceID","ottDeviceManufacturer","ottDeviceModel","ottDeviceVersion","ggPM","cookieFactory","getCookieFactoryLabels","setCookieFactory","removeValue","setValue","fireTag","gtag","isLongForm","mediaInfo","podId","releaseType","programType","videoId","longForm","brandTags","FOX","LONGFORM","allow_custom_scripts","u8","u9","u10","u11","u12","u13","u14","send_to","LONGFORM_UNIQUE","SHORTFORM","VIDEO_UNIQUE","NATION","u2","u3","u7","FOXNEWS","getTags","LogReport","datadogRum","anonymousAccount","getAnonymousAccount","authentication_status","dma","event_type","profile_id","setGlobalContext","reportError","customAttributes","errorServerResponse","addError","reportErrorInPlayer","logEvent","addAction","logPlayerEvent","playerProps","device_id","getNewRelicPageName","routeParams","showId","movieId","articleId","channelName","newRelicEvent","playerNewRelicEvent","midNightTonightTime","msToDate","msValue","stringToDate","days","_addDays","_addSeconds","_addMinutes","_addHours","dateOne","dateTwo","_isSameSecond","_isSameDay","_isBefore","_isAfter","isBetween","_isWithinRange","_differenceInMilliseconds","_endOfDay","getTimestamp","_getTime","_getDayOfYear","_getMinutes","_getHours","guessTZ","Intl","_parse","_startOfDay","_setMinutes","_setHours","setDateAndTime","formatToTwoDigitsString","getMonthAndDay","tonight7PMTime","selectedDate","_subMinutes","_subHours","dateDiff","_distanceInWordsStrict","mapObj","second","calculateTimeDistance","_format","getTimeZoneAbbr","timeZone","timeZoneName","formatToAPIRange","formatToTwoDigitsTimezone","tz","abbrs","AST","EST","EDT","CST","CDT","MST","MDT","PST","PDT","AKST","AKDT","HST","HAST","HADT","SST","SDT","CHST","getPrimetimeDateRange","DEFAULT_SIGNUP_STATE","signupFirstName","signupLastName","signupEmail","signupPassword","signupFirstNameError","signupLastNameError","signupFullNameError","signupPasswordError","signupTermsError","signupEmailError","signupEmailExistsError","signupSocialEmailExistsError","signupGenericError","facebookGenericError","signupBirthdate","signupBirthdateIsoFormat","signupGenderDropdownOpen","signupGender","signupGenderVisualName","signupGenderError","signupBirthdateError","signupBirthdatePlaceholder","signupAgeError","signupBirthdateInvalidError","DEFAULT_SIGNIN_STATE","signinEmail","signinPassword","signinGenericError","signinEmailError","signinPasswordError","signinMigrationDropdownOpen","DEFAULT_CHANGE_PASSWORD_STATE","changePasswordPassword","changePasswordNewPassword","changePasswordShowPassword","changePasswordShowNewPassword","changePasswordGenericError","changePasswordPasswordError","changePasswordNewPasswordError","DEFAULT_CREATE_PASSWORD_STATE","createPasswordNewPassword","createPasswordShowNewPassword","createPasswordGenericError","createPasswordNewPasswordError","DEFAULT_LINK_ACCOUNT_STATE","DEFAULT_FACEBOOK_PASSWORD_LINKING_STATE","facebookPasswordLinkShowPassword","facebookPasswordLinkPassword","facebookPasswordLinkGenericError","facebookPasswordLinkPasswordError","DEFAULT_PARENTAL_CONTROLS_STATE","parentalControlsPasswordVerified","parentalControlsPassword","parentalControlsShowPassword","parentalControlsPasswordError","parentalControlsNewTvRatingIndex","parentalControlsNewMovieRatingIndex","DEFAULT_OVERLAY_STATE","showPerks","showSignin","showSignup","showSignupSuccess","showAccountMain","showForgotPassword","showForgotPasswordSuccess","showSignOut","showDeleteAccount","showEditProfile","showEditAccount","showChangePassword","showCreatePassword","showManageFavorites","showResetPassword","showResetPasswordSuccess","showForgotPasswordLanding","showFacebookLinking","showFacebookPasswordLink","showFacebookLoginPasswordLink","showLinkAccount","showParentalControls","entryOverlay","showFXPlus","DEFAULT_STATE","logoutInProcess","logoutTimedOut","editEmail","editEmailError","editFirstName","editFirstNameError","editGenericError","editLastName","editLastNameError","forgotPasswordError","genericForgotPasswordError","facebookLinkingGenericError","facebookLinkingPasswordError","facebookLinkingEmailError","facebookLinkingEmail","facebookLinkingPassword","facebookLinkingShowPassword","onCloseResetToBasePath","passwordErrors","isValidPassword","isValidEmail","isEmail","onEnterKeyPress","convertTimestamp","unixTimestamp","saveCookie","cookieName","getAccountCookie","getAnonymousAccountCookie","setAnonymousAccountCookie","setAccountCookie","removeAccountCookie","removeAnonymousAccountCookie","handleError","routeRequired","route","errorCode","statusCode","is404Error","profile","password","facebookToken","appleToken","googleToken","isGoogleSignIn","isGoogleOneTap","googleBody","additionalHeaders","v1Override","isGoogle","missingRequiredData","invalidPassword","invalidEmail","profileBody","axios","requestId","headerAuthorization","userEmail","missingAccountData","dataStatus","authorizationToken","nonCacheableRouteForIE11","getV1Favorites","favoritesV1Route","setFavorites","favoritableItems","profileFavorites","setFavoritesIE","deleteFavorites","deleteFavoritesIE","axiosOptions","logoutClientless","logoutClientlessIE","axiosData","toggleAccountExpired","accountExpired","resetIE","confirmPassword","bodyParams","deleteAccount","editAccountIE","PAGE_ITEM_TITLES","Favorite","isAddingFavorite","page_collection_count","page_item_type","page_item_state","page_item_container_title","page_item_vertical_position","page_item_horizontal_position","page_item_subtitle","page_item_cc","page_item_volume","page_playlist_length","page_video_uid","isLoading","localFavorites","manager","prevManager","isHeroItem","setFavorite","stopNavigationOnClick","getSegmentFavoritesEvents","isEpgFavorite","loadingClass","defaultText","favoritedText","iconType","textPosition","isFavorite","onIcon","offIcon","optionalClass","iconClasses","textElement","data-test","textTag","beforeText","afterText","segmentPlaylistButtonAction","clickEvent","uiElement","PLUS","favoritedClass","divClasses","onKeyPress","manuallySetFavorite","getLiveStatusBadge","contentLabel","getBadgeLabel","badge","badgeConfig","getBadgeConfig","badgeType","getBadgeClass","slug","slugLabel","colorKey","fallbackColor","formatAiredDate","originalAirDate","dateFormat","formatedDate","contentRating","formatSubRatings","subRatings","formatDurationInSeconds","continuesStreamCheck","hSuffix","mSuffix","sSuffix","hoursAvailable","minutesAvailable","secondsAvailable","secondsOnly","minutesOnly","continuousStream","hoursText","minutesWithoutHours","hoursAndMinutesAvailable","formatSeasonEpisode","isDotted","formatSeasonEpisodeExtended","seasonCount","currentSeason","fullEpisodeCount","globalEpisodeLabel","globalEpisodesLabel","globalSeasonLabel","globalSeasonsLabel","currentSeasonText","seasonCountText","episodeText","formatMetadata","releaseYear","durationInSeconds","formatRating","isHoverStateV2","isPosters","isContinueWatching","Badge","bookmarkSeconds","isMetadata","isPoster","isSeasons","liveIndicator","getTimeTillStart","calculateTimeLeft","timeTillStart","setTimeLeft","badgeLabel","timerInterval","getTimeWithPrefix","minutesText","formatDurationClipFormat","timerComponent","hasTimeLeft","badgeClasses","badgeClass","isLiveHoverStateV2","HoverStateToolTip","isFavorited","isRightJustified","hoverStateToolTipLabel","hoverStateToolTipTip","Overlay","overlay","Imager","_proto","onLoad","crossOrigin","_ref$count","_ref$delay","_ref$acc","img","Image","retries","clearImgSrc","unload","useLatest","_excluded","DEFAULT_SRC","Img","_ref$className","_ref$decode","_ref$lazy","lazy","_ref$cache","_ref$debounce","_ref$observerOptions","observerOptions","_ref$retry","srcSet","sizes","_useObserver","_ref$rootMargin","_ref$threshold","_useState","setStartLoad","_useState2","setEl","observerRef","timeoutRef","erroredRef","numThreshold","resetTimeout","_ref2$","useObserver","setImg","setSource","imagerRef","onErrorRef","onLoadRef","isSrc","imager","getItem","prevSrc","setItem","getDeviceProps","model","osName","deviceType","desktopLargeMinBreakpoint","desktopMinBreakpoint","tabletMinBreakpoint","tabletV2MaxBreakpoint","siteBreakpoints","SITE_PLATFORM_WEB","SITE_PLATFORM_TABLET","SITE_PLATFORM_MOBILE","SITE_PLATFORM_WEB_LARGE","SITE_PLATFORM_BREAKPOINTS","playerBreakpoints","PLAYER_PLATFORM_WEB","PLAYER_PLATFORM_TABLET","PLAYER_PLATFORM_MOBILE","PLAYER_BREAKPOINTS","isMobileBreakpoint","isTabletBreakpoint","isMobileLandscape","getSitePlatform","webLargeBreakpoint","getUserDevice","isAMobileDevice","isATabletDevice","getImageSize","generateImageUrl","imageUrlSize","getDynamicImage","isHover","imageSize","currentImageSize","renderImage","dataTest","preventLazyLoad","imageType","hasDimension","dynamicImageUrl","widthDimn","heightDimn","highDensityImageUrl","getHighDensityImageUrl","isIE","imageProps","SimplifiedImage","onPosterClick","posterAltText","posterImage","dynamicImage","renderDynamicImage","redirect","simplifiedHover","Simplified","favoritesManager","itemIndex","maxItems","overlayProps","posterGenres","posterItemBadge","posterMetaData","posterTitle","scaleFromLeft","scaleFromRight","isSeriesDetailAvailable","isCollectionSeries","isTypeSeries","isVideoSeries","isSeries","favoriteData","isOnlyWatchList","getCarouselPosterClasses","posterImageProps","posterContainer","isHomePage","watchList","watchListButtonContainer","subtitleText","metaDataContainer","posterInfo","videoType","showType","getShowType","networkId","MoreLike","getItemBadge","getFavoriteData","PosterV2","components","hasPermissionsAPI","GEO_LOCATION_OPTIONS","enableHighAccuracy","maximumAge","emptyCallback","getCurrentTimestampMS","getSimulatedLocation","latitude","DEBUG_PANEL_CITY_LAT","longitude","DEBUG_PANEL_CITY_LONG","setLocationCookies","todayTimestamp","setLatitude","setLongitude","setCookieTimeStamp","setCookieModalTimeStamp","getLocationCookies","getLatitude","getLongitude","cookieTimestamp","getCookieTimestamp","hasLocationCookies","locationCookies","getLocationFromBrowser","coordinates","getLocationFromBrowserCoordinates","getCachedLocation","shouldFetchLocation","debugCookies","hasCookies","hasLocationExpired","getLocationCookieDuration","hasLocationCookieExpired","shouldCheckLocation","getLocation","cachedLocation","ConsoleApiName","globalConsole","originalConsoleMethods","PREFIX","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","catchUserErrors","errorMsg","onMonitorErrorCollected","pack","debugMode","setDebugMode","newDebugMode","monitor","callMonitored","displayIfDebugEnabled","arrayFrom","objectValues","objectEntries","toAssign","getGlobalObject","globalObject","_dd_temp_","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","TextEncoder","getZoneJsOriginalValue","Zone","__symbol__","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","needTrailingExecution","inWaitPeriod","throttled","jsonStringify","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","objectToJson","toJSON","shallowClone","objectHasValue","isEmptyObject","createCustomerDataTrackerManager","compressionStatus","customerDataTrackers","alreadyWarned","checkCustomerDataLimit","initialBytesCount","bytesCountLimit","bytesCount","tracker","getBytesCount","displayCustomerDataLimitReachedWarning","createDetachedTracker","createCustomerDataTracker","getOrCreateTracker","setCompressionStatus","newCompressionStatus","getCompressionStatus","bytesCountCache","computeBytesCountThrottled","cancelComputeBytesCount","resetBytesCount","updateCustomerData","resetCustomerData","getType","mergeInto","circularReferenceChecker","WeakSet","set_1","hasAlreadyBeenSeen","createCircularReferenceChecker","merged_1","deepClone","combine","sources_1","maxCharacterCount","containerQueue","visitedObjectsWithPath","sanitizedData","sanitizeProcessor","serializedSanitizedData","accumulatedCharacterCount","containerToProcess","separatorLength","targetData","warnOverCharacterLimit","parentPath","sourceToSanitize","tryToApplyToJSON","sanitizePrimitivesAndFunctions","sanitizedSource","isTrusted","sanitizeObjects","sourceAsObject","currentPath","Observable","onFirstSubscribe","onLastUnsubscribe","mergeObservables","observables","globalObservable","subscriptions","observable","subscription","createContextManager","customerDataTracker","changeObservable","contextManager","getContext","setContext","newContext","clearContext","setContextProperty","removeContextProperty","TrackingConsent","GRANTED","NOT_GRANTED","configuration","eventTarget","addEventListeners","eventNames","listenerWithMonitor","__ddIsTrusted","allowUntrustedEvents","storageListeners","storeContextManager","productKey","customerDataType","storageKey","buildStorageKey","getFromStorage","rawContext","localStorage","createIdentityEncoder","outputBytesCount","isAsync","additionalEncodedBytesCount","finishSync","rawBytesCount","estimateEncodedBytesCount","computeStackTrace","ex","stackProperty","tryToGetString","exString","stackFrame","CHROME_LINE_RE","isNative","isEval","submatch","CHROME_EVAL_RE","parseChromeLine","CHROME_ANONYMOUS_FUNCTION_RE","parseChromeAnonymousLine","WINJS_LINE_RE","parseWinLine","GECKO_LINE_RE","GECKO_EVAL_RE","parseGeckoLine","fileUrl","computeStackTraceFromOnErrorMessage","messageObj","ERROR_TYPES_RE","tryToParseMessage","createHandlingStack","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","ExperimentalFeature","computeRawError","originalError","handlingStack","startClocks","nonErrorPrefix","handling","isErrorInstance","computeMessage","hasUsableStack","causes","flattenErrorCauses","fingerprint","tryToGetFingerprint","dd_fingerprint","parentSource","currentError","cause","enabledExperimentalFeatures","initFeatureFlags","enableExperimentalFeatures","flag","isExperimentalFeatureEnabled","featureName","performDraw","decimals","navigationStart","relativeToClocks","relative","getCorrectedTimeStamp","relativeTime","correctedOrigin","dateNow","getNavigationStart","addDuration","toServerDuration","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","getRelativeTime","timing","sendToExtension","__ddBrowserSdkExtensionCallback","getConnectivity","onLine","interfaces","connection","effective_type","effectiveType","removeItem","createBoundedBuffer","drain","TelemetryType","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","preStartTelemetryBuffer","onRawTelemetryEventCollected","startTelemetry","telemetryService","contextProvider","alreadySentEvents","telemetryEnabled","site","telemetrySampleRate","telemetryEnabledPerType","telemetryConfigurationSampleRate","telemetryUsageSampleRate","runtimeEnvInfo","is_local_file","is_worker","rawEvent","stringifiedEvent","maxTelemetryEventsPerPage","service","_dd","format_version","telemetry","runtime_env","connectivity","sdk_setup","experimental_features","toTelemetryEvent","addTelemetryError","setContextProvider","addTelemetryDebug","scrubCustomerFrames","formatError","addTelemetryUsage","usage","allowedFrameUrl","sanitizeUser","newUser","displayAlreadyInitializedError","sdkName","initConfiguration","silentMultipleInit","generateUUID","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","safeTruncate","lastChar","correctedLength","startVitalCollection","lifeCycle","pageStateHistory","customVitalsState","addDurationVital","vital","wasInPageStateDuringPeriod","valueComputedBySdk","rawRumEvent","computed_value","customerContext","domainContext","processVital","startDurationVital","stopDurationVital","nameOrRef","vitalsByName","vitalsByReference","__dd_vital_reference","stopCallback","vitalStart","stopOptions","stopClocks","buildDurationVital","getEventBridge","eventBridgeGlobal","DatadogEventBridge","getCapabilities","getPrivacyLevel","getAllowedWebViewHosts","bridgeSupports","bridge","canUseEventBridge","currentHost","allowedHost","instrumentMethod","targetPrototype","onPreCall","computeHandlingStack","stopped","instrumentation","postCallCallback","onPostCall","instrumentSetter","after","originalDescriptor","stoppedInstrumentation","instrumentationWrapper","normalizeUrl","buildUrl","supportedURL","isURLSupported","originalURL","getSupportedUrl","anchorElement","baseElement","fetchObservable","initCookieParsed","getCurrentSiteCache","initFetchObservable","fetch","methodFromParams","Request","responsePromise","startContext","reportFetch","partialContext","isAborted","signal","DOMException","ABORT_ERR","afterSend","expireDelay","crossSite","partitioned","getInitCookie","findCommaSeparatedValues","deleteCookie","browserCache","willSyntheticsInjectRum","_DATADOG_SYNTHETICS_INJECTS_RUM","detectBrowserCached","chrome","detectBrowser","SESSION_ENTRY_REGEXP","isSessionInNotStartedState","session","isSessionStarted","isSessionInExpiredState","isExpired","sessionState","created","expire","expandSessionState","toSessionString","toSessionState","sessionString","isValidSessionString","selectCookieStrategy","cookieOptions","useSecureSessionCookie","usePartitionedCrossSiteSessionCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","testCookieName","domainLevels","candidateDomain","getCurrentSite","buildCookieOptions","isCookieCorrectlySet","areCookiesAuthorized","initCookieStrategy","cookieStore","isLockEnabled","persistSession","retrieveSession","retrieveSessionCookie","expireSession","expireSessionCookie","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","tryOldCookiesMigration","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","ongoingOperations","bufferedOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","persistWithLock","lock","currentLock","retrieveStore","currentStore","retryLater","processedSession","sessionStore","currentNumberOfRetries","nextOperations","selectSessionStoreStrategyType","sessionStoreStrategyType","allowFallbackToLocalStorage","testKey","retrievedId","selectLocalStorageStrategy","startSessionStore","computeSessionState","sessionCache","renewObservable","expireObservable","sessionStateUpdateObservable","watchSessionTimeoutId","synchronizeSession","startSession","synchronizedSession","trackingType","isTracked","expandOrRenewSessionState","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","cancelExpandOrRenewSession","isSessionInCacheOutdated","expandOrRenewSession","expandSession","getSession","restartSession","updateSessionState","partialSessionState","createEndpointBuilder","trackType","configurationTags","buildUrlWithParameters","normalizedProxyUrl_1","internalAnalyticsSubdomain","usePciIntake","domainParts","extension","buildEndpointHost","createEndpointUrlWithParametersBuilder","build","clientToken","encoding","lastFailureStatus","buildEndpointParameters","urlPrefix","buildTag","rawValue","valueSizeLimit","supportUnicodePropertyEscapes","hasForbiddenCharacters","sanitizedValue","computeTransportConfiguration","env","datacenter","buildTags","endpointBuilders","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","computeEndpointBuilders","intakeUrlPrefixes","builder","computeIntakeUrlPrefixes","replicaConfiguration","replica","replicaEndpointBuilders","applicationId","computeReplicaConfiguration","isIntakeUrl","intakeEndpoint","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","TraceContextInjection","ALL","SAMPLED","isSampleRate","validateAndBuildConfiguration","sessionSampleRate","trackingConsent","beforeSend","storeContextsAcrossPages","batchBytesLimit","eventRateLimiterThreshold","flushTimeout","batchMessagesLimit","messageBytesLimit","isMatchOption","matchList","useStartsWith","clearTracingIfNeeded","traceId","spanId","traceSampled","injectHeadersIfTracingAllowed","sessionManager","inject","getCrypto","findTrackedSession","tracingOption","allowedTracingUrls","traceSampleRate","traceContextInjection","createTraceIdentifier","propagatorTypes","tracingHeaders","propagatorType","toDecimalString","traceparent","toPaddedHexadecimalString","makeTracingHeaders","readInt32","high","low","DEFAULT_PROPAGATOR_TYPES","validateAndBuildRumConfiguration","sessionReplaySampleRate","excludedActivityUrls","tracingOptions","option","expectedItem","isTracingOption","validateAndBuildTracingOptions","baseConfiguration","actionNameAttribute","startSessionReplayRecordingManually","compressIntakeRequests","trackUserInteractions","trackViewsManually","trackResources","trackLongTasks","subdomain","defaultPrivacyLevel","enablePrivacyForActionName","customerDataTelemetrySampleRate","plugins","betaPlugins","getSelectedTracingPropagators","usedTracingPropagators","fetchAndApplyRemoteConfiguration","displayRemoteConfigurationFetchingError","remoteConfigurationId","fetchRemoteConfiguration","remoteInitConfiguration","applyRemoteConfiguration","createPreStartStrategy","getCommonContext","trackingConsentState","doStartRum","firstStartViewCall","deflateWorker","cachedInitConfiguration","cachedConfiguration","ignoreInitIfSyntheticsWillInjectRum","startDeflateWorker","bufferApiCalls","trackingConsentStateSubscription","tryStartRum","isGranted","initialViewOptions","startRumResult","doInit","eventBridgeAvailable","overrideInitConfigurationForBridge","addTelemetryConfiguration","baseSerializedConfiguration","session_sample_rate","telemetry_sample_rate","telemetry_configuration_sample_rate","telemetry_usage_sample_rate","use_before_send","use_cross_site_session_cookie","use_partitioned_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","allow_fallback_to_local_storage","store_contexts_across_pages","allow_untrusted_events","tracking_consent","session_replay_sample_rate","start_session_replay_recording_manually","trace_sample_rate","trace_context_injection","action_name_attribute","use_allowed_tracing_urls","selected_tracing_propagators","default_privacy_level","enable_privacy_for_action_name","use_excluded_activity_urls","use_worker_url","compress_intake_requests","track_views_manually","track_user_interactions","track_resources","track_long_task","plugin","getConfigurationTelemetry","serializeRumConfiguration","tryToInit","publicApi","parameter","plugins_1","callPluginsMethod","REMOTE_CONFIGURATION","getInternalContext","stopSession","addTiming","startView","updateViewName","setViewContext","setViewContextProperty","commonContext","providedError","addFeatureFlagEvaluation","PageExitReason","UNLOADING","PAGEHIDE","FROZEN","isPageExitReason","getMutationObserverConstructor","originalInstance","ErrorSource","createEventRateLimiter","onLimitReached","eventCount","allowNextEvent","isLimitReached","getSyntheticsContext","testId","_DATADOG_SYNTHETICS_PUBLIC_ID","getSyntheticsTestId","resultId","_DATADOG_SYNTHETICS_RESULT_ID","getSyntheticsResultId","test_id","result_id","injected","limitModification","modifiableFieldPaths","modifier","fieldPath","fieldType","isValidObjectContaining","newType","fields","isValidObject","modifiableFieldPathsByEvent","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","ROOT_MODIFIABLE_FIELD_PATHS","startRumAssembly","viewHistory","urlContexts","actionContexts","displayContext","ciVisibilityContext","WRITABLE_RESOURCE_GRAPHQL","eventRateLimiters","syntheticsContext","savedCommonContext","viewHistoryEntry","findView","urlContext","findUrl","actionId","findActionId","serverRumEvent","browser_sdk_version","application","synthetics","ci_test","has_replay","hasReplay","sampled_for_replay","sessionReplay","usr","shouldSend","LifeCycle","AbstractLifeCycle","eventCallbacks","createValueHistory","maxEntries","clearOldValuesInterval","oldTimeThreshold","clearOldValues","returnInactive","entries_1","closeActive","latestEntry","findAll","xhrObservable","xhrContexts","initXhrObservable","stopInstrumentingStart","openXhr","stopInstrumentingSend","hasBeenReported","stopInstrumentingOnReadyStateChange","DONE","onEnd","unsubscribeLoadEndListener","completeContext","sendXhr","stopInstrumentingAbort","abortXhr","createXhrObservable","RESOURCE_TYPES","initiatorType","computeResourceEntryType","isValidUrl","getPathName","RESOURCE_TYPES_1","areInOrder","numbers","isResourceEntryRequestType","computeResourceEntryDuration","responseEnd","computeResourceEntryDetails","hasValidResourceEntryTimings","fetchStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","download","formatTiming","first_byte","connect","ssl","dns","hasValidResourceEntryDuration","areCommonTimingsInOrder","areRedirectionTimingsInOrder","hasRedirection","origin","computeResourceEntrySize","encodedBodySize","decodedBodySize","encoded_body_size","decoded_body_size","transfer_size","transferSize","isAllowedRequestUrl","DATA_URL_REGEX","isLongDataUrl","sanitizeDataUrl","RumPerformanceEntryType","resourceTimingBufferFullListener","nextRequestIndex","startRequestCollection","tracer","traceFetch","headers_1","Headers","traceXhr","startTracer","requestIndex","getNextRequestIndex","trackXhr","clonedResponse","tryToClone","reader","getReader","readBytesCount","onDone","limitExceeded","collectStreamBody","completeBuffer_1","offset_1","bytesLimit","readMore","read","readBytesFromStream","waitForResponseToComplete","trackFetch","discardNegativeDuration","trackEventCounts","isChildEvent","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","discarded","retrieveFirstInputTiming","startTimeStamp","timingSent","removeEventListeners","entryType","processingStart","processingEnd","sendTiming","sendTimingIfPointerIsNotCancelled","createPerformanceObservable","PerformanceObserver","stopFirstInputTiming","handlePerformanceEntries","rumPerformanceEntries","RESOURCE","isForbiddenResource","filterRumPerformanceEntries","isObserverInitializing","getEntries","NAVIGATION","LONG_TASK","PAINT","getEntriesByType","entryTypes","clearResourceTimings","manageResourceTimingBufferFull","supportPerformanceTimingEvent","FIRST_INPUT","supportedEntryTypes","waitPageActivityEnd","domMutationObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","hadActivity","maxDurationTimeoutId","pageActivitySubscription","isBusy","lastChangeTime","doWaitPageActivityEnd","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","stopTrackingWindowOpen","createPageActivityObservable","requestUrl","cssEscape","CSS","asCodePoint","elementMatches","selector","msMatchesSelector","ELEMENT_NODE","initialValues","isTextNode","TEXT_NODE","isElementNode","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","forEachChildNodes","nextSibling","NodePrivacyLevel","IGNORE","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","INPUT","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","getNodePrivacyLevel","parentNodePrivacyLevel","nodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","inputElement","autocomplete","getPrivacySelector","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","shouldIgnoreElement","shouldMaskNode","privacyLevel","isFormElement","getTextContent","textNode","ignoreWhiteSpace","getActionNameFromElement","userProgrammaticAttribute","defaultActionName","getActionNameFromElementProgrammatically","getActionNameFromElementForStrategies","priorityStrategies","fallbackStrategies","targetElement","programmaticAttribute","elementWithAttribute","supportsElementClosestResult","supportsElementClosest","closest","normalizeWhitespace","supportsLabelPropertyResult","privacy","HTMLInputElement","supportsLabelProperty","getTextualContent","htmlFor","privacyEnabledActionName","labelledByAttribute","strategies","recursionCounter","strategies_1","name_1","strategy","trimmedName","isContentEditable","text_1","innerText","removeTextFromElements","element_1","textToReplace","supportScopeSelectorCache","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","isGeneratedValue","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","classList","getClassList","getSelectorFromElement","isConnected","targetElementSelector","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","getAttributeSelector","STABLE_ATTRIBUTES_1","attributeName","elementIndex","nextElementSibling","selectorGetters","childSelector","selectorGetters_1","elementSelector","selectorGetter","currentElementSelector","isSiblingMatching","scopedSelector_1","supportScopeSelector","createClickChain","firstClick","onFinalize","maxDurationBetweenClicksTimeoutId","bufferedClicks","appendClick","click","stopObservable","tryFinalize","dontAcceptMoreClick","isStopped","tryAppend","areEventsSimilar","isSelectionEmpty","selection","getSelection","isCollapsed","isValidPointerEvent","isPrimary","computeFrustration","clicks","rageClick","getUserActivity","scroll","addFrustration","isDead","hasError","isRage","hasSelectionChanged","hasPageActivity","interactionSelectorCache","updateInteractionSelector","relativeTimestamp","trackClickActions","currentClickChain","stopClickChain","stopActionEventsListener","selectionEmptyAtPointerDown","clickContext","onPointerDown","onPointerUp","userActivity","localUserActivity_1","listenActionEvents","pointerDownEvent","clickActionBase","computeClickActionBase","hadActivityOnPointerDown","pageActivityEndEvent","processPointerDown","appendClickToClickChain","newClick","activityEndTime","historyEntry","eventCountsSubscription","frustrationTypes","newActivityEndTime","frustrationType","domEvents","clickAction","counts","discard","stopWaitPageActivityEnd","viewEndedSubscription","endClocks","stopSubscription","startClickAction","rageClick_1","finalizeClicks","processAction","autoActionProperties","isAutoAction","loading_time","long_task","resource","actionEvent","in_foreground","wasInPageStateAt","trackRuntimeError","errorObservable","handleRuntimeError","rawError","stopInstrumentingOnError","errorObj","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","originalConsoleApi","buildConsoleLog","createConsoleObservable","param","formatConsoleParameters","firstErrorParam","RawReportType","initReportObservable","blockedURI","effectiveDirective","buildRawReportError","csp","disposition","buildStack","originalPolicy","sourceFile","columnNumber","buildRawReportErrorFromCspViolation","createCspViolationReportObservable","reportTypes","ReportingObserver","handleReports","reports","report","buildRawReportErrorFromReport","createReportObservable","startErrorCollection","featureFlagContexts","consoleLog","trackConsoleError","trackReportError","handling_stack","source_type","featureFlagContext","findFeatureFlagEvaluations","feature_flags","processError","doStartErrorCollection","alreadyMatchedEntries","matchRequestResourceEntry","sameNameEntries","getEntriesByName","candidates","runOnReadyState","expectedReadyState","getDocumentTraceId","traceIdMeta","traceTimeMeta","createDocumentTraceData","getDocumentTraceDataFromMeta","comment","getTraceCommentFromNode","findTraceComment","getDocumentTraceDataFromComment","traceTime","rawTraceTime","isCommentNode","getNavigationEntry","navigationEntry","timings","numberKey","timingElement","computeTimingsFromDeprecatedPerformanceTiming","retrieveInitialDocumentResourceTiming","startResourceCollection","retrieveInitialDocumentResourceTimingImpl","matchingTiming","tracingInfo","span_id","trace_id","rule_psr","getRulePsr","computeRequestTracingInfo","correspondingTimingOverrides","computeResourceEntryMetrics","computeRequestDuration","resourceEvent","status_code","performanceEntry","requestInput","requestInit","processRequest","performanceResourceSubscription","processResourceEntry","computeResourceEntryTracingInfo","entryMetrics","responseStatus","renderBlockingStatus","render_blocking_status","trackNavigationTimings","getNavigationEntryImpl","stopOnReadyState","waitAfterLoadEvent","loadEventEnd","isIncompleteNavigation","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","loadEvent","processNavigationEntry","trackFirstHidden","stopListeners","visibilityState","trackInitialViewMetrics","setLoadEvent","scheduleViewUpdate","initialViewMetrics","stopNavigationTracking","navigationTimings","firstHidden","stopFCPTracking","fcpEntry","trackFirstContentfulPaint","firstContentfulPaint","stopLCPTracking","firstInteractionTimestamp","stopEventListener","biggestLcpSize","performanceLcpSubscription","LARGEST_CONTENTFUL_PAINT","lcpEntry","findLast","lcpTargetSelector","targetSelector","trackLargestContentfulPaint","largestContentfulPaint","stopFIDTracking","performanceFirstInputSubscription","firstInputEntry","firstInputDelay","firstInputTargetSelector","trackFirstInput","firstInput","trackCumulativeLayoutShift","viewStart","isLayoutShiftSupported","maxClsTarget","maxClsStartTime","maxClsValue","cumulatedValue","maxValue","isMaxValue","ONE_SECOND","slidingSessionWindow","performanceSubscription","LAYOUT_SHIFT","hadRecentInput","getTargetFromSource","WeakRef","deref","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","viewportObservable","getInteractionCount","interactionCount","trackInteractionToNextPaint","viewLoadingType","EVENT","PerformanceEventTiming","getInteractionToNextPaint","setViewEnd","interactionToNextPaintTargetSelector","interactionToNextPaintStartTime","interactionId","durationThreshold","previousInteractionCount","computeViewInteractionCount","getViewInteractionCount","stopViewInteractionCount","trackViewInteractionCount","viewEnd","longestInteractions","sortAndTrimLongestInteractions","interactionIndex","interaction","minLongestInteraction","estimateP98Interaction","trackLongestInteractions","interactionToNextPaint","handleEntries","newInteraction","getInteractionSelector","firstInputSubscription","eventSubscription","viewEndTime","getScrollX","scrollX","visual","visualViewport","pageLeft","getScrollY","pageTop","initViewportObservable","updateDimension","getViewportDimension","createViewportObservable","trackScrollMetrics","scrollValues","throttleDuration","throttledNotify_1","scrollingElement","scrollDepth","computeScrollValues","observerTarget_1","resizeObserver_1","eventListener_1","createScrollValuesObservable","maxScrollDepth","maxScrollHeight","maxScrollHeightTime","shouldUpdate","maxDepth","maxDepthScrollTop","trackCommonViewMetrics","loadingType","commonViewMetrics","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","loadingTime","trackLoadingTime","newLoadingTime","stopLoadingTimeTracking","stopScrollMetricsTracking","newScrollMetrics","stopCLSTracking","cumulativeLayoutShift","stopINPTracking","getCommonViewMetrics","trackViews","locationChangeObservable","areViewsTrackedAutomatically","locationChangeSubscription","activeViews","currentView","startNewView","viewOptions","newlyCreatedView","initialLocation","customTimings","documentVersion","sessionIsActive","viewCreatedEvent","triggerViewUpdate","cancelScheduleViewUpdate","stopCommonViewMetricsTracking","stopInitialViewMetricsTracking","trackViewEventCounts","stopEventCountsTracking","keepAliveIntervalId","currentEnd","looksLikeRelativeTime","sanitized","sanitizeTiming","updatedName","UPDATE_VIEW_NAME","newView","pageExitEvent","currentLocation","otherLocation","oldLocation","newLocation","correspondingId","isHashAnAnchor","getPathFromHash","renewViewOnLocationChange","startViewCollection","recorderApi","replayStats","getReplayStats","pageStates","viewEvent","document_version","replay_stats","page_states","cumulative_layout_shift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","dom_complete","dom_content_loaded","dom_interactive","first_contentful_paint","first_input_delay","first_input_time","first_input_target_selector","interaction_to_next_paint","interaction_to_next_paint_time","interaction_to_next_paint_target_selector","is_active","largest_contentful_paint","largest_contentful_paint_target_selector","load_event","loading_type","time_spent","max_depth","max_depth_scroll_top","max_scroll_height","max_scroll_height_time","replay_level","custom_timings","mapValues","processViewUpdate","stopCallbacks","startSessionManager","sessionContextHistory","buildSessionContext","isReplayForced","forcedReplay","trackActivity","expandSessionWhenVisible","visibilityCheckInterval","trackVisibility","trackResume","findSession","startRumSessionManager","rawTrackingType","hasValidRumSession","isTypeTracked","sessionEntity","setForcedReplay","rumSessionType","createBatch","encoder","flushController","upsertBuffer","flushSubscription","flushObservable","upsertMessages","isPageExit","sendOnExit","encoderResult","formatPayloadFromEncoder","pendingMessages","addOrUpdate","serializedMessage","estimatedMessageBytesCount","hasMessageFor","removedMessage","messageBytesCount","notifyAfterRemoveMessage","notifyBeforeAddMessage","notifyAfterAddMessage","realMessageBytesCount","upsert","sendWithRetryStrategy","sendStrategy","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","retryQueuedPayloads","enqueue","scheduleRetry","dequeue","currentBackoffTime","shouldRetryRequest","ongoingRequestCount","queueFullReported","MAX_QUEUE_BYTES_COUNT","previousQueue","newPayloadQueue","createHttpRequest","endpointBuilder","retryState","ongoingByteCount","sendStrategyForRetry","onResponse","isKeepAliveSupported","fetchUrl","keepalive","xhrUrl","sendXHR","fetchKeepAliveStrategy","sendBeacon","beaconUrl","hasReportedBeaconError","reportBeaconError","sendBeaconStrategy","createFlushController","durationLimitTimeoutId","messagesLimit","durationLimit","pageExitObservable","sessionExpireObservable","pageExitSubscription","sessionExpireSubscription","currentBytesCount","currentMessagesCount","flushReason","messagesCount","cancelDurationLimitTimeout","messageBytesCountDiff","startRumBatch","telemetryEventObservable","createEncoder","batch","primary","batchFactoryImp","primaryBatch","createBatchFromConfig","replicaBatch","endpoint","replicated","transformMessage","startBatchWithReplica","isTelemetryReplicationAllowed","createLocationChangeObservable","stopHistoryTracking","onHistoryChange","stopInstrumentingPushState","getHistoryInstrumentationTarget","stopInstrumentingReplaceState","trackHistory","onLocationChange","stopHashTracking","onHashChange","trackHash","History","currentPeriodMeasures","currentBatchMeasures","batchHasRumEvent","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","updateMeasure","measure","sum","mergeMeasure","batchBytesCount","batchMessagesCount","globalContextBytes","userContextBytes","featureFlagBytes","initCurrentBatchMeasures","startPageStateHistory","maxPageStateEntriesSelectable","currentPageState","pageStateEntryHistory","addPageState","getPageState","stopEventListeners","persisted","computePageState","nextPageState","eventStartTime","pageStateEntries","pageStateServerEntries","pageState","relativeStartTime","hasFocus","createCookieObservable","detectCookieChangeStrategy","changeEvent","changed","deleted","listenToCookieStoreChange","watchCookieFallback","previousCookieValue","watchCookieIntervalId","cookieValue","getSessionReplayUrl","viewContext","rumConfiguration","getSiteDefaultSubdomain","getDatadogSiteUrl","statsPerView","getSegmentsCount","getOrCreateReplayStats","segments_count","records_count","segments_total_raw_size","toDelete","isFirst_1","_value","deleteOldestStats","hasSerializedNode","getSerializedNodeId","getElementInputValue","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","switchToAbsoluteUrl","cssText","cssHref","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","makeUrlAbsolute","TAG_NAME_REGEX","getValidTagName","processedTagName","censoredImageForSize","RecordType","NodeType","IncrementalSource","MouseInteractionType","MediaInteractionType","serializeStyleSheets","cssStyleSheets","cssStyleSheet","rules","cssRules","cssRule","serializeAttribute","attributeValue","naturalWidth","naturalHeight","getCssRulesString","getCssRuleStringForSafari","getCssRuleString","rule","isCSSStyleRule","selectorText","isCSSImportRule","styleSheet","serializeNodeWithId","serializedNode","DOCUMENT_NODE","serializeChildNodes","adoptedStyleSheets","serializeDocumentNode","isShadowRoot","serializationContext","shadowRootsController","addShadowRoot","serializeDocumentFragmentNode","DOCUMENT_TYPE_NODE","documentType","publicId","systemId","isSVG","rr_width","rr_height","safeAttrs","formValue","optionElement","selected","stylesheet","styleSheets","_cssText","sheet","scrollLeft","checked","mediaElement","rr_mediaState","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","serializeAttributes","hasChildNodes","childNodesSerializationOptions","serializeElementNode","serializeTextNode","CDATA_SECTION_NODE","serializeNode","_nextId","serializedNodeWithId","serializeNodeId","setSerializedNodeId","serializedNodeIds","childNode","serializedChildNode","serializeDocument","isTouchEvent","changedTouches","getEventTarget","composed","composedPath","convertMouseEventToLayoutCoordinates","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","isVisualViewportFactoredIn","getVisualViewport","assembleIncrementalSnapshot","trackMove","moveCb","tryToComputeCoordinates","updatePosition","cancelThrottle","eventTypeToMouseInteraction","trackMouseInteraction","mouseInteractionCb","recordIds","getIdForEvent","trackScroll","scrollCb","scrollPositions","trackViewportResize","viewportResizeCb","viewportResizeSubscription","trackVisualViewportResize","visualViewportResizeCb","trackMediaInteraction","mediaInteractionCb","trackStyleSheet","styleSheetCb","checkStyleSheetAndCallback","ownerNode","instrumentationStoppers","CSSStyleSheet","adds","removes","instrumentGroupingCSSRuleClass","cls","parentStyleSheet","getPathToNestedCSSRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","stopper","currentRule","parentRule","index_1","trackFocus","focusCb","has_focus","trackFrustration","frustrationCb","frustrationSubscription","trackViewEnd","viewEndCb","viewEndSubscription","trackInput","inputCb","stopPropertySetterInstrumentation","lastInputStateMap","HTMLTextAreaElement","onElementChange","instrumentationStoppers_1","inputState","isChecked","cbWithDedup","lastInputState","createMutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","throttledFlush","addMutations","mutations","requestIdleCallback","cancelIdleCallback","id_1","cancelAnimationFrame","trackMutation","mutationCallback","mutationBatch","nodePrivacyLevelCache","mutation","removedNodes","removedNode","traverseRemovedShadowDom","shadowDomRemovedCallback","removeShadowRoot","filteredMutations","nodeAndAncestorsHaveSerializedNode","addedAndMovedNodes","addedNodes","mutations_1","sortedAddedAndMovedNodes","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","addedNodeMutations","sortedAddedAndMovedNodes_1","hasBeenSerialized","nextId","parentId","removedNodeMutations","processChildListMutations","texts","textMutations","handledNodes","filteredMutations_1","processCharacterDataMutations","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","transformedValue","inputValue","emittedMutation","processAttributesMutations","processMutations","attributeOldValue","characterDataOldValue","emitAndComputeStats","scrollPositionsByElement","createElementsScrollPositions","controllerByShadowRoot","mutationTracker","inputTracker","scrollTracker","initShadowRootsController","stopFullSnapshots","flushMutations","fullSnapshotCallback","takeFullSnapshot","initialOffset","startFullSnapshots","initRecordIds","trackers","viewEndRecord","createSegment","creationReason","encodedBytesCount","creation_reason","has_full_snapshot","index_in_view","addRecord","additionalBytesCount","SEGMENT_BYTES_LIMIT","startSegmentCollection","httpRequest","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","rawSegmentBytesCount","formData","FormData","metadataAndSegmentSizes","raw_segment_size","compressed_segment_size","serializedMetadataAndSegmentSizes","buildReplayPayload","expirationTimeoutId","doStartSegmentCollection","computeSegmentContext","isBrowserSupported","getSessionReplayLink","isRecordingStarted","getErrorType","createDeflateEncoder","streamId","compressedDataTrailer","compressedData","nextWriteActionId","pendingWriteActions","removeMessageListener","workerResponse","trailer","nextPendingAction","writeCallback","finishCallback","consumeResult","buffers","buffers_1","concatBuffers","sendResetIfNeeded","pendingWriteAction","createDeflateWorker","onInitializationFailure","createDeflateWorkerImpl","removeErrorListener_1","removeMessageListener_1","initializationFailureCallbacks","doStartDeflateWorker","getDeflateWorkerStatus","baseMessage","worker_version","stream_id","startRumImpl","customerDataTrackerManager","globalContextManager","userContextManager","currentConsent","createTrackingConsentState","isRecording","buildCommonContext","onRumStart","preStartStrategy","createPostStartStrategy","sanitizedOptions","rumPublicApi","stub","onReady","makePublicApi","setTrackingConsent","getGlobalContext","setGlobalContextProperty","removeGlobalContextProperty","clearGlobalContext","getInitConfiguration","setUser","checkUser","getUser","setUserProperty","sanitizedProperty","removeUserProperty","clearUser","startSessionReplayRecording","force","stopSessionReplayRecording","makeRumPublicApi","cleanupTasks","bridge_1","startRumTelemetry","currentContext","startFeatureFlagContexts","stopBeforeUnloadListener","createPageExitObservable","startRumSessionManagerStub","startRumEventBridge","batch_1","batchFlushObservable","startCustomerDataTelemetry","createDOMMutationObservable","viewValueHistory","buildViewHistoryEntry","viewUpdate","startViewHistory","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","changeTime","startUrlContexts","startActionCollection","viewport","viewportDimension","startDisplayContext","cookieObservable","testExecutionId","Cypress","cookieObservableSubscription","test_execution_id","startCiVisibilityContext","startRumEventCollection","stopRumEventCollection","stopViewCollection","stopResourceCollection","LONG_ANIMATION_FRAME","stopLongAnimationFrameCollection","entry_type","blocking_duration","blockingDuration","first_ui_event_timestamp","firstUIEventTimestamp","render_start","renderStart","style_and_layout_start","styleAndLayoutStart","start_time","scripts","pause_duration","pauseDuration","forced_style_and_layout_duration","forcedStyleAndLayoutDuration","execution_start","executionStart","source_url","sourceURL","source_function_name","sourceFunctionName","source_char_position","sourceCharPosition","invoker","invoker_type","invokerType","window_attribution","windowAttribution","startLongAnimationFrameCollection","performanceLongTaskSubscription","startLongTaskCollection","vitalCollection","internalContext","application_id","user_action","startInternalContext","startRecordingImpl","startStrategy","stopStrategy","getSessionReplayLinkStrategy","cachedDeflateEncoder","deflateEncoder","stopRecording","makeRecorderApi","replayRequest","startRecordBridge","segmentCollection","existingGlobalVariable","defineGlobal","withDataDogEnableCheck","dataDogConfig","isStaticRender","logPlayerError","SPACES","NON_WORD_CHARACTERS","MULTIPLE_DASHES","LEADING_DASH","TRAILING_DASH","TRAILING_SLASH","STILL_WATCHING_HIDE_SECONDS","STILL_WATCHING_HIDE_DURATION","VOD","PLAYER_STATES","INTERRUPTION_METHODS","isPlayerTypeHero","getPlayer","playerReference","getPlayerJs","getPlayerCsid","isFullEpisode","platform","getPlayerPlatform","playerControlsVisible","getChannelBackgroundUrl","playerPause","player","playerRemove","getPlayerState","getActivePlayer","activePlayer","playerGetPaused","playerPlay","players","playerHideControls","playerSetFullscreen","setStillWatchingShowTimeout","setStillWatchingHideTimeout","stillWatchingHideCb","showStillWatching","isVideoOverlayPresent","stillWatchingShowCb","onPlayerIdleAnalytics","getTealiumPlayerEvents","GeneralTrackEvents","getDuration","getPercentComplete","playerDuration","secondsViewed","getSecondsViewed","mvpdId","onClickEvent","linkName","rel","defaultLinkRenderer","getLiveProgress","endDate","ends","videoStarted","videoEnded","progressMs","liveProgress","ProgressBar","liveInterval","percentWatched","progressClassSuffix","ReactTimeout","ActionButtons","ctaData","actionButtons","externalLink","iconElement","actionButton","Description","descriptionLines","onTileClick","recommendationIdData","Truncate","ellipsis","visibility","elements","onTruncate","calcTargetWidth","measureWidth","getLines","renderLine","canvas","canvasContext","div","contentKey","didTruncate","targetWidth","font","measureText","numLines","trimWhitespace","trimRight","textLines","ellipsisWidth","textWords","resultLine","textRest","lastLineText","_lower","_upper","_middle","br","spanProps","targetEl","textEl","ellipsisEl","ReadMore","expanded","truncated","moreText","lessText","buttonContainer","toggleLines","handleTruncate","Subtitle","isDisabled","isRedirect","onTileMouseDown","subtitleLines","subtitleTextProp","truncateSubtitle","subtitleLink","subTitleClasses","SERIES_EPISODE","basicComparisonCustomizer","val1","val2","comparisonCustomizer","backgroundVideoLoops","VideoTile","videoElement","videoPlayCount","videoTagError","hlsObjects","videoImage","onMount","transitionImage","nextPlay","nextVideo","nextImage","nextTransitionImage","transitionStart","transitionImageStart","handleShouldComponentUpdate","onUnmount","videoTag","hlsObject","oldVideoElement","transitionEnd","currentTimer","currentVideoElement","playPromise","newVideoImage","newHlsObject","poster","newHlsObjects","altText","videoPosterStyle","isVideoPoster","posterSrc","posterContainerStyle","loop","fadeImageToVideo","videoStyle","containerClassName","videoClassName","wrapperClassName","videoProps","playsInline","HoverVideoTile","initalRender","rendered","ImageTile","isCollectionCategoryList","isTileGrid","imageTagClasses","SvgBtn","SvgFbn","SvgFeed","SvgFnc","SvgFox","SvgFoxdep","SvgFoxDigital","SvgFoxFood","_defs","SvgSoul","xmlnsXlink","xlinkHref","SvgFoxWeather","SvgFs1","SvgFs2","SvgFsp","SvgKcpq","SvgKdfw","SvgKmsp","SvgKriv","SvgKsaz","SvgKtbc","SvgKttv","SvgKtvu","SvgNewsnow","SvgWaga","SvgWfld","SvgWiti","SvgWjbk","SvgWnyw","SvgWofl","SvgWogx","SvgWttg","SvgWtvt","SvgWtxf","SvgKion","patternContentUnits","_path2","SvgWhizdt2","COLORS","CallSign","logoColor","Logos","TileTitle","gridIndex","gridTitle","isUpcoming","onTitleClick","titleLines","titleLink","titleClasses","titleClass","setSessionStorageItem","SERIES_TITLE","isInternalLink","TilePlayButton","playButton","playText","TileNetworkIcon","networkIcon","showNetworkIcon","networkIconClasses","TileMetaData","TileUpsellCTA","upsellButtonText","upsellButtonIcon","upsellButtonClick","TileUpsellDogEar","TileNetworkBubble","networkLogoStyle","helperGoToRelativeUrl","redirectToExternalUrl","networkLogoBubbleContainer","networkLogoBubbleIcon","ImageOverlay","networkLogoUrl","playButtonText","renderImageOverlay","showPlayButton","upcomingDate","renderFavorite","withLabel","titleDisplay","imageOverlayHiddenClass","imageOverlayClasses","imageOverlayInnerContainer","imageOverlayDetailContainer","imageOverlayDate","imageOverlayTitle","titleFavorite","imageOverlaySubtitle","imageOverlayDescription","imageOverlayFooter","imageOverlayMetadata","TileContent","isHoverImage","isPlaying","renderLiveVideo","renderPreviewVideo","getChangingProps","oldProps","hoverImage","imageToRender","isMobileDevice","previewVideo","liveVideo","tileImage","imageOverlay","tileHoverProps","guid","handleMouseEnter","toggleNetworkIcon","handleMouseLeave","ToggleDetail","descriptionElement","seeAllText","trackButtonClick","subtitleName","onSeeAllClick","seeAllLink","playButtonClick","Tile","toggled","favorited","shouldDisplayNetworkLogo","contentId","isUserOutOfMarket","livePlayerScreenUrl","panelCount","playerScreenUrl","playlist","searchCompleted","setSearchCompleted","searchTerm","isCollectionTypeLocalClip","setOutOfMarketLocalCookies","setLocalChannelCookies","currentPlayerState","callSegmentPlayerEvent","SegmentVideoEvents","page_category_title","page_num_search_results","page_search_term","getCommonTealiumProps","affiliateLogo","anonymousCTAClick","anonymousCTAText","applyInlineBackground","collectionItemViewed","ctaPosition","customTileClick","descriptionLink","disableDescriptions","disableHoverStateActionButtons","displayTemplate","displayUpsellCTA","fadeTile","imageAltText","inlineStyle","isAnonymous","isLocked","isPlayable","isPrimeTime","overridePlayButtonClick","preventToggle","shouldInvertTitleOrder","showLiveProgressBar","seriesScreenUrl","tealiumActions","toggleEnabled","upsellDogEarImage","upsellDogEarText","isLiveTileV2","usePlayButtonThin","titleLinkVal","subtitleLinkVal","clickableClass","tileTypeClass","contentLocked","hasActionButtons","tileActionButtonClass","hideNewBadge","isClip","isLocalClip","isGenre","shouldShowNetworkIcon","tileImageProps","anonymousOverlay","playButtonLink","playButtonOverlay","upsellDogEar","hoverStateToolTip","toolTipClassName","isOnlyInfo","seriesUrl","helperGetRelativeUrl","hoverStateWatchlistText","hoverStateActionButtons","INFO","renderBadge","imageContent","liveTileV2Shadow","lockIcon","localStationPickerId","LOCAL_CHANNEL_STATION_PICKER","affiliateLogoImage","affiliateLogoContainer","thumbActionType","tileLinkWrapperOptions","imageContainerContent","imageContainerLink","TileWrapper","PLAY","TileLinkWrapper","showProgressBar","dynamicTileImage","progressBarElement","imageContainerClasses","tilebackgroundSize","categoryListBackground","isDesktopBreakpoint","isLargeDesktopBreakpoint","backgroundImage","inlineContainerStyle","backgroundSize","backgroundRepeat","backgroundPosition","showImageContents","mobilePlayIcon","imageElement","browserHistory","dotDotDotLink","collectionName","collectionIndex","collectionItemIndex","collectionSeriesId","collectionSeriesName","collectionVideoTitle","toggleElement","titleOptions","infoStyle","lazyLoadEnabled","TileGrid","toggleLimit","scrollSeeLess","prevExpanded","newHasMore","expandBehavior","tileGridTrackButtonClick","onToggleShowMore","toggleLessText","toggleMoreText","toggleText","newToggleLimit","itemsCollapsed","togglePaginated","getButtons","gridStyle","gridType","isSeriesDetailPage","processor","showSeriesName","tileDetailToggle","tileIndexOffset","tileTheme","tileV2Type","toggleVideoModal","filteredItems","toggleCount","loadMoreElement","suppressMore","toggleFunction","modifiedItem","processed","tileProps","hr","expandedItemId","onLinkClick","onPlayClick","iconUrl","requiresAuth","isAuthorized","titleElement","playButtonElement","badgeElement","subtitleElement","percentWatchedUsed","rightElement","centerElement","xLink","leftLink","leftIcon","leftElement","itemsLength","itemsLimited","btnText","listUl","processedItem","buttonsContainer","button","listItem","getTileGridButtons","toggleMoreTextOverride","caption","getTileGridButtonsAll","gridProcessor","listProcessor","listTheme","paginationLessButton","paginationMoreButton","renderList","shouldRenderButtons","tileGridTheme","renderGrid","generateCookie","ANONYMOUS_FAVORITES_STORAGE_NAME","getAnonymousIdCookie","initAnonymousId","deviceId","initSegmentDeviceIdCookie","_addYears","setAnonymousFavoritesInStorage","anonymousFavorites","setPaginatedStorage","getAnonymousFavoritesFromStorage","getPaginatedStorage","resetAnonymous","removePaginatedStorage","handleAnonymousLogin","setUserAuthData","helperGetApiHeaders","helperAnonymousLogin","helperGetApiAccountRoute","parseJwt","base64","base64Url","jsonPayload","anonymousLogin","newAnonymousAccount","selectedAccount","BREAKPOINTS","gridItemProcessor","defaultImage","fallbackImageObject","displayBrand","getDisplayBrand","getNetworkLogoUrl","listItemProcessor","getFavoriteRequestOptions","pathKey","setFavoritesInStorage","stringifiedFavorites","setLocalStorageItem","getFavoritesFromStorage","getLocalStorageItem","addFavoriteToStorage","favoriteItem","mergeV1Favorites","v2","v2FavoriteIds","v2favorite","getFavoritesForAccount","accountType","v2Favorites","v1Favorites","getFavoritesDetailsForAccount","favoritesShowIds","helperGetFavoriteDetailsApiRoute","createFavorite","userAttributeEvents","onFavoriteAnalytics","setFavoritesAction","deleteFavoritesForAccount","onUnfavoriteAnalytics","deleteFavoritesAction","removeFavoriteFromStorage","upgradeJWT","upgradeJWTOptions","authEndpointConfig","helperGetApiKey","helperUpgradeJWT","deepLinkFavoriteSeries","setDeepLinkFavorited","querystring","checkDeepLinkFavorite","resetState","mvpdBuythroughData","renderContentBlackout","renderSignIn","renderMVPDExpireSignIn","renderMvpdDirectSignInRedirect","renderMVPDRetry","renderMVPDStart","renderMVPDSearch","renderMVPDIncomplete","renderNotEntitled","renderSuccess","renderLoading","renderFailure","renderPlaybackError","renderPreviewPassWelcome","renderUpsellError","successResources","playbackErrorText","iFrameHeight","signInTrigger","renderProfilePcsError","renderResumeWithProfile","renderResumeWithoutProfile","successTimeout","defaultState","renderExpiredPreviewPass","resumeWithProfileRendered","renderNoSportsOnMobileError","baseChannel","renderUnlockUpsell","isContentAuthorized","authorizedNetworkNames","contentNetworkNames","networks","updatedContentNetworkNames","networkName","networkNameOverride","getAuthorizedResources","authorizedNetworks","additionalNetworks","newAuthorizedNetworks","netw","fetchMVPDProvidersAction","helperGetApiRoute","nextPage","fetchNextMVPDProvidersPageAction","setPreauthorizedResourcesAction","resources","setRecommendationIdAction","setIsGoogleSignIn","setGoogleOneTap","googleOneTapEmail","setNewGoogleEmailAndToken","googleEmail","setEmailSubmissionSFMC","prospect","getDeviceIdFromCookies","deviceIdCookie","login","getDefaultClientlessOptions","getAuthEndpointConfig","requestor","getRequestorId","getDeviceType","mvpdCookieName","checkAuth","setMVPDToAppState","checkAuthOptions","checkAuthentication","fetchAnonymousDataAfterLogout","anonymousLoginResult","anonymousAccountAccessToken","tveEnabled","newMvpdData","newAccessToken","refreshTokenTimeout","clearLongTimeout","refreshOverride","clientlessTokenExpireRefresh","defaultRefresh","refreshJWTDelay","newRefreshTokenTimeout","setLongTimeout","accountResponse","accountAccessToken","getStoredAuthenticatedMVPD","getMVPDFromCookie","clearExpiredTokens","initialAccount","initialAnonymousAccount","initialMvpd","initialMvpdLogoutData","mvpdLogoutData","isTokenExpired","optimizelyUserAttributeEvents","getStoredAuthData","getMVPDCookie","getMVPDLogoutCookie","currentDeviceId","getSegmentDeviceIdCookie","segmentDeviceId","getDeviceIdOverride","getLatestAuthData","newAuthData","storedAccount","storedAnonymousAccount","storedMvpd","storedMvpdLogoutData","prioritizedAccountData","mvpdTokenExpiration","accountExpiration","mvpdLogoutExpiration","mvpdExpired","isTimestampExpired","mvpdLogoutExpired","latestStoredData","mvpdExpirationLongerThanLogout","accountExpirationLongerThanLogout","mvpdExpirationLongerThanAccount","getUserData","isMvpdSubscription","signOutUrl","lastClosedTime","amountOfSecondsSinceClosed","removeLocalStorageItem","urlIsExternal","saveData","buythroughScenario","buythroughDataCookieName","getCurrentAccount","currentAccount","upgradedAccountAccessToken","buttonLoader","setLoading","helperGetStaticContentUrl","NetworkImage","getTitle","getNetworkLogoUrlFromConfig","appLogo","getUrl","extended","extendedNetworkLogo","NetworkConfig","NetworkLink","disableLink","helperGetHomeUrl","indexIsSlash","linkProps","networkImageProps","networkImage","hideNetworkLogo","UpsellProgressBar","currentStep","steps","stepClasses","completed","connector","anchor","EmailSubmissionForm","emailInput","submitButtonText","sendEmail","headerText","emailSuccessIcon","emailSent","onSubmitCallback","legalCopy","emailHeaderText","emailPlaceholderText","buttonEnabled","buttonClasses","emailInputContainer","onEmailChange","helperMarkdownToComponent","legalDisclaimerText","emailSubmissionForm","emailAccessToken","authConfig","getBaseContentUrl","getEmailSubmissionUrl","getEmailSubmissionBody","Providers","createRef","topMVPDProviders","getSegmentMVPDEvents","onAllProvidersClick","onProviderClick","selectedChannel","showEmailForm","descriptionText","seeAllProvidersText","playerLinks","noProvider","needHelp","noProviderTag","generateLinkTag","needHelpTag","seeAllProvidersOnClick","isOptimizelyExperiment","seeAllProviders","allProviders","allProvidersButton","allProvidersButtonContainer","providerDialogRef","providersContainer","maxProviders","logos","logo","forceHttps","getTealiumSourceAuth","onboardingStartSource","checkAuthStartSource","setSegmentPageStartSource","setTealiumProfileId","auth_start_source","mvpd_select_type","callTealiumEvent","providerLogoContainer","providerTags","links","linkSeparator","supportUrl","Geolocation","bodyText","linkText","actionButtonText","primaryActionCallback","geoLocationTimeoutFail","bodyClass","actions","SUCCESS_COOKIE_NAME","MVPD_COOKIE_NAME","BUYTHROUGH_DATA_COOKIE_NAME","MVPD_LOGOUT_COOKIE_NAME","LOCKED_CONTENT_SOURCE","adobeAuthOptions","callSetConfig","backgroundLogin","backgroundLogout","linkObj","getNetworkLogo","getPreviewPassLengthFromName","previewPasses","getProfileSignInProps","signInButtonText","signUpButtonText","restartButtonText","moreBenefitsText","perks","headerIcon","perksHeader","headerPerkText","profilePerks","perkImageContainer","perkText","perksSeparator","profileSignInTheme","getSignInProps","signInText","signInPerks","perksContainer","perk","signInInvertContent","signInTheme","signInOnButtonClick","onboardSrc","setTealiumProfileStartSource","signInOnCloseClick","getCookiesBlockedProps","showCookiesBlocked","resetShowCookiesBlocked","headerTag","descriptionTag","getButtonTag","onSignInButtonClick","getCookiesBlockedChildren","cookiesBlockedTheme","renderCookiesBlocked","getFailureProps","sharedTheme","confirmTag","onConfirmClick","confirmContainer","contentChildren","failureTheme","getContentBlackoutProps","defaultHeaderText","defaultDescriptionText","contentBlackoutChildren","headerTextOverrideKey","descriptionTextOverrideKey","descriptionTextOverride","headerTextOverride","contentBlackoutTheme","getPlaybackErrorProps","isComcast","playbackErrorChildren","errorText","LINK_REL","playbackErrorTheme","getPreviewPassWelcomeProps","heading_60_min","heading_5_min","previewPassWelcomeText","previewPassWelcomeNetworkLogo","getPreviewPassImage","getProfilePcsErrorProps","profilePcsErrorChildren","profilePcsErrorTheme","getGeoLocationErrorProps","isGeolocationEnabled","geoLocationErrorChildren","failBodyText","getNoSportsOnMobileProps","noSportsOnMobileErrorChildren","errorContainer","primaryAction","getNotEntitledProps","onLogout","notEntitledCTAButtonText","auth_notEntitledError","auth_notEntitledInfo","auth_xfinity_notEntitledError","auth_xfinity_notEntitledInfo","closeOverlay","notEntitledErrorText","notEntitledErrorInfoText","secondaryLogo","providerLogoUrl","providerLogoImg","notEntitledLogo","notEntitledError","notEntitledErrorInfo","notEntitledChildren","headerBarExtraPadding","headerContainer","notEntitledTheme","getSuccessProps","networkList","allAccessText","limitedAccessText","noAccessText","headerBarTag","noAccessTextAddOn","noAccessLockIcon","authResourcesLength","networkListLength","isFullAuth","isPartialAuth","accessText","specialFormatting","networksTag","getAuthNetworksConfig","containerClass","networkLogo","logoImage","networkContainer2","continueButton","successInnerContainerChildren","successButtonItem","successTheme","getLoadingProps","onOverlayClose","onClose","loadingInnerContainerChildren","loadingBackgroundClass","loadingTheme","loadingOnClose","getMVPDSearchProps","mvpdProviders","headerBarText","providersText","providersTag","providers","providerId","mvpdSearchInput","onInputChange","onBackClick","desktopBack","inputContainer","mvpdSearchResults","noProvidersText","previewPassRemovedProviders","filteredProviders","lowercaseInput","alternateNames","nameMatch","alternateNamesMatch","isResults","isEmptyFilteredResults","defaultProviders","defaultProvidersTags","filteredProvidersTags","filteredProvidersContainer","noProvidersTags","providerContainer","renderTags","resultsContainer","helpLinkContainer","mvpdSearchTheme","mvpdSearchInnerContainerChildren","onBack","mvpdSearchBackgroundClass","mvpdSearchOnInputChange","mvpdSearchChildren","mvpdSearchOnClose","setTealiumSourceAuth","error_message","sso_permission","getMVPDIframeProps","mvpdIframeTheme","mvpdIframeInnerContainerChildren","getMVPDStartProps","showUpsellProgressBar","mvpdStartTheme","mvpdStartChildren","mvpdStartInnerContainerChildren","mvpdStartBackgroundClass","mvpdStartOnClose","getMVPDIncompleteProps","signInButton","buttonOnClick","mvpdIncompleteHeading","mvpdIncompleteSubheading","mvpdIncompleteChildren","mvpdIncompleteTheme","getMVPDRetryProps","signInErrorText","retryText","tryOtherProviderText","mvpdRetryHeading","mvpdRetryChildren","retryButtonClick","otherProviderClick","onCloseClick","maybeLaterLink","mvpdRetryTheme","getUpsellErrorProps","onAuthCheckComplete","upsellErrorTheme","upsellErrorChildren","upsellConfirmClicked","headerTextIneligible","descriptionTextIneligible","buttonTextIneligible","headerTextConfirmError","descriptionTextConfirmError","buttonTextConfirmError","upsellErrorBackgroundClass","upsellErrorInnerContainerChildren","upsellErrorOnClose","getUpsellConfirmProps","upsellConfirmTheme","upsellConfirmChildren","upsellConfirmBackgroundClass","upsellConfirmInnerContainerChildren","upsellConfirmOnClose","getAdditionalAuthorizedNetworks","authNetworksConfig","additionalAuthorizedNetworks","networkInfo","getProviderObjectFromList","mvpdProvidersList","getDefaultAuthProps","ratingHeader","ratingBody","contentHeader","authLimitedAccessMessage","authFailedMessage","genericError","noSportsOnMobileErrorHeader","noSportsOnMobileErrorBody","authorizingNetwork","mvpdBlackoutMessage","authZErrorMapping","403","1000","1002","1003","1005","1007","onAuthFailure","onAuthSuccess","providerClick","networkEntitlements","authentication_complete_type","page_preview_pass_length","getSegmentAuthTrackEvents","contentNoAuthZText","ratingNoAuthZText","noSportsText","authNetworks","getMVPDUpsellRedirectingProps","messageText","onConfirm","redirectingBackgroundClass","redirectingInnerContainerChildren","redirectingOnClose","redirectingTheme","zipCode","helperGetApiRouteById","designatedMarketingAreaResponse","designatedMarketingAreaData","getPreviewPassTime","previewPassEnabled","getMvpdDirectSignInRedirectProps","mvpdDirectSignInTheme","mvpdDirectSignInChildren","onUpgradeClick","primaryButtonText","secondaryButtonText","mvpdDirectSignInBackgroundClass","mvpdDirectSignInInnerContainerChildren","setAuthorizationToken","setMVPDLogoutDataToAppState","mvpdCookie","logoutOptions","helperAuthLogoutClientless","logoutResponse","logoutAccessToken","removeMVPDCookie","providerSet","refreshPage","getDmaFromVideo","isPreviewPassAvailable","getSessionStorageItem","getPreviewPassExpired","ATTEMPTED_AUTH","SUCCESS_AUTH","SIGN_OUT_ATTEMPTED_AUTH","SIGN_OUT_SUCCESS_AUTH","AUTH_EXPIRED","activateOptimizely","experimentId","getOptimizelyRedesignExperiments","getOptimizelyRedesignDisabledPages","getOptimizelyFakeCollectionData","setUserAttributes","attrData","browse","currentPageUrl","collectionItem","apiName","formattedName","Regex","profileState","authState","manualLogout","appVisitState","appVisited","numVisits","sessionIndex","video50PercentWatching","hasWatched50Percent","stored50PercentWatched","setInitOptimizelyAttributes","foxProfileAccount","mvpdName","isPreviewPassMVPD","modifyBreakpoints","screenBreakpoints","replaceScreenUrl","screenName","useMVPDLoginProfile","optimizelyLanguageStrings","overrideBaseName","overrideBaseUrl","defaultBase","tomatoBase","baseContentUrl","helperAddParams","apiURL","geoCookieLatitude","geoCookieLongitude","debugLocationAvailable","getGeoLatLongParams","apiURLParts","paramsPreExist","userDevice","deviceKey","marineAPIKeyEnabled","helperGetStubsApiKey","segmentId","inStatic","inStubs","sportsFeatures","apiKeyHeaderName","accessTokenHeaderName","skipApiKey","previewModeEnabled","helperAppendToUrl","dateRange","lat","lng","newUrl","concatToUrl","stubBaseUrl","stubEndpoint","pathKeyRoute","replaceUrl","OptimizelyReplaceScreenUrl","getContentUrl","helperConvertApiRoute","tests","txt","newUri","txtLocation","relativeScreen","contentHasKey","staticList","stubList","apiRouteURL","contentPath","staticHasKey","helperGetApiSeriesUrlRoute","showsQueryRoute","helperGetApiCategoryUrlRoute","categoryId","categoryIdRoute","categoryQueryRoute","helperGetApiProfileIDRoute","apiRoute","helperGetLiveUpNextUrl","axiosErrorHandler","DEFAULT_DEVICE","afSub2","afPrt","referral","afChannel","afSub1","afWebDPBase","isRetargeting","app","IOS","CHROME_OPERA","ANDROID","ANDROID_VOD","LIVE_IOS_ANDROID","APP_DOWNLOAD_CONFIG","getAppUrlForDevice","campaignOverrides","calcDevice","afWebDp","afDp","getAppUrlList","android","opera","watch","kindle","ios","determineBrowser","UA","browser","smartBannerPresent","breakpointView","smartBannerClosedCookie","smartBannerInstalledCookie","appDownloadPromptEnabled","getPreviewPassTimeDiff","previewPassTime","ppTime","ppDate","timeDiff","getChannelId","DropdownIcon","opened","iconStatusClass","primetimeNetworks","getLocalNetworkUrl","epgLinks","tabOrder","TAB_PRIMETIME","defaultTab","navLinkTab","scheduleLinkTab","isStatic","channelLogo","getTsMinutes","getHourInterval","hourIntervals","currentHour","currentAmPM","currentMinute","minuteStr","hourMinute","displayMinutes","dateTimeString","getStartingTs","currentInterval","calculateDurationWidth","halfHours","calculateWidthByDuration","getVideoTimeData","gridTotalHours","canScrollGrid","breakpointIsMobile","totalHours","startOfCurrentDay","endOfGrid","isEpgv2Enabled","endOfNextDay","startFormated","endFormated","startsInFuture","startsWithGrid","isCurrent","shouldBeVisible","withinSameDay","secUntilStart","isGapFiller","isVideoLive","getLiveVideo","isOverFlow","upNext","epgListingId","upNextItems","liveItems","epgItem","nonOverFlowItems","checkSameDayOfYear","oldDate","newDate","oldDateTmp","newDateTmp","formatDuration","getVideoData","dontRetrieveNetworkLogo","secondaryTitle","originalDescription","requiresAuthLive","getRequiresAuth","dummyTitle","isLiveNow","fallbackImage","airDate","rating","subRating","ratingText","moreInfoUrl","hashCallSign","watchUrl","seasonAndEpisode","displaySeasonAndEpisodeCounts","formatMovieMetadata","isSportsContent","isBeforeOriginalAirDate","shouldRenderLiveCta","isTimeShiftedLiveRestart","hideVODCta","shouldRenderVODCta","getMobileVideoMetadata","available","datePublished","primaryAirDate","ratingStr","getPrimeTimeMessage","selectedChannelPanel","firstPanel","primeTimeMessage","textMonday","textTuesday","textWednesday","textThursday","textFriday","textSaturday","textSunday","textDefault","mapDayToPrimeTimeMessage","displayPrimeTimeMessage","isInEPGDateRange","today","epgEndDate","dateArg","isDayAfter","dayAfter","getDayLabel","todayLabel","tomorrowLabel","getTimeLeft","timeLeftHours","timeLeftMinutes","timeLeftText","timeSepartor","checkForOverlap","listings","liveListing","overFlowProgramIdx","lateProgramIdx","overFlowPrograms","liveListings","listing","lateProgram","overFlowProgram","getDateDropdownFormat","isCondensed","getDateDropdownIcon","isOpen","isLastPanel","rowIdx","isReturningVistor","parseLiveVideoResponse","getEndDate","getLiveDateRange","getSeventyTwoHourInterval","getThirtySixHourInterval","APPVIEW_EXCLUDE","LAST_SESSION_PATH","cleanString","helperGetBaseUrlSlug","helperGetShowUrl","helperGetPersonalityUrl","helperGetVideoUrl","hasQueryString","trailingSlash","helperGetLiveUrl","contentName","helperGetShowsUrl","helperGetPersonalitiesUrl","helperGetMovieUrl","helperGetAccountUrl","helperGetNetworkUpsellUrl","helperGetFindUrl","originalCollection","collectionElement","decodedCollection","queryParams","filterElement","helperGetArticleUrl","helperGetGalleryUrl","helperGetShowPageUrl","showUri","pageUri","show","helperGetBioLandingUrl","helperGetCharacterLandingUrl","helperGetBioUrl","bioUri","helperGetShowsCollectionFilterUrl","collectionId","filterId","baseUri","helperGetCollectionFilterUrl","helperGetSeriesDetailUrl","seriesUri","helperGoToVideoDetail","articleUri","galleryUri","urlComponents","screenLocation","isWatchUrl","screenTxt","getUrlParams","getRelativeUrl","relativeUrl","vodplayer","categories","helperRouteMapper","isAppViewExcluded","componentName","externalUrl","getCampaignOverrides","searchParts","overrides","urlParamTypes","searchPart","typeIndex","urlParamType","onRouteChange","prevPath","helperForceTrailingSlash","setOptOutCCPACookie","getPreviousPathname","setSettingsPath","goToExternalSignIn","signInUrl","paramPairs","paramString","pairArray","getCurrentPath","setPathForReEntryRedirect","isFoxSoulResetPasswordPage","isResetPage","getVideoContainerTheme","getVideoDetailProps","dateCreated","contentSKU","showNetworkBug","tuneIn","actors","videoName","creditCuePoint","videoTypeName","getVideoTypeName","originalDate","seasonEpisode","formatedSubRating","movieMetadata","seriesMetadata","isMovie","getContentTypeName","subTitle","selectedSubtitle","showSubtitle","getEndCardDuration","upNextDurationSeries","upNextDurationMovie","upNextDurationDefault","handleSetFavorite","hasSeries","moreInfoAria","moreInfoText","onMoreInfoClick","Detail","Metadata","MobilePlayButton","NetworkBubble","pointerEvents","overlayContainer","PlayButton","thinIcon","renderProgressBar","onSubtitleClick","TileImage","shouldUseNativeClamp","titleProcessor","titleInfo","defaultPlayButtonClick","playButtonClickProcessor","playButtonClickLive","LiveTile","setFavorited","onSubtitleOnClick","onTileTitleClick","isNotUpcoming","isLiveCollection","currentLink","shouldRenderPlayButton","tile","liveTileShadow","rightDetails","SeasonTile","ClipTile","SeeAllTile","SearchTile","isTubi","tubiLogo","linkClasses","LIVE_TILE","SEARCH_TILE","Error404","branding","notFoundPage","colors","imageDesktop","imageMobile","homePageUrl","currentBranding","getNetworkBranding","isColorBackground","isImageBackground","renderCharacter","character","renderBackground","gradientBG","flatBG","backgroundStyle","renderCTAButton","buttonClass","renderMessage","leftWords","rightWords","linkIndex","messageLink","innerBackground","Error500","maintenancePage","isFullBGImage","renderColorBackground","renderImageBackground","backgroundOverlay","COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST","COLLECTION_TYPE_FTSLOCAL","COLLECTION_TYPE_LOCAL_CLIPS","COLLECTION_TYPE_SHOWCASE","COLLECTION_TYPE_SHOWCASE_CAROUSEL","isCarouselShowcase","COLLECTION_TYPE_GENRE","COLLECTION_TYPE_LIVE","TAB_SCHEDULE","HTML_ENTITY_BULLET","isFoxNowAppPage","getNetworkList","getPurchaseSourceCookie","parseJSON","getFontClassName","isClipTrailer","clipType","isEpisode","isMovieSeries","isSpecial","isTypePromo","isTypeVideo","isSports","getLocalClipPage","setLocalClipPage","removeLocalClipPage","getOomLivePlayerEnabled","setOomLivePlayerEnabled","removeOomLivePlayerEnabled","getLocalClipSectionTitle","setLocalClipSectionTitle","removeLocalClipSectionTitle","getLocalClipPlaylist","setLocalClipPlaylist","removeLocalClipPlaylist","getAdDebug","getAdSiteSection","getPrivacyParameterCookie","setPrivacyParameterCookie","setMVPDCookie","setMVPDLogoutCookie","getNetworkDisplayOrder","setNetworkDisplayOrder","getAdBlockDetectCookie","setAdBlockDetectCookie","removeAdBlockDetectCookie","profileConfig","baseConfigUrl","appVersion","environment","isDescTooLong","networkTemp","networkComma","getConfigNetworkLogoUrl","mobileDeviceType","getUrlParameter","urlName","nonFoxNowSkus","filterMissingDeepLinkItems","deepLinkSkus","deepLinkWeb","sku","filteredSkus","documentFake","getAuthZEntitlementIssues","errorStatus","authZEntitlementIssues","determineErrorFromResponse","determineErrorIfStaticRender","getErrorComponent","getError500Component","getError404Component","getSocialLinksFromContent","localIcon","structure","socialIconPath","socialIconPathLocal","formatDirectUrl","getUrlTarget","truncateText","charCount","truncatedText","truncatedTextWithoutBrokenWords","isArticleTab","isSportsType","hasSportsFeatures","stringToConcat","queryGlue","checkContentLabel","contentLabels","hasLabel","videoIsLive","baseLink","http","https","updateNextPanels","upNextVideos","newPanels","currentVideo","currentVideoId","currentVideoEndDate","nextVideoStartDate","nextVideoStarted","newPanel","itemIdx","resetCookies","fetchedLive","fetchedUpNext","getUpNextTimeouts","fetchCb","setTimeoutCb","newTimeouts","isUpNext","didFetchLive","didFetchUpNext","newTimeout","fetchData","fetchInMs","setFetchUpNextTimeout","fetchDate","getUpNextFetchData","getSeasonEpisodeCounts","episodeCount","useComma","seasonString","episodeString","seasonLabel","episodeLabel","isNews","getMovieMetadata","castProcessor","actor","getVideoIdFromUrl","getEPGListingIdFromPlayerScreenUrl","splitUrl","epgListingIndex","requiresAuthVod","requiredEntitlements","vodRequirements","liveRequirements","getAuthForPanelVideo","getAuthorizingNetwork","longTimeout","longTimeoutObject","plurarize","singular","plural","slugify","formatUpcomingDate","startingDate","labelToday","labelTomorrow","videoStartsToday","videoStartsTomorrow","videoStartsNextWeek","_differenceInDays","dateLabel","formattedTime","isLiveItem","isInFuture","isLiveVideoExpired","isCurrentLiveContent","itemIsExpired","itemIsUpcoming","getSecUntilTimestamp","calculateNextRefreshForPanel","liveContent","upcomingContent","dateStringToTimestamp","endTimestamps","startTimestamps","startingSoonTimestamps","timestamps","nextTimestamp","secUntilNextTimestamp","getPreviewVideoCTAText","series","seriesCollection","special","isSeriesPanel","isCategoryPanel","isTypeCategory","isSeriesCollection","isCategoryTypePersonality","shouldBlockEndcardsForTrailer","isTrailer","isBlocked","tryRequest","getCarouselBreakpoint","isLocalStorageNameSupported","valueCopy","storageBlockName","parsedData","getDomain","urlItems","storage","VCHIP_RATINGS","expiration","setMVPDClosureValue","getApiUrl","placeholderValue","urlParams","getApiHeaders","xSignatureEnabled","sendHttpRequest","getPreviewPass","mvpd_id","checkPreviewPass","setMVPDState","getAuthentication","firstScreen","redirectUrl","device_type","first_screen","redirect_url","checkAuthenticationRequest","apiOptions","setProvider","tokenTTL","tokenDiff","newMvpdCookie","getMetadata","checkAuthenticationOnWindowFocus","documentFocusTimeout","authResult","logout","helperRemoveCookie","ccpaOptOutCookie","ccpaOptOutEnabled","cookieCheck","isGlobalSetTrue","optimizelyExperimentName","activeExperiment","autoplayEnabled","helperGetCookie","AutoplayEnabled","blackoutEnabled","secondScreenProfileEnabled","SecondScreenProfileEnabled","currentPosterHoverEnabledCookie","currentPosterHoverEnabled","simplifiedPosterHoverEnabledCookie","simplifiedPosterHoverEnabled","additionalPosterEnabled","getBlackoutConfig","externalBlackoutConfig","blackoutEnabledOverride","blackoutConfig","blackoutDurationOverride","nationEntitledCookie","isNationEntitled","geolocationEnabled","PreviewPassEnabled","previewPass60MinDisabled","mvpdDeeplinkEnabled","MVPDDeeplinkEnabled","getFormattedDomain","BaseUrl","setDebugCookie","setDebugFromUrl","hashSegments","hashString","getUrlParamsFromHash","adDebug","adSiteSection","isOptedOutCCPA","isOptedOutSeenCCPA","locationCookieOverride","configCookieDuration","isEpgSearchEnabled","EpgSearchEnabled","isEpgLiveMiniPlayerEnabled","EpgLiveMiniPlayerEnabled","isConsolidatedLogin","ConsolidatedLoginEnabled","isSSARedirect","SSARedirectEnabled","seriesAnonymousEnabled","seriesV2Enabled","SeriesDetailV2Enabled","liveTileCollectionV2Enabled","LiveTileV2","strikeBannerEnabled","Links","lastLinkStyle","linkStyle","linkClassNames","onlyActiveOnIndex","clipsLabel","primetimeLabel","creditsLabel","characterHeader","watchLabel","generateItem","getShowData","showName","getArticleData","article","pageId","getSeriesArticleData","siteScanUrl","helperGetSeriesArticleUrl","getCharactersDetailData","creditsData","charUri","getClipsData","getPrimetimeData","liveScheduleUri","liveUri","helperGetLiveScheduleUrl","getSeasonData","currentSeasonLabel","seasonSlug","seasonUri","getWatchData","episodeId","episodeName","getEpisodeName","isMovieData","shouldAddWatchLabel","watchUri","getEpisodeData","preprendWatchLabel","getHelmentItem","personalitiesLabel","liveLabel","newsLabel","sportsLabel","BRANDING_NAME","HOME_ITEM","PERSONALITIES_ITEM","NEWS_ITEM","SPORTS_ITEM","breadcrumbsArticleDetailParser","articleData","breadcrumbsCollectionParser","breadcrumbsLiveParser","selectedTab","savedVideo","liveItem","liveData","breadcrumbsFoxLiveParser","breadcrumbsSeriesDetailParser","seriesDisplayType","genres","subGenres","shouldDisplayNews","shouldDisplaySports","genre","showData","secondLevelBreadcrumb","seriesDetailData","shouldAddClips","shouldAddArticle","shouldAddSeriesArticle","shouldAddCredits","shouldAddCharacters","shouldAddCreditsDetail","shouldAddCharactersDetails","shouldAddSeason","getCreditsData","getCharactersData","getCreditsDetailData","breadcrumbsShowsParser","selectedFilter","getShowsData","getShowsFilterData","breadcrumbsWatchParser","localClipHeadline","localHeadline","isClipData","movieData","getMovieData","seasonData","showTabData","watchData","Breadcrumbs","customStyle","filteredData","helmetData","screenData","json","itemListElement","getHelmetData","metaNameTags","robots","appleMediaServiceSubscription","twitterCard","twitterSite","twitterUrl","twitterTitle","twitterDescription","twitterImage","appleItunesApp","googlePlayApp","kindleFireApp","msApplicationId","msApplicationPackageFamilyName","linkRelTags","canonicalUrl","shortUrl","appleTouchIcon","androidTouchIcon","windowsTouchIcon","favIcon","metaPropertyTags","fbAppId","ogSiteName","ogType","ogUrl","ogTitle","ogDescription","ogImage","setHelmetTags","tagItems","metaNameTag","linkRelTag","metaPropertyTag","extraTags","translate","getFontHelmetTag","staticWeights","graphik","fontEmbeds","brandOverrideMetaTags","contentNetwork","allowedNetworks","fetchFooter","fetchFooterPromos","fetchLive","nextView","nextUrl","fetchNextPage","panelUrl","livestreamId","StrikeBanner","isLoaded","setIsLoaded","setIsInitialized","uspString","ids","afterLoad","Strike","addScript","scriptUrl","scriptTag","CloseButton","closeButtonContainer","foxFallbackImg","ModalImage","onPlayButtonClick","imageContainer","TuneInMeta","retired","setTimeLeftText","ampm","formatUpcomingTime","retiredTuneInLabel","dayLabelText","tuneInText","metaText","getArticleApiId","articleUrl","getArticleApiUrl","getArticleFromAlternateUrl","articles","altUrl","IFRAME_TEST_PATTERN","SCRIPT_TEST_PATTERN","getPersonalityTabSlug","tabs","noTabHomepage","getTabName","tabType","isTabGrouped","getPersonalityTabUrl","isSubmenu","tabSlug","tabPageId","getTabPageId","PANEL_TYPE_EPISODES","PANEL_TYPE_CLIPS","PANEL_TYPE_CAST","GROUPED_PANELS","getTabSlug","directUrl","firstDirectUrl","getTabUrl","hasChildren","getSelectedTabIndex","noTabState","subTabIndex","isTabSelected","childTabs","childIndex","getPromoData","promo","clearFetchNodeInterval","currentFetchNode","currentFetchInterval","checkForDOMNode","nextNodeId","currentNodeId","fetchNodeInterval","nodeTop","scrollToElement","nodeFetcher","clearNodeFetcher","elementId","hasPrePremiereVideo","isInlineComponent","isContinueWatchingComponent","isVideoComponent","isPromoItem","isValidPromoItem","isCreditsItem","getCTAUrl","getTabDataUrl","isPlaylist","isSeasonPanel","getSeasonCount","getCreditIdFromUrl","credits","selectedCredit","credit","getFeaturedBio","bioProfiles","pageIdMatch","foundObject","isAboutSection","section","buildArticle","isArticle","getDetailData","inlineComponent","latestEpisode","screenTypeId","oldestEpisode","promos","calendar","latestEpisodeBadges","isLatestEpisodeLive","videoComponents","continueWatchingComponents","continueWatchingItems","continueWatching","seo","showBrandingPanel","tabComponents","hideIfNotLoggedIn","nonPromoComponents","promoComponents","castMembersWithImages","castMembers","sections","aboutLink","getLinks","seriesSortOrder","sectionOrder","nftItems","isAbout","isClips","isHowTo","isNFTRewards","isNFTCountdown","isUniq","seasonIndex","clipsIndex","getSectionOrder","getTabsOfMultipleTypes","getSelectedItem","urlMatches","slugMatches","Title","DescriptionMeta","timeSeparator","durationText","getDurationText","descriptionMeta","ActionButton","shouldRender","iconContainer","actionLink","FavoriteButton","global_watchlistButton","global_watchlistSetButton","tealiumEventPageTypes","favoriteButtonProps","favoriteButton","FutureCellModal","infoContainer","headerName","CarouselItem","upcomingOverlay","callSignMap","seriesRedirectMap","linkOverride","upcomingOverlayClick","tileImageIndex","CarouselItemWrapper","episodeTitle","descriptionBlock","Logo","PosterCTA","MORE_EPISODES","posterCTA","Video","setInitialRender","videoContainer","previewContainer","videoPoster","shadowOverlay","moreRoute","isSimplifiedHoverEnabled","autoPlayStill","latestEpisodeId","latestFullEpisodeId","screenUrl","showUrl","latestEpisodeRoute","playerRoute","overlayHeader","logoContainer","PosterContent","setIsHover","setPlay","hasOverlay","noPreview","posterHoverProps","hideLatestBadge","posterContents","posterVisible","Poster","isSeriesDetailAnonymous","moreLink","overrideAdditionalPosterStyle","overrideTheme","CarouselPoster","posterType","carouselItemContainerStyle","posterProps","WATCH","MORE_EPISODES_ELEMENT","Carousel","lastSlidePaginated","newBreakpoint","newFavoritesManager","newHeadline","newItems","newSlideIndex","roundArrows","carouselArrowOnClick","prevArrowIcon","data-role","onLastSlide","nextArrowIcon","showCarouselArrows","useScrollableDiv","addCarouselPlaceholders","collectionVerticalPosition","itemToScaleFromRight","itemToScaleFromLeft","carouselItems","customizedItem","itemSubtitle","seriesDetailVerticalPosition","actionSearch","pageActionType","page_collection_id","page_recs_collection","page_ui_element","fallbackSubtitle","eventAction","itemProps","placeholderCount","featuredTitleImage","seeAll","isFirst","defaultTheme","seoHeaderWrapper","imageOnly","headlineWithSeeAll","allowScrollLock","isInfinite","disableScroll","updateVisibleSlides","autoplaySettings","isHalfWay","bodyOnly","nextSlide","prevSlide","isPartnerCollection","sliderContainer","getNextArrow","networkFallbackImages","fox","foxnation","fs1","fs2","externalRedirectProcessing","newVideoData","redirectRules","testLink","newLink","requiresAuthElement","lockClass","hideLockIcon","titleTheme","isSeasonEpisode","isLiveSeasonEpisode","lockClasses","lockElement","titleParts","lastWord","getHomeSubtitleText","currentSeasonNumber","seasonEpisodeFormats","short","regular","videoIsClip","videoIsSeries","shouldHideVideoSubtitle","subtitleParts","dot","subtitleDate","subtitleTags","subtitleLastWord","subtitleWrapper","prioritizedNetwork","userRating","isNetworkAuthorized","isVideoAuthorized","contentIndex","userIndex","isRatingAuthorized","getVideoObjectImages","tileImageType","currentScreen","modifyTileImages","modifiedScreen","modifiedImageType","optimizelyModifyTileImage","getVideoObjectImage","isLocalClips","audioOnly","contentFlags","isAudio","isEpgListing","startsAt","endsAt","videoIsUpcoming","itemBadge","helperGetItemBadge","isTileFaded","helperFormatRating","getPlaylistHash","playlistId","seriesVideoProcessor","imageObj","episodeNumFormat","liveLink","episodeSeasonAndTitle","isTypeEPGListing","handleTealiumButtonAction","upsellPromoThumbnailBug","upsellPromoThumbnailButton","upsellVideoData","clipsVideoProcessor","watchVideoProcessor","timeSinceAired","watchListVideoProcessor","badgeNowPlaying","searchListVideoProcessor","detailUrl","watchPlaylistVideoProcessor","watchListPlaylistVideoProcessor","replayVideoProcessor","titleValue","liveUrl","listProcessorWithAnimation","latestEpText","animation","animationDelay","showCTAs","latestEpisodeLink","moreInfoLink","showLock","latestEpisodeText","scheduleItemVideoProcessor","seriesCollectionVideoProcessor","endcardVideoProcessor","badgeComponent","titleComponent","linkHash","primeTimeVideoProcessor","getPrimetimeScheduleItemBadge","seasonEpisodeNum","singleStationVideoProcessor","videoIsTypeLive","homeLinkTileCarouselProcessor","linkData","baseUrlSlug","homeCarouselVideoProcessor","isNationStubData","isVideo","processedProps","collectionInfo","isReplay","isSeriesPromo","watchButtonText","hoverImageObj","formattedRating","videoIsMovieType","videoIsSpecialType","isSportingEvent","affiliateLogoFallback","autoPlayVideo","playlistHash","videoStartsWithinFiveMinutes","videoIsCurrentlyLive","seriesSeasonEpisode","seriesPlayerScreenUrl","seriesRating","seriesSubRating","seasonNumberOldestEpisode","episodeNumberOldestEpisode","moreEpisodesText","seriesSquareFallback","homeVideoProcessor","videoTitle","videosSubtitleText","videosSubtitle","hasNetworkLogo","videoIsEpisode","videoIsSports","videoIsSpecial","videoIsMovie","videoIsContinueWatching","seasonEpisodeDisplay","currentSeasonNumberFallback","continueWatchingText","watchClipText","watchLiveText","watchNowText","homeVideoOverlayProcessor","videoPosterImage","posterReleaseYear","posterHours","posterMinutes","conditionalDot","showPlayHoverIcon","fakeCollecitonData","actionButtonsInHeader","actionButtonsInNav","backgroundImagePath","brandingTitleClampSize","carouselLimit","posterLimit","posterToScroll","renderAltHeader","showLogoPath","showTileMetadataOnHover","socialLinks","tabsInAltHeader","videoBackground","useSeriesLogo","FoxContentDensityBreakpoints","Divider","dividerLine","LiveCarouselSection","dropdownHeadline","epgItems","selectModalVideo","liveCarouselProps","getAdditionalVideoProcessProps","searchInput","setPanelCount","getPanels","currentLivePanels","currentUpcomingPanels","panelItem","livePanels","upcomingPanels","searchPanels","setPanels","sortedLivePanels","sortedUpcomingPanels","epg_backToScheduleButton","SearchResults","onClearSearch","setCurrentVideo","useSelector","useSearchResults","epgCarouselProps","noResultsContainer","noResultsText","getNoResultText","epgStyle","epg_dayAfterFilterButton","epg_liveNowFilterButton","epg_tomorrowHeader","epg_tonightFilterButton","search_inputPlaceholder","FilterSearchBar","atStartDate","atEndDate","onFieldChange","gridNext","gridPrev","gridStart","gridTonight","gridTomorrow","gridDayAfter","focusSearch","setFocusSearch","trackEventCalled","setTrackEventCalled","setFocus","focusClass","inputClass","disabledClass","currentBreakpoint","btnWrap","filterContainer","tonight830PMTime","searchInputBox","onBlur","arrowContainer","defaultEqualityCheck","defaultMemoize","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","maxSize","resultEqualityCheck","createCacheKeyComparator","put","createSingletonCache","cacheIndex","createLruCache","matchingEntry","clearCache","getDependencies","funcs","dependencies","dep","dependencyTypes","createSelectorCreator","memoizeOptionsFromArgs","createSelector","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption","_directlyPassedOption2","finalMemoizeOptions","memoizedResultFunc","lastResult","recomputations","resetRecomputations","createDeepEqualSelector","useCurrentPositionAndTime","startingTs","totalMinutes","setCurrentTime","getMinutesElapsed","minutesElapsed","newMinutes","CurrentTimer","leftStyle","currentTimerContainer","currentTimerTime","currentTimerArrow","epgLoader","epgWrap","times","EPGItem","endingDate","selectedVideoData","renderedItems","setRenderItem","calculateBlockWidth","videoTimeData","previousTimeData","gridStarts","runsOver","prevEnd","prevEndDate","startingHours","startingMinutes","startingTime","dateHours","dateMinutes","checkAtStarting","currentShown","lateProgramEndDateString","videoStartDate","videoEndDate","lateProgramEndDate","isBeforeLateProgram","videoIsGapFiller","isDummy","previousBlock","prevStartDate","cellAfterPrev","cellStartsBeforePrevEnds","cellEndsAfterPrevEnds","cellEndsAtGridEnd","prevVideo","selectedTime","lastBlockEndDate","addDummyBlocks","itemStyle","progressStyle","timeTil","dateEnd","hourLabel","hourText","minText","formatTimeLeft","twoDaysLater","startsAfterTwoDays","timeAtStart","hrs","calculateTimeTil","trancatedTitle","subtitleSeason","timeContainer","timeMeta","timeMetaHovered","titleContainer","subtitleContainer","renderItems","scheduleMain","router","cacheSetting","dateModified","hideIfLoggedIn","imageTypes","itemsPerPage","validFor","sourceUrl","imgSourceUrl","isOver24HoursAway","LiveImage","showProgress","setLiveProgress","setImageUrl","progressBar","EPGRow","defaultProgram","epgGridPage","globalVideo","saveLiveRestart","setOverlay","firstItem","currentItem","currentImage","hasSports","scheduleRowClassName","epgItemProps","programs","overflowRows","overflowCount","scheduleLeftClasses","overFlowScheduleRowClassName","overFlowRowIdx","overFlowItem","endDateIsAfter","isCurrentLiveListingOver","overflowImage","scheduleLeftContainer","isOverflow","renderCallSign","setSelectedDate","EPGTimeline","fetchLiveAction","getEPGHourInterval","timelineClass","scrollDate","setScrollDate","dateToday","setDateToday","dateTomorrow","setDateTomorrow","dateDayAfter","setDateDayAfter","observedTimes","intervalElement","data-date","timelineWrap","EPGGrid","stickyHeight","panelContainer","timeline","topStyle","changeDate","prevBreakpoint","setStartingTs","setStartingDate","setEpgGridPage","prevRowIdx","EPGRowProps","scheduleGrid","onScroll","syncScroll","makeSelectLivePanelsData","LiveCollections","imageRender","useRef","getSegmentLiveCollectionCount","epgCollections","collectionsContainer","FoxLive","selectedVideo","setVideoCountdown","modalVisibility","setModalVisibility","setSearchInput","setSelectedDateState","setShowPlayButton","inputChangeTimeout","showPlayButtonInterval","minutesLeft","handleOnClearSearch","handleOnSelectVideo","newSelectedDate","tomorrow7PM","newEpgGridPage","outOfMarketLivePlayerData","handleOnFieldChange","handleOnSearchChange","handleOnCloseModal","onChannelSelect","Live","defaultChannel","panelTimeouts","firstChannelClick","liveVideoFetched","newRelicStart","selectedChannelCallSign","setLivePage","startedPlayback","playbackPersistedFromPreviousScreen","preventGlobalPanelSet","clearLive","prevAccessToken","prevCoordinates","prevPanels","prevRouteParams","prevSavedVideo","userLocationChanged","panelsChanged","accessTokenChanged","savedVideoChanged","videoIdChanged","urlVideoIdChanged","setPanelTimeouts","pageViewEvent","getUseUtagGlobal","sourceCollection","getTealiumSourceCollectionGlobal","getSegmentLivePageName","prevPanelTimeouts","sameDay","hasPanels","showLoader","outOfMarketLivePlayerUrl","epgContainerClasses","breadcrumbClasses","breadcrumbsData","breadcrumbs","adblock","globalPlayerDisabled","isPlayerLoaded","livePanel","mvpdData","primeTimePanelCount","primeTimePanels","streamExit","fetchLocalData","fetchLivePanel","countdownVideo","fetchLivestream","setCoordinates","setGlobalShouldResetStillWatching","setIsPlayerLoaded","setPreauthorizedResources","defaultChannelVideo","disableRender","ALL_PAGES","optimizelyResults","setDisableRender","playerType","isContentFinished","upNextUrl","setScreenInControlOfState","PrimeTimeUpdater","nextHourInMS","_startOfHour","Dropdown","onCloseDropdown","linkTo","originalName","onClickParams","labelDetail","isSelected","accessibilityOverride","useLabelDetail","getSelected","openSubmenu","firstItemName","contentClasses","itemClasses","displayResults","expandedHeaderCopy","getIcon","onOpenDropdown","showMobileCancel","preserveTitle","isError","selectedText","partitionedItems","singleMenuItems","groupedItems","renderGroupedItems","itemTags","itemContainerClass","itemContainer","containerClasses","headerClasses","headerInnerContainerClasses","selectedTextClasses","OVERLAY_BREAKPOINTS","shapeFilters","filters","newFilter","onFilterClick","fetchList","ignoreUpdatingUrl","openDropdown","pageIdLocation","pageElement","defaultHeadline","CountdownText","sec","onCountdownEnd","isVideoContainer","trackingPageType","enableTruncateDesc","ScheduleItem","openItemId","openRow","prevOpenRow","restoreLiveGridState","nextOpenRow","dropdownDateClosed","nextEpgGridPage","loadingGrid","textLoading","textProgramNotAvailable","textPrePrimeTime","showPrimeTimeMessage","selectedDateCalc","getDummyTitle","scheduleItemDetailsCB","resetStillWatchingTimeout","newopenItemId","newRowIdx","getVideoById","switchChannelCB","detailContainer","labelMoreEpisodes","labelWatchLive","labelWatch","labelRestart","metadataSource","restartData","videoIsSportsContent","isAuthZ","ctaDetails","actionButtonsClasses","handleWatchLive","tealiumScheduleWatchLive","getTealiumLiveEvents","watchLiveButton","videoIndex","isSportsVideoLive","liveBtnClasses","vodText","restartBtnClasses","tealiumScheduleRestart","patload","setSegmentRestartedPlaybackGlobal","showCountdownSeconds","shouldShowTimer","countdownBtnClasses","buttonKey","secondaryText","mobileActionButtons","actionButtonsElement","detailDescription","enableFeature","truncateDesc","detailContainerRight","renderOverflowDropdown","shouldRenderSubtitle","detailContainerLeft","detailTitle","detailSubtitle","detailInfo","favoriteTheme","payloadd","hoverTitle","styleWidth","arrow","detailsElement","caret","overflowHoverEffect","dropdownTheme","mapDispatchToProps","withRouter","totalRows","splitStyleTop","splitStyleBottom","timerClasses","timerContainerClass","splitTimer","fullTimer","intervalCount","ScheduleGrid","dropdownNetworkOpen","EPG_TOTAL_DAYS","getSelectedDate","resetTimer","checkSameDay","newOpenRow","dropDownformat","todayHeader","tomorrowHeader","tabDateLabel","defaultNetworkLogoElement","networkLogoElement","lclRowIdx","dropdownZIndex","scheduleItemProps","clearQuery","scheduleGridComponent","programId","timelineMain","noScroll","gridLoadingClass","timelineLeft","timelineEmptyArrow","gridLoader","AltHeader","isAltHeader","isNavScheduleRendered","persist","stickyHeaderCallback","titleClassName","headerWithNav","stickyClasses","fallbackBackground","backfaceVisibility","App","Shared","ContentDetail","VideosTab","HeaderImageTitle","DropdownPrimetime","PromoList","SeriesDetail","StringList","VideoPlayer","getDefaultThemes","webIds","wrapComponentsWithThemeProvider","styleguideThemes","wrapComponentsWithStyleguideThemeProvider","getTheme","webThemeIds","addClassesToElement","classesToAdd","isValidArray","theClass","removeClassesFromElement","classesToRemove","addBodyClass","addHTMLClass","removeHTMLClass","enableOverflowDropdown","PrimeTimeItem","watchLiveClick","restartClick","canRestart","actionsButtonsElement","renderCTAButtons","metadataElement","openIdx","openIdxDate","renderDetails","toggleItem","itemZIndex","dropdownSharedTheme","dropdownPrimetimeTheme","renderStickyHeader","renderDesktopGrid","showScrollingDate","showDesktopTheme","defaultDateFormat","showMobileControls","PrimeTimeGrid","seeAllClicked","selectedChannelIdx","dropdownOpen","scrollToDateOnMount","uniqueDatesFromPanels","selectedHour","isDefaultSelected","isCurrentlySelected","newDates","scrollOptions","elementName","newOpenIdx","newOpenDate","channelIdx","restartButton","restart","watchLive","defaultDate","hasDateLabel","lastDateLabel","headerRow","initialDisplayCount","abbr","getTimezone","tileClassName","cta","selectedFormat","useSelectedDate","selectedDateText","dateText","dropdown","filterGridByDay","selectedDateFormatted","shouldHideDay","TODAY","dayLabel","dateKey","currentTheme","renderDesktopItems","renderMobileItems","overflowDropdownOpen","dayElement","dateElement","renderSeeAll","dateHeader","handleWaypointScroll","seeAllButtonContainer","primeTimeItemProps","groupedBySchedules","sortedSchedules","getSelectedTab","setGlobalPlayerScreenInControlOfState","successCookie","nextPanels","prevParams","nextParams","prevCallSign","nextCallSign","clearGlobalVideo","prevSelectedVideo","prevSelectedDate","userSelectedChannel","gridDayChanged","skipPrimetime","newCallSign","setGlobalVideoDisabled","textSeparator","bannerCopy","urlCallSign","newChannel","getChannelIdxFromVideoId","currentVideoIndex","videoFound","newSelectedTab","nextSlug","currentVideoHasNav","nextVideoHasNav","currentVideoHasSchedule","nextVideoHasSchedule","fetchPrimeTime","backgroundUrl","shouldDisplayBanner","playerSpacer","primeTimeGridProps","panelSchedule","videos","upcomingVideos","getSingleStationSchedulePanels","globalNavPrimetimeTickerEnabled","primeTimeText","scheduleText","tabTitles","getLiveTabSlug","tabButtons","urlVideoId","breadcrumbsTheme","epgContainer","overrideDigitalChannel","setGlobalVideoPanel","prevSelectedVideoData","prevSelectedChannel","channelList","channelIndex","selectedPanel","panelItems","livePanelItems","epgItemIndex","newProgram","playerScreenUrlChange","channelChange","setSegmentContextSourceLive","nextPath","oldSelectedDate","handleStreamExit","wasLive","homePath","renderStreamExit","exitCopy","exitHeader","renderStrikeBanner","bannerProps","renderAuthContainer","setIsAuthenticated","setStreamExit","FoxLiveWrapper","messagesCallback","BroadcastChannel","onMessage","canBeUsed","averageResponseTime","microSeconds","ttl","timeMap","_removeTooOldValues","removeTimeout","eMIs","messagesCallbackTime","closed","_isListening","_onMessageListener","_addEventListeners","internal","_unSendMessagePromises","_beforeClose","_preparePromises","_channel","_options","isLeader","_isApplying","_reApply","_unloadFns","_intervals","_duplicateListeners","_duplicateCalled","_onBeforeDie","die","responseTime","applyOnce","_awaitLeadershipPromise","fallbackInterval","onBeforeDie","postInternal","J","emitOnAllTabs","resume","_leaderElector","awaitLeadership","onIdle","onActive","onDuplicate","idle","isAllIdle","setAllIdle","lastActive","lastIdle","idleTime","tId","eventsBound","callbackRefs","_onAction","onAction","eventsThrottle","_handleEvent","startOnMount","startManually","_toggleIdleState","isIdle","getRemainingTime","getElapsedTime","getLastActiveTime","getLastIdleTime","getTotalIdleTime","getTotalActiveTime","_setupTabManager","_bindEvents","_unbindEvents","crossTab","stopOnIdle","N","X","Y","V","H","Q","Z","$","ee","te","ne","ie","se","ce","ue","ae","de","pe","le","he","me","fe","ve","ge","be","Te","ye","VideoHero","addShadowOverlay","anonymousView","posterClass","wrapperPosterVideo","wrapperBlack","fetchPanel","setFirstPage","panelData","Panel","nextPanel","nextPanelData","nextPanelUrl","nextShouldFetchMore","calculateValidFor","actionFetchNextPanelPage","hasInfiniteScroll","hasMoreItems","headerGenerator","routeGenerator","actionSetTimeout","shouldFetchMore","actionToggleFetching","newPanelUrl","newPanelData","nextPanelPaginationUrl","paginationUrlChanged","initialFetch","nextValidFor","getPanelData","newTimer","propsToWatch","panelPropsToWatch","nextBreakpoint","nextPropsToWatch","nextPanelPropsToWatch","lastChange","getPanelLastUpdated","nextChange","isSame","panelPropsToCompare","nextPanelPropsToCompare","actionFetchPanel","actionClearTimeout","onRef","actionSetFirstPage","hasItems","hasMembers","hasTypes","fetching","fetchNextPanelPage","toggleFetching","VideoHeader","videoElementID","setHeaderImageState","loadVideo","prevIsVisible","loadPoster","createUniqueId","listenerParsedVideo","listenerAttachedVideo","isHeroCarousel","themeSingleVideoHeader","promoTypeIsShowcaseBurntIn","networksBar","videoHeaderClassNames","handleTitleClick","watchLink","shadowOnPlayButton","foxAwesomeLayout","videoTagListener","handlePauseOnScroll","videoElementHeight","backgroundClass","innerContainerChildren","innerContainerChildrenParams","containerStyle","innerContainer","MoreInfo","MoreInfoButton","showFullScreen","outerContainer","BUTTON_TYPE","PRIMARY","SECONDARY","TRETIARY","buildInfoTags","canDisplayRestartButton","isDescriptionOpen","toggleDescription","headerImageState","clipMetaData","videoHasLiveUrl","liveMetaData","liveVideoEnded","lockButtons","movieMetaData","originalAirDateMetaData","seasonEpisodeMetaData","upcomingMetadata","isRestartEnabled","moreClipsText","descriptionMoreText","descriptionLessText","playNowText","restartText","startWatchingButtonText","showcaseWatchNowText","isWatchBtn","isResumeBtn","primaryButtonIsPlayButton","secondaryButtonClasses","tertiaryButtonClasses","descriptionClasses","primaryButtonIcon","primaryButtonViewBox","detailPageAvailable","getShowcaseType","primaryButtonLink","restartLink","secondaryButtonLink","isRestartSecondaryBtn","tertiaryButtonText","tertiaryButtonLink","isRestartBtn","highlightClass","highlightText","isDescriptionLong","buttonContainerClasses","descriptionButtonClasses","descriptionButtonText","descriptionButton","descriptionComponent","handleSegmentItemClick","tealiumRedesignEvents","getTealiumRedesignEvents","tealiumCollectionEvents","totalCollections","handlePrimaryClickAnalytics","handleSecondaryClickAnalytics","isWatchLiveSecondaryBtn","handleTertiaryClickAnalytics","isPreviewSecondaryBtn","handleButtonClickAnalyticsEvent","displayDescription","displayLocationRequired","overflowCtaEnabled","slideDragged","InfoTags","heroClickMouseDown","heroClickMouseUp","newLeftBound","callCollectionImpressionEvent","onPrimaryButtonClick","onWatch","overridePlayButtonLink","setSuggestedChannel","smallCollectionHeader","alternativeHeadline","fadeButtons","originalVideo","previewLink","seriesLogo","itemIsSportsContent","badgeTag","progressBarComponent","primaryButtonClasses","handleLiveClick","isClipsLocalShowcase","isOverridePlayButton","secondaryLinkOverride","stillBackgroundImage","video_id","video_name","setSegmentResumedPlaybackGlobal","RESUMED_PLAYBACK","panelIdx","displayActionButtons","foxAwesomeContainerStyles","kicker","isSeriesLogoImage","seriesLogoOrText","moreInfoKey","heroPlayerCTAClasses","showKicker","showcaseTitleImage","infoTagsRedesignContainer","desktopCTAs","InfoTagStyle","mobileCTAs","renderCTAs","saveLiveVideo","HomeSlideHeader","disableSingleVideoHeroRender","showHeaderBelowTags","heroImage","testTag","disableVideoRender","videoBackgroundImage","promoBackgroundImage","promoBackgroundVideo","onSelection","removeVideoHero","setVideoHero","disableVideoForPromo","dontRenderVideo","videoPlaceHolder","allowInfoToggle","hasSingleSlide","showLiveButtons","infoTagProps","slideId","SlideStyle","data-name","renderHeaderComponent","HomeSlidePromo","headlineInside","altHeadline","subDescription","uId","formattedUrl","showButton","headlineComp","descriptionComp","buttons","isDmaMatch","dmas","metroCodes","allAreas","areaMatch","metroCode","isTypeMatch","isLiveContent","lowercaseTypes","isVod","isChannelMatch","lowercaseChannels","allChannels","hasNetwork","getBlackoutZones","cableProviderBlackoutZones","zone","dmaMatches","typeMatches","channelMatches","blackoutDefinitions","cableProviderId","contentRequiresAuth","getDesignatedMarketingAreaData","lowercaseCableProviderId","providerBlackoutDefinition","blackoutZones","internalErrorCode","contentBlackoutLanguageOverrides","requestSignIn","releaseURL","gated","defaultOptions","getDefaultOptions","showResumeCTA","isFullscreen","nextErrors","nextReleaseURL","nextVideoId","nextMode","nextToken","requiresAuthNext","requiresAuthLiveNext","nextProfileId","nextRequestSignIn","nextShowResumeCTA","nextIsFullscreen","nextPlayerType","playerState","errorOccurred","needsAuth","loadNextVideo","loadPlayer","formatAuth","unloadPlayer","playerId","passedProps","hbaStatus","geolocation","liveContentId","profileAnonymous","profileToken","playerLoadingImage","playerConfig","continuous","zipcode","portalRef","auth","geoLatitude","geoLongitude","abTest","videoID","newToken","scrubbingEnabled","playerJs","loadPlayerCb","defaultProfileAnonymous","defaultProfileId","defaultProfileToken","defaultScrubbingEnabled","defaultHbaStatus","playerConfigOverrides","loadURL","loadId","loadJwt","loadToken","newProfileAnonymous","newProfileId","newProfileToken","newScrubbingEnabled","newHbaStatus","configProps","restartId","scrubbing","scriptjs","FNGPlayer","getConfig","panelVideo","panelVideoType","getPlayerId","AdBlock","messageContainer","AreYouWatching","ContentBlackout","messageClasses","Countdown","isMiniPlayerActive","countdownTitleText","ExpiredVod","RetryError","onRetryClick","retryMessage","retryTitle","retryIcon","Timer","unixEndTime","nextUnixEndTime","nextTime","readableTime","checkTime","expirationCallback","MVPDTimer","prerollBreakpointName","VideoContainer","isVodUnavailable","activeVideo","checkedContentBlackout","showCountdown","showContentBlackout","showExpiredVOD","showProviders","showSearchProviders","showSignIn","spoofedGeolation","previewPassLogout","authMVPDLogout","getSpoofedLocationCookies","nextisVodUnavailable","nextCountdownVideo","liveNow","waitToRenderPlayer","nextGuid","nextLiveNow","nextWaitToRenderPlayer","previousIsPlayerLoaded","prevReducerVideo","lastProps","authSuccess","reducerVideo","reducerVideoId","prevReducerVideoId","reducerVideoChanged","recheckBlackout","checkInitialBlackout","contentNetworks","entitlementIssues","geoLocationDeclined","geoLocationPrimaryActionCallback","handlePopInMiniPlayer","isLiveRestart","resumeWithProfileConfig","savePercentWatched","setAuthError","setPreAuthCheckComplete","setVideoOverlay","shouldCheckPreviewPass","showNoSportsOnMobileError","triggerAuthCheck","waitForVideo","checkBlackouts","checkBuythroughScenarios","contentBlackoutActive","onShowProvidersCallback","waitForUpsell","playerLoading","imageTag","onStillWatchingClose","onPlayerIdlePromptConfirm","backfade","endCards","hideLoadingText","isVideoBanner","mute","primetimeScrollTo","showControls","showUpNextToast","siteSection","videoDetail","playerConfigParams","privacyParameter","ads","debugParameter","mvpdRights","mvpdRightsNetwork","pcpParams","entitlementList","newPlayerConfig","previewPassTTL","mvpdTTL","getMVPDExpireTime","backfadeClasses","preprimetimeButtonText","preprimetimeText","loadingText","loaderBackgroundStyle","channelLoaderComponent","loaderText","loaderComponent","delayedReleaseURL","getSegmentLastAnonymousProfileId","getSegmentLastKnownProfileId","externalId","renderPreviewPassBanner","setMVPDExpiration","keepVideoPaused","validStates","onShowSearchProvidersCallback","onCountdownEndRendered","getPercentWatched","getContentPosition","accessEnablerAdvancedErrorHandler","errorId","checkContentBlackout","blackoutOptions","getContentBlackout","handleCountdownEnd","handleExpiration","showEndcards","disableDuplicateOverlay","setPreviewPassExpired","previewPassEvents","onPreviewPassExpired","handleHover","hover","setStickyControls","setPlayerDataHover","handlePPBannerClick","resumeOnCancel","titleId","messageId","defaultTitle","defaultMessage","renderExpiredVOD","renderCountdown","disablePreviewPassRender","validTTL","isFoxWeatherNetwork","bannerStartText","bannerEndText","bannerLinkText","previewPassHoverEnabled","previewPassTransition","previewPassCopyClasses","previewPassClasses","previewPassLoginLinkClasses","previewPassText","previewPassLine","renderRetryError","retryErrors","retryFetchVideo","responseCodes","processedItems","displayItems","themr","identifiers","WatchDetailComponent","toggleDetailStatus","minimal","castLabel","creditsString","creditsWrapper","subtextCredits","readMoreTheme","disableFavorite","tuneInLabel","infoContainerClasses","creditsTags","renderCreditsTags","tuneInTags","tuneInWrapper","subtextTuneIn","formattedText","networkLogoDetail","descriptionTags","descriptionWrapper","subtext","infoCenter","adPlaying","hasEndcard","isModal","renderInfo","detailIconType","toggleClasses","isMovieType","movieSubtitle","subtitleTag","infoDetailComponent","toggleTags","descriptionItem","networkLogoContainerClasses","networkLogoClasses","logoComponent","infoDetailTuneInRendered","badgeItem","badgeLive","badgeInvalidUpNext","badgeContainer","titleTag","titleHeader","avatar","avatarContainer","hideMore","more","moreContainer","showTitle","videoInfoContainer","watchText","getActionButtons","enableStillWatchingTimeout","VideoModal","stickyControls","firstFrame","isAuthError","stillWatchingShowTimeout","stillWatchingHideTimeout","fetchVideoPanel","fetchVideo","prevAuthSuccess","prevPanelVideo","prevPlayerScreenUrl","clearVideo","newStillWatchingHideTimeout","durationSeconds","newStillWatchingShowTimeout","openSignIn","openSignUp","releaseUrl","setAccountCloseIgnoreRedirect","videoContainerProps","getVideoContainerProps","shouldShowControls","videoContainerWrapper","restartPlayerScreenUrl","onShowControls","oldShowControls","lclIsAuthError","onAdPodStart","onAdPodComplete","onRemovePlayer","onPlayerLoadComplete","onFirstFrame","currentAnonymousAccount","currentAnonymousLogin","currentAnonymousId","onAdLoadStart","onAdLoadComplete","onMediaStart","onMediaPlaying","onContentStart","onContentPlaying","onContentComplete","onMediaComplete","onFullScreen","fullscreen","onUserInteraction","onChangeContinuous","videoContainerTheme","renderPlayer","subtitleFallback","getWatchDetailProps","watchDetailTheme","videoModal","filteredPanel","tabId","isRetiredShowsPage","suggestedNetwork","suggestedFilter","selectedFilterIdx","Header","MarketingBannerCTA","handleBannerClick","ctaProps","MarketingBanner","adjacentCollectionAbove","bannerDimensions","setVisible","navigateToURL","trackEventProps","page_button_text","page_item_dimension","markingImage","marketingBanner","contentContainer","displayContainer","shadow","headerElement","emptyHeader","tiles","scrollableDiv","carouselContainer","ImageElement","isHoverActive","imageSrc","DefaultOverlay","FavoriteLink","HoverOverlay","favoriteProps","hoverOverlay","footer","defaultOverlayProps","hoverOverlayProps","videoHasPercentWatched","CollectionTileProgressBar","TitleLink","CollectionTile","toggleUpcomingOverlay","titleContainerClasses","imageContainerOnClick","onClickProps","CollectionLinkTile","tileClasses","unmountIfInvisible","featuredVideoProcessor","videoEntry","isCustomDescription","isPromoContent","promoSeriesScreenUrl","promoPlayerScreenUrl","getItemData","liveText","upcomingText","featuredText","logoType","mobileImage","tabletImage","isCollectionShowcase","isCategoryTypeLocal","autoPlayStillImage","seriesDetailImage","videoDetailImage","still","seriesList","seriesDetail","getStillBackgroundImage","getLiveMetaData","getOriginalAirdateMetaData","seriesEpisodeNumber","isOnAir","addSeeMoreItem","seeMoreItem","getCollectionOrder","getCollectionIndex","collectionIds","currentPanelId","getCollectionName","rootCollection","isShowcase","getShowcases","isTimelyShowcase","getTimelyShowcases","getCurrentTimelyShowcase","availableDate","currentDateTime","isAvailable","expirationDate","getCurrentShowcase","showcases","timelyShowcases","currentShowcase","nonTimelyShowcases","getNonTimelyShowcases","getTimeoutTime","currentExpirationDate","nextShowcase","futureShowcases","showcase","getNextAvailableShowcase","getMarketingVideoBanner","videoBanner","optimizelyModifyBreakpoints","SampleNextArrow","customClassName","SamplePrevArrow","HeroCarousel","forceKeyartForShowcase","globalVideoStartedPlayback","handleSaveLiveRestart","handleSlideChangeTop","removeGlobalVideoPlayer","renderHeroImage","setRecommendationIdOnClick","updatePersistGlobalVideoAfterUmount","showcaseCarouselAutoscrollSeconds","slideClassName","headerContainerClass","isCarousel","currentMembers","heroItems","heroItem","heroVideo","setTealiumSourceCollectionGlobal","isPanelRecommended","titleImage","renderCarousel","dotsContainer","dotsList","rightArrow","leftArrow","renderSinglItem","singleSlide","initialShowcase","paginatedPanels","UpcomingModal","showImage","renderNetworkInfo","renderSubtitle","formatUpcomingMetadata","renderMetadata","renderSeriesDetailButton","fetchCollection","collectionPath","optimizelyReplaceCollections","helperConvertPathToApiRoute","fetchLocalCollection","localPanels","localData","localId","localPath","experimentKey","variationKey","setSegmentModelMetadata","screenPanels","screenPanel","fetchCollectionPanel","newVideoId","oldVideoId","videoChanged","showcaseVideo","showcaseVideoDma","showcaseItems","setShowcaseVideoDma","setCollection","makeSelectInitialShowcase","makeSelectCollectionOrder","collectionOrder","makeSelectCollectionPanels","makeSelectVisibleCollections","makeSelectPanelPanels","makeSelectGlobalVideoPanelVideo","isAdditionalPosterEnabled","smallPromoImage","useMobileUpcomingOverlay","fycLogoHeight","activeSlideBottoms","activeSlideTops","collectionInterval","lastActiveSlide","leapfrogEventTriggered","liveItemId","loadedAnalytics","overlayItemProps","numPanelsRendered","persistGlobalVideoAfterUnmount","renderedPanels","shouldRenderVideoModal","showcaseTimeout","userViewedPlayerBanner","videoModalData","videoModalId","canIAutoplay","openForgotPassword","setHomePage","isForgotPassword","newRelicPageName","openFind","commonNetworks","activateAutoplay","currentCollectionPageName","authCheckComplete","firstIdentifyCall","setUseShowcaseFallback","nextAuthCheckComplete","nextAuthSuccess","nextCanIAutoplay","nextOverlay","nextFirstIdentifyCall","preventScroll","resetPanelRenderCount","showcaseFallback","useShowcaseFallback","prevAccount","prevInitialShowcase","prevLocation","prevUseShowcaseFallback","didTriggerLeapfrogEvent","accountChanged","pathChanged","shouldRefreshData","panelsHavePopulated","prevMember","firstMember","isShowcaseCarousel","prevShowcases","prevPanel","prevAvailableDate","prevExpirationDate","didPanelsAvailabilityChange","updateShowcaseTimeout","clearCollectionPanels","hero","promoImage","isPromo","inRange","debouncedScroll","isSportsCollectionType","setFindTab","setSuggestedShowsTab","fetchCollections","updateVisibleElements","decodedCollectionId","collectionLocalIndex","isIdMatch","isNameMatch","isHeadlineMatch","scrollElement","currentItems","originalFirstItem","videoItems","hideVideoItems","slideContainer","currentElements","currentCollection","currentVisibleSlideItems","slideCollectionItems","slideItem","endRangeValue","newItem","slideRange","renderTileCarousel","heroCarouselProps","nextUpdateIn","newCollectionInterval","genreCarousel","isGenreCollection","getSegmentBannerDimensions","boundProps","loaderWrapper","heroLoaderPlaceholder","heroLoaderTitle","heroLoaderSubtitle","heroLoaderDescription","heroLoaderBottomDescription","heroLoaderButton","loaderSeparator","isEntertainmentPage","carouselIndexes","firstPlacementIndex","placement","bannerIndex","incrementPanelRenderCount","showcaseId","itemsWithoutShowcase","NationCollection","isFirstVal","panelProps","PROMO_TYPE_INSET","PROMO_TYPE_LEAD","updateSegmentBannerData","headlineText","onlyRenderImage","smallPromoStyle","networkComponent","outerContainerChildren","getSegmentBannerType","page_message_title","page_message_text","page_message_type","bannerClickedProps","playAllText","tealiumTileClick","playAllClick","isAffiliateList","isLocalLive","isFeatured","isLatestEpisodes","isLocalNews","additionalPosterLimit","currentPosterLimit","customPosterLimit","customPosterToScroll","itemsToScroll","itemsToShow","carouselProps","CarouselTheme","playerLoad","hideHeaderImageAndVideo","activeSlideId","defaultVideoContainerProps","redesignClasses","trackCollectionItems","isAvailableEvent","page_collection_id_list","savedShowcaseId","savedTimeoutTime","timeoutTime","showcaseChanged","shouldUpdateTimeout","nextShowcaseTimeout","setGlobalPlayerType","newVal","setActiveSlide","activeSlideTop","activeSlideBottom","nextActiveSlide","collectionImpressionCalled","handleWaypointEntryAnalytics","saveGlobalLiveRestart","selectPanelRenderer","updateCollectionOrder","panelsRendered","currentShowcaseId","isDefaultPanel","isShowcaseFallback","isShowcaseType","swapWithFallback","preventShowcaseRender","panelToRender","shouldRenderDefaultPanel","renderParams","clickedItem","upcomingOverlayOpen","prevShouldRender","activeCollectionId","firstSlideIdx","lastSlideIdx","nextSlideIndex","currentVisibleCollections","refreshData","getDefaultVideoContainerProps","setBlockMVPDIncomplete","toggleMvpdAuthOverlay","renderBreadcrumb","breadcrumb","memberIndex","fadeClasses","heroImageUrl","importance","renderUpcomingOverlay","isUpcomingOverlayOpen","renderDefaultHelmetTags","headerTags","organizationSchemaTag","organizationSchema","alternateName","sameAs","httpEquiv","currentRoute","firstCollectionImpression","panelRenderCount","hasAccount","TimeoutCollection","onHomeLoad","onBrowseLoad","onLiveLoad","REDESIGN_COMPONENT_MAP","getNavItems","getPathRoot","getComponentFromRoute","getOnLoadFromRoute","navItems","REDESIGN_PATH_SCREEN_URL_MAP","rootScreenUrl","getDesignV2Routes","rootPath","setPCS","INITIAL_STATE","googleOneTap","googleSignIn","userGoogleEmailAlreadySignIn","googleNewUser","isGoogleOneTapDisplayed","pcs","fetchFoxNowFAQSchema","structuredDataSchema","nextVideos","getCreditMemberId","getCreditMemberUrl","getCreditMemberSlug","renderSocialNetworks","socialNetworks","facebookId","facebookUrl","twitterId","socialNetworksList","listClassName","renderSocialNetworkItem","getFallbackImage","getDetailImage","getListingImage","getBioDescription","hasFullBio","hasName","hasBioDescription","related","landingSeo","profiles","blackout","definitions","definition","canAutoplayLibrary","getCanIAutoplay","isAutoplaySupported","helperSetCookie","setResult","paginationItems","dmaOverrides","fetched","legal","promosPanels","members","seriesDetailVideoId","getNetworkPanel","networkPanels","networkPanel","startDay","schedule","nextPageSet","panelPaginated","fetchVideosTab","fetchSeriesUrl","fetchSeriesDetail","setSeriesDetailError","seasonPanel","episodeUrl","fetchEpisodes","fetchCategoryDetailUrl","episodes","pagesSeo","recommendedPanel","currentTab","stickyHeader","setResetPagination","paginationLoader","getPaginationNextUrl","getPaginationData","returnItems","renderHelper","renderLoader","renderFilteredPanel","altHeaderContentClass","altHeaderTheme","parentState","parentProps","fetchSiteContent","routes","fetchSitemap","restartVideo","hideVideoUntilPlayback","nextVideosValidFor","isPortalContentFinished","screenInControlOfState","shouldResetStillWatching","vodContentSet","hasSeenHalfAnyVideo","fetchWatch","fetchWatchPanels","optimizelyProps","localPlayerScreenUrl","freemiumWatchPanel","endcard","playlistData","pagination","WATCH_PANEL_ID","combineReducers","totalProviders","mvpds","articleBody","bannerVideo","newErrors","videoFormat","bio","memberId","newProfiles","blackoutDefinitionFetcher","definitionLowercaseKeys","clips","newPage","oldPaginationItems","newPaginationItems","collectionToRemove","newMember","itemsData","slimFooter","totalPromos","footerUpsell","ignoreUpdatingState","playerContext","upNextHeadline","defaultPercentWatched","vodSectionClicked","vodClickedState","hoverMenu","showsResponse","nextMember","dataMap","cleanMap","gapFillerId","usingLocation","reg","navSchedule","updateDate","paginationUrl","newPageData","isCollection","isSearchResult","memberPath","newPaginatedItems","currentSeriesList","currentSpecialsList","currentMoviesList","currentEpgList","newSeriesList","newSpecialsList","newMoviesList","newEpgList","specialsList","moviesList","epgList","currentPaginatedItems","paginatedItems","lastUpdated","photoGallery","promoList","SEO","getNextPageSet","currentState","oldNextPageSet","newNextPageSet","selectedTabIndex","_panel","bioComponent","seasonPanelId","seasonPanels","seasonUrlArray","seasonUrlPath","currentEpisodes","networkTab","categoryFilter","lclTab","fetchReducer","setNextPage","setFetching","siteMap","subUrls","newSubUrls","subRow","subUrl","newSubUrl","parseVideoResponse","videosTab","videosData","pages","nextPages","nextPagination","Account","setInitialized","openAccount","Article","isDoNotSellInfoChecked","ccpaDoNotSellLabel","ccpaDoNotSellConfirmation","checkboxContainer","doNotSellInfoContainer","doNotSellInfoText","doNotSellConfirmationText","checkboxLabel","handleDoNotSellInfoChecked","fetchArticle","prevUrl","prevErrors","setErrors","disableScrollEvent","getPanelName","isNotOptedOutCCPA","ARTICLE","scrollToTargetElement","isDoNotSellPage","sanitizedBody","shouldRenderItemBasedOnContextAndShowId","helperGoToShowDetail","articleBodySplit","beginningSanitizedBody","endingSanitizedBody","renderArticleBody","primaryHeadline","videoTypeMap","fullEpisode","clip","eligibleRegions","regions","createSharedSchema","referenceDate","itemDuration","category","freewheelId","timeRequired","trackingQuery","availabilityEnds","potentialAction","urlTemplate","actionPlatform","inLanguage","expectsAcceptanceOf","availabilityStarts","eligibleRegion","releasedEvent","createWatchEpisodeSchema","imdbTitleUrl","sharedData","partOfSeries","mainEntityOfPage","thumbnailUrl","publisher","uploadDate","createWatchClipSchema","createSeriesDetailSchema","director","operatingSystem","applicationCategory","createSchemaTag","getSchema","dataJSON","makeSelectFoxNowFAQSchema","foxNowAppFAQPage","ArticleDetail","foxNowFAQSchema","BlackoutPanel","handleSetBlackoutFetchInterval","blackoutFetchDuration","formLabel","AuthClientless","handleSetClientlessTokenExpireRefresh","clientlessRecurringPreAuthZRefresh","handleSetClientlessRecurringPreAuthZRefresh","formGroup","formInput","ResetPanel","handleResetClick","LiveStreamPanel","handleSetCdnMapping","handleSetVideoOrigin","handleToggleLiveStream","selectedCdnMapping","selectedTimeout","selectedVideoOrigin","debugCdnMapping","debugVideoStackMapping","generateOptions","livestreamContainer","LocationSettingsPanel","searchText","cities","handleSelect","city","dmaName","dmaCode","locationResults","handleSetLocationCookieDuration","locationCookieDuration","selectedCity","filterCities","handleSearchInput","AdPanel","currentAdDebug","currentSiteSection","handleSetAd","handleSetAdSiteSection","onSubmit","warnings","Tomato","ApiPanel","baseUrls","currentBaseUrl","handleSetApiBaseUrl","baseUrlOptions","baseUrlValue","warning","warningComp","formWarning","UserPanel","handleUserData","userData","Card","dateAdded","flagName","jiraTicketNumber","nickname","permanent","setToggle","formattedDomain","card","iconWrapper","aria-level","actionBar","switch","featureFlags","DebugScreen","cookieKeys","apiBaseUrl","cdnMapping","videoOrigin","overrideName","latlongIdx","latlong","long","currentUserData","handleResetBtnClicked","fetchDmaOverrides","fetchPlayerConfig","locationCookieDurationMS","playerConfigRoute","panelParams","menuLinks","renderSave","debugContainer","renderPanel","GeoBlock","LatestEpisode","fetchLatestEpisodeSeries","fetchLatestEpisodeVideo","nextSeriesScreenUrl","nextLatestEpisodeId","MVPD","setTriggerAuthCheck","ACTIVATE_CODE_EXPIRES_MINUTES","setActivateCode","getActivateCodeFromURL","getActivateCode","redirectToActivateMVPD","activateUrl","getFacebook","handleLogin","FB","FBError","loginResponse","auth_type","iconMobile","isDesktop","hideCloseButton","noIcon","renderLogo","closeButtonClass","goHome","InnerHeaderWrap","ForgotPasswordCTA","linkClass","ChangePassword","forgotPasswordCTAProps","headerProps","profile_currentPwInputPlaceholder","profile_newPwInputPlaceholder","profile_passwordRequirementsText","profileEdit_submitButton","profile_passwordInvalidError","onChangePassword","currentPlaceholder","newPlaceholder","passwordRequirementText","passwordInvalidError","changePasswordInput","changePasswordInputNew","passwordOldVisibility","passwordNewVisibility","passwordErrorText","passwordNewErrorText","changePassword","changePasswordContainer","signupPasswordContainer","autoCapitalize","autoComplete","autoCorrect","spellCheck","passwordLabel","changePasswordRequirements","onChangePasswordBackClick","setChangePasswordErrors","setStateCb","hasErrors","editAccount","passwordLengthErrorText","handleSuccess","newPassword","detailError","renderChangePassword","changePasswordBackClick","changePasswordProps","back","showHeaderDesktop","OverlayFooter","legalDoNotSellName","legalDoNotSellUrl","legalPrivacyName","legalPrivacyUrl","legalTermsName","legalTermsUrl","formatLink","footerContainer","CreatePassword","createPasswordPasswordError","googleLinkingError","onCreatePassword","onCTAClick","showLinkToProfile","googleEmailAddress","createPasswordInfo","createProfileLegal","createButtonText","createPasswordInputNew","pageProfileType","page_profile_type","createPassword","emailContainer","emailLabel","passwordContainer","legalTextContainer","legalText","createProfileButton","createPasswordPassword","onCreatePasswordBackClick","setCreatePasswordErrors","renderCreatePassword","createPasswordBackClick","createPasswordProps","showShareMyEmailUpsell","appleLinkingEmail","EditAccount","firstNameError","lastNameError","onEditAccount","onEditDeleteClick","firstNameAlphaErrorText","lastNameAlphaErrorText","firstNamePlaceholder","lastNamePlaceholder","deleteAccountButtonText","profileHeaderText","firstNameLengthError","lastNameLengthError","firstNameErrorText","lastNameErrorText","EditAccountContainer","nameContainer","required","aria-disabled","readOnly","classnames","onEditAccountBackClick","setEditAccountErrors","processedFirstName","processedLastName","editAccountCb","firstName","lastName","renderEditAccount","editAccountBackClick","EditDeleteClick","editAccountProps","FacebookLinking","onLinkFacebook","emailPlaceholder","passwordPlaceholder","signinErrorMessage","linkHeader","linkMessage","linkButtonText","invalidPasswordError","emailInvalidError","fbLinkPasswordInput","passwordType","passwordErrorClass","emailErrorText","emailErrorClass","facebookLinking","facebookLinkingWrap","headerTextDesktop","facebookLinkingDescriptionText","signupFormContainer","autoFocus","signinButtonDesktop","desktopButton","btnPrimary","setFacebookLinkingErrors","renderFacebookLinking","facebookLinkingProps","AppleLinking","appleLinkingError","noProfileCTAtext","profileHeadertext","linkAccount","accountLinkContainer","onAppleLinkingBackClick","renderAppleLinking","appleLinkingProps","ParentalIcons","makeSelectAppPCS","ParentalControls","getRatingImageURL","handleMovieRatingChange","handleTvRatingChange","profile_pcsContinueLabel","profile_pcsCurrentMovieLabel","profile_pcsCurrentTvLabel","profile_pcsInstructions","profile_pcsPasswordPrompt","profile_pcsSaveLabel","onSaveParentalControls","onVerifyPassword","newMovieIdx","newTvIdx","continueLabel","currentMovieLabel","currentTvLabel","instructions","passwordPrompt","saveLabelText","tv","allMovieRatings","fetchPCS","allTvRatings","tvVal","mvVal","defaultTvRatingIndex","defaultMovieRatingIndex","currentTvRating","currentMovieRating","tvSliderValue","movieSliderValue","passwordVisibility","pcsPasswordInput","parentalControls","parentalControlsContainer","parentalControlsInstructions","parentalControlsCurrentValues","parentalControlsCurrentValueMinor","parentalControlsSliderLabels","onParentalControlsBackClick","baseSlug","setParentalControlsPasswordErrors","tv_rating_val","mv_rating_val","newPCS","renderParentalControls","parentalControlsBackClick","ratingImageURL","saveParentalControls","verifyPassword","parentalControlsProps","newIndex","Menu","hasFavorites","menu","toggleAccountMain","toggleChangePassword","toggleEditAccount","toggleManageFavorites","toggleParentalControls","toggleSignOut","signoutLabel","menus","mobileSplit","accountListItem","accountContainer","AccountMain","menuProps","AccountContainer","InnerContainer","toggleCreatePassword","successText","activationSuccess","activationSuccessContainer","SignInAppleButton","handleSignIn","isConsolidatedSignUp","signInAppleButtonIcon","signInAppleButtonText","defaultErrorGenericText","injectScripUrl","scriptSrc","injectScriptSrc","SignInApple","isUpsell","onAppleSignIn","setAppleEmail","setAppleToken","setIsAppleEmailShared","appleLoginText","signInWithApple_clientID","appleUpsellBtnText","AppleID","redirectURI","usePopup","authorization","parsedJwt","is_private_email","_use","SvgFoxSoul","SvgPopIn","GOOGLE_CLIENT_ID","useGetGoogleSignIn","openCreatePassword","useDebugValue","useStateWithLabel","setResponse","useDispatch","getStatus","createProfile","found","handleSetAccountData","handleLink","isFound","getIsGoogleAutoSignIn","useGoogleLogin","BTN_GOOGLE_TEXT","GoogleSignInButton","googleButtonText","onSignin","handleActivateCode","setIsProcessing","setGenericError","setPasswordError","signInCompleted","signInSuccess","setSigninErrors","errorDescription","onConsolidatedEmailSignIn","checkStatus","setExistingEmail","onSignup","signUpCompleted","toggleSignupSuccess","invalidEmailError","profileCreate_invalidEmailText","signupSuccess","setSignupErrors","secondScreen","regcode","migrateData","newAccount","errorCodeString","missingFieldDataError","SignIn","onAppleLinking","setEmail","renderPerkImage","dialogElement","emailEntry","setIsDisabled","setEmailInput","perksWrap","buttonWrap","socialContainer","iconText","PasswordCollection","screenProps","disclosure","forgotPasswordText","onResetPassword","isProcessing","setScreen","signinShowPassword","passwordInput","sanitizedDisclosure","signInWrap","signInPasswordContainer","landingPage","ForgotPassword","existingUserPage","ConsolidatedSignInFlow","SCREENS","existingEmail","forgotPasswordPage","resetPassword","DeleteAccount","onDeleteAccount","cancelButtonText","deleteButtonText","deleteMessage","DeleteAccountContainer","logoutContainer","logoutHeaderText","logoutText","Network","onForgotPassword","resetPwMessage","invalidEmailText","resetPwButtonText","forgotPassword","forgotPasswordContainer","secondaryHeader","forgotPasswordFormContainer","ForgotPasswordSuccess","promptMessage","continueButtonText","forgotPasswordSuccess","forgotPasswordSuccessContainer","forgotPasswordSuccessHeaderText","forgotPasswordSuccessText","profileResetPw_emailPromptContinueButton","profileResetPw_emailPromptHeader","profileResetPw_emailPromptMessage","Logout","logoutButtonText","logoutMessage","buttonContent","signOutContainer","headerSuccess","perksButtonContainer","global_cancelButton","profileLogout_header","profileLogout_logoutButton","profileLogout_message","ManageFavorites","manageFavorites","manageFavoritesContainer","Perks","onLoginClick","onSignupClick","toggleShowPerks","toggleSignin","toggleSignup","createProfileText","profileExistText","hollow","profilePerks_header","profilePerks_SignUpButton","profilePerks_SignInButton","ResetPassword","resetPasswordError","resetPasswordPassword","resetPasswordPasswordError","resetPasswordShowPassword","resetPasswordConfirmPassword","resetPasswordConfirmPasswordError","resetPasswordShowConfirmPassword","pwRequirementText","passwordButtonText","invalidResetCodeText","passwordConfirmType","resetPasswordInput","resetPasswordConfirmInput","invalidTokenErrorText","passwordNewPasswordErrorClass","passwordConfirmPasswordErrorClass","resetPasswordContainer","resetPasswordFormContainer","resetPasswordInfo","resetPasswordButton","resetPasswordEmail","resetPasswordEmailError","ResetPasswordSuccess","successButtonText","resetPasswordSuccessWrap","signupSuccessContainer","resetPasswordSuccessHeaderText","resetPasswordSuccessText","resetPasswordSuccessButton","profileResetPw_successButton","profileResetPw_successHeader","profileResetPw_successMessage","ShareMyEmailUpsell","upsellMessage","shareImage","foxNowAppLogo","CTA","signinCreateProfileContainer","SocialFacebook","facebookLoginOptionalText","facebookLoginText","facebookSignupOptionalText","facebookSignupText","onSocialFacebookLogin","showFacebookLogin","showFacebookSignup","optionalText","socialFacebookButtonIcon","socialFacebookButtonText","socialFacebookButtonTextOptional","SocialLogin","signInSeparatorContainer","signInSeparator","signInSeparatorLine","signInSeparatorText","Signin","signinButtonText","invalidError","didTriggerSegmentProfileEvents","signinPasswordInput","isCCPAVerify","signupFormInputContainer","privacyPolicyClickEvent","signinDropdownIconTheme","global_signInButton","profileSignin_header","profile_emailInputPlaceholder","profile_genericErrorSignInMessage","profile_genericInvalidError","profile_passwordInputPlaceholder","Signup","handleShowShareMyEmailUpsell","signUpEventFired","signupShowPassword","disclaimerText","signUpExistingErrorMessage","signUpErrorMessage","emptyFirstAndLastNameError","firstNameEmptyError","lastNameEmptyError","optinCombinedText","socialEmailExistsError","passwordLengthError","signupPasswordInput","isFirstNameError","isLastNameError","isFullNameError","isEmailError","isPasswordError","disclaimer","signupFieldInfo","SignUp","SignUpContainer","signupNameContainer","signupColumnSplit","signupColumn","onInvalid","ONBOARDING","signupInline","termsText","profileCreate_header","profile_firstnameInputPlaceholder","profile_lastnameInputPlaceholder","profile_genericErrorSignUpMessage","profile_existingErrorSignUpMessage","profileCreate_optinCombinedText","profileCreate_createButton","profileError_passwordLength","profile_disclaimer","setGender","toggleGender","SignupSuccess","onMvpdStart","buttonComponent","buttonClick","optimizelyMVPDLoginButtonText","optimizelyCloseButtonText","mvpdLoginButton","closeOverlayButton","SignUpSuccess","contentWrap","signupSuccessHeaderText","signupSuccessText","profileCreate_successButton","profileCreate_successHeader","profileCreate_successText","SocialFacebookPasswordLink","facebookEmail","facebookLoginTitle","facebookLoginHeader","facebookLoginCopy","optinText","socialFbLinkPasswordInput","SocialFacebookPasswordLinkWrap","facebookPasswordLinkHeader","facebookPasswordLinkCopy","profile_facebookLoginTitle","profile_facebookLoginHeader","profile_facebookLoginCopy","VerifyAccount","bubbleState","showVerifyConfirmation","ccpaNoAccountText","verifyText","verifyTermsText","confirmationMessage","confirmationHeader","completeButtonText","verifyPrivacyPolicyText","verifyHeaderText","verifyPrivacyPolicyLinkText","verifyTermsBoldText","verifyTermsLastText","verifyWithoutPasswordText","privacyPolicyUrl","CTAText","CTAOnClick","isVerifyLoading","setIsVerifyLoading","isNoAccountLoading","setIsNoAccountLoading","verify","verifyContainer","confirmationContainer","termsNoPasswordText","verifyOptions","profileSignin_migrationDropdownText","profileSignin_migrationText","signup","signInEventFired","setActivateCodeAccount","shouldVerify","verifyAccount","noVerifyAccount","ccpaRequestId","isEmailShared","oneTapToken","signUpToken","initialScreen","renderNetworkLink","isVerifyScreen","DEFAULTS","showVerifyAccount","fromVerifyAccount","accountNext","isTablet","nextShowAccount","showForgotPasswordLandingNext","showSignInNext","showSignUpNext","showAccount","isWeb","onboardingStart","perksPresented","signInError","signUpError","prevShowAccount","prevSigninPasswordError","prevSigninEmailError","prevSigninGenericError","prevSignupGenericError","prevSignupEmailError","prevSignupEmailExistsError","prevSignupPasswordError","prevParentalControlsPasswordVerified","isSigninError","isSignupError","perksShown","stateObj","createPasswordPageEvent","setIsGoogleAutoSignIn","logoutTimeout","closeAccount","resetAccountState","ignoreOnCloseRedirect","ignoreRedirect","ignoreSavedPath","shouldIgnoreRedirect","savedPath","signUpMarketing","selectedNetwork","accountEmail","resetConfirm","resetCode","facebookLinkingToken","deleteAccountGenericError","profile_emailRequirmentNoticeSignIn","socialFacebookLogin","handle202","handle404001","setFacebookGenericError","facebookLogin","needsAccountLinking","needsSignup","socialFacebookRegister","personalizedHeader","accountMainProps","signInForgotPasswordStarted","signInIncomplete","verifyAccountProps","deleteAccountProps","forgotPasswordProps","forgotPasswordSuccessProps","logoutProps","renderFavorites","manageFavoritesProps","showBorder","consolidatedSignInFlowProps","onRegisterWithGoogle","resetPasswordProps","resetPasswordSuccessProps","signupSuccessProps","dontFetchFavorites","ctaLinkText","signinProps","signUpIncomplete","signupProps","socialFacebookPasswordLinkProps","appView","resetCodeDirect","resetCodeQuery","SearchHeader","onXClick","searchHeader","inner","axiosSource","Search","userInput","loading","resultsTimedOut","updateExpiredTimeouts","toggleSearch","CancelToken","isValidInput","useDoubleQuotes","trimmedInput","handleInputChange","getSearchResultCount","handleSearchCompleted","searchResultCount","liveResults","updateInMs","newResponse","renderSearchResults","placeholderText","renderTabs","hideIcon","renderAltResults","localScrollContainer","searchResults","searchIcon","searchResultsTags","altResultsClasses","providerList","searchInputContainer","handleSearchInputChange","autofocus","isDirectLink","topHandler","bottomHandler","topDistance","scrolledToBottom","setRef","supportTitle","SupportLink","Shelf","filteredList","seeMoreText","itemNumberLimit","numberOfItemsInitiallyToShow","searchResultTitle","geoLocationLoading","geoLocationError","permission","geoLocationDenied","userIsAuthorized","resultExternal","resultShelves","getOptimizelyResultsOverrideEnabled","shelves","shelfInfo","filteredShelves","resultCount","shelfArray","shelf","isSportsPanel","isSportsCollection","itemList","deepLinkFilterList","titleNoResults","dataLocation","openToggle","newToggle","listLength","searchVideosEnabled","shelfProps","permissionsUnavailableErrorText","permissionStatus","getLocationPermission","setSearchResultCount","nextResults","nextAccount","nextUserInput","nextIsValidInput","nextResultsTimedOut","parseResults","noResults","search_term","search_result_type","num_search_results","displayGrid","selectedFilterParams","componentProps","onResultClick","tileAnimation","geoLocationStyle","infiniteScrollProps","classname","SearchTabs","toggleShowFilter","categoryDropdownOpen","nextSelectedTab","renderFilters","isDropdownOpen","tabChanged","renderCategoryDropdown","filterDropdown","TabItem","makeSelectSearchPanels","findCollectionId","findFilterId","preSelectedFilterName","decodedFindCollectionId","collectionPanelIndex","collectionFilters","ignoreHistoryReplace","upNextTimeouts","originalHash","originalPath","previousPathname","fetchSearch","vh","storagePageProps","setDataLayerPageProps","preselectedFilterIndex","nextAccessToken","currentPanels","nextTab","nextFindCollectionId","nextFindFilterId","nextLocation","nextFilter","initialDataLoaded","directLink","filterUpdated","collectionUpdated","wasDirectLink","isNextDirectLink","shouldUpdateData","fetchLiveTimeouts","page_filter_title","page_subfilter_title","initialSearchFilterApplied","nextFilterName","matchedFilter","fetchRefreshTimeouts","nextPathHash","fetchUpNext","refreshSearchPanel","searchHeaders","searchRoute","isInitialRouteSearch","bindXClick","setSelectedFilter","resetNextPage","nextFilterUrl","filterName","closeDropdown","setTab","selectedFilterName","isFilterAvailableForTab","tabIdx","doesTabHaveFilter","nextHeadline","nextPathname","shouldUpdateUrl","showFilterStatus","hasFilteredItems","selectedPanelResultCount","trackResultSelected","searchResultsProps","searchResultInfo","getTealiumSearchResultString","search_result_info","TimeoutSearch","selectedIndex","customViews","customViewIndex","customViewId","ContextPromo","onClickCTA","promoLogo","promoDescription","promoContent","promoDetails","promoCTA","ContextPlayer","playerControlState","promoDisabled","setGlobalPortalRef","setGlobaPortalContentFinished","setGlobalVideoControl","modalRef","prevControlState","setControlState","endVideo","modalStyle","contextPlayer","modal","getPromoListApiUrl","promoListUrl","promoListProcessor","fetchPromoList","PROMO_LIST","tileStyle","CastItem","isDetail","isTabletView","renderName","renderRole","selectMenuItemEvent","BioDetail","longBio","getPrevious","castItems","castItemProps","getNext","Bio","castItem","itemId","fetchBioDetail","fetchBioLanding","nextItemId","nextShowId","shouldFetchCast","hasProfile","clearBioPages","castWithImages","getCastWithImages","orderedCast","filteredCast","getGroupedCast","hasCast","Branding","votingCTA","targetUrl","ctaUrl","ctaButtonText","previewButtonClick","hasTrailer","autoPlayPreviewParam","titleClampSize","showLogo","showActionButtons","anonymousPreviewButton","anonymousTuneIn","anonymousTuneInSeries","anonymousTuneInDocumentary","getAnonymousTuneIn","imageLogo","tuneInElement","altTuneInElement","altMeta","anonymousTuneInElement","anonymousDescription","previewButton","preview","btn","altHeader","altHeaderReplacement","tuneInContainer","renderCTA","headlineIsPrimary","TabListMobile","dropdowns","newClipping","clippedTabItems","moreTabItems","tabName","castTitle","dropdownHeaderStyle","moreItems","isMoreTab","renderedTab","renderDropdown","renderLink","parentName","tabItems","transformTabs","tabItem","overlayType","seasons","lowerSelected","lowerName","styleName","submenuItems","taggedItems","createTabs","tabRowClasses","shouldRenderMoreDropdown","moreTab","disableHardwareAcceleration","tabListSidebar","scrollOffsetTop","scrollOffsetTopArticle","TabList","videoContentDropdownOpen","selectedSubMenu","utagSeriesType","getTealiumDetailTabData","isBrandingClicked","setIsBrandingClicked","prevIsBrandingClicked","togglePlaylist","listLinks","slugs","tabList","playlistLinks","videoContentList","hasEpisodes","tabClassActive","tabClasses","onClickAnalytics","clipCount","childTab","childSlug","childUrl","childName","SeasonPagesEnabled","childListLinks","childSlugs","subMenuOpen","subMenuOpenClass","subMenuClasses","subMenuIcon","isArticleWithoutTab","ignoreScroll","newSelectedSubMenu","seasonTab","newElementId","newTabId","firstTabId","newTabItem","renderVideoContentTabs","playlistContainer","dropdownLabel","toggleDropdown","seasonDropdownTheme","tabListComponent","renderDesktopTablist","containerClassNames","videosList","newsHeadline","clipsHeaderText","showsHeaderText","headerClass","headerTitle","SeriesPromo","promoCTAContainer","FirstTile","videoModalProps","trailerPSU","isSingleEpisode","onLiveClick","latestEpisodeHeaderText","startWatchingText","isLatestPersonality","isLatest","videoDescription","seriesDescription","divider","seasonEpisodeHeaderText","tileHeader","previewVideoPlayerScreenUrl","previewVideoId","continueWatchingFromStart","seriesPromoClickTracking","handleTealiumSeriesButtonAction","renderDescription","renderTile","firstTile","UpsellBanner","onBannerClick","upsellPromoTitle1","upsellPromoTitle2","upsellPromoButton","showInfo","episodesLabel","seasonsLabel","seasonText","videoTileStyle","fetchingPage","buttonType","showLoaderAfterAuth","upsellRedirectOnProviderClick","highlightFirstVideo","liveLatestEpisode","renderFirstTile","parentTab","getProcessor","currentTabName","setTealiumSourceShow","flattenedPaginationItems","showcaseLatest","firstVideo","firstTileType","liveLatestEpisodeSeason","liveLatestEpisodeNumber","seriesHeader","renderTileGrid","tileGridProps","data-tab-id","PhotoGalleryImage","PhotoGalleryImages","PhotoGallery","fetchGallery","tabUrl","getGalleryAPIUrl","PersonalityBio","personalityTabSlug","personalityBioContainer","personalityBioName","personalityBioImage","personalityBioDescription","NationWhatIs","promoData","heroContent","heroDeviceImage","deviceImageBackgroundStyle","anonMiddleLeft","anonMiddleRight","StartFreeTrial","makeSelectSeriesDetailRecommendedPanel","makeSelectSeriesDetailSeriesData","makeSelectSeriesDetailInline","makeSelectSeriesDetailTabs","makeSelectSeriesDetailLatestEpisode","makeSelectSeriesDetailPromos","makeSelectSeriesDetailSeo","makeSelectSeriesDetailPagesSeo","HeadlineBumper","NetworkImageWrap","renderAsAnonymous","contextPlayerVisibility","deepLinkFavorited","prevShowId","prevTabs","clearSeriesDetail","fetchCategoryDetail","fetchSeries","firePageView","fetchFromCategories","trackPageView","setSegmentContentPersonality","articlePanels","inlineContent","anonymousImage","headerItems","tabSEO","brandOverride","fetchAnonymousCategoryDetail","fetchAnonymousSeries","currentAccessToken","creditsTab","featuredPromo","featuredPromoHeadline","featuredPromoDesc","ctaButtonContainer","ctaButton","renderSocialLinks","controlVideoPlayback","promoLeadData","promoLeadContent","promoLink","renderDivider","dividerContainer","carouselDivider","prePremiereVideoProcessor","premierePreview","promoContentType","promoScreen","renderPromoItemContent","originalVideos","videoCount","latestEpisodeSeason","itemSeason","socialLinkComponent","socialLinkContainer","renderSingleTabContent","isFirstTab","tabContent","renderNoTabContent","renderTabContent","paramShowId","isCategoriesDetail","isSameShowAsTheUrlParam","screenShows","hasPromos","promoProps","hasLoadedContent","scrollStart","scrollEnd","SegmentEvents","tealiumAuthStart","referringCollection","brandingBackground","pathNameParts","creditId","calculatedPageId","responseData","TimeoutShow","fetchAnonymousCategoryDetailUrl","setSeriesDetailTabs","MyRewardsCTA","rewardUrl","onCtaBannerClick","Thumbnail","NFTBanner","isDropActive","nft_activeHeader","nft_sameDayHeader","nft_activeDescription","nft_sameDayDescription","NFTTitle","dropTime","NFTThumbnail","thumbnailContainer","videoThumbnail","DropTimeEntry","dropTimeValue","dropTimeTitle","DropTimer","endColor","setIsDropActive","setIsSameDay","startColor","initTimeRemaining","setDays","setCounter","intervalId","timeRemaining","getBackground","hexColor1","hexColor2","percentage","middleColor","convertHexToDec","numberString","convertDecToHex","getMiddleColor","dropTimer","timerContainer","DropCTA","dropUrl","noPrevious","loopxs","NFTModule","nftName","isCurrentDay","isDropped","gradientDivider","NFTContainer","setTrue","setFalse","initialLocked","locked","setLocked","useLayoutEffect","originalOverflow","originalPaddingRight","scrollBarWidth","setWindowSize","setBreakPoint","useWindowSize","375","768","1024","2560","webLarge","Modal","handleOverlayClick","handleCloseModal","showModal","h2","instagramId","youtubeId","socials","social","shortDescription","longDescription","useBoolean","useLockedBody","useBreakpoint","aboutLabel","aboutTheShowLabel","moreButtonLabel","aboutHeaderText","maxChars","makeMaxChars","truncatedDescription","modalProps","about","Background","opacityChange","yScrollPosition","currScrollPos2","setTransformY","transformY","css","CastMember","isCast","opensOverlay","setCastDetail","bioAltText","initials","missingCastImage","castInitials","CastInitials","imageClass","imageButton","imageLink","castNamesContainer","actorName","characterName","CastSlider","castArray","castMember","desktopCast","mobileCast","CastDetail","sanitizedBio","handleEmbedScripts","castImageContainer","CastOverlay","castInfo","castDetail","renderArrows","nextCast","prevCast","Cast","contentCode","setCastArray","castContainer","castHeader","carouselClass","CarouselTile","tileClass","GradientImage","Repeater","TextRow","rowClass","bottomFade","textRow1","textRow2","textRow3","textRow4","textRow5","textRow6","carousel","carouselTile","image1","aboutText","aboutIcons","textRow7","textRow8","textRow9","getSeriesPlayProps","resumeText","latestText","playUrl","getPlayButtonUrl","seasonAndEpisodeNumberText","getHeroCommonProps","showcaseOrder","isFreshman","watched","getCurrentEpisode","isRestart","page_webview_url","modalCloseClickHandler","fixedPosition","selectedShortDescription","isLong","setProgress","setLiveInterval","currentProgress","altTextPath","altLogo","TuneIn","genreList","movieMeta","bullet","foxEpisodeLabel","foxEpisodesLabel","seriesTuneIn","Meta","SecondaryButtons","setPlayerVisibility","shouldRenderFavoriteButton","shouldRenderPreview","shouldRenderShareButton","shareUrl","Hero","playerVisibility","shouldShowFavoriteButton","getHeroContextPlayerProps","getHeroPlayButtonProps","getHeroRestartButtonProps","ButtonStyle","payoad","favoriteButtonTheme","getHeroFavoriteButtonProps","getHeroTrailerButtonProps","CarouselSection","ClipsDropdown","clipsSections","isClipsPage","onDropdownOpen","onSelect","firstSectionName","dropdownClass","backdrop","Clips","fetchPanelData","setOpenDropdown","nextPageUrl","setNextClipsPage","clipsDropdownProps","newClipsNextPage","clipsPath","clipsPage","returnButton","returnButtonContainer","SeeMoreButton","seeMoreLabel","numClips","buttonLabel","seeMoreContainer","fetchNextClipsPage","renderClipsPage","clipsCarousel","shouldFetch","loaderContainer","InfoContainer","gridContainer","Seasons","setIsLoading","setLastSlidePaginated","getSeasonName","onSeasonSelect","seasonTabs","nextEpisodesUrl","shouldPaginate","seasonCarousel","lastSlideIndex","SeriesLink","linksLabel","SeeAll","allItems","allItemsContainer","Recommended","recommended","recommendedCarousel","currentCast","alternateId","prevPageType","prevPageId","prevSections","fetchV2SEO","fetchNewSeries","newPageType","loginChanged","pageIdChanged","newSections","newPageIds","seasonPage","clipPage","castLandingSeo","seriesSeo","articleSeo","heroProps","commonProps","seasonProps","recommendedProps","clipsProps","infoContainerProps","castProps","detailScreen","sectionType","hasNFTCountdown","getSection","castMemberInfo","selectedArticle","canonical","isSeasonPage","defaultContent","pageContent","currentBioProfile","bioSeo","renderCastDetail","FoxContentDensity","Grid","grid","ShowsTile","Shows","suggestedLoaded","fetchShows","setListPage","setSuggestedTab","nextTabs","nextFilters","nextCollectionId","firstPanelsLoaded","collectionIdChanged","filterChanged","nextFilterMatchesSelectedFilter","updateFilter","collectionIdPanel","defaultPanel","preSelectedFilter","filterUrl","loadPreselectedFilter","useDefaultCollectionId","tabFilters","defaultFilter","newFilterUrl","suggestedTab","resetStore","selectedTabs","showPanel","loadingIcon","scrollContainer","titleShows","getBreadcrumbsData","overlayName","displayDropdown","fetchPanelPaginationLoop","itemPerPage","createDynamicCustomViews","dynamicCustomViewsFilter","hideIfNotUserNetwork","resetPagination","legalDisclaimer","legalExpirationHeader","legalExpirationText","enterCodeButton","enterCodeButtonHint","desktopBackground","mobileBackground","logoHeight","isAuthenticating","singleProviderSignInClicked","callTealiumPageView","idpIsLoading","fetchMVPDProviders","signInCTA","errorTitle","blurClasses","authProps","singleProviderId","resetSingleProviderSignInClicked","signInHeader","signInMedia","signInUX","signInFixedFooter","signInFooterExpiration","signInFooterExpirationHeader","signInFooterExpirationText","signInFooterDisclaimer","filterSitemap","ARIA_LABELS","getCustomAriaLabel","createLink","isShowTitle","fontStyle","selectedAriaLabel","otherProps","createListLink","SiteMap","renderDefaultItem","listGroupItem","renderSeriesItem","isRetired","defaultLinkName","subUrlItems","sub","isCredits","seriesListGroupTitle","legalLinks","markdown","textReg","linkReg","extractLinks","legalItems","mainListContainer","listHeader","nav","mainItems","linkItems","networkHeader","networkItems","listContainer","canonicalLink","sitemapTitle","Subscription","isSubmitted","setIsSubmitted","subscriptionArticleIds","masked_discord_url","legalUrls","termsOfUse","privacyPolicy","signupHeadline","subscription_emailPlaceholder","subscription_subscribeButton","subscription_submittedButton","subscription_legalTextP1","subscription_legalTextP2","subscription_discordText","subscriptionForm","formContainer","subscribeButton","discordContainer","makeSelectGlobalVideoRestartVideo","makeSelectGlobalVideoVideo","makeSelectGlobalUpNextVideo","makeSelectGlobalUpNextHeadline","makeSelectAppRecommendationIdData","suppressNetworkIcon","defaultHideAltHeader","canHideControls","renderInfoInDetail","gridToggleLimit","gridPrimaryToggleLimit","gridMovieToggleLimit","gridUpNextToggleLimit","playerMetadataOverlay","overrideShowNetworkBug","Watch","primaryType","upNextPanel","primaryPanels","setWatchPage","triggerPrerollOptimizely","getChangingState","oldState","fetchMovieDetail","upNextVideo","prevIsVodUnavailable","prevUpNextVideo","prevVideoId","videoNotAvailable","fetchWatchData","OptimizelyInitWindowWatch","video_series_id","triggerWatchInitVariables","renderUpNextPanelVideos","renderPrimaryPanels","clearGlobalLiveRestart","clearWatch","deactivateWatchInitVariables","globalPanelVideo","doNotSetGlobalVideoPanel","playlistItems","isFreeWatch","pageCollectionCount","getPaginationItemsFromPanelId","usePlaylistResponse","freemiumWatchPanelTitle","compactItems","uniqueItems","defaultItems","slicedItems","itemsBeforeCurrent","forceGrid","titleData","sectionItems","headerEpisodes","headerClips","headerMovies","sectionTitleClass","isEpisodeType","isClipType","sectionTitle","getSectionTitleData","mobileOverrideBreakpoint","panelList","initialItems","memberType","renderPanelVideos","isVideoClip","setOverrideMetatags","shouldRenderUpNextPanels","isOptimizelyUnlockedVideoPage","isValidSeries","getOptimizelyRemovedSeries","isEntertainmentContent","onVodSectionClick","handleVodSectionClicked","newRecIdData","isAnonymouslyResumingPlayback","anonymousResumeProfileUpsell","anonymousResume","restartFromBeginning","getVideoId","getSegmentAnonymousId","handlePanelPosition","TimeoutWatch","fetchGlobalVideoPanel","triggerData","validStringRegExp","didSet","addFrame","getuspdata","apiver","str1","cookiearray","pendingCalls","nfe","getUSPData","__uspapi","__uspapiReturn","callId","withAnchor","withDiv","StickyBanner","hidden","setHidden","descriptionParts","wrapperRenderer","stickyBannerContainer","Provider","ProviderGroup","groupName","providerProps","providers-group","providerGroupKey","ProvidersList","moveSideMenuToTop","providersWithoutPreviewPass","removePreviewPassProviders","queryFilteredProviders","filterProvidersByQuery","noProvidersFound","providersByGroup","firstCharacterUppercase","groupKey","getGroupedProviders","groupedProviders","providerGroups","behavior","providersDirectoryKey","allProvidersList","SearchInput","shortInputContainer","VideoProviderSearch","MPAA_RATINGS","videoAllowed","lowercaseContentRating","videoTvIndex","videoMovieIndex","CookiesBlocked","backgroundInline","getChildren","innerContainerStyle","ExpiredPreviewPass","openOverlay","previewPassExpiredHeading","previewPassExpiredSubheading","previewPassButton","Failure","contentChildrenParams","Loading","closeButton","maybeLaterButton","MVPDRetry","MVPDSearch","prevRendered","tvProviderFullListViewed","currentRendered","MVPDStart","tealiumAuthenticationStarted","tvProviderFeatListViewed","MVPDUpsellRedirecting","MvpdDirectSignInRedirect","NotEntitled","PlaybackError","PreviewPassWelcome","dismiss","isRunning","setIsRunning","innerContainerClasses","progressBarStyle","ResumeWithProfile","onRender","overlayText","playFromBeginning","morePerksSeparator","morePerksBorder","morePerksText","actionButtonContainer","actionButtonInnerContainer","actionContainer","buttonItem","imgSrc","hasOnClose","UnlockUpsell","signUpUrl","Success","UpsellConfirm","UpsellError","lastMVPDClicked","authenticationRedirectUrl","isPreviewPassMvpd","overlays","authenticationConfig","authenticationData","pass60minute","pass5minute","waitingOnPcs","nextEntitlementIssues","nextMvpdSignInTrigger","nextPreviewPassExpired","nextTriggerAuthCheck","mvpdSignInTrigger","displayPreviewPassExpiredSlate","renderResume","setAuthZError","nextRenderSignIn","prevGeoLocationDeclined","prevIsLive","prevIsLiveRestart","prevMvpdExpired","prevPreviewPassSignIn","prevRequestSignIn","prevRequiresAuth","prevRequiresAuthLive","prevShowNoSportsOnMobileError","prevSingleProviderSignInClicked","previousVideoId","prevPreauthorizedResources","geoLocationDeclinedChanged","renderGeoLocationError","profilePcsError","checkParentalControls","mvpdExpireChanged","liveRestartChanged","useMVPDRetry","mvpdLoginProfile","getAuthenticationConfig","mvpdWindow","newAuthConfig","authenticationUrl","deviceInfo","getEntitlementsOptions","clearSuccessTimeOut","noErrorMessage","setMVPDSignInTrigger","blockSuccessScreen","showProvidersHandler","successCookieName","getEntitlementsResult","hasFNCEntitlements","isFNCContent","authorizedResources","renderSuccessNext","successTimeOut","isOutOfMarketLivePage","checkAuthResult","previewPass","signInClose","bgImgSrc","expiredHeaderText","expiredMVPD","unlockUpsellPerks","unlockUpsellText","unlockUpsellInButtonText","renderMVPDUpsellRedirecting","upsellUrl","renderUpsellConfirm","geoLocationText","renderVideoProviderSearch","useOptimizelyExperiment","shouldShowOverlays","blockMVPDIncomplete","renderIframe","previewPassOnOpenOverlay","onResumeWithProfileShownAnalytics","resumeWithProfileOpenSignIn","resumeWithProfileOpenSignUp","upsellErrorChildrenProps","cookiesBlocked","expiredPreviewPass","failure","mvpdDirectSignInRedirect","mvpdIncomplete","mvpdRetry","mvpdSearch","mvpdStart","noSportsOnMobile","notEntitled","playbackError","redirectingMVPDUpsell","resumeWithProfile","resumeWithoutProfile","mvpdExpire","unlockUpsell","upsellConfirm","upsellError","previewPassWelcome","openMvpdWindow","closeMvpdWindow","authSharedTheme","AuthContainer","requestorId","networkDisplayOrder","getNetworksDisplayOrder","getAuthRedirectUrl","defaultAuthProps","signInIdentifier","signInProps","profileSignInProps","mvpdIframeProps","mvpdStartProps","mvpdIncompleteProps","authMVPDIncomplete","mvpdRetryProps","MVPDRetyTheme","mvpdSearchProps","successProps","mvpdDirectSignInRedirectProps","authMvpdDirectSignInRedirectTheme","mvpdUpsellRedirectingProps","loadingProps","failureProps","playbackErrorProps","previewPassWelcomeProps","geoLocationProps","noSportsOnMobileProps","notEntitledProps","cookiesBlockedProps","profilePcsErrorProps","contentBlackoutProps","previewPassProps","upsellConfirmProps","upsellErrorProps","authTrackEventsProps","packageId","inRequestorID","isCookiesBlockedError","previewPassCookieName","waitForBlackoutData","page_destination_url","textContainer","SignUpModalContainer","closeModal","externalSimplifiedSignUpURL","closeIcon","handleIframeClose","SignUpModal","ProfileOption","eProfile","networkUpsellPage","getSegmentSignOutStartSource","lastRow","ProfileOptions","renderProfileDropdown","profileOptionsClassNames","profileOptions","BuythroughProfileIcon","setWrapperRef","toggleProfileDropdown","disableAuthentication","userIcon","profileDropdownContainerClasses","profileIconOnClick","NetworkList","Categories","desktopCategories","getGlobalNavItems","isMobileActive","categoryClass","navLinks","HeaderLink","anchorProps","isExternal","ProviderLogo","isSearchActive","onLogoutClick","renderPreviewPass","signInLabel","providerLogo","providerClasses","REFRESH_INTERVAL_MS","PreauthRefresh","checkClientlessPreauthorizedResources","setPreauthRefreshComplete","ignoreCache","preAuthorizedNetworks","refreshPreauthorizedResources","updateMVPDCookie","preAuthorizedResources","darkNavOnHomepage","darkNavOnListing","darkNavOnVideo","darkNavOnNetworkUpsellPage","smartBannerBar","useHoverMenu","hamburgerMenuEnabled","allCollectionsInNav","MobileMenuEnabled","currentIsAuthenticated","setStateCallback","mvpdFetched","isLivePage","isWatchPage","isMaintenance","preauthRefreshComplete","defaultProfileIcon","buythroughProfileIconProps","profileIcon","hasProvider","onMobileMenuClick","menuOpen","rightContentClasses","DefaultHeaderStyle","categoryProps","headerContentWrapper","leftContent","logoProviderWrapper","MobileCloseButton","onSearchClick","searchIconClasses","SearchIcon","profileDivider","storeUrl","StoreIcon","profileSignInText","profileLabel","getCurrentPage","isHeaderPinned","isSmartBannerEnabled","isVideoPage","isListPage","useSimplified","hoverMenuDisplayed","isNetworkUpsellPage","mobileActive","softHide","darkNav","hoverMenuOpen","mobileContainerStyle","isMenuOpen","mobileCategories","preauthRefreshProps","headerContent","headerItemsBannerClass","disableInlineStyles","disable","onUnpin","onUnfix","dynamicNavigation","geoLocationBlocked","isStandalone","maintenance","showAppDownloadPrompt","handleClickOutside","onNavClick","onSignInClick","onSignUpClick","isSignIn","setHeaderPin","fetchCollectionsOnHeaderClick","disabledCollectionPages","separatorKey","dropdownSeparator","locationPath","fullLink","isPersonalityUrl","linkIsActive","disableCollectionFetch","isFNCLiveLink","navItemProps","linkUrl","getPageLocation","getTealiumAuthStartSource","prevRenderProfileDropdown","renderIndexLink","getTealiumCurrentBrand","isFoxNewsLiveLink","altChildren","navItemPlus","renderProvider","renderMobileProvider","mvpdLabel","mvpdIsPreviewPass","signOutElement","page_plan_flow_type","onSimplifiedSignUpClick","setNavScheduleRendered","setSmartBannerEnabled","panelsToPrefetch","Promos","getPromoItemData","itemHeadline","itemDescription","renderPromoTags","linkElement","promoImageContainer","renderPromoImage","contentTag","promoContentContainer","promoHeadline","renderPromoContent","promoContainer","promosTags","promoTags","itemsMember","promosHeadline","promosContainer","Legal","legalContainer","logoWrapper","Collapse","collapsed","setCollapsed","plus","SvgFacebook","SvgInstagram","SvgTwitter","SvgYoutube","SvgPinterest","altoLight","Social","LinkItem","isSocial","hasSlash","signOutAlt","isNullTarget","isSignoutText","socialIcon","brandLogo","anchorClasses","logoutClick","linkTextContainer","LinkItems","FooterContent","renderContent","themeSection","sectionItemsWrapper","footerContent","sectionWrapper","Footer","isPageLoading","setProviderSet","checkMVPD","useMvpdAuth","authMVPDLogoutV2","footerStyle","AppVersion","FooterUpsell","fetchCollectionForFooterUpsell","mobileLogo","pathkey","fetchFooterUpsellCollection","fetchFooterUpsellCollectionPanel","setFooterUpsellCollection","Segment","isAnalyticsReady","loggedInAccountEmail","loggedInAnonymousProfileId","prevLoggedInAccountEmail","prevLoggedInAnonymousProfileId","prevMvpd","prevEntitlements","anonymousLoggedInUpdated","isEmailUpdated","previewPassMVPDRemoved","entitlementsUpdated","shouldIdentifyUser","identifyUser","analyticsUser","firstSegmentIdentifyCalled","loggedInAccountProfileId","hasEntitlementOverride","currentEntitlements","setSegmentContextMVPD","setSegmentEntitlements","segCompProps","segmentCampaignCodes","contextTraits","callSegmentIdentifyEvent","profileType","anonymous","PopUpModal","DynamicRating","Endcard","endcardItems","endCardContentList","headerRecommended","headerUpNext","getEndcardContentList","endcardContentLength","end_card_content_list","end_card_content_length","continuousPlayback","mediaEndingSeconds","videoProcessor","isIosDevice","GenericEndcard","endcardContainer","endcardHeader","UpNextToast","onHide","overrunScenarioText","VideoDetailComponent","actorsRaw","uniqueByCharacterName","isContextPlayer","stillWatchingTimeoutEnabled","WatchContext","blockEndcardsForTrailer","contentStarted","isEndCardClicked","setPlayerState","nextRestartVideo","nextPanelVideo","newIsRestart","hashIncludesPlaylist","newPlaylistId","newIsContinuous","showRestartOverlay","showTrailerUpsell","firstFramePlayed","mediaComplete","setVideoPanel","updateShowcaseVideo","prevProvider","prevMvpdId","userSignedInToMVPD","userSignedInToAccount","mediaFinished","currentUrl","lclMediaEnding","lclMediaEndingSeconds","lclCreditsPlaying","currentDuration","endCardDuration","endCardCuePoint","mediaEndCuePoint","secondsUntilVideoEnd","newCreditsPlaying","nextProgramRights","creditsPlaying","mediaEnding","showEndCards","shouldDisplayEndcard","isEnding","onEndcardClick","liveHeader","liveCTA","fetchedVideo","playerDataHover","renderVideoContainer","videoPercentWatched","videoViewed","showResumeProfileUpsell","resetResumeWithProfile","showVideoDetail","contextProps","restartOverlay","renderVideoDetail","clickedEndSlate","nextRecommendationIdData","clickedThumbnail","completedPodId","firePlayerPageViews","firstAdPlayed","mediaStarted","segmentReferrer","segmentSourceName","segmentSourceType","getMediaInfo","defaultPlayerEvents","floodlightEvent","setVideoStartedPlayback","contentVideoData","categoryTags","uuidv4","pipeAll","travel","eventVideoProps","showTVRating","onAdSkip","eventAdProps","usePlayerPageName","isAutoPlay","lastPath","sourceNameVideo","getSegmentSourceType","getSegmentSourceName","getSegmentReferrer","onChromecastStart","onChromecastComplete","onPlaybackStart","onPlayerError","setPopUpModal","isAdBlockerEnabled","setError","adBlockButtonText","adBlockDetectText","adBlockFailureText","errorObject","setPortalContentFinished","previouslyViewed","videoPlayhead","onAdStart","onAdPlaying","onAdComplete","previousAdTime","onAdPause","adVideoProps","onAdResume","onPause","onResume","onBufferStart","onBufferEnd","totalSecondsViewed","getSegmentPodId","remainingTimeAfterMediaComplete","remainingTimeCountdown","onPlaybackComplete","initialVideoId","initialVideoUrl","onPlaybackInterrupted","onSeekStart","onSeekComplete","onNielsenDtvrTag","nielsen_id3_tag","onVolumeChange","newVolume","oldVolume","video_volume","getStillWatchingDuration","gotoLive","handleMediaStart","handleMediaComplete","videoDuration","watchDuration","videoWatched","shouldShowEndCards","triggerPlayerView","referrerPath","isMovieSource","isLiveSource","isWatchSource","isShowSource","getTealiumSourceShow","isDirectSource","isPlayerHero","upNextToastHidesVideoDetail","fncHideVideoDetails","LiveContext","playerError","setShouldResetStillWatching","newNextVideos","newNextVideosValidFor","prevShouldResetStillWatching","currentEndDate","nextStartDate","minutesToSubtract","showTime","showInMs","toastDisplayDurationInSeconds","clearNextVideosValidFor","hasSportsContent","isFNC","videoItem","outOfMarketPlayerImage","stationId","seriesBackground","currentChannel","onExitEventStream","onHideUpNextToast","onWatchUpNextToast","adPodStarted","onRestartButtonClicked","prevOnMediaCompleteData","prevCurrentVideo","onMediaCompleteData","onSlateStart","onSlatePlaying","eventSlateProps","onSlateComplete","getSegmentSourceData","getSegmentLiveViewedVideo","callbackShow","locationCallback","didTimeout","requestLocation","getGeoLocation","debugDisabledTimeout","Draggable","CONTAINER_ID","PAGE_ROOT_ID","VideoPlayerGlobal","isContinuous","isPopUpModalVisible","miniPosition","controlledPosition","corner","preAuthCheckComplete","popUpModalButtonText","popUpModalMessage","userClosedMiniPlayer","checkAdBlocker","clearPercentWatched","resetVodSectionClicked","nextOriginalItem","newSegmentSourceType","getScreenUrl","nextScreenUrl","forceCollectionKeyartForShowcase","prevIsLivePage","prevMiniPlayerActive","prevStartedPlayback","prevPlayerType","prevIsFullscreen","prevPreAuthCheckComplete","isHeroPlayer","autoplayContent","mvpdIsValidForPlayback","canFetchVideo","shouldFetchVideo","setAutoplayTimeout","playerTypeChanged","videoCleared","fullScreenChanged","isErrors","miniPlayerActiveChanged","isRemount","updatePlayerType","nextTheme","autoplayIdleLimitSeconds","timeoutInMilliseconds","autoplayTimeout","videoGuid","isLivePanel","newScreenUrl","prependCharacter","hideContainerClass","videoPlayer","containerPaddingClass","isLiveMini","videoPlayerGlobal","defaultStyle","portalLocation","exitStreamTimeout","getDefaultPlayerEvents","onReleaseCleared","scrubbingEnabledCalc","getShouldDisablePreviewPassRender","screenUrlPath","playlistParam","playerSetUserActive","setUserAtrribute50PercentViewed","setHasSeenHalfAnyVideo","percentComplete","clearTimeouts","fireFloodlightEvent","triggerSegmentPlayerSectionSource","originalItemId","currentId","newSegmentSourceName","analyticsLocation","renderDynamicRating","showTvRatingOverlay","isLiveVideo","validVideoType","videoTypes","shouldDisplayOverlayVOD","setMiniPlayer","setMiniPlayerActive","clearMiniPlayer","setMiniPosition","handleDrag","handlePositionUpdate","handleResize","handleScroll","playerHeight","getOptimizelyAttributesUserId","is_debug_build","browser_name_version","handleOnClickPipButton","handleOnClickNativePipButton","player_type","segment_anonymous_id","handlePopInButtonClick","handleCloseMiniPlayer","dynamicRating","nativePipBtn","miniPipBtn","nodeRef","onStop","btnPopIn","btnClose","btnPip","fetchNextVideo","newPanelVideo","isLiveType","isTypeLive","localClipPlaylist","localClipVideoId","localClipPlaylistArr","localClipPage","localClipPanelId","localClipCallSign","playNextPlaylistVideo","appRef","CanIAutoplay","ErrorFallback","errorFatalDestination","buttonLink","isWatch","defaultUrl","windows","urlList","urlKeys","getAppUrl","ErrorBoundary","IntervalAction","BlackoutDefinitionFetcher","fetchBlackoutDefinition","blackoutEnabledFromConfig","onComponentUpdate","durationInMinutes","durationInMinutesToMilliseconds","getEnabled","getProfileSDK","ProfileSDK","isLoadingFavorites","favoritesDetails","formatFavorite","formattedFavorites","newFavorites","filteredFavorites","setAppFavorites","mainBackground","breakpointDisableScroll","checkIfLoaded","setSegmentLoaded","trackInteractions","initializeDataDog","initializeRedfast","apiBreakpoint","currentPage","isVideoHero","mvpdAuthOverlayProps","overlayPausedPlayer","renderMvpdAuthOverlay","showSignUp","handleRefreshToken","checkAccount","getFavoritesIE","getFavoritesDetails","setUserProfileConfig","getOpeFoxSdk","favoriteDetails","nextPathName","prevHash","loggingOut","prevOverlay","stickyBanner","prevAnonymousAccount","prevMvpdLogoutData","prevProfileConfig","prevStickyBanner","helperGetAccessToken","accountAdded","anonymousAccessToken","anonymousAccountAdded","isAnonymousAccountLogin","isSearchOverlay","mvpdLogoutAdded","newTokenAvailable","mvpdAdded","overlayChanged","prevAccountAccessToken","prevAnonymousAccessToken","accountTokenChanged","anonTokenChanged","authData","handleGoogleOneTap","statusResponse","credential","isUserTypeGoogle","auto_select","cancel_on_tap_outside","isAppView","geolocationBlocked","isGeoLocationBlocked","removeSegmentUserIdCookie","helperCheckStatus","registerIE","standardHelpers","setCurrentPage","accountReq","scrollEvents","removeBodyClass","pausePlayer","preventPauseOverlays","shouldPausePlayer","accountCloseIgnoreRedirect","fbOptionalLoginText","fbLoginText","fbSignUpOptionalText","fbSignupText","initialAccountScreen","externalHelpers","accountAnalytics","anonymousProfileId","headerPadding","appStyle","AppStyleModule","optimizelyProfileProps","optimizelyUseMVPDLoginProfile","isLivePageAndEpgV2Enabled","setDisableScroll","mainStyle","appWrapperStyle","rootId","onWindowResize","showFooterUpsell","onBlackoutDefinitionFetcherUpdate","handleXid","xidResponse","xid","originBu","Fennec","injectGoogleSignIn","setIsGoogleOneTapDisplayed","contextValue","notification","isDisplayed","loadGoogleSignInAPI","setIsGoogleSignedInBrowser","googleAPI","cookiepolicy","updateGoogleUser","googleUser","mapAnalytics","mountDataLayer","PANEL_TYPE_LISTING","isNationNewsEnabled","onSignUpSuccess","copyFavoritesToAccount","currentApiBreakpoint","newApiBreakpoint","currentAuthorizationToken","newCurrentPage","newIsHomePage","newIsPlayerLoaded","newIsListPage","newIsLivePage","newIsPageLoading","newIsNavScheduleRendered","toggleValue","sentOverlay","chosenOverlay","chosenValue","findProviderAndSet","providerObject","previewPassCookie","cookieMvpd","cookieAnalyticsStarted","onPreviewPassStarted","findProvider","providerFetched","checkForProviders","newProviders","newIsWatchPage","pageViewEvents","additionalAuthProps","wrapLoaderOverlay","videoPanel","WrappedApp","stickyBannerPanel","getStickBannerData","routeKeyGen","keyGenerator","onAccountLoad","onCCPAVerifyLeave","verifyPathname","appViewRoute","appRoute","baseUrlSlugRedirect","redirectRoute","screens","AccountScreen","ArticleDetailScreen","CollectionScreen","ContentDetailScreen","Error500Screen","Error404Screen","LatestEpisodeScreen","LiveScreen","LoadingScreen","MVPDScreen","ResetPasswordScreen","SearchScreen","ShowsScreen","SiteMapScreen","SubscriptionScreen","WatchScreen","accountRoute","verifyRoute","singleProviderSignInRoute","SingleMvpd","debugRoute","DebugPanelEnabled","defaultRoutes","RootScreen","livePath","designV2Routes","mvpdRoute","retiredShowsRoute","SeriesDetailScreen","SignInScreen","ES6Promise","EnableDevTools","createStoreWithMiddleware","traceLimit","applyMiddleware","composeEnhancers","handleUpdate","isSeason","renderPage","renderMethod","renderPageWithDataFetch","pathRoot","getRouteScreenUrl","AppComp","Comp","fetchNothing","fetchAppData","fetchParams","errFetch","newSearchParams","newSearchString","removeUnsafeUrlParams","disableSmoothScrollMSIE","readCookie","cleanValue","cleanupCookieValue","isParsingCookie","Cookies","changeListeners","HAS_DOCUMENT_COOKIE","parseCookies","_updateBrowserValues","_emitChange","getAll","finalOptions","addChangeListener","removeChangeListener"],"mappings":"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,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,OAAO,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,IAAI,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,IAAI,SAAS,OAAO,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,OAAO,KAAK,SAAS,UAAU,SAAS,UAAU,SAAS,UAAU,SAAS,qBAAqB,SAAS,qBAAqB,SAAS,eAAe,SAAS,UAAU,SAAS,UAAU,SAAS,UAAU,SAAS,UAAU,SAAS,UAAU,SAAS,KAAK,SAAS,eAAe,SAAS,qBAAqB,SAAS,qBAAqB,SAAS,qBAAqB,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,qBAAqB,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,qBAAqB,SAAS,eAAe,SAAS,qBAAqB,SAAS,qBAAqB,SAAS,eAAe,SAAS,qBAAqB,SAAS,qBAAqB,SAAS,qBAAqB,SAAS,eAAe,SAAS,eAAe,SAAS,qBAAqB,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,eAAe,SAAS,qBAAqB,SAAS,eAAe,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,MAAM,SAAS,M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AK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EA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","file":"bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({}[chunkId]||chunkId) + \".bundle.js?cb=1734556040556\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 746);\n","module.exports = (__webpack_require__(88))(0);","module.exports = (__webpack_require__(88))(1);","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = (__webpack_require__(88))(119);","import _ from 'lodash';\n\nexport const getLanguageObject = () => {\n const globalLanguage = global ? global.Language : null;\n const windowLanguage = window ? window.Language : null;\n return windowLanguage || globalLanguage || {};\n};\n\nexport const isBrowserIE = () => {\n const ua = _.get(window, 'navigator.userAgent', '');\n const isEdge = /Edge/.test(ua);\n const isIE11 = /Trident/.test(ua);\n return isEdge || isIE11;\n};\n\nexport const toBoolean = value => {\n if (['FALSE', 'false', false, '0', 0, null, -1].indexOf(value) !== -1) return false;\n if (['TRUE', 'true', true, '1', 1].indexOf(value) !== -1) return true;\n return !!value;\n};\n\nexport const mergeStyles = (baseStyle, extendedStyle) => {\n const style = baseStyle;\n _.mergeWith(baseStyle, extendedStyle, (objVal, srcVal) => `${objVal} ${srcVal}`);\n\n return style;\n};\n\nexport const noop = () => {};\n","module.exports = (__webpack_require__(88))(140);","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = (__webpack_require__(88))(100);","module.exports = (__webpack_require__(88))(137);","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var getTimezoneOffsetInMilliseconds = require('../_lib/getTimezoneOffsetInMilliseconds/index.js')\nvar isDate = require('../is_date/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar parseTokenDateTimeDelimeter = /[T ]/\nvar parseTokenPlainTime = /:/\n\n// year tokens\nvar parseTokenYY = /^(\\d{2})$/\nvar parseTokensYYY = [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n]\n\nvar parseTokenYYYY = /^(\\d{4})/\nvar parseTokensYYYYY = [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n]\n\n// date tokens\nvar parseTokenMM = /^-(\\d{2})$/\nvar parseTokenDDD = /^-?(\\d{3})$/\nvar parseTokenMMDD = /^-?(\\d{2})-?(\\d{2})$/\nvar parseTokenWww = /^-?W(\\d{2})$/\nvar parseTokenWwwD = /^-?W(\\d{2})-?(\\d{1})$/\n\n// time tokens\nvar parseTokenHH = /^(\\d{2}([.,]\\d*)?)$/\nvar parseTokenHHMM = /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/\nvar parseTokenHHMMSS = /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/\n\n// timezone tokens\nvar parseTokenTimezone = /([Z+-].*)$/\nvar parseTokenTimezoneZ = /^(Z)$/\nvar parseTokenTimezoneHH = /^([+-])(\\d{2})$/\nvar parseTokenTimezoneHHMM = /^([+-])(\\d{2}):?(\\d{2})$/\n\n/**\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Object} [options] - the object with options\n * @param {0 | 1 | 2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parse('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Parse string '+02014101',\n * // if the additional number of digits in the extended year format is 1:\n * var result = parse('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction parse (argument, dirtyOptions) {\n if (isDate(argument)) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument !== 'string') {\n return new Date(argument)\n }\n\n var options = dirtyOptions || {}\n var additionalDigits = options.additionalDigits\n if (additionalDigits == null) {\n additionalDigits = DEFAULT_ADDITIONAL_DIGITS\n } else {\n additionalDigits = Number(additionalDigits)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone) * MILLISECONDS_IN_MINUTE\n } else {\n var fullTime = timestamp + time\n var fullTimeDate = new Date(fullTime)\n\n offset = getTimezoneOffsetInMilliseconds(fullTimeDate)\n\n // Adjust time when it's coming from DST\n var fullTimeDateNextDay = new Date(fullTime)\n fullTimeDateNextDay.setDate(fullTimeDate.getDate() + 1)\n var offsetDiff =\n getTimezoneOffsetInMilliseconds(fullTimeDateNextDay) -\n getTimezoneOffsetInMilliseconds(fullTimeDate)\n if (offsetDiff > 0) {\n offset += offsetDiff\n }\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(argument)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(parseTokenDateTimeDelimeter)\n var timeString\n\n if (parseTokenPlainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n }\n\n if (timeString) {\n var token = parseTokenTimezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var parseTokenYYY = parseTokensYYY[additionalDigits]\n var parseTokenYYYYY = parseTokensYYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = parseTokenMM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = parseTokenDDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = parseTokenMMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = parseTokenWww.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n return dayOfISOYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = parseTokenWwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n return dayOfISOYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = parseTokenHH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = parseTokenHHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = parseTokenHHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = parseTokenTimezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n // ±hh\n token = parseTokenTimezoneHH.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = parseTokenTimezoneHHMM.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10)\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOYear (isoYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\nmodule.exports = parse\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"debugContainer\":\"debugContainer__bUj-R\",\"header\":\"header__1JDC6\",\"title\":\"title__39l-d\",\"links\":\"links__3WaKw\",\"body\":\"body__2SC1G\",\"spacer\":\"spacer__1QhuS\",\"panel\":\"panel__1qU0m\",\"featureFlags\":\"featureFlags__g5oG4\",\"livestreamContainer\":\"livestreamContainer__2ezJS\",\"formGroup\":\"formGroup__3vS1h\",\"formLabel\":\"formLabel__2qp6k\",\"formWarning\":\"formWarning__24Vkq\",\"locationInput\":\"locationInput__1aRuF\",\"locationResults\":\"locationResults__Kdala\",\"saveButton\":\"saveButton__3hH8y\"};","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loaderWrapper\":\"loaderWrapper__XGyfi\",\"seeAllButton\":\"seeAllButton__aAwUq\",\"loaderSeparator\":\"loaderSeparator___IXb6\",\"separator\":\"separator__3uLcx\",\"heroLoaderPlaceholder\":\"heroLoaderPlaceholder__3nX-5\",\"heroLoaderTitle\":\"heroLoaderTitle__1-xaD\",\"heroLoaderSubtitle\":\"heroLoaderSubtitle___Kvmd\",\"heroLoaderDescription\":\"heroLoaderDescription__nnYfu\",\"heroLoaderBottomDescription\":\"heroLoaderBottomDescription__2iOXJ\",\"heroLoaderButton\":\"heroLoaderButton__2TxVp\",\"firstHeaderContainer\":\"firstHeaderContainer__3K0PO\",\"slideContainer\":\"slideContainer__JXc-F\",\"homeSlideHeaderContainer\":\"homeSlideHeaderContainer__2DPPL\",\"pageMaxWidth\":\"pageMaxWidth__2Ih_C\",\"heroImagePoster\":\"heroImagePoster__2VQfF\",\"dots\":\"dots__1vR9k\",\"defaultPanel\":\"defaultPanel__1SSBy\",\"slide\":\"slide__3aRRt\",\"dotsList\":\"dotsList__3rT6H\",\"rightArrow\":\"rightArrow__1ygBB\",\"leftArrow\":\"leftArrow__3aWhT\",\"breadcrumb\":\"breadcrumb__1jAkU\",\"breadcrumbs\":\"breadcrumbs__3d42d\",\"heroPanel\":\"heroPanel__17ral\",\"additionalPoster\":\"additionalPoster__3dcuy\",\"promoBanner\":\"promoBanner__2-Wc4\",\"foxAwesomeScreen\":\"foxAwesomeScreen__20xDL\",\"container\":\"container__3_Pja\",\"carouselContainer\":\"carouselContainer__2m82Y\",\"fowAwesomeContainer\":\"fowAwesomeContainer__nx8LK\",\"heroImageContainer\":\"heroImageContainer__nZjrz\",\"heroPromo\":\"heroPromo__1krTh\",\"slideSmallPromo\":\"slideSmallPromo__2iWO4\",\"smallPromo\":\"smallPromo__zBW2L\",\"smallPromoContainer\":\"smallPromoContainer__2NVZy\",\"smallPromoImage\":\"smallPromoImage__S66oD\",\"active\":\"active__1I2AV\",\"inactive\":\"inactive__3KL-X\",\"hr\":\"hr__2z3Ki\",\"fade\":\"fade__3NJUY\",\"redesignFade\":\"redesignFade__-xb38\",\"screen\":\"screen__2vcqQ\",\"redesignScreenStyle\":\"redesignScreenStyle__1aHDp\"};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Helpers = exports.ScrollElement = exports.ScrollLink = exports.animateScroll = exports.scrollSpy = exports.Events = exports.scroller = exports.Element = exports.Button = exports.Link = undefined;\n\nvar _Link = require('./components/Link.js');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nvar _Button = require('./components/Button.js');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Element = require('./components/Element.js');\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _scroller = require('./mixins/scroller.js');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _scrollEvents = require('./mixins/scroll-events.js');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nvar _scrollSpy = require('./mixins/scroll-spy.js');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _animateScroll = require('./mixins/animate-scroll.js');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollLink = require('./mixins/scroll-link.js');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nvar _scrollElement = require('./mixins/scroll-element.js');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _Helpers = require('./mixins/Helpers.js');\n\nvar _Helpers2 = _interopRequireDefault(_Helpers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Link = _Link2.default;\nexports.Button = _Button2.default;\nexports.Element = _Element2.default;\nexports.scroller = _scroller2.default;\nexports.Events = _scrollEvents2.default;\nexports.scrollSpy = _scrollSpy2.default;\nexports.animateScroll = _animateScroll2.default;\nexports.ScrollLink = _scrollLink2.default;\nexports.ScrollElement = _scrollElement2.default;\nexports.Helpers = _Helpers2.default;\nexports.default = { Link: _Link2.default, Button: _Button2.default, Element: _Element2.default, scroller: _scroller2.default, Events: _scrollEvents2.default, scrollSpy: _scrollSpy2.default, animateScroll: _animateScroll2.default, ScrollLink: _scrollLink2.default, ScrollElement: _scrollElement2.default, Helpers: _Helpers2.default };","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var toString = require('./toString');\n\n/**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\nfunction toLower(value) {\n return toString(value).toLowerCase();\n}\n\nmodule.exports = toLower;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2xD-X\",\"videoContainer\":\"videoContainer__13AcN\",\"videoSizer\":\"videoSizer__3gFdl\",\"bannerContainer\":\"bannerContainer__tjm8X\",\"exitContainer\":\"exitContainer__2a6L-\",\"digitalChannelContainer\":\"digitalChannelContainer__2hdqn\",\"loaderContainer\":\"loaderContainer__1EYEk\",\"loader\":\"loader__3uAv-\",\"bannerCopy\":\"bannerCopy__2PlO_\",\"watchDetailContainer\":\"watchDetailContainer__2wYw9\",\"mobileScheduleHeader\":\"mobileScheduleHeader__2L33H\",\"panelPlayerAltHeader\":\"panelPlayerAltHeader__30rA4\",\"altHeaderWrapper\":\"altHeaderWrapper__3EdFe\",\"cta\":\"cta__2WS5s\",\"promoHeader\":\"promoHeader__1Ps1l\",\"promoText\":\"promoText__1z8Dw\",\"button\":\"button__3YOyg\",\"buttonText\":\"buttonText__CMk3_\",\"scheduleGrid\":\"scheduleGrid__azxn4\",\"exitHeader\":\"exitHeader___oJap\",\"exitCopy\":\"exitCopy__1nlXz\",\"scheduleRowMobile\":\"scheduleRowMobile__VzfGY\",\"scheduleLeft\":\"scheduleLeft__3ApEf\",\"networkLogo\":\"networkLogo__2OEMe\",\"affiliateNetworkLogo\":\"affiliateNetworkLogo__2gyGf\",\"altHeaderDetails\":\"altHeaderDetails__14o8U\",\"gridLoading\":\"gridLoading__-stT5\",\"gridLoader\":\"gridLoader__zsuJf\",\"playerSpacer\":\"playerSpacer__3VP8Z\",\"noScroll\":\"noScroll__26Yzo\",\"dropdown\":\"dropdown__CuOVZ\",\"videoOuterContainer\":\"videoOuterContainer__28MXR\",\"panelPlayer\":\"panelPlayer__1SXVc\",\"tabDateLabel\":\"tabDateLabel__3ekFY\",\"tabButtons\":\"tabButtons__10aXS\",\"tab\":\"tab__1-8PM\",\"active\":\"active__2IgrY\",\"mobileDropdowns\":\"mobileDropdowns__2A-sG\",\"affiliateNetworkLogoHidden\":\"affiliateNetworkLogoHidden__3SZGY\",\"timeline\":\"timeline__1aGdA\",\"timelineLeft\":\"timelineLeft__2a_Sh\",\"timelineDropdown\":\"timelineDropdown__1gY-u\",\"timelineMain\":\"timelineMain__2CTES\",\"time\":\"time__EeJAP\",\"timelineEmptyArrow\":\"timelineEmptyArrow__7b1qK\",\"timelineArrow\":\"timelineArrow__2tfJl\",\"timelineRightArrow\":\"timelineRightArrow__JER4G\",\"timelineLeftArrow\":\"timelineLeftArrow__1PKD5\",\"scheduleRow\":\"scheduleRow__2YLD0\",\"scheduleRowOpen\":\"scheduleRowOpen__1QIL_\",\"currentTime\":\"currentTime__5pJb5\",\"scheduleRowSelected\":\"scheduleRowSelected__e_ydN\",\"altHeaderVideoContainer\":\"altHeaderVideoContainer__3KUMs\",\"scheduleItemWrapper\":\"scheduleItemWrapper__2p1--\",\"epgWrap\":\"epgWrap__1vO-7\",\"noEpg\":\"noEpg__1Aeel\",\"epgWrapNation\":\"epgWrapNation__24gb7\",\"epgContainer\":\"epgContainer__snFH8\",\"dividerLine\":\"dividerLine__3qlFZ\",\"breadcrumbs\":\"breadcrumbs__7xGyK\"};","module.exports = (__webpack_require__(88))(147);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"wrapper__jnTbv\",\"background\":\"background__1ntvq\",\"bottomFade\":\"bottomFade__25aTt\",\"loader\":\"loader__2a8GN\",\"container\":\"container__FMZ78\",\"hero\":\"hero__1dxC3\",\"content\":\"content__swxzq\",\"info\":\"info__3fVdY\",\"textRow1\":\"textRow1__21qhy\",\"textRow2\":\"textRow2__Kiy2a\",\"textRow3\":\"textRow3__1rn9e\",\"textRow4\":\"textRow4__CZo_o\",\"textRow5\":\"textRow5__2kiBq\",\"textRow6\":\"textRow6__2Q0Is\",\"collection\":\"collection__10T52\",\"carousel\":\"carousel__1d_f_\",\"carouselTile\":\"carouselTile__3nHg9\",\"image1\":\"image1__hZeIp\",\"cast\":\"cast__1S2b0\",\"poster\":\"poster__IkXzr\",\"about\":\"about__MxMZA\",\"aboutText\":\"aboutText__2T3ok\",\"aboutIcons\":\"aboutIcons__23WFV\",\"icon\":\"icon__gohaG\",\"links\":\"links__3-iMK\",\"textRow7\":\"textRow7__5qlo7\",\"textRow8\":\"textRow8__3waOx\",\"textRow9\":\"textRow9__34AXV\",\"block\":\"block__1GkjP\"};","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"scheduleMain\":\"scheduleMain__3AmiZ\",\"container\":\"container___SXZc\",\"overflowButtonWrapper\":\"overflowButtonWrapper__2zu8G\",\"scheduleItem\":\"scheduleItem__paKxT\",\"current\":\"current__LpOjz\",\"scheduleItemActive\":\"scheduleItemActive__1zvrr\",\"dummy\":\"dummy__39Grb\",\"title\":\"title__30vJA\",\"subtitle\":\"subtitle__w8T7k\",\"titleContainer\":\"titleContainer__19Tfd\",\"titleText\":\"titleText__1z-CR\",\"badge\":\"badge__1BAlJ\",\"blueBadge\":\"blueBadge__65KOf\",\"newBadge\":\"newBadge__26qa2\",\"redBadge\":\"redBadge__2kWlG\",\"liveBadge\":\"liveBadge__wtUn1\",\"defaultBadge\":\"defaultBadge__3abS4\",\"otherBadge\":\"otherBadge__2lOjk\",\"detailContainer\":\"detailContainer__3NYJZ\",\"detailContainerLeft\":\"detailContainerLeft__1zIRN\",\"detailContainerRight\":\"detailContainerRight__3Up5A\",\"detailTitle\":\"detailTitle__2hYM7\",\"detailSubtitle\":\"detailSubtitle__h6Ggv\",\"detailDescription\":\"detailDescription__RIiya\",\"detailInfo\":\"detailInfo__ewG_z\",\"actionButtons\":\"actionButtons__zKQqa\",\"buttonGutter\":\"buttonGutter__3W1HZ\",\"actionButton\":\"actionButton__eHygY\",\"secondaryText\":\"secondaryText__FatrR\",\"actionButtonLocked\":\"actionButtonLocked__S0F_f\",\"actionButtonText\":\"actionButtonText__2DEBN\",\"noAuthZActionButton\":\"noAuthZActionButton__2Xzgs\",\"lock\":\"lock__2djd5\",\"caret\":\"caret__1tyCp\",\"timestamp\":\"timestamp__OLyRQ\"};","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__28fDd\",\"networkLogo\":\"networkLogo__a4MSY\",\"detailContainer\":\"detailContainer__2UFOn\",\"title\":\"title__3UuAi\",\"titleLink\":\"titleLink__3Mfs-\",\"titleLinkDisabled\":\"titleLinkDisabled__G1t6f\",\"showSubtitle\":\"showSubtitle__NKPqp\",\"toggle\":\"toggle__11kzQ\",\"metadata\":\"metadata__1Oqg7\",\"networkLogoDetail\":\"networkLogoDetail__1jK7x\",\"controlsHidden\":\"controlsHidden__1dH_B\",\"playerLoading\":\"playerLoading__388dk\",\"mediaEnding\":\"mediaEnding__3l_tv\",\"infoContainer\":\"infoContainer__232ms\",\"subtitle\":\"subtitle__2dw1o\",\"subtitleCredits\":\"subtitleCredits__2ScgT\",\"subtextCredits\":\"subtextCredits__1M6Xt\",\"creditsString\":\"creditsString__3mpNY\",\"subtext\":\"subtext__2JrUo\",\"subtextExpanded\":\"subtextExpanded__1NLSG\",\"subtextTuneIn\":\"subtextTuneIn__1YLTN\",\"creditsWrapper\":\"creditsWrapper__16bPc\",\"tuneInWrapper\":\"tuneInWrapper__GWiG9\",\"descriptionWrapper\":\"descriptionWrapper__2dkmB\",\"badge\":\"badge___KkWa\",\"liveIndicator\":\"liveIndicator__1Pr4K\",\"badgeContainer\":\"badgeContainer__29c0l\",\"titleDisabled\":\"titleDisabled__jtw9I\",\"contextTitle\":\"contextTitle__3Z7HW\",\"displayReadMore\":\"displayReadMore__3OZcU\",\"adPlaying\":\"adPlaying__29tRN\",\"hideNetworkLogo\":\"hideNetworkLogo__39KEQ\",\"networkLogoFullscreen\":\"networkLogoFullscreen__RFYDA\"};","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__1JTqT\",\"SignUp\":\"SignUp__3LWli\",\"isNation\":\"isNation__oDFzu\",\"InnerContainer\":\"InnerContainer__pzRLv\",\"SignUpContainer\":\"SignUpContainer__3u5Zf\",\"DefaultButton_Round\":\"DefaultButton_Round__hxGX-\",\"btnPrimary\":\"btnPrimary__2lO8l\",\"btn\":\"btn__1Y2ic\",\"btnHollow\":\"btnHollow__3p3Nx\",\"btnBlue\":\"btnBlue__1r3AP\",\"btnFoxSoul\":\"btnFoxSoul__3YQ4U\",\"DefaultErrorText\":\"DefaultErrorText__2fX4z\",\"errorText\":\"errorText__19Y1B\",\"active\":\"active__3STPB\",\"title\":\"title__2rNla\",\"passwordLabel\":\"passwordLabel__3roFP\",\"inputField\":\"inputField__2wW2t\",\"back\":\"back__1JUPc\",\"signupColumn\":\"signupColumn__2-pbF\",\"signupColumnSplit\":\"signupColumnSplit__3eiRC\",\"signupColumnSplitError\":\"signupColumnSplitError__2gDz8\",\"signupInline\":\"signupInline__wrvHJ\",\"signupDisabledField\":\"signupDisabledField__3FYHd\",\"signupFieldInfo\":\"signupFieldInfo__1duk8\",\"signupFormContainer\":\"signupFormContainer__2-an7\",\"signupShowPassword\":\"signupShowPassword__2VW-n\",\"signupNameContainer\":\"signupNameContainer__2SHjs\",\"signupFirstName\":\"signupFirstName__1z_xP\",\"signupBirthdayGenderContainer\":\"signupBirthdayGenderContainer__3cQHm\",\"signupTermsContainer\":\"signupTermsContainer__2atKv\",\"signupTerms\":\"signupTerms__ziV_E\",\"termsLink\":\"termsLink__3W0FJ\",\"termsText\":\"termsText__rQ5aX\",\"errorInput\":\"errorInput__2i2y7\"};","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"section\":\"SeriesDetail_section_1K6FL\",\"screenShows\":\"SeriesDetail_screenShows_22FFo\",\"screenElement\":\"SeriesDetail_screenElement_SbOSq\",\"personalityBioContainer\":\"SeriesDetail_personalityBioContainer_2ZXkc\",\"personalityBioName\":\"SeriesDetail_personalityBioName_1o7uI\",\"personalityBioImage\":\"SeriesDetail_personalityBioImage_czOu9\",\"personalityBioDescription\":\"SeriesDetail_personalityBioDescription_1XzqZ\",\"background\":\"SeriesDetail_background_UYPFE\",\"latestVideo\":\"SeriesDetail_latestVideo_Q94sW\",\"brandingBackground\":\"SeriesDetail_brandingBackground_3YCnl\",\"tabContent\":\"SeriesDetail_tabContent_33Dwz\",\"videoHero\":\"SeriesDetail_videoHero_ivsNL\",\"socialLinkContainer\":\"SeriesDetail_socialLinkContainer_2APXx\",\"socialLink\":\"SeriesDetail_socialLink_lYKhs\",\"featuredPromo\":\"SeriesDetail_featuredPromo_3EF04\",\"featuredPromoHeadline\":\"SeriesDetail_featuredPromoHeadline_FgfXh\",\"featuredPromoDesc\":\"SeriesDetail_featuredPromoDesc_ThPfN\",\"ctaButtonContainer\":\"SeriesDetail_ctaButtonContainer_1pud7\",\"ctaButton\":\"SeriesDetail_ctaButton_2808E\",\"ctaButtonText\":\"SeriesDetail_ctaButtonText_6Q8Mi\",\"carouselContainer\":\"SeriesDetail_carouselContainer_2NQMr\",\"dividerContainer\":\"SeriesDetail_dividerContainer_3Z9Hj\",\"carouselDivider\":\"SeriesDetail_carouselDivider_16fK6\",\"tabListNav\":\"SeriesDetail_tabListNav_1k6mY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"downloadBanner\":\"downloadBanner__35oOa\",\"hideDownloadBanner\":\"hideDownloadBanner__3TNl2\",\"Header\":\"Header__19Md3\",\"redesignCollections\":\"redesignCollections__3rRwu\",\"clearHeader\":\"clearHeader__1H3ie\",\"graphikFont\":\"graphikFont__24d8J\",\"proximaFont\":\"proximaFont__2VIfJ\",\"containerHoverMenu\":\"containerHoverMenu__19UOf\",\"content\":\"content__1SzcX\",\"logoProviderWrapper\":\"logoProviderWrapper__2KEF3\",\"hoverMenuContainer\":\"hoverMenuContainer__1FD6W\",\"navLinks\":\"navLinks__3SBqY\",\"categoryItem\":\"categoryItem__2xnvO\",\"showsHoverMenu\":\"showsHoverMenu__1kk-O\",\"moviesHoverMenu\":\"moviesHoverMenu__15uNs\",\"profileOptionsContainer\":\"profileOptionsContainer__2visk\",\"categories\":\"categories__2rexT\",\"accountLinks\":\"accountLinks__28IR2\",\"accountStatus\":\"accountStatus__3swYR\",\"upgradeNowBtn\":\"upgradeNowBtn__8xno9\",\"categoriesMobile\":\"categoriesMobile__3vzjb\",\"navScheduleRendered\":\"navScheduleRendered__l1h8f\",\"categoriesMobilev2\":\"categoriesMobilev2__2s7tJ\",\"iosDevice\":\"iosDevice__1JFz4\",\"mvpdButton\":\"mvpdButton__1AC5O\",\"profileButton\":\"profileButton__23BvD\",\"userButton\":\"userButton__BExzh\",\"profileDivider\":\"profileDivider__2fPTE\",\"mobileMenuAvailable\":\"mobileMenuAvailable__3txLv\",\"categoryItemMobile\":\"categoryItemMobile__26clC\",\"categoryItemMobilev2\":\"categoryItemMobilev2__1HP4m\",\"containerMobile\":\"containerMobile__J9okA\",\"containerMobilev2\":\"containerMobilev2__3EBMy\",\"softHide\":\"softHide__kzz4q\",\"fullWidth\":\"fullWidth__3qh9o\",\"headerContentWrapper\":\"headerContentWrapper__1qwW9\",\"accountOptionsContainer\":\"accountOptionsContainer__3cwqu\",\"profileOption\":\"profileOption__2-70Q\",\"accountOptionContainer\":\"accountOptionContainer__3zfcx\",\"accountOptionLoggedIn\":\"accountOptionLoggedIn__3nK_k\",\"foxAwesomeContent\":\"foxAwesomeContent__3-pst\",\"maintenance\":\"maintenance__12NHK\",\"contentMobile\":\"contentMobile__oJbii\",\"logo\":\"logo__vp66j\",\"dropdownSeparator\":\"dropdownSeparator__Vc5Cu\",\"providerLogo\":\"providerLogo__3yHqp\",\"signOutContainer\":\"signOutContainer__3HvUu\",\"mobileSplit\":\"mobileSplit__sUnIc\",\"rightArrow\":\"rightArrow__bFFBa\",\"signOutButton\":\"signOutButton__2TMRC\",\"providerLogoDesktop\":\"providerLogoDesktop__1vjV5\",\"rightIcon\":\"rightIcon__1sR5S\",\"close\":\"close__1pIGt\",\"innerContent\":\"innerContent__28Pwi\",\"profileDropdown\":\"profileDropdown__r6NDW\",\"profileDropdownOpen\":\"profileDropdownOpen__y_ig-\",\"profileIconContainer\":\"profileIconContainer__bTVaa\",\"signInContainer\":\"signInContainer__2lAcb\",\"appDownloadGroup\":\"appDownloadGroup__2m0cy\",\"appDownloadGroupv2\":\"appDownloadGroupv2__22ER6\",\"appDownloadText\":\"appDownloadText__qa8Cp\",\"appDownloadIcon\":\"appDownloadIcon__YtVn0\",\"iosIcon\":\"iosIcon__3D650\",\"appDownloadButton\":\"appDownloadButton__6Vg-r\",\"appDownloadButtonv2\":\"appDownloadButtonv2__cVnX3\",\"appDownloadButtonImage\":\"appDownloadButtonImage__1dyrc\",\"divider\":\"divider___0Dxz\",\"headerItems\":\"headerItems__3avHP\",\"categoryItemActive\":\"categoryItemActive__Rto-D\",\"dropdownShowsMovies\":\"dropdownShowsMovies__nrZF6\",\"accountDropdown\":\"accountDropdown__-MdHC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__34l8F\",\"resetPassword\":\"resetPassword__b0jQI\",\"isNation\":\"isNation__yWMNr\",\"InnerContainer\":\"InnerContainer__JhWKy\",\"resetPasswordContainer\":\"resetPasswordContainer__1x13C\",\"DefaultButton_Round\":\"DefaultButton_Round__2Qjp0\",\"btnPrimary\":\"btnPrimary__1qOPv\",\"btnHollow\":\"btnHollow__3hkjy\",\"btnBlue\":\"btnBlue__3PuCk\",\"btnFoxSoul\":\"btnFoxSoul__1qKY2\",\"foxSoul\":\"foxSoul__3SV_g\",\"DefaultErrorText\":\"DefaultErrorText__33w6x\",\"error\":\"error__K8wLQ\",\"title\":\"title__2dQG7\",\"passwordLabel\":\"passwordLabel__1kFhc\",\"inputField\":\"inputField__2YeCE\",\"back\":\"back__2eHiI\",\"wrap\":\"wrap__1lEas\",\"resetPasswordFormContainer\":\"resetPasswordFormContainer__ZW07u\",\"resetPasswordInfo\":\"resetPasswordInfo__3zQJq\",\"resetPasswordField\":\"resetPasswordField__3pBbD\",\"resetPasswordShowPassword\":\"resetPasswordShowPassword__2imeO\",\"secondaryHeader\":\"secondaryHeader__9Kayx\",\"resetPasswordText\":\"resetPasswordText__2j2_X\",\"floatingLabel\":\"floatingLabel__35R8f\",\"inputFieldError\":\"inputFieldError__2GS4j\",\"filledButton\":\"filledButton__b7k6w\",\"floatingLabelFilled\":\"floatingLabelFilled__3LqT4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentContainer\":\"SiteMap_contentContainer_2KAxw\",\"sitemapTitle\":\"SiteMap_sitemapTitle_3LGay\",\"listGroup\":\"SiteMap_listGroup_3BxIK\",\"seriesListGroup\":\"SiteMap_seriesListGroup_3_5ff\",\"list\":\"SiteMap_list_2nEHP\",\"contentLink\":\"SiteMap_contentLink_2vtfh\",\"listGroupItem\":\"SiteMap_listGroupItem_1onJo\",\"listContainer\":\"SiteMap_listContainer_1XsBz\",\"mainListContainer\":\"SiteMap_mainListContainer_382D8\",\"listHeader\":\"SiteMap_listHeader_F29_B\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"OverlayTheme_container_xYjsB\",\"background\":\"OverlayTheme_background_2N96X\",\"messageContainer\":\"OverlayTheme_messageContainer_ZOo6M\",\"title\":\"OverlayTheme_title_2sYJT\",\"message\":\"OverlayTheme_message_1m6ey\"};","var React = require('react');\nvar clamp = require('./clamp.js');\nvar pick = require('object.pick');\nvar PropTypes = require('prop-types');\nvar ReactDOM = require('react-dom');\n\n/**\n * multuline text-overflow: ellipsis\n */\nfunction Dotdotdot() {\n if(!(this instanceof Dotdotdot)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n this.update = this.update.bind(this);\n this.getContainerRef = function (container) {\n this.container = container;\n }.bind(this);\n}\n\nDotdotdot.prototype = Object.create(React.Component.prototype);\nDotdotdot.prototype.componentDidMount = function() {\n window.addEventListener('resize', this.update, false);\n // NOTE: It's possible, not all fonts are loaded on window.load\n window.addEventListener('load', this.update, false);\n this.dotdotdot(ReactDOM.findDOMNode(this.container));\n};\nDotdotdot.prototype.componentWillUnmount = function() {\n window.removeEventListener('resize', this.update, false);\n window.removeEventListener('load', this.update, false);\n};\nDotdotdot.prototype.componentDidUpdate = function() {\n this.dotdotdot(ReactDOM.findDOMNode(this.container));\n};\n\nDotdotdot.prototype.dotdotdot = function(container) {\n if (!container) {\n return;\n }\n\n if (this.props.clamp) {\n if (container.length) {\n throw new Error('Please provide exacly one child to dotdotdot');\n }\n clamp(container, pick(this.props, [\n 'animate',\n 'clamp',\n 'splitOnChars',\n 'truncationChar',\n 'truncationHTML',\n 'useNativeClamp'\n ]));\n };\n};\nDotdotdot.prototype.update = function() {\n this.forceUpdate();\n};\n\nDotdotdot.prototype.render = function() {\n return React.createElement(\n this.props.tagName,\n {\n ref: this.getContainerRef,\n className: this.props.className\n },\n this.props.children\n );\n};\n\n// Statics:\nDotdotdot.propTypes = {\n children: PropTypes.node,\n clamp: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool\n ]).isRequired,\n truncationChar: PropTypes.string,\n useNativeClamp: PropTypes.bool,\n className: PropTypes.string,\n tagName: PropTypes.string\n};\n\nDotdotdot.defaultProps = {\n truncationChar: '\\u2026',\n useNativeClamp: false,\n tagName: 'div'\n};\n\nmodule.exports = Dotdotdot;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__YJ76X\",\"facebookLinking\":\"facebookLinking__383lm\",\"isNation\":\"isNation__3dz3u\",\"InnerContainer\":\"InnerContainer__3iOhn\",\"facebookLinkingWrap\":\"facebookLinkingWrap__3wKlo\",\"DefaultButton_Round\":\"DefaultButton_Round__2IJYg\",\"btnPrimary\":\"btnPrimary__3_VMK\",\"btnHollow\":\"btnHollow__2QGGp\",\"btnBlue\":\"btnBlue__jiYTZ\",\"btnFoxSoul\":\"btnFoxSoul__1vGjn\",\"DefaultErrorText\":\"DefaultErrorText__PiHtw\",\"error\":\"error__3nKbY\",\"title\":\"title__13BJZ\",\"passwordLabel\":\"passwordLabel__3BQOl\",\"inputField\":\"inputField__3PnWd\",\"back\":\"back__11pnO\",\"desktopButton\":\"desktopButton__2pesM\",\"headerTextDesktop\":\"headerTextDesktop__dkw7R\",\"facebookLinkingDescriptionText\":\"facebookLinkingDescriptionText__DdQXn\",\"facebookLinkingField\":\"facebookLinkingField__WUpP8\",\"facebookLinkingEmailField\":\"facebookLinkingEmailField__2p7es\",\"facebookLinkingLinkButton\":\"facebookLinkingLinkButton__II6oG\",\"facebookLinkingForgotPasswordContainer\":\"facebookLinkingForgotPasswordContainer__1nnZN\",\"facebookLinkingForgotPassword\":\"facebookLinkingForgotPassword__34QLh\",\"link\":\"link__TYg30\",\"signInForgotPasswordContainer\":\"signInForgotPasswordContainer__3UUF0\",\"signInForgotPassword\":\"signInForgotPassword__yPvLB\",\"signupField\":\"signupField__Ub2Ix\",\"signupPasswordContainer\":\"signupPasswordContainer__1IA6a\",\"signinShowPasswordLabel\":\"signinShowPasswordLabel__1MeRT\",\"signupFormContainer\":\"signupFormContainer__1pRIh\",\"signinButtonDesktop\":\"signinButtonDesktop__1xrKu\",\"signupButton\":\"signupButton__G-UoO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__34EVM\",\"parentalControls\":\"parentalControls__2cIBO\",\"isNation\":\"isNation__VyJcU\",\"InnerContainer\":\"InnerContainer__3ct8L\",\"parentalControlsContainer\":\"parentalControlsContainer__3JZei\",\"DefaultButton_Round\":\"DefaultButton_Round__1KmTS\",\"btnPrimary\":\"btnPrimary__GZW1_\",\"btnHollow\":\"btnHollow__9oFND\",\"btnBlue\":\"btnBlue__OOdsZ\",\"btnFoxSoul\":\"btnFoxSoul__CqksZ\",\"DefaultErrorText\":\"DefaultErrorText__2burl\",\"error\":\"error__2IXDn\",\"title\":\"title__33ewf\",\"passwordLabel\":\"passwordLabel__3wOED\",\"inputField\":\"inputField__2cRpF\",\"back\":\"back__WYzqi\",\"parentalControlsCurrentValues\":\"parentalControlsCurrentValues__5jb5y\",\"parentalControlsCurrentValueMinor\":\"parentalControlsCurrentValueMinor__3uMv0\",\"parentalControlsInstructions\":\"parentalControlsInstructions__2s4rf\",\"parentalControlsSlider\":\"parentalControlsSlider__2dMFo\",\"parentalControlsSliderBar\":\"parentalControlsSliderBar__zaShj\",\"parentalControlsSliderHandle\":\"parentalControlsSliderHandle__22yC8\",\"parentalControlsSliderLabels\":\"parentalControlsSliderLabels__2l_FA\",\"parentalControlsRatingImage\":\"parentalControlsRatingImage__1eV18\",\"pcsRatingMovie\":\"pcsRatingMovie__2SzLn\",\"signupPasswordContainer\":\"signupPasswordContainer__3bE4s\"};","module.exports = {\n addDays: require('./add_days/index.js'),\n addHours: require('./add_hours/index.js'),\n addISOYears: require('./add_iso_years/index.js'),\n addMilliseconds: require('./add_milliseconds/index.js'),\n addMinutes: require('./add_minutes/index.js'),\n addMonths: require('./add_months/index.js'),\n addQuarters: require('./add_quarters/index.js'),\n addSeconds: require('./add_seconds/index.js'),\n addWeeks: require('./add_weeks/index.js'),\n addYears: require('./add_years/index.js'),\n areRangesOverlapping: require('./are_ranges_overlapping/index.js'),\n closestIndexTo: require('./closest_index_to/index.js'),\n closestTo: require('./closest_to/index.js'),\n compareAsc: require('./compare_asc/index.js'),\n compareDesc: require('./compare_desc/index.js'),\n differenceInCalendarDays: require('./difference_in_calendar_days/index.js'),\n differenceInCalendarISOWeeks: require('./difference_in_calendar_iso_weeks/index.js'),\n differenceInCalendarISOYears: require('./difference_in_calendar_iso_years/index.js'),\n differenceInCalendarMonths: require('./difference_in_calendar_months/index.js'),\n differenceInCalendarQuarters: require('./difference_in_calendar_quarters/index.js'),\n differenceInCalendarWeeks: require('./difference_in_calendar_weeks/index.js'),\n differenceInCalendarYears: require('./difference_in_calendar_years/index.js'),\n differenceInDays: require('./difference_in_days/index.js'),\n differenceInHours: require('./difference_in_hours/index.js'),\n differenceInISOYears: require('./difference_in_iso_years/index.js'),\n differenceInMilliseconds: require('./difference_in_milliseconds/index.js'),\n differenceInMinutes: require('./difference_in_minutes/index.js'),\n differenceInMonths: require('./difference_in_months/index.js'),\n differenceInQuarters: require('./difference_in_quarters/index.js'),\n differenceInSeconds: require('./difference_in_seconds/index.js'),\n differenceInWeeks: require('./difference_in_weeks/index.js'),\n differenceInYears: require('./difference_in_years/index.js'),\n distanceInWords: require('./distance_in_words/index.js'),\n distanceInWordsStrict: require('./distance_in_words_strict/index.js'),\n distanceInWordsToNow: require('./distance_in_words_to_now/index.js'),\n eachDay: require('./each_day/index.js'),\n endOfDay: require('./end_of_day/index.js'),\n endOfHour: require('./end_of_hour/index.js'),\n endOfISOWeek: require('./end_of_iso_week/index.js'),\n endOfISOYear: require('./end_of_iso_year/index.js'),\n endOfMinute: require('./end_of_minute/index.js'),\n endOfMonth: require('./end_of_month/index.js'),\n endOfQuarter: require('./end_of_quarter/index.js'),\n endOfSecond: require('./end_of_second/index.js'),\n endOfToday: require('./end_of_today/index.js'),\n endOfTomorrow: require('./end_of_tomorrow/index.js'),\n endOfWeek: require('./end_of_week/index.js'),\n endOfYear: require('./end_of_year/index.js'),\n endOfYesterday: require('./end_of_yesterday/index.js'),\n format: require('./format/index.js'),\n getDate: require('./get_date/index.js'),\n getDay: require('./get_day/index.js'),\n getDayOfYear: require('./get_day_of_year/index.js'),\n getDaysInMonth: require('./get_days_in_month/index.js'),\n getDaysInYear: require('./get_days_in_year/index.js'),\n getHours: require('./get_hours/index.js'),\n getISODay: require('./get_iso_day/index.js'),\n getISOWeek: require('./get_iso_week/index.js'),\n getISOWeeksInYear: require('./get_iso_weeks_in_year/index.js'),\n getISOYear: require('./get_iso_year/index.js'),\n getMilliseconds: require('./get_milliseconds/index.js'),\n getMinutes: require('./get_minutes/index.js'),\n getMonth: require('./get_month/index.js'),\n getOverlappingDaysInRanges: require('./get_overlapping_days_in_ranges/index.js'),\n getQuarter: require('./get_quarter/index.js'),\n getSeconds: require('./get_seconds/index.js'),\n getTime: require('./get_time/index.js'),\n getYear: require('./get_year/index.js'),\n isAfter: require('./is_after/index.js'),\n isBefore: require('./is_before/index.js'),\n isDate: require('./is_date/index.js'),\n isEqual: require('./is_equal/index.js'),\n isFirstDayOfMonth: require('./is_first_day_of_month/index.js'),\n isFriday: require('./is_friday/index.js'),\n isFuture: require('./is_future/index.js'),\n isLastDayOfMonth: require('./is_last_day_of_month/index.js'),\n isLeapYear: require('./is_leap_year/index.js'),\n isMonday: require('./is_monday/index.js'),\n isPast: require('./is_past/index.js'),\n isSameDay: require('./is_same_day/index.js'),\n isSameHour: require('./is_same_hour/index.js'),\n isSameISOWeek: require('./is_same_iso_week/index.js'),\n isSameISOYear: require('./is_same_iso_year/index.js'),\n isSameMinute: require('./is_same_minute/index.js'),\n isSameMonth: require('./is_same_month/index.js'),\n isSameQuarter: require('./is_same_quarter/index.js'),\n isSameSecond: require('./is_same_second/index.js'),\n isSameWeek: require('./is_same_week/index.js'),\n isSameYear: require('./is_same_year/index.js'),\n isSaturday: require('./is_saturday/index.js'),\n isSunday: require('./is_sunday/index.js'),\n isThisHour: require('./is_this_hour/index.js'),\n isThisISOWeek: require('./is_this_iso_week/index.js'),\n isThisISOYear: require('./is_this_iso_year/index.js'),\n isThisMinute: require('./is_this_minute/index.js'),\n isThisMonth: require('./is_this_month/index.js'),\n isThisQuarter: require('./is_this_quarter/index.js'),\n isThisSecond: require('./is_this_second/index.js'),\n isThisWeek: require('./is_this_week/index.js'),\n isThisYear: require('./is_this_year/index.js'),\n isThursday: require('./is_thursday/index.js'),\n isToday: require('./is_today/index.js'),\n isTomorrow: require('./is_tomorrow/index.js'),\n isTuesday: require('./is_tuesday/index.js'),\n isValid: require('./is_valid/index.js'),\n isWednesday: require('./is_wednesday/index.js'),\n isWeekend: require('./is_weekend/index.js'),\n isWithinRange: require('./is_within_range/index.js'),\n isYesterday: require('./is_yesterday/index.js'),\n lastDayOfISOWeek: require('./last_day_of_iso_week/index.js'),\n lastDayOfISOYear: require('./last_day_of_iso_year/index.js'),\n lastDayOfMonth: require('./last_day_of_month/index.js'),\n lastDayOfQuarter: require('./last_day_of_quarter/index.js'),\n lastDayOfWeek: require('./last_day_of_week/index.js'),\n lastDayOfYear: require('./last_day_of_year/index.js'),\n max: require('./max/index.js'),\n min: require('./min/index.js'),\n parse: require('./parse/index.js'),\n setDate: require('./set_date/index.js'),\n setDay: require('./set_day/index.js'),\n setDayOfYear: require('./set_day_of_year/index.js'),\n setHours: require('./set_hours/index.js'),\n setISODay: require('./set_iso_day/index.js'),\n setISOWeek: require('./set_iso_week/index.js'),\n setISOYear: require('./set_iso_year/index.js'),\n setMilliseconds: require('./set_milliseconds/index.js'),\n setMinutes: require('./set_minutes/index.js'),\n setMonth: require('./set_month/index.js'),\n setQuarter: require('./set_quarter/index.js'),\n setSeconds: require('./set_seconds/index.js'),\n setYear: require('./set_year/index.js'),\n startOfDay: require('./start_of_day/index.js'),\n startOfHour: require('./start_of_hour/index.js'),\n startOfISOWeek: require('./start_of_iso_week/index.js'),\n startOfISOYear: require('./start_of_iso_year/index.js'),\n startOfMinute: require('./start_of_minute/index.js'),\n startOfMonth: require('./start_of_month/index.js'),\n startOfQuarter: require('./start_of_quarter/index.js'),\n startOfSecond: require('./start_of_second/index.js'),\n startOfToday: require('./start_of_today/index.js'),\n startOfTomorrow: require('./start_of_tomorrow/index.js'),\n startOfWeek: require('./start_of_week/index.js'),\n startOfYear: require('./start_of_year/index.js'),\n startOfYesterday: require('./start_of_yesterday/index.js'),\n subDays: require('./sub_days/index.js'),\n subHours: require('./sub_hours/index.js'),\n subISOYears: require('./sub_iso_years/index.js'),\n subMilliseconds: require('./sub_milliseconds/index.js'),\n subMinutes: require('./sub_minutes/index.js'),\n subMonths: require('./sub_months/index.js'),\n subQuarters: require('./sub_quarters/index.js'),\n subSeconds: require('./sub_seconds/index.js'),\n subWeeks: require('./sub_weeks/index.js'),\n subYears: require('./sub_years/index.js')\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__1Wk8A\",\"verify\":\"verify__1vnM9\",\"isNation\":\"isNation__2dCmt\",\"InnerContainer\":\"InnerContainer__2UOLz\",\"verifyContainer\":\"verifyContainer__Oh-Wf\",\"DefaultButton_Round\":\"DefaultButton_Round__1bZ4Z\",\"btnWhite\":\"btnWhite__qcKcK\",\"btnPrimary\":\"btnPrimary__1RHHL\",\"btnHollow\":\"btnHollow__2Axmy\",\"btnBlue\":\"btnBlue__2bxK1\",\"btnFoxSoul\":\"btnFoxSoul__146gC\",\"DefaultErrorText\":\"DefaultErrorText__1TY7m\",\"error\":\"error__37bF7\",\"title\":\"title__bn8SS\",\"passwordLabel\":\"passwordLabel__JWPr4\",\"inputField\":\"inputField__3M0mk\",\"back\":\"back__29EaV\",\"termsPolicyLink\":\"termsPolicyLink__3hq7U\",\"verifyHeaderText\":\"verifyHeaderText__8GqCM\",\"confirmationContainer\":\"confirmationContainer__1dB4A\",\"confirmationMessage\":\"confirmationMessage__1w9-h\",\"verifyForm\":\"verifyForm__2tb4T\",\"verifyOptions\":\"verifyOptions__1bTu8\",\"signInPasswordContainer\":\"signInPasswordContainer__3zXq0\",\"termsText\":\"termsText__154V8\",\"termsNoPasswordText\":\"termsNoPasswordText__272b3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"scheduleMain\":\"scheduleMain__tipJG\",\"container\":\"container__g4nEb\",\"epgItem\":\"epgItem__1LLpS\",\"overflowButtonWrapper\":\"overflowButtonWrapper__3Rrna\",\"timeMeta\":\"timeMeta__3vYJy\",\"timeMetaHovered\":\"timeMetaHovered__2GYeV\",\"progress\":\"progress__38F4A\",\"current\":\"current__3iwO-\",\"epgItemActive\":\"epgItemActive__o0sDh\",\"subtitle\":\"subtitle__1q2kQ\",\"dummy\":\"dummy__2eeOK\",\"timeContainer\":\"timeContainer__1vLvh\",\"title\":\"title__ox0eF\",\"subtitleContainer\":\"subtitleContainer__16LKr\",\"titleContainer\":\"titleContainer__3Ja13\",\"titleText\":\"titleText__2ovz1\",\"badge\":\"badge__kNmOo\",\"blueBadge\":\"blueBadge__1errH\",\"newBadge\":\"newBadge__bDdct\",\"redBadge\":\"redBadge__2rOtg\",\"liveBadge\":\"liveBadge__3svLK\",\"defaultBadge\":\"defaultBadge__tnn1Y\",\"otherBadge\":\"otherBadge__3LnZG\",\"detailContainer\":\"detailContainer__3aNcN\",\"detailContainerLeft\":\"detailContainerLeft__2Q1hR\",\"detailContainerRight\":\"detailContainerRight__1566a\",\"detailTitle\":\"detailTitle__W8YMO\",\"detailSubtitle\":\"detailSubtitle__3G90-\",\"detailDescription\":\"detailDescription__1NJhV\",\"detailInfo\":\"detailInfo__3D3jg\",\"actionButtons\":\"actionButtons__3K5c8\",\"buttonGutter\":\"buttonGutter__1AcRg\",\"actionButton\":\"actionButton__xgqW8\",\"actionButtonLocked\":\"actionButtonLocked__CTSX7\",\"actionButtonText\":\"actionButtonText__3HyqQ\",\"secondaryText\":\"secondaryText__y-Q_2\",\"noAuthZActionButton\":\"noAuthZActionButton__1pOzp\",\"lock\":\"lock__1XFpg\",\"caret\":\"caret__215hd\",\"timestamp\":\"timestamp__3ban8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1_Q2G\",\"headerRow\":\"headerRow__1xX_i\",\"tabDateLabel\":\"tabDateLabel__1qlOx\",\"dateHeader\":\"dateHeader__2IhYm\",\"today\":\"today__eNbbQ\",\"currentDate\":\"currentDate__k3tdO\",\"gridWrapper\":\"gridWrapper__1SovR\",\"row\":\"row__gko8X\",\"tile\":\"tile__znlam\",\"time\":\"time__2OQkY\",\"cta\":\"cta__3Djkw\",\"lock\":\"lock__XL6zN\",\"dropdown\":\"dropdown__391_s\",\"altHeaderWrapper\":\"altHeaderWrapper__2Opfa\",\"childDropdownOpen\":\"childDropdownOpen__1EbbY\",\"childDropdownClosed\":\"childDropdownClosed__3n7Aq\",\"channelList\":\"channelList__3vi_n\",\"channel\":\"channel__O4JyV\",\"active\":\"active__1O2aQ\",\"imageContainer\":\"imageContainer__2U_aQ\",\"image\":\"image__1gKVe\",\"badge\":\"badge__21tMs\",\"details\":\"details__2MzYu\",\"info\":\"info__2c-eq\",\"title\":\"title__29fKf\",\"subtitle\":\"subtitle__1lNFN\",\"description\":\"description__2xzFj\",\"metadata\":\"metadata__1wuyl\",\"isLiveNow\":\"isLiveNow__3yaKq\",\"seeAllButtonContainer\":\"seeAllButtonContainer__11_Cy\",\"seeAllButton\":\"seeAllButton__dmedK\"};","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primeTimeMain\":\"primeTimeMain__Dwrqb\",\"open\":\"open__1zObr\",\"closed\":\"closed___X5_5\",\"container\":\"container__1JsoA\",\"titleContainer\":\"titleContainer__ErQ_S\",\"caret\":\"caret__1mc-T\",\"detailContainerLeft\":\"detailContainerLeft__R5_lb\",\"detailTitle\":\"detailTitle__27QML\",\"detailSubtitle\":\"detailSubtitle__1ZZC_\",\"detailDescription\":\"detailDescription__1M3hf\",\"detailInfo\":\"detailInfo__1BPtO\",\"timestamp\":\"timestamp__gDtgB\",\"title\":\"title__2XpOT\",\"subtitle\":\"subtitle__3tTmd\",\"titleText\":\"titleText__15_f_\",\"badge\":\"badge__3_aJa\",\"actionButton\":\"actionButton__3KnEn\",\"contentLocked\":\"contentLocked__fqxU_\",\"lock\":\"lock__puyM1\",\"overflowButtonWrapper\":\"overflowButtonWrapper__1cuAH\"};","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","var baseToString = require('./_baseToString'),\n castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n isIterateeCall = require('./_isIterateeCall'),\n isRegExp = require('./isRegExp'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\nfunction split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n}\n\nmodule.exports = split;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","import { addEventListener } from 'consolidated-events';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { isForwardRef } from 'react-is';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\n/**\n * Attempts to parse the offset provided as a prop as a percentage. For\n * instance, if the component has been provided with the string \"20%\" as\n * a value of one of the offset props. If the value matches, then it returns\n * a numeric version of the prop. For instance, \"20%\" would become `0.2`.\n * If `str` isn't a percentage, then `undefined` will be returned.\n *\n * @param {string} str The value of an offset prop to be converted to a\n * number.\n * @return {number|undefined} The numeric version of `str`. Undefined if `str`\n * was not a percentage.\n */\nfunction parseOffsetAsPercentage(str) {\n if (str.slice(-1) === '%') {\n return parseFloat(str.slice(0, -1)) / 100;\n }\n\n return undefined;\n}\n\n/**\n * Attempts to parse the offset provided as a prop as a pixel value. If\n * parsing fails, then `undefined` is returned. Three examples of values that\n * will be successfully parsed are:\n * `20`\n * \"20px\"\n * \"20\"\n *\n * @param {string|number} str A string of the form \"{number}\" or \"{number}px\",\n * or just a number.\n * @return {number|undefined} The numeric version of `str`. Undefined if `str`\n * was neither a number nor string ending in \"px\".\n */\nfunction parseOffsetAsPixels(str) {\n if (!isNaN(parseFloat(str)) && isFinite(str)) {\n return parseFloat(str);\n }\n\n if (str.slice(-2) === 'px') {\n return parseFloat(str.slice(0, -2));\n }\n\n return undefined;\n}\n\n/**\n * @param {string|number} offset\n * @param {number} contextHeight\n * @return {number} A number representing `offset` converted into pixels.\n */\n\nfunction computeOffsetPixels(offset, contextHeight) {\n var pixelOffset = parseOffsetAsPixels(offset);\n\n if (typeof pixelOffset === 'number') {\n return pixelOffset;\n }\n\n var percentOffset = parseOffsetAsPercentage(offset);\n\n if (typeof percentOffset === 'number') {\n return percentOffset * contextHeight;\n }\n\n return undefined;\n}\n\nvar ABOVE = 'above';\nvar INSIDE = 'inside';\nvar BELOW = 'below';\nvar INVISIBLE = 'invisible';\n\nfunction debugLog() {\n if (process.env.NODE_ENV !== 'production') {\n var _console;\n\n (_console = console).log.apply(_console, arguments); // eslint-disable-line no-console\n\n }\n}\n\n/**\n * When an element's type is a string, it represents a DOM node with that tag name\n * https://facebook.github.io/react/blog/2015/12/18/react-components-elements-and-instances.html#dom-elements\n *\n * @param {React.element} Component\n * @return {bool} Whether the component is a DOM Element\n */\nfunction isDOMElement(Component) {\n return typeof Component.type === 'string';\n}\n\nvar errorMessage = ' needs a DOM element to compute boundaries. The child you passed is neither a ' + 'DOM element (e.g.
) nor does it use the innerRef prop.\\n\\n' + 'See https://goo.gl/LrBNgw for more info.';\n/**\n * Raise an error if \"children\" is not a DOM Element and there is no ref provided to Waypoint\n *\n * @param {?React.element} children\n * @param {?HTMLElement} ref\n * @return {undefined}\n */\n\nfunction ensureRefIsProvidedByChild(children, ref) {\n if (children && !isDOMElement(children) && !ref) {\n throw new Error(errorMessage);\n }\n}\n\n/**\n * @param {object} bounds An object with bounds data for the waypoint and\n * scrollable parent\n * @return {string} The current position of the waypoint in relation to the\n * visible portion of the scrollable parent. One of the constants `ABOVE`,\n * `BELOW`, `INSIDE` or `INVISIBLE`.\n */\n\nfunction getCurrentPosition(bounds) {\n if (bounds.viewportBottom - bounds.viewportTop === 0) {\n return INVISIBLE;\n } // top is within the viewport\n\n\n if (bounds.viewportTop <= bounds.waypointTop && bounds.waypointTop <= bounds.viewportBottom) {\n return INSIDE;\n } // bottom is within the viewport\n\n\n if (bounds.viewportTop <= bounds.waypointBottom && bounds.waypointBottom <= bounds.viewportBottom) {\n return INSIDE;\n } // top is above the viewport and bottom is below the viewport\n\n\n if (bounds.waypointTop <= bounds.viewportTop && bounds.viewportBottom <= bounds.waypointBottom) {\n return INSIDE;\n }\n\n if (bounds.viewportBottom < bounds.waypointTop) {\n return BELOW;\n }\n\n if (bounds.waypointTop < bounds.viewportTop) {\n return ABOVE;\n }\n\n return INVISIBLE;\n}\n\nvar timeout;\nvar timeoutQueue = [];\nfunction onNextTick(cb) {\n timeoutQueue.push(cb);\n\n if (!timeout) {\n timeout = setTimeout(function () {\n timeout = null; // Drain the timeoutQueue\n\n var item; // eslint-disable-next-line no-cond-assign\n\n while (item = timeoutQueue.shift()) {\n item();\n }\n }, 0);\n }\n\n var isSubscribed = true;\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n var index = timeoutQueue.indexOf(cb);\n\n if (index === -1) {\n return;\n }\n\n timeoutQueue.splice(index, 1);\n\n if (!timeoutQueue.length && timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n}\n\nfunction resolveScrollableAncestorProp(scrollableAncestor) {\n // When Waypoint is rendered on the server, `window` is not available.\n // To make Waypoint easier to work with, we allow this to be specified in\n // string form and safely convert to `window` here.\n if (scrollableAncestor === 'window') {\n return global.window;\n }\n\n return scrollableAncestor;\n}\n\nvar defaultProps = {\n debug: false,\n scrollableAncestor: undefined,\n children: undefined,\n topOffset: '0px',\n bottomOffset: '0px',\n horizontal: false,\n onEnter: function onEnter() {},\n onLeave: function onLeave() {},\n onPositionChange: function onPositionChange() {},\n fireOnRapidScroll: true\n}; // Calls a function when you scroll to the element.\n\nvar Waypoint = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Waypoint, _React$PureComponent);\n\n var _super = _createSuper(Waypoint);\n\n function Waypoint(props) {\n var _this;\n\n _classCallCheck(this, Waypoint);\n\n _this = _super.call(this, props);\n\n _this.refElement = function (e) {\n _this._ref = e;\n };\n\n return _this;\n }\n\n _createClass(Waypoint, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!Waypoint.getWindow()) {\n return;\n } // this._ref may occasionally not be set at this time. To help ensure that\n // this works smoothly and to avoid layout thrashing, we want to delay the\n // initial execution until the next tick.\n\n\n this.cancelOnNextTick = onNextTick(function () {\n _this2.cancelOnNextTick = null;\n var _this2$props = _this2.props,\n children = _this2$props.children,\n debug = _this2$props.debug; // Berofe doing anything, we want to check that this._ref is avaliable in Waypoint\n\n ensureRefIsProvidedByChild(children, _this2._ref);\n _this2._handleScroll = _this2._handleScroll.bind(_this2);\n _this2.scrollableAncestor = _this2._findScrollableAncestor();\n\n if (process.env.NODE_ENV !== 'production' && debug) {\n debugLog('scrollableAncestor', _this2.scrollableAncestor);\n }\n\n _this2.scrollEventListenerUnsubscribe = addEventListener(_this2.scrollableAncestor, 'scroll', _this2._handleScroll, {\n passive: true\n });\n _this2.resizeEventListenerUnsubscribe = addEventListener(window, 'resize', _this2._handleScroll, {\n passive: true\n });\n\n _this2._handleScroll(null);\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this3 = this;\n\n if (!Waypoint.getWindow()) {\n return;\n }\n\n if (!this.scrollableAncestor) {\n // The Waypoint has not yet initialized.\n return;\n } // The element may have moved, so we need to recompute its position on the\n // page. This happens via handleScroll in a way that forces layout to be\n // computed.\n //\n // We want this to be deferred to avoid forcing layout during render, which\n // causes layout thrashing. And, if we already have this work enqueued, we\n // can just wait for that to happen instead of enqueueing again.\n\n\n if (this.cancelOnNextTick) {\n return;\n }\n\n this.cancelOnNextTick = onNextTick(function () {\n _this3.cancelOnNextTick = null;\n\n _this3._handleScroll(null);\n });\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!Waypoint.getWindow()) {\n return;\n }\n\n if (this.scrollEventListenerUnsubscribe) {\n this.scrollEventListenerUnsubscribe();\n }\n\n if (this.resizeEventListenerUnsubscribe) {\n this.resizeEventListenerUnsubscribe();\n }\n\n if (this.cancelOnNextTick) {\n this.cancelOnNextTick();\n }\n }\n /**\n * Traverses up the DOM to find an ancestor container which has an overflow\n * style that allows for scrolling.\n *\n * @return {Object} the closest ancestor element with an overflow style that\n * allows for scrolling. If none is found, the `window` object is returned\n * as a fallback.\n */\n\n }, {\n key: \"_findScrollableAncestor\",\n value: function _findScrollableAncestor() {\n var _this$props = this.props,\n horizontal = _this$props.horizontal,\n scrollableAncestor = _this$props.scrollableAncestor;\n\n if (scrollableAncestor) {\n return resolveScrollableAncestorProp(scrollableAncestor);\n }\n\n var node = this._ref;\n\n while (node.parentNode) {\n node = node.parentNode;\n\n if (node === document.body) {\n // We've reached all the way to the root node.\n return window;\n }\n\n var style = window.getComputedStyle(node);\n var overflowDirec = horizontal ? style.getPropertyValue('overflow-x') : style.getPropertyValue('overflow-y');\n var overflow = overflowDirec || style.getPropertyValue('overflow');\n\n if (overflow === 'auto' || overflow === 'scroll' || overflow === 'overlay') {\n return node;\n }\n } // A scrollable ancestor element was not found, which means that we need to\n // do stuff on window.\n\n\n return window;\n }\n /**\n * @param {Object} event the native scroll event coming from the scrollable\n * ancestor, or resize event coming from the window. Will be undefined if\n * called by a React lifecyle method\n */\n\n }, {\n key: \"_handleScroll\",\n value: function _handleScroll(event) {\n if (!this._ref) {\n // There's a chance we end up here after the component has been unmounted.\n return;\n }\n\n var bounds = this._getBounds();\n\n var currentPosition = getCurrentPosition(bounds);\n var previousPosition = this._previousPosition;\n var _this$props2 = this.props,\n debug = _this$props2.debug,\n onPositionChange = _this$props2.onPositionChange,\n onEnter = _this$props2.onEnter,\n onLeave = _this$props2.onLeave,\n fireOnRapidScroll = _this$props2.fireOnRapidScroll;\n\n if (process.env.NODE_ENV !== 'production' && debug) {\n debugLog('currentPosition', currentPosition);\n debugLog('previousPosition', previousPosition);\n } // Save previous position as early as possible to prevent cycles\n\n\n this._previousPosition = currentPosition;\n\n if (previousPosition === currentPosition) {\n // No change since last trigger\n return;\n }\n\n var callbackArg = {\n currentPosition: currentPosition,\n previousPosition: previousPosition,\n event: event,\n waypointTop: bounds.waypointTop,\n waypointBottom: bounds.waypointBottom,\n viewportTop: bounds.viewportTop,\n viewportBottom: bounds.viewportBottom\n };\n onPositionChange.call(this, callbackArg);\n\n if (currentPosition === INSIDE) {\n onEnter.call(this, callbackArg);\n } else if (previousPosition === INSIDE) {\n onLeave.call(this, callbackArg);\n }\n\n var isRapidScrollDown = previousPosition === BELOW && currentPosition === ABOVE;\n var isRapidScrollUp = previousPosition === ABOVE && currentPosition === BELOW;\n\n if (fireOnRapidScroll && (isRapidScrollDown || isRapidScrollUp)) {\n // If the scroll event isn't fired often enough to occur while the\n // waypoint was visible, we trigger both callbacks anyway.\n onEnter.call(this, {\n currentPosition: INSIDE,\n previousPosition: previousPosition,\n event: event,\n waypointTop: bounds.waypointTop,\n waypointBottom: bounds.waypointBottom,\n viewportTop: bounds.viewportTop,\n viewportBottom: bounds.viewportBottom\n });\n onLeave.call(this, {\n currentPosition: currentPosition,\n previousPosition: INSIDE,\n event: event,\n waypointTop: bounds.waypointTop,\n waypointBottom: bounds.waypointBottom,\n viewportTop: bounds.viewportTop,\n viewportBottom: bounds.viewportBottom\n });\n }\n }\n }, {\n key: \"_getBounds\",\n value: function _getBounds() {\n var _this$props3 = this.props,\n horizontal = _this$props3.horizontal,\n debug = _this$props3.debug;\n\n var _this$_ref$getBoundin = this._ref.getBoundingClientRect(),\n left = _this$_ref$getBoundin.left,\n top = _this$_ref$getBoundin.top,\n right = _this$_ref$getBoundin.right,\n bottom = _this$_ref$getBoundin.bottom;\n\n var waypointTop = horizontal ? left : top;\n var waypointBottom = horizontal ? right : bottom;\n var contextHeight;\n var contextScrollTop;\n\n if (this.scrollableAncestor === window) {\n contextHeight = horizontal ? window.innerWidth : window.innerHeight;\n contextScrollTop = 0;\n } else {\n contextHeight = horizontal ? this.scrollableAncestor.offsetWidth : this.scrollableAncestor.offsetHeight;\n contextScrollTop = horizontal ? this.scrollableAncestor.getBoundingClientRect().left : this.scrollableAncestor.getBoundingClientRect().top;\n }\n\n if (process.env.NODE_ENV !== 'production' && debug) {\n debugLog('waypoint top', waypointTop);\n debugLog('waypoint bottom', waypointBottom);\n debugLog('scrollableAncestor height', contextHeight);\n debugLog('scrollableAncestor scrollTop', contextScrollTop);\n }\n\n var _this$props4 = this.props,\n bottomOffset = _this$props4.bottomOffset,\n topOffset = _this$props4.topOffset;\n var topOffsetPx = computeOffsetPixels(topOffset, contextHeight);\n var bottomOffsetPx = computeOffsetPixels(bottomOffset, contextHeight);\n var contextBottom = contextScrollTop + contextHeight;\n return {\n waypointTop: waypointTop,\n waypointBottom: waypointBottom,\n viewportTop: contextScrollTop + topOffsetPx,\n viewportBottom: contextBottom - bottomOffsetPx\n };\n }\n /**\n * @return {Object}\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var children = this.props.children;\n\n if (!children) {\n // We need an element that we can locate in the DOM to determine where it is\n // rendered relative to the top of its context.\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: this.refElement,\n style: {\n fontSize: 0\n }\n });\n }\n\n if (isDOMElement(children) || isForwardRef(children)) {\n var ref = function ref(node) {\n _this4.refElement(node);\n\n if (children.ref) {\n if (typeof children.ref === 'function') {\n children.ref(node);\n } else {\n children.ref.current = node;\n }\n }\n };\n\n return /*#__PURE__*/React.cloneElement(children, {\n ref: ref\n });\n }\n\n return /*#__PURE__*/React.cloneElement(children, {\n innerRef: this.refElement\n });\n }\n }]);\n\n return Waypoint;\n}(React.PureComponent);\n\nif (process.env.NODE_ENV !== 'production') {\n Waypoint.propTypes = {\n children: PropTypes.element,\n debug: PropTypes.bool,\n onEnter: PropTypes.func,\n onLeave: PropTypes.func,\n onPositionChange: PropTypes.func,\n fireOnRapidScroll: PropTypes.bool,\n // eslint-disable-next-line react/forbid-prop-types\n scrollableAncestor: PropTypes.any,\n horizontal: PropTypes.bool,\n // `topOffset` can either be a number, in which case its a distance from the\n // top of the container in pixels, or a string value. Valid string values are\n // of the form \"20px\", which is parsed as pixels, or \"20%\", which is parsed\n // as a percentage of the height of the containing element.\n // For instance, if you pass \"-20%\", and the containing element is 100px tall,\n // then the waypoint will be triggered when it has been scrolled 20px beyond\n // the top of the containing element.\n topOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n // `bottomOffset` is like `topOffset`, but for the bottom of the container.\n bottomOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n };\n}\n\nWaypoint.above = ABOVE;\nWaypoint.below = BELOW;\nWaypoint.inside = INSIDE;\nWaypoint.invisible = INVISIBLE;\n\nWaypoint.getWindow = function () {\n if (typeof window !== 'undefined') {\n return window;\n }\n\n return undefined;\n};\n\nWaypoint.defaultProps = defaultProps;\nWaypoint.displayName = 'Waypoint';\n\nexport { Waypoint };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__Ci-iu\",\"actionButtons\":\"actionButtons__TsWRp\",\"meta\":\"meta__3BYk1\",\"title\":\"title__3E5cJ\",\"anonymous\":\"anonymous__3iuJr\",\"altHeader\":\"altHeader__2IqC7\",\"titleLink\":\"titleLink__1aa-x\",\"titleImage\":\"titleImage__u0cnS\",\"tuneInContainer\":\"tuneInContainer__25qwJ\",\"largeImg\":\"largeImg__1al5y\",\"actionButton\":\"actionButton__PiCg_\",\"children\":\"children__2Pkd-\",\"altMeta\":\"altMeta__2zlEY\",\"altHeaderReplacement\":\"altHeaderReplacement__ifG5_\",\"ctaButtonContainer\":\"ctaButtonContainer__vinSe\",\"ctaButton\":\"ctaButton__2Baxs\",\"ctaButtonText\":\"ctaButtonText__3M26E\",\"headerContainer\":\"headerContainer__1MXg5\",\"description\":\"description__pEM4V\",\"preview\":\"preview__3WgnV\",\"btn\":\"btn__3NWTd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"signInContainer\":\"signInContainer__3pNlG\",\"signInContent\":\"signInContent__3kcWx\",\"signInHeader\":\"signInHeader__B-cKa\",\"signInMedia\":\"signInMedia__3Yb3W\",\"signInAuthInput\":\"signInAuthInput__2psUj\",\"signInCTA\":\"signInCTA__Q0LHs\",\"signInFooterExpiration\":\"signInFooterExpiration__3gV95\",\"signInFixedFooter\":\"signInFixedFooter__1SbJy\",\"signInFooterExpirationHeader\":\"signInFooterExpirationHeader__izpPU\",\"signInFooterExpirationText\":\"signInFooterExpirationText__4PKTV\",\"divider\":\"divider__OMBJA\",\"bottomDivider\":\"bottomDivider__2uf_e\",\"signInFooterDisclaimer\":\"signInFooterDisclaimer__2sc5B\",\"actionButton\":\"actionButton__1u75R\",\"signInAuthWrapper\":\"signInAuthWrapper__1tRMC\",\"blurred\":\"blurred__1dG4_\",\"loader\":\"loader__2OjEO\",\"altLoader\":\"altLoader__1kAMz\",\"error\":\"error__z1ceC\",\"errorTitle\":\"errorTitle__1eYIs\",\"errorDescription\":\"errorDescription__qhC6c\",\"postDisclaimer\":\"postDisclaimer__2GqPA\"};","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseToString = require('./_baseToString'),\n baseTrim = require('./_baseTrim'),\n castSlice = require('./_castSlice'),\n charsEndIndex = require('./_charsEndIndex'),\n charsStartIndex = require('./_charsStartIndex'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n}\n\nmodule.exports = trim;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__IW9Sa\",\"SocialFacebookPasswordLink\":\"SocialFacebookPasswordLink__1390M\",\"isNation\":\"isNation__9I1WN\",\"InnerContainer\":\"InnerContainer__P71rm\",\"SocialFacebookPasswordLinkWrap\":\"SocialFacebookPasswordLinkWrap__3pw79\",\"DefaultButton_Round\":\"DefaultButton_Round__3uRoM\",\"btnPrimary\":\"btnPrimary__3zcD0\",\"btnHollow\":\"btnHollow__3c5N-\",\"btnBlue\":\"btnBlue__1sfjT\",\"btnFoxSoul\":\"btnFoxSoul__1HCW7\",\"DefaultErrorText\":\"DefaultErrorText__16Ie2\",\"error\":\"error__3DKFU\",\"title\":\"title__J5qV2\",\"passwordLabel\":\"passwordLabel__2IK4X\",\"inputField\":\"inputField__NH0fy\",\"back\":\"back__1zcMY\",\"disabledText\":\"disabledText__3P_Mv\",\"headerTextDesktop\":\"headerTextDesktop__36_nq\",\"facebookPasswordLinkHeader\":\"facebookPasswordLinkHeader__j8h0Y\",\"signupPasswordContainer\":\"signupPasswordContainer__1jzNw\",\"signupFormContainer\":\"signupFormContainer__XrAp0\",\"signupShowPassword\":\"signupShowPassword__1e6Ti\",\"signupTermsContainer\":\"signupTermsContainer__2j4P3\",\"signupTerms\":\"signupTerms__2pB_9\",\"termsText\":\"termsText__3FXpB\",\"facebookPasswordLinkCopy\":\"facebookPasswordLinkCopy__kqMdf\",\"signupButton\":\"signupButton__Bpm9W\"};","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = vendor_lib;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3x0fF\",\"videoContainer\":\"videoContainer__2v8sE\",\"videoSizer\":\"videoSizer__1tLHL\",\"bannerContainer\":\"bannerContainer__34EtU\",\"exitContainer\":\"exitContainer__1r1sF\",\"digitalChannelContainer\":\"digitalChannelContainer__-Jgga\",\"loaderContainer\":\"loaderContainer__1or_T\",\"loader\":\"loader__1tej2\",\"bannerCopy\":\"bannerCopy__VUCpO\",\"watchDetailContainer\":\"watchDetailContainer__6nkLH\",\"mobileScheduleHeader\":\"mobileScheduleHeader__24vCn\",\"panelPlayerAltHeader\":\"panelPlayerAltHeader__2qEoD\",\"altHeaderWrapper\":\"altHeaderWrapper__19bsB\",\"cta\":\"cta__3whK4\",\"promoHeader\":\"promoHeader__3s4fg\",\"promoText\":\"promoText__ExkLg\",\"button\":\"button__2Ul1I\",\"buttonText\":\"buttonText__3aC2o\",\"scheduleGrid\":\"scheduleGrid__37T-7\",\"exitHeader\":\"exitHeader__3BUpT\",\"exitCopy\":\"exitCopy__1Le_A\",\"scheduleRowMobile\":\"scheduleRowMobile__38FzW\",\"scheduleLeft\":\"scheduleLeft__13ifP\",\"networkLogo\":\"networkLogo__3NbT-\",\"affiliateNetworkLogo\":\"affiliateNetworkLogo__2Z4TS\",\"altHeaderDetails\":\"altHeaderDetails__1-3yf\",\"gridLoading\":\"gridLoading__4oeVW\",\"gridLoader\":\"gridLoader__542LA\",\"playerSpacer\":\"playerSpacer__1IUfg\",\"noScroll\":\"noScroll__3g5xm\",\"dropdown\":\"dropdown__81HBl\",\"videoOuterContainer\":\"videoOuterContainer__2Q9xR\",\"panelPlayer\":\"panelPlayer__fYKjW\",\"tabDateLabel\":\"tabDateLabel__24YY2\",\"tabButtons\":\"tabButtons__3kG-A\",\"tab\":\"tab__3LEx9\",\"active\":\"active__CMKzh\",\"mobileDropdowns\":\"mobileDropdowns__1R7Im\",\"affiliateNetworkLogoHidden\":\"affiliateNetworkLogoHidden__3z3Ve\",\"timeline\":\"timeline__1tItx\",\"timelineLeft\":\"timelineLeft__3Tv4D\",\"timelineDropdown\":\"timelineDropdown__79CfF\",\"timelineMain\":\"timelineMain__OEuD6\",\"time\":\"time__3UgW6\",\"timelineEmptyArrow\":\"timelineEmptyArrow__27qVf\",\"timelineArrow\":\"timelineArrow__3o0HA\",\"timelineRightArrow\":\"timelineRightArrow__28Drp\",\"timelineLeftArrow\":\"timelineLeftArrow__22VKB\",\"scheduleRow\":\"scheduleRow__2JdN4\",\"scheduleRowOpen\":\"scheduleRowOpen__1y4E5\",\"currentTime\":\"currentTime__2F_bJ\",\"scheduleRowSelected\":\"scheduleRowSelected__Bdyu_\",\"altHeaderVideoContainer\":\"altHeaderVideoContainer__1i9Lk\",\"scheduleItemWrapper\":\"scheduleItemWrapper__2uq6b\",\"epgWrap\":\"epgWrap__3nE8D\",\"noEpg\":\"noEpg__rByY9\",\"epgWrapNation\":\"epgWrapNation__2t6VM\",\"epgContainer\":\"epgContainer__wLcUH\",\"dividerLine\":\"dividerLine__2ZESe\",\"breadcrumbs\":\"breadcrumbs__3moI0\",\"arrowIcon\":\"arrowIcon__1gX7p\",\"disabled\":\"disabled__6jWtC\",\"focusSearch\":\"focusSearch__2KcNf\",\"searchInputBox\":\"searchInputBox__3DHup\",\"cancelButton\":\"cancelButton__br1vF\",\"inputTyped\":\"inputTyped__28vTw\",\"filterContainer\":\"filterContainer__2vIpT\",\"filterInputContainer\":\"filterInputContainer__3zBBJ\",\"btnWrap\":\"btnWrap__3kLpT\",\"searchIconButton\":\"searchIconButton__3JCaW\",\"closeIconButton\":\"closeIconButton__1g5OK\",\"filterButtons\":\"filterButtons__KEAvr\",\"liveFilterSelected\":\"liveFilterSelected__19GL1\",\"arrowContainer\":\"arrowContainer__13sZY\",\"dropdownBackDrop\":\"dropdownBackDrop__1A9w_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__3JXM_\",\"createPassword\":\"createPassword__3oMmb\",\"isNation\":\"isNation__A8dGR\",\"InnerContainer\":\"InnerContainer__3mNCw\",\"createPasswordForm\":\"createPasswordForm__zXc5m\",\"DefaultButton_Round\":\"DefaultButton_Round__2Jb1o\",\"btnPrimary\":\"btnPrimary__3gvUD\",\"createProfileButton\":\"createProfileButton__1IF2p\",\"btnHollow\":\"btnHollow__3fWed\",\"btnBlue\":\"btnBlue__1A8iw\",\"btnFoxSoul\":\"btnFoxSoul__23u2F\",\"DefaultErrorText\":\"DefaultErrorText__36iG_\",\"error\":\"error__SgJmF\",\"title\":\"title__35PA3\",\"passwordLabel\":\"passwordLabel__3ymHD\",\"inputField\":\"inputField__1K2br\",\"back\":\"back__7s808\",\"createPasswordRequirements\":\"createPasswordRequirements__ckgPG\",\"passwordContainer\":\"passwordContainer__2hPnK\",\"createPasswordInfo\":\"createPasswordInfo__14msA\",\"ctaText\":\"ctaText__3yGfp\",\"emailContainer\":\"emailContainer__2hIjd\",\"emailLabel\":\"emailLabel__2ToTt\",\"legalTextContainer\":\"legalTextContainer__2-47B\",\"legalText\":\"legalText__1WtWW\",\"legalLink\":\"legalLink__2Ipnt\"};","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"overflowDropdown\":\"Dropdown_overflowDropdown_D59T0\",\"overflowHoverEffect\":\"Dropdown_overflowHoverEffect_1F3WA\",\"selectedText\":\"Dropdown_selectedText_SgwKr\",\"header\":\"Dropdown_header_2HaCB\",\"headerInnerContainer\":\"Dropdown_headerInnerContainer_2OGNh\",\"openedZIndex\":\"Dropdown_openedZIndex_2aSQQ\",\"closedZIndex\":\"Dropdown_closedZIndex_1zgye\",\"dateDropdown\":\"Dropdown_dateDropdown_vXNiF\",\"itemContainer\":\"Dropdown_itemContainer_T5zWu\",\"networkDropdown\":\"Dropdown_networkDropdown_UnHlp\",\"container\":\"Dropdown_container_2J-ET\",\"item\":\"Dropdown_item_bKs4T\",\"itemActive\":\"Dropdown_itemActive_3YI3I\",\"itemContent\":\"Dropdown_itemContent_2PZ9D\",\"selectedTextOpen\":\"Dropdown_selectedTextOpen_SmxLv\",\"headerInnerContainerOpen\":\"Dropdown_headerInnerContainerOpen_1NSwK\",\"headerOpen\":\"Dropdown_headerOpen_-2RrR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"featureFlags\":\"featureFlags__3mWf1\",\"card\":\"card__3BpXl\",\"iconWrapper\":\"iconWrapper__2Q7pX\",\"abbrev\":\"abbrev__3-ez1\",\"both\":\"both__1Ug2A\",\"nation\":\"nation__3AT5R\",\"fox\":\"fox__Z5Bva\",\"main\":\"main__2e-q9\",\"content\":\"content__2tF_Z\",\"name\":\"name__34o7J\",\"description\":\"description__2zKJn\",\"actionBar\":\"actionBar__3q9zL\",\"dateAdded\":\"dateAdded__JG9Is\",\"date\":\"date__2EXvF\",\"expired\":\"expired__1Pvc5\",\"ticket\":\"ticket__lFGyw\",\"slider\":\"slider__3bZZk\",\"switch\":\"switch__3uZAi\",\"round\":\"round__1PxFk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"play\":\"play__3ocYG\",\"carouselPosterFirst\":\"carouselPosterFirst__UHs3v\",\"carouselPoster\":\"carouselPoster__V-y5v\",\"carouselPosterEnd\":\"carouselPosterEnd__Y_Mh7\",\"overlay\":\"overlay__lDPNc\",\"logoContainer\":\"logoContainer__1AYLT\",\"logo\":\"logo__4c2-U\",\"hoverStateToolTip\":\"hoverStateToolTip__3s7Zc\",\"watchList\":\"watchList__LzHaY\",\"watchList_Label\":\"watchList_Label__SvGqP\",\"descriptionBlock\":\"descriptionBlock__2cOMe\",\"episodeTitle\":\"episodeTitle__FVWAD\",\"description\":\"description__GaS-G\",\"videoContainer\":\"videoContainer__mBfOY\",\"shadowOverlay\":\"shadowOverlay__1tQOW\",\"previewContainer\":\"previewContainer__2QrLo\",\"imageContainer\":\"imageContainer__1BdA9\",\"playText\":\"playText__32wCt\",\"videoPoster\":\"videoPoster__3hU7k\",\"posterCTA\":\"posterCTA__37Nhj\",\"posterContents\":\"posterContents__2RQDm\",\"invisible\":\"invisible__3fEP3\",\"posterVisible\":\"posterVisible__1UIM8\",\"simplifiedHover\":\"simplifiedHover__1KKtl\",\"carouselPosterImage\":\"carouselPosterImage__3a_xj\",\"badge\":\"badge__iTd65\",\"blueBadge\":\"blueBadge__2d1jP\",\"newBadge\":\"newBadge__3LDot\",\"redBadge\":\"redBadge__2E6h0\",\"liveBadge\":\"liveBadge__1wYb6\",\"defaultBadge\":\"defaultBadge__15hWc\",\"audioBadge\":\"audioBadge__3nWVQ\",\"otherBadge\":\"otherBadge__1d65W\",\"hoverStateToolTipLabel\":\"hoverStateToolTipLabel__vH75e\",\"hoverStateToolTipTip\":\"hoverStateToolTipTip__3kYp2\",\"hoverStateToolTipRight\":\"hoverStateToolTipRight__2YuBk\",\"watchListToolTip\":\"watchListToolTip__1xcg3\",\"watchListButtonContainer\":\"watchListButtonContainer__xdymd\",\"carouselContainer\":\"carouselContainer__1ZJdf\",\"additionalPoster\":\"additionalPoster__vvFZU\",\"seriesDetailAnonymous\":\"seriesDetailAnonymous__3u8x-\",\"hideOverlayOnMobile\":\"hideOverlayOnMobile__Fy6MD\",\"metaDataContainer\":\"metaDataContainer__1-Ufc\",\"posterTitle\":\"posterTitle__F4xU_\",\"posterInfo\":\"posterInfo__1CDcw\",\"posterMetaData\":\"posterMetaData__370EF\",\"posterGenres\":\"posterGenres__1yS9g\",\"metadataBadge\":\"metadataBadge__1wiHA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"allProvidersButton\":\"allProvidersButton__642no\",\"allProvidersButtonContainer\":\"allProvidersButtonContainer__2I0iu\",\"providersContainer\":\"providersContainer__2_xfI\",\"provider\":\"provider__23TOv\",\"providerLogo\":\"providerLogo__2zUlM\",\"providerLogoContainer\":\"providerLogoContainer__3iyMD\",\"providerContainer\":\"providerContainer__37CGa\",\"providerDialog\":\"providerDialog__3iehm\",\"link\":\"link__9ZbkI\",\"linkSeparator\":\"linkSeparator__2MnBU\",\"links\":\"links__3J_EC\",\"headerText\":\"headerText__R-Y-E\",\"descriptionText\":\"descriptionText__1ElsC\",\"allProviders\":\"allProviders__QLycJ\",\"emailInput\":\"emailInput__399D8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabList\":\"tabList__1wZ6W\",\"tab\":\"tab__2wLt5\",\"tabWrapper\":\"tabWrapper__3pyIi\",\"favoriteButton\":\"favoriteButton__2nJ71\",\"actionButtons\":\"actionButtons__5i5bY\",\"clips\":\"clips__3i_x4\",\"caret\":\"caret__1ovlw\",\"playlist\":\"playlist__1GH_x\",\"playlistItem\":\"playlistItem__3Uzxw\",\"subMenu\":\"subMenu__ijlvh\",\"open\":\"open__1lGQz\",\"icon\":\"icon__Gbxyl\",\"header\":\"header__28fWa\",\"noTabs\":\"noTabs__3XKe1\",\"tabRow\":\"tabRow__Y5WkO\",\"moreTab\":\"moreTab__23hwB\"};","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__1ggUx\",\"isNation\":\"isNation__3w04C\",\"InnerContainer\":\"InnerContainer__1b3DI\",\"DefaultButton_Round\":\"DefaultButton_Round__2K7cn\",\"btnPrimary\":\"btnPrimary__3tpkk\",\"btnHollow\":\"btnHollow__2mstf\",\"btnBlue\":\"btnBlue__Dw6tm\",\"btnFoxSoul\":\"btnFoxSoul__33DKx\",\"DefaultErrorText\":\"DefaultErrorText__5jzQp\",\"title\":\"title__1Rkap\",\"passwordLabel\":\"passwordLabel__1kUZg\",\"inputField\":\"inputField__3QBJn\",\"back\":\"back__1U5x4\"};","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__1_dt-\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__2m16h\",\"stylelessButton\":\"stylelessButton__29ch8\",\"clipsPage\":\"clipsPage__1Ti9s\",\"returnButtonContainer\":\"returnButtonContainer__pUxIi\",\"returnButton\":\"returnButton__Lfmsp\",\"seeMoreButton\":\"seeMoreButton__31p7G\",\"seeMoreContainer\":\"seeMoreContainer__3bN99\",\"clipsCarousel\":\"clipsCarousel__2zcIH\",\"loaderContainer\":\"loaderContainer__38eyB\",\"seasonSelector\":\"seasonSelector__259TW\",\"dropdownLabel\":\"dropdownLabel__1Lp-S\",\"active\":\"active__33GGo\",\"listItem\":\"listItem__1BmOt\",\"seeAllButton\":\"seeAllButton__1ySQ4\",\"dropdownBackDrop\":\"dropdownBackDrop__xXP07\",\"dropdownList\":\"dropdownList__3_x3e\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"playerEndcard\":\"playerEndcard__3zTmH\",\"container\":\"container__ZVT-2\",\"fullscreen\":\"fullscreen__3Rou7\",\"endCardContainer\":\"endCardContainer__1fjC4\",\"containerFull\":\"containerFull__1NSS2\",\"hideEndCard\":\"hideEndCard__356al\",\"grid\":\"grid__tYK-w\",\"grid-2-1\":\"grid-2-1__kwKWg\",\"tile\":\"tile__1E1w-\",\"title\":\"title__1sl2d\",\"counter\":\"counter__2-lfM\",\"seconds\":\"seconds__1w-6i\",\"metadata\":\"metadata__3pApE\",\"tile-image-left\":\"tile-image-left__2FJd8\",\"imageContainer\":\"imageContainer__1F7c7\",\"details\":\"details__1h24Z\",\"badge\":\"badge__1w6H1\",\"info\":\"info__2uB8W\",\"endcard\":\"endcard__2dez8\",\"endcardHeader\":\"endcardHeader__b_Boj\",\"endcardCta\":\"endcardCta__1mxgg\",\"background\":\"background__3r0G8\",\"single\":\"single__8jpUO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"anonymousOverlay\":\"anonymousOverlay__11Qfg\",\"overlayContainer\":\"overlayContainer__bSpim\",\"badge\":\"badge__1xp-_\",\"blueBadge\":\"blueBadge__21z36\",\"newBadge\":\"newBadge__17Stt\",\"redBadge\":\"redBadge__3WBZa\",\"liveBadge\":\"liveBadge__1dr_V\",\"liveHoverV2Badge\":\"liveHoverV2Badge__75Vts\",\"infoBadge\":\"infoBadge__9FqY2\",\"clipBadge\":\"clipBadge__YgVXO\",\"defaultBadge\":\"defaultBadge__2LUrT\",\"otherBadge\":\"otherBadge__24LjA\",\"badgeInvalid\":\"badgeInvalid__zXY_h\",\"imageContainer\":\"imageContainer__20t2v\",\"hoverStateBadgeV2\":\"hoverStateBadgeV2__2jBCo\",\"play\":\"play__2YWfM\",\"imageOverlay\":\"imageOverlay__27WtD\",\"playText\":\"playText__33UcF\",\"toFade\":\"toFade__Ob0FK\",\"clickDisabled\":\"clickDisabled__2dX2B\",\"clickable\":\"clickable__3mwb2\",\"scaleFromLeft\":\"scaleFromLeft__3UgQq\",\"scaleFromRight\":\"scaleFromRight__x0MPK\",\"anonymousUpsellCTA\":\"anonymousUpsellCTA__1tRi5\",\"tile\":\"tile__3EPBq\",\"fadeAnimated\":\"fadeAnimated__2sHKJ\",\"fadein\":\"fadein__1Xv5y\",\"fadeAnimatedUnauthorized\":\"fadeAnimatedUnauthorized__EXIic\",\"fadeInUnAuth\":\"fadeInUnAuth__3jq4T\",\"image\":\"image__1U_Kq\",\"maintainRatioContainer\":\"maintainRatioContainer__24jWj\",\"underlayImage\":\"underlayImage__1PNfs\",\"top\":\"top__3p69V\",\"padForImage\":\"padForImage__26N9m\",\"title\":\"title__3aoi0\",\"subtitle\":\"subtitle__csXuD\",\"titleReverse\":\"titleReverse__ymkAx\",\"ellipsisTitle\":\"ellipsisTitle__2vtcq\",\"titleWrapper\":\"titleWrapper__1UCpl\",\"subtitleWrapper\":\"subtitleWrapper__1YXhO\",\"metadata\":\"metadata__2OAss\",\"progress\":\"progress__3vwLD\",\"done\":\"done__1uW-z\",\"lock\":\"lock__cHsSn\",\"titleLock\":\"titleLock__3G3eR\",\"hoverStateV2Lock\":\"hoverStateV2Lock__2xRm0\",\"titleV2\":\"titleV2__2z1-g\",\"toggleEnabled\":\"toggleEnabled__xK50S\",\"dotdotdot\":\"dotdotdot__1GtzE\",\"x\":\"x__QfLw5\",\"details\":\"details__3EDnX\",\"info\":\"info__32YCl\",\"moreInfo\":\"moreInfo__3RRcL\",\"infoExtended\":\"infoExtended__1xwwG\",\"toggled\":\"toggled__24zk8\",\"titleLastWord\":\"titleLastWord__3eQZM\",\"subtitleLastWord\":\"subtitleLastWord__3zLSO\",\"description\":\"description__Axo-1\",\"descLink\":\"descLink__3vVTF\",\"multiline\":\"multiline__1xcOr\",\"networkUpsellCTA\":\"networkUpsellCTA__2QLN4\",\"networkIcon\":\"networkIcon__1YQ4Y\",\"dogEar\":\"dogEar__3qTsA\",\"networkIconHoverStateV2\":\"networkIconHoverStateV2__3-tJK\",\"tile-text-center\":\"tile-text-center__2W7jR\",\"fadeTile\":\"fadeTile__3m7Pk\",\"fadeImage\":\"fadeImage__2fgpf\",\"imageOverlayDetailContainer\":\"imageOverlayDetailContainer__15Orp\",\"imageOverlayTitle\":\"imageOverlayTitle__2Nhhm\",\"titleFavorite\":\"titleFavorite__1MXpZ\",\"imageOverlayDate\":\"imageOverlayDate__1Nl8i\",\"imageOverlaySubtitle\":\"imageOverlaySubtitle__1gz3Q\",\"imageOverlayDescription\":\"imageOverlayDescription__1dLbL\",\"imageOverlayMetadata\":\"imageOverlayMetadata__3Zq5k\",\"imageOverlayNetworkLogo\":\"imageOverlayNetworkLogo__3Znu6\",\"imageOverlayFooter\":\"imageOverlayFooter__1gCfv\",\"link\":\"link__1njPX\",\"optionalText\":\"optionalText__2LZQI\",\"tile-image-left\":\"tile-image-left__3iBv9\",\"networkLogoBubble\":\"networkLogoBubble__1moGS\",\"playButtonOverlay\":\"playButtonOverlay__2q8rP\",\"playButton\":\"playButton__V_auj\",\"playButtonScale\":\"playButtonScale__8iZrm\",\"liveTileShadow\":\"liveTileShadow__2bdQk\"};","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayPush = require('./_arrayPush'),\n baseFlatten = require('./_baseFlatten'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray');\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nmodule.exports = concat;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"favoriteButton\":\"favoriteButton__O2IEO\",\"actionLink\":\"actionLink__2QL0J\",\"actionButton\":\"actionButton__3aOJD\",\"iconContainer\":\"iconContainer__1XKQ_\",\"filmstrip\":\"filmstrip__3QtGf\",\"lock\":\"lock__2Mr0R\",\"restart-double\":\"restart-double__2VdSZ\",\"play-rectangle\":\"play-rectangle__1F-O2\",\"label\":\"label__KizQD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"anonymousOverlay\":\"anonymousOverlay__1cqZN\",\"overlayContainer\":\"overlayContainer__gYZkg\",\"badge\":\"badge__32PNN\",\"blueBadge\":\"blueBadge__2CUeO\",\"newBadge\":\"newBadge__24R2h\",\"redBadge\":\"redBadge__V7pWs\",\"liveBadge\":\"liveBadge__nD_O1\",\"liveHoverV2Badge\":\"liveHoverV2Badge__2y-yS\",\"infoBadge\":\"infoBadge__1Xhmn\",\"clipBadge\":\"clipBadge__2lwoi\",\"defaultBadge\":\"defaultBadge__1AzAv\",\"otherBadge\":\"otherBadge__2oUSU\",\"badgeInvalid\":\"badgeInvalid__3EdaS\",\"imageContainer\":\"imageContainer__1LhxB\",\"hoverStateBadgeV2\":\"hoverStateBadgeV2__2JxXu\",\"play\":\"play__18Ylg\",\"imageOverlay\":\"imageOverlay__14xiX\",\"playText\":\"playText__1q_kW\",\"toFade\":\"toFade__3iiLA\",\"clickDisabled\":\"clickDisabled__1QViG\",\"clickable\":\"clickable__bmqRf\",\"scaleFromLeft\":\"scaleFromLeft__14ntF\",\"scaleFromRight\":\"scaleFromRight__DOUMm\",\"anonymousUpsellCTA\":\"anonymousUpsellCTA__2uGKX\",\"tile\":\"tile__3qKqN\",\"fadeAnimated\":\"fadeAnimated__2RTs3\",\"fadein\":\"fadein__YbrBV\",\"fadeAnimatedUnauthorized\":\"fadeAnimatedUnauthorized__1WtD2\",\"fadeInUnAuth\":\"fadeInUnAuth__5w7mw\",\"image\":\"image__1gH8q\",\"maintainRatioContainer\":\"maintainRatioContainer__2DsRD\",\"underlayImage\":\"underlayImage__1OJ-E\",\"top\":\"top__2Pn3Y\",\"padForImage\":\"padForImage__1dxK3\",\"title\":\"title__dzJn7\",\"subtitle\":\"subtitle__BAJu5\",\"titleReverse\":\"titleReverse__1LZlu\",\"ellipsisTitle\":\"ellipsisTitle__1trit\",\"titleWrapper\":\"titleWrapper__30113\",\"subtitleWrapper\":\"subtitleWrapper__3Stdb\",\"metadata\":\"metadata__1a1Sd\",\"progress\":\"progress__2Rc35\",\"done\":\"done__2LUiW\",\"lock\":\"lock__NX_Jw\",\"titleLock\":\"titleLock__3C0wK\",\"hoverStateV2Lock\":\"hoverStateV2Lock__li6qV\",\"titleV2\":\"titleV2__2OABo\",\"toggleEnabled\":\"toggleEnabled__2X3hK\",\"dotdotdot\":\"dotdotdot__2p7Ca\",\"x\":\"x__35oCx\",\"details\":\"details__8jk9o\",\"info\":\"info__1K3Ay\",\"moreInfo\":\"moreInfo__dh6zp\",\"infoExtended\":\"infoExtended__2zbim\",\"toggled\":\"toggled__1NSNY\",\"titleLastWord\":\"titleLastWord__bjBu1\",\"subtitleLastWord\":\"subtitleLastWord__IL1L-\",\"description\":\"description__1f6u3\",\"descLink\":\"descLink__3RV73\",\"multiline\":\"multiline__3RkNv\",\"networkUpsellCTA\":\"networkUpsellCTA__3fvDD\",\"networkIcon\":\"networkIcon__1uoNs\",\"dogEar\":\"dogEar__3rmQr\",\"networkIconHoverStateV2\":\"networkIconHoverStateV2__3c4kM\",\"tile-text-center\":\"tile-text-center__3T23O\",\"fadeTile\":\"fadeTile__JPN5C\",\"fadeImage\":\"fadeImage__2bb0n\",\"imageOverlayDetailContainer\":\"imageOverlayDetailContainer__1npDy\",\"imageOverlayTitle\":\"imageOverlayTitle__2YabH\",\"titleFavorite\":\"titleFavorite__16HpG\",\"imageOverlayDate\":\"imageOverlayDate__2Tk9Y\",\"imageOverlaySubtitle\":\"imageOverlaySubtitle__3qLZz\",\"imageOverlayDescription\":\"imageOverlayDescription__3Z6wF\",\"imageOverlayMetadata\":\"imageOverlayMetadata__3HGXv\",\"imageOverlayNetworkLogo\":\"imageOverlayNetworkLogo__1FUYl\",\"imageOverlayFooter\":\"imageOverlayFooter__8bF2L\",\"link\":\"link__2sXyh\",\"optionalText\":\"optionalText__3qoVS\",\"tile-image-left\":\"tile-image-left__1sYkE\",\"networkLogoBubble\":\"networkLogoBubble__1W4xF\",\"playButtonOverlay\":\"playButtonOverlay__3NIjl\",\"playButton\":\"playButton__2tOC3\",\"playButtonScale\":\"playButtonScale__3SqCr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"scheduleRow\":\"scheduleRow__1TgXo\",\"networkLogo\":\"networkLogo__aSm9r\",\"scheduleLeftContainer\":\"scheduleLeftContainer__1jPwb\",\"scheduleLeft\":\"scheduleLeft__3XMWr\",\"scheduleLeftNotFirst\":\"scheduleLeftNotFirst__3OSpm\",\"scheduleRowSelected\":\"scheduleRowSelected__tgWzc\",\"liveIndicator\":\"liveIndicator__K1HkH\",\"lineDivider\":\"lineDivider__1BlD-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__1QPLX\",\"cancelButton\":\"cancelButton__t8cSJ\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__cfwHD\",\"stylelessButton\":\"stylelessButton__2cjMV\",\"hideItemContainer\":\"hideItemContainer__1t2Bg\",\"itemContentActive\":\"itemContentActive__18Khq\",\"selectedTextOpen\":\"selectedTextOpen__go2PR\",\"item\":\"item__3UuXA\",\"itemContent\":\"itemContent__jwL1I\",\"selectedText\":\"selectedText__1vOgQ\",\"header\":\"header__fei4F\",\"headerInnerContainer\":\"headerInnerContainer__3tduF\",\"headerInnerContainerOpen\":\"headerInnerContainerOpen__JFwM6\",\"itemContainer\":\"itemContainer__13HtS\",\"defaultTextContainer\":\"defaultTextContainer__380ig\",\"headerOpen\":\"headerOpen__2FTnJ\",\"container\":\"container__qNF9H\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1ohsm\",\"player\":\"player__3ZG0O\",\"transitionPoster\":\"transitionPoster__1sjbJ\",\"videoPoster\":\"videoPoster__2zwwy\",\"fadeImageToVideo\":\"fadeImageToVideo__1Kilh\",\"wrapperVideo\":\"wrapperVideo__29as3\",\"videoLoaded\":\"videoLoaded__3uvBX\",\"fadeInVideo\":\"fadeInVideo__3W7Pd\",\"poster\":\"poster__2sLEm\",\"fadeOutHero\":\"fadeOutHero__2gYEC\",\"transition\":\"transition__-5ml7\",\"wrapper\":\"wrapper__2j9Qs\",\"wrapperBlack\":\"wrapperBlack__1zLuc\",\"shadowOverlay\":\"shadowOverlay__2Licv\",\"anonymousView\":\"anonymousView__2DU__\",\"posterPadding\":\"posterPadding__3byLG\",\"wrapperPoster\":\"wrapperPoster__IKub9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__XLQAI\",\"changePassword\":\"changePassword__HqJT-\",\"isNation\":\"isNation__1X8Mq\",\"InnerContainer\":\"InnerContainer__3-scP\",\"changePasswordContainer\":\"changePasswordContainer__2m7Ml\",\"DefaultButton_Round\":\"DefaultButton_Round__2NAFJ\",\"btnPrimary\":\"btnPrimary__20k8l\",\"btnHollow\":\"btnHollow__3QGwz\",\"btnBlue\":\"btnBlue__2_Lu1\",\"btnFoxSoul\":\"btnFoxSoul__owg3X\",\"DefaultErrorText\":\"DefaultErrorText__35zwJ\",\"error\":\"error__23ukR\",\"title\":\"title__v1OHk\",\"passwordLabel\":\"passwordLabel__3TuBD\",\"inputField\":\"inputField__14FFh\",\"back\":\"back__IxBGf\",\"changePasswordRequirements\":\"changePasswordRequirements__5ZjZ8\",\"signupPasswordContainer\":\"signupPasswordContainer___9A92\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__6b_FV\",\"signIn\":\"signIn__x27mA\",\"isNation\":\"isNation__ehVz1\",\"InnerContainer\":\"InnerContainer__3z8jn\",\"signInWrap\":\"signInWrap__3r8mx\",\"DefaultButton_Round\":\"DefaultButton_Round__3g0uG\",\"btnPrimary\":\"btnPrimary__1PR3Z\",\"btnHollow\":\"btnHollow__1G7Qk\",\"btnBlue\":\"btnBlue__2XUwX\",\"btnFoxSoul\":\"btnFoxSoul__3IlXL\",\"DefaultErrorText\":\"DefaultErrorText__3KDbo\",\"error\":\"error__yQrai\",\"title\":\"title__3SJTS\",\"passwordLabel\":\"passwordLabel__1g95S\",\"inputField\":\"inputField__OdHWM\",\"back\":\"back__1mhs4\",\"signupFormInputContainer\":\"signupFormInputContainer__12Cmg\",\"signInPasswordContainer\":\"signInPasswordContainer__qcfJ7\",\"termsText\":\"termsText__1h0aI\",\"termsLink\":\"termsLink__2p7RB\",\"disclosure\":\"disclosure__2ynrp\",\"emailInput\":\"emailInput__QcPqk\",\"forgotPasswordLink\":\"forgotPasswordLink__16KsB\"};","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hoverStateActionButtons\":\"hoverStateActionButtons__1auol\",\"rightActionButton\":\"rightActionButton__o-HyE\",\"leftActionButton\":\"leftActionButton__3nuqd\",\"infoButton\":\"infoButton__19QWj\",\"hoverStateToolTip\":\"hoverStateToolTip__12pxh\",\"watchListButton\":\"watchListButton__TVqzc\",\"watchListToolTip\":\"watchListToolTip__3y6rE\",\"watchListButtonContainer\":\"watchListButtonContainer__1KMyj\",\"infoButtonLink\":\"infoButtonLink__3Yjxb\",\"infoToolTip\":\"infoToolTip__vz-Ip\",\"hoverStateToolTipLabel\":\"hoverStateToolTipLabel__1CYtm\",\"hoverStateToolTipTip\":\"hoverStateToolTipTip__1wgzh\",\"hoverStateToolTipRight\":\"hoverStateToolTipRight__36b3-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"anonymousOverlay\":\"anonymousOverlay__14vYt\",\"overlayContainer\":\"overlayContainer__31Lua\",\"badge\":\"badge__IitD8\",\"blueBadge\":\"blueBadge__eF-bk\",\"newBadge\":\"newBadge__vOwzb\",\"redBadge\":\"redBadge__Y8xS5\",\"liveBadge\":\"liveBadge__1FRoJ\",\"liveHoverV2Badge\":\"liveHoverV2Badge__2FxEh\",\"infoBadge\":\"infoBadge__2Jxg0\",\"clipBadge\":\"clipBadge__3XCQ1\",\"defaultBadge\":\"defaultBadge__2bDXZ\",\"otherBadge\":\"otherBadge__16GbG\",\"badgeInvalid\":\"badgeInvalid__2XlbB\",\"imageContainer\":\"imageContainer__1MG-g\",\"hoverStateBadgeV2\":\"hoverStateBadgeV2__2wQ8e\",\"play\":\"play__2Cl8k\",\"imageOverlay\":\"imageOverlay__1ZkiU\",\"playText\":\"playText__3vKUp\",\"toFade\":\"toFade__1XPVR\",\"clickDisabled\":\"clickDisabled__1lx3X\",\"clickable\":\"clickable__2oiD0\",\"scaleFromLeft\":\"scaleFromLeft__QZcnP\",\"scaleFromRight\":\"scaleFromRight__Ncjd8\",\"anonymousUpsellCTA\":\"anonymousUpsellCTA__1Yp_t\",\"tile\":\"tile__1iNY6\",\"fadeAnimated\":\"fadeAnimated__1W9J9\",\"fadein\":\"fadein__npzsS\",\"fadeAnimatedUnauthorized\":\"fadeAnimatedUnauthorized__1bkl_\",\"fadeInUnAuth\":\"fadeInUnAuth__2-PKr\",\"image\":\"image__1JdBL\",\"maintainRatioContainer\":\"maintainRatioContainer__3ValT\",\"underlayImage\":\"underlayImage__1xIv3\",\"top\":\"top__1zWtb\",\"padForImage\":\"padForImage__1ghRs\",\"title\":\"title__2gaLi\",\"subtitle\":\"subtitle__2ALu6\",\"titleReverse\":\"titleReverse__2kMxR\",\"ellipsisTitle\":\"ellipsisTitle__2s5FM\",\"titleWrapper\":\"titleWrapper__3Ug3h\",\"subtitleWrapper\":\"subtitleWrapper__11R_P\",\"metadata\":\"metadata__3Jjpl\",\"progress\":\"progress__5VMpw\",\"done\":\"done__YdTW3\",\"lock\":\"lock__1eqgC\",\"titleLock\":\"titleLock__M5yZs\",\"hoverStateV2Lock\":\"hoverStateV2Lock__2s_4b\",\"titleV2\":\"titleV2__3kkEm\",\"toggleEnabled\":\"toggleEnabled__1DUma\",\"dotdotdot\":\"dotdotdot__2Qz0n\",\"x\":\"x__1huTA\",\"details\":\"details__1E355\",\"info\":\"info__zH1Xu\",\"moreInfo\":\"moreInfo__y74Tx\",\"infoExtended\":\"infoExtended__1xBbL\",\"toggled\":\"toggled__tnGOo\",\"titleLastWord\":\"titleLastWord__2Sk60\",\"subtitleLastWord\":\"subtitleLastWord__1Ooqz\",\"description\":\"description__XhEII\",\"descLink\":\"descLink__2hNzG\",\"multiline\":\"multiline__35mKe\",\"networkUpsellCTA\":\"networkUpsellCTA__1vXmr\",\"networkIcon\":\"networkIcon__2LSwe\",\"dogEar\":\"dogEar__1j0nJ\",\"networkIconHoverStateV2\":\"networkIconHoverStateV2__1Js4F\",\"tile-text-center\":\"tile-text-center__3Dwaj\",\"fadeTile\":\"fadeTile__3gn5w\",\"fadeImage\":\"fadeImage__3go6Y\",\"imageOverlayDetailContainer\":\"imageOverlayDetailContainer__3waPz\",\"imageOverlayTitle\":\"imageOverlayTitle__1rndR\",\"titleFavorite\":\"titleFavorite__1DFAt\",\"imageOverlayDate\":\"imageOverlayDate__3EwF_\",\"imageOverlaySubtitle\":\"imageOverlaySubtitle__3uGzZ\",\"imageOverlayDescription\":\"imageOverlayDescription__2Sgd5\",\"imageOverlayMetadata\":\"imageOverlayMetadata__2ohJe\",\"imageOverlayNetworkLogo\":\"imageOverlayNetworkLogo__1ZzZU\",\"imageOverlayFooter\":\"imageOverlayFooter__IY-8n\",\"link\":\"link__2Pajc\",\"optionalText\":\"optionalText__2lm4C\",\"tile-image-left\":\"tile-image-left__1RER2\",\"networkLogoBubble\":\"networkLogoBubble__17UKe\",\"playButtonOverlay\":\"playButtonOverlay__2RtSV\",\"playButton\":\"playButton__1dA7C\",\"playButtonScale\":\"playButtonScale__38gY-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"screen\":\"Error404_screen_1u9Z1\",\"info\":\"Error404_info_1czaS\",\"fox\":\"Error404_fox_2x9kO\",\"background\":\"Error404_background_sl1B4\",\"header\":\"Error404_header_20mrZ\",\"message\":\"Error404_message_v_O6_\",\"button\":\"Error404_button_fUriP\",\"innerBackground\":\"Error404_innerBackground_1Fbc7\",\"character\":\"Error404_character_3YVy4\",\"logo\":\"Error404_logo_1NnDl\",\"logoButton\":\"Error404_logoButton_1iwOH\",\"ngc\":\"Error404_ngc_3lpZv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__1WViD\",\"linkAccount\":\"linkAccount__1tjli\",\"isNation\":\"isNation__2FUYo\",\"InnerContainer\":\"InnerContainer__12atI\",\"accountLinkContainer\":\"accountLinkContainer__2LioT\",\"DefaultButton_Round\":\"DefaultButton_Round__1-9Qt\",\"btnPrimary\":\"btnPrimary__33tnA\",\"createProfileButton\":\"createProfileButton__mv6TC\",\"btnHollow\":\"btnHollow__10qcb\",\"btnBlue\":\"btnBlue__1MyD4\",\"btnFoxSoul\":\"btnFoxSoul__2u7Lv\",\"DefaultErrorText\":\"DefaultErrorText__2iN0o\",\"error\":\"error__1gwGe\",\"title\":\"title__2b3-0\",\"passwordLabel\":\"passwordLabel__3cVJ5\",\"inputField\":\"inputField__1rqje\",\"back\":\"back__2sXKb\",\"createPasswordRequirements\":\"createPasswordRequirements__1SdtA\",\"passwordContainer\":\"passwordContainer__1xDPn\",\"createPasswordInfo\":\"createPasswordInfo__2NN43\",\"ctaText\":\"ctaText__2fpnD\",\"emailContainer\":\"emailContainer__AQtF-\",\"emailLabel\":\"emailLabel__6qCyw\",\"legalTextContainer\":\"legalTextContainer__7O2sa\",\"legalText\":\"legalText__1MpFW\",\"legalLink\":\"legalLink__1Fmxz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__2Jfe7\",\"Perks\":\"Perks__3oXPt\",\"isNation\":\"isNation__1_1nm\",\"InnerContainer\":\"InnerContainer__3Ph9b\",\"PerksContainer\":\"PerksContainer__3rzlY\",\"DefaultButton_Round\":\"DefaultButton_Round__3RYTP\",\"btnPrimary\":\"btnPrimary__2xsBY\",\"btnHollow\":\"btnHollow__1P4VO\",\"btnBlue\":\"btnBlue__2IX_N\",\"btnFoxSoul\":\"btnFoxSoul__3h-WJ\",\"DefaultErrorText\":\"DefaultErrorText__3RBxy\",\"title\":\"title__3zhaX\",\"passwordLabel\":\"passwordLabel__a12S9\",\"inputField\":\"inputField__plQ2R\",\"back\":\"back__YVGeS\",\"perksWrap\":\"perksWrap__1c3ai\",\"perkContainer\":\"perkContainer__1qNKj\",\"imageContainer\":\"imageContainer__SNS75\",\"perkIcon\":\"perkIcon__vlCW9\",\"perkText\":\"perkText__e9SsW\",\"buttonWrap\":\"buttonWrap__2UN6W\",\"signInText\":\"signInText__3fqqO\",\"errorInput\":\"errorInput__1x5bj\",\"socialContainer\":\"socialContainer__1kHiH\",\"invalidEmail\":\"invalidEmail__1aEcQ\",\"iconText\":\"iconText__19bEV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"resumeWithProfile\":\"resumeWithProfile__1lyVr\",\"actionButtonContainer\":\"actionButtonContainer__2KKBI\",\"actionButtonInnerContainer\":\"actionButtonInnerContainer__u46Zo\",\"actionButtons\":\"actionButtons__2psC5\",\"secondaryBtn\":\"secondaryBtn__2sL_0\",\"primary\":\"primary__1s563\",\"profilePerkContainer\":\"profilePerkContainer__2NiG2\",\"morePerksSeparator\":\"morePerksSeparator__O3aoR\",\"morePerksText\":\"morePerksText__2uizr\",\"morePerksBorder\":\"morePerksBorder__2erkn\",\"perkIcon\":\"perkIcon__qsmAY\",\"resizablePlayer\":\"resizablePlayer__tJS2s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rightIcon\":\"rightIcon__2Guxj\",\"profileOptionsContainer\":\"profileOptionsContainer__7fMDP\",\"hideProfileOptions\":\"hideProfileOptions__De76a\",\"showProfileOptions\":\"showProfileOptions__1lGTu\",\"profileOption\":\"profileOption__2mn42\",\"separator\":\"separator__15qRF\",\"lastRow\":\"lastRow__2py1v\",\"userIcon\":\"userIcon__2KaVb\",\"userIconAccount\":\"userIconAccount__2rxy2\",\"profileDropdownContainer\":\"profileDropdownContainer__hTHP2\",\"profileDropdownOpen\":\"profileDropdownOpen__30FuH\",\"accountDropdown\":\"accountDropdown__1Ol48\",\"profileIconContainer\":\"profileIconContainer__1DwFQ\"};","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var baseIteratee = require('./_baseIteratee'),\n basePullAt = require('./_basePullAt');\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"emailSuccessContainer\":\"emailSuccessContainer__3zq6s\",\"emailFormContainer\":\"emailFormContainer__2fD-1\",\"emailFormHeader\":\"emailFormHeader__1XoO7\",\"emailInputContainer\":\"emailInputContainer__2P8bZ\",\"emailInput\":\"emailInput__yFOje\",\"emailSubmitButton\":\"emailSubmitButton__1ZO8W\",\"enabled\":\"enabled__2Onrb\",\"emailSuccessIcon\":\"emailSuccessIcon__1bKAQ\",\"icon\":\"icon__1ytqF\",\"legalDisclaimer\":\"legalDisclaimer__3u3dg\",\"legalDisclaimerText\":\"legalDisclaimerText__GkOWf\",\"legalDisclaimerLink\":\"legalDisclaimerLink__gjy49\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hoverOverlay\":\"style_hoverOverlay_2iDOV\",\"innerContainer\":\"style_innerContainer_BoAHN\",\"detailContainer\":\"style_detailContainer_1-Wac\",\"title\":\"style_title_3jn1Z\",\"titleFavorite\":\"style_titleFavorite_1ggrw\",\"date\":\"style_date_1e0pE\",\"subtitle\":\"style_subtitle_hUFzK\",\"description\":\"style_description_2KBPj\",\"networkLogo\":\"style_networkLogo_3QGqu\",\"metadata\":\"style_metadata_2yd7T\",\"footer\":\"style_footer_2it08\",\"badge\":\"style_badge_3-1Lc\",\"play\":\"style_play_2g_Yh\",\"playText\":\"style_playText_1i2Jp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__Kudsd\",\"signIn\":\"signIn__3GWjm\",\"isNation\":\"isNation__JgtzK\",\"InnerContainer\":\"InnerContainer__3WIcf\",\"signInWrap\":\"signInWrap__1ATyc\",\"DefaultButton_Round\":\"DefaultButton_Round__15REK\",\"btnPrimary\":\"btnPrimary__3s3wf\",\"btnHollow\":\"btnHollow__1eabG\",\"btnBlue\":\"btnBlue__vvu85\",\"btnFoxSoul\":\"btnFoxSoul__3FAbT\",\"DefaultErrorText\":\"DefaultErrorText__17Tqe\",\"error\":\"error__267TB\",\"title\":\"title__2EYmP\",\"passwordLabel\":\"passwordLabel__m6P9N\",\"inputField\":\"inputField__2B82_\",\"back\":\"back__3elXb\",\"signupFormInputContainer\":\"signupFormInputContainer__2EoBY\",\"signInPasswordContainer\":\"signInPasswordContainer__21Jzg\",\"termsText\":\"termsText__1eLVm\",\"termsLink\":\"termsLink__1P9sI\"};","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","module.exports = (__webpack_require__(88))(43);","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headerText\":\"headerText__18EBC\",\"bodyText\":\"bodyText__18tzf\",\"failBodyText\":\"failBodyText__1w9vH\",\"actions\":\"actions__3RmVn\",\"primaryAction\":\"primaryAction__3Cv7r\",\"issues\":\"issues__Oy7GA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actionButton\":\"actionButton__6fzR-\",\"iconContainer\":\"iconContainer__2yXNT\",\"filmstrip\":\"filmstrip__1rwgk\",\"lock\":\"lock__3oZBc\",\"restart-double\":\"restart-double__2RdNE\",\"play-rectangle\":\"play-rectangle__hJdsV\",\"label\":\"label__3G6eS\",\"actionLink\":\"actionLink__gp9uj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3DLfl\",\"videoPoster\":\"videoPoster__1P4zc\",\"player\":\"player__2Vlcc\",\"transitionPoster\":\"transitionPoster__2Cs6V\",\"fadeImageToVideo\":\"fadeImageToVideo__2Z_xP\",\"wrapperVideo\":\"wrapperVideo__3xDWW\",\"videoLoaded\":\"videoLoaded__IBcpk\",\"fadeInVideo\":\"fadeInVideo__2U4s9\",\"poster\":\"poster__2nOPJ\",\"fadeOutHero\":\"fadeOutHero__2qCce\",\"transition\":\"transition__2nXPp\",\"wrapper\":\"wrapper__Z57D2\",\"videoPosterContainer\":\"videoPosterContainer__1-SJ5\",\"wrapperPoster\":\"wrapperPoster__30oxw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2DoNW\",\"innerContainer\":\"innerContainer__yWdBk\",\"title\":\"title__354dS\",\"subtitle\":\"subtitle__24hq7\",\"metadata\":\"metadata__1haB1\",\"networkInfo\":\"networkInfo__3VkQ9\",\"description\":\"description__3b5pZ\",\"close\":\"close__3OF8B\",\"footer\":\"footer__Qctfn\",\"optionalText\":\"optionalText__1HYV1\",\"link\":\"link__1cNhJ\",\"favorite\":\"favorite__1clI9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2NZV7\",\"dnsContainer\":\"dnsContainer__ihFVb\",\"title\":\"title__2Vg_P\",\"doNotSellConfirmationText\":\"doNotSellConfirmationText__-44Rr\",\"body\":\"body__1z8ZA\",\"doNotSellInfoText\":\"doNotSellInfoText__3jV-U\",\"checkboxContainer\":\"checkboxContainer__2kZju\",\"checkboxLabel\":\"checkboxLabel__kg05H\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__2atDA\",\"EditAccount\":\"EditAccount__U3DP_\",\"isNation\":\"isNation__1gs9J\",\"InnerContainer\":\"InnerContainer__vcqlx\",\"EditAccountContainer\":\"EditAccountContainer__2U-wP\",\"DefaultButton_Round\":\"DefaultButton_Round__2jM0b\",\"btnPrimary\":\"btnPrimary__3AtBy\",\"btnHollow\":\"btnHollow__3gEnr\",\"btnBlue\":\"btnBlue__1VXM-\",\"btnFoxSoul\":\"btnFoxSoul__2WP5X\",\"DefaultErrorText\":\"DefaultErrorText__1SamB\",\"error\":\"error__2vmFV\",\"title\":\"title__ShVUa\",\"passwordLabel\":\"passwordLabel__3cvsO\",\"inputField\":\"inputField__3mPm3\",\"back\":\"back__1Lg8P\",\"signinCreateProfile\":\"signinCreateProfile__2Eu4w\",\"emailDisabled\":\"emailDisabled__3xQh-\",\"link\":\"link__2qPe8\",\"nameContainer\":\"nameContainer__2X2T3\",\"deleteButton\":\"deleteButton__2jcdL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"resumeWithoutProfile\":\"resumeWithoutProfile__1eaph\",\"actionContainer\":\"actionContainer__2VouS\",\"actionButton\":\"actionButton__1-VT6\",\"actionLink\":\"actionLink__1JhIN\",\"iconWrapper\":\"iconWrapper__2BP4X\",\"buttonLabel\":\"buttonLabel__zaCRE\",\"large\":\"large__1AU2a\"};","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Channel = exports.StickyContainer = exports.Sticky = undefined;\n\nvar _sticky = require('./sticky');\n\nvar _sticky2 = _interopRequireDefault(_sticky);\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _channel = require('./channel');\n\nvar _channel2 = _interopRequireDefault(_channel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Sticky = _sticky2.default;\nexports.StickyContainer = _container2.default;\nexports.Channel = _channel2.default;\nexports.default = _sticky2.default;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Hls\"] = factory();\n\telse\n\t\troot[\"Hls\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 9);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return enableLogs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return logger; });\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction noop() {}\n\nvar fakeLogger = {\n trace: noop,\n debug: noop,\n log: noop,\n warn: noop,\n info: noop,\n error: noop\n};\n\nvar exportedLogger = fakeLogger;\n\n/* globals self: false */\n\n// let lastCallTime;\n// function formatMsgWithTimeInfo(type, msg) {\n// const now = Date.now();\n// const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';\n// lastCallTime = now;\n// msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';\n// return msg;\n// }\n\nfunction formatMsg(type, msg) {\n msg = '[' + type + '] > ' + msg;\n return msg;\n}\n\nfunction consolePrintFn(type) {\n var func = self.console[type];\n if (func) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args[0]) args[0] = formatMsg(type, args[0]);\n\n func.apply(self.console, args);\n };\n }\n return noop;\n}\n\nfunction exportLoggerFunctions(debugConfig) {\n for (var _len2 = arguments.length, functions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n functions[_key2 - 1] = arguments[_key2];\n }\n\n functions.forEach(function (type) {\n exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n });\n}\n\nvar enableLogs = function enableLogs(debugConfig) {\n if (debugConfig === true || (typeof debugConfig === 'undefined' ? 'undefined' : _typeof(debugConfig)) === 'object') {\n exportLoggerFunctions(debugConfig,\n // Remove out from list here to hard-disable a log-level\n // 'trace',\n 'debug', 'log', 'info', 'warn', 'error');\n // Some browsers don't allow to use bind on console object anyway\n // fallback to default if needed\n try {\n exportedLogger.log();\n } catch (e) {\n exportedLogger = fakeLogger;\n }\n } else {\n exportedLogger = fakeLogger;\n }\n};\n\nvar logger = exportedLogger;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * @readonly\n * @enum {string}\n */\nvar HlsEvents = {\n // fired before MediaSource is attaching to media element - data: { media }\n MEDIA_ATTACHING: 'hlsMediaAttaching',\n // fired when MediaSource has been succesfully attached to media element - data: { }\n MEDIA_ATTACHED: 'hlsMediaAttached',\n // fired before detaching MediaSource from media element - data: { }\n MEDIA_DETACHING: 'hlsMediaDetaching',\n // fired when MediaSource has been detached from media element - data: { }\n MEDIA_DETACHED: 'hlsMediaDetached',\n // fired when we buffer is going to be reset - data: { }\n BUFFER_RESET: 'hlsBufferReset',\n // fired when we know about the codecs that we need buffers for to push into - data: {tracks : { container, codec, levelCodec, initSegment, metadata }}\n BUFFER_CODECS: 'hlsBufferCodecs',\n // fired when sourcebuffers have been created - data: { tracks : tracks }\n BUFFER_CREATED: 'hlsBufferCreated',\n // fired when we append a segment to the buffer - data: { segment: segment object }\n BUFFER_APPENDING: 'hlsBufferAppending',\n // fired when we are done with appending a media segment to the buffer - data : { parent : segment parent that triggered BUFFER_APPENDING, pending : nb of segments waiting for appending for this segment parent}\n BUFFER_APPENDED: 'hlsBufferAppended',\n // fired when the stream is finished and we want to notify the media buffer that there will be no more data - data: { }\n BUFFER_EOS: 'hlsBufferEos',\n // fired when the media buffer should be flushed - data { startOffset, endOffset }\n BUFFER_FLUSHING: 'hlsBufferFlushing',\n // fired when the media buffer has been flushed - data: { }\n BUFFER_FLUSHED: 'hlsBufferFlushed',\n // fired to signal that a manifest loading starts - data: { url : manifestURL}\n MANIFEST_LOADING: 'hlsManifestLoading',\n // fired after manifest has been loaded - data: { levels : [available quality levels], audioTracks : [ available audio tracks], url : manifestURL, stats : { trequest, tfirst, tload, mtime}}\n MANIFEST_LOADED: 'hlsManifestLoaded',\n // fired after manifest has been parsed - data: { levels : [available quality levels], firstLevel : index of first quality level appearing in Manifest}\n MANIFEST_PARSED: 'hlsManifestParsed',\n // fired when a level switch is requested - data: { level : id of new level }\n LEVEL_SWITCHING: 'hlsLevelSwitching',\n // fired when a level switch is effective - data: { level : id of new level }\n LEVEL_SWITCHED: 'hlsLevelSwitched',\n // fired when a level playlist loading starts - data: { url : level URL, level : id of level being loaded}\n LEVEL_LOADING: 'hlsLevelLoading',\n // fired when a level playlist loading finishes - data: { details : levelDetails object, level : id of loaded level, stats : { trequest, tfirst, tload, mtime} }\n LEVEL_LOADED: 'hlsLevelLoaded',\n // fired when a level's details have been updated based on previous details, after it has been loaded - data: { details : levelDetails object, level : id of updated level }\n LEVEL_UPDATED: 'hlsLevelUpdated',\n // fired when a level's PTS information has been updated after parsing a fragment - data: { details : levelDetails object, level : id of updated level, drift: PTS drift observed when parsing last fragment }\n LEVEL_PTS_UPDATED: 'hlsLevelPtsUpdated',\n // fired to notify that audio track lists has been updated - data: { audioTracks : audioTracks }\n AUDIO_TRACKS_UPDATED: 'hlsAudioTracksUpdated',\n // fired when an audio track switching is requested - data: { id : audio track id }\n AUDIO_TRACK_SWITCHING: 'hlsAudioTrackSwitching',\n // fired when an audio track switch actually occurs - data: { id : audio track id }\n AUDIO_TRACK_SWITCHED: 'hlsAudioTrackSwitched',\n // fired when an audio track loading starts - data: { url : audio track URL, id : audio track id }\n AUDIO_TRACK_LOADING: 'hlsAudioTrackLoading',\n // fired when an audio track loading finishes - data: { details : levelDetails object, id : audio track id, stats : { trequest, tfirst, tload, mtime } }\n AUDIO_TRACK_LOADED: 'hlsAudioTrackLoaded',\n // fired to notify that subtitle track lists has been updated - data: { subtitleTracks : subtitleTracks }\n SUBTITLE_TRACKS_UPDATED: 'hlsSubtitleTracksUpdated',\n // fired when an subtitle track switch occurs - data: { id : subtitle track id }\n SUBTITLE_TRACK_SWITCH: 'hlsSubtitleTrackSwitch',\n // fired when a subtitle track loading starts - data: { url : subtitle track URL, id : subtitle track id }\n SUBTITLE_TRACK_LOADING: 'hlsSubtitleTrackLoading',\n // fired when a subtitle track loading finishes - data: { details : levelDetails object, id : subtitle track id, stats : { trequest, tfirst, tload, mtime } }\n SUBTITLE_TRACK_LOADED: 'hlsSubtitleTrackLoaded',\n // fired when a subtitle fragment has been processed - data: { success : boolean, frag : the processed frag }\n SUBTITLE_FRAG_PROCESSED: 'hlsSubtitleFragProcessed',\n // fired when the first timestamp is found - data: { id : demuxer id, initPTS: initPTS, frag : fragment object }\n INIT_PTS_FOUND: 'hlsInitPtsFound',\n // fired when a fragment loading starts - data: { frag : fragment object }\n FRAG_LOADING: 'hlsFragLoading',\n // fired when a fragment loading is progressing - data: { frag : fragment object, { trequest, tfirst, loaded } }\n FRAG_LOAD_PROGRESS: 'hlsFragLoadProgress',\n // Identifier for fragment load aborting for emergency switch down - data: { frag : fragment object }\n FRAG_LOAD_EMERGENCY_ABORTED: 'hlsFragLoadEmergencyAborted',\n // fired when a fragment loading is completed - data: { frag : fragment object, payload : fragment payload, stats : { trequest, tfirst, tload, length } }\n FRAG_LOADED: 'hlsFragLoaded',\n // fired when a fragment has finished decrypting - data: { id : demuxer id, frag: fragment object, payload : fragment payload, stats : { tstart, tdecrypt } }\n FRAG_DECRYPTED: 'hlsFragDecrypted',\n // fired when Init Segment has been extracted from fragment - data: { id : demuxer id, frag: fragment object, moov : moov MP4 box, codecs : codecs found while parsing fragment }\n FRAG_PARSING_INIT_SEGMENT: 'hlsFragParsingInitSegment',\n // fired when parsing sei text is completed - data: { id : demuxer id, frag: fragment object, samples : [ sei samples pes ] }\n FRAG_PARSING_USERDATA: 'hlsFragParsingUserdata',\n // fired when parsing id3 is completed - data: { id : demuxer id, frag: fragment object, samples : [ id3 samples pes ] }\n FRAG_PARSING_METADATA: 'hlsFragParsingMetadata',\n // fired when data have been extracted from fragment - data: { id : demuxer id, frag: fragment object, data1 : moof MP4 box or TS fragments, data2 : mdat MP4 box or null}\n FRAG_PARSING_DATA: 'hlsFragParsingData',\n // fired when fragment parsing is completed - data: { id : demuxer id, frag: fragment object }\n FRAG_PARSED: 'hlsFragParsed',\n // fired when fragment remuxed MP4 boxes have all been appended into SourceBuffer - data: { id : demuxer id, frag : fragment object, stats : { trequest, tfirst, tload, tparsed, tbuffered, length, bwEstimate } }\n FRAG_BUFFERED: 'hlsFragBuffered',\n // fired when fragment matching with current media position is changing - data : { id : demuxer id, frag : fragment object }\n FRAG_CHANGED: 'hlsFragChanged',\n // Identifier for a FPS drop event - data: { curentDropped, currentDecoded, totalDroppedFrames }\n FPS_DROP: 'hlsFpsDrop',\n // triggered when FPS drop triggers auto level capping - data: { level, droppedlevel }\n FPS_DROP_LEVEL_CAPPING: 'hlsFpsDropLevelCapping',\n // Identifier for an error event - data: { type : error type, details : error details, fatal : if true, hls.js cannot/will not try to recover, if false, hls.js will try to recover,other error specific data }\n ERROR: 'hlsError',\n // fired when hls.js instance starts destroying. Different from MEDIA_DETACHED as one could want to detach and reattach a media to the instance of hls.js to handle mid-rolls for example - data: { }\n DESTROYING: 'hlsDestroying',\n // fired when a decrypt key loading starts - data: { frag : fragment object }\n KEY_LOADING: 'hlsKeyLoading',\n // fired when a decrypt key loading is completed - data: { frag : fragment object, payload : key payload, stats : { trequest, tfirst, tload, length } }\n KEY_LOADED: 'hlsKeyLoaded',\n // fired upon stream controller state transitions - data: { previousState, nextState }\n STREAM_STATE_TRANSITION: 'hlsStreamStateTransition'\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (HlsEvents);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return ErrorTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ErrorDetails; });\nvar ErrorTypes = {\n // Identifier for a network error (loading error / timeout ...)\n NETWORK_ERROR: 'networkError',\n // Identifier for a media Error (video/parsing/mediasource error)\n MEDIA_ERROR: 'mediaError',\n // EME (encrypted media extensions) errors\n KEY_SYSTEM_ERROR: 'keySystemError',\n // Identifier for a mux Error (demuxing/remuxing)\n MUX_ERROR: 'muxError',\n // Identifier for all other errors\n OTHER_ERROR: 'otherError'\n};\n\n/**\n * @enum {ErrorDetails}\n * @typedef {string} ErrorDetail\n */\nvar ErrorDetails = {\n KEY_SYSTEM_NO_KEYS: 'keySystemNoKeys',\n KEY_SYSTEM_NO_ACCESS: 'keySystemNoAccess',\n KEY_SYSTEM_NO_SESSION: 'keySystemNoSession',\n KEY_SYSTEM_LICENSE_REQUEST_FAILED: 'keySystemLicenseRequestFailed',\n // Identifier for a manifest load error - data: { url : faulty URL, response : { code: error code, text: error text }}\n MANIFEST_LOAD_ERROR: 'manifestLoadError',\n // Identifier for a manifest load timeout - data: { url : faulty URL, response : { code: error code, text: error text }}\n MANIFEST_LOAD_TIMEOUT: 'manifestLoadTimeOut',\n // Identifier for a manifest parsing error - data: { url : faulty URL, reason : error reason}\n MANIFEST_PARSING_ERROR: 'manifestParsingError',\n // Identifier for a manifest with only incompatible codecs error - data: { url : faulty URL, reason : error reason}\n MANIFEST_INCOMPATIBLE_CODECS_ERROR: 'manifestIncompatibleCodecsError',\n // Identifier for a level load error - data: { url : faulty URL, response : { code: error code, text: error text }}\n LEVEL_LOAD_ERROR: 'levelLoadError',\n // Identifier for a level load timeout - data: { url : faulty URL, response : { code: error code, text: error text }}\n LEVEL_LOAD_TIMEOUT: 'levelLoadTimeOut',\n // Identifier for a level switch error - data: { level : faulty level Id, event : error description}\n LEVEL_SWITCH_ERROR: 'levelSwitchError',\n // Identifier for an audio track load error - data: { url : faulty URL, response : { code: error code, text: error text }}\n AUDIO_TRACK_LOAD_ERROR: 'audioTrackLoadError',\n // Identifier for an audio track load timeout - data: { url : faulty URL, response : { code: error code, text: error text }}\n AUDIO_TRACK_LOAD_TIMEOUT: 'audioTrackLoadTimeOut',\n // Identifier for fragment load error - data: { frag : fragment object, response : { code: error code, text: error text }}\n FRAG_LOAD_ERROR: 'fragLoadError',\n // Identifier for fragment load timeout error - data: { frag : fragment object}\n FRAG_LOAD_TIMEOUT: 'fragLoadTimeOut',\n // Identifier for a fragment decryption error event - data: {id : demuxer Id,frag: fragment object, reason : parsing error description }\n FRAG_DECRYPT_ERROR: 'fragDecryptError',\n // Identifier for a fragment parsing error event - data: { id : demuxer Id, reason : parsing error description }\n // will be renamed DEMUX_PARSING_ERROR and switched to MUX_ERROR in the next major release\n FRAG_PARSING_ERROR: 'fragParsingError',\n // Identifier for a remux alloc error event - data: { id : demuxer Id, frag : fragment object, bytes : nb of bytes on which allocation failed , reason : error text }\n REMUX_ALLOC_ERROR: 'remuxAllocError',\n // Identifier for decrypt key load error - data: { frag : fragment object, response : { code: error code, text: error text }}\n KEY_LOAD_ERROR: 'keyLoadError',\n // Identifier for decrypt key load timeout error - data: { frag : fragment object}\n KEY_LOAD_TIMEOUT: 'keyLoadTimeOut',\n // Triggered when an exception occurs while adding a sourceBuffer to MediaSource - data : { err : exception , mimeType : mimeType }\n BUFFER_ADD_CODEC_ERROR: 'bufferAddCodecError',\n // Identifier for a buffer append error - data: append error description\n BUFFER_APPEND_ERROR: 'bufferAppendError',\n // Identifier for a buffer appending error event - data: appending error description\n BUFFER_APPENDING_ERROR: 'bufferAppendingError',\n // Identifier for a buffer stalled error event\n BUFFER_STALLED_ERROR: 'bufferStalledError',\n // Identifier for a buffer full event\n BUFFER_FULL_ERROR: 'bufferFullError',\n // Identifier for a buffer seek over hole event\n BUFFER_SEEK_OVER_HOLE: 'bufferSeekOverHole',\n // Identifier for a buffer nudge on stall (playback is stuck although currentTime is in a buffered area)\n BUFFER_NUDGE_ON_STALL: 'bufferNudgeOnStall',\n // Identifier for an internal exception happening inside hls.js while handling an event\n INTERNAL_EXCEPTION: 'internalException'\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// see https://tools.ietf.org/html/rfc1808\r\n\r\n/* jshint ignore:start */\r\n(function(root) { \r\n/* jshint ignore:end */\r\n\r\n var URL_REGEX = /^((?:[a-zA-Z0-9+\\-.]+:)?)(\\/\\/[^\\/\\;?#]*)?(.*?)??(;.*?)?(\\?.*?)?(#.*?)?$/;\r\n var FIRST_SEGMENT_REGEX = /^([^\\/;?#]*)(.*)$/;\r\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\r\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/).*?(?=\\/)/g;\r\n\r\n var URLToolkit = { // jshint ignore:line\r\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\r\n // E.g\r\n // With opts.alwaysNormalize = false (default, spec compliant)\r\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\r\n // With opts.alwaysNormalize = true (not spec compliant)\r\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\r\n buildAbsoluteURL: function(baseURL, relativeURL, opts) {\r\n opts = opts || {};\r\n // remove any remaining space and CRLF\r\n baseURL = baseURL.trim();\r\n relativeURL = relativeURL.trim();\r\n if (!relativeURL) {\r\n // 2a) If the embedded URL is entirely empty, it inherits the\r\n // entire base URL (i.e., is set equal to the base URL)\r\n // and we are done.\r\n if (!opts.alwaysNormalize) {\r\n return baseURL;\r\n }\r\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\r\n if (!basePartsForNormalise) {\r\n throw new Error('Error trying to parse base URL.');\r\n }\r\n basePartsForNormalise.path = URLToolkit.normalizePath(basePartsForNormalise.path);\r\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\r\n }\r\n var relativeParts = URLToolkit.parseURL(relativeURL);\r\n if (!relativeParts) {\r\n throw new Error('Error trying to parse relative URL.');\r\n }\r\n if (relativeParts.scheme) {\r\n // 2b) If the embedded URL starts with a scheme name, it is\r\n // interpreted as an absolute URL and we are done.\r\n if (!opts.alwaysNormalize) {\r\n return relativeURL;\r\n }\r\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\r\n return URLToolkit.buildURLFromParts(relativeParts);\r\n }\r\n var baseParts = URLToolkit.parseURL(baseURL);\r\n if (!baseParts) {\r\n throw new Error('Error trying to parse base URL.');\r\n }\r\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\r\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\r\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\r\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\r\n baseParts.netLoc = pathParts[1];\r\n baseParts.path = pathParts[2];\r\n }\r\n if (baseParts.netLoc && !baseParts.path) {\r\n baseParts.path = '/';\r\n }\r\n var builtParts = {\r\n // 2c) Otherwise, the embedded URL inherits the scheme of\r\n // the base URL.\r\n scheme: baseParts.scheme,\r\n netLoc: relativeParts.netLoc,\r\n path: null,\r\n params: relativeParts.params,\r\n query: relativeParts.query,\r\n fragment: relativeParts.fragment\r\n };\r\n if (!relativeParts.netLoc) {\r\n // 3) If the embedded URL's is non-empty, we skip to\r\n // Step 7. Otherwise, the embedded URL inherits the \r\n // (if any) of the base URL.\r\n builtParts.netLoc = baseParts.netLoc;\r\n // 4) If the embedded URL path is preceded by a slash \"/\", the\r\n // path is not relative and we skip to Step 7.\r\n if (relativeParts.path[0] !== '/') {\r\n if (!relativeParts.path) {\r\n // 5) If the embedded URL path is empty (and not preceded by a\r\n // slash), then the embedded URL inherits the base URL path\r\n builtParts.path = baseParts.path;\r\n // 5a) if the embedded URL's is non-empty, we skip to\r\n // step 7; otherwise, it inherits the of the base\r\n // URL (if any) and\r\n if (!relativeParts.params) {\r\n builtParts.params = baseParts.params;\r\n // 5b) if the embedded URL's is non-empty, we skip to\r\n // step 7; otherwise, it inherits the of the base\r\n // URL (if any) and we skip to step 7.\r\n if (!relativeParts.query) {\r\n builtParts.query = baseParts.query;\r\n }\r\n }\r\n } else {\r\n // 6) The last segment of the base URL's path (anything\r\n // following the rightmost slash \"/\", or the entire path if no\r\n // slash is present) is removed and the embedded URL's path is\r\n // appended in its place.\r\n var baseURLPath = baseParts.path;\r\n var newPath = baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) + relativeParts.path;\r\n builtParts.path = URLToolkit.normalizePath(newPath);\r\n }\r\n }\r\n }\r\n if (builtParts.path === null) {\r\n builtParts.path = opts.alwaysNormalize ? URLToolkit.normalizePath(relativeParts.path) : relativeParts.path;\r\n }\r\n return URLToolkit.buildURLFromParts(builtParts);\r\n },\r\n parseURL: function(url) {\r\n var parts = URL_REGEX.exec(url);\r\n if (!parts) {\r\n return null;\r\n }\r\n return {\r\n scheme: parts[1] || '',\r\n netLoc: parts[2] || '',\r\n path: parts[3] || '',\r\n params: parts[4] || '',\r\n query: parts[5] || '',\r\n fragment: parts[6] || ''\r\n };\r\n },\r\n normalizePath: function(path) {\r\n // The following operations are\r\n // then applied, in order, to the new path:\r\n // 6a) All occurrences of \"./\", where \".\" is a complete path\r\n // segment, are removed.\r\n // 6b) If the path ends with \".\" as a complete path segment,\r\n // that \".\" is removed.\r\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\r\n // 6c) All occurrences of \"/../\", where is a\r\n // complete path segment not equal to \"..\", are removed.\r\n // Removal of these path segments is performed iteratively,\r\n // removing the leftmost matching pattern on each iteration,\r\n // until no matching pattern remains.\r\n // 6d) If the path ends with \"/..\", where is a\r\n // complete path segment not equal to \"..\", that\r\n // \"/..\" is removed.\r\n while (path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length) {} // jshint ignore:line\r\n return path.split('').reverse().join('');\r\n },\r\n buildURLFromParts: function(parts) {\r\n return parts.scheme + parts.netLoc + parts.path + parts.params + parts.query + parts.fragment;\r\n }\r\n };\r\n\r\n/* jshint ignore:start */\r\n if(true)\r\n module.exports = URLToolkit;\r\n else if(typeof define === 'function' && define.amd)\r\n define([], function() { return URLToolkit; });\r\n else if(typeof exports === 'object')\r\n exports[\"URLToolkit\"] = URLToolkit;\r\n else\r\n root[\"URLToolkit\"] = URLToolkit;\r\n})(this);\r\n/* jshint ignore:end */\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return utf8ArrayToStr; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * ID3 parser\n */\nvar ID3 = function () {\n function ID3() {\n _classCallCheck(this, ID3);\n }\n\n /**\n * Returns true if an ID3 header can be found at offset in data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {boolean} - True if an ID3 header is found\n */\n ID3.isHeader = function isHeader(data, offset) {\n /*\n * http://id3.org/id3v2.3.0\n * [0] = 'I'\n * [1] = 'D'\n * [2] = '3'\n * [3,4] = {Version}\n * [5] = {Flags}\n * [6-9] = {ID3 Size}\n *\n * An ID3v2 tag can be detected with the following pattern:\n * $49 44 33 yy yy xx zz zz zz zz\n * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80\n */\n if (offset + 10 <= data.length) {\n // look for 'ID3' identifier\n if (data[offset] === 0x49 && data[offset + 1] === 0x44 && data[offset + 2] === 0x33) {\n // check version is within range\n if (data[offset + 3] < 0xFF && data[offset + 4] < 0xFF) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) return true;\n }\n }\n }\n\n return false;\n };\n\n /**\n * Returns true if an ID3 footer can be found at offset in data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {boolean} - True if an ID3 footer is found\n */\n\n\n ID3.isFooter = function isFooter(data, offset) {\n /*\n * The footer is a copy of the header, but with a different identifier\n */\n if (offset + 10 <= data.length) {\n // look for '3DI' identifier\n if (data[offset] === 0x33 && data[offset + 1] === 0x44 && data[offset + 2] === 0x49) {\n // check version is within range\n if (data[offset + 3] < 0xFF && data[offset + 4] < 0xFF) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) return true;\n }\n }\n }\n\n return false;\n };\n\n /**\n * Returns any adjacent ID3 tags found in data starting at offset, as one block of data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {Uint8Array} - The block of data containing any ID3 tags found\n */\n\n\n ID3.getID3Data = function getID3Data(data, offset) {\n var front = offset;\n var length = 0;\n\n while (ID3.isHeader(data, offset)) {\n // ID3 header is 10 bytes\n length += 10;\n\n var size = ID3._readSize(data, offset + 6);\n length += size;\n\n if (ID3.isFooter(data, offset + 10)) {\n // ID3 footer is 10 bytes\n length += 10;\n }\n\n offset += length;\n }\n\n if (length > 0) return data.subarray(front, front + length);\n\n return undefined;\n };\n\n ID3._readSize = function _readSize(data, offset) {\n var size = 0;\n size = (data[offset] & 0x7f) << 21;\n size |= (data[offset + 1] & 0x7f) << 14;\n size |= (data[offset + 2] & 0x7f) << 7;\n size |= data[offset + 3] & 0x7f;\n return size;\n };\n\n /**\n * Searches for the Elementary Stream timestamp found in the ID3 data chunk\n * @param {Uint8Array} data - Block of data containing one or more ID3 tags\n * @return {number} - The timestamp\n */\n\n\n ID3.getTimeStamp = function getTimeStamp(data) {\n var frames = ID3.getID3Frames(data);\n for (var i = 0; i < frames.length; i++) {\n var frame = frames[i];\n if (ID3.isTimeStampFrame(frame)) return ID3._readTimeStamp(frame);\n }\n\n return undefined;\n };\n\n /**\n * Returns true if the ID3 frame is an Elementary Stream timestamp frame\n * @param {ID3 frame} frame\n */\n\n\n ID3.isTimeStampFrame = function isTimeStampFrame(frame) {\n return frame && frame.key === 'PRIV' && frame.info === 'com.apple.streaming.transportStreamTimestamp';\n };\n\n ID3._getFrameData = function _getFrameData(data) {\n /*\n Frame ID $xx xx xx xx (four characters)\n Size $xx xx xx xx\n Flags $xx xx\n */\n var type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n var size = ID3._readSize(data, 4);\n\n // skip frame id, size, and flags\n var offset = 10;\n\n return { type: type, size: size, data: data.subarray(offset, offset + size) };\n };\n\n /**\n * Returns an array of ID3 frames found in all the ID3 tags in the id3Data\n * @param {Uint8Array} id3Data - The ID3 data containing one or more ID3 tags\n * @return {ID3 frame[]} - Array of ID3 frame objects\n */\n\n\n ID3.getID3Frames = function getID3Frames(id3Data) {\n var offset = 0;\n var frames = [];\n\n while (ID3.isHeader(id3Data, offset)) {\n var size = ID3._readSize(id3Data, offset + 6);\n // skip past ID3 header\n offset += 10;\n var end = offset + size;\n // loop through frames in the ID3 tag\n while (offset + 8 < end) {\n var frameData = ID3._getFrameData(id3Data.subarray(offset));\n var frame = ID3._decodeFrame(frameData);\n if (frame) frames.push(frame);\n\n // skip frame header and frame data\n offset += frameData.size + 10;\n }\n\n if (ID3.isFooter(id3Data, offset)) offset += 10;\n }\n\n return frames;\n };\n\n ID3._decodeFrame = function _decodeFrame(frame) {\n if (frame.type === 'PRIV') return ID3._decodePrivFrame(frame);else if (frame.type[0] === 'T') return ID3._decodeTextFrame(frame);else if (frame.type[0] === 'W') return ID3._decodeURLFrame(frame);\n\n return undefined;\n };\n\n ID3._readTimeStamp = function _readTimeStamp(timeStampFrame) {\n if (timeStampFrame.data.byteLength === 8) {\n var data = new Uint8Array(timeStampFrame.data);\n // timestamp is 33 bit expressed as a big-endian eight-octet number,\n // with the upper 31 bits set to zero.\n var pts33Bit = data[3] & 0x1;\n var timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n timestamp /= 45;\n\n if (pts33Bit) timestamp += 47721858.84; // 2^32 / 90\n\n return Math.round(timestamp);\n }\n\n return undefined;\n };\n\n ID3._decodePrivFrame = function _decodePrivFrame(frame) {\n /*\n Format: \\0\n */\n if (frame.size < 2) return undefined;\n\n var owner = ID3._utf8ArrayToStr(frame.data, true);\n var privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n\n return { key: frame.type, info: owner, data: privateData.buffer };\n };\n\n ID3._decodeTextFrame = function _decodeTextFrame(frame) {\n if (frame.size < 2) return undefined;\n\n if (frame.type === 'TXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{Value}\n */\n var index = 1;\n var description = ID3._utf8ArrayToStr(frame.data.subarray(index));\n\n index += description.length + 1;\n var value = ID3._utf8ArrayToStr(frame.data.subarray(index));\n\n return { key: frame.type, info: description, data: value };\n } else {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Value}\n */\n var text = ID3._utf8ArrayToStr(frame.data.subarray(1));\n return { key: frame.type, data: text };\n }\n };\n\n ID3._decodeURLFrame = function _decodeURLFrame(frame) {\n if (frame.type === 'WXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{URL}\n */\n if (frame.size < 2) return undefined;\n\n var index = 1;\n var description = ID3._utf8ArrayToStr(frame.data.subarray(index));\n\n index += description.length + 1;\n var value = ID3._utf8ArrayToStr(frame.data.subarray(index));\n\n return { key: frame.type, info: description, data: value };\n } else {\n /*\n Format:\n [0-?] = {URL}\n */\n var url = ID3._utf8ArrayToStr(frame.data);\n return { key: frame.type, data: url };\n }\n };\n\n // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197\n // http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\n /* utf.js - UTF-8 <=> UTF-16 convertion\n *\n * Copyright (C) 1999 Masanao Izumo \n * Version: 1.0\n * LastModified: Dec 25 1999\n * This library is free. You can redistribute it and/or modify it.\n */\n\n\n ID3._utf8ArrayToStr = function _utf8ArrayToStr(array) {\n var exitOnNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var len = array.length;\n var c = void 0;\n var char2 = void 0;\n var char3 = void 0;\n var out = '';\n var i = 0;\n while (i < len) {\n c = array[i++];\n if (c === 0x00 && exitOnNull) {\n return out;\n } else if (c === 0x00 || c === 0x03) {\n // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it\n continue;\n }\n switch (c >> 4) {\n case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c);\n break;\n case 12:case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++];\n out += String.fromCharCode((c & 0x1F) << 6 | char2 & 0x3F);\n break;\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++];\n char3 = array[i++];\n out += String.fromCharCode((c & 0x0F) << 12 | (char2 & 0x3F) << 6 | (char3 & 0x3F) << 0);\n break;\n default:\n }\n }\n return out;\n };\n\n return ID3;\n}();\n\nvar utf8ArrayToStr = ID3._utf8ArrayToStr;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (ID3);\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./src/crypt/aes-crypto.js\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AESCrypto = function () {\n function AESCrypto(subtle, iv) {\n _classCallCheck(this, AESCrypto);\n\n this.subtle = subtle;\n this.aesIV = iv;\n }\n\n AESCrypto.prototype.decrypt = function decrypt(data, key) {\n return this.subtle.decrypt({ name: 'AES-CBC', iv: this.aesIV }, key, data);\n };\n\n return AESCrypto;\n}();\n\n/* harmony default export */ var aes_crypto = (AESCrypto);\n// CONCATENATED MODULE: ./src/crypt/fast-aes-key.js\nfunction fast_aes_key__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FastAESKey = function () {\n function FastAESKey(subtle, key) {\n fast_aes_key__classCallCheck(this, FastAESKey);\n\n this.subtle = subtle;\n this.key = key;\n }\n\n FastAESKey.prototype.expandKey = function expandKey() {\n return this.subtle.importKey('raw', this.key, { name: 'AES-CBC' }, false, ['encrypt', 'decrypt']);\n };\n\n return FastAESKey;\n}();\n\n/* harmony default export */ var fast_aes_key = (FastAESKey);\n// CONCATENATED MODULE: ./src/crypt/aes-decryptor.js\nfunction aes_decryptor__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// PKCS7\nfunction removePadding(buffer) {\n var outputBytes = buffer.byteLength;\n var paddingBytes = outputBytes && new DataView(buffer).getUint8(outputBytes - 1);\n if (paddingBytes) return buffer.slice(0, outputBytes - paddingBytes);else return buffer;\n}\n\nvar AESDecryptor = function () {\n function AESDecryptor() {\n aes_decryptor__classCallCheck(this, AESDecryptor);\n\n // Static after running initTable\n this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.sBox = new Uint32Array(256);\n this.invSBox = new Uint32Array(256);\n\n // Changes during runtime\n this.key = new Uint32Array(0);\n\n this.initTable();\n }\n\n // Using view.getUint32() also swaps the byte order.\n\n\n AESDecryptor.prototype.uint8ArrayToUint32Array_ = function uint8ArrayToUint32Array_(arrayBuffer) {\n var view = new DataView(arrayBuffer);\n var newArray = new Uint32Array(4);\n for (var i = 0; i < 4; i++) {\n newArray[i] = view.getUint32(i * 4);\n }return newArray;\n };\n\n AESDecryptor.prototype.initTable = function initTable() {\n var sBox = this.sBox;\n var invSBox = this.invSBox;\n var subMix = this.subMix;\n var subMix0 = subMix[0];\n var subMix1 = subMix[1];\n var subMix2 = subMix[2];\n var subMix3 = subMix[3];\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n\n var d = new Uint32Array(256);\n var x = 0;\n var xi = 0;\n var i = 0;\n for (i = 0; i < 256; i++) {\n if (i < 128) d[i] = i << 1;else d[i] = i << 1 ^ 0x11b;\n }\n\n for (i = 0; i < 256; i++) {\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n sBox[x] = sx;\n invSBox[sx] = x;\n\n // Compute multiplication\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4];\n\n // Compute sub/invSub bytes, mix columns tables\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n subMix0[x] = t << 24 | t >>> 8;\n subMix1[x] = t << 16 | t >>> 16;\n subMix2[x] = t << 8 | t >>> 24;\n subMix3[x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n invSubMix0[sx] = t << 24 | t >>> 8;\n invSubMix1[sx] = t << 16 | t >>> 16;\n invSubMix2[sx] = t << 8 | t >>> 24;\n invSubMix3[sx] = t;\n\n // Compute next counter\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n };\n\n AESDecryptor.prototype.expandKey = function expandKey(keyBuffer) {\n // convert keyBuffer to Uint32Array\n var key = this.uint8ArrayToUint32Array_(keyBuffer);\n var sameKey = true;\n var offset = 0;\n\n while (offset < key.length && sameKey) {\n sameKey = key[offset] === this.key[offset];\n offset++;\n }\n\n if (sameKey) return;\n\n this.key = key;\n var keySize = this.keySize = key.length;\n\n if (keySize !== 4 && keySize !== 6 && keySize !== 8) throw new Error('Invalid aes key size=' + keySize);\n\n var ksRows = this.ksRows = (keySize + 6 + 1) * 4;\n var ksRow = void 0;\n var invKsRow = void 0;\n\n var keySchedule = this.keySchedule = new Uint32Array(ksRows);\n var invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);\n var sbox = this.sBox;\n var rcon = this.rcon;\n\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n\n var prev = void 0;\n var t = void 0;\n\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n prev = keySchedule[ksRow] = key[ksRow];\n continue;\n }\n t = prev;\n\n if (ksRow % keySize === 0) {\n // Rot word\n t = t << 8 | t >>> 24;\n\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n\n // Mix Rcon\n t ^= rcon[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n }\n\n keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0;\n }\n\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow;\n if (invKsRow & 3) t = keySchedule[ksRow];else t = keySchedule[ksRow - 4];\n\n if (invKsRow < 4 || ksRow <= 4) invKeySchedule[invKsRow] = t;else invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]];\n\n invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n }\n };\n\n // Adding this as a method greatly improves performance.\n\n\n AESDecryptor.prototype.networkToHostOrderSwap = function networkToHostOrderSwap(word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n };\n\n AESDecryptor.prototype.decrypt = function decrypt(inputArrayBuffer, offset, aesIV, removePKCS7Padding) {\n var nRounds = this.keySize + 6;\n var invKeySchedule = this.invKeySchedule;\n var invSBOX = this.invSBox;\n\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n\n var initVector = this.uint8ArrayToUint32Array_(aesIV);\n var initVector0 = initVector[0];\n var initVector1 = initVector[1];\n var initVector2 = initVector[2];\n var initVector3 = initVector[3];\n\n var inputInt32 = new Int32Array(inputArrayBuffer);\n var outputInt32 = new Int32Array(inputInt32.length);\n\n var t0 = void 0,\n t1 = void 0,\n t2 = void 0,\n t3 = void 0;\n var s0 = void 0,\n s1 = void 0,\n s2 = void 0,\n s3 = void 0;\n var inputWords0 = void 0,\n inputWords1 = void 0,\n inputWords2 = void 0,\n inputWords3 = void 0;\n\n var ksRow = void 0,\n i = void 0;\n var swapWord = this.networkToHostOrderSwap;\n\n while (offset < inputInt32.length) {\n inputWords0 = swapWord(inputInt32[offset]);\n inputWords1 = swapWord(inputInt32[offset + 1]);\n inputWords2 = swapWord(inputInt32[offset + 2]);\n inputWords3 = swapWord(inputInt32[offset + 3]);\n\n s0 = inputWords0 ^ invKeySchedule[0];\n s1 = inputWords3 ^ invKeySchedule[1];\n s2 = inputWords2 ^ invKeySchedule[2];\n s3 = inputWords1 ^ invKeySchedule[3];\n\n ksRow = 4;\n\n // Iterate through the rounds of decryption\n for (i = 1; i < nRounds; i++) {\n t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3];\n // Update state\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n\n ksRow = ksRow + 4;\n }\n\n // Shift rows, sub bytes, add round key\n t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3];\n ksRow = ksRow + 3;\n\n // Write\n outputInt32[offset] = swapWord(t0 ^ initVector0);\n outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n outputInt32[offset + 3] = swapWord(t1 ^ initVector3);\n\n // reset initVector to last 4 unsigned int\n initVector0 = inputWords0;\n initVector1 = inputWords1;\n initVector2 = inputWords2;\n initVector3 = inputWords3;\n\n offset = offset + 4;\n }\n\n return removePKCS7Padding ? removePadding(outputInt32.buffer) : outputInt32.buffer;\n };\n\n AESDecryptor.prototype.destroy = function destroy() {\n this.key = undefined;\n this.keySize = undefined;\n this.ksRows = undefined;\n\n this.sBox = undefined;\n this.invSBox = undefined;\n this.subMix = undefined;\n this.invSubMix = undefined;\n this.keySchedule = undefined;\n this.invKeySchedule = undefined;\n\n this.rcon = undefined;\n };\n\n return AESDecryptor;\n}();\n\n/* harmony default export */ var aes_decryptor = (AESDecryptor);\n// EXTERNAL MODULE: ./src/errors.js\nvar errors = __webpack_require__(2);\n\n// EXTERNAL MODULE: ./src/utils/logger.js\nvar logger = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/crypt/decrypter.js\nfunction decrypter__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\n\n\n\n/* globals self: false */\n\nvar decrypter_Decrypter = function () {\n function Decrypter(observer, config) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$removePKCS7Paddi = _ref.removePKCS7Padding,\n removePKCS7Padding = _ref$removePKCS7Paddi === undefined ? true : _ref$removePKCS7Paddi;\n\n decrypter__classCallCheck(this, Decrypter);\n\n this.logEnabled = true;\n this.observer = observer;\n this.config = config;\n this.removePKCS7Padding = removePKCS7Padding;\n // built in decryptor expects PKCS7 padding\n if (removePKCS7Padding) {\n try {\n var browserCrypto = crypto || self.crypto;\n this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n } catch (e) {}\n }\n this.disableWebCrypto = !this.subtle;\n }\n\n Decrypter.prototype.isSync = function isSync() {\n return this.disableWebCrypto && this.config.enableSoftwareAES;\n };\n\n Decrypter.prototype.decrypt = function decrypt(data, key, iv, callback) {\n var _this = this;\n\n if (this.disableWebCrypto && this.config.enableSoftwareAES) {\n if (this.logEnabled) {\n logger[\"b\" /* logger */].log('JS AES decrypt');\n this.logEnabled = false;\n }\n var decryptor = this.decryptor;\n if (!decryptor) this.decryptor = decryptor = new aes_decryptor();\n\n decryptor.expandKey(key);\n callback(decryptor.decrypt(data, 0, iv, this.removePKCS7Padding));\n } else {\n if (this.logEnabled) {\n logger[\"b\" /* logger */].log('WebCrypto AES decrypt');\n this.logEnabled = false;\n }\n var subtle = this.subtle;\n if (this.key !== key) {\n this.key = key;\n this.fastAesKey = new fast_aes_key(subtle, key);\n }\n\n this.fastAesKey.expandKey().then(function (aesKey) {\n // decrypt using web crypto\n var crypto = new aes_crypto(subtle, iv);\n crypto.decrypt(data, aesKey).catch(function (err) {\n _this.onWebCryptoError(err, data, key, iv, callback);\n }).then(function (result) {\n callback(result);\n });\n }).catch(function (err) {\n _this.onWebCryptoError(err, data, key, iv, callback);\n });\n }\n };\n\n Decrypter.prototype.onWebCryptoError = function onWebCryptoError(err, data, key, iv, callback) {\n if (this.config.enableSoftwareAES) {\n logger[\"b\" /* logger */].log('WebCrypto Error, disable WebCrypto API');\n this.disableWebCrypto = true;\n this.logEnabled = true;\n this.decrypt(data, key, iv, callback);\n } else {\n logger[\"b\" /* logger */].error('decrypting error : ' + err.message);\n this.observer.trigger(Event.ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].FRAG_DECRYPT_ERROR, fatal: true, reason: err.message });\n }\n };\n\n Decrypter.prototype.destroy = function destroy() {\n var decryptor = this.decryptor;\n if (decryptor) {\n decryptor.destroy();\n this.decryptor = undefined;\n }\n };\n\n return Decrypter;\n}();\n\n/* harmony default export */ var decrypter = __webpack_exports__[\"a\"] = (decrypter_Decrypter);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_logger__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(1);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * MP4 demuxer\n */\n\n\n\nvar UINT32_MAX = Math.pow(2, 32) - 1;\n\nvar MP4Demuxer = function () {\n function MP4Demuxer(observer, remuxer) {\n _classCallCheck(this, MP4Demuxer);\n\n this.observer = observer;\n this.remuxer = remuxer;\n }\n\n MP4Demuxer.prototype.resetTimeStamp = function resetTimeStamp(initPTS) {\n this.initPTS = initPTS;\n };\n\n MP4Demuxer.prototype.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, duration) {\n // jshint unused:false\n if (initSegment && initSegment.byteLength) {\n var initData = this.initData = MP4Demuxer.parseInitSegment(initSegment);\n\n // default audio codec if nothing specified\n // TODO : extract that from initsegment\n if (audioCodec == null) audioCodec = 'mp4a.40.5';\n\n if (videoCodec == null) videoCodec = 'avc1.42e01e';\n\n var tracks = {};\n if (initData.audio && initData.video) {\n tracks.audiovideo = { container: 'video/mp4', codec: audioCodec + ',' + videoCodec, initSegment: duration ? initSegment : null };\n } else {\n if (initData.audio) tracks.audio = { container: 'audio/mp4', codec: audioCodec, initSegment: duration ? initSegment : null };\n\n if (initData.video) tracks.video = { container: 'video/mp4', codec: videoCodec, initSegment: duration ? initSegment : null };\n }\n this.observer.trigger(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].FRAG_PARSING_INIT_SEGMENT, { tracks: tracks });\n } else {\n if (audioCodec) this.audioCodec = audioCodec;\n\n if (videoCodec) this.videoCodec = videoCodec;\n }\n };\n\n MP4Demuxer.probe = function probe(data) {\n // ensure we find a moof box in the first 16 kB\n return MP4Demuxer.findBox({ data: data, start: 0, end: Math.min(data.length, 16384) }, ['moof']).length > 0;\n };\n\n MP4Demuxer.bin2str = function bin2str(buffer) {\n return String.fromCharCode.apply(null, buffer);\n };\n\n MP4Demuxer.readUint16 = function readUint16(buffer, offset) {\n if (buffer.data) {\n offset += buffer.start;\n buffer = buffer.data;\n }\n\n var val = buffer[offset] << 8 | buffer[offset + 1];\n\n return val < 0 ? 65536 + val : val;\n };\n\n MP4Demuxer.readUint32 = function readUint32(buffer, offset) {\n if (buffer.data) {\n offset += buffer.start;\n buffer = buffer.data;\n }\n\n var val = buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];\n return val < 0 ? 4294967296 + val : val;\n };\n\n MP4Demuxer.writeUint32 = function writeUint32(buffer, offset, value) {\n if (buffer.data) {\n offset += buffer.start;\n buffer = buffer.data;\n }\n buffer[offset] = value >> 24;\n buffer[offset + 1] = value >> 16 & 0xff;\n buffer[offset + 2] = value >> 8 & 0xff;\n buffer[offset + 3] = value & 0xff;\n };\n\n // Find the data for a box specified by its path\n\n\n MP4Demuxer.findBox = function findBox(data, path) {\n var results = [],\n i = void 0,\n size = void 0,\n type = void 0,\n end = void 0,\n subresults = void 0,\n start = void 0,\n endbox = void 0;\n\n if (data.data) {\n start = data.start;\n end = data.end;\n data = data.data;\n } else {\n start = 0;\n end = data.byteLength;\n }\n\n if (!path.length) {\n // short-circuit the search for empty paths\n return null;\n }\n\n for (i = start; i < end;) {\n size = MP4Demuxer.readUint32(data, i);\n type = MP4Demuxer.bin2str(data.subarray(i + 4, i + 8));\n endbox = size > 1 ? i + size : end;\n\n if (type === path[0]) {\n if (path.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push({ data: data, start: i + 8, end: endbox });\n } else {\n // recursively search for the next box along the path\n subresults = MP4Demuxer.findBox({ data: data, start: i + 8, end: endbox }, path.slice(1));\n if (subresults.length) results = results.concat(subresults);\n }\n }\n i = endbox;\n }\n\n // we've finished searching all of data\n return results;\n };\n\n MP4Demuxer.parseSegmentIndex = function parseSegmentIndex(initSegment) {\n var moov = MP4Demuxer.findBox(initSegment, ['moov'])[0];\n var moovEndOffset = moov ? moov.end : null; // we need this in case we need to chop of garbage of the end of current data\n\n var index = 0;\n var sidx = MP4Demuxer.findBox(initSegment, ['sidx']);\n var references = void 0;\n\n if (!sidx || !sidx[0]) return null;\n\n references = [];\n sidx = sidx[0];\n\n var version = sidx.data[0];\n\n // set initial offset, we skip the reference ID (not needed)\n index = version === 0 ? 8 : 16;\n\n var timescale = MP4Demuxer.readUint32(sidx, index);\n index += 4;\n\n // TODO: parse earliestPresentationTime and firstOffset\n // usually zero in our case\n var earliestPresentationTime = 0;\n var firstOffset = 0;\n\n if (version === 0) index += 8;else index += 16;\n\n // skip reserved\n index += 2;\n\n var startByte = sidx.end + firstOffset;\n\n var referencesCount = MP4Demuxer.readUint16(sidx, index);\n index += 2;\n\n for (var i = 0; i < referencesCount; i++) {\n var referenceIndex = index;\n\n var referenceInfo = MP4Demuxer.readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n\n var referenceSize = referenceInfo & 0x7FFFFFFF;\n var referenceType = (referenceInfo & 0x80000000) >>> 31;\n\n if (referenceType === 1) {\n console.warn('SIDX has hierarchical references (not supported)');\n return;\n }\n\n var subsegmentDuration = MP4Demuxer.readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n\n references.push({\n referenceSize: referenceSize,\n subsegmentDuration: subsegmentDuration, // unscaled\n info: {\n duration: subsegmentDuration / timescale,\n start: startByte,\n end: startByte + referenceSize - 1\n }\n });\n\n startByte += referenceSize;\n\n // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits\n // for |sapDelta|.\n referenceIndex += 4;\n\n // skip to next ref\n index = referenceIndex;\n }\n\n return {\n earliestPresentationTime: earliestPresentationTime,\n timescale: timescale,\n version: version,\n referencesCount: referencesCount,\n references: references,\n moovEndOffset: moovEndOffset\n };\n };\n\n /**\n * Parses an MP4 initialization segment and extracts stream type and\n * timescale values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * moov > trak > mdia > hdlr\n * ```\n * @param init {Uint8Array} the bytes of the init segment\n * @return {object} a hash of track type to timescale values or null if\n * the init segment is malformed.\n */\n\n\n MP4Demuxer.parseInitSegment = function parseInitSegment(initSegment) {\n var result = [];\n var traks = MP4Demuxer.findBox(initSegment, ['moov', 'trak']);\n\n traks.forEach(function (trak) {\n var tkhd = MP4Demuxer.findBox(trak, ['tkhd'])[0];\n if (tkhd) {\n var version = tkhd.data[tkhd.start];\n var index = version === 0 ? 12 : 20;\n var trackId = MP4Demuxer.readUint32(tkhd, index);\n\n var mdhd = MP4Demuxer.findBox(trak, ['mdia', 'mdhd'])[0];\n if (mdhd) {\n version = mdhd.data[mdhd.start];\n index = version === 0 ? 12 : 20;\n var timescale = MP4Demuxer.readUint32(mdhd, index);\n\n var hdlr = MP4Demuxer.findBox(trak, ['mdia', 'hdlr'])[0];\n if (hdlr) {\n var hdlrType = MP4Demuxer.bin2str(hdlr.data.subarray(hdlr.start + 8, hdlr.start + 12));\n var type = { 'soun': 'audio', 'vide': 'video' }[hdlrType];\n if (type) {\n // extract codec info. TODO : parse codec details to be able to build MIME type\n var codecBox = MP4Demuxer.findBox(trak, ['mdia', 'minf', 'stbl', 'stsd']);\n if (codecBox.length) {\n codecBox = codecBox[0];\n var codecType = MP4Demuxer.bin2str(codecBox.data.subarray(codecBox.start + 12, codecBox.start + 16));\n __WEBPACK_IMPORTED_MODULE_0__utils_logger__[\"b\" /* logger */].log('MP4Demuxer:' + type + ':' + codecType + ' found');\n }\n result[trackId] = { timescale: timescale, type: type };\n result[type] = { timescale: timescale, id: trackId };\n }\n }\n }\n }\n });\n return result;\n };\n\n /**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param timescale {object} a hash of track ids to timescale values.\n * @return {number} the earliest base media decode start time for the\n * fragment, in seconds\n */\n\n\n MP4Demuxer.getStartDTS = function getStartDTS(initData, fragment) {\n var trafs = void 0,\n baseTimes = void 0,\n result = void 0;\n\n // we need info from two childrend of each track fragment box\n trafs = MP4Demuxer.findBox(fragment, ['moof', 'traf']);\n\n // determine the start times for each track\n baseTimes = [].concat.apply([], trafs.map(function (traf) {\n return MP4Demuxer.findBox(traf, ['tfhd']).map(function (tfhd) {\n var id = void 0,\n scale = void 0,\n baseTime = void 0;\n\n // get the track id from the tfhd\n id = MP4Demuxer.readUint32(tfhd, 4);\n // assume a 90kHz clock if no timescale was specified\n scale = initData[id].timescale || 90e3;\n\n // get the base media decode time from the tfdt\n baseTime = MP4Demuxer.findBox(traf, ['tfdt']).map(function (tfdt) {\n var version = void 0,\n result = void 0;\n\n version = tfdt.data[tfdt.start];\n result = MP4Demuxer.readUint32(tfdt, 4);\n if (version === 1) {\n result *= Math.pow(2, 32);\n\n result += MP4Demuxer.readUint32(tfdt, 8);\n }\n return result;\n })[0];\n // convert base time to seconds\n return baseTime / scale;\n });\n }));\n\n // return the minimum\n result = Math.min.apply(null, baseTimes);\n return isFinite(result) ? result : 0;\n };\n\n MP4Demuxer.offsetStartDTS = function offsetStartDTS(initData, fragment, timeOffset) {\n MP4Demuxer.findBox(fragment, ['moof', 'traf']).map(function (traf) {\n return MP4Demuxer.findBox(traf, ['tfhd']).map(function (tfhd) {\n // get the track id from the tfhd\n var id = MP4Demuxer.readUint32(tfhd, 4);\n // assume a 90kHz clock if no timescale was specified\n var timescale = initData[id].timescale || 90e3;\n\n // get the base media decode time from the tfdt\n MP4Demuxer.findBox(traf, ['tfdt']).map(function (tfdt) {\n var version = tfdt.data[tfdt.start];\n var baseMediaDecodeTime = MP4Demuxer.readUint32(tfdt, 4);\n if (version === 0) {\n MP4Demuxer.writeUint32(tfdt, 4, baseMediaDecodeTime - timeOffset * timescale);\n } else {\n baseMediaDecodeTime *= Math.pow(2, 32);\n baseMediaDecodeTime += MP4Demuxer.readUint32(tfdt, 8);\n baseMediaDecodeTime -= timeOffset * timescale;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n var upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n var lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n MP4Demuxer.writeUint32(tfdt, 4, upper);\n MP4Demuxer.writeUint32(tfdt, 8, lower);\n }\n });\n });\n });\n };\n\n // feed incoming data to the front of the parsing pipeline\n\n\n MP4Demuxer.prototype.append = function append(data, timeOffset, contiguous, accurateTimeOffset) {\n var initData = this.initData;\n if (!initData) {\n this.resetInitSegment(data, this.audioCodec, this.videoCodec, false);\n initData = this.initData;\n }\n var startDTS = void 0,\n initPTS = this.initPTS;\n if (initPTS === undefined) {\n var _startDTS = MP4Demuxer.getStartDTS(initData, data);\n this.initPTS = initPTS = _startDTS - timeOffset;\n this.observer.trigger(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].INIT_PTS_FOUND, { initPTS: initPTS });\n }\n MP4Demuxer.offsetStartDTS(initData, data, initPTS);\n startDTS = MP4Demuxer.getStartDTS(initData, data);\n this.remuxer.remux(initData.audio, initData.video, null, null, startDTS, contiguous, accurateTimeOffset, data);\n };\n\n MP4Demuxer.prototype.destroy = function destroy() {};\n\n return MP4Demuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MP4Demuxer);\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./src/events.js\nvar events = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./src/errors.js\nvar errors = __webpack_require__(2);\n\n// EXTERNAL MODULE: ./src/crypt/decrypter.js + 3 modules\nvar crypt_decrypter = __webpack_require__(5);\n\n// EXTERNAL MODULE: ./src/utils/logger.js\nvar logger = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/demux/adts.js\n/**\n * ADTS parser helper\n */\n\n\n\nfunction getAudioConfig(observer, data, offset, audioCodec) {\n var adtsObjectType = void 0,\n // :int\n adtsSampleingIndex = void 0,\n // :int\n adtsExtensionSampleingIndex = void 0,\n // :int\n adtsChanelConfig = void 0,\n // :int\n config = void 0,\n userAgent = navigator.userAgent.toLowerCase(),\n manifestCodec = audioCodec,\n adtsSampleingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n // byte 2\n adtsObjectType = ((data[offset + 2] & 0xC0) >>> 6) + 1;\n adtsSampleingIndex = (data[offset + 2] & 0x3C) >>> 2;\n if (adtsSampleingIndex > adtsSampleingRates.length - 1) {\n observer.trigger(Event.ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].FRAG_PARSING_ERROR, fatal: true, reason: 'invalid ADTS sampling index:' + adtsSampleingIndex });\n return;\n }\n adtsChanelConfig = (data[offset + 2] & 0x01) << 2;\n // byte 3\n adtsChanelConfig |= (data[offset + 3] & 0xC0) >>> 6;\n logger[\"b\" /* logger */].log('manifest codec:' + audioCodec + ',ADTS data:type:' + adtsObjectType + ',sampleingIndex:' + adtsSampleingIndex + '[' + adtsSampleingRates[adtsSampleingIndex] + 'Hz],channelConfig:' + adtsChanelConfig);\n // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n if (/firefox/i.test(userAgent)) {\n if (adtsSampleingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4);\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSampleingIndex = adtsSampleingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n }\n // Android : always use AAC\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n } else {\n /* for other browsers (Chrome/Vivaldi/Opera ...)\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n */\n adtsObjectType = 5;\n config = new Array(4);\n // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSampleingIndex >= 6) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSampleingIndex = adtsSampleingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSampleingIndex >= 6 && adtsChanelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChanelConfig === 1) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n Audio Profile / Audio Object Type\n 0: Null\n 1: AAC Main\n 2: AAC LC (Low Complexity)\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: SBR (Spectral Band Replication)\n 6: AAC Scalable\n sampling freq\n 0: 96000 Hz\n 1: 88200 Hz\n 2: 64000 Hz\n 3: 48000 Hz\n 4: 44100 Hz\n 5: 32000 Hz\n 6: 24000 Hz\n 7: 22050 Hz\n 8: 16000 Hz\n 9: 12000 Hz\n 10: 11025 Hz\n 11: 8000 Hz\n 12: 7350 Hz\n 13: Reserved\n 14: Reserved\n 15: frequency is written explictly\n Channel Configurations\n These are the channel configurations:\n 0: Defined in AOT Specifc Config\n 1: 1 channel: front-center\n 2: 2 channels: front-left, front-right\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n config[0] = adtsObjectType << 3;\n // samplingFrequencyIndex\n config[0] |= (adtsSampleingIndex & 0x0E) >> 1;\n config[1] |= (adtsSampleingIndex & 0x01) << 7;\n // channelConfiguration\n config[1] |= adtsChanelConfig << 3;\n if (adtsObjectType === 5) {\n // adtsExtensionSampleingIndex\n config[1] |= (adtsExtensionSampleingIndex & 0x0E) >> 1;\n config[2] = (adtsExtensionSampleingIndex & 0x01) << 7;\n // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n return { config: config, samplerate: adtsSampleingRates[adtsSampleingIndex], channelCount: adtsChanelConfig, codec: 'mp4a.40.' + adtsObjectType, manifestCodec: manifestCodec };\n}\n\nfunction isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n}\n\nfunction getHeaderLength(data, offset) {\n return data[offset + 1] & 0x01 ? 7 : 9;\n}\n\nfunction getFullFrameLength(data, offset) {\n return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xE0) >>> 5;\n}\n\nfunction isHeader(data, offset) {\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) return true;\n\n return false;\n}\n\nfunction adts_probe(data, offset) {\n // same as isHeader but we also check that ADTS frame follows last ADTS frame\n // or end of data is reached\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n // ADTS header Length\n var headerLength = getHeaderLength(data, offset);\n // ADTS frame Length\n var frameLength = headerLength;\n if (offset + 5 < data.length) frameLength = getFullFrameLength(data, offset);\n\n var newOffset = offset + frameLength;\n if (newOffset === data.length || newOffset + 1 < data.length && isHeaderPattern(data, newOffset)) return true;\n }\n return false;\n}\n\nfunction initTrackConfig(track, observer, data, offset, audioCodec) {\n if (!track.samplerate) {\n var config = getAudioConfig(observer, data, offset, audioCodec);\n track.config = config.config;\n track.samplerate = config.samplerate;\n track.channelCount = config.channelCount;\n track.codec = config.codec;\n track.manifestCodec = config.manifestCodec;\n logger[\"b\" /* logger */].log('parsed codec:' + track.codec + ',rate:' + config.samplerate + ',nb channel:' + config.channelCount);\n }\n}\n\nfunction getFrameDuration(samplerate) {\n return 1024 * 90000 / samplerate;\n}\n\nfunction parseFrameHeader(data, offset, pts, frameIndex, frameDuration) {\n var headerLength = void 0,\n frameLength = void 0,\n stamp = void 0;\n var length = data.length;\n\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n headerLength = getHeaderLength(data, offset);\n // retrieve frame size\n frameLength = getFullFrameLength(data, offset);\n frameLength -= headerLength;\n\n if (frameLength > 0 && offset + headerLength + frameLength <= length) {\n stamp = pts + frameIndex * frameDuration;\n // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n return { headerLength: headerLength, frameLength: frameLength, stamp: stamp };\n }\n\n return undefined;\n}\n\nfunction appendFrame(track, data, offset, pts, frameIndex) {\n var frameDuration = getFrameDuration(track.samplerate);\n var header = parseFrameHeader(data, offset, pts, frameIndex, frameDuration);\n if (header) {\n var stamp = header.stamp;\n var headerLength = header.headerLength;\n var frameLength = header.frameLength;\n\n // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n var aacSample = {\n unit: data.subarray(offset + headerLength, offset + headerLength + frameLength),\n pts: stamp,\n dts: stamp\n };\n\n track.samples.push(aacSample);\n track.len += frameLength;\n\n return { sample: aacSample, length: frameLength + headerLength };\n }\n\n return undefined;\n}\n// EXTERNAL MODULE: ./src/demux/id3.js\nvar id3 = __webpack_require__(4);\n\n// CONCATENATED MODULE: ./src/demux/aacdemuxer.js\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * AAC demuxer\n */\n\n\n\n\nvar aacdemuxer_AACDemuxer = function () {\n function AACDemuxer(observer, remuxer, config) {\n _classCallCheck(this, AACDemuxer);\n\n this.observer = observer;\n this.config = config;\n this.remuxer = remuxer;\n }\n\n AACDemuxer.prototype.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, duration) {\n this._audioTrack = { container: 'audio/adts', type: 'audio', id: 0, sequenceNumber: 0, isAAC: true, samples: [], len: 0, manifestCodec: audioCodec, duration: duration, inputTimeScale: 90000 };\n };\n\n AACDemuxer.prototype.resetTimeStamp = function resetTimeStamp() {};\n\n AACDemuxer.probe = function probe(data) {\n if (!data) return false;\n\n // Check for the ADTS sync word\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n var id3Data = id3[\"a\" /* default */].getID3Data(data, 0) || [];\n var offset = id3Data.length;\n\n for (var length = data.length; offset < length; offset++) {\n if (adts_probe(data, offset)) {\n logger[\"b\" /* logger */].log('ADTS sync word found !');\n return true;\n }\n }\n return false;\n };\n\n // feed incoming data to the front of the parsing pipeline\n\n\n AACDemuxer.prototype.append = function append(data, timeOffset, contiguous, accurateTimeOffset) {\n var track = this._audioTrack;\n var id3Data = id3[\"a\" /* default */].getID3Data(data, 0) || [];\n var timestamp = id3[\"a\" /* default */].getTimeStamp(id3Data);\n var pts = timestamp ? 90 * timestamp : timeOffset * 90000;\n var frameIndex = 0;\n var stamp = pts;\n var length = data.length;\n var offset = id3Data.length;\n\n var id3Samples = [{ pts: stamp, dts: stamp, data: id3Data }];\n\n while (offset < length - 1) {\n if (isHeader(data, offset) && offset + 5 < length) {\n initTrackConfig(track, this.observer, data, offset, track.manifestCodec);\n var frame = appendFrame(track, data, offset, pts, frameIndex);\n if (frame) {\n offset += frame.length;\n stamp = frame.sample.pts;\n frameIndex++;\n } else {\n logger[\"b\" /* logger */].log('Unable to parse AAC frame');\n break;\n }\n } else if (id3[\"a\" /* default */].isHeader(data, offset)) {\n id3Data = id3[\"a\" /* default */].getID3Data(data, offset);\n id3Samples.push({ pts: stamp, dts: stamp, data: id3Data });\n offset += id3Data.length;\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n\n this.remuxer.remux(track, { samples: [] }, { samples: id3Samples, inputTimeScale: 90000 }, { samples: [] }, timeOffset, contiguous, accurateTimeOffset);\n };\n\n AACDemuxer.prototype.destroy = function destroy() {};\n\n return AACDemuxer;\n}();\n\n/* harmony default export */ var aacdemuxer = (aacdemuxer_AACDemuxer);\n// EXTERNAL MODULE: ./src/demux/mp4demuxer.js\nvar mp4demuxer = __webpack_require__(7);\n\n// CONCATENATED MODULE: ./src/demux/mpegaudio.js\n/**\n * MPEG parser helper\n */\n\nvar MpegAudio = {\n\n BitratesMap: [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],\n\n SamplingRateMap: [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000],\n\n SamplesCoefficients: [\n // MPEG 2.5\n [0, // Reserved\n 72, // Layer3\n 144, // Layer2\n 12 // Layer1\n ],\n // Reserved\n [0, // Reserved\n 0, // Layer3\n 0, // Layer2\n 0 // Layer1\n ],\n // MPEG 2\n [0, // Reserved\n 72, // Layer3\n 144, // Layer2\n 12 // Layer1\n ],\n // MPEG 1\n [0, // Reserved\n 144, // Layer3\n 144, // Layer2\n 12 // Layer1\n ]],\n\n BytesInSlot: [0, // Reserved\n 1, // Layer3\n 1, // Layer2\n 4 // Layer1\n ],\n\n appendFrame: function appendFrame(track, data, offset, pts, frameIndex) {\n // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference\n if (offset + 24 > data.length) return undefined;\n\n var header = this.parseHeader(data, offset);\n if (header && offset + header.frameLength <= data.length) {\n var frameDuration = header.samplesPerFrame * 90000 / header.sampleRate;\n var stamp = pts + frameIndex * frameDuration;\n var sample = { unit: data.subarray(offset, offset + header.frameLength), pts: stamp, dts: stamp };\n\n track.config = [];\n track.channelCount = header.channelCount;\n track.samplerate = header.sampleRate;\n track.samples.push(sample);\n track.len += header.frameLength;\n\n return { sample: sample, length: header.frameLength };\n }\n\n return undefined;\n },\n\n parseHeader: function parseHeader(data, offset) {\n var headerB = data[offset + 1] >> 3 & 3;\n var headerC = data[offset + 1] >> 1 & 3;\n var headerE = data[offset + 2] >> 4 & 15;\n var headerF = data[offset + 2] >> 2 & 3;\n var headerG = data[offset + 2] >> 1 & 1;\n if (headerB !== 1 && headerE !== 0 && headerE !== 15 && headerF !== 3) {\n var columnInBitrates = headerB === 3 ? 3 - headerC : headerC === 3 ? 3 : 4;\n var bitRate = MpegAudio.BitratesMap[columnInBitrates * 14 + headerE - 1] * 1000;\n var columnInSampleRates = headerB === 3 ? 0 : headerB === 2 ? 1 : 2;\n var sampleRate = MpegAudio.SamplingRateMap[columnInSampleRates * 3 + headerF];\n var channelCount = data[offset + 3] >> 6 === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono)\n var sampleCoefficient = MpegAudio.SamplesCoefficients[headerB][headerC];\n var bytesInSlot = MpegAudio.BytesInSlot[headerC];\n var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n var frameLength = parseInt(sampleCoefficient * bitRate / sampleRate + headerG, 10) * bytesInSlot;\n\n return { sampleRate: sampleRate, channelCount: channelCount, frameLength: frameLength, samplesPerFrame: samplesPerFrame };\n }\n\n return undefined;\n },\n\n isHeaderPattern: function isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00;\n },\n\n isHeader: function isHeader(data, offset) {\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n if (offset + 1 < data.length && this.isHeaderPattern(data, offset)) return true;\n\n return false;\n },\n\n probe: function probe(data, offset) {\n // same as isHeader but we also check that MPEG frame follows last MPEG frame\n // or end of data is reached\n if (offset + 1 < data.length && this.isHeaderPattern(data, offset)) {\n // MPEG header Length\n var headerLength = 4;\n // MPEG frame Length\n var header = this.parseHeader(data, offset);\n var frameLength = headerLength;\n if (header && header.frameLength) frameLength = header.frameLength;\n\n var newOffset = offset + frameLength;\n if (newOffset === data.length || newOffset + 1 < data.length && this.isHeaderPattern(data, newOffset)) return true;\n }\n return false;\n }\n};\n\n/* harmony default export */ var mpegaudio = (MpegAudio);\n// CONCATENATED MODULE: ./src/demux/exp-golomb.js\nfunction exp_golomb__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n*/\n\n\n\nvar exp_golomb_ExpGolomb = function () {\n function ExpGolomb(data) {\n exp_golomb__classCallCheck(this, ExpGolomb);\n\n this.data = data;\n // the number of bytes left to examine in this.data\n this.bytesAvailable = data.byteLength;\n // the current word being examined\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n this.bitsAvailable = 0; // :uint\n }\n\n // ():void\n\n\n ExpGolomb.prototype.loadWord = function loadWord() {\n var data = this.data,\n bytesAvailable = this.bytesAvailable,\n position = data.byteLength - bytesAvailable,\n workingBytes = new Uint8Array(4),\n availableBytes = Math.min(4, bytesAvailable);\n if (availableBytes === 0) throw new Error('no bytes available');\n\n workingBytes.set(data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0);\n // track the amount of this.data that has been processed\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n };\n\n // (count:int):void\n\n\n ExpGolomb.prototype.skipBits = function skipBits(count) {\n var skipBytes = void 0; // :int\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= skipBytes >> 3;\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n };\n\n // (size:int):uint\n\n\n ExpGolomb.prototype.readBits = function readBits(size) {\n var bits = Math.min(this.bitsAvailable, size),\n // :uint\n valu = this.word >>> 32 - bits; // :uint\n if (size > 32) logger[\"b\" /* logger */].error('Cannot read more than 32 bits at a time');\n\n this.bitsAvailable -= bits;\n if (this.bitsAvailable > 0) this.word <<= bits;else if (this.bytesAvailable > 0) this.loadWord();\n\n bits = size - bits;\n if (bits > 0 && this.bitsAvailable) return valu << bits | this.readBits(bits);else return valu;\n };\n\n // ():uint\n\n\n ExpGolomb.prototype.skipLZ = function skipLZ() {\n var leadingZeroCount = void 0; // :uint\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n }\n // we exhausted word and still have not found a 1\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n };\n\n // ():void\n\n\n ExpGolomb.prototype.skipUEG = function skipUEG() {\n this.skipBits(1 + this.skipLZ());\n };\n\n // ():void\n\n\n ExpGolomb.prototype.skipEG = function skipEG() {\n this.skipBits(1 + this.skipLZ());\n };\n\n // ():uint\n\n\n ExpGolomb.prototype.readUEG = function readUEG() {\n var clz = this.skipLZ(); // :uint\n return this.readBits(clz + 1) - 1;\n };\n\n // ():int\n\n\n ExpGolomb.prototype.readEG = function readEG() {\n var valu = this.readUEG(); // :int\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n };\n\n // Some convenience functions\n // :Boolean\n\n\n ExpGolomb.prototype.readBoolean = function readBoolean() {\n return this.readBits(1) === 1;\n };\n\n // ():int\n\n\n ExpGolomb.prototype.readUByte = function readUByte() {\n return this.readBits(8);\n };\n\n // ():int\n\n\n ExpGolomb.prototype.readUShort = function readUShort() {\n return this.readBits(16);\n };\n // ():int\n\n\n ExpGolomb.prototype.readUInt = function readUInt() {\n return this.readBits(32);\n };\n\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count {number} the number of entries in this scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */\n\n\n ExpGolomb.prototype.skipScalingList = function skipScalingList(count) {\n var lastScale = 8,\n nextScale = 8,\n j = void 0,\n deltaScale = void 0;\n for (j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n };\n\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @param data {Uint8Array} the bytes of a sequence parameter set\n * @return {object} an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */\n\n\n ExpGolomb.prototype.readSPS = function readSPS() {\n var frameCropLeftOffset = 0,\n frameCropRightOffset = 0,\n frameCropTopOffset = 0,\n frameCropBottomOffset = 0,\n profileIdc = void 0,\n profileCompat = void 0,\n levelIdc = void 0,\n numRefFramesInPicOrderCntCycle = void 0,\n picWidthInMbsMinus1 = void 0,\n picHeightInMapUnitsMinus1 = void 0,\n frameMbsOnlyFlag = void 0,\n scalingListCount = void 0,\n i = void 0,\n readUByte = this.readUByte.bind(this),\n readBits = this.readBits.bind(this),\n readUEG = this.readUEG.bind(this),\n readBoolean = this.readBoolean.bind(this),\n skipBits = this.skipBits.bind(this),\n skipEG = this.skipEG.bind(this),\n skipUEG = this.skipUEG.bind(this),\n skipScalingList = this.skipScalingList.bind(this);\n\n readUByte();\n profileIdc = readUByte(); // profile_idc\n profileCompat = readBits(5); // constraint_set[0-4]_flag, u(5)\n skipBits(3); // reserved_zero_3bits u(3),\n levelIdc = readUByte(); // level_idc u(8)\n skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n var chromaFormatIdc = readUEG();\n if (chromaFormatIdc === 3) skipBits(1); // separate_colour_plane_flag\n\n skipUEG(); // bit_depth_luma_minus8\n skipUEG(); // bit_depth_chroma_minus8\n skipBits(1); // qpprime_y_zero_transform_bypass_flag\n if (readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n for (i = 0; i < scalingListCount; i++) {\n if (readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) skipScalingList(16);else skipScalingList(64);\n }\n }\n }\n }\n skipUEG(); // log2_max_frame_num_minus4\n var picOrderCntType = readUEG();\n if (picOrderCntType === 0) {\n readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n skipBits(1); // delta_pic_order_always_zero_flag\n skipEG(); // offset_for_non_ref_pic\n skipEG(); // offset_for_top_to_bottom_field\n numRefFramesInPicOrderCntCycle = readUEG();\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n skipEG();\n } // offset_for_ref_frame[ i ]\n }\n skipUEG(); // max_num_ref_frames\n skipBits(1); // gaps_in_frame_num_value_allowed_flag\n picWidthInMbsMinus1 = readUEG();\n picHeightInMapUnitsMinus1 = readUEG();\n frameMbsOnlyFlag = readBits(1);\n if (frameMbsOnlyFlag === 0) skipBits(1); // mb_adaptive_frame_field_flag\n\n skipBits(1); // direct_8x8_inference_flag\n if (readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = readUEG();\n frameCropRightOffset = readUEG();\n frameCropTopOffset = readUEG();\n frameCropBottomOffset = readUEG();\n }\n var pixelRatio = [1, 1];\n if (readBoolean()) {\n // vui_parameters_present_flag\n if (readBoolean()) {\n // aspect_ratio_info_present_flag\n var aspectRatioIdc = readUByte();\n switch (aspectRatioIdc) {\n case 1:\n pixelRatio = [1, 1];break;\n case 2:\n pixelRatio = [12, 11];break;\n case 3:\n pixelRatio = [10, 11];break;\n case 4:\n pixelRatio = [16, 11];break;\n case 5:\n pixelRatio = [40, 33];break;\n case 6:\n pixelRatio = [24, 11];break;\n case 7:\n pixelRatio = [20, 11];break;\n case 8:\n pixelRatio = [32, 11];break;\n case 9:\n pixelRatio = [80, 33];break;\n case 10:\n pixelRatio = [18, 11];break;\n case 11:\n pixelRatio = [15, 11];break;\n case 12:\n pixelRatio = [64, 33];break;\n case 13:\n pixelRatio = [160, 99];break;\n case 14:\n pixelRatio = [4, 3];break;\n case 15:\n pixelRatio = [3, 2];break;\n case 16:\n pixelRatio = [2, 1];break;\n case 255:\n {\n pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n break;\n }\n }\n }\n }\n return {\n width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n pixelRatio: pixelRatio\n };\n };\n\n ExpGolomb.prototype.readSliceType = function readSliceType() {\n // skip NALu type\n this.readUByte();\n // discard first_mb_in_slice\n this.readUEG();\n // return slice_type\n return this.readUEG();\n };\n\n return ExpGolomb;\n}();\n\n/* harmony default export */ var exp_golomb = (exp_golomb_ExpGolomb);\n// CONCATENATED MODULE: ./src/demux/sample-aes.js\nfunction sample_aes__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * SAMPLE-AES decrypter\n*/\n\n\n\nvar sample_aes_SampleAesDecrypter = function () {\n function SampleAesDecrypter(observer, config, decryptdata, discardEPB) {\n sample_aes__classCallCheck(this, SampleAesDecrypter);\n\n this.decryptdata = decryptdata;\n this.discardEPB = discardEPB;\n this.decrypter = new crypt_decrypter[\"a\" /* default */](observer, config, { removePKCS7Padding: false });\n }\n\n SampleAesDecrypter.prototype.decryptBuffer = function decryptBuffer(encryptedData, callback) {\n this.decrypter.decrypt(encryptedData, this.decryptdata.key.buffer, this.decryptdata.iv.buffer, callback);\n };\n\n // AAC - encrypt all full 16 bytes blocks starting from offset 16\n\n\n SampleAesDecrypter.prototype.decryptAacSample = function decryptAacSample(samples, sampleIndex, callback, sync) {\n var curUnit = samples[sampleIndex].unit;\n var encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);\n var encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);\n\n var localthis = this;\n this.decryptBuffer(encryptedBuffer, function (decryptedData) {\n decryptedData = new Uint8Array(decryptedData);\n curUnit.set(decryptedData, 16);\n\n if (!sync) localthis.decryptAacSamples(samples, sampleIndex + 1, callback);\n });\n };\n\n SampleAesDecrypter.prototype.decryptAacSamples = function decryptAacSamples(samples, sampleIndex, callback) {\n for (;; sampleIndex++) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n\n if (samples[sampleIndex].unit.length < 32) continue;\n\n var sync = this.decrypter.isSync();\n\n this.decryptAacSample(samples, sampleIndex, callback, sync);\n\n if (!sync) return;\n }\n };\n\n // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n\n\n SampleAesDecrypter.prototype.getAvcEncryptedData = function getAvcEncryptedData(decodedData) {\n var encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n var encryptedData = new Int8Array(encryptedDataLen);\n var outputPos = 0;\n for (var inputPos = 32; inputPos <= decodedData.length - 16; inputPos += 160, outputPos += 16) {\n encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);\n }return encryptedData;\n };\n\n SampleAesDecrypter.prototype.getAvcDecryptedUnit = function getAvcDecryptedUnit(decodedData, decryptedData) {\n decryptedData = new Uint8Array(decryptedData);\n var inputPos = 0;\n for (var outputPos = 32; outputPos <= decodedData.length - 16; outputPos += 160, inputPos += 16) {\n decodedData.set(decryptedData.subarray(inputPos, inputPos + 16), outputPos);\n }return decodedData;\n };\n\n SampleAesDecrypter.prototype.decryptAvcSample = function decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync) {\n var decodedData = this.discardEPB(curUnit.data);\n var encryptedData = this.getAvcEncryptedData(decodedData);\n var localthis = this;\n\n this.decryptBuffer(encryptedData.buffer, function (decryptedData) {\n curUnit.data = localthis.getAvcDecryptedUnit(decodedData, decryptedData);\n\n if (!sync) localthis.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n });\n };\n\n SampleAesDecrypter.prototype.decryptAvcSamples = function decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {\n for (;; sampleIndex++, unitIndex = 0) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n\n var curUnits = samples[sampleIndex].units;\n for (;; unitIndex++) {\n if (unitIndex >= curUnits.length) break;\n\n var curUnit = curUnits[unitIndex];\n if (curUnit.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) continue;\n\n var sync = this.decrypter.isSync();\n\n this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync);\n\n if (!sync) return;\n }\n }\n };\n\n return SampleAesDecrypter;\n}();\n\n/* harmony default export */ var sample_aes = (sample_aes_SampleAesDecrypter);\n// CONCATENATED MODULE: ./src/demux/tsdemuxer.js\nfunction tsdemuxer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * highly optimized TS demuxer:\n * parse PAT, PMT\n * extract PES packet from audio and video PIDs\n * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet\n * trigger the remuxer upon parsing completion\n * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.\n * it also controls the remuxing process :\n * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.\n*/\n\n\n\n\n\n\n// import Hex from '../utils/hex';\n\n\n\n// We are using fixed track IDs for driving the MP4 remuxer\n// instead of following the TS PIDs.\n// There is no reason not to do this and some browsers/SourceBuffer-demuxers\n// may not like if there are TrackID \"switches\"\n// See https://github.com/video-dev/hls.js/issues/1331\n// Here we are mapping our internal track types to constant MP4 track IDs\n// With MSE currently one can only have one track of each, and we are muxing\n// whatever video/audio rendition in them.\nvar RemuxerTrackIdConfig = {\n video: 0,\n audio: 1,\n id3: 2,\n text: 3\n};\n\nvar tsdemuxer_TSDemuxer = function () {\n function TSDemuxer(observer, remuxer, config, typeSupported) {\n tsdemuxer__classCallCheck(this, TSDemuxer);\n\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n this.remuxer = remuxer;\n this.sampleAes = null;\n }\n\n TSDemuxer.prototype.setDecryptData = function setDecryptData(decryptdata) {\n if (decryptdata != null && decryptdata.key != null && decryptdata.method === 'SAMPLE-AES') this.sampleAes = new sample_aes(this.observer, this.config, decryptdata, this.discardEPB);else this.sampleAes = null;\n };\n\n TSDemuxer.probe = function probe(data) {\n var syncOffset = TSDemuxer._syncOffset(data);\n if (syncOffset < 0) {\n return false;\n } else {\n if (syncOffset) logger[\"b\" /* logger */].warn('MPEG2-TS detected but first sync word found @ offset ' + syncOffset + ', junk ahead ?');\n\n return true;\n }\n };\n\n TSDemuxer._syncOffset = function _syncOffset(data) {\n // scan 1000 first bytes\n var scanwindow = Math.min(1000, data.length - 3 * 188);\n var i = 0;\n while (i < scanwindow) {\n // a TS fragment should contain at least 3 TS packets, a PAT, a PMT, and one PID, each starting with 0x47\n if (data[i] === 0x47 && data[i + 188] === 0x47 && data[i + 2 * 188] === 0x47) return i;else i++;\n }\n return -1;\n };\n\n /**\n * Creates a track model internal to demuxer used to drive remuxing input\n *\n * @param {string} type 'audio' | 'video' | 'id3' | 'text'\n * @param {number} duration\n * @return {object} TSDemuxer's internal track model\n */\n\n\n TSDemuxer.createTrack = function createTrack(type, duration) {\n return {\n container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n type: type,\n id: RemuxerTrackIdConfig[type],\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n len: 0,\n dropped: type === 'video' ? 0 : undefined,\n isAAC: type === 'audio' ? true : undefined,\n duration: type === 'audio' ? duration : undefined\n };\n };\n\n /**\n * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n * Resets all internal track instances of the demuxer.\n *\n * @override Implements generic demuxing/remuxing interface (see DemuxerInline)\n * @param {object} initSegment\n * @param {string} audioCodec\n * @param {string} videoCodec\n * @param {number} duration (in TS timescale = 90kHz)\n */\n\n\n TSDemuxer.prototype.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, duration) {\n this.pmtParsed = false;\n this._pmtId = -1;\n\n this._avcTrack = TSDemuxer.createTrack('video', duration);\n this._audioTrack = TSDemuxer.createTrack('audio', duration);\n this._id3Track = TSDemuxer.createTrack('id3', duration);\n this._txtTrack = TSDemuxer.createTrack('text', duration);\n\n // flush any partial content\n this.aacOverFlow = null;\n this.aacLastPTS = null;\n this.avcSample = null;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this._duration = duration;\n };\n\n /**\n *\n * @override\n */\n\n\n TSDemuxer.prototype.resetTimeStamp = function resetTimeStamp() {};\n\n // feed incoming data to the front of the parsing pipeline\n\n\n TSDemuxer.prototype.append = function append(data, timeOffset, contiguous, accurateTimeOffset) {\n var start = void 0,\n len = data.length,\n stt = void 0,\n pid = void 0,\n atf = void 0,\n offset = void 0,\n pes = void 0,\n unknownPIDs = false;\n this.contiguous = contiguous;\n var pmtParsed = this.pmtParsed,\n avcTrack = this._avcTrack,\n audioTrack = this._audioTrack,\n id3Track = this._id3Track,\n avcId = avcTrack.pid,\n audioId = audioTrack.pid,\n id3Id = id3Track.pid,\n pmtId = this._pmtId,\n avcData = avcTrack.pesData,\n audioData = audioTrack.pesData,\n id3Data = id3Track.pesData,\n parsePAT = this._parsePAT,\n parsePMT = this._parsePMT,\n parsePES = this._parsePES,\n parseAVCPES = this._parseAVCPES.bind(this),\n parseAACPES = this._parseAACPES.bind(this),\n parseMPEGPES = this._parseMPEGPES.bind(this),\n parseID3PES = this._parseID3PES.bind(this);\n\n var syncOffset = TSDemuxer._syncOffset(data);\n\n // don't parse last TS packet if incomplete\n len -= (len + syncOffset) % 188;\n\n // loop through TS packets\n for (start = syncOffset; start < len; start += 188) {\n if (data[start] === 0x47) {\n stt = !!(data[start + 1] & 0x40);\n // pid is a 13-bit field starting at the last bit of TS[1]\n pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];\n atf = (data[start + 3] & 0x30) >> 4;\n // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n if (atf > 1) {\n offset = start + 5 + data[start + 4];\n // continue if there is only adaptation field\n if (offset === start + 188) continue;\n } else {\n offset = start + 4;\n }\n switch (pid) {\n case avcId:\n if (stt) {\n if (avcData && (pes = parsePES(avcData)) && pes.pts !== undefined) parseAVCPES(pes, false);\n\n avcData = { data: [], size: 0 };\n }\n if (avcData) {\n avcData.data.push(data.subarray(offset, start + 188));\n avcData.size += start + 188 - offset;\n }\n break;\n case audioId:\n if (stt) {\n if (audioData && (pes = parsePES(audioData)) && pes.pts !== undefined) {\n if (audioTrack.isAAC) parseAACPES(pes);else parseMPEGPES(pes);\n }\n audioData = { data: [], size: 0 };\n }\n if (audioData) {\n audioData.data.push(data.subarray(offset, start + 188));\n audioData.size += start + 188 - offset;\n }\n break;\n case id3Id:\n if (stt) {\n if (id3Data && (pes = parsePES(id3Data)) && pes.pts !== undefined) parseID3PES(pes);\n\n id3Data = { data: [], size: 0 };\n }\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + 188));\n id3Data.size += start + 188 - offset;\n }\n break;\n case 0:\n if (stt) offset += data[offset] + 1;\n\n pmtId = this._pmtId = parsePAT(data, offset);\n break;\n case pmtId:\n if (stt) offset += data[offset] + 1;\n\n var parsedPIDs = parsePMT(data, offset, this.typeSupported.mpeg === true || this.typeSupported.mp3 === true, this.sampleAes != null);\n\n // only update track id if track PID found while parsing PMT\n // this is to avoid resetting the PID to -1 in case\n // track PID transiently disappears from the stream\n // this could happen in case of transient missing audio samples for example\n // NOTE this is only the PID of the track as found in TS,\n // but we are not using this for MP4 track IDs.\n avcId = parsedPIDs.avc;\n if (avcId > 0) avcTrack.pid = avcId;\n\n audioId = parsedPIDs.audio;\n if (audioId > 0) {\n audioTrack.pid = audioId;\n audioTrack.isAAC = parsedPIDs.isAAC;\n }\n id3Id = parsedPIDs.id3;\n if (id3Id > 0) id3Track.pid = id3Id;\n\n if (unknownPIDs && !pmtParsed) {\n logger[\"b\" /* logger */].log('reparse from beginning');\n unknownPIDs = false;\n // we set it to -188, the += 188 in the for loop will reset start to 0\n start = syncOffset - 188;\n }\n pmtParsed = this.pmtParsed = true;\n break;\n case 17:\n case 0x1fff:\n break;\n default:\n unknownPIDs = true;\n break;\n }\n } else {\n this.observer.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].FRAG_PARSING_ERROR, fatal: false, reason: 'TS packet did not start with 0x47' });\n }\n }\n // try to parse last PES packets\n if (avcData && (pes = parsePES(avcData)) && pes.pts !== undefined) {\n parseAVCPES(pes, true);\n avcTrack.pesData = null;\n } else {\n // either avcData null or PES truncated, keep it for next frag parsing\n avcTrack.pesData = avcData;\n }\n\n if (audioData && (pes = parsePES(audioData)) && pes.pts !== undefined) {\n if (audioTrack.isAAC) parseAACPES(pes);else parseMPEGPES(pes);\n\n audioTrack.pesData = null;\n } else {\n if (audioData && audioData.size) logger[\"b\" /* logger */].log('last AAC PES packet truncated,might overlap between fragments');\n\n // either audioData null or PES truncated, keep it for next frag parsing\n audioTrack.pesData = audioData;\n }\n\n if (id3Data && (pes = parsePES(id3Data)) && pes.pts !== undefined) {\n parseID3PES(pes);\n id3Track.pesData = null;\n } else {\n // either id3Data null or PES truncated, keep it for next frag parsing\n id3Track.pesData = id3Data;\n }\n\n if (this.sampleAes == null) this.remuxer.remux(audioTrack, avcTrack, id3Track, this._txtTrack, timeOffset, contiguous, accurateTimeOffset);else this.decryptAndRemux(audioTrack, avcTrack, id3Track, this._txtTrack, timeOffset, contiguous, accurateTimeOffset);\n };\n\n TSDemuxer.prototype.decryptAndRemux = function decryptAndRemux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) {\n if (audioTrack.samples && audioTrack.isAAC) {\n var localthis = this;\n this.sampleAes.decryptAacSamples(audioTrack.samples, 0, function () {\n localthis.decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset);\n });\n } else {\n this.decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset);\n }\n };\n\n TSDemuxer.prototype.decryptAndRemuxAvc = function decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) {\n if (videoTrack.samples) {\n var localthis = this;\n this.sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () {\n localthis.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset);\n });\n } else {\n this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset);\n }\n };\n\n TSDemuxer.prototype.destroy = function destroy() {\n this._initPTS = this._initDTS = undefined;\n this._duration = 0;\n };\n\n TSDemuxer.prototype._parsePAT = function _parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n return (data[offset + 10] & 0x1F) << 8 | data[offset + 11];\n // logger.log('PMT PID:' + this._pmtId);\n };\n\n TSDemuxer.prototype._parsePMT = function _parsePMT(data, offset, mpegSupported, isSampleAes) {\n var sectionLength = void 0,\n tableEnd = void 0,\n programInfoLength = void 0,\n pid = void 0,\n result = { audio: -1, avc: -1, id3: -1, isAAC: true };\n sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n tableEnd = offset + 3 + sectionLength - 4;\n // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11];\n // advance the offset to the first entry in the mapping table\n offset += 12 + programInfoLength;\n while (offset < tableEnd) {\n pid = (data[offset + 1] & 0x1F) << 8 | data[offset + 2];\n switch (data[offset]) {\n case 0xcf:\n // SAMPLE-AES AAC\n if (!isSampleAes) {\n logger[\"b\" /* logger */].log('unkown stream type:' + data[offset]);\n break;\n }\n /* falls through */\n\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n case 0x0f:\n // logger.log('AAC PID:' + pid);\n if (result.audio === -1) result.audio = pid;\n\n break;\n\n // Packetized metadata (ID3)\n case 0x15:\n // logger.log('ID3 PID:' + pid);\n if (result.id3 === -1) result.id3 = pid;\n\n break;\n\n case 0xdb:\n // SAMPLE-AES AVC\n if (!isSampleAes) {\n logger[\"b\" /* logger */].log('unkown stream type:' + data[offset]);\n break;\n }\n /* falls through */\n\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n case 0x1b:\n // logger.log('AVC PID:' + pid);\n if (result.avc === -1) result.avc = pid;\n\n break;\n\n // ISO/IEC 11172-3 (MPEG-1 audio)\n // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n case 0x03:\n case 0x04:\n // logger.log('MPEG PID:' + pid);\n if (!mpegSupported) {\n logger[\"b\" /* logger */].log('MPEG audio found, not supported in this browser for now');\n } else if (result.audio === -1) {\n result.audio = pid;\n result.isAAC = false;\n }\n break;\n\n case 0x24:\n logger[\"b\" /* logger */].warn('HEVC stream type found, not supported for now');\n break;\n\n default:\n logger[\"b\" /* logger */].log('unkown stream type:' + data[offset]);\n break;\n }\n // move to the next table entry\n // skip past the elementary stream descriptors, if present\n offset += ((data[offset + 3] & 0x0F) << 8 | data[offset + 4]) + 5;\n }\n return result;\n };\n\n TSDemuxer.prototype._parsePES = function _parsePES(stream) {\n var i = 0,\n frag = void 0,\n pesFlags = void 0,\n pesPrefix = void 0,\n pesLen = void 0,\n pesHdrLen = void 0,\n pesData = void 0,\n pesPts = void 0,\n pesDts = void 0,\n payloadStartOffset = void 0,\n data = stream.data;\n // safety check\n if (!stream || stream.size === 0) return null;\n\n // we might need up to 19 bytes to read PES header\n // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n // usually only one merge is needed (and this is rare ...)\n while (data[0].length < 19 && data.length > 1) {\n var newData = new Uint8Array(data[0].length + data[1].length);\n newData.set(data[0]);\n newData.set(data[1], data[0].length);\n data[0] = newData;\n data.splice(1, 1);\n }\n // retrieve PTS/DTS from first fragment\n frag = data[0];\n pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5];\n // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n // minus 6 : PES header size\n if (pesLen && pesLen > stream.size - 6) return null;\n\n pesFlags = frag[7];\n if (pesFlags & 0xC0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0E) * 536870912 + // 1 << 29\n (frag[10] & 0xFF) * 4194304 + // 1 << 22\n (frag[11] & 0xFE) * 16384 + // 1 << 14\n (frag[12] & 0xFF) * 128 + // 1 << 7\n (frag[13] & 0xFE) / 2;\n // check if greater than 2^32 -1\n if (pesPts > 4294967295) {\n // decrement 2^33\n pesPts -= 8589934592;\n }\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0E) * 536870912 + // 1 << 29\n (frag[15] & 0xFF) * 4194304 + // 1 << 22\n (frag[16] & 0xFE) * 16384 + // 1 << 14\n (frag[17] & 0xFF) * 128 + // 1 << 7\n (frag[18] & 0xFE) / 2;\n // check if greater than 2^32 -1\n if (pesDts > 4294967295) {\n // decrement 2^33\n pesDts -= 8589934592;\n }\n if (pesPts - pesDts > 60 * 90000) {\n logger[\"b\" /* logger */].warn(Math.round((pesPts - pesDts) / 90000) + 's delta between PTS and DTS, align them');\n pesPts = pesDts;\n }\n } else {\n pesDts = pesPts;\n }\n }\n pesHdrLen = frag[8];\n // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n payloadStartOffset = pesHdrLen + 9;\n\n stream.size -= payloadStartOffset;\n // reassemble PES packet\n pesData = new Uint8Array(stream.size);\n for (var j = 0, dataLen = data.length; j < dataLen; j++) {\n frag = data[j];\n var len = frag.byteLength;\n if (payloadStartOffset) {\n if (payloadStartOffset > len) {\n // trim full frag if PES header bigger than frag\n payloadStartOffset -= len;\n continue;\n } else {\n // trim partial frag if PES header smaller than frag\n frag = frag.subarray(payloadStartOffset);\n len -= payloadStartOffset;\n payloadStartOffset = 0;\n }\n }\n pesData.set(frag, i);\n i += len;\n }\n if (pesLen) {\n // payload size : remove PES header + PES extension\n pesLen -= pesHdrLen + 3;\n }\n return { data: pesData, pts: pesPts, dts: pesDts, len: pesLen };\n } else {\n return null;\n }\n };\n\n TSDemuxer.prototype.pushAccesUnit = function pushAccesUnit(avcSample, avcTrack) {\n if (avcSample.units.length && avcSample.frame) {\n var samples = avcTrack.samples;\n var nbSamples = samples.length;\n // only push AVC sample if starting with a keyframe is not mandatory OR\n // if keyframe already found in this fragment OR\n // keyframe found in last fragment (track.sps) AND\n // samples already appended (we already found a keyframe in this fragment) OR fragment is contiguous\n if (!this.config.forceKeyFrameOnDiscontinuity || avcSample.key === true || avcTrack.sps && (nbSamples || this.contiguous)) {\n avcSample.id = nbSamples;\n samples.push(avcSample);\n } else {\n // dropped samples, track it\n avcTrack.dropped++;\n }\n }\n if (avcSample.debug.length) logger[\"b\" /* logger */].log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug);\n };\n\n TSDemuxer.prototype._parseAVCPES = function _parseAVCPES(pes, last) {\n var _this = this;\n\n // logger.log('parse new PES');\n var track = this._avcTrack,\n units = this._parseAVCNALu(pes.data),\n debug = false,\n expGolombDecoder = void 0,\n avcSample = this.avcSample,\n push = void 0,\n spsfound = false,\n i = void 0,\n pushAccesUnit = this.pushAccesUnit.bind(this),\n createAVCSample = function createAVCSample(key, pts, dts, debug) {\n return { key: key, pts: pts, dts: dts, units: [], debug: debug };\n };\n // free pes.data to save up some memory\n pes.data = null;\n\n // if new NAL units found and last sample still there, let's push ...\n // this helps parsing streams with missing AUD (only do this if AUD never found)\n if (avcSample && units.length && !track.audFound) {\n pushAccesUnit(avcSample, track);\n avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, '');\n }\n\n units.forEach(function (unit) {\n switch (unit.type) {\n // NDR\n case 1:\n push = true;\n if (!avcSample) avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n\n if (debug) avcSample.debug += 'NDR ';\n\n avcSample.frame = true;\n var data = unit.data;\n // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n if (spsfound && data.length > 4) {\n // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n var sliceType = new exp_golomb(data).readSliceType();\n // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n // if (sliceType === 2 || sliceType === 7) {\n if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) avcSample.key = true;\n }\n break;\n // IDR\n case 5:\n push = true;\n // handle PES not starting with AUD\n if (!avcSample) avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n\n if (debug) avcSample.debug += 'IDR ';\n\n avcSample.key = true;\n avcSample.frame = true;\n break;\n // SEI\n case 6:\n push = true;\n if (debug && avcSample) avcSample.debug += 'SEI ';\n\n expGolombDecoder = new exp_golomb(_this.discardEPB(unit.data));\n\n // skip frameType\n expGolombDecoder.readUByte();\n\n var payloadType = 0;\n var payloadSize = 0;\n var endOfCaptions = false;\n var b = 0;\n\n while (!endOfCaptions && expGolombDecoder.bytesAvailable > 1) {\n payloadType = 0;\n do {\n b = expGolombDecoder.readUByte();\n payloadType += b;\n } while (b === 0xFF);\n\n // Parse payload size.\n payloadSize = 0;\n do {\n b = expGolombDecoder.readUByte();\n payloadSize += b;\n } while (b === 0xFF);\n\n // TODO: there can be more than one payload in an SEI packet...\n // TODO: need to read type and size in a while loop to get them all\n if (payloadType === 4 && expGolombDecoder.bytesAvailable !== 0) {\n endOfCaptions = true;\n\n var countryCode = expGolombDecoder.readUByte();\n\n if (countryCode === 181) {\n var providerCode = expGolombDecoder.readUShort();\n\n if (providerCode === 49) {\n var userStructure = expGolombDecoder.readUInt();\n\n if (userStructure === 0x47413934) {\n var userDataType = expGolombDecoder.readUByte();\n\n // Raw CEA-608 bytes wrapped in CEA-708 packet\n if (userDataType === 3) {\n var firstByte = expGolombDecoder.readUByte();\n var secondByte = expGolombDecoder.readUByte();\n\n var totalCCs = 31 & firstByte;\n var byteArray = [firstByte, secondByte];\n\n for (i = 0; i < totalCCs; i++) {\n // 3 bytes per CC\n byteArray.push(expGolombDecoder.readUByte());\n byteArray.push(expGolombDecoder.readUByte());\n byteArray.push(expGolombDecoder.readUByte());\n }\n\n _this._insertSampleInOrder(_this._txtTrack.samples, { type: 3, pts: pes.pts, bytes: byteArray });\n }\n }\n }\n }\n } else if (payloadSize < expGolombDecoder.bytesAvailable) {\n for (i = 0; i < payloadSize; i++) {\n expGolombDecoder.readUByte();\n }\n }\n }\n break;\n // SPS\n case 7:\n push = true;\n spsfound = true;\n if (debug && avcSample) avcSample.debug += 'SPS ';\n\n if (!track.sps) {\n expGolombDecoder = new exp_golomb(unit.data);\n var config = expGolombDecoder.readSPS();\n track.width = config.width;\n track.height = config.height;\n track.pixelRatio = config.pixelRatio;\n track.sps = [unit.data];\n track.duration = _this._duration;\n var codecarray = unit.data.subarray(1, 4);\n var codecstring = 'avc1.';\n for (i = 0; i < 3; i++) {\n var h = codecarray[i].toString(16);\n if (h.length < 2) h = '0' + h;\n\n codecstring += h;\n }\n track.codec = codecstring;\n }\n break;\n // PPS\n case 8:\n push = true;\n if (debug && avcSample) avcSample.debug += 'PPS ';\n\n if (!track.pps) track.pps = [unit.data];\n\n break;\n // AUD\n case 9:\n push = false;\n track.audFound = true;\n if (avcSample) pushAccesUnit(avcSample, track);\n\n avcSample = _this.avcSample = createAVCSample(false, pes.pts, pes.dts, debug ? 'AUD ' : '');\n break;\n // Filler Data\n case 12:\n push = false;\n break;\n default:\n push = false;\n if (avcSample) avcSample.debug += 'unknown NAL ' + unit.type + ' ';\n\n break;\n }\n if (avcSample && push) {\n var _units = avcSample.units;\n _units.push(unit);\n }\n });\n // if last PES packet, push samples\n if (last && avcSample) {\n pushAccesUnit(avcSample, track);\n this.avcSample = null;\n }\n };\n\n TSDemuxer.prototype._insertSampleInOrder = function _insertSampleInOrder(arr, data) {\n var len = arr.length;\n if (len > 0) {\n if (data.pts >= arr[len - 1].pts) {\n arr.push(data);\n } else {\n for (var pos = len - 1; pos >= 0; pos--) {\n if (data.pts < arr[pos].pts) {\n arr.splice(pos, 0, data);\n break;\n }\n }\n }\n } else {\n arr.push(data);\n }\n };\n\n TSDemuxer.prototype._getLastNalUnit = function _getLastNalUnit() {\n var avcSample = this.avcSample,\n lastUnit = void 0;\n // try to fallback to previous sample if current one is empty\n if (!avcSample || avcSample.units.length === 0) {\n var track = this._avcTrack,\n samples = track.samples;\n avcSample = samples[samples.length - 1];\n }\n if (avcSample) {\n var units = avcSample.units;\n lastUnit = units[units.length - 1];\n }\n return lastUnit;\n };\n\n TSDemuxer.prototype._parseAVCNALu = function _parseAVCNALu(array) {\n var i = 0,\n len = array.byteLength,\n value = void 0,\n overflow = void 0,\n track = this._avcTrack,\n state = track.naluState || 0,\n lastState = state;\n var units = [],\n unit = void 0,\n unitType = void 0,\n lastUnitStart = -1,\n lastUnitType = void 0;\n // logger.log('PES:' + Hex.hexDump(array));\n\n if (state === -1) {\n // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n lastUnitStart = 0;\n // NALu type is value read from offset 0\n lastUnitType = array[0] & 0x1f;\n state = 0;\n i = 1;\n }\n\n while (i < len) {\n value = array[i++];\n // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n if (!state) {\n state = value ? 0 : 1;\n continue;\n }\n if (state === 1) {\n state = value ? 0 : 2;\n continue;\n }\n // here we have state either equal to 2 or 3\n if (!value) {\n state = 3;\n } else if (value === 1) {\n if (lastUnitStart >= 0) {\n unit = { data: array.subarray(lastUnitStart, i - state - 1), type: lastUnitType };\n // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n units.push(unit);\n } else {\n // lastUnitStart is undefined => this is the first start code found in this PES packet\n // first check if start code delimiter is overlapping between 2 PES packets,\n // ie it started in last packet (lastState not zero)\n // and ended at the beginning of this PES packet (i <= 4 - lastState)\n var lastUnit = this._getLastNalUnit();\n if (lastUnit) {\n if (lastState && i <= 4 - lastState) {\n // start delimiter overlapping between PES packets\n // strip start delimiter bytes from the end of last NAL unit\n // check if lastUnit had a state different from zero\n if (lastUnit.state) {\n // strip last bytes\n lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n }\n }\n // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n overflow = i - state - 1;\n if (overflow > 0) {\n // logger.log('first NALU found with overflow:' + overflow);\n var tmp = new Uint8Array(lastUnit.data.byteLength + overflow);\n tmp.set(lastUnit.data, 0);\n tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength);\n lastUnit.data = tmp;\n }\n }\n }\n // check if we can read unit type\n if (i < len) {\n unitType = array[i] & 0x1f;\n // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n lastUnitStart = i;\n lastUnitType = unitType;\n state = 0;\n } else {\n // not enough byte to read unit type. let's read it on next PES parsing\n state = -1;\n }\n } else {\n state = 0;\n }\n }\n if (lastUnitStart >= 0 && state >= 0) {\n unit = { data: array.subarray(lastUnitStart, len), type: lastUnitType, state: state };\n units.push(unit);\n // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n }\n // no NALu found\n if (units.length === 0) {\n // append pes.data to previous NAL unit\n var _lastUnit = this._getLastNalUnit();\n if (_lastUnit) {\n var _tmp = new Uint8Array(_lastUnit.data.byteLength + array.byteLength);\n _tmp.set(_lastUnit.data, 0);\n _tmp.set(array, _lastUnit.data.byteLength);\n _lastUnit.data = _tmp;\n }\n }\n track.naluState = state;\n return units;\n };\n\n /**\n * remove Emulation Prevention bytes from a RBSP\n */\n\n\n TSDemuxer.prototype.discardEPB = function discardEPB(data) {\n var length = data.byteLength,\n EPBPositions = [],\n i = 1,\n newLength = void 0,\n newData = void 0;\n\n // Find all `Emulation Prevention Bytes`\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n }\n\n // If no Emulation Prevention Bytes were found just return the original\n // array\n if (EPBPositions.length === 0) return data;\n\n // Create a new array to hold the NAL unit data\n newLength = length - EPBPositions.length;\n newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++;\n // Remove this position index\n EPBPositions.shift();\n }\n newData[i] = data[sourceIndex];\n }\n return newData;\n };\n\n TSDemuxer.prototype._parseAACPES = function _parseAACPES(pes) {\n var track = this._audioTrack,\n data = pes.data,\n pts = pes.pts,\n startOffset = 0,\n aacOverFlow = this.aacOverFlow,\n aacLastPTS = this.aacLastPTS,\n frameDuration = void 0,\n frameIndex = void 0,\n offset = void 0,\n stamp = void 0,\n len = void 0;\n if (aacOverFlow) {\n var tmp = new Uint8Array(aacOverFlow.byteLength + data.byteLength);\n tmp.set(aacOverFlow, 0);\n tmp.set(data, aacOverFlow.byteLength);\n // logger.log(`AAC: append overflowing ${aacOverFlow.byteLength} bytes to beginning of new PES`);\n data = tmp;\n }\n // look for ADTS header (0xFFFx)\n for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n if (isHeader(data, offset)) break;\n }\n // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n if (offset) {\n var reason = void 0,\n fatal = void 0;\n if (offset < len - 1) {\n reason = 'AAC PES did not start with ADTS header,offset:' + offset;\n fatal = false;\n } else {\n reason = 'no ADTS header found in AAC PES';\n fatal = true;\n }\n logger[\"b\" /* logger */].warn('parsing error:' + reason);\n this.observer.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].FRAG_PARSING_ERROR, fatal: fatal, reason: reason });\n if (fatal) return;\n }\n\n initTrackConfig(track, this.observer, data, offset, this.audioCodec);\n frameIndex = 0;\n frameDuration = getFrameDuration(track.samplerate);\n\n // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n // first sample PTS should be equal to last sample PTS + frameDuration\n if (aacOverFlow && aacLastPTS) {\n var newPTS = aacLastPTS + frameDuration;\n if (Math.abs(newPTS - pts) > 1) {\n logger[\"b\" /* logger */].log('AAC: align PTS for overlapping frames by ' + Math.round((newPTS - pts) / 90));\n pts = newPTS;\n }\n }\n\n // scan for aac samples\n while (offset < len) {\n if (isHeader(data, offset) && offset + 5 < len) {\n var frame = appendFrame(track, data, offset, pts, frameIndex);\n if (frame) {\n // logger.log(`${Math.round(frame.sample.pts)} : AAC`);\n offset += frame.length;\n stamp = frame.sample.pts;\n frameIndex++;\n } else {\n // logger.log('Unable to parse AAC frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n\n if (offset < len) aacOverFlow = data.subarray(offset, len);\n // logger.log(`AAC: overflow detected:${len-offset}`);\n else aacOverFlow = null;\n\n this.aacOverFlow = aacOverFlow;\n this.aacLastPTS = stamp;\n };\n\n TSDemuxer.prototype._parseMPEGPES = function _parseMPEGPES(pes) {\n var data = pes.data;\n var length = data.length;\n var frameIndex = 0;\n var offset = 0;\n var pts = pes.pts;\n\n while (offset < length) {\n if (mpegaudio.isHeader(data, offset)) {\n var frame = mpegaudio.appendFrame(this._audioTrack, data, offset, pts, frameIndex);\n if (frame) {\n offset += frame.length;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n };\n\n TSDemuxer.prototype._parseID3PES = function _parseID3PES(pes) {\n this._id3Track.samples.push(pes);\n };\n\n return TSDemuxer;\n}();\n\n/* harmony default export */ var tsdemuxer = (tsdemuxer_TSDemuxer);\n// CONCATENATED MODULE: ./src/demux/mp3demuxer.js\nfunction mp3demuxer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * MP3 demuxer\n */\n\n\n\n\nvar mp3demuxer_MP3Demuxer = function () {\n function MP3Demuxer(observer, remuxer, config) {\n mp3demuxer__classCallCheck(this, MP3Demuxer);\n\n this.observer = observer;\n this.config = config;\n this.remuxer = remuxer;\n }\n\n MP3Demuxer.prototype.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, duration) {\n this._audioTrack = { container: 'audio/mpeg', type: 'audio', id: -1, sequenceNumber: 0, isAAC: false, samples: [], len: 0, manifestCodec: audioCodec, duration: duration, inputTimeScale: 90000 };\n };\n\n MP3Demuxer.prototype.resetTimeStamp = function resetTimeStamp() {};\n\n MP3Demuxer.probe = function probe(data) {\n // check if data contains ID3 timestamp and MPEG sync word\n var offset = void 0,\n length = void 0;\n var id3Data = id3[\"a\" /* default */].getID3Data(data, 0);\n if (id3Data && id3[\"a\" /* default */].getTimeStamp(id3Data) !== undefined) {\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n for (offset = id3Data.length, length = Math.min(data.length - 1, offset + 100); offset < length; offset++) {\n if (mpegaudio.probe(data, offset)) {\n logger[\"b\" /* logger */].log('MPEG Audio sync word found !');\n return true;\n }\n }\n }\n return false;\n };\n\n // feed incoming data to the front of the parsing pipeline\n\n\n MP3Demuxer.prototype.append = function append(data, timeOffset, contiguous, accurateTimeOffset) {\n var id3Data = id3[\"a\" /* default */].getID3Data(data, 0);\n var timestamp = id3[\"a\" /* default */].getTimeStamp(id3Data);\n var pts = timestamp ? 90 * timestamp : timeOffset * 90000;\n var offset = id3Data.length;\n var length = data.length;\n var frameIndex = 0,\n stamp = 0;\n var track = this._audioTrack;\n\n var id3Samples = [{ pts: pts, dts: pts, data: id3Data }];\n\n while (offset < length) {\n if (mpegaudio.isHeader(data, offset)) {\n var frame = mpegaudio.appendFrame(track, data, offset, pts, frameIndex);\n if (frame) {\n offset += frame.length;\n stamp = frame.sample.pts;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else if (id3[\"a\" /* default */].isHeader(data, offset)) {\n id3Data = id3[\"a\" /* default */].getID3Data(data, offset);\n id3Samples.push({ pts: stamp, dts: stamp, data: id3Data });\n offset += id3Data.length;\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n\n this.remuxer.remux(track, { samples: [] }, { samples: id3Samples, inputTimeScale: 90000 }, { samples: [] }, timeOffset, contiguous, accurateTimeOffset);\n };\n\n MP3Demuxer.prototype.destroy = function destroy() {};\n\n return MP3Demuxer;\n}();\n\n/* harmony default export */ var mp3demuxer = (mp3demuxer_MP3Demuxer);\n// CONCATENATED MODULE: ./src/helper/aac.js\nfunction aac__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * AAC helper\n */\n\nvar AAC = function () {\n function AAC() {\n aac__classCallCheck(this, AAC);\n }\n\n AAC.getSilentFrame = function getSilentFrame(codec, channelCount) {\n switch (codec) {\n case 'mp4a.40.2':\n if (channelCount === 1) return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);else if (channelCount === 2) return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);else if (channelCount === 3) return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);else if (channelCount === 4) return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);else if (channelCount === 5) return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);else if (channelCount === 6) return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n\n break;\n // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n default:\n if (channelCount === 1) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 2) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 3) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n }\n break;\n }\n return null;\n };\n\n return AAC;\n}();\n\n/* harmony default export */ var aac = (AAC);\n// CONCATENATED MODULE: ./src/remux/mp4-generator.js\nfunction mp4_generator__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Generate MP4 Box\n*/\n\n// import Hex from '../utils/hex';\n\nvar UINT32_MAX = Math.pow(2, 32) - 1;\n\nvar MP4 = function () {\n function MP4() {\n mp4_generator__classCallCheck(this, MP4);\n }\n\n MP4.init = function init() {\n MP4.types = {\n avc1: [], // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n '.mp3': [],\n mvex: [],\n mvhd: [],\n pasp: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n var i = void 0;\n for (i in MP4.types) {\n if (MP4.types.hasOwnProperty(i)) {\n MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)];\n }\n }\n\n var videoHdlr = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n\n var audioHdlr = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n\n MP4.HDLR_TYPES = {\n 'video': videoHdlr,\n 'audio': audioHdlr\n };\n\n var dref = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0c, // entry_size\n 0x75, 0x72, 0x6c, 0x20, // 'url' type\n 0x00, // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n\n var stco = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n\n MP4.STTS = MP4.STSC = MP4.STCO = stco;\n\n MP4.STSZ = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n MP4.VMHD = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x01, // flags\n 0x00, 0x00, // graphicsmode\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor\n ]);\n MP4.SMHD = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, // balance\n 0x00, 0x00 // reserved\n ]);\n\n MP4.STSD = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01]); // entry_count\n\n var majorBrand = new Uint8Array([105, 115, 111, 109]); // isom\n var avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1\n var minorVersion = new Uint8Array([0, 0, 0, 1]);\n\n MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));\n };\n\n MP4.box = function box(type) {\n var payload = Array.prototype.slice.call(arguments, 1),\n size = 8,\n i = payload.length,\n len = i,\n result = void 0;\n // calculate the total size we need to allocate\n while (i--) {\n size += payload[i].byteLength;\n }result = new Uint8Array(size);\n result[0] = size >> 24 & 0xff;\n result[1] = size >> 16 & 0xff;\n result[2] = size >> 8 & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4);\n // copy the payload into the result\n for (i = 0, size = 8; i < len; i++) {\n // copy payload[i] array @ offset size\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n return result;\n };\n\n MP4.hdlr = function hdlr(type) {\n return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n };\n\n MP4.mdat = function mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n };\n\n MP4.mdhd = function mdhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.mdhd, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n timescale >> 24 & 0xFF, timescale >> 16 & 0xFF, timescale >> 8 & 0xFF, timescale & 0xFF, // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x55, 0xc4, // 'und' language (undetermined)\n 0x00, 0x00]));\n };\n\n MP4.mdia = function mdia(track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));\n };\n\n MP4.mfhd = function mfhd(sequenceNumber) {\n return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // flags\n sequenceNumber >> 24, sequenceNumber >> 16 & 0xFF, sequenceNumber >> 8 & 0xFF, sequenceNumber & 0xFF // sequence_number\n ]));\n };\n\n MP4.minf = function minf(track) {\n if (track.type === 'audio') return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));else return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));\n };\n\n MP4.moof = function moof(sn, baseMediaDecodeTime, track) {\n return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime));\n };\n /**\n * @param tracks... (optional) {array} the tracks associated with this movie\n */\n\n\n MP4.moov = function moov(tracks) {\n var i = tracks.length,\n boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trak(tracks[i]);\n }return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));\n };\n\n MP4.mvex = function mvex(tracks) {\n var i = tracks.length,\n boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trex(tracks[i]);\n }return MP4.box.apply(null, [MP4.types.mvex].concat(boxes));\n };\n\n MP4.mvhd = function mvhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n var bytes = new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n timescale >> 24 & 0xFF, timescale >> 16 & 0xFF, timescale >> 8 & 0xFF, timescale & 0xFF, // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x00, 0x01, 0x00, 0x00, // 1.0 rate\n 0x01, 0x00, // 1.0 volume\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return MP4.box(MP4.types.mvhd, bytes);\n };\n\n MP4.sdtp = function sdtp(track) {\n var samples = track.samples || [],\n bytes = new Uint8Array(4 + samples.length),\n flags = void 0,\n i = void 0;\n // leave the full box header (4 bytes) all zero\n // write the sample table\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n }\n\n return MP4.box(MP4.types.sdtp, bytes);\n };\n\n MP4.stbl = function stbl(track) {\n return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));\n };\n\n MP4.avc1 = function avc1(track) {\n var sps = [],\n pps = [],\n i = void 0,\n data = void 0,\n len = void 0;\n // assemble the SPSs\n\n for (i = 0; i < track.sps.length; i++) {\n data = track.sps[i];\n len = data.byteLength;\n sps.push(len >>> 8 & 0xFF);\n sps.push(len & 0xFF);\n sps = sps.concat(Array.prototype.slice.call(data)); // SPS\n }\n\n // assemble the PPSs\n for (i = 0; i < track.pps.length; i++) {\n data = track.pps[i];\n len = data.byteLength;\n pps.push(len >>> 8 & 0xFF);\n pps.push(len & 0xFF);\n pps = pps.concat(Array.prototype.slice.call(data));\n }\n\n var avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01, // version\n sps[3], // profile\n sps[4], // profile compat\n sps[5], // level\n 0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes\n 0xE0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(sps).concat([track.pps.length // numOfPictureParameterSets\n ]).concat(pps))),\n // \"PPS\"\n width = track.width,\n height = track.height,\n hSpacing = track.pixelRatio[0],\n vSpacing = track.pixelRatio[1];\n\n return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n width >> 8 & 0xFF, width & 0xff, // width\n height >> 8 & 0xFF, height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n 0x12, 0x64, 0x61, 0x69, 0x6C, // dailymotion/hls.js\n 0x79, 0x6D, 0x6F, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x68, 0x6C, 0x73, 0x2E, 0x6A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // compressorname\n 0x00, 0x18, // depth = 24\n 0x11, 0x11]), // pre_defined = -1\n avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0])), // avgBitrate\n MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24, // hSpacing\n hSpacing >> 16 & 0xFF, hSpacing >> 8 & 0xFF, hSpacing & 0xFF, vSpacing >> 24, // vSpacing\n vSpacing >> 16 & 0xFF, vSpacing >> 8 & 0xFF, vSpacing & 0xFF])));\n };\n\n MP4.esds = function esds(track) {\n var configlen = track.config.length;\n return new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n\n 0x03, // descriptor_type\n 0x17 + configlen, // length\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0f + configlen, // length\n 0x40, // codec : mpeg4_audio\n 0x15, // stream_type\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor\n };\n\n MP4.mp4a = function mp4a(track) {\n var samplerate = track.samplerate;\n return MP4.box(MP4.types.mp4a, new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n samplerate >> 8 & 0xFF, samplerate & 0xff, //\n 0x00, 0x00]), MP4.box(MP4.types.esds, MP4.esds(track)));\n };\n\n MP4.mp3 = function mp3(track) {\n var samplerate = track.samplerate;\n return MP4.box(MP4.types['.mp3'], new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n samplerate >> 8 & 0xFF, samplerate & 0xff, //\n 0x00, 0x00]));\n };\n\n MP4.stsd = function stsd(track) {\n if (track.type === 'audio') {\n if (!track.isAAC && track.codec === 'mp3') return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track));\n\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n } else {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n }\n };\n\n MP4.tkhd = function tkhd(track) {\n var id = track.id,\n duration = track.duration * track.timescale,\n width = track.width,\n height = track.height,\n upperWordDuration = Math.floor(duration / (UINT32_MAX + 1)),\n lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.tkhd, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x07, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n id >> 24 & 0xFF, id >> 16 & 0xFF, id >> 8 & 0xFF, id & 0xFF, // track_ID\n 0x00, 0x00, 0x00, 0x00, // reserved\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, // layer\n 0x00, 0x00, // alternate_group\n 0x00, 0x00, // non-audio track volume\n 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n width >> 8 & 0xFF, width & 0xFF, 0x00, 0x00, // width\n height >> 8 & 0xFF, height & 0xFF, 0x00, 0x00 // height\n ]));\n };\n\n MP4.traf = function traf(track, baseMediaDecodeTime) {\n var sampleDependencyTable = MP4.sdtp(track),\n id = track.id,\n upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1)),\n lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n id >> 24, id >> 16 & 0XFF, id >> 8 & 0XFF, id & 0xFF]) // track_ID\n ), MP4.box(MP4.types.tfdt, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0XFF, upperWordBaseMediaDecodeTime >> 8 & 0XFF, upperWordBaseMediaDecodeTime & 0xFF, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0XFF, lowerWordBaseMediaDecodeTime >> 8 & 0XFF, lowerWordBaseMediaDecodeTime & 0xFF])), MP4.trun(track, sampleDependencyTable.length + 16 + // tfhd\n 20 + // tfdt\n 8 + // traf header\n 16 + // mfhd\n 8 + // moof header\n 8), // mdat header\n sampleDependencyTable);\n };\n\n /**\n * Generate a track box.\n * @param track {object} a track definition\n * @return {Uint8Array} the track box\n */\n\n\n MP4.trak = function trak(track) {\n track.duration = track.duration || 0xffffffff;\n return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n };\n\n MP4.trex = function trex(track) {\n var id = track.id;\n return MP4.box(MP4.types.trex, new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n id >> 24, id >> 16 & 0XFF, id >> 8 & 0XFF, id & 0xFF, // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]));\n };\n\n MP4.trun = function trun(track, offset) {\n var samples = track.samples || [],\n len = samples.length,\n arraylen = 12 + 16 * len,\n array = new Uint8Array(arraylen),\n i = void 0,\n sample = void 0,\n duration = void 0,\n size = void 0,\n flags = void 0,\n cts = void 0;\n offset += 8 + arraylen;\n array.set([0x00, // version 0\n 0x00, 0x0f, 0x01, // flags\n len >>> 24 & 0xFF, len >>> 16 & 0xFF, len >>> 8 & 0xFF, len & 0xFF, // sample_count\n offset >>> 24 & 0xFF, offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF // data_offset\n ], 0);\n for (i = 0; i < len; i++) {\n sample = samples[i];\n duration = sample.duration;\n size = sample.size;\n flags = sample.flags;\n cts = sample.cts;\n array.set([duration >>> 24 & 0xFF, duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, // sample_duration\n size >>> 24 & 0xFF, size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, // sample_size\n flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xF0 << 8, flags.degradPrio & 0x0F, // sample_flags\n cts >>> 24 & 0xFF, cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF // sample_composition_time_offset\n ], 12 + 16 * i);\n }\n return MP4.box(MP4.types.trun, array);\n };\n\n MP4.initSegment = function initSegment(tracks) {\n if (!MP4.types) MP4.init();\n\n var movie = MP4.moov(tracks),\n result = void 0;\n result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength);\n result.set(MP4.FTYP);\n result.set(movie, MP4.FTYP.byteLength);\n return result;\n };\n\n return MP4;\n}();\n\n/* harmony default export */ var mp4_generator = (MP4);\n// CONCATENATED MODULE: ./src/remux/mp4-remuxer.js\nfunction mp4_remuxer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * fMP4 remuxer\n*/\n\n\n\n\n\n\n\n// 10 seconds\nvar MAX_SILENT_FRAME_DURATION = 10 * 1000;\n\nvar mp4_remuxer_MP4Remuxer = function () {\n function MP4Remuxer(observer, config, typeSupported, vendor) {\n mp4_remuxer__classCallCheck(this, MP4Remuxer);\n\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n var userAgent = navigator.userAgent;\n this.isSafari = vendor && vendor.indexOf('Apple') > -1 && userAgent && !userAgent.match('CriOS');\n this.ISGenerated = false;\n }\n\n MP4Remuxer.prototype.destroy = function destroy() {};\n\n MP4Remuxer.prototype.resetTimeStamp = function resetTimeStamp(defaultTimeStamp) {\n this._initPTS = this._initDTS = defaultTimeStamp;\n };\n\n MP4Remuxer.prototype.resetInitSegment = function resetInitSegment() {\n this.ISGenerated = false;\n };\n\n MP4Remuxer.prototype.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) {\n // generate Init Segment if needed\n if (!this.ISGenerated) this.generateIS(audioTrack, videoTrack, timeOffset);\n\n if (this.ISGenerated) {\n var nbAudioSamples = audioTrack.samples.length;\n var nbVideoSamples = videoTrack.samples.length;\n var audioTimeOffset = timeOffset;\n var videoTimeOffset = timeOffset;\n if (nbAudioSamples && nbVideoSamples) {\n // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS)\n // if first audio DTS is not aligned with first video DTS then we need to take that into account\n // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small\n // drift between audio and video streams\n var audiovideoDeltaDts = (audioTrack.samples[0].dts - videoTrack.samples[0].dts) / videoTrack.inputTimeScale;\n audioTimeOffset += Math.max(0, audiovideoDeltaDts);\n videoTimeOffset += Math.max(0, -audiovideoDeltaDts);\n }\n // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is\n // calculated in remuxAudio.\n // logger.log('nb AAC samples:' + audioTrack.samples.length);\n if (nbAudioSamples) {\n // if initSegment was generated without video samples, regenerate it again\n if (!audioTrack.timescale) {\n logger[\"b\" /* logger */].warn('regenerate InitSegment as audio detected');\n this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n var audioData = this.remuxAudio(audioTrack, audioTimeOffset, contiguous, accurateTimeOffset);\n // logger.log('nb AVC samples:' + videoTrack.samples.length);\n if (nbVideoSamples) {\n var audioTrackLength = void 0;\n if (audioData) audioTrackLength = audioData.endPTS - audioData.startPTS;\n\n // if initSegment was generated without video samples, regenerate it again\n if (!videoTrack.timescale) {\n logger[\"b\" /* logger */].warn('regenerate InitSegment as video detected');\n this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n this.remuxVideo(videoTrack, videoTimeOffset, contiguous, audioTrackLength, accurateTimeOffset);\n }\n } else {\n // logger.log('nb AVC samples:' + videoTrack.samples.length);\n if (nbVideoSamples) {\n var videoData = this.remuxVideo(videoTrack, videoTimeOffset, contiguous, 0, accurateTimeOffset);\n if (videoData && audioTrack.codec) this.remuxEmptyAudio(audioTrack, audioTimeOffset, contiguous, videoData);\n }\n }\n }\n // logger.log('nb ID3 samples:' + audioTrack.samples.length);\n if (id3Track.samples.length) this.remuxID3(id3Track, timeOffset);\n\n // logger.log('nb ID3 samples:' + audioTrack.samples.length);\n if (textTrack.samples.length) this.remuxText(textTrack, timeOffset);\n\n // notify end of parsing\n this.observer.trigger(events[\"a\" /* default */].FRAG_PARSED);\n };\n\n MP4Remuxer.prototype.generateIS = function generateIS(audioTrack, videoTrack, timeOffset) {\n var observer = this.observer,\n audioSamples = audioTrack.samples,\n videoSamples = videoTrack.samples,\n typeSupported = this.typeSupported,\n container = 'audio/mp4',\n tracks = {},\n data = { tracks: tracks },\n computePTSDTS = this._initPTS === undefined,\n initPTS = void 0,\n initDTS = void 0;\n\n if (computePTSDTS) initPTS = initDTS = Infinity;\n\n if (audioTrack.config && audioSamples.length) {\n // let's use audio sampling rate as MP4 time scale.\n // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC)\n // using audio sampling rate here helps having an integer MP4 frame duration\n // this avoids potential rounding issue and AV sync issue\n audioTrack.timescale = audioTrack.samplerate;\n logger[\"b\" /* logger */].log('audio sampling rate : ' + audioTrack.samplerate);\n if (!audioTrack.isAAC) {\n if (typeSupported.mpeg) {\n // Chrome and Safari\n container = 'audio/mpeg';\n audioTrack.codec = '';\n } else if (typeSupported.mp3) {\n // Firefox\n audioTrack.codec = 'mp3';\n }\n }\n tracks.audio = {\n container: container,\n codec: audioTrack.codec,\n initSegment: !audioTrack.isAAC && typeSupported.mpeg ? new Uint8Array() : mp4_generator.initSegment([audioTrack]),\n metadata: {\n channelCount: audioTrack.channelCount\n }\n };\n if (computePTSDTS) {\n // remember first PTS of this demuxing context. for audio, PTS = DTS\n initPTS = initDTS = audioSamples[0].pts - audioTrack.inputTimeScale * timeOffset;\n }\n }\n\n if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n // let's use input time scale as MP4 video timescale\n // we use input time scale straight away to avoid rounding issues on frame duration / cts computation\n var inputTimeScale = videoTrack.inputTimeScale;\n videoTrack.timescale = inputTimeScale;\n tracks.video = {\n container: 'video/mp4',\n codec: videoTrack.codec,\n initSegment: mp4_generator.initSegment([videoTrack]),\n metadata: {\n width: videoTrack.width,\n height: videoTrack.height\n }\n };\n if (computePTSDTS) {\n initPTS = Math.min(initPTS, videoSamples[0].pts - inputTimeScale * timeOffset);\n initDTS = Math.min(initDTS, videoSamples[0].dts - inputTimeScale * timeOffset);\n this.observer.trigger(events[\"a\" /* default */].INIT_PTS_FOUND, { initPTS: initPTS });\n }\n }\n\n if (Object.keys(tracks).length) {\n observer.trigger(events[\"a\" /* default */].FRAG_PARSING_INIT_SEGMENT, data);\n this.ISGenerated = true;\n if (computePTSDTS) {\n this._initPTS = initPTS;\n this._initDTS = initDTS;\n }\n } else {\n observer.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].FRAG_PARSING_ERROR, fatal: false, reason: 'no audio/video samples found' });\n }\n };\n\n MP4Remuxer.prototype.remuxVideo = function remuxVideo(track, timeOffset, contiguous, audioTrackLength, accurateTimeOffset) {\n var offset = 8,\n timeScale = track.timescale,\n mp4SampleDuration = void 0,\n mdat = void 0,\n moof = void 0,\n firstPTS = void 0,\n firstDTS = void 0,\n nextDTS = void 0,\n lastPTS = void 0,\n lastDTS = void 0,\n inputSamples = track.samples,\n outputSamples = [],\n nbSamples = inputSamples.length,\n ptsNormalize = this._PTSNormalize,\n initDTS = this._initDTS;\n\n // for (let i = 0; i < track.samples.length; i++) {\n // let avcSample = track.samples[i];\n // let units = avcSample.units;\n // let unitsString = '';\n // for (let j = 0; j < units.length ; j++) {\n // unitsString += units[j].type + ',';\n // if (units[j].data.length < 500) {\n // unitsString += Hex.hexDump(units[j].data);\n // }\n // }\n // logger.log(avcSample.pts + '/' + avcSample.dts + ',' + unitsString + avcSample.units.length);\n // }\n\n // if parsed fragment is contiguous with last one, let's use last DTS value as reference\n var nextAvcDts = this.nextAvcDts;\n\n var isSafari = this.isSafari;\n\n if (nbSamples === 0) return;\n\n // Safari does not like overlapping DTS on consecutive fragments. let's use nextAvcDts to overcome this if fragments are consecutive\n if (isSafari) {\n // also consider consecutive fragments as being contiguous (even if a level switch occurs),\n // for sake of clarity:\n // consecutive fragments are frags with\n // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR\n // - less than 200 ms PTS gaps (timeScale/5)\n contiguous |= inputSamples.length && nextAvcDts && (accurateTimeOffset && Math.abs(timeOffset - nextAvcDts / timeScale) < 0.1 || Math.abs(inputSamples[0].pts - nextAvcDts - initDTS) < timeScale / 5);\n }\n\n if (!contiguous) {\n // if not contiguous, let's use target timeOffset\n nextAvcDts = timeOffset * timeScale;\n }\n\n // PTS is coded on 33bits, and can loop from -2^32 to 2^32\n // ptsNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value\n inputSamples.forEach(function (sample) {\n sample.pts = ptsNormalize(sample.pts - initDTS, nextAvcDts);\n sample.dts = ptsNormalize(sample.dts - initDTS, nextAvcDts);\n });\n\n // sort video samples by DTS then PTS then demux id order\n inputSamples.sort(function (a, b) {\n var deltadts = a.dts - b.dts;\n var deltapts = a.pts - b.pts;\n return deltadts || deltapts || a.id - b.id;\n });\n\n // handle broken streams with PTS < DTS, tolerance up 200ms (18000 in 90kHz timescale)\n var PTSDTSshift = inputSamples.reduce(function (prev, curr) {\n return Math.max(Math.min(prev, curr.pts - curr.dts), -18000);\n }, 0);\n if (PTSDTSshift < 0) {\n logger[\"b\" /* logger */].warn('PTS < DTS detected in video samples, shifting DTS by ' + Math.round(PTSDTSshift / 90) + ' ms to overcome this issue');\n for (var i = 0; i < inputSamples.length; i++) {\n inputSamples[i].dts += PTSDTSshift;\n }\n }\n\n // compute first DTS and last DTS, normalize them against reference value\n var sample = inputSamples[0];\n firstDTS = Math.max(sample.dts, 0);\n firstPTS = Math.max(sample.pts, 0);\n\n // check timestamp continuity accross consecutive fragments (this is to remove inter-fragment gap/hole)\n var delta = Math.round((firstDTS - nextAvcDts) / 90);\n // if fragment are contiguous, detect hole/overlapping between fragments\n if (contiguous) {\n if (delta) {\n if (delta > 1) logger[\"b\" /* logger */].log('AVC:' + delta + ' ms hole between fragments detected,filling it');else if (delta < -1) logger[\"b\" /* logger */].log('AVC:' + -delta + ' ms overlapping between fragments detected');\n\n // remove hole/gap : set DTS to next expected DTS\n firstDTS = nextAvcDts;\n inputSamples[0].dts = firstDTS;\n // offset PTS as well, ensure that PTS is smaller or equal than new DTS\n firstPTS = Math.max(firstPTS - delta, nextAvcDts);\n inputSamples[0].pts = firstPTS;\n logger[\"b\" /* logger */].log('Video/PTS/DTS adjusted: ' + Math.round(firstPTS / 90) + '/' + Math.round(firstDTS / 90) + ',delta:' + delta + ' ms');\n }\n }\n nextDTS = firstDTS;\n\n // compute lastPTS/lastDTS\n sample = inputSamples[inputSamples.length - 1];\n lastDTS = Math.max(sample.dts, 0);\n lastPTS = Math.max(sample.pts, 0, lastDTS);\n\n // on Safari let's signal the same sample duration for all samples\n // sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS\n // set this constant duration as being the avg delta between consecutive DTS.\n if (isSafari) mp4SampleDuration = Math.round((lastDTS - firstDTS) / (inputSamples.length - 1));\n\n var nbNalu = 0,\n naluLen = 0;\n for (var _i = 0; _i < nbSamples; _i++) {\n // compute total/avc sample length and nb of NAL units\n var _sample = inputSamples[_i],\n units = _sample.units,\n nbUnits = units.length,\n sampleLen = 0;\n for (var j = 0; j < nbUnits; j++) {\n sampleLen += units[j].data.length;\n }naluLen += sampleLen;\n nbNalu += nbUnits;\n _sample.length = sampleLen;\n\n // normalize PTS/DTS\n if (isSafari) {\n // sample DTS is computed using a constant decoding offset (mp4SampleDuration) between samples\n _sample.dts = firstDTS + _i * mp4SampleDuration;\n } else {\n // ensure sample monotonic DTS\n _sample.dts = Math.max(_sample.dts, firstDTS);\n }\n // ensure that computed value is greater or equal than sample DTS\n _sample.pts = Math.max(_sample.pts, _sample.dts);\n }\n\n /* concatenate the video data and construct the mdat in place\n (need 8 more bytes to fill length and mpdat type) */\n var mdatSize = naluLen + 4 * nbNalu + 8;\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MUX_ERROR, details: errors[\"a\" /* ErrorDetails */].REMUX_ALLOC_ERROR, fatal: false, bytes: mdatSize, reason: 'fail allocating video mdat ' + mdatSize });\n return;\n }\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(mp4_generator.types.mdat, 4);\n\n for (var _i2 = 0; _i2 < nbSamples; _i2++) {\n var avcSample = inputSamples[_i2],\n avcSampleUnits = avcSample.units,\n mp4SampleLength = 0,\n compositionTimeOffset = void 0;\n // convert NALU bitstream to MP4 format (prepend NALU with size field)\n for (var _j = 0, _nbUnits = avcSampleUnits.length; _j < _nbUnits; _j++) {\n var unit = avcSampleUnits[_j],\n unitData = unit.data,\n unitDataLen = unit.data.byteLength;\n view.setUint32(offset, unitDataLen);\n offset += 4;\n mdat.set(unitData, offset);\n offset += unitDataLen;\n mp4SampleLength += 4 + unitDataLen;\n }\n\n if (!isSafari) {\n // expected sample duration is the Decoding Timestamp diff of consecutive samples\n if (_i2 < nbSamples - 1) {\n mp4SampleDuration = inputSamples[_i2 + 1].dts - avcSample.dts;\n } else {\n var config = this.config,\n lastFrameDuration = avcSample.dts - inputSamples[_i2 > 0 ? _i2 - 1 : _i2].dts;\n if (config.stretchShortVideoTrack) {\n // In some cases, a segment's audio track duration may exceed the video track duration.\n // Since we've already remuxed audio, and we know how long the audio track is, we look to\n // see if the delta to the next segment is longer than maxBufferHole.\n // If so, playback would potentially get stuck, so we artificially inflate\n // the duration of the last frame to minimize any potential gap between segments.\n var maxBufferHole = config.maxBufferHole,\n gapTolerance = Math.floor(maxBufferHole * timeScale),\n deltaToFrameEnd = (audioTrackLength ? firstPTS + audioTrackLength * timeScale : this.nextAudioPts) - avcSample.pts;\n if (deltaToFrameEnd > gapTolerance) {\n // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video\n // frame overlap. maxBufferHole should be >> lastFrameDuration anyway.\n mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n if (mp4SampleDuration < 0) mp4SampleDuration = lastFrameDuration;\n\n logger[\"b\" /* logger */].log('It is approximately ' + deltaToFrameEnd / 90 + ' ms to the next segment; using duration ' + mp4SampleDuration / 90 + ' ms for the last video frame.');\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n }\n compositionTimeOffset = Math.round(avcSample.pts - avcSample.dts);\n } else {\n compositionTimeOffset = Math.max(0, mp4SampleDuration * Math.round((avcSample.pts - avcSample.dts) / mp4SampleDuration));\n }\n\n // console.log('PTS/DTS/initDTS/normPTS/normDTS/relative PTS : ${avcSample.pts}/${avcSample.dts}/${initDTS}/${ptsnorm}/${dtsnorm}/${(avcSample.pts/4294967296).toFixed(3)}');\n outputSamples.push({\n size: mp4SampleLength,\n // constant duration\n duration: mp4SampleDuration,\n cts: compositionTimeOffset,\n flags: {\n isLeading: 0,\n isDependedOn: 0,\n hasRedundancy: 0,\n degradPrio: 0,\n dependsOn: avcSample.key ? 2 : 1,\n isNonSync: avcSample.key ? 0 : 1\n }\n });\n }\n // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale)\n this.nextAvcDts = lastDTS + mp4SampleDuration;\n var dropped = track.dropped;\n track.len = 0;\n track.nbNalu = 0;\n track.dropped = 0;\n if (outputSamples.length && navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {\n var flags = outputSamples[0].flags;\n // chrome workaround, mark first sample as being a Random Access Point to avoid sourcebuffer append issue\n // https://code.google.com/p/chromium/issues/detail?id=229412\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n }\n track.samples = outputSamples;\n moof = mp4_generator.moof(track.sequenceNumber++, firstDTS, track);\n track.samples = [];\n\n var data = {\n data1: moof,\n data2: mdat,\n startPTS: firstPTS / timeScale,\n endPTS: (lastPTS + mp4SampleDuration) / timeScale,\n startDTS: firstDTS / timeScale,\n endDTS: this.nextAvcDts / timeScale,\n type: 'video',\n hasAudio: false,\n hasVideo: true,\n nb: outputSamples.length,\n dropped: dropped\n };\n this.observer.trigger(events[\"a\" /* default */].FRAG_PARSING_DATA, data);\n return data;\n };\n\n MP4Remuxer.prototype.remuxAudio = function remuxAudio(track, timeOffset, contiguous, accurateTimeOffset) {\n var inputTimeScale = track.inputTimeScale,\n mp4timeScale = track.timescale,\n scaleFactor = inputTimeScale / mp4timeScale,\n mp4SampleDuration = track.isAAC ? 1024 : 1152,\n inputSampleDuration = mp4SampleDuration * scaleFactor,\n ptsNormalize = this._PTSNormalize,\n initDTS = this._initDTS,\n rawMPEG = !track.isAAC && this.typeSupported.mpeg;\n\n var offset = void 0,\n mp4Sample = void 0,\n fillFrame = void 0,\n mdat = void 0,\n moof = void 0,\n firstPTS = void 0,\n lastPTS = void 0,\n inputSamples = track.samples,\n outputSamples = [],\n nextAudioPts = this.nextAudioPts;\n\n // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs),\n // for sake of clarity:\n // consecutive fragments are frags with\n // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR\n // - less than 20 audio frames distance\n // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)\n // this helps ensuring audio continuity\n // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame\n contiguous |= inputSamples.length && nextAudioPts && (accurateTimeOffset && Math.abs(timeOffset - nextAudioPts / inputTimeScale) < 0.1 || Math.abs(inputSamples[0].pts - nextAudioPts - initDTS) < 20 * inputSampleDuration);\n\n // compute normalized PTS\n inputSamples.forEach(function (sample) {\n sample.pts = sample.dts = ptsNormalize(sample.pts - initDTS, timeOffset * inputTimeScale);\n });\n\n // filter out sample with negative PTS that are not playable anyway\n // if we don't remove these negative samples, they will shift all audio samples forward.\n // leading to audio overlap between current / next fragment\n inputSamples = inputSamples.filter(function (sample) {\n return sample.pts >= 0;\n });\n\n // in case all samples have negative PTS, and have been filtered out, return now\n if (inputSamples.length === 0) return;\n\n if (!contiguous) {\n if (!accurateTimeOffset) {\n // if frag are mot contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS\n nextAudioPts = inputSamples[0].pts;\n } else {\n // if timeOffset is accurate, let's use it as predicted next audio PTS\n nextAudioPts = timeOffset * inputTimeScale;\n }\n }\n\n // If the audio track is missing samples, the frames seem to get \"left-shifted\" within the\n // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment.\n // In an effort to prevent this from happening, we inject frames here where there are gaps.\n // When possible, we inject a silent frame; when that's not possible, we duplicate the last\n // frame.\n\n if (track.isAAC) {\n var maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n for (var i = 0, nextPts = nextAudioPts; i < inputSamples.length;) {\n // First, let's see how far off this frame is from where we expect it to be\n var sample = inputSamples[i],\n delta;\n var pts = sample.pts;\n delta = pts - nextPts;\n\n var duration = Math.abs(1000 * delta / inputTimeScale);\n\n // If we're overlapping by more than a duration, drop this sample\n if (delta <= -maxAudioFramesDrift * inputSampleDuration) {\n logger[\"b\" /* logger */].warn('Dropping 1 audio frame @ ' + (nextPts / inputTimeScale).toFixed(3) + 's due to ' + Math.round(duration) + ' ms overlap.');\n inputSamples.splice(i, 1);\n track.len -= sample.unit.length;\n // Don't touch nextPtsNorm or i\n } // eslint-disable-line brace-style\n\n // Insert missing frames if:\n // 1: We're more than maxAudioFramesDrift frame away\n // 2: Not more than MAX_SILENT_FRAME_DURATION away\n // 3: currentTime (aka nextPtsNorm) is not 0\n else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && nextPts) {\n var missing = Math.round(delta / inputSampleDuration);\n logger[\"b\" /* logger */].warn('Injecting ' + missing + ' audio frame @ ' + (nextPts / inputTimeScale).toFixed(3) + 's due to ' + Math.round(1000 * delta / inputTimeScale) + ' ms gap.');\n for (var j = 0; j < missing; j++) {\n var newStamp = Math.max(nextPts, 0);\n fillFrame = aac.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n if (!fillFrame) {\n logger[\"b\" /* logger */].log('Unable to get silent frame for given audio codec; duplicating last frame instead.');\n fillFrame = sample.unit.subarray();\n }\n inputSamples.splice(i, 0, { unit: fillFrame, pts: newStamp, dts: newStamp });\n track.len += fillFrame.length;\n nextPts += inputSampleDuration;\n i++;\n }\n\n // Adjust sample to next expected pts\n sample.pts = sample.dts = nextPts;\n nextPts += inputSampleDuration;\n i++;\n } else {\n // Otherwise, just adjust pts\n if (Math.abs(delta) > 0.1 * inputSampleDuration) {\n // logger.log(`Invalid frame delta ${Math.round(delta + inputSampleDuration)} at PTS ${Math.round(pts / 90)} (should be ${Math.round(inputSampleDuration)}).`);\n }\n sample.pts = sample.dts = nextPts;\n nextPts += inputSampleDuration;\n i++;\n }\n }\n }\n\n for (var _j2 = 0, _nbSamples = inputSamples.length; _j2 < _nbSamples; _j2++) {\n var audioSample = inputSamples[_j2];\n var unit = audioSample.unit;\n var _pts = audioSample.pts;\n // logger.log(`Audio/PTS:${Math.round(pts/90)}`);\n // if not first sample\n if (lastPTS !== undefined) {\n mp4Sample.duration = Math.round((_pts - lastPTS) / scaleFactor);\n } else {\n var _delta = Math.round(1000 * (_pts - nextAudioPts) / inputTimeScale),\n numMissingFrames = 0;\n // if fragment are contiguous, detect hole/overlapping between fragments\n // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)\n if (contiguous && track.isAAC) {\n // log delta\n if (_delta) {\n if (_delta > 0 && _delta < MAX_SILENT_FRAME_DURATION) {\n numMissingFrames = Math.round((_pts - nextAudioPts) / inputSampleDuration);\n logger[\"b\" /* logger */].log(_delta + ' ms hole between AAC samples detected,filling it');\n if (numMissingFrames > 0) {\n fillFrame = aac.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n if (!fillFrame) fillFrame = unit.subarray();\n\n track.len += numMissingFrames * fillFrame.length;\n }\n // if we have frame overlap, overlapping for more than half a frame duraion\n } else if (_delta < -12) {\n // drop overlapping audio frames... browser will deal with it\n logger[\"b\" /* logger */].log('drop overlapping AAC sample, expected/parsed/delta:' + (nextAudioPts / inputTimeScale).toFixed(3) + 's/' + (_pts / inputTimeScale).toFixed(3) + 's/' + -_delta + 'ms');\n track.len -= unit.byteLength;\n continue;\n }\n // set PTS/DTS to expected PTS/DTS\n _pts = nextAudioPts;\n }\n }\n // remember first PTS of our audioSamples\n firstPTS = _pts;\n if (track.len > 0) {\n /* concatenate the audio data and construct the mdat in place\n (need 8 more bytes to fill length and mdat type) */\n var mdatSize = rawMPEG ? track.len : track.len + 8;\n offset = rawMPEG ? 0 : 8;\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MUX_ERROR, details: errors[\"a\" /* ErrorDetails */].REMUX_ALLOC_ERROR, fatal: false, bytes: mdatSize, reason: 'fail allocating audio mdat ' + mdatSize });\n return;\n }\n if (!rawMPEG) {\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(mp4_generator.types.mdat, 4);\n }\n } else {\n // no audio samples\n return;\n }\n for (var _i3 = 0; _i3 < numMissingFrames; _i3++) {\n fillFrame = aac.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n if (!fillFrame) {\n logger[\"b\" /* logger */].log('Unable to get silent frame for given audio codec; duplicating this frame instead.');\n fillFrame = unit.subarray();\n }\n mdat.set(fillFrame, offset);\n offset += fillFrame.byteLength;\n mp4Sample = {\n size: fillFrame.byteLength,\n cts: 0,\n duration: 1024,\n flags: {\n isLeading: 0,\n isDependedOn: 0,\n hasRedundancy: 0,\n degradPrio: 0,\n dependsOn: 1\n }\n };\n outputSamples.push(mp4Sample);\n }\n }\n mdat.set(unit, offset);\n var unitLen = unit.byteLength;\n offset += unitLen;\n // console.log('PTS/DTS/initDTS/normPTS/normDTS/relative PTS : ${audioSample.pts}/${audioSample.dts}/${initDTS}/${ptsnorm}/${dtsnorm}/${(audioSample.pts/4294967296).toFixed(3)}');\n mp4Sample = {\n size: unitLen,\n cts: 0,\n duration: 0,\n flags: {\n isLeading: 0,\n isDependedOn: 0,\n hasRedundancy: 0,\n degradPrio: 0,\n dependsOn: 1\n }\n };\n outputSamples.push(mp4Sample);\n lastPTS = _pts;\n }\n var lastSampleDuration = 0;\n var nbSamples = outputSamples.length;\n // set last sample duration as being identical to previous sample\n if (nbSamples >= 2) {\n lastSampleDuration = outputSamples[nbSamples - 2].duration;\n mp4Sample.duration = lastSampleDuration;\n }\n if (nbSamples) {\n // next audio sample PTS should be equal to last sample PTS + duration\n this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSampleDuration;\n // logger.log('Audio/PTS/PTSend:' + audioSample.pts.toFixed(0) + '/' + this.nextAacDts.toFixed(0));\n track.len = 0;\n track.samples = outputSamples;\n if (rawMPEG) moof = new Uint8Array();else moof = mp4_generator.moof(track.sequenceNumber++, firstPTS / scaleFactor, track);\n\n track.samples = [];\n var start = firstPTS / inputTimeScale;\n var end = nextAudioPts / inputTimeScale;\n var audioData = {\n data1: moof,\n data2: mdat,\n startPTS: start,\n endPTS: end,\n startDTS: start,\n endDTS: end,\n type: 'audio',\n hasAudio: true,\n hasVideo: false,\n nb: nbSamples\n };\n this.observer.trigger(events[\"a\" /* default */].FRAG_PARSING_DATA, audioData);\n return audioData;\n }\n return null;\n };\n\n MP4Remuxer.prototype.remuxEmptyAudio = function remuxEmptyAudio(track, timeOffset, contiguous, videoData) {\n var inputTimeScale = track.inputTimeScale,\n mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale,\n scaleFactor = inputTimeScale / mp4timeScale,\n nextAudioPts = this.nextAudioPts,\n\n\n // sync with video's timestamp\n startDTS = (nextAudioPts !== undefined ? nextAudioPts : videoData.startDTS * inputTimeScale) + this._initDTS,\n endDTS = videoData.endDTS * inputTimeScale + this._initDTS,\n\n // one sample's duration value\n sampleDuration = 1024,\n frameDuration = scaleFactor * sampleDuration,\n\n\n // samples count of this segment's duration\n nbSamples = Math.ceil((endDTS - startDTS) / frameDuration),\n\n\n // silent frame\n silentFrame = aac.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n\n logger[\"b\" /* logger */].warn('remux empty Audio');\n // Can't remux if we can't generate a silent frame...\n if (!silentFrame) {\n logger[\"b\" /* logger */].trace('Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!');\n return;\n }\n\n var samples = [];\n for (var i = 0; i < nbSamples; i++) {\n var stamp = startDTS + i * frameDuration;\n samples.push({ unit: silentFrame, pts: stamp, dts: stamp });\n track.len += silentFrame.length;\n }\n track.samples = samples;\n\n this.remuxAudio(track, timeOffset, contiguous);\n };\n\n MP4Remuxer.prototype.remuxID3 = function remuxID3(track, timeOffset) {\n var length = track.samples.length,\n sample = void 0;\n var inputTimeScale = track.inputTimeScale;\n var initPTS = this._initPTS;\n var initDTS = this._initDTS;\n // consume samples\n if (length) {\n for (var index = 0; index < length; index++) {\n sample = track.samples[index];\n // setting id3 pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n sample.pts = (sample.pts - initPTS) / inputTimeScale;\n sample.dts = (sample.dts - initDTS) / inputTimeScale;\n }\n this.observer.trigger(events[\"a\" /* default */].FRAG_PARSING_METADATA, {\n samples: track.samples\n });\n }\n\n track.samples = [];\n timeOffset = timeOffset;\n };\n\n MP4Remuxer.prototype.remuxText = function remuxText(track, timeOffset) {\n track.samples.sort(function (a, b) {\n return a.pts - b.pts;\n });\n\n var length = track.samples.length,\n sample = void 0;\n var inputTimeScale = track.inputTimeScale;\n var initPTS = this._initPTS;\n // consume samples\n if (length) {\n for (var index = 0; index < length; index++) {\n sample = track.samples[index];\n // setting text pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n sample.pts = (sample.pts - initPTS) / inputTimeScale;\n }\n this.observer.trigger(events[\"a\" /* default */].FRAG_PARSING_USERDATA, {\n samples: track.samples\n });\n }\n\n track.samples = [];\n timeOffset = timeOffset;\n };\n\n MP4Remuxer.prototype._PTSNormalize = function _PTSNormalize(value, reference) {\n var offset = void 0;\n if (reference === undefined) return value;\n\n if (reference < value) {\n // - 2^33\n offset = -8589934592;\n } else {\n // + 2^33\n offset = 8589934592;\n }\n /* PTS is 33bit (from 0 to 2^33 -1)\n if diff between value and reference is bigger than half of the amplitude (2^32) then it means that\n PTS looping occured. fill the gap */\n while (Math.abs(value - reference) > 4294967296) {\n value += offset;\n }return value;\n };\n\n return MP4Remuxer;\n}();\n\n/* harmony default export */ var mp4_remuxer = (mp4_remuxer_MP4Remuxer);\n// CONCATENATED MODULE: ./src/remux/passthrough-remuxer.js\nfunction passthrough_remuxer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * passthrough remuxer\n*/\n\n\nvar passthrough_remuxer_PassThroughRemuxer = function () {\n function PassThroughRemuxer(observer) {\n passthrough_remuxer__classCallCheck(this, PassThroughRemuxer);\n\n this.observer = observer;\n }\n\n PassThroughRemuxer.prototype.destroy = function destroy() {};\n\n PassThroughRemuxer.prototype.resetTimeStamp = function resetTimeStamp() {};\n\n PassThroughRemuxer.prototype.resetInitSegment = function resetInitSegment() {};\n\n PassThroughRemuxer.prototype.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset, rawData) {\n var observer = this.observer;\n var streamType = '';\n if (audioTrack) streamType += 'audio';\n\n if (videoTrack) streamType += 'video';\n\n observer.trigger(events[\"a\" /* default */].FRAG_PARSING_DATA, {\n data1: rawData,\n startPTS: timeOffset,\n startDTS: timeOffset,\n type: streamType,\n hasAudio: !!audioTrack,\n hasVideo: !!videoTrack,\n nb: 1,\n dropped: 0\n });\n // notify end of parsing\n observer.trigger(events[\"a\" /* default */].FRAG_PARSED);\n };\n\n return PassThroughRemuxer;\n}();\n\n/* harmony default export */ var passthrough_remuxer = (passthrough_remuxer_PassThroughRemuxer);\n// CONCATENATED MODULE: ./src/demux/demuxer-inline.js\nfunction demuxer_inline__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* inline demuxer.\n * probe fragments and instantiate appropriate demuxer depending on content type (TSDemuxer, AACDemuxer, ...)\n */\n\n\n\n\n\n\n\n\n\n\n\nvar demuxer_inline_DemuxerInline = function () {\n function DemuxerInline(observer, typeSupported, config, vendor) {\n demuxer_inline__classCallCheck(this, DemuxerInline);\n\n this.observer = observer;\n this.typeSupported = typeSupported;\n this.config = config;\n this.vendor = vendor;\n }\n\n DemuxerInline.prototype.destroy = function destroy() {\n var demuxer = this.demuxer;\n if (demuxer) demuxer.destroy();\n };\n\n DemuxerInline.prototype.push = function push(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS) {\n if (data.byteLength > 0 && decryptdata != null && decryptdata.key != null && decryptdata.method === 'AES-128') {\n var decrypter = this.decrypter;\n if (decrypter == null) decrypter = this.decrypter = new crypt_decrypter[\"a\" /* default */](this.observer, this.config);\n\n var localthis = this;\n // performance.now() not available on WebWorker, at least on Safari Desktop\n var startTime = void 0;\n try {\n startTime = performance.now();\n } catch (error) {\n startTime = Date.now();\n }\n decrypter.decrypt(data, decryptdata.key.buffer, decryptdata.iv.buffer, function (decryptedData) {\n var endTime = void 0;\n try {\n endTime = performance.now();\n } catch (error) {\n endTime = Date.now();\n }\n localthis.observer.trigger(events[\"a\" /* default */].FRAG_DECRYPTED, { stats: { tstart: startTime, tdecrypt: endTime } });\n localthis.pushDecrypted(new Uint8Array(decryptedData), decryptdata, new Uint8Array(initSegment), audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS);\n });\n } else {\n this.pushDecrypted(new Uint8Array(data), decryptdata, new Uint8Array(initSegment), audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS);\n }\n };\n\n DemuxerInline.prototype.pushDecrypted = function pushDecrypted(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS) {\n var demuxer = this.demuxer;\n if (!demuxer ||\n // in case of continuity change, or track switch\n // we might switch from content type (AAC container to TS container, or TS to fmp4 for example)\n // so let's check that current demuxer is still valid\n (discontinuity || trackSwitch) && !this.probe(data)) {\n var observer = this.observer;\n var typeSupported = this.typeSupported;\n var config = this.config;\n // probing order is TS/AAC/MP3/MP4\n var muxConfig = [{ demux: tsdemuxer, remux: mp4_remuxer }, { demux: mp4demuxer[\"a\" /* default */], remux: passthrough_remuxer }, { demux: aacdemuxer, remux: mp4_remuxer }, { demux: mp3demuxer, remux: mp4_remuxer }];\n\n // probe for content type\n for (var i = 0, len = muxConfig.length; i < len; i++) {\n var mux = muxConfig[i];\n var probe = mux.demux.probe;\n if (probe(data)) {\n var _remuxer = this.remuxer = new mux.remux(observer, config, typeSupported, this.vendor);\n demuxer = new mux.demux(observer, _remuxer, config, typeSupported);\n this.probe = probe;\n break;\n }\n }\n if (!demuxer) {\n observer.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].FRAG_PARSING_ERROR, fatal: true, reason: 'no demux matching with content found' });\n return;\n }\n this.demuxer = demuxer;\n }\n var remuxer = this.remuxer;\n\n if (discontinuity || trackSwitch) {\n demuxer.resetInitSegment(initSegment, audioCodec, videoCodec, duration);\n remuxer.resetInitSegment();\n }\n if (discontinuity) {\n demuxer.resetTimeStamp(defaultInitPTS);\n remuxer.resetTimeStamp(defaultInitPTS);\n }\n if (typeof demuxer.setDecryptData === 'function') demuxer.setDecryptData(decryptdata);\n\n demuxer.append(data, timeOffset, contiguous, accurateTimeOffset);\n };\n\n return DemuxerInline;\n}();\n\n/* harmony default export */ var demuxer_inline = __webpack_exports__[\"a\"] = (demuxer_inline_DemuxerInline);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\nvar cues_namespaceObject = {};\n__webpack_require__.d(cues_namespaceObject, \"newCue\", function() { return newCue; });\n\n// EXTERNAL MODULE: ./node_modules/url-toolkit/src/url-toolkit.js\nvar url_toolkit = __webpack_require__(3);\nvar url_toolkit_default = /*#__PURE__*/__webpack_require__.n(url_toolkit);\n\n// EXTERNAL MODULE: ./src/errors.js\nvar errors = __webpack_require__(2);\n\n// EXTERNAL MODULE: ./src/events.js\nvar events = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./src/utils/logger.js\nvar logger = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/event-handler.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*\n*\n* All objects in the event handling chain should inherit from this class\n*\n*/\n\n\n\n\n\nvar FORBIDDEN_EVENT_NAMES = new Set(['hlsEventGeneric', 'hlsHandlerDestroying', 'hlsHandlerDestroyed']);\n\nvar event_handler_EventHandler = function () {\n function EventHandler(hls) {\n _classCallCheck(this, EventHandler);\n\n this.hls = hls;\n this.onEvent = this.onEvent.bind(this);\n\n for (var _len = arguments.length, events = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n events[_key - 1] = arguments[_key];\n }\n\n this.handledEvents = events;\n this.useGenericHandler = true;\n\n this.registerListeners();\n }\n\n EventHandler.prototype.destroy = function destroy() {\n this.onHandlerDestroying();\n this.unregisterListeners();\n this.onHandlerDestroyed();\n };\n\n EventHandler.prototype.onHandlerDestroying = function onHandlerDestroying() {};\n\n EventHandler.prototype.onHandlerDestroyed = function onHandlerDestroyed() {};\n\n EventHandler.prototype.isEventHandler = function isEventHandler() {\n return _typeof(this.handledEvents) === 'object' && this.handledEvents.length && typeof this.onEvent === 'function';\n };\n\n EventHandler.prototype.registerListeners = function registerListeners() {\n if (this.isEventHandler()) {\n this.handledEvents.forEach(function (event) {\n if (FORBIDDEN_EVENT_NAMES.has(event)) throw new Error('Forbidden event-name: ' + event);\n\n this.hls.on(event, this.onEvent);\n }, this);\n }\n };\n\n EventHandler.prototype.unregisterListeners = function unregisterListeners() {\n if (this.isEventHandler()) {\n this.handledEvents.forEach(function (event) {\n this.hls.off(event, this.onEvent);\n }, this);\n }\n };\n\n /**\n * arguments: event (string), data (any)\n */\n\n\n EventHandler.prototype.onEvent = function onEvent(event, data) {\n this.onEventGeneric(event, data);\n };\n\n EventHandler.prototype.onEventGeneric = function onEventGeneric(event, data) {\n var eventToFunction = function eventToFunction(event, data) {\n var funcName = 'on' + event.replace('hls', '');\n if (typeof this[funcName] !== 'function') throw new Error('Event ' + event + ' has no generic handler in this ' + this.constructor.name + ' class (tried ' + funcName + ')');\n\n return this[funcName].bind(this, data);\n };\n try {\n eventToFunction.call(this, event, data).call();\n } catch (err) {\n logger[\"b\" /* logger */].error('An internal error happened while handling event ' + event + '. Error message: \"' + err.message + '\". Here is a stacktrace:', err);\n this.hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].OTHER_ERROR, details: errors[\"a\" /* ErrorDetails */].INTERNAL_EXCEPTION, fatal: false, event: event, err: err });\n }\n };\n\n return EventHandler;\n}();\n\n/* harmony default export */ var event_handler = (event_handler_EventHandler);\n// EXTERNAL MODULE: ./src/demux/mp4demuxer.js\nvar mp4demuxer = __webpack_require__(7);\n\n// CONCATENATED MODULE: ./src/loader/level-key.js\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction level_key__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\nvar level_key_LevelKey = function () {\n function LevelKey() {\n level_key__classCallCheck(this, LevelKey);\n\n this.method = null;\n this.key = null;\n this.iv = null;\n this._uri = null;\n }\n\n _createClass(LevelKey, [{\n key: 'uri',\n get: function get() {\n if (!this._uri && this.reluri) this._uri = url_toolkit_default.a.buildAbsoluteURL(this.baseuri, this.reluri, { alwaysNormalize: true });\n\n return this._uri;\n }\n }]);\n\n return LevelKey;\n}();\n\n/* harmony default export */ var level_key = (level_key_LevelKey);\n// CONCATENATED MODULE: ./src/loader/fragment.js\nvar fragment__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction fragment__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\nvar fragment_Fragment = function () {\n function Fragment() {\n var _elementaryStreams;\n\n fragment__classCallCheck(this, Fragment);\n\n this._url = null;\n this._byteRange = null;\n this._decryptdata = null;\n this.tagList = [];\n\n // Holds the types of data this fragment supports\n this._elementaryStreams = (_elementaryStreams = {}, _elementaryStreams[Fragment.ElementaryStreamTypes.AUDIO] = false, _elementaryStreams[Fragment.ElementaryStreamTypes.VIDEO] = false, _elementaryStreams);\n }\n\n /**\n * `type` property for this._elementaryStreams\n *\n * @enum\n */\n\n\n /**\n * @param {ElementaryStreamType} type\n */\n Fragment.prototype.addElementaryStream = function addElementaryStream(type) {\n this._elementaryStreams[type] = true;\n };\n\n /**\n * @param {ElementaryStreamType} type\n */\n\n\n Fragment.prototype.hasElementaryStream = function hasElementaryStream(type) {\n return this._elementaryStreams[type] === true;\n };\n\n /**\n * Utility method for parseLevelPlaylist to create an initialization vector for a given segment\n * @returns {Uint8Array}\n */\n\n\n Fragment.prototype.createInitializationVector = function createInitializationVector(segmentNumber) {\n var uint8View = new Uint8Array(16);\n\n for (var i = 12; i < 16; i++) {\n uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff;\n }return uint8View;\n };\n\n /**\n * Utility method for parseLevelPlaylist to get a fragment's decryption data from the currently parsed encryption key data\n * @param levelkey - a playlist's encryption info\n * @param segmentNumber - the fragment's segment number\n * @returns {*} - an object to be applied as a fragment's decryptdata\n */\n\n\n Fragment.prototype.fragmentDecryptdataFromLevelkey = function fragmentDecryptdataFromLevelkey(levelkey, segmentNumber) {\n var decryptdata = levelkey;\n\n if (levelkey && levelkey.method && levelkey.uri && !levelkey.iv) {\n decryptdata = new level_key();\n decryptdata.method = levelkey.method;\n decryptdata.baseuri = levelkey.baseuri;\n decryptdata.reluri = levelkey.reluri;\n decryptdata.iv = this.createInitializationVector(segmentNumber);\n }\n\n return decryptdata;\n };\n\n fragment__createClass(Fragment, [{\n key: 'url',\n get: function get() {\n if (!this._url && this.relurl) this._url = url_toolkit_default.a.buildAbsoluteURL(this.baseurl, this.relurl, { alwaysNormalize: true });\n\n return this._url;\n },\n set: function set(value) {\n this._url = value;\n }\n }, {\n key: 'programDateTime',\n get: function get() {\n if (!this._programDateTime && this.rawProgramDateTime) this._programDateTime = new Date(Date.parse(this.rawProgramDateTime));\n\n return this._programDateTime;\n }\n }, {\n key: 'byteRange',\n get: function get() {\n if (!this._byteRange && !this.rawByteRange) return [];\n\n if (this._byteRange) return this._byteRange;\n\n var byteRange = [];\n if (this.rawByteRange) {\n var params = this.rawByteRange.split('@', 2);\n if (params.length === 1) {\n var lastByteRangeEndOffset = this.lastByteRangeEndOffset;\n byteRange[0] = lastByteRangeEndOffset || 0;\n } else {\n byteRange[0] = parseInt(params[1]);\n }\n byteRange[1] = parseInt(params[0]) + byteRange[0];\n this._byteRange = byteRange;\n }\n return byteRange;\n }\n\n /**\n * @type {number}\n */\n\n }, {\n key: 'byteRangeStartOffset',\n get: function get() {\n return this.byteRange[0];\n }\n }, {\n key: 'byteRangeEndOffset',\n get: function get() {\n return this.byteRange[1];\n }\n }, {\n key: 'decryptdata',\n get: function get() {\n if (!this._decryptdata) this._decryptdata = this.fragmentDecryptdataFromLevelkey(this.levelkey, this.sn);\n\n return this._decryptdata;\n }\n }], [{\n key: 'ElementaryStreamTypes',\n get: function get() {\n return {\n AUDIO: 'audio',\n VIDEO: 'video'\n };\n }\n }]);\n\n return Fragment;\n}();\n\n/* harmony default export */ var loader_fragment = (fragment_Fragment);\n// CONCATENATED MODULE: ./src/utils/attr-list.js\nfunction attr_list__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/; // eslint-disable-line no-useless-escape\nvar ATTR_LIST_REGEX = /\\s*(.+?)\\s*=((?:\\\".*?\\\")|.*?)(?:,|$)/g; // eslint-disable-line no-useless-escape\n\n// adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js\n\nvar AttrList = function () {\n function AttrList(attrs) {\n attr_list__classCallCheck(this, AttrList);\n\n if (typeof attrs === 'string') attrs = AttrList.parseAttrList(attrs);\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) this[attr] = attrs[attr];\n }\n }\n\n AttrList.prototype.decimalInteger = function decimalInteger(attrName) {\n var intValue = parseInt(this[attrName], 10);\n if (intValue > Number.MAX_SAFE_INTEGER) return Infinity;\n\n return intValue;\n };\n\n AttrList.prototype.hexadecimalInteger = function hexadecimalInteger(attrName) {\n if (this[attrName]) {\n var stringValue = (this[attrName] || '0x').slice(2);\n stringValue = (stringValue.length & 1 ? '0' : '') + stringValue;\n\n var value = new Uint8Array(stringValue.length / 2);\n for (var i = 0; i < stringValue.length / 2; i++) {\n value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);\n }return value;\n } else {\n return null;\n }\n };\n\n AttrList.prototype.hexadecimalIntegerAsNumber = function hexadecimalIntegerAsNumber(attrName) {\n var intValue = parseInt(this[attrName], 16);\n if (intValue > Number.MAX_SAFE_INTEGER) return Infinity;\n\n return intValue;\n };\n\n AttrList.prototype.decimalFloatingPoint = function decimalFloatingPoint(attrName) {\n return parseFloat(this[attrName]);\n };\n\n AttrList.prototype.enumeratedString = function enumeratedString(attrName) {\n return this[attrName];\n };\n\n AttrList.prototype.decimalResolution = function decimalResolution(attrName) {\n var res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n if (res === null) return undefined;\n\n return {\n width: parseInt(res[1], 10),\n height: parseInt(res[2], 10)\n };\n };\n\n AttrList.parseAttrList = function parseAttrList(input) {\n var match = void 0,\n attrs = {};\n ATTR_LIST_REGEX.lastIndex = 0;\n while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n var value = match[2],\n quote = '\"';\n\n if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) value = value.slice(1, -1);\n\n attrs[match[1]] = value;\n }\n return attrs;\n };\n\n return AttrList;\n}();\n\n/* harmony default export */ var attr_list = (AttrList);\n// CONCATENATED MODULE: ./src/utils/codecs.js\n// from http://mp4ra.org/codecs.html\nvar sampleEntryCodesISO = {\n audio: {\n 'a3ds': true,\n 'ac-3': true,\n 'ac-4': true,\n 'alac': true,\n 'alaw': true,\n 'dra1': true,\n 'dts+': true,\n 'dts-': true,\n 'dtsc': true,\n 'dtse': true,\n 'dtsh': true,\n 'ec-3': true,\n 'enca': true,\n 'g719': true,\n 'g726': true,\n 'm4ae': true,\n 'mha1': true,\n 'mha2': true,\n 'mhm1': true,\n 'mhm2': true,\n 'mlpa': true,\n 'mp4a': true,\n 'raw ': true,\n 'Opus': true,\n 'samr': true,\n 'sawb': true,\n 'sawp': true,\n 'sevc': true,\n 'sqcp': true,\n 'ssmv': true,\n 'twos': true,\n 'ulaw': true\n },\n video: {\n 'avc1': true,\n 'avc2': true,\n 'avc3': true,\n 'avc4': true,\n 'avcp': true,\n 'drac': true,\n 'dvav': true,\n 'dvhe': true,\n 'encv': true,\n 'hev1': true,\n 'hvc1': true,\n 'mjp2': true,\n 'mp4v': true,\n 'mvc1': true,\n 'mvc2': true,\n 'mvc3': true,\n 'mvc4': true,\n 'resv': true,\n 'rv60': true,\n 's263': true,\n 'svc1': true,\n 'svc2': true,\n 'vc-1': true,\n 'vp08': true,\n 'vp09': true\n }\n};\n\nfunction isCodecType(codec, type) {\n var typeCodes = sampleEntryCodesISO[type];\n return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;\n}\n\nfunction isCodecSupportedInMp4(codec, type) {\n return MediaSource.isTypeSupported((type || 'video') + '/mp4;codecs=\"' + codec + '\"');\n}\n\n\n// CONCATENATED MODULE: ./src/loader/m3u8-parser.js\nfunction m3u8_parser__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\n\n\n\n\n\n/**\n * M3U8 parser\n * @module\n */\n\n// https://regex101.com is your friend\nvar MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\\n\\r]*)[\\r\\n]+([^\\r\\n]+)/g;\nvar MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\n\nvar LEVEL_PLAYLIST_REGEX_FAST = new RegExp([/#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source, // duration (#EXTINF:,), group 1 => duration, group 2 => title\n/|(?!#)(\\S+)/.source, // segment URI, group 3 => the URI (note newline is not eaten)\n/|#EXT-X-BYTERANGE:*(.+)/.source, // next segment's byterange, group 4 => range spec (x@y)\n/|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, // next segment's program date/time group 5 => the datetime spec\n/|#.*/.source // All other non-segment oriented tags will match with all groups empty\n].join(''), 'g');\n\nvar LEVEL_PLAYLIST_REGEX_SLOW = /(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\\d+))|(?:#EXT-X-(TARGETDURATION): *(\\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)(.*):(.*))|(?:(#)(.*))(?:.*)\\r?\\n?/;\n\nvar m3u8_parser_M3U8Parser = function () {\n function M3U8Parser() {\n m3u8_parser__classCallCheck(this, M3U8Parser);\n }\n\n M3U8Parser.findGroup = function findGroup(groups, mediaGroupId) {\n if (!groups) return null;\n\n var matchingGroup = null;\n\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n if (group.id === mediaGroupId) matchingGroup = group;\n }\n\n return matchingGroup;\n };\n\n M3U8Parser.convertAVC1ToAVCOTI = function convertAVC1ToAVCOTI(codec) {\n var result = void 0,\n avcdata = codec.split('.');\n if (avcdata.length > 2) {\n result = avcdata.shift() + '.';\n result += parseInt(avcdata.shift()).toString(16);\n result += ('000' + parseInt(avcdata.shift()).toString(16)).substr(-4);\n } else {\n result = codec;\n }\n return result;\n };\n\n M3U8Parser.resolve = function resolve(url, baseUrl) {\n return url_toolkit_default.a.buildAbsoluteURL(baseUrl, url, { alwaysNormalize: true });\n };\n\n M3U8Parser.parseMasterPlaylist = function parseMasterPlaylist(string, baseurl) {\n var levels = [],\n result = void 0;\n MASTER_PLAYLIST_REGEX.lastIndex = 0;\n\n function setCodecs(codecs, level) {\n ['video', 'audio'].forEach(function (type) {\n var filtered = codecs.filter(function (codec) {\n return isCodecType(codec, type);\n });\n if (filtered.length) {\n var preferred = filtered.filter(function (codec) {\n return codec.lastIndexOf('avc1', 0) === 0 || codec.lastIndexOf('mp4a', 0) === 0;\n });\n level[type + 'Codec'] = preferred.length > 0 ? preferred[0] : filtered[0];\n\n // remove from list\n codecs = codecs.filter(function (codec) {\n return filtered.indexOf(codec) === -1;\n });\n }\n });\n\n level.unknownCodecs = codecs;\n }\n\n while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n var level = {};\n\n var attrs = level.attrs = new attr_list(result[1]);\n level.url = M3U8Parser.resolve(result[2], baseurl);\n\n var resolution = attrs.decimalResolution('RESOLUTION');\n if (resolution) {\n level.width = resolution.width;\n level.height = resolution.height;\n }\n level.bitrate = attrs.decimalInteger('AVERAGE-BANDWIDTH') || attrs.decimalInteger('BANDWIDTH');\n level.name = attrs.NAME;\n\n setCodecs([].concat((attrs.CODECS || '').split(/[ ,]+/)), level);\n\n if (level.videoCodec && level.videoCodec.indexOf('avc1') !== -1) level.videoCodec = M3U8Parser.convertAVC1ToAVCOTI(level.videoCodec);\n\n levels.push(level);\n }\n return levels;\n };\n\n M3U8Parser.parseMasterPlaylistMedia = function parseMasterPlaylistMedia(string, baseurl, type) {\n var audioGroups = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n\n var result = void 0;\n var medias = [];\n var id = 0;\n MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n var media = {};\n var attrs = new attr_list(result[1]);\n if (attrs.TYPE === type) {\n media.groupId = attrs['GROUP-ID'];\n media.name = attrs.NAME;\n media.type = type;\n media.default = attrs.DEFAULT === 'YES';\n media.autoselect = attrs.AUTOSELECT === 'YES';\n media.forced = attrs.FORCED === 'YES';\n if (attrs.URI) media.url = M3U8Parser.resolve(attrs.URI, baseurl);\n\n media.lang = attrs.LANGUAGE;\n if (!media.name) media.name = media.lang;\n\n if (audioGroups.length) {\n var groupCodec = M3U8Parser.findGroup(audioGroups, media.groupId);\n media.audioCodec = groupCodec ? groupCodec.codec : audioGroups[0].codec;\n }\n media.id = id++;\n medias.push(media);\n }\n }\n return medias;\n };\n\n M3U8Parser.parseLevelPlaylist = function parseLevelPlaylist(string, baseurl, id, type) {\n var currentSN = 0,\n totalduration = 0,\n level = { type: null, version: null, url: baseurl, fragments: [], live: true, startSN: 0 },\n levelkey = new level_key(),\n cc = 0,\n prevFrag = null,\n frag = new loader_fragment(),\n result = void 0,\n i = void 0;\n\n LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n\n while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n var duration = result[1];\n if (duration) {\n // INF\n frag.duration = parseFloat(duration);\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n var title = (' ' + result[2]).slice(1);\n frag.title = title || null;\n frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]);\n } else if (result[3]) {\n // url\n if (!isNaN(frag.duration)) {\n var sn = currentSN++;\n frag.type = type;\n frag.start = totalduration;\n frag.levelkey = levelkey;\n frag.sn = sn;\n frag.level = id;\n frag.cc = cc;\n frag.baseurl = baseurl;\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n frag.relurl = (' ' + result[3]).slice(1);\n\n if (level.programDateTime) {\n if (prevFrag) {\n if (frag.rawProgramDateTime) {\n // PDT discontinuity found\n frag.pdt = Date.parse(frag.rawProgramDateTime);\n } else {\n // Contiguous fragment\n frag.pdt = prevFrag.pdt + prevFrag.duration * 1000;\n }\n } else {\n // First fragment\n frag.pdt = Date.parse(level.programDateTime);\n }\n frag.endPdt = frag.pdt + frag.duration * 1000;\n }\n\n level.fragments.push(frag);\n prevFrag = frag;\n totalduration += frag.duration;\n\n frag = new loader_fragment();\n }\n } else if (result[4]) {\n // X-BYTERANGE\n frag.rawByteRange = (' ' + result[4]).slice(1);\n if (prevFrag) {\n var lastByteRangeEndOffset = prevFrag.byteRangeEndOffset;\n if (lastByteRangeEndOffset) frag.lastByteRangeEndOffset = lastByteRangeEndOffset;\n }\n } else if (result[5]) {\n // PROGRAM-DATE-TIME\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n frag.rawProgramDateTime = (' ' + result[5]).slice(1);\n frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]);\n if (level.programDateTime === undefined) level.programDateTime = new Date(new Date(Date.parse(result[5])) - 1000 * totalduration);\n } else {\n result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n for (i = 1; i < result.length; i++) {\n if (result[i] !== undefined) break;\n }\n\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n var value1 = (' ' + result[i + 1]).slice(1);\n var value2 = (' ' + result[i + 2]).slice(1);\n\n switch (result[i]) {\n case '#':\n frag.tagList.push(value2 ? [value1, value2] : [value1]);\n break;\n case 'PLAYLIST-TYPE':\n level.type = value1.toUpperCase();\n break;\n case 'MEDIA-SEQUENCE':\n currentSN = level.startSN = parseInt(value1);\n break;\n case 'TARGETDURATION':\n level.targetduration = parseFloat(value1);\n break;\n case 'VERSION':\n level.version = parseInt(value1);\n break;\n case 'EXTM3U':\n break;\n case 'ENDLIST':\n level.live = false;\n break;\n case 'DIS':\n cc++;\n frag.tagList.push(['DIS']);\n break;\n case 'DISCONTINUITY-SEQ':\n cc = parseInt(value1);\n break;\n case 'KEY':\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-08#section-3.4.4\n var decryptparams = value1;\n var keyAttrs = new attr_list(decryptparams);\n var decryptmethod = keyAttrs.enumeratedString('METHOD'),\n decrypturi = keyAttrs.URI,\n decryptiv = keyAttrs.hexadecimalInteger('IV');\n if (decryptmethod) {\n levelkey = new level_key();\n if (decrypturi && ['AES-128', 'SAMPLE-AES', 'SAMPLE-AES-CENC'].indexOf(decryptmethod) >= 0) {\n levelkey.method = decryptmethod;\n // URI to get the key\n levelkey.baseuri = baseurl;\n levelkey.reluri = decrypturi;\n levelkey.key = null;\n // Initialization Vector (IV)\n levelkey.iv = decryptiv;\n }\n }\n break;\n case 'START':\n var startParams = value1;\n var startAttrs = new attr_list(startParams);\n var startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET');\n // TIME-OFFSET can be 0\n if (!isNaN(startTimeOffset)) level.startTimeOffset = startTimeOffset;\n\n break;\n case 'MAP':\n var mapAttrs = new attr_list(value1);\n frag.relurl = mapAttrs.URI;\n frag.rawByteRange = mapAttrs.BYTERANGE;\n frag.baseurl = baseurl;\n frag.level = id;\n frag.type = type;\n frag.sn = 'initSegment';\n level.initSegment = frag;\n frag = new loader_fragment();\n break;\n default:\n logger[\"b\" /* logger */].warn('line parsed but not handled: ' + result);\n break;\n }\n }\n }\n frag = prevFrag;\n // logger.log('found ' + level.fragments.length + ' fragments');\n if (frag && !frag.relurl) {\n level.fragments.pop();\n totalduration -= frag.duration;\n }\n level.totalduration = totalduration;\n level.averagetargetduration = totalduration / level.fragments.length;\n level.endSN = currentSN - 1;\n level.startCC = level.fragments[0] ? level.fragments[0].cc : 0;\n level.endCC = cc;\n\n if (!level.initSegment && level.fragments.length) {\n // this is a bit lurky but HLS really has no other way to tell us\n // if the fragments are TS or MP4, except if we download them :/\n // but this is to be able to handle SIDX.\n // FIXME: replace string test by a regex that matches\n // also `m4s` `m4a` `m4v` and other popular extensions\n if (level.fragments.every(function (frag) {\n return frag.relurl.endsWith('.mp4');\n })) {\n logger[\"b\" /* logger */].warn('MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX');\n\n frag = new loader_fragment();\n frag.relurl = level.fragments[0].relurl;\n frag.baseurl = baseurl;\n frag.level = id;\n frag.type = type;\n frag.sn = 'initSegment';\n\n level.initSegment = frag;\n level.needSidxRanges = true;\n }\n }\n\n return level;\n };\n\n return M3U8Parser;\n}();\n\n/* harmony default export */ var m3u8_parser = (m3u8_parser_M3U8Parser);\n// CONCATENATED MODULE: ./src/loader/playlist-loader.js\nvar playlist_loader__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction playlist_loader__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * PlaylistLoader - delegate for media manifest/playlist loading tasks. Takes care of parsing media to internal data-models.\n *\n * Once loaded, dispatches events with parsed data-models of manifest/levels/audio/subtitle tracks.\n *\n * Uses loader(s) set in config to do actual internal loading of resource tasks.\n *\n * @module\n *\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * `type` property values for this loaders' context object\n * @enum\n *\n */\nvar ContextType = {\n MANIFEST: 'manifest',\n LEVEL: 'level',\n AUDIO_TRACK: 'audioTrack',\n SUBTITLE_TRACK: 'subtitleTrack'\n};\n\n/**\n * @enum {string}\n */\nvar LevelType = {\n MAIN: 'main',\n AUDIO: 'audio',\n SUBTITLE: 'subtitle'\n};\n\n/**\n * @constructor\n */\n\nvar playlist_loader_PlaylistLoader = function (_EventHandler) {\n _inherits(PlaylistLoader, _EventHandler);\n\n /**\n * @constructs\n * @param {Hls} hls\n */\n function PlaylistLoader(hls) {\n playlist_loader__classCallCheck(this, PlaylistLoader);\n\n var _this = _possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MANIFEST_LOADING, events[\"a\" /* default */].LEVEL_LOADING, events[\"a\" /* default */].AUDIO_TRACK_LOADING, events[\"a\" /* default */].SUBTITLE_TRACK_LOADING));\n\n _this.loaders = {};\n return _this;\n }\n\n /**\n * @param {ContextType} type\n * @returns {boolean}\n */\n PlaylistLoader.canHaveQualityLevels = function canHaveQualityLevels(type) {\n return type !== ContextType.AUDIO_TRACK && type !== ContextType.SUBTITLE_TRACK;\n };\n\n /**\n * Map context.type to LevelType\n * @param {{type: ContextType}} context\n * @returns {LevelType}\n */\n\n\n PlaylistLoader.mapContextToLevelType = function mapContextToLevelType(context) {\n var type = context.type;\n\n\n switch (type) {\n case ContextType.AUDIO_TRACK:\n return LevelType.AUDIO;\n case ContextType.SUBTITLE_TRACK:\n return LevelType.SUBTITLE;\n default:\n return LevelType.MAIN;\n }\n };\n\n PlaylistLoader.getResponseUrl = function getResponseUrl(response, context) {\n var url = response.url;\n // responseURL not supported on some browsers (it is used to detect URL redirection)\n // data-uri mode also not supported (but no need to detect redirection)\n if (url === undefined || url.indexOf('data:') === 0) {\n // fallback to initial URL\n url = context.url;\n }\n return url;\n };\n\n /**\n * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n * Default loader is XHRLoader (see utils)\n * @param {object} context\n * @returns {XHRLoader} or other compatible configured overload\n */\n\n\n PlaylistLoader.prototype.createInternalLoader = function createInternalLoader(context) {\n var config = this.hls.config;\n var PLoader = config.pLoader;\n var Loader = config.loader;\n var InternalLoader = PLoader || Loader;\n\n var loader = new InternalLoader(config);\n\n context.loader = loader;\n this.loaders[context.type] = loader;\n\n return loader;\n };\n\n PlaylistLoader.prototype.getInternalLoader = function getInternalLoader(context) {\n return this.loaders[context.type];\n };\n\n PlaylistLoader.prototype.resetInternalLoader = function resetInternalLoader(contextType) {\n if (this.loaders[contextType]) delete this.loaders[contextType];\n };\n\n /**\n * Call `destroy` on all internal loader instances mapped (one per context type)\n */\n\n\n PlaylistLoader.prototype.destroyInternalLoaders = function destroyInternalLoaders() {\n for (var contextType in this.loaders) {\n var loader = this.loaders[contextType];\n if (loader) loader.destroy();\n\n this.resetInternalLoader(contextType);\n }\n };\n\n PlaylistLoader.prototype.destroy = function destroy() {\n this.destroyInternalLoaders();\n\n _EventHandler.prototype.destroy.call(this);\n };\n\n PlaylistLoader.prototype.onManifestLoading = function onManifestLoading(data) {\n this.load(data.url, { type: ContextType.MANIFEST });\n };\n\n PlaylistLoader.prototype.onLevelLoading = function onLevelLoading(data) {\n this.load(data.url, { type: ContextType.LEVEL, level: data.level, id: data.id });\n };\n\n PlaylistLoader.prototype.onAudioTrackLoading = function onAudioTrackLoading(data) {\n this.load(data.url, { type: ContextType.AUDIO_TRACK, id: data.id });\n };\n\n PlaylistLoader.prototype.onSubtitleTrackLoading = function onSubtitleTrackLoading(data) {\n this.load(data.url, { type: ContextType.SUBTITLE_TRACK, id: data.id });\n };\n\n PlaylistLoader.prototype.load = function load(url, context) {\n var config = this.hls.config;\n\n // Check if a loader for this context already exists\n var loader = this.getInternalLoader(context);\n if (loader) {\n var loaderContext = loader.context;\n if (loaderContext && loaderContext.url === url) {\n // same URL can't overlap\n logger[\"b\" /* logger */].trace('playlist request ongoing');\n return false;\n } else {\n logger[\"b\" /* logger */].warn('aborting previous loader for type: ' + context.type);\n loader.abort();\n }\n }\n var maxRetry = void 0,\n timeout = void 0,\n retryDelay = void 0,\n maxRetryDelay = void 0;\n\n // apply different configs for retries depending on\n // context (manifest, level, audio/subs playlist)\n switch (context.type) {\n case ContextType.MANIFEST:\n maxRetry = config.manifestLoadingMaxRetry;\n timeout = config.manifestLoadingTimeOut;\n retryDelay = config.manifestLoadingRetryDelay;\n maxRetryDelay = config.manifestLoadingMaxRetryTimeout;\n break;\n case ContextType.LEVEL:\n // Disable internal loader retry logic, since we are managing retries in Level Controller\n maxRetry = 0;\n timeout = config.levelLoadingTimeOut;\n // TODO Introduce retry settings for audio-track and subtitle-track, it should not use level retry config\n break;\n default:\n maxRetry = config.levelLoadingMaxRetry;\n timeout = config.levelLoadingTimeOut;\n retryDelay = config.levelLoadingRetryDelay;\n maxRetryDelay = config.levelLoadingMaxRetryTimeout;\n logger[\"b\" /* logger */].log('Playlist loader for ' + context.type + ' ' + (context.level || context.id));\n break;\n }\n\n loader = this.createInternalLoader(context);\n\n context.url = url;\n context.responseType = context.responseType || ''; // FIXME: (should not be necessary to do this)\n\n var loaderConfig = void 0,\n loaderCallbacks = void 0;\n\n loaderConfig = {\n timeout: timeout,\n maxRetry: maxRetry,\n retryDelay: retryDelay,\n maxRetryDelay: maxRetryDelay\n };\n\n loaderCallbacks = {\n onSuccess: this.loadsuccess.bind(this),\n onError: this.loaderror.bind(this),\n onTimeout: this.loadtimeout.bind(this)\n };\n\n loader.load(context, loaderConfig, loaderCallbacks);\n\n return true;\n };\n\n PlaylistLoader.prototype.loadsuccess = function loadsuccess(response, stats, context) {\n var networkDetails = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (context.isSidxRequest) {\n this._handleSidxRequest(response, context);\n this._handlePlaylistLoaded(response, stats, context, networkDetails);\n return;\n }\n\n this.resetInternalLoader(context.type);\n\n var string = response.data;\n\n stats.tload = performance.now();\n // stats.mtime = new Date(target.getResponseHeader('Last-Modified'));\n\n // Validate if it is an M3U8 at all\n if (string.indexOf('#EXTM3U') !== 0) {\n this._handleManifestParsingError(response, context, 'no EXTM3U delimiter', networkDetails);\n return;\n }\n\n // Check if chunk-list or master. handle empty chunk list case (first EXTINF not signaled, but TARGETDURATION present)\n if (string.indexOf('#EXTINF:') > 0 || string.indexOf('#EXT-X-TARGETDURATION:') > 0) this._handleTrackOrLevelPlaylist(response, stats, context, networkDetails);else this._handleMasterPlaylist(response, stats, context, networkDetails);\n };\n\n PlaylistLoader.prototype.loaderror = function loaderror(response, context) {\n var networkDetails = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n this._handleNetworkError(context, networkDetails);\n };\n\n PlaylistLoader.prototype.loadtimeout = function loadtimeout(stats, context) {\n var networkDetails = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n this._handleNetworkError(context, networkDetails, true);\n };\n\n PlaylistLoader.prototype._handleMasterPlaylist = function _handleMasterPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n var string = response.data;\n\n var url = PlaylistLoader.getResponseUrl(response, context);\n\n var levels = m3u8_parser.parseMasterPlaylist(string, url);\n if (!levels.length) {\n this._handleManifestParsingError(response, context, 'no level found in manifest', networkDetails);\n return;\n }\n\n // multi level playlist, parse level info\n\n var audioGroups = levels.map(function (level) {\n return {\n id: level.attrs.AUDIO,\n codec: level.audioCodec\n };\n });\n\n var audioTracks = m3u8_parser.parseMasterPlaylistMedia(string, url, 'AUDIO', audioGroups);\n var subtitles = m3u8_parser.parseMasterPlaylistMedia(string, url, 'SUBTITLES');\n\n if (audioTracks.length) {\n // check if we have found an audio track embedded in main playlist (audio track without URI attribute)\n var embeddedAudioFound = false;\n audioTracks.forEach(function (audioTrack) {\n if (!audioTrack.url) embeddedAudioFound = true;\n });\n\n // if no embedded audio track defined, but audio codec signaled in quality level,\n // we need to signal this main audio track this could happen with playlists with\n // alt audio rendition in which quality levels (main)\n // contains both audio+video. but with mixed audio track not signaled\n if (embeddedAudioFound === false && levels[0].audioCodec && !levels[0].attrs.AUDIO) {\n logger[\"b\" /* logger */].log('audio codec signaled in quality level, but no embedded audio track signaled, create one');\n audioTracks.unshift({\n type: 'main',\n name: 'main'\n });\n }\n }\n\n hls.trigger(events[\"a\" /* default */].MANIFEST_LOADED, {\n levels: levels,\n audioTracks: audioTracks,\n subtitles: subtitles,\n url: url,\n stats: stats,\n networkDetails: networkDetails\n });\n };\n\n PlaylistLoader.prototype._handleTrackOrLevelPlaylist = function _handleTrackOrLevelPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n\n var id = context.id,\n level = context.level,\n type = context.type;\n\n\n var url = PlaylistLoader.getResponseUrl(response, context);\n\n var levelId = !isNaN(level) ? level : !isNaN(id) ? id : 0; // level -> id -> 0\n var levelType = PlaylistLoader.mapContextToLevelType(context);\n\n var levelDetails = m3u8_parser.parseLevelPlaylist(response.data, url, levelId, levelType);\n\n // set stats on level structure\n levelDetails.tload = stats.tload;\n\n // We have done our first request (Manifest-type) and receive\n // not a master playlist but a chunk-list (track/level)\n // We fire the manifest-loaded event anyway with the parsed level-details\n // by creating a single-level structure for it.\n if (type === ContextType.MANIFEST) {\n var singleLevel = {\n url: url,\n details: levelDetails\n };\n\n hls.trigger(events[\"a\" /* default */].MANIFEST_LOADED, {\n levels: [singleLevel],\n audioTracks: [],\n url: url,\n stats: stats,\n networkDetails: networkDetails\n });\n }\n\n // save parsing time\n stats.tparsed = performance.now();\n\n // in case we need SIDX ranges\n // return early after calling load for\n // the SIDX box.\n if (levelDetails.needSidxRanges) {\n var sidxUrl = levelDetails.initSegment.url;\n this.load(sidxUrl, {\n isSidxRequest: true,\n type: type,\n level: level,\n levelDetails: levelDetails,\n id: id,\n rangeStart: 0,\n rangeEnd: 2048,\n responseType: 'arraybuffer'\n });\n return;\n }\n\n // extend the context with the new levelDetails property\n context.levelDetails = levelDetails;\n\n this._handlePlaylistLoaded(response, stats, context, networkDetails);\n };\n\n PlaylistLoader.prototype._handleSidxRequest = function _handleSidxRequest(response, context) {\n var sidxInfo = mp4demuxer[\"a\" /* default */].parseSegmentIndex(new Uint8Array(response.data));\n sidxInfo.references.forEach(function (segmentRef, index) {\n var segRefInfo = segmentRef.info;\n var frag = context.levelDetails.fragments[index];\n\n if (frag.byteRange.length === 0) frag.rawByteRange = String(1 + segRefInfo.end - segRefInfo.start) + '@' + String(segRefInfo.start);\n });\n\n context.levelDetails.initSegment.rawByteRange = String(sidxInfo.moovEndOffset) + '@0';\n };\n\n PlaylistLoader.prototype._handleManifestParsingError = function _handleManifestParsingError(response, context, reason, networkDetails) {\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].NETWORK_ERROR,\n details: errors[\"a\" /* ErrorDetails */].MANIFEST_PARSING_ERROR,\n fatal: true,\n url: response.url,\n reason: reason,\n networkDetails: networkDetails\n });\n };\n\n PlaylistLoader.prototype._handleNetworkError = function _handleNetworkError(context, networkDetails) {\n var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var details = void 0;\n var fatal = void 0;\n\n var loader = this.getInternalLoader(context);\n\n switch (context.type) {\n case ContextType.MANIFEST:\n details = timeout ? errors[\"a\" /* ErrorDetails */].MANIFEST_LOAD_TIMEOUT : errors[\"a\" /* ErrorDetails */].MANIFEST_LOAD_ERROR;\n fatal = true;\n break;\n case ContextType.LEVEL:\n details = timeout ? errors[\"a\" /* ErrorDetails */].LEVEL_LOAD_TIMEOUT : errors[\"a\" /* ErrorDetails */].LEVEL_LOAD_ERROR;\n fatal = false;\n break;\n case ContextType.AUDIO_TRACK:\n details = timeout ? errors[\"a\" /* ErrorDetails */].AUDIO_TRACK_LOAD_TIMEOUT : errors[\"a\" /* ErrorDetails */].AUDIO_TRACK_LOAD_ERROR;\n fatal = false;\n break;\n default:\n // details = ...?\n fatal = false;\n }\n\n if (loader) {\n loader.abort();\n this.resetInternalLoader(context.type);\n }\n\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].NETWORK_ERROR,\n details: details,\n fatal: fatal,\n url: loader.url,\n loader: loader,\n context: context,\n networkDetails: networkDetails\n });\n };\n\n PlaylistLoader.prototype._handlePlaylistLoaded = function _handlePlaylistLoaded(response, stats, context, networkDetails) {\n var type = context.type,\n level = context.level,\n id = context.id,\n levelDetails = context.levelDetails;\n\n\n if (!levelDetails.targetduration) {\n this._handleManifestParsingError(response, context, 'invalid target duration', networkDetails);\n return;\n }\n\n var canHaveLevels = PlaylistLoader.canHaveQualityLevels(context.type);\n if (canHaveLevels) {\n this.hls.trigger(events[\"a\" /* default */].LEVEL_LOADED, {\n details: levelDetails,\n level: level || 0,\n id: id || 0,\n stats: stats,\n networkDetails: networkDetails\n });\n } else {\n switch (type) {\n case ContextType.AUDIO_TRACK:\n this.hls.trigger(events[\"a\" /* default */].AUDIO_TRACK_LOADED, {\n details: levelDetails,\n id: id,\n stats: stats,\n networkDetails: networkDetails\n });\n break;\n case ContextType.SUBTITLE_TRACK:\n this.hls.trigger(events[\"a\" /* default */].SUBTITLE_TRACK_LOADED, {\n details: levelDetails,\n id: id,\n stats: stats,\n networkDetails: networkDetails\n });\n break;\n }\n }\n };\n\n playlist_loader__createClass(PlaylistLoader, null, [{\n key: 'ContextType',\n get: function get() {\n return ContextType;\n }\n }, {\n key: 'LevelType',\n get: function get() {\n return LevelType;\n }\n }]);\n\n return PlaylistLoader;\n}(event_handler);\n\n/* harmony default export */ var playlist_loader = (playlist_loader_PlaylistLoader);\n// CONCATENATED MODULE: ./src/loader/fragment-loader.js\nfunction fragment_loader__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fragment_loader__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction fragment_loader__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * Fragment Loader\n*/\n\n\n\n\n\n\nvar fragment_loader_FragmentLoader = function (_EventHandler) {\n fragment_loader__inherits(FragmentLoader, _EventHandler);\n\n function FragmentLoader(hls) {\n fragment_loader__classCallCheck(this, FragmentLoader);\n\n var _this = fragment_loader__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].FRAG_LOADING));\n\n _this.loaders = {};\n return _this;\n }\n\n FragmentLoader.prototype.destroy = function destroy() {\n var loaders = this.loaders;\n for (var loaderName in loaders) {\n var loader = loaders[loaderName];\n if (loader) loader.destroy();\n }\n this.loaders = {};\n\n _EventHandler.prototype.destroy.call(this);\n };\n\n FragmentLoader.prototype.onFragLoading = function onFragLoading(data) {\n var frag = data.frag,\n type = frag.type,\n loaders = this.loaders,\n config = this.hls.config,\n FragmentILoader = config.fLoader,\n DefaultILoader = config.loader;\n\n // reset fragment state\n frag.loaded = 0;\n\n var loader = loaders[type];\n if (loader) {\n logger[\"b\" /* logger */].warn('abort previous fragment loader for type: ' + type);\n loader.abort();\n }\n\n loader = loaders[type] = frag.loader = config.fLoader ? new FragmentILoader(config) : new DefaultILoader(config);\n\n var loaderContext = void 0,\n loaderConfig = void 0,\n loaderCallbacks = void 0;\n\n loaderContext = { url: frag.url, frag: frag, responseType: 'arraybuffer', progressData: false };\n\n var start = frag.byteRangeStartOffset,\n end = frag.byteRangeEndOffset;\n\n if (!isNaN(start) && !isNaN(end)) {\n loaderContext.rangeStart = start;\n loaderContext.rangeEnd = end;\n }\n\n loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout\n };\n\n loaderCallbacks = {\n onSuccess: this.loadsuccess.bind(this),\n onError: this.loaderror.bind(this),\n onTimeout: this.loadtimeout.bind(this),\n onProgress: this.loadprogress.bind(this)\n };\n\n loader.load(loaderContext, loaderConfig, loaderCallbacks);\n };\n\n FragmentLoader.prototype.loadsuccess = function loadsuccess(response, stats, context) {\n var networkDetails = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var payload = response.data,\n frag = context.frag;\n // detach fragment loader on load success\n frag.loader = undefined;\n this.loaders[frag.type] = undefined;\n this.hls.trigger(events[\"a\" /* default */].FRAG_LOADED, { payload: payload, frag: frag, stats: stats, networkDetails: networkDetails });\n };\n\n FragmentLoader.prototype.loaderror = function loaderror(response, context) {\n var networkDetails = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var loader = context.loader;\n if (loader) loader.abort();\n\n this.loaders[context.type] = undefined;\n this.hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].NETWORK_ERROR, details: errors[\"a\" /* ErrorDetails */].FRAG_LOAD_ERROR, fatal: false, frag: context.frag, response: response, networkDetails: networkDetails });\n };\n\n FragmentLoader.prototype.loadtimeout = function loadtimeout(stats, context) {\n var networkDetails = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var loader = context.loader;\n if (loader) loader.abort();\n\n this.loaders[context.type] = undefined;\n this.hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].NETWORK_ERROR, details: errors[\"a\" /* ErrorDetails */].FRAG_LOAD_TIMEOUT, fatal: false, frag: context.frag, networkDetails: networkDetails });\n };\n\n // data will be used for progressive parsing\n\n\n FragmentLoader.prototype.loadprogress = function loadprogress(stats, context, data) {\n var networkDetails = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n // jshint ignore:line\n var frag = context.frag;\n frag.loaded = stats.loaded;\n this.hls.trigger(events[\"a\" /* default */].FRAG_LOAD_PROGRESS, { frag: frag, stats: stats, networkDetails: networkDetails });\n };\n\n return FragmentLoader;\n}(event_handler);\n\n/* harmony default export */ var fragment_loader = (fragment_loader_FragmentLoader);\n// CONCATENATED MODULE: ./src/loader/key-loader.js\nfunction key_loader__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction key_loader__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction key_loader__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * Decrypt key Loader\n*/\n\n\n\n\n\n\nvar key_loader_KeyLoader = function (_EventHandler) {\n key_loader__inherits(KeyLoader, _EventHandler);\n\n function KeyLoader(hls) {\n key_loader__classCallCheck(this, KeyLoader);\n\n var _this = key_loader__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].KEY_LOADING));\n\n _this.loaders = {};\n _this.decryptkey = null;\n _this.decrypturl = null;\n return _this;\n }\n\n KeyLoader.prototype.destroy = function destroy() {\n for (var loaderName in this.loaders) {\n var loader = this.loaders[loaderName];\n if (loader) loader.destroy();\n }\n this.loaders = {};\n event_handler.prototype.destroy.call(this);\n };\n\n KeyLoader.prototype.onKeyLoading = function onKeyLoading(data) {\n var frag = data.frag,\n type = frag.type,\n loader = this.loaders[type],\n decryptdata = frag.decryptdata,\n uri = decryptdata.uri;\n // if uri is different from previous one or if decrypt key not retrieved yet\n if (uri !== this.decrypturl || this.decryptkey === null) {\n var config = this.hls.config;\n\n if (loader) {\n logger[\"b\" /* logger */].warn('abort previous key loader for type:' + type);\n loader.abort();\n }\n frag.loader = this.loaders[type] = new config.loader(config);\n this.decrypturl = uri;\n this.decryptkey = null;\n\n var loaderContext = void 0,\n loaderConfig = void 0,\n loaderCallbacks = void 0;\n loaderContext = { url: uri, frag: frag, responseType: 'arraybuffer' };\n loaderConfig = { timeout: config.fragLoadingTimeOut, maxRetry: config.fragLoadingMaxRetry, retryDelay: config.fragLoadingRetryDelay, maxRetryDelay: config.fragLoadingMaxRetryTimeout };\n loaderCallbacks = { onSuccess: this.loadsuccess.bind(this), onError: this.loaderror.bind(this), onTimeout: this.loadtimeout.bind(this) };\n frag.loader.load(loaderContext, loaderConfig, loaderCallbacks);\n } else if (this.decryptkey) {\n // we already loaded this key, return it\n decryptdata.key = this.decryptkey;\n this.hls.trigger(events[\"a\" /* default */].KEY_LOADED, { frag: frag });\n }\n };\n\n KeyLoader.prototype.loadsuccess = function loadsuccess(response, stats, context) {\n var frag = context.frag;\n this.decryptkey = frag.decryptdata.key = new Uint8Array(response.data);\n // detach fragment loader on load success\n frag.loader = undefined;\n this.loaders[frag.type] = undefined;\n this.hls.trigger(events[\"a\" /* default */].KEY_LOADED, { frag: frag });\n };\n\n KeyLoader.prototype.loaderror = function loaderror(response, context) {\n var frag = context.frag,\n loader = frag.loader;\n if (loader) loader.abort();\n\n this.loaders[context.type] = undefined;\n this.hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].NETWORK_ERROR, details: errors[\"a\" /* ErrorDetails */].KEY_LOAD_ERROR, fatal: false, frag: frag, response: response });\n };\n\n KeyLoader.prototype.loadtimeout = function loadtimeout(stats, context) {\n var frag = context.frag,\n loader = frag.loader;\n if (loader) loader.abort();\n\n this.loaders[context.type] = undefined;\n this.hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].NETWORK_ERROR, details: errors[\"a\" /* ErrorDetails */].KEY_LOAD_TIMEOUT, fatal: false, frag: frag });\n };\n\n return KeyLoader;\n}(event_handler);\n\n/* harmony default export */ var key_loader = (key_loader_KeyLoader);\n// CONCATENATED MODULE: ./src/utils/binary-search.js\nvar BinarySearch = {\n /**\n * Searches for an item in an array which matches a certain condition.\n * This requires the condition to only match one item in the array,\n * and for the array to be ordered.\n *\n * @param {Array} list The array to search.\n * @param {Function} comparisonFunction\n * Called and provided a candidate item as the first argument.\n * Should return:\n * > -1 if the item should be located at a lower index than the provided item.\n * > 1 if the item should be located at a higher index than the provided item.\n * > 0 if the item is the item you're looking for.\n *\n * @return {*} The object if it is found or null otherwise.\n */\n search: function search(list, comparisonFunction) {\n var minIndex = 0;\n var maxIndex = list.length - 1;\n var currentIndex = null;\n var currentElement = null;\n\n while (minIndex <= maxIndex) {\n currentIndex = (minIndex + maxIndex) / 2 | 0;\n currentElement = list[currentIndex];\n\n var comparisonResult = comparisonFunction(currentElement);\n if (comparisonResult > 0) minIndex = currentIndex + 1;else if (comparisonResult < 0) maxIndex = currentIndex - 1;else return currentElement;\n }\n\n return null;\n }\n};\n\n/* harmony default export */ var binary_search = (BinarySearch);\n// CONCATENATED MODULE: ./src/helper/buffer-helper.js\n/**\n * Buffer Helper utils, providing methods dealing buffer length retrieval\n*/\n\nvar BufferHelper = {\n /**\n * Return true if `media`'s buffered include `position`\n * @param {HTMLMediaElement|SourceBuffer} media\n * @param {number} position\n * @returns {boolean}\n */\n isBuffered: function isBuffered(media, position) {\n try {\n if (media) {\n var buffered = media.buffered;\n for (var i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) return true;\n }\n }\n } catch (error) {\n // this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n return false;\n },\n\n bufferInfo: function bufferInfo(media, pos, maxHoleDuration) {\n try {\n if (media) {\n var vbuffered = media.buffered,\n buffered = [],\n i = void 0;\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({ start: vbuffered.start(i), end: vbuffered.end(i) });\n }return this.bufferedInfo(buffered, pos, maxHoleDuration);\n }\n } catch (error) {\n // this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n return { len: 0, start: pos, end: pos, nextStart: undefined };\n },\n\n bufferedInfo: function bufferedInfo(buffered, pos, maxHoleDuration) {\n var buffered2 = [],\n\n // bufferStart and bufferEnd are buffer boundaries around current video position\n bufferLen = void 0,\n bufferStart = void 0,\n bufferEnd = void 0,\n bufferStartNext = void 0,\n i = void 0;\n // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n if (diff) return diff;else return b.end - a.end;\n });\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n if (buf2len) {\n var buf2end = buffered2[buf2len - 1].end;\n // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n if (buffered[i].start - buf2end < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if (buffered[i].end > buf2end) buffered2[buf2len - 1].end = buffered[i].end;\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n for (i = 0, bufferLen = 0, bufferStart = bufferEnd = pos; i < buffered2.length; i++) {\n var start = buffered2[i].start,\n end = buffered2[i].end;\n // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n if (pos + maxHoleDuration >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end;\n bufferLen = bufferEnd - pos;\n } else if (pos + maxHoleDuration < start) {\n bufferStartNext = start;\n break;\n }\n }\n return { len: bufferLen, start: bufferStart, end: bufferEnd, nextStart: bufferStartNext };\n }\n};\n\n/* harmony default export */ var buffer_helper = (BufferHelper);\n// EXTERNAL MODULE: ./src/demux/demuxer-inline.js + 11 modules\nvar demuxer_inline = __webpack_require__(8);\n\n// EXTERNAL MODULE: ./node_modules/events/events.js\nvar events_events = __webpack_require__(6);\nvar events_default = /*#__PURE__*/__webpack_require__.n(events_events);\n\n// EXTERNAL MODULE: ./node_modules/webworkify-webpack/index.js\nvar webworkify_webpack = __webpack_require__(10);\nvar webworkify_webpack_default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack);\n\n// CONCATENATED MODULE: ./src/helper/mediasource-helper.js\n/**\n * MediaSource helper\n */\n\nfunction getMediaSource() {\n if (typeof window !== 'undefined') return window.MediaSource || window.WebKitMediaSource;\n}\n// CONCATENATED MODULE: ./src/demux/demuxer.js\nfunction demuxer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\n\n\n\n\nvar demuxer_MediaSource = getMediaSource();\n\nvar demuxer_Demuxer = function () {\n function Demuxer(hls, id) {\n demuxer__classCallCheck(this, Demuxer);\n\n this.hls = hls;\n this.id = id;\n // observer setup\n var observer = this.observer = new events_default.a();\n var config = hls.config;\n observer.trigger = function trigger(event) {\n for (var _len = arguments.length, data = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n data[_key - 1] = arguments[_key];\n }\n\n observer.emit.apply(observer, [event, event].concat(data));\n };\n\n observer.off = function off(event) {\n for (var _len2 = arguments.length, data = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n data[_key2 - 1] = arguments[_key2];\n }\n\n observer.removeListener.apply(observer, [event].concat(data));\n };\n\n var forwardMessage = function (ev, data) {\n data = data || {};\n data.frag = this.frag;\n data.id = this.id;\n hls.trigger(ev, data);\n }.bind(this);\n\n // forward events to main thread\n observer.on(events[\"a\" /* default */].FRAG_DECRYPTED, forwardMessage);\n observer.on(events[\"a\" /* default */].FRAG_PARSING_INIT_SEGMENT, forwardMessage);\n observer.on(events[\"a\" /* default */].FRAG_PARSING_DATA, forwardMessage);\n observer.on(events[\"a\" /* default */].FRAG_PARSED, forwardMessage);\n observer.on(events[\"a\" /* default */].ERROR, forwardMessage);\n observer.on(events[\"a\" /* default */].FRAG_PARSING_METADATA, forwardMessage);\n observer.on(events[\"a\" /* default */].FRAG_PARSING_USERDATA, forwardMessage);\n observer.on(events[\"a\" /* default */].INIT_PTS_FOUND, forwardMessage);\n\n var typeSupported = {\n mp4: demuxer_MediaSource.isTypeSupported('video/mp4'),\n mpeg: demuxer_MediaSource.isTypeSupported('audio/mpeg'),\n mp3: demuxer_MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"')\n };\n // navigator.vendor is not always available in Web Worker\n // refer to https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/navigator\n var vendor = navigator.vendor;\n if (config.enableWorker && typeof Worker !== 'undefined') {\n logger[\"b\" /* logger */].log('demuxing in webworker');\n var w = void 0;\n try {\n w = this.w = webworkify_webpack_default()(/*require.resolve*/(11));\n this.onwmsg = this.onWorkerMessage.bind(this);\n w.addEventListener('message', this.onwmsg);\n w.onerror = function (event) {\n hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].OTHER_ERROR, details: errors[\"a\" /* ErrorDetails */].INTERNAL_EXCEPTION, fatal: true, event: 'demuxerWorker', err: { message: event.message + ' (' + event.filename + ':' + event.lineno + ')' } });\n };\n w.postMessage({ cmd: 'init', typeSupported: typeSupported, vendor: vendor, id: id, config: JSON.stringify(config) });\n } catch (err) {\n logger[\"b\" /* logger */].error('error while initializing DemuxerWorker, fallback on DemuxerInline');\n if (w) {\n // revoke the Object URL that was used to create demuxer worker, so as not to leak it\n URL.revokeObjectURL(w.objectURL);\n }\n this.demuxer = new demuxer_inline[\"a\" /* default */](observer, typeSupported, config, vendor);\n this.w = undefined;\n }\n } else {\n this.demuxer = new demuxer_inline[\"a\" /* default */](observer, typeSupported, config, vendor);\n }\n }\n\n Demuxer.prototype.destroy = function destroy() {\n var w = this.w;\n if (w) {\n w.removeEventListener('message', this.onwmsg);\n w.terminate();\n this.w = null;\n } else {\n var demuxer = this.demuxer;\n if (demuxer) {\n demuxer.destroy();\n this.demuxer = null;\n }\n }\n var observer = this.observer;\n if (observer) {\n observer.removeAllListeners();\n this.observer = null;\n }\n };\n\n Demuxer.prototype.push = function push(data, initSegment, audioCodec, videoCodec, frag, duration, accurateTimeOffset, defaultInitPTS) {\n var w = this.w;\n var timeOffset = !isNaN(frag.startDTS) ? frag.startDTS : frag.start;\n var decryptdata = frag.decryptdata;\n var lastFrag = this.frag;\n var discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n var trackSwitch = !(lastFrag && frag.level === lastFrag.level);\n var nextSN = lastFrag && frag.sn === lastFrag.sn + 1;\n var contiguous = !trackSwitch && nextSN;\n if (discontinuity) logger[\"b\" /* logger */].log(this.id + ':discontinuity detected');\n\n if (trackSwitch) logger[\"b\" /* logger */].log(this.id + ':switch detected');\n\n this.frag = frag;\n if (w) {\n // post fragment payload as transferable objects for ArrayBuffer (no copy)\n w.postMessage({ cmd: 'demux', data: data, decryptdata: decryptdata, initSegment: initSegment, audioCodec: audioCodec, videoCodec: videoCodec, timeOffset: timeOffset, discontinuity: discontinuity, trackSwitch: trackSwitch, contiguous: contiguous, duration: duration, accurateTimeOffset: accurateTimeOffset, defaultInitPTS: defaultInitPTS }, data instanceof ArrayBuffer ? [data] : []);\n } else {\n var demuxer = this.demuxer;\n if (demuxer) demuxer.push(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS);\n }\n };\n\n Demuxer.prototype.onWorkerMessage = function onWorkerMessage(ev) {\n var data = ev.data,\n hls = this.hls;\n switch (data.event) {\n case 'init':\n // revoke the Object URL that was used to create demuxer worker, so as not to leak it\n URL.revokeObjectURL(this.w.objectURL);\n break;\n // special case for FRAG_PARSING_DATA: data1 and data2 are transferable objects\n case events[\"a\" /* default */].FRAG_PARSING_DATA:\n data.data.data1 = new Uint8Array(data.data1);\n if (data.data2) data.data.data2 = new Uint8Array(data.data2);\n\n /* falls through */\n default:\n data.data = data.data || {};\n data.data.frag = this.frag;\n data.data.id = this.id;\n hls.trigger(data.event, data.data);\n break;\n }\n };\n\n return Demuxer;\n}();\n\n/* harmony default export */ var demux_demuxer = (demuxer_Demuxer);\n// CONCATENATED MODULE: ./src/helper/fragment-tracker.js\nfunction fragment_tracker__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fragment_tracker__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction fragment_tracker__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\nvar FragmentState = {\n NOT_LOADED: 'NOT_LOADED',\n APPENDING: 'APPENDING',\n PARTIAL: 'PARTIAL',\n OK: 'OK'\n};\n\nvar fragment_tracker_FragmentTracker = function (_EventHandler) {\n fragment_tracker__inherits(FragmentTracker, _EventHandler);\n\n function FragmentTracker(hls) {\n fragment_tracker__classCallCheck(this, FragmentTracker);\n\n var _this = fragment_tracker__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].BUFFER_APPENDED, events[\"a\" /* default */].FRAG_BUFFERED, events[\"a\" /* default */].FRAG_LOADED));\n\n _this.bufferPadding = 0.2;\n\n _this.fragments = Object.create(null);\n _this.timeRanges = Object.create(null);\n\n _this.config = hls.config;\n return _this;\n }\n\n FragmentTracker.prototype.destroy = function destroy() {\n this.fragments = null;\n this.timeRanges = null;\n this.config = null;\n event_handler.prototype.destroy.call(this);\n _EventHandler.prototype.destroy.call(this);\n };\n\n /**\n * Return a Fragment that match the position and levelType.\n * If not found any Fragment, return null\n * @param {number} position\n * @param {LevelType} levelType\n * @returns {Fragment|null}\n */\n\n\n FragmentTracker.prototype.getBufferedFrag = function getBufferedFrag(position, levelType) {\n var fragments = this.fragments;\n var bufferedFrags = Object.keys(fragments).filter(function (key) {\n var fragmentEntity = fragments[key];\n if (fragmentEntity.body.type !== levelType) return false;\n\n if (!fragmentEntity.buffered) return false;\n\n var frag = fragmentEntity.body;\n return frag.startPTS <= position && position <= frag.endPTS;\n });\n if (bufferedFrags.length === 0) {\n return null;\n } else {\n // https://github.com/video-dev/hls.js/pull/1545#discussion_r166229566\n var bufferedFragKey = bufferedFrags.pop();\n return fragments[bufferedFragKey].body;\n }\n };\n\n /**\n * Partial fragments effected by coded frame eviction will be removed\n * The browser will unload parts of the buffer to free up memory for new buffer data\n * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n * @param {String} elementaryStream The elementaryStream of media this is (eg. video/audio)\n * @param {TimeRanges} timeRange TimeRange object from a sourceBuffer\n */\n\n\n FragmentTracker.prototype.detectEvictedFragments = function detectEvictedFragments(elementaryStream, timeRange) {\n var _this2 = this;\n\n var fragmentTimes = void 0,\n time = void 0;\n // Check if any flagged fragments have been unloaded\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this2.fragments[key];\n if (fragmentEntity.buffered === true) {\n var esData = fragmentEntity.range[elementaryStream];\n if (esData) {\n fragmentTimes = esData.time;\n for (var i = 0; i < fragmentTimes.length; i++) {\n time = fragmentTimes[i];\n\n if (_this2.isTimeBuffered(time.startPTS, time.endPTS, timeRange) === false) {\n // Unregister partial fragment as it needs to load again to be reused\n _this2.removeFragment(fragmentEntity.body);\n break;\n }\n }\n }\n }\n });\n };\n\n /**\n * Checks if the fragment passed in is loaded in the buffer properly\n * Partially loaded fragments will be registered as a partial fragment\n * @param {Object} fragment Check the fragment against all sourceBuffers loaded\n */\n\n\n FragmentTracker.prototype.detectPartialFragments = function detectPartialFragments(fragment) {\n var _this3 = this;\n\n var fragKey = this.getFragmentKey(fragment);\n var fragmentEntity = this.fragments[fragKey];\n if (fragmentEntity) {\n fragmentEntity.buffered = true;\n\n Object.keys(this.timeRanges).forEach(function (elementaryStream) {\n if (fragment.hasElementaryStream(elementaryStream) === true) {\n var timeRange = _this3.timeRanges[elementaryStream];\n // Check for malformed fragments\n // Gaps need to be calculated for each elementaryStream\n fragmentEntity.range[elementaryStream] = _this3.getBufferedTimes(fragment.startPTS, fragment.endPTS, timeRange);\n }\n });\n }\n };\n\n FragmentTracker.prototype.getBufferedTimes = function getBufferedTimes(startPTS, endPTS, timeRange) {\n var fragmentTimes = [];\n var startTime = void 0,\n endTime = void 0;\n var fragmentPartial = false;\n for (var i = 0; i < timeRange.length; i++) {\n startTime = timeRange.start(i) - this.bufferPadding;\n endTime = timeRange.end(i) + this.bufferPadding;\n if (startPTS >= startTime && endPTS <= endTime) {\n // Fragment is entirely contained in buffer\n // No need to check the other timeRange times since it's completely playable\n fragmentTimes.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n break;\n } else if (startPTS < endTime && endPTS > startTime) {\n // Check for intersection with buffer\n // Get playable sections of the fragment\n fragmentTimes.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n fragmentPartial = true;\n } else if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n break;\n }\n }\n\n return {\n time: fragmentTimes,\n partial: fragmentPartial\n };\n };\n\n FragmentTracker.prototype.getFragmentKey = function getFragmentKey(fragment) {\n return fragment.type + '_' + fragment.level + '_' + fragment.sn;\n };\n\n /**\n * Gets the partial fragment for a certain time\n * @param {Number} time\n * @returns {Object} fragment Returns a partial fragment at a time or null if there is no partial fragment\n */\n\n\n FragmentTracker.prototype.getPartialFragment = function getPartialFragment(time) {\n var _this4 = this;\n\n var timePadding = void 0,\n startTime = void 0,\n endTime = void 0;\n var bestFragment = null;\n var bestOverlap = 0;\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this4.fragments[key];\n if (_this4.isPartial(fragmentEntity)) {\n startTime = fragmentEntity.body.startPTS - _this4.bufferPadding;\n endTime = fragmentEntity.body.endPTS + _this4.bufferPadding;\n if (time >= startTime && time <= endTime) {\n // Use the fragment that has the most padding from start and end time\n timePadding = Math.min(time - startTime, endTime - time);\n if (bestOverlap <= timePadding) {\n bestFragment = fragmentEntity.body;\n bestOverlap = timePadding;\n }\n }\n }\n });\n return bestFragment;\n };\n\n /**\n * @param {Object} fragment The fragment to check\n * @returns {String} Returns the fragment state when a fragment never loaded or if it partially loaded\n */\n\n\n FragmentTracker.prototype.getState = function getState(fragment) {\n var fragKey = this.getFragmentKey(fragment);\n var fragmentEntity = this.fragments[fragKey];\n var state = FragmentState.NOT_LOADED;\n\n if (fragmentEntity !== undefined) {\n if (!fragmentEntity.buffered) state = FragmentState.APPENDING;else if (this.isPartial(fragmentEntity) === true) state = FragmentState.PARTIAL;else state = FragmentState.OK;\n }\n\n return state;\n };\n\n FragmentTracker.prototype.isPartial = function isPartial(fragmentEntity) {\n return fragmentEntity.buffered === true && (fragmentEntity.range.video !== undefined && fragmentEntity.range.video.partial === true || fragmentEntity.range.audio !== undefined && fragmentEntity.range.audio.partial === true);\n };\n\n FragmentTracker.prototype.isTimeBuffered = function isTimeBuffered(startPTS, endPTS, timeRange) {\n var startTime = void 0,\n endTime = void 0;\n for (var i = 0; i < timeRange.length; i++) {\n startTime = timeRange.start(i) - this.bufferPadding;\n endTime = timeRange.end(i) + this.bufferPadding;\n if (startPTS >= startTime && endPTS <= endTime) return true;\n\n if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n return false;\n }\n }\n\n return false;\n };\n\n /**\n * Fires when a fragment loading is completed\n */\n\n\n FragmentTracker.prototype.onFragLoaded = function onFragLoaded(e) {\n var fragment = e.frag;\n // dont track initsegment (for which sn is not a number)\n if (!isNaN(fragment.sn)) {\n var fragKey = this.getFragmentKey(fragment);\n var fragmentEntity = {\n body: fragment,\n range: Object.create(null),\n buffered: false\n };\n this.fragments[fragKey] = fragmentEntity;\n }\n };\n\n /**\n * Fires when the buffer is updated\n */\n\n\n FragmentTracker.prototype.onBufferAppended = function onBufferAppended(e) {\n var _this5 = this;\n\n // Store the latest timeRanges loaded in the buffer\n this.timeRanges = e.timeRanges;\n Object.keys(this.timeRanges).forEach(function (elementaryStream) {\n var timeRange = _this5.timeRanges[elementaryStream];\n _this5.detectEvictedFragments(elementaryStream, timeRange);\n });\n };\n\n /**\n * Fires after a fragment has been loaded into the source buffer\n */\n\n\n FragmentTracker.prototype.onFragBuffered = function onFragBuffered(e) {\n this.detectPartialFragments(e.frag);\n };\n\n /**\n * Return true if fragment tracker has the fragment.\n * @param {Object} fragment\n * @returns {boolean}\n */\n\n\n FragmentTracker.prototype.hasFragment = function hasFragment(fragment) {\n var fragKey = this.getFragmentKey(fragment);\n return this.fragments[fragKey] !== undefined;\n };\n\n /**\n * Remove a fragment from fragment tracker until it is loaded again\n * @param {Object} fragment The fragment to remove\n */\n\n\n FragmentTracker.prototype.removeFragment = function removeFragment(fragment) {\n var fragKey = this.getFragmentKey(fragment);\n delete this.fragments[fragKey];\n };\n\n /**\n * Remove all fragments from fragment tracker.\n */\n\n\n FragmentTracker.prototype.removeAllFragments = function removeAllFragments() {\n this.fragments = Object.create(null);\n };\n\n return FragmentTracker;\n}(event_handler);\n// CONCATENATED MODULE: ./src/helper/level-helper.js\n/**\n * Level Helper class, providing methods dealing with playlist sliding and drift\n*/\n\n\n\nfunction updatePTS(fragments, fromIdx, toIdx) {\n var fragFrom = fragments[fromIdx],\n fragTo = fragments[toIdx],\n fragToPTS = fragTo.startPTS;\n // if we know startPTS[toIdx]\n if (!isNaN(fragToPTS)) {\n // update fragment duration.\n // it helps to fix drifts between playlist reported duration and fragment real duration\n if (toIdx > fromIdx) {\n fragFrom.duration = fragToPTS - fragFrom.start;\n if (fragFrom.duration < 0) logger[\"b\" /* logger */].warn('negative duration computed for frag ' + fragFrom.sn + ',level ' + fragFrom.level + ', there should be some duration drift between playlist and fragment!');\n } else {\n fragTo.duration = fragFrom.start - fragToPTS;\n if (fragTo.duration < 0) logger[\"b\" /* logger */].warn('negative duration computed for frag ' + fragTo.sn + ',level ' + fragTo.level + ', there should be some duration drift between playlist and fragment!');\n }\n } else {\n // we dont know startPTS[toIdx]\n if (toIdx > fromIdx) fragTo.start = fragFrom.start + fragFrom.duration;else fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n }\n}\n\nfunction updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {\n // update frag PTS/DTS\n var maxStartPTS = startPTS;\n if (!isNaN(frag.startPTS)) {\n // delta PTS between audio and video\n var deltaPTS = Math.abs(frag.startPTS - startPTS);\n if (isNaN(frag.deltaPTS)) frag.deltaPTS = deltaPTS;else frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);\n\n maxStartPTS = Math.max(startPTS, frag.startPTS);\n startPTS = Math.min(startPTS, frag.startPTS);\n endPTS = Math.max(endPTS, frag.endPTS);\n startDTS = Math.min(startDTS, frag.startDTS);\n endDTS = Math.max(endDTS, frag.endDTS);\n }\n\n var drift = startPTS - frag.start;\n frag.start = frag.startPTS = startPTS;\n frag.maxStartPTS = maxStartPTS;\n frag.endPTS = endPTS;\n frag.startDTS = startDTS;\n frag.endDTS = endDTS;\n frag.duration = endPTS - startPTS;\n\n var sn = frag.sn;\n // exit if sn out of range\n if (!details || sn < details.startSN || sn > details.endSN) return 0;\n\n var fragIdx = void 0,\n fragments = void 0,\n i = void 0;\n fragIdx = sn - details.startSN;\n fragments = details.fragments;\n // update frag reference in fragments array\n // rationale is that fragments array might not contain this frag object.\n // this will happpen if playlist has been refreshed between frag loading and call to updateFragPTSDTS()\n // if we don't update frag, we won't be able to propagate PTS info on the playlist\n // resulting in invalid sliding computation\n fragments[fragIdx] = frag;\n // adjust fragment PTS/duration from seqnum-1 to frag 0\n for (i = fragIdx; i > 0; i--) {\n updatePTS(fragments, i, i - 1);\n } // adjust fragment PTS/duration from seqnum to last frag\n for (i = fragIdx; i < fragments.length - 1; i++) {\n updatePTS(fragments, i, i + 1);\n }details.PTSKnown = true;\n // logger.log(` frag start/end:${startPTS.toFixed(3)}/${endPTS.toFixed(3)}`);\n\n return drift;\n}\n\nfunction mergeDetails(oldDetails, newDetails) {\n var start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN,\n end = Math.min(oldDetails.endSN, newDetails.endSN) - newDetails.startSN,\n delta = newDetails.startSN - oldDetails.startSN,\n oldfragments = oldDetails.fragments,\n newfragments = newDetails.fragments,\n ccOffset = 0,\n PTSFrag = void 0;\n\n // potentially retrieve cached initsegment\n if (newDetails.initSegment && oldDetails.initSegment) newDetails.initSegment = oldDetails.initSegment;\n\n // check if old/new playlists have fragments in common\n if (end < start) {\n newDetails.PTSKnown = false;\n return;\n }\n // loop through overlapping SN and update startPTS , cc, and duration if any found\n for (var i = start; i <= end; i++) {\n var oldFrag = oldfragments[delta + i],\n newFrag = newfragments[i];\n if (newFrag && oldFrag) {\n ccOffset = oldFrag.cc - newFrag.cc;\n if (!isNaN(oldFrag.startPTS)) {\n newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n newFrag.endPTS = oldFrag.endPTS;\n newFrag.duration = oldFrag.duration;\n newFrag.backtracked = oldFrag.backtracked;\n newFrag.dropped = oldFrag.dropped;\n PTSFrag = newFrag;\n }\n }\n }\n\n if (ccOffset) {\n logger[\"b\" /* logger */].log('discontinuity sliding from playlist, take drift into account');\n for (i = 0; i < newfragments.length; i++) {\n newfragments[i].cc += ccOffset;\n }\n }\n\n // if at least one fragment contains PTS info, recompute PTS information for all fragments\n if (PTSFrag) {\n updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);\n } else {\n // ensure that delta is within oldfragments range\n // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])\n // in that case we also need to adjust start offset of all fragments\n if (delta >= 0 && delta < oldfragments.length) {\n // adjust start by sliding offset\n var sliding = oldfragments[delta].start;\n for (i = 0; i < newfragments.length; i++) {\n newfragments[i].start += sliding;\n }\n }\n }\n // if we are here, it means we have fragments overlapping between\n // old and new level. reliable PTS info is thus relying on old level\n newDetails.PTSKnown = oldDetails.PTSKnown;\n}\n// CONCATENATED MODULE: ./src/utils/time-ranges.js\n/**\n * TimeRanges to string helper\n */\n\nvar TimeRanges = {\n toString: function toString(r) {\n var log = '',\n len = r.length;\n for (var i = 0; i < len; i++) {\n log += '[' + r.start(i).toFixed(3) + ',' + r.end(i).toFixed(3) + ']';\n }return log;\n }\n};\n\n/* harmony default export */ var time_ranges = (TimeRanges);\n// CONCATENATED MODULE: ./src/utils/discontinuities.js\n\n\n\nfunction findFirstFragWithCC(fragments, cc) {\n var firstFrag = null;\n\n for (var i = 0; i < fragments.length; i += 1) {\n var currentFrag = fragments[i];\n if (currentFrag && currentFrag.cc === cc) {\n firstFrag = currentFrag;\n break;\n }\n }\n\n return firstFrag;\n}\n\nfunction findFragWithCC(fragments, CC) {\n return binary_search.search(fragments, function (candidate) {\n if (candidate.cc < CC) return 1;else if (candidate.cc > CC) return -1;else return 0;\n });\n}\n\nfunction shouldAlignOnDiscontinuities(lastFrag, lastLevel, details) {\n var shouldAlign = false;\n if (lastLevel && lastLevel.details && details) {\n if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) shouldAlign = true;\n }\n return shouldAlign;\n}\n\n// Find the first frag in the previous level which matches the CC of the first frag of the new level\nfunction findDiscontinuousReferenceFrag(prevDetails, curDetails) {\n var prevFrags = prevDetails.fragments;\n var curFrags = curDetails.fragments;\n\n if (!curFrags.length || !prevFrags.length) {\n logger[\"b\" /* logger */].log('No fragments to align');\n return;\n }\n\n var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n\n if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {\n logger[\"b\" /* logger */].log('No frag in previous level to align on');\n return;\n }\n\n return prevStartFrag;\n}\n\nfunction adjustPts(sliding, details) {\n details.fragments.forEach(function (frag) {\n if (frag) {\n var start = frag.start + sliding;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n }\n });\n details.PTSKnown = true;\n}\n\n// If a change in CC is detected, the PTS can no longer be relied upon\n// Attempt to align the level by using the last level - find the last frag matching the current CC and use it's PTS\n// as a reference\nfunction alignDiscontinuities(lastFrag, lastLevel, details) {\n if (shouldAlignOnDiscontinuities(lastFrag, lastLevel, details)) {\n var referenceFrag = findDiscontinuousReferenceFrag(lastLevel.details, details);\n if (referenceFrag) {\n logger[\"b\" /* logger */].log('Adjusting PTS using last level due to CC increase within current level');\n adjustPts(referenceFrag.start, details);\n }\n }\n // try to align using programDateTime attribute (if available)\n if (details.PTSKnown === false && lastLevel && lastLevel.details && lastLevel.details.fragments && lastLevel.details.fragments.length) {\n // if last level sliding is 1000 and its first frag PROGRAM-DATE-TIME is 2017-08-20 1:10:00 AM\n // and if new details first frag PROGRAM DATE-TIME is 2017-08-20 1:10:08 AM\n // then we can deduce that playlist B sliding is 1000+8 = 1008s\n var lastPDT = lastLevel.details.programDateTime;\n var newPDT = details.programDateTime;\n // date diff is in ms. frag.start is in seconds\n var sliding = (newPDT - lastPDT) / 1000 + lastLevel.details.fragments[0].start;\n if (!isNaN(sliding)) {\n logger[\"b\" /* logger */].log('adjusting PTS using programDateTime delta, sliding:' + sliding.toFixed(3));\n adjustPts(sliding, details);\n }\n }\n}\n// CONCATENATED MODULE: ./src/task-loop.js\nfunction task_loop__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction task_loop__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction task_loop__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nvar TaskLoop = function (_EventHandler) {\n task_loop__inherits(TaskLoop, _EventHandler);\n\n function TaskLoop(hls) {\n task_loop__classCallCheck(this, TaskLoop);\n\n for (var _len = arguments.length, events = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n events[_key - 1] = arguments[_key];\n }\n\n var _this = task_loop__possibleConstructorReturn(this, _EventHandler.call.apply(_EventHandler, [this, hls].concat(events)));\n\n _this._tickInterval = null;\n _this._tickCallCount = 0;\n return _this;\n }\n\n /**\n * @override\n */\n\n\n TaskLoop.prototype.destroy = function destroy() {\n this.clearInterval();\n _EventHandler.prototype.destroy.call(this);\n };\n\n /**\n * @returns {boolean}\n */\n\n\n TaskLoop.prototype.hasInterval = function hasInterval() {\n return this._tickInterval !== null;\n };\n\n /**\n * @param {number} millis Interval time (ms)\n * @returns {boolean} True when interval has been scheduled, false when already scheduled (no effect)\n */\n\n\n TaskLoop.prototype.setInterval = function (_setInterval) {\n function setInterval(_x) {\n return _setInterval.apply(this, arguments);\n }\n\n setInterval.toString = function () {\n return _setInterval.toString();\n };\n\n return setInterval;\n }(function (millis) {\n if (!this._tickInterval) {\n this._tickInterval = setInterval(this.tick.bind(this, false), millis);\n return true;\n }\n return false;\n });\n\n /**\n * @returns {boolean} True when interval was cleared, false when none was set (no effect)\n */\n\n\n TaskLoop.prototype.clearInterval = function (_clearInterval) {\n function clearInterval() {\n return _clearInterval.apply(this, arguments);\n }\n\n clearInterval.toString = function () {\n return _clearInterval.toString();\n };\n\n return clearInterval;\n }(function () {\n if (this._tickInterval) {\n clearInterval(this._tickInterval);\n this._tickInterval = null;\n return true;\n }\n return false;\n });\n\n /**\n *\n * @param {Wether to force async} forceAsync\n * @returns {boolean} True when async, false when sync\n */\n\n\n TaskLoop.prototype.tick = function tick() {\n this._tickCallCount++;\n if (this._tickCallCount === 1) {\n this.doTick();\n if (this._tickCallCount > 1) setTimeout(this.tick.bind(this), 0);\n\n this._tickCallCount = 0;\n }\n };\n\n /**\n * For subclass to implement task logic\n * @abstract\n */\n\n\n TaskLoop.prototype.doTick = function doTick() {\n throw new Error('TaskLoop is abstract and `doLoop` must be implemented');\n };\n\n return TaskLoop;\n}(event_handler);\n\n/* harmony default export */ var task_loop = (TaskLoop);\n// CONCATENATED MODULE: ./src/controller/stream-controller.js\nvar stream_controller__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction stream_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction stream_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction stream_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * Stream Controller\n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar State = {\n STOPPED: 'STOPPED',\n IDLE: 'IDLE',\n KEY_LOADING: 'KEY_LOADING',\n FRAG_LOADING: 'FRAG_LOADING',\n FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',\n WAITING_LEVEL: 'WAITING_LEVEL',\n PARSING: 'PARSING',\n PARSED: 'PARSED',\n BUFFER_FLUSHING: 'BUFFER_FLUSHING',\n ENDED: 'ENDED',\n ERROR: 'ERROR'\n};\n\nvar stream_controller_StreamController = function (_TaskLoop) {\n stream_controller__inherits(StreamController, _TaskLoop);\n\n function StreamController(hls, fragmentTracker) {\n stream_controller__classCallCheck(this, StreamController);\n\n var _this = stream_controller__possibleConstructorReturn(this, _TaskLoop.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHED, events[\"a\" /* default */].MEDIA_DETACHING, events[\"a\" /* default */].MANIFEST_LOADING, events[\"a\" /* default */].MANIFEST_PARSED, events[\"a\" /* default */].LEVEL_LOADED, events[\"a\" /* default */].KEY_LOADED, events[\"a\" /* default */].FRAG_LOADED, events[\"a\" /* default */].FRAG_LOAD_EMERGENCY_ABORTED, events[\"a\" /* default */].FRAG_PARSING_INIT_SEGMENT, events[\"a\" /* default */].FRAG_PARSING_DATA, events[\"a\" /* default */].FRAG_PARSED, events[\"a\" /* default */].ERROR, events[\"a\" /* default */].AUDIO_TRACK_SWITCHING, events[\"a\" /* default */].AUDIO_TRACK_SWITCHED, events[\"a\" /* default */].BUFFER_CREATED, events[\"a\" /* default */].BUFFER_APPENDED, events[\"a\" /* default */].BUFFER_FLUSHED));\n\n _this.fragmentTracker = fragmentTracker;\n _this.config = hls.config;\n _this.audioCodecSwap = false;\n _this._state = State.STOPPED;\n return _this;\n }\n\n StreamController.prototype.onHandlerDestroying = function onHandlerDestroying() {\n this.stopLoad();\n };\n\n StreamController.prototype.onHandlerDestroyed = function onHandlerDestroyed() {\n this.state = State.STOPPED;\n this.fragmentTracker = null;\n };\n\n StreamController.prototype.startLoad = function startLoad(startPosition) {\n if (this.levels) {\n var lastCurrentTime = this.lastCurrentTime,\n hls = this.hls;\n this.stopLoad();\n this.setInterval(100);\n this.level = -1;\n this.fragLoadError = 0;\n if (!this.startFragRequested) {\n // determine load level\n var startLevel = hls.startLevel;\n if (startLevel === -1) {\n // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n startLevel = 0;\n this.bitrateTest = true;\n }\n // set new level to playlist loader : this will trigger start level load\n // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded\n this.level = hls.nextLoadLevel = startLevel;\n this.loadedmetadata = false;\n }\n // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime\n if (lastCurrentTime > 0 && startPosition === -1) {\n logger[\"b\" /* logger */].log('override startPosition with lastCurrentTime @' + lastCurrentTime.toFixed(3));\n startPosition = lastCurrentTime;\n }\n this.state = State.IDLE;\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n } else {\n this.forceStartLoad = true;\n this.state = State.STOPPED;\n }\n };\n\n StreamController.prototype.stopLoad = function stopLoad() {\n var frag = this.fragCurrent;\n if (frag) {\n if (frag.loader) frag.loader.abort();\n\n this.fragmentTracker.removeFragment(frag);\n this.fragCurrent = null;\n }\n this.fragPrevious = null;\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = null;\n }\n this.clearInterval();\n this.state = State.STOPPED;\n this.forceStartLoad = false;\n };\n\n StreamController.prototype.doTick = function doTick() {\n switch (this.state) {\n case State.BUFFER_FLUSHING:\n // in buffer flushing state, reset fragLoadError counter\n this.fragLoadError = 0;\n break;\n case State.IDLE:\n this._doTickIdle();\n break;\n case State.WAITING_LEVEL:\n var level = this.levels[this.level];\n // check if playlist is already loaded\n if (level && level.details) this.state = State.IDLE;\n\n break;\n case State.FRAG_LOADING_WAITING_RETRY:\n var now = performance.now();\n var retryDate = this.retryDate;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if (!retryDate || now >= retryDate || this.media && this.media.seeking) {\n logger[\"b\" /* logger */].log('mediaController: retryDate reached, switch back to IDLE state');\n this.state = State.IDLE;\n }\n break;\n case State.ERROR:\n case State.STOPPED:\n case State.FRAG_LOADING:\n case State.PARSING:\n case State.PARSED:\n case State.ENDED:\n break;\n default:\n break;\n }\n // check buffer\n this._checkBuffer();\n // check/update current fragment\n this._checkFragmentChanged();\n };\n\n // Ironically the \"idle\" state is the on we do the most logic in it seems ....\n // NOTE: Maybe we could rather schedule a check for buffer length after half of the currently\n // played segment, or on pause/play/seek instead of naively checking every 100ms?\n\n\n StreamController.prototype._doTickIdle = function _doTickIdle() {\n var hls = this.hls,\n config = hls.config,\n media = this.media;\n\n // if start level not parsed yet OR\n // if video not attached AND start fragment already requested OR start frag prefetch disable\n // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment\n if (this.levelLastLoaded === undefined || !media && (this.startFragRequested || !config.startFragPrefetch)) return;\n\n // if we have not yet loaded any fragment, start loading from start position\n var pos = void 0;\n if (this.loadedmetadata) pos = media.currentTime;else pos = this.nextLoadPosition;\n\n // determine next load level\n var level = hls.nextLoadLevel,\n levelInfo = this.levels[level];\n\n if (!levelInfo) return;\n\n var levelBitrate = levelInfo.bitrate,\n maxBufLen = void 0;\n\n // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n if (levelBitrate) maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);else maxBufLen = config.maxBufferLength;\n\n maxBufLen = Math.min(maxBufLen, config.maxMaxBufferLength);\n\n // determine next candidate fragment to be loaded, based on current position and end of buffer position\n // ensure up to `config.maxMaxBufferLength` of buffer upfront\n\n var bufferInfo = buffer_helper.bufferInfo(this.mediaBuffer ? this.mediaBuffer : media, pos, config.maxBufferHole),\n bufferLen = bufferInfo.len;\n // Stay idle if we are still with buffer margins\n if (bufferLen >= maxBufLen) return;\n\n // if buffer length is less than maxBufLen try to load a new fragment ...\n logger[\"b\" /* logger */].trace('buffer length of ' + bufferLen.toFixed(3) + ' is below max of ' + maxBufLen.toFixed(3) + '. checking for more payload ...');\n\n // set next load level : this will trigger a playlist load if needed\n this.level = hls.nextLoadLevel = level;\n\n var levelDetails = levelInfo.details;\n // if level info not retrieved yet, switch state and wait for level retrieval\n // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n if (levelDetails === undefined || levelDetails.live === true && this.levelLastLoaded !== level) {\n this.state = State.WAITING_LEVEL;\n return;\n }\n\n // we just got done loading the final fragment and there is no other buffered range after ...\n // rationale is that in case there are any buffered ranges after, it means that there are unbuffered portion in between\n // so we should not switch to ENDED in that case, to be able to buffer them\n // dont switch to ENDED if we need to backtrack last fragment\n var fragPrevious = this.fragPrevious;\n if (!levelDetails.live && fragPrevious && !fragPrevious.backtracked && fragPrevious.sn === levelDetails.endSN && !bufferInfo.nextStart) {\n // fragPrevious is last fragment. retrieve level duration using last frag start offset + duration\n // real duration might be lower than initial duration if there are drifts between real frag duration and playlist signaling\n var duration = Math.min(media.duration, fragPrevious.start + fragPrevious.duration);\n // if everything (almost) til the end is buffered, let's signal eos\n // we don't compare exactly media.duration === bufferInfo.end as there could be some subtle media duration difference (audio/video offsets...)\n // tolerate up to one frag duration to cope with these cases.\n // also cope with almost zero last frag duration (max last frag duration with 200ms) refer to https://github.com/video-dev/hls.js/pull/657\n if (duration - Math.max(bufferInfo.end, fragPrevious.start) <= Math.max(0.2, fragPrevious.duration)) {\n // Finalize the media stream\n var data = {};\n if (this.altAudio) data.type = 'video';\n\n this.hls.trigger(events[\"a\" /* default */].BUFFER_EOS, data);\n this.state = State.ENDED;\n return;\n }\n }\n\n // if we have the levelDetails for the selected variant, lets continue enrichen our stream (load keys/fragments or trigger EOS, etc..)\n this._fetchPayloadOrEos(pos, bufferInfo, levelDetails);\n };\n\n StreamController.prototype._fetchPayloadOrEos = function _fetchPayloadOrEos(pos, bufferInfo, levelDetails) {\n var fragPrevious = this.fragPrevious,\n level = this.level,\n fragments = levelDetails.fragments,\n fragLen = fragments.length;\n\n // empty playlist\n if (fragLen === 0) return;\n\n // find fragment index, contiguous with end of buffer position\n var start = fragments[0].start,\n end = fragments[fragLen - 1].start + fragments[fragLen - 1].duration,\n bufferEnd = bufferInfo.end,\n frag = void 0;\n\n if (levelDetails.initSegment && !levelDetails.initSegment.data) {\n frag = levelDetails.initSegment;\n } else {\n // in case of live playlist we need to ensure that requested position is not located before playlist start\n if (levelDetails.live) {\n var initialLiveManifestSize = this.config.initialLiveManifestSize;\n if (fragLen < initialLiveManifestSize) {\n logger[\"b\" /* logger */].warn('Can not start playback of a level, reason: not enough fragments ' + fragLen + ' < ' + initialLiveManifestSize);\n return;\n }\n\n frag = this._ensureFragmentAtLivePoint(levelDetails, bufferEnd, start, end, fragPrevious, fragments, fragLen);\n // if it explicitely returns null don't load any fragment and exit function now\n if (frag === null) return;\n } else {\n // VoD playlist: if bufferEnd before start of playlist, load first fragment\n if (bufferEnd < start) frag = fragments[0];\n }\n }\n if (!frag) frag = this._findFragment(start, fragPrevious, fragLen, fragments, bufferEnd, end, levelDetails);\n\n if (frag) this._loadFragmentOrKey(frag, level, levelDetails, pos, bufferEnd);\n };\n\n StreamController.prototype._ensureFragmentAtLivePoint = function _ensureFragmentAtLivePoint(levelDetails, bufferEnd, start, end, fragPrevious, fragments, fragLen) {\n var config = this.hls.config,\n media = this.media;\n\n var frag = void 0;\n\n // check if requested position is within seekable boundaries :\n // logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${this.media.seeking}`);\n var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n\n if (bufferEnd < Math.max(start - config.maxFragLookUpTolerance, end - maxLatency)) {\n var liveSyncPosition = this.liveSyncPosition = this.computeLivePosition(start, levelDetails);\n logger[\"b\" /* logger */].log('buffer end: ' + bufferEnd.toFixed(3) + ' is located too far from the end of live sliding playlist, reset currentTime to : ' + liveSyncPosition.toFixed(3));\n bufferEnd = liveSyncPosition;\n if (media && media.readyState && media.duration > liveSyncPosition) media.currentTime = liveSyncPosition;\n\n this.nextLoadPosition = liveSyncPosition;\n }\n\n // if end of buffer greater than live edge, don't load any fragment\n // this could happen if live playlist intermittently slides in the past.\n // level 1 loaded [182580161,182580167]\n // level 1 loaded [182580162,182580169]\n // Loading 182580168 of [182580162 ,182580169],level 1 ..\n // Loading 182580169 of [182580162 ,182580169],level 1 ..\n // level 1 loaded [182580162,182580168] <============= here we should have bufferEnd > end. in that case break to avoid reloading 182580168\n // level 1 loaded [182580164,182580171]\n //\n // don't return null in case media not loaded yet (readystate === 0)\n if (levelDetails.PTSKnown && bufferEnd > end && media && media.readyState) return null;\n\n if (this.startFragRequested && !levelDetails.PTSKnown) {\n /* we are switching level on live playlist, but we don't have any PTS info for that quality level ...\n try to load frag matching with next SN.\n even if SN are not synchronized between playlists, loading this frag will help us\n compute playlist sliding and find the right one after in case it was not the right consecutive one */\n if (fragPrevious) {\n if (!levelDetails.programDateTime) {\n // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)\n var targetSN = fragPrevious.sn + 1;\n if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n var fragNext = fragments[targetSN - levelDetails.startSN];\n if (fragPrevious.cc === fragNext.cc) {\n frag = fragNext;\n logger[\"b\" /* logger */].log('live playlist, switching playlist, load frag with next SN: ' + frag.sn);\n }\n }\n // next frag SN not available (or not with same continuity counter)\n // look for a frag sharing the same CC\n if (!frag) {\n frag = binary_search.search(fragments, function (frag) {\n return fragPrevious.cc - frag.cc;\n });\n if (frag) logger[\"b\" /* logger */].log('live playlist, switching playlist, load frag with same CC: ' + frag.sn);\n }\n } else {\n // Relies on PDT in order to switch bitrates (Support EXT-X-DISCONTINUITY without EXT-X-DISCONTINUITY-SEQUENCE)\n frag = this._findFragmentByPDT(fragments, fragPrevious.endPdt + 1);\n }\n }\n if (!frag) {\n /* we have no idea about which fragment should be loaded.\n so let's load mid fragment. it will help computing playlist sliding and find the right one\n */\n frag = fragments[Math.min(fragLen - 1, Math.round(fragLen / 2))];\n logger[\"b\" /* logger */].log('live playlist, switching playlist, unknown, load middle frag : ' + frag.sn);\n }\n }\n return frag;\n };\n\n StreamController.prototype._findFragmentByPDT = function _findFragmentByPDT(fragments, PDTValue) {\n if (!fragments || PDTValue === undefined) return null;\n\n // if less than start\n var firstSegment = fragments[0];\n\n if (PDTValue < firstSegment.pdt) return null;\n\n var lastSegment = fragments[fragments.length - 1];\n\n if (PDTValue >= lastSegment.endPdt) return null;\n\n for (var seg = 0; seg < fragments.length; ++seg) {\n var frag = fragments[seg];\n if (PDTValue < frag.endPdt) return frag;\n }\n return null;\n };\n\n StreamController.prototype._findFragmentBySN = function _findFragmentBySN(fragPrevious, fragments, bufferEnd, end) {\n var config = this.hls.config;\n var foundFrag = void 0;\n var maxFragLookUpTolerance = config.maxFragLookUpTolerance;\n var fragNext = fragPrevious ? fragments[fragPrevious.sn - fragments[0].sn + 1] : undefined;\n var fragmentWithinToleranceTest = function fragmentWithinToleranceTest(candidate) {\n // offset should be within fragment boundary - config.maxFragLookUpTolerance\n // this is to cope with situations like\n // bufferEnd = 9.991\n // frag[Ø] : [0,10]\n // frag[1] : [10,20]\n // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n // frag start frag start+duration\n // |-----------------------------|\n // <---> <--->\n // ...--------><-----------------------------><---------....\n // previous frag matching fragment next frag\n // return -1 return 0 return 1\n // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));\n if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) return 1;\n // if maxFragLookUpTolerance will have negative value then don't return -1 for first element\n else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) return -1;\n\n return 0;\n };\n\n if (bufferEnd < end) {\n if (bufferEnd > end - maxFragLookUpTolerance) maxFragLookUpTolerance = 0;\n\n // Prefer the next fragment if it's within tolerance\n if (fragNext && !fragmentWithinToleranceTest(fragNext)) foundFrag = fragNext;else foundFrag = binary_search.search(fragments, fragmentWithinToleranceTest);\n }\n return foundFrag;\n };\n\n StreamController.prototype._findFragment = function _findFragment(start, fragPrevious, fragLen, fragments, bufferEnd, end, levelDetails) {\n var config = this.hls.config;\n var frag = void 0;\n var foundFrag = void 0;\n\n if (bufferEnd < end) {\n if (!levelDetails.programDateTime) {\n // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)\n foundFrag = this._findFragmentBySN(fragPrevious, fragments, bufferEnd, end);\n } else {\n // Relies on PDT in order to switch bitrates (Support EXT-X-DISCONTINUITY without EXT-X-DISCONTINUITY-SEQUENCE)\n // compute PDT of bufferEnd: PDT(bufferEnd) = 1000*bufferEnd + PDT(start) = 1000*bufferEnd + PDT(level) - level sliding\n foundFrag = this._findFragmentByPDT(fragments, bufferEnd * 1000 + (levelDetails.programDateTime ? Date.parse(levelDetails.programDateTime) : 0) - 1000 * start);\n }\n } else {\n // reach end of playlist\n foundFrag = fragments[fragLen - 1];\n }\n if (foundFrag) {\n frag = foundFrag;\n var curSNIdx = frag.sn - levelDetails.startSN;\n var sameLevel = fragPrevious && frag.level === fragPrevious.level;\n var prevFrag = fragments[curSNIdx - 1];\n var nextFrag = fragments[curSNIdx + 1];\n // logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);\n if (fragPrevious && frag.sn === fragPrevious.sn) {\n if (sameLevel && !frag.backtracked) {\n if (frag.sn < levelDetails.endSN) {\n var deltaPTS = fragPrevious.deltaPTS;\n // if there is a significant delta between audio and video, larger than max allowed hole,\n // and if previous remuxed fragment did not start with a keyframe. (fragPrevious.dropped)\n // let's try to load previous fragment again to get last keyframe\n // then we will reload again current fragment (that way we should be able to fill the buffer hole ...)\n if (deltaPTS && deltaPTS > config.maxBufferHole && fragPrevious.dropped && curSNIdx) {\n frag = prevFrag;\n logger[\"b\" /* logger */].warn('SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this');\n } else {\n frag = nextFrag;\n logger[\"b\" /* logger */].log('SN just loaded, load next one: ' + frag.sn);\n }\n } else {\n frag = null;\n }\n } else if (frag.backtracked) {\n // Only backtrack a max of 1 consecutive fragment to prevent sliding back too far when little or no frags start with keyframes\n if (nextFrag && nextFrag.backtracked) {\n logger[\"b\" /* logger */].warn('Already backtracked from fragment ' + nextFrag.sn + ', will not backtrack to fragment ' + frag.sn + '. Loading fragment ' + nextFrag.sn);\n frag = nextFrag;\n } else {\n // If a fragment has dropped frames and it's in a same level/sequence, load the previous fragment to try and find the keyframe\n // Reset the dropped count now since it won't be reset until we parse the fragment again, which prevents infinite backtracking on the same segment\n logger[\"b\" /* logger */].warn('Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe');\n frag.dropped = 0;\n if (prevFrag) {\n frag = prevFrag;\n frag.backtracked = true;\n } else if (curSNIdx) {\n // can't backtrack on very first fragment\n frag = null;\n }\n }\n }\n }\n }\n return frag;\n };\n\n StreamController.prototype._loadFragmentOrKey = function _loadFragmentOrKey(frag, level, levelDetails, pos, bufferEnd) {\n // logger.log('loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));\n if (frag.decryptdata && frag.decryptdata.uri != null && frag.decryptdata.key == null) {\n logger[\"b\" /* logger */].log('Loading key for ' + frag.sn + ' of [' + levelDetails.startSN + ' ,' + levelDetails.endSN + '],level ' + level);\n this.state = State.KEY_LOADING;\n this.hls.trigger(events[\"a\" /* default */].KEY_LOADING, { frag: frag });\n } else {\n logger[\"b\" /* logger */].log('Loading ' + frag.sn + ' of [' + levelDetails.startSN + ' ,' + levelDetails.endSN + '],level ' + level + ', currentTime:' + pos.toFixed(3) + ',bufferEnd:' + bufferEnd.toFixed(3));\n // Check if fragment is not loaded\n var fragState = this.fragmentTracker.getState(frag);\n\n this.fragCurrent = frag;\n this.startFragRequested = true;\n // Don't update nextLoadPosition for fragments which are not buffered\n if (!isNaN(frag.sn) && !frag.bitrateTest) this.nextLoadPosition = frag.start + frag.duration;\n\n // Allow backtracked fragments to load\n if (frag.backtracked || fragState === FragmentState.NOT_LOADED) {\n frag.autoLevel = this.hls.autoLevelEnabled;\n frag.bitrateTest = this.bitrateTest;\n\n this.hls.trigger(events[\"a\" /* default */].FRAG_LOADING, { frag: frag });\n // lazy demuxer init, as this could take some time ... do it during frag loading\n if (!this.demuxer) this.demuxer = new demux_demuxer(this.hls, 'main');\n\n this.state = State.FRAG_LOADING;\n } else if (fragState === FragmentState.APPENDING) {\n // Lower the buffer size and try again\n if (this._reduceMaxBufferLength(frag.duration)) this.fragmentTracker.removeFragment(frag);\n }\n }\n };\n\n StreamController.prototype.getBufferedFrag = function getBufferedFrag(position) {\n return this.fragmentTracker.getBufferedFrag(position, playlist_loader.LevelType.MAIN);\n };\n\n StreamController.prototype.followingBufferedFrag = function followingBufferedFrag(frag) {\n if (frag) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferedFrag(frag.endPTS + 0.5);\n }\n return null;\n };\n\n StreamController.prototype._checkFragmentChanged = function _checkFragmentChanged() {\n var fragPlayingCurrent = void 0,\n currentTime = void 0,\n video = this.media;\n if (video && video.readyState && video.seeking === false) {\n currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n if (currentTime > video.playbackRate * this.lastCurrentTime) this.lastCurrentTime = currentTime;\n\n if (buffer_helper.isBuffered(video, currentTime)) {\n fragPlayingCurrent = this.getBufferedFrag(currentTime);\n } else if (buffer_helper.isBuffered(video, currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n fragPlayingCurrent = this.getBufferedFrag(currentTime + 0.1);\n }\n if (fragPlayingCurrent) {\n var fragPlaying = fragPlayingCurrent;\n if (fragPlaying !== this.fragPlaying) {\n this.hls.trigger(events[\"a\" /* default */].FRAG_CHANGED, { frag: fragPlaying });\n var fragPlayingLevel = fragPlaying.level;\n if (!this.fragPlaying || this.fragPlaying.level !== fragPlayingLevel) this.hls.trigger(events[\"a\" /* default */].LEVEL_SWITCHED, { level: fragPlayingLevel });\n\n this.fragPlaying = fragPlaying;\n }\n }\n }\n };\n\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */\n\n\n StreamController.prototype.immediateLevelSwitch = function immediateLevelSwitch() {\n logger[\"b\" /* logger */].log('immediateLevelSwitch');\n if (!this.immediateSwitch) {\n this.immediateSwitch = true;\n var media = this.media,\n previouslyPaused = void 0;\n if (media) {\n previouslyPaused = media.paused;\n media.pause();\n } else {\n // don't restart playback after instant level switch in case media not attached\n previouslyPaused = true;\n }\n this.previouslyPaused = previouslyPaused;\n }\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && fragCurrent.loader) fragCurrent.loader.abort();\n\n this.fragCurrent = null;\n // flush everything\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n };\n\n /**\n * on immediate level switch end, after new fragment has been buffered:\n * - nudge video decoder by slightly adjusting video currentTime (if currentTime buffered)\n * - resume the playback if needed\n */\n\n\n StreamController.prototype.immediateLevelSwitchEnd = function immediateLevelSwitchEnd() {\n var media = this.media;\n if (media && media.buffered.length) {\n this.immediateSwitch = false;\n if (buffer_helper.isBuffered(media, media.currentTime)) {\n // only nudge if currentTime is buffered\n media.currentTime -= 0.0001;\n }\n if (!this.previouslyPaused) media.play();\n }\n };\n\n /**\n * try to switch ASAP without breaking video playback:\n * in order to ensure smooth but quick level switching,\n * we need to find the next flushable buffer range\n * we should take into account new segment fetch time\n */\n\n\n StreamController.prototype.nextLevelSwitch = function nextLevelSwitch() {\n var media = this.media;\n // ensure that media is defined and that metadata are available (to retrieve currentTime)\n if (media && media.readyState) {\n var fetchdelay = void 0,\n fragPlayingCurrent = void 0,\n nextBufferedFrag = void 0;\n fragPlayingCurrent = this.getBufferedFrag(media.currentTime);\n if (fragPlayingCurrent && fragPlayingCurrent.startPTS > 1) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.flushMainBuffer(0, fragPlayingCurrent.startPTS - 1);\n }\n if (!media.paused) {\n // add a safety delay of 1s\n var nextLevelId = this.hls.nextLoadLevel,\n nextLevel = this.levels[nextLevelId],\n fragLastKbps = this.fragLastKbps;\n if (fragLastKbps && this.fragCurrent) fetchdelay = this.fragCurrent.duration * nextLevel.bitrate / (1000 * fragLastKbps) + 1;else fetchdelay = 0;\n } else {\n fetchdelay = 0;\n }\n // logger.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n nextBufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n if (nextBufferedFrag) {\n // we can flush buffer range following this one without stalling playback\n nextBufferedFrag = this.followingBufferedFrag(nextBufferedFrag);\n if (nextBufferedFrag) {\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && fragCurrent.loader) fragCurrent.loader.abort();\n\n this.fragCurrent = null;\n // start flush position is the start PTS of next buffered frag.\n // we use frag.naxStartPTS which is max(audio startPTS, video startPTS).\n // in case there is a small PTS Delta between audio and video, using maxStartPTS avoids flushing last samples from current fragment\n this.flushMainBuffer(nextBufferedFrag.maxStartPTS, Number.POSITIVE_INFINITY);\n }\n }\n }\n };\n\n StreamController.prototype.flushMainBuffer = function flushMainBuffer(startOffset, endOffset) {\n this.state = State.BUFFER_FLUSHING;\n var flushScope = { startOffset: startOffset, endOffset: endOffset };\n // if alternate audio tracks are used, only flush video, otherwise flush everything\n if (this.altAudio) flushScope.type = 'video';\n\n this.hls.trigger(events[\"a\" /* default */].BUFFER_FLUSHING, flushScope);\n };\n\n StreamController.prototype.onMediaAttached = function onMediaAttached(data) {\n var media = this.media = this.mediaBuffer = data.media;\n this.onvseeking = this.onMediaSeeking.bind(this);\n this.onvseeked = this.onMediaSeeked.bind(this);\n this.onvended = this.onMediaEnded.bind(this);\n media.addEventListener('seeking', this.onvseeking);\n media.addEventListener('seeked', this.onvseeked);\n media.addEventListener('ended', this.onvended);\n var config = this.config;\n if (this.levels && config.autoStartLoad) this.hls.startLoad(config.startPosition);\n };\n\n StreamController.prototype.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n if (media && media.ended) {\n logger[\"b\" /* logger */].log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n // reset fragment backtracked flag\n var levels = this.levels;\n if (levels) {\n levels.forEach(function (level) {\n if (level.details) {\n level.details.fragments.forEach(function (fragment) {\n fragment.backtracked = undefined;\n });\n }\n });\n }\n // remove video listeners\n if (media) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('seeked', this.onvseeked);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvseeked = this.onvended = null;\n }\n this.media = this.mediaBuffer = null;\n this.loadedmetadata = false;\n this.stopLoad();\n };\n\n StreamController.prototype.onMediaSeeking = function onMediaSeeking() {\n var media = this.media,\n currentTime = media ? media.currentTime : undefined,\n config = this.config;\n if (!isNaN(currentTime)) logger[\"b\" /* logger */].log('media seeking to ' + currentTime.toFixed(3));\n\n var mediaBuffer = this.mediaBuffer ? this.mediaBuffer : media;\n var bufferInfo = buffer_helper.bufferInfo(mediaBuffer, currentTime, this.config.maxBufferHole);\n if (this.state === State.FRAG_LOADING) {\n var fragCurrent = this.fragCurrent;\n // check if we are seeking to a unbuffered area AND if frag loading is in progress\n if (bufferInfo.len === 0 && fragCurrent) {\n var tolerance = config.maxFragLookUpTolerance,\n fragStartOffset = fragCurrent.start - tolerance,\n fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance;\n // check if we seek position will be out of currently loaded frag range : if out cancel frag load, if in, don't do anything\n if (currentTime < fragStartOffset || currentTime > fragEndOffset) {\n if (fragCurrent.loader) {\n logger[\"b\" /* logger */].log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n this.fragPrevious = null;\n // switch to IDLE state to load new fragment\n this.state = State.IDLE;\n } else {\n logger[\"b\" /* logger */].log('seeking outside of buffer but within currently loaded fragment range');\n }\n }\n } else if (this.state === State.ENDED) {\n // if seeking to unbuffered area, clean up fragPrevious\n if (bufferInfo.len === 0) this.fragPrevious = 0;\n\n // switch to IDLE state to check for potential new fragment\n this.state = State.IDLE;\n }\n if (media) this.lastCurrentTime = currentTime;\n\n // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target\n if (!this.loadedmetadata) this.nextLoadPosition = this.startPosition = currentTime;\n\n // tick to speed up processing\n this.tick();\n };\n\n StreamController.prototype.onMediaSeeked = function onMediaSeeked() {\n var media = this.media,\n currentTime = media ? media.currentTime : undefined;\n if (!isNaN(currentTime)) logger[\"b\" /* logger */].log('media seeked to ' + currentTime.toFixed(3));\n\n // tick to speed up FRAGMENT_PLAYING triggering\n this.tick();\n };\n\n StreamController.prototype.onMediaEnded = function onMediaEnded() {\n logger[\"b\" /* logger */].log('media ended');\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n };\n\n StreamController.prototype.onManifestLoading = function onManifestLoading() {\n // reset buffer on manifest loading\n logger[\"b\" /* logger */].log('trigger BUFFER_RESET');\n this.hls.trigger(events[\"a\" /* default */].BUFFER_RESET);\n this.fragmentTracker.removeAllFragments();\n this.stalled = false;\n this.startPosition = this.lastCurrentTime = 0;\n };\n\n StreamController.prototype.onManifestParsed = function onManifestParsed(data) {\n var aac = false,\n heaac = false,\n codec = void 0;\n data.levels.forEach(function (level) {\n // detect if we have different kind of audio codecs used amongst playlists\n codec = level.audioCodec;\n if (codec) {\n if (codec.indexOf('mp4a.40.2') !== -1) aac = true;\n\n if (codec.indexOf('mp4a.40.5') !== -1) heaac = true;\n }\n });\n this.audioCodecSwitch = aac && heaac;\n if (this.audioCodecSwitch) logger[\"b\" /* logger */].log('both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC');\n\n this.levels = data.levels;\n this.startFragRequested = false;\n var config = this.config;\n if (config.autoStartLoad || this.forceStartLoad) this.hls.startLoad(config.startPosition);\n };\n\n StreamController.prototype.onLevelLoaded = function onLevelLoaded(data) {\n var newDetails = data.details;\n var newLevelId = data.level;\n var lastLevel = this.levels[this.levelLastLoaded];\n var curLevel = this.levels[newLevelId];\n var duration = newDetails.totalduration;\n var sliding = 0;\n\n logger[\"b\" /* logger */].log('level ' + newLevelId + ' loaded [' + newDetails.startSN + ',' + newDetails.endSN + '],duration:' + duration);\n\n if (newDetails.live) {\n var curDetails = curLevel.details;\n if (curDetails && newDetails.fragments.length > 0) {\n // we already have details for that level, merge them\n mergeDetails(curDetails, newDetails);\n sliding = newDetails.fragments[0].start;\n this.liveSyncPosition = this.computeLivePosition(sliding, curDetails);\n if (newDetails.PTSKnown && !isNaN(sliding)) {\n logger[\"b\" /* logger */].log('live playlist sliding:' + sliding.toFixed(3));\n } else {\n logger[\"b\" /* logger */].log('live playlist - outdated PTS, unknown sliding');\n alignDiscontinuities(this.fragPrevious, lastLevel, newDetails);\n }\n } else {\n logger[\"b\" /* logger */].log('live playlist - first load, unknown sliding');\n newDetails.PTSKnown = false;\n alignDiscontinuities(this.fragPrevious, lastLevel, newDetails);\n }\n } else {\n newDetails.PTSKnown = false;\n }\n // override level info\n curLevel.details = newDetails;\n this.levelLastLoaded = newLevelId;\n this.hls.trigger(events[\"a\" /* default */].LEVEL_UPDATED, { details: newDetails, level: newLevelId });\n\n if (this.startFragRequested === false) {\n // compute start position if set to -1. use it straight away if value is defined\n if (this.startPosition === -1 || this.lastCurrentTime === -1) {\n // first, check if start time offset has been set in playlist, if yes, use this value\n var startTimeOffset = newDetails.startTimeOffset;\n if (!isNaN(startTimeOffset)) {\n if (startTimeOffset < 0) {\n logger[\"b\" /* logger */].log('negative start time offset ' + startTimeOffset + ', count from end of last fragment');\n startTimeOffset = sliding + duration + startTimeOffset;\n }\n logger[\"b\" /* logger */].log('start time offset found in playlist, adjust startPosition to ' + startTimeOffset);\n this.startPosition = startTimeOffset;\n } else {\n // if live playlist, set start position to be fragment N-this.config.liveSyncDurationCount (usually 3)\n if (newDetails.live) {\n this.startPosition = this.computeLivePosition(sliding, newDetails);\n logger[\"b\" /* logger */].log('configure startPosition to ' + this.startPosition);\n } else {\n this.startPosition = 0;\n }\n }\n this.lastCurrentTime = this.startPosition;\n }\n this.nextLoadPosition = this.startPosition;\n }\n // only switch batck to IDLE state if we were waiting for level to start downloading a new fragment\n if (this.state === State.WAITING_LEVEL) this.state = State.IDLE;\n\n // trigger handler right now\n this.tick();\n };\n\n StreamController.prototype.onKeyLoaded = function onKeyLoaded() {\n if (this.state === State.KEY_LOADING) {\n this.state = State.IDLE;\n this.tick();\n }\n };\n\n StreamController.prototype.onFragLoaded = function onFragLoaded(data) {\n var fragCurrent = this.fragCurrent,\n fragLoaded = data.frag;\n if (this.state === State.FRAG_LOADING && fragCurrent && fragLoaded.type === 'main' && fragLoaded.level === fragCurrent.level && fragLoaded.sn === fragCurrent.sn) {\n var stats = data.stats,\n currentLevel = this.levels[fragCurrent.level],\n details = currentLevel.details;\n logger[\"b\" /* logger */].log('Loaded ' + fragCurrent.sn + ' of [' + details.startSN + ' ,' + details.endSN + '],level ' + fragCurrent.level);\n // reset frag bitrate test in any case after frag loaded event\n this.bitrateTest = false;\n this.stats = stats;\n // if this frag was loaded to perform a bitrate test AND if hls.nextLoadLevel is greater than 0\n // then this means that we should be able to load a fragment at a higher quality level\n if (fragLoaded.bitrateTest === true && this.hls.nextLoadLevel) {\n // switch back to IDLE state ... we just loaded a fragment to determine adequate start bitrate and initialize autoswitch algo\n this.state = State.IDLE;\n this.startFragRequested = false;\n stats.tparsed = stats.tbuffered = performance.now();\n this.hls.trigger(events[\"a\" /* default */].FRAG_BUFFERED, { stats: stats, frag: fragCurrent, id: 'main' });\n this.tick();\n } else if (fragLoaded.sn === 'initSegment') {\n this.state = State.IDLE;\n stats.tparsed = stats.tbuffered = performance.now();\n details.initSegment.data = data.payload;\n this.hls.trigger(events[\"a\" /* default */].FRAG_BUFFERED, { stats: stats, frag: fragCurrent, id: 'main' });\n this.tick();\n } else {\n this.state = State.PARSING;\n // transmux the MPEG-TS data to ISO-BMFF segments\n var duration = details.totalduration,\n level = fragCurrent.level,\n sn = fragCurrent.sn,\n audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n if (this.audioCodecSwap) {\n logger[\"b\" /* logger */].log('swapping playlist audio codec');\n if (audioCodec === undefined) audioCodec = this.lastAudioCodec;\n\n if (audioCodec) {\n if (audioCodec.indexOf('mp4a.40.5') !== -1) audioCodec = 'mp4a.40.2';else audioCodec = 'mp4a.40.5';\n }\n }\n this.pendingBuffering = true;\n this.appended = false;\n logger[\"b\" /* logger */].log('Parsing ' + sn + ' of [' + details.startSN + ' ,' + details.endSN + '],level ' + level + ', cc ' + fragCurrent.cc);\n var demuxer = this.demuxer;\n if (!demuxer) demuxer = this.demuxer = new demux_demuxer(this.hls, 'main');\n\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live) and if media is not seeking (this is to overcome potential timestamp drifts between playlists and fragments)\n var media = this.media;\n var mediaSeeking = media && media.seeking;\n var accurateTimeOffset = !mediaSeeking && (details.PTSKnown || !details.live);\n var initSegmentData = details.initSegment ? details.initSegment.data : [];\n demuxer.push(data.payload, initSegmentData, audioCodec, currentLevel.videoCodec, fragCurrent, duration, accurateTimeOffset, undefined);\n }\n }\n this.fragLoadError = 0;\n };\n\n StreamController.prototype.onFragParsingInitSegment = function onFragParsingInitSegment(data) {\n var fragCurrent = this.fragCurrent;\n var fragNew = data.frag;\n\n if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) {\n var tracks = data.tracks,\n trackName = void 0,\n track = void 0;\n\n // if audio track is expected to come from audio stream controller, discard any coming from main\n if (tracks.audio && this.altAudio) delete tracks.audio;\n\n // include levelCodec in audio and video tracks\n track = tracks.audio;\n if (track) {\n var audioCodec = this.levels[this.level].audioCodec,\n ua = navigator.userAgent.toLowerCase();\n if (audioCodec && this.audioCodecSwap) {\n logger[\"b\" /* logger */].log('swapping playlist audio codec');\n if (audioCodec.indexOf('mp4a.40.5') !== -1) audioCodec = 'mp4a.40.2';else audioCodec = 'mp4a.40.5';\n }\n // in case AAC and HE-AAC audio codecs are signalled in manifest\n // force HE-AAC , as it seems that most browsers prefers that way,\n // except for mono streams OR on FF\n // these conditions might need to be reviewed ...\n if (this.audioCodecSwitch) {\n // don't force HE-AAC if mono stream\n if (track.metadata.channelCount !== 1 &&\n // don't force HE-AAC if firefox\n ua.indexOf('firefox') === -1) audioCodec = 'mp4a.40.5';\n }\n // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise\n if (ua.indexOf('android') !== -1 && track.container !== 'audio/mpeg') {\n // Exclude mpeg audio\n audioCodec = 'mp4a.40.2';\n logger[\"b\" /* logger */].log('Android: force audio codec to ' + audioCodec);\n }\n track.levelCodec = audioCodec;\n track.id = data.id;\n }\n track = tracks.video;\n if (track) {\n track.levelCodec = this.levels[this.level].videoCodec;\n track.id = data.id;\n }\n this.hls.trigger(events[\"a\" /* default */].BUFFER_CODECS, tracks);\n // loop through tracks that are going to be provided to bufferController\n for (trackName in tracks) {\n track = tracks[trackName];\n logger[\"b\" /* logger */].log('main track:' + trackName + ',container:' + track.container + ',codecs[level/parsed]=[' + track.levelCodec + '/' + track.codec + ']');\n var initSegment = track.initSegment;\n if (initSegment) {\n this.appended = true;\n // arm pending Buffering flag before appending a segment\n this.pendingBuffering = true;\n this.hls.trigger(events[\"a\" /* default */].BUFFER_APPENDING, { type: trackName, data: initSegment, parent: 'main', content: 'initSegment' });\n }\n }\n // trigger handler right now\n this.tick();\n }\n };\n\n StreamController.prototype.onFragParsingData = function onFragParsingData(data) {\n var _this2 = this;\n\n var fragCurrent = this.fragCurrent;\n var fragNew = data.frag;\n if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && !(data.type === 'audio' && this.altAudio) && // filter out main audio if audio track is loaded through audio stream controller\n this.state === State.PARSING) {\n var level = this.levels[this.level],\n frag = fragCurrent;\n if (isNaN(data.endPTS)) {\n data.endPTS = data.startPTS + fragCurrent.duration;\n data.endDTS = data.startDTS + fragCurrent.duration;\n }\n\n if (data.hasAudio === true) frag.addElementaryStream(loader_fragment.ElementaryStreamTypes.AUDIO);\n\n if (data.hasVideo === true) frag.addElementaryStream(loader_fragment.ElementaryStreamTypes.VIDEO);\n\n logger[\"b\" /* logger */].log('Parsed ' + data.type + ',PTS:[' + data.startPTS.toFixed(3) + ',' + data.endPTS.toFixed(3) + '],DTS:[' + data.startDTS.toFixed(3) + '/' + data.endDTS.toFixed(3) + '],nb:' + data.nb + ',dropped:' + (data.dropped || 0));\n\n // Detect gaps in a fragment and try to fix it by finding a keyframe in the previous fragment (see _findFragments)\n if (data.type === 'video') {\n frag.dropped = data.dropped;\n if (frag.dropped) {\n if (!frag.backtracked) {\n var levelDetails = level.details;\n if (levelDetails && frag.sn === levelDetails.startSN) {\n logger[\"b\" /* logger */].warn('missing video frame(s) on first frag, appending with gap');\n } else {\n logger[\"b\" /* logger */].warn('missing video frame(s), backtracking fragment');\n // Return back to the IDLE state without appending to buffer\n // Causes findFragments to backtrack a segment and find the keyframe\n // Audio fragments arriving before video sets the nextLoadPosition, causing _findFragments to skip the backtracked fragment\n this.fragmentTracker.removeFragment(frag);\n frag.backtracked = true;\n this.nextLoadPosition = data.startPTS;\n this.state = State.IDLE;\n this.fragPrevious = frag;\n this.tick();\n return;\n }\n } else {\n logger[\"b\" /* logger */].warn('Already backtracked on this fragment, appending with the gap');\n }\n } else {\n // Only reset the backtracked flag if we've loaded the frag without any dropped frames\n frag.backtracked = false;\n }\n }\n\n var drift = updateFragPTSDTS(level.details, frag, data.startPTS, data.endPTS, data.startDTS, data.endDTS),\n hls = this.hls;\n hls.trigger(events[\"a\" /* default */].LEVEL_PTS_UPDATED, { details: level.details, level: this.level, drift: drift, type: data.type, start: data.startPTS, end: data.endPTS });\n // has remuxer dropped video frames located before first keyframe ?\n [data.data1, data.data2].forEach(function (buffer) {\n // only append in PARSING state (rationale is that an appending error could happen synchronously on first segment appending)\n // in that case it is useless to append following segments\n if (buffer && buffer.length && _this2.state === State.PARSING) {\n _this2.appended = true;\n // arm pending Buffering flag before appending a segment\n _this2.pendingBuffering = true;\n hls.trigger(events[\"a\" /* default */].BUFFER_APPENDING, { type: data.type, data: buffer, parent: 'main', content: 'data' });\n }\n });\n // trigger handler right now\n this.tick();\n }\n };\n\n StreamController.prototype.onFragParsed = function onFragParsed(data) {\n var fragCurrent = this.fragCurrent;\n var fragNew = data.frag;\n if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) {\n this.stats.tparsed = performance.now();\n this.state = State.PARSED;\n this._checkAppendedParsed();\n }\n };\n\n StreamController.prototype.onAudioTrackSwitching = function onAudioTrackSwitching(data) {\n // if any URL found on new audio track, it is an alternate audio track\n var altAudio = !!data.url,\n trackId = data.id;\n // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered\n // don't do anything if we switch to alt audio: audio stream controller is handling it.\n // we will just have to change buffer scheduling on audioTrackSwitched\n if (!altAudio) {\n if (this.mediaBuffer !== this.media) {\n logger[\"b\" /* logger */].log('switching on main audio, use media.buffered to schedule main fragment loading');\n this.mediaBuffer = this.media;\n var fragCurrent = this.fragCurrent;\n // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch\n if (fragCurrent.loader) {\n logger[\"b\" /* logger */].log('switching to main audio track, cancel main fragment load');\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n this.fragPrevious = null;\n // destroy demuxer to force init segment generation (following audio switch)\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = null;\n }\n // switch to IDLE state to load new fragment\n this.state = State.IDLE;\n }\n var hls = this.hls;\n // switching to main audio, flush all audio and trigger track switched\n hls.trigger(events[\"a\" /* default */].BUFFER_FLUSHING, { startOffset: 0, endOffset: Number.POSITIVE_INFINITY, type: 'audio' });\n hls.trigger(events[\"a\" /* default */].AUDIO_TRACK_SWITCHED, { id: trackId });\n this.altAudio = false;\n }\n };\n\n StreamController.prototype.onAudioTrackSwitched = function onAudioTrackSwitched(data) {\n var trackId = data.id,\n altAudio = !!this.hls.audioTracks[trackId].url;\n if (altAudio) {\n var videoBuffer = this.videoBuffer;\n // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered\n if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n logger[\"b\" /* logger */].log('switching on alternate audio, use video.buffered to schedule main fragment loading');\n this.mediaBuffer = videoBuffer;\n }\n }\n this.altAudio = altAudio;\n this.tick();\n };\n\n StreamController.prototype.onBufferCreated = function onBufferCreated(data) {\n var tracks = data.tracks,\n mediaTrack = void 0,\n name = void 0,\n alternate = false;\n for (var type in tracks) {\n var track = tracks[type];\n if (track.id === 'main') {\n name = type;\n mediaTrack = track;\n // keep video source buffer reference\n if (type === 'video') this.videoBuffer = tracks[type].buffer;\n } else {\n alternate = true;\n }\n }\n if (alternate && mediaTrack) {\n logger[\"b\" /* logger */].log('alternate track found, use ' + name + '.buffered to schedule main fragment loading');\n this.mediaBuffer = mediaTrack.buffer;\n } else {\n this.mediaBuffer = this.media;\n }\n };\n\n StreamController.prototype.onBufferAppended = function onBufferAppended(data) {\n if (data.parent === 'main') {\n var state = this.state;\n if (state === State.PARSING || state === State.PARSED) {\n // check if all buffers have been appended\n this.pendingBuffering = data.pending > 0;\n this._checkAppendedParsed();\n }\n }\n };\n\n StreamController.prototype._checkAppendedParsed = function _checkAppendedParsed() {\n // trigger handler right now\n if (this.state === State.PARSED && (!this.appended || !this.pendingBuffering)) {\n var frag = this.fragCurrent;\n if (frag) {\n var media = this.mediaBuffer ? this.mediaBuffer : this.media;\n logger[\"b\" /* logger */].log('main buffered : ' + time_ranges.toString(media.buffered));\n this.fragPrevious = frag;\n var stats = this.stats;\n stats.tbuffered = performance.now();\n // we should get rid of this.fragLastKbps\n this.fragLastKbps = Math.round(8 * stats.total / (stats.tbuffered - stats.tfirst));\n this.hls.trigger(events[\"a\" /* default */].FRAG_BUFFERED, { stats: stats, frag: frag, id: 'main' });\n this.state = State.IDLE;\n }\n this.tick();\n }\n };\n\n StreamController.prototype.onError = function onError(data) {\n var frag = data.frag || this.fragCurrent;\n // don't handle frag error not related to main fragment\n if (frag && frag.type !== 'main') return;\n\n // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n var mediaBuffered = !!this.media && buffer_helper.isBuffered(this.media, this.media.currentTime) && buffer_helper.isBuffered(this.media, this.media.currentTime + 0.5);\n\n switch (data.details) {\n case errors[\"a\" /* ErrorDetails */].FRAG_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].FRAG_LOAD_TIMEOUT:\n case errors[\"a\" /* ErrorDetails */].KEY_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].KEY_LOAD_TIMEOUT:\n if (!data.fatal) {\n // keep retrying until the limit will be reached\n if (this.fragLoadError + 1 <= this.config.fragLoadingMaxRetry) {\n // exponential backoff capped to config.fragLoadingMaxRetryTimeout\n var delay = Math.min(Math.pow(2, this.fragLoadError) * this.config.fragLoadingRetryDelay, this.config.fragLoadingMaxRetryTimeout);\n logger[\"b\" /* logger */].warn('mediaController: frag loading failed, retry in ' + delay + ' ms');\n this.retryDate = performance.now() + delay;\n // retry loading state\n // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n }\n this.fragLoadError++;\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else {\n logger[\"b\" /* logger */].error('mediaController: ' + data.details + ' reaches max retry, redispatch as fatal ...');\n // switch error to fatal\n data.fatal = true;\n this.state = State.ERROR;\n }\n }\n break;\n case errors[\"a\" /* ErrorDetails */].LEVEL_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].LEVEL_LOAD_TIMEOUT:\n if (this.state !== State.ERROR) {\n if (data.fatal) {\n // if fatal error, stop processing\n this.state = State.ERROR;\n logger[\"b\" /* logger */].warn('streamController: ' + data.details + ',switch to ' + this.state + ' state ...');\n } else {\n // in case of non fatal error while loading level, if level controller is not retrying to load level , switch back to IDLE\n if (!data.levelRetry && this.state === State.WAITING_LEVEL) this.state = State.IDLE;\n }\n }\n break;\n case errors[\"a\" /* ErrorDetails */].BUFFER_FULL_ERROR:\n // if in appending state\n if (data.parent === 'main' && (this.state === State.PARSING || this.state === State.PARSED)) {\n // reduce max buf len if current position is buffered\n if (mediaBuffered) {\n this._reduceMaxBufferLength(this.config.maxBufferLength);\n this.state = State.IDLE;\n } else {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole buffer to recover\n logger[\"b\" /* logger */].warn('buffer full error also media.currentTime is not buffered, flush everything');\n this.fragCurrent = null;\n // flush everything\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n }\n }\n break;\n default:\n break;\n }\n };\n\n StreamController.prototype._reduceMaxBufferLength = function _reduceMaxBufferLength(minLength) {\n var config = this.config;\n if (config.maxMaxBufferLength >= minLength) {\n // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n config.maxMaxBufferLength /= 2;\n logger[\"b\" /* logger */].warn('main:reduce max buffer length to ' + config.maxMaxBufferLength + 's');\n return true;\n }\n return false;\n };\n\n StreamController.prototype._checkBuffer = function _checkBuffer() {\n var media = this.media,\n config = this.config;\n // if ready state different from HAVE_NOTHING (numeric value 0), we are allowed to seek\n if (media && media.readyState) {\n var currentTime = media.currentTime,\n mediaBuffer = this.mediaBuffer ? this.mediaBuffer : media,\n buffered = mediaBuffer.buffered;\n // adjust currentTime to start position on loaded metadata\n if (!this.loadedmetadata && buffered.length) {\n this.loadedmetadata = true;\n // only adjust currentTime if different from startPosition or if startPosition not buffered\n // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered\n var startPosition = media.seeking ? currentTime : this.startPosition;\n // if currentTime not matching with expected startPosition or startPosition not buffered but close to first buffered\n if (currentTime !== startPosition) {\n // if startPosition not buffered, let's seek to buffered.start(0)\n\n logger[\"b\" /* logger */].log('target start position not buffered, seek to buffered.start(0) ' + startPosition + ' from current time' + currentTime + ' ');\n media.currentTime = startPosition;\n }\n } else if (this.immediateSwitch) {\n this.immediateLevelSwitchEnd();\n } else {\n var bufferInfo = buffer_helper.bufferInfo(media, currentTime, config.maxBufferHole),\n expectedPlaying = !(media.paused && media.readyState > 1 || // not playing when media is paused and sufficiently buffered\n media.ended || // not playing when media is ended\n media.buffered.length === 0),\n // not playing if nothing buffered\n jumpThreshold = 0.5,\n // tolerance needed as some browsers stalls playback before reaching buffered range end\n playheadMoving = currentTime !== this.lastCurrentTime;\n\n if (playheadMoving) {\n // played moving, but was previously stalled => now not stuck anymore\n if (this.stallReported) {\n logger[\"b\" /* logger */].warn('playback not stuck anymore @' + currentTime + ', after ' + Math.round(performance.now() - this.stalled) + 'ms');\n this.stallReported = false;\n }\n this.stalled = undefined;\n this.nudgeRetry = 0;\n } else {\n // playhead not moving\n if (expectedPlaying) {\n // playhead not moving BUT media expected to play\n var tnow = performance.now();\n var hls = this.hls;\n if (!this.stalled) {\n // stall just detected, store current time\n this.stalled = tnow;\n this.stallReported = false;\n } else {\n // playback already stalled, check stalling duration\n // if stalling for more than a given threshold, let's try to recover\n var stalledDuration = tnow - this.stalled;\n var bufferLen = bufferInfo.len;\n var nudgeRetry = this.nudgeRetry || 0;\n // Check if fragment is broken\n var partial = this.fragmentTracker.getPartialFragment(currentTime);\n if (partial !== null) {\n var lastEndTime = 0;\n // Check if currentTime is between unbuffered regions of partial fragments\n for (var i = 0; i < media.buffered.length; i++) {\n var startTime = media.buffered.start(i);\n if (currentTime >= lastEndTime && currentTime < startTime) {\n media.currentTime = Math.max(startTime, media.currentTime + 0.1);\n logger[\"b\" /* logger */].warn('skipping hole, adjusting currentTime from ' + currentTime + ' to ' + media.currentTime);\n this.stalled = undefined;\n hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].BUFFER_SEEK_OVER_HOLE, fatal: false, reason: 'fragment loaded with buffer holes, seeking from ' + currentTime + ' to ' + media.currentTime, frag: partial });\n return;\n }\n lastEndTime = media.buffered.end(i);\n }\n }\n if (bufferLen > jumpThreshold && stalledDuration > config.highBufferWatchdogPeriod * 1000) {\n // report stalled error once\n if (!this.stallReported) {\n this.stallReported = true;\n logger[\"b\" /* logger */].warn('playback stalling in high buffer @' + currentTime);\n hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].BUFFER_STALLED_ERROR, fatal: false, buffer: bufferLen });\n }\n // reset stalled so to rearm watchdog timer\n this.stalled = undefined;\n this.nudgeRetry = ++nudgeRetry;\n if (nudgeRetry < config.nudgeMaxRetry) {\n var _currentTime = media.currentTime;\n var targetTime = _currentTime + nudgeRetry * config.nudgeOffset;\n logger[\"b\" /* logger */].log('adjust currentTime from ' + _currentTime + ' to ' + targetTime);\n // playback stalled in buffered area ... let's nudge currentTime to try to overcome this\n media.currentTime = targetTime;\n hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].BUFFER_NUDGE_ON_STALL, fatal: false });\n } else {\n logger[\"b\" /* logger */].error('still stuck in high buffer @' + currentTime + ' after ' + config.nudgeMaxRetry + ', raise fatal error');\n hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].BUFFER_STALLED_ERROR, fatal: true });\n }\n }\n }\n }\n }\n }\n }\n };\n\n StreamController.prototype.onFragLoadEmergencyAborted = function onFragLoadEmergencyAborted() {\n this.state = State.IDLE;\n // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n }\n this.tick();\n };\n\n StreamController.prototype.onBufferFlushed = function onBufferFlushed() {\n /* after successful buffer flushing, filter flushed fragments from bufferedFrags\n use mediaBuffered instead of media (so that we will check against video.buffered ranges in case of alt audio track)\n */\n var media = this.mediaBuffer ? this.mediaBuffer : this.media;\n // filter fragments potentially evicted from buffer. this is to avoid memleak on live streams\n this.fragmentTracker.detectEvictedFragments(loader_fragment.ElementaryStreamTypes.VIDEO, media.buffered);\n\n // move to IDLE once flush complete. this should trigger new fragment loading\n this.state = State.IDLE;\n // reset reference to frag\n this.fragPrevious = null;\n };\n\n StreamController.prototype.swapAudioCodec = function swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n };\n\n StreamController.prototype.computeLivePosition = function computeLivePosition(sliding, levelDetails) {\n var targetLatency = this.config.liveSyncDuration !== undefined ? this.config.liveSyncDuration : this.config.liveSyncDurationCount * levelDetails.targetduration;\n return sliding + Math.max(0, levelDetails.totalduration - targetLatency);\n };\n\n stream_controller__createClass(StreamController, [{\n key: 'state',\n set: function set(nextState) {\n if (this.state !== nextState) {\n var previousState = this.state;\n this._state = nextState;\n logger[\"b\" /* logger */].log('main stream:' + previousState + '->' + nextState);\n this.hls.trigger(events[\"a\" /* default */].STREAM_STATE_TRANSITION, { previousState: previousState, nextState: nextState });\n }\n },\n get: function get() {\n return this._state;\n }\n }, {\n key: 'currentLevel',\n get: function get() {\n var media = this.media;\n if (media) {\n var frag = this.getBufferedFrag(media.currentTime);\n if (frag) return frag.level;\n }\n return -1;\n }\n }, {\n key: 'nextBufferedFrag',\n get: function get() {\n var media = this.media;\n if (media) {\n // first get end range of current fragment\n return this.followingBufferedFrag(this.getBufferedFrag(media.currentTime));\n } else {\n return null;\n }\n }\n }, {\n key: 'nextLevel',\n get: function get() {\n var frag = this.nextBufferedFrag;\n if (frag) return frag.level;else return -1;\n }\n }, {\n key: 'liveSyncPosition',\n get: function get() {\n return this._liveSyncPosition;\n },\n set: function set(value) {\n this._liveSyncPosition = value;\n }\n }]);\n\n return StreamController;\n}(task_loop);\n\n/* harmony default export */ var stream_controller = (stream_controller_StreamController);\n// CONCATENATED MODULE: ./src/controller/level-controller.js\nvar level_controller__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction level_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction level_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction level_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * Level Controller\n*/\n\n\n\n\n\n\n\nvar level_controller_LevelController = function (_EventHandler) {\n level_controller__inherits(LevelController, _EventHandler);\n\n function LevelController(hls) {\n level_controller__classCallCheck(this, LevelController);\n\n var _this = level_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MANIFEST_LOADED, events[\"a\" /* default */].LEVEL_LOADED, events[\"a\" /* default */].FRAG_LOADED, events[\"a\" /* default */].ERROR));\n\n _this.canload = false;\n _this.currentLevelIndex = null;\n _this.manualLevelIndex = -1;\n _this.timer = null;\n return _this;\n }\n\n LevelController.prototype.onHandlerDestroying = function onHandlerDestroying() {\n this.cleanTimer();\n this.manualLevelIndex = -1;\n };\n\n LevelController.prototype.cleanTimer = function cleanTimer() {\n if (this.timer !== null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n };\n\n LevelController.prototype.startLoad = function startLoad() {\n var levels = this._levels;\n\n this.canload = true;\n this.levelRetryCount = 0;\n\n // clean up live level details to force reload them, and reset load errors\n if (levels) {\n levels.forEach(function (level) {\n level.loadError = 0;\n var levelDetails = level.details;\n if (levelDetails && levelDetails.live) level.details = undefined;\n });\n }\n // speed up live playlist refresh if timer exists\n if (this.timer !== null) this.loadLevel();\n };\n\n LevelController.prototype.stopLoad = function stopLoad() {\n this.canload = false;\n };\n\n LevelController.prototype.onManifestLoaded = function onManifestLoaded(data) {\n var levels = [];\n var bitrateStart = void 0;\n var levelSet = {};\n var levelFromSet = null;\n var videoCodecFound = false;\n var audioCodecFound = false;\n var chromeOrFirefox = /chrome|firefox/.test(navigator.userAgent.toLowerCase());\n var audioTracks = [];\n\n // regroup redundant levels together\n data.levels.forEach(function (level) {\n level.loadError = 0;\n level.fragmentError = false;\n\n videoCodecFound = videoCodecFound || !!level.videoCodec;\n audioCodecFound = audioCodecFound || !!level.audioCodec || !!(level.attrs && level.attrs.AUDIO);\n\n // erase audio codec info if browser does not support mp4a.40.34.\n // demuxer will autodetect codec and fallback to mpeg/audio\n if (chromeOrFirefox === true && level.audioCodec && level.audioCodec.indexOf('mp4a.40.34') !== -1) level.audioCodec = undefined;\n\n levelFromSet = levelSet[level.bitrate];\n\n if (levelFromSet === undefined) {\n level.url = [level.url];\n level.urlId = 0;\n levelSet[level.bitrate] = level;\n levels.push(level);\n } else {\n levelFromSet.url.push(level.url);\n }\n });\n\n // remove audio-only level if we also have levels with audio+video codecs signalled\n if (videoCodecFound === true && audioCodecFound === true) levels = levels.filter(function (_ref) {\n var videoCodec = _ref.videoCodec;\n return !!videoCodec;\n });\n\n // only keep levels with supported audio/video codecs\n levels = levels.filter(function (_ref2) {\n var audioCodec = _ref2.audioCodec,\n videoCodec = _ref2.videoCodec;\n\n return (!audioCodec || isCodecSupportedInMp4(audioCodec)) && (!videoCodec || isCodecSupportedInMp4(videoCodec));\n });\n\n if (data.audioTracks) audioTracks = data.audioTracks.filter(function (track) {\n return !track.audioCodec || isCodecSupportedInMp4(track.audioCodec, 'audio');\n });\n\n if (levels.length > 0) {\n // start bitrate is the first bitrate of the manifest\n bitrateStart = levels[0].bitrate;\n // sort level on bitrate\n levels.sort(function (a, b) {\n return a.bitrate - b.bitrate;\n });\n this._levels = levels;\n // find index of first level in sorted levels\n for (var i = 0; i < levels.length; i++) {\n if (levels[i].bitrate === bitrateStart) {\n this._firstLevel = i;\n logger[\"b\" /* logger */].log('manifest loaded,' + levels.length + ' level(s) found, first bitrate:' + bitrateStart);\n break;\n }\n }\n this.hls.trigger(events[\"a\" /* default */].MANIFEST_PARSED, {\n levels: levels,\n audioTracks: audioTracks,\n firstLevel: this._firstLevel,\n stats: data.stats,\n audio: audioCodecFound,\n video: videoCodecFound,\n altAudio: audioTracks.length > 0\n });\n } else {\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR,\n details: errors[\"a\" /* ErrorDetails */].MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n url: this.hls.url,\n reason: 'no level with compatible codecs found in manifest'\n });\n }\n };\n\n LevelController.prototype.setLevelInternal = function setLevelInternal(newLevel) {\n var levels = this._levels;\n var hls = this.hls;\n // check if level idx is valid\n if (newLevel >= 0 && newLevel < levels.length) {\n // stopping live reloading timer if any\n this.cleanTimer();\n if (this.currentLevelIndex !== newLevel) {\n logger[\"b\" /* logger */].log('switching to level ' + newLevel);\n this.currentLevelIndex = newLevel;\n var levelProperties = levels[newLevel];\n levelProperties.level = newLevel;\n hls.trigger(events[\"a\" /* default */].LEVEL_SWITCHING, levelProperties);\n }\n var level = levels[newLevel],\n levelDetails = level.details;\n // check if we need to load playlist for this level\n if (!levelDetails || levelDetails.live === true) {\n // level not retrieved yet, or live playlist we need to (re)load it\n var urlId = level.urlId;\n hls.trigger(events[\"a\" /* default */].LEVEL_LOADING, { url: level.url[urlId], level: newLevel, id: urlId });\n }\n } else {\n // invalid level id given, trigger error\n hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].OTHER_ERROR,\n details: errors[\"a\" /* ErrorDetails */].LEVEL_SWITCH_ERROR,\n level: newLevel,\n fatal: false,\n reason: 'invalid level idx'\n });\n }\n };\n\n LevelController.prototype.onError = function onError(data) {\n if (data.fatal === true) {\n if (data.type === errors[\"b\" /* ErrorTypes */].NETWORK_ERROR) this.cleanTimer();\n\n return;\n }\n\n var levelError = false,\n fragmentError = false;\n var levelIndex = void 0;\n\n // try to recover not fatal errors\n switch (data.details) {\n case errors[\"a\" /* ErrorDetails */].FRAG_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].FRAG_LOAD_TIMEOUT:\n case errors[\"a\" /* ErrorDetails */].KEY_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].KEY_LOAD_TIMEOUT:\n levelIndex = data.frag.level;\n fragmentError = true;\n break;\n case errors[\"a\" /* ErrorDetails */].LEVEL_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].LEVEL_LOAD_TIMEOUT:\n levelIndex = data.context.level;\n levelError = true;\n break;\n case errors[\"a\" /* ErrorDetails */].REMUX_ALLOC_ERROR:\n levelIndex = data.level;\n levelError = true;\n break;\n }\n\n if (levelIndex !== undefined) this.recoverLevel(data, levelIndex, levelError, fragmentError);\n };\n\n /**\n * Switch to a redundant stream if any available.\n * If redundant stream is not available, emergency switch down if ABR mode is enabled.\n *\n * @param {Object} errorEvent\n * @param {Number} levelIndex current level index\n * @param {Boolean} levelError\n * @param {Boolean} fragmentError\n */\n // FIXME Find a better abstraction where fragment/level retry management is well decoupled\n\n\n LevelController.prototype.recoverLevel = function recoverLevel(errorEvent, levelIndex, levelError, fragmentError) {\n var _this2 = this;\n\n var config = this.hls.config;\n var errorDetails = errorEvent.details;\n\n var level = this._levels[levelIndex];\n var redundantLevels = void 0,\n delay = void 0,\n nextLevel = void 0;\n\n level.loadError++;\n level.fragmentError = fragmentError;\n\n if (levelError === true) {\n if (this.levelRetryCount + 1 <= config.levelLoadingMaxRetry) {\n // exponential backoff capped to max retry timeout\n delay = Math.min(Math.pow(2, this.levelRetryCount) * config.levelLoadingRetryDelay, config.levelLoadingMaxRetryTimeout);\n // Schedule level reload\n this.timer = setTimeout(function () {\n return _this2.loadLevel();\n }, delay);\n // boolean used to inform stream controller not to switch back to IDLE on non fatal error\n errorEvent.levelRetry = true;\n this.levelRetryCount++;\n logger[\"b\" /* logger */].warn('level controller, ' + errorDetails + ', retry in ' + delay + ' ms, current retry count is ' + this.levelRetryCount);\n } else {\n logger[\"b\" /* logger */].error('level controller, cannot recover from ' + errorDetails + ' error');\n this.currentLevelIndex = null;\n // stopping live reloading timer if any\n this.cleanTimer();\n // switch error to fatal\n errorEvent.fatal = true;\n return;\n }\n }\n\n // Try any redundant streams if available for both errors: level and fragment\n // If level.loadError reaches redundantLevels it means that we tried them all, no hope => let's switch down\n if (levelError === true || fragmentError === true) {\n redundantLevels = level.url.length;\n\n if (redundantLevels > 1 && level.loadError < redundantLevels) {\n logger[\"b\" /* logger */].warn('level controller, ' + errorDetails + ' for level ' + levelIndex + ': switching to redundant stream id ' + level.urlId);\n level.urlId = (level.urlId + 1) % redundantLevels;\n level.details = undefined;\n } else {\n // Search for available level\n if (this.manualLevelIndex === -1) {\n // When lowest level has been reached, let's start hunt from the top\n nextLevel = levelIndex === 0 ? this._levels.length - 1 : levelIndex - 1;\n logger[\"b\" /* logger */].warn('level controller, ' + errorDetails + ': switch to ' + nextLevel);\n this.hls.nextAutoLevel = this.currentLevelIndex = nextLevel;\n } else if (fragmentError === true) {\n // Allow fragment retry as long as configuration allows.\n // reset this._level so that another call to set level() will trigger again a frag load\n logger[\"b\" /* logger */].warn('level controller, ' + errorDetails + ': reload a fragment');\n this.currentLevelIndex = null;\n }\n }\n }\n };\n\n // reset errors on the successful load of a fragment\n\n\n LevelController.prototype.onFragLoaded = function onFragLoaded(_ref3) {\n var frag = _ref3.frag;\n\n if (frag !== undefined && frag.type === 'main') {\n var level = this._levels[frag.level];\n if (level !== undefined) {\n level.fragmentError = false;\n level.loadError = 0;\n this.levelRetryCount = 0;\n }\n }\n };\n\n LevelController.prototype.onLevelLoaded = function onLevelLoaded(data) {\n var _this3 = this;\n\n var levelId = data.level;\n // only process level loaded events matching with expected level\n if (levelId === this.currentLevelIndex) {\n var curLevel = this._levels[levelId];\n // reset level load error counter on successful level loaded only if there is no issues with fragments\n if (curLevel.fragmentError === false) {\n curLevel.loadError = 0;\n this.levelRetryCount = 0;\n }\n var newDetails = data.details;\n // if current playlist is a live playlist, arm a timer to reload it\n if (newDetails.live) {\n var targetdurationMs = 1000 * (newDetails.averagetargetduration ? newDetails.averagetargetduration : newDetails.targetduration);\n var reloadInterval = targetdurationMs,\n curDetails = curLevel.details;\n if (curDetails && newDetails.endSN === curDetails.endSN) {\n // follow HLS Spec, If the client reloads a Playlist file and finds that it has not\n // changed then it MUST wait for a period of one-half the target\n // duration before retrying.\n reloadInterval /= 2;\n logger[\"b\" /* logger */].log('same live playlist, reload twice faster');\n }\n // decrement reloadInterval with level loading delay\n reloadInterval -= performance.now() - data.stats.trequest;\n // in any case, don't reload more than half of target duration\n reloadInterval = Math.max(targetdurationMs / 2, Math.round(reloadInterval));\n logger[\"b\" /* logger */].log('live playlist, reload in ' + Math.round(reloadInterval) + ' ms');\n this.timer = setTimeout(function () {\n return _this3.loadLevel();\n }, reloadInterval);\n } else {\n this.cleanTimer();\n }\n }\n };\n\n LevelController.prototype.loadLevel = function loadLevel() {\n var level = void 0,\n urlIndex = void 0;\n\n if (this.currentLevelIndex !== null && this.canload === true) {\n level = this._levels[this.currentLevelIndex];\n if (level !== undefined && level.url.length > 0) {\n urlIndex = level.urlId;\n this.hls.trigger(events[\"a\" /* default */].LEVEL_LOADING, { url: level.url[urlIndex], level: this.currentLevelIndex, id: urlIndex });\n }\n }\n };\n\n level_controller__createClass(LevelController, [{\n key: 'levels',\n get: function get() {\n return this._levels;\n }\n }, {\n key: 'level',\n get: function get() {\n return this.currentLevelIndex;\n },\n set: function set(newLevel) {\n var levels = this._levels;\n if (levels) {\n newLevel = Math.min(newLevel, levels.length - 1);\n if (this.currentLevelIndex !== newLevel || levels[newLevel].details === undefined) this.setLevelInternal(newLevel);\n }\n }\n }, {\n key: 'manualLevel',\n get: function get() {\n return this.manualLevelIndex;\n },\n set: function set(newLevel) {\n this.manualLevelIndex = newLevel;\n if (this._startLevel === undefined) this._startLevel = newLevel;\n\n if (newLevel !== -1) this.level = newLevel;\n }\n }, {\n key: 'firstLevel',\n get: function get() {\n return this._firstLevel;\n },\n set: function set(newLevel) {\n this._firstLevel = newLevel;\n }\n }, {\n key: 'startLevel',\n get: function get() {\n // hls.startLevel takes precedence over config.startLevel\n // if none of these values are defined, fallback on this._firstLevel (first quality level appearing in variant manifest)\n if (this._startLevel === undefined) {\n var configStartLevel = this.hls.config.startLevel;\n if (configStartLevel !== undefined) return configStartLevel;else return this._firstLevel;\n } else {\n return this._startLevel;\n }\n },\n set: function set(newLevel) {\n this._startLevel = newLevel;\n }\n }, {\n key: 'nextLoadLevel',\n get: function get() {\n if (this.manualLevelIndex !== -1) return this.manualLevelIndex;else return this.hls.nextAutoLevel;\n },\n set: function set(nextLevel) {\n this.level = nextLevel;\n if (this.manualLevelIndex === -1) this.hls.nextAutoLevel = nextLevel;\n }\n }]);\n\n return LevelController;\n}(event_handler);\n\n/* harmony default export */ var level_controller = (level_controller_LevelController);\n// EXTERNAL MODULE: ./src/demux/id3.js\nvar id3 = __webpack_require__(4);\n\n// CONCATENATED MODULE: ./src/utils/texttrack-utils.js\n\nfunction sendAddTrackEvent(track, videoEl) {\n var event = null;\n try {\n event = new window.Event('addtrack');\n } catch (err) {\n // for IE11\n event = document.createEvent('Event');\n event.initEvent('addtrack', false, false);\n }\n event.track = track;\n videoEl.dispatchEvent(event);\n}\n\nfunction clearCurrentCues(track) {\n if (track && track.cues) {\n while (track.cues.length > 0) {\n track.removeCue(track.cues[0]);\n }\n }\n}\n// CONCATENATED MODULE: ./src/controller/id3-track-controller.js\nfunction id3_track_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction id3_track_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction id3_track_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * id3 metadata track controller\n*/\n\n\n\n\n\n\nvar id3_track_controller_ID3TrackController = function (_EventHandler) {\n id3_track_controller__inherits(ID3TrackController, _EventHandler);\n\n function ID3TrackController(hls) {\n id3_track_controller__classCallCheck(this, ID3TrackController);\n\n var _this = id3_track_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHED, events[\"a\" /* default */].MEDIA_DETACHING, events[\"a\" /* default */].FRAG_PARSING_METADATA));\n\n _this.id3Track = undefined;\n _this.media = undefined;\n return _this;\n }\n\n ID3TrackController.prototype.destroy = function destroy() {\n event_handler.prototype.destroy.call(this);\n };\n\n // Add ID3 metatadata text track.\n\n\n ID3TrackController.prototype.onMediaAttached = function onMediaAttached(data) {\n this.media = data.media;\n if (!this.media) {}\n };\n\n ID3TrackController.prototype.onMediaDetaching = function onMediaDetaching() {\n clearCurrentCues(this.id3Track);\n this.id3Track = undefined;\n this.media = undefined;\n };\n\n ID3TrackController.prototype.getID3Track = function getID3Track(textTracks) {\n for (var i = 0; i < textTracks.length; i++) {\n var textTrack = textTracks[i];\n if (textTrack.kind === 'metadata' && textTrack.label === 'id3') {\n // send 'addtrack' when reusing the textTrack for metadata,\n // same as what we do for captions\n sendAddTrackEvent(textTrack, this.media);\n\n return textTrack;\n }\n }\n return this.media.addTextTrack('metadata', 'id3');\n };\n\n ID3TrackController.prototype.onFragParsingMetadata = function onFragParsingMetadata(data) {\n var fragment = data.frag;\n var samples = data.samples;\n\n // create track dynamically\n if (!this.id3Track) {\n this.id3Track = this.getID3Track(this.media.textTracks);\n this.id3Track.mode = 'hidden';\n }\n\n // Attempt to recreate Safari functionality by creating\n // WebKitDataCue objects when available and store the decoded\n // ID3 data in the value property of the cue\n var Cue = window.WebKitDataCue || window.VTTCue || window.TextTrackCue;\n\n for (var i = 0; i < samples.length; i++) {\n var frames = id3[\"a\" /* default */].getID3Frames(samples[i].data);\n if (frames) {\n var startTime = samples[i].pts;\n var endTime = i < samples.length - 1 ? samples[i + 1].pts : fragment.endPTS;\n\n // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE\n if (startTime === endTime) endTime += 0.0001;\n\n for (var j = 0; j < frames.length; j++) {\n var frame = frames[j];\n // Safari doesn't put the timestamp frame in the TextTrack\n if (!id3[\"a\" /* default */].isTimeStampFrame(frame)) {\n var cue = new Cue(startTime, endTime, '');\n cue.value = frame;\n this.id3Track.addCue(cue);\n }\n }\n }\n }\n };\n\n return ID3TrackController;\n}(event_handler);\n\n/* harmony default export */ var id3_track_controller = (id3_track_controller_ID3TrackController);\n// CONCATENATED MODULE: ./src/helper/is-supported.js\n\n\nfunction is_supported_isSupported() {\n var mediaSource = getMediaSource();\n var sourceBuffer = window.SourceBuffer || window.WebKitSourceBuffer;\n var isTypeSupported = mediaSource && typeof mediaSource.isTypeSupported === 'function' && mediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"');\n\n // if SourceBuffer is exposed ensure its API is valid\n // safari and old version of Chrome doe not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible\n var sourceBufferValidAPI = !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function';\n return !!isTypeSupported && !!sourceBufferValidAPI;\n}\n// CONCATENATED MODULE: ./src/utils/ewma.js\nfunction ewma__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*\n * compute an Exponential Weighted moving average\n * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n * - heavily inspired from shaka-player\n */\n\nvar EWMA = function () {\n // About half of the estimated value will be from the last |halfLife| samples by weight.\n function EWMA(halfLife) {\n ewma__classCallCheck(this, EWMA);\n\n // Larger values of alpha expire historical data more slowly.\n this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n this.estimate_ = 0;\n this.totalWeight_ = 0;\n }\n\n EWMA.prototype.sample = function sample(weight, value) {\n var adjAlpha = Math.pow(this.alpha_, weight);\n this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n this.totalWeight_ += weight;\n };\n\n EWMA.prototype.getTotalWeight = function getTotalWeight() {\n return this.totalWeight_;\n };\n\n EWMA.prototype.getEstimate = function getEstimate() {\n if (this.alpha_) {\n var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n return this.estimate_ / zeroFactor;\n } else {\n return this.estimate_;\n }\n };\n\n return EWMA;\n}();\n\n/* harmony default export */ var ewma = (EWMA);\n// CONCATENATED MODULE: ./src/utils/ewma-bandwidth-estimator.js\nfunction ewma_bandwidth_estimator__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*\n * EWMA Bandwidth Estimator\n * - heavily inspired from shaka-player\n * Tracks bandwidth samples and estimates available bandwidth.\n * Based on the minimum of two exponentially-weighted moving averages with\n * different half-lives.\n */\n\n\n\nvar ewma_bandwidth_estimator_EwmaBandWidthEstimator = function () {\n function EwmaBandWidthEstimator(hls, slow, fast, defaultEstimate) {\n ewma_bandwidth_estimator__classCallCheck(this, EwmaBandWidthEstimator);\n\n this.hls = hls;\n this.defaultEstimate_ = defaultEstimate;\n this.minWeight_ = 0.001;\n this.minDelayMs_ = 50;\n this.slow_ = new ewma(slow);\n this.fast_ = new ewma(fast);\n }\n\n EwmaBandWidthEstimator.prototype.sample = function sample(durationMs, numBytes) {\n durationMs = Math.max(durationMs, this.minDelayMs_);\n var bandwidth = 8000 * numBytes / durationMs,\n\n // console.log('instant bw:'+ Math.round(bandwidth));\n // we weight sample using loading duration....\n weight = durationMs / 1000;\n this.fast_.sample(weight, bandwidth);\n this.slow_.sample(weight, bandwidth);\n };\n\n EwmaBandWidthEstimator.prototype.canEstimate = function canEstimate() {\n var fast = this.fast_;\n return fast && fast.getTotalWeight() >= this.minWeight_;\n };\n\n EwmaBandWidthEstimator.prototype.getEstimate = function getEstimate() {\n if (this.canEstimate()) {\n // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate()));\n // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate()));\n // Take the minimum of these two estimates. This should have the effect of\n // adapting down quickly, but up more slowly.\n return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n } else {\n return this.defaultEstimate_;\n }\n };\n\n EwmaBandWidthEstimator.prototype.destroy = function destroy() {};\n\n return EwmaBandWidthEstimator;\n}();\n\n/* harmony default export */ var ewma_bandwidth_estimator = (ewma_bandwidth_estimator_EwmaBandWidthEstimator);\n// CONCATENATED MODULE: ./src/controller/abr-controller.js\nvar abr_controller__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction abr_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction abr_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction abr_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * simple ABR Controller\n * - compute next level based on last fragment bw heuristics\n * - implement an abandon rules triggered if we have less than 2 frag buffered and if computed bw shows that we risk buffer stalling\n */\n\n\n\n\n\n\n\n\nvar abr_controller_AbrController = function (_EventHandler) {\n abr_controller__inherits(AbrController, _EventHandler);\n\n function AbrController(hls) {\n abr_controller__classCallCheck(this, AbrController);\n\n var _this = abr_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].FRAG_LOADING, events[\"a\" /* default */].FRAG_LOADED, events[\"a\" /* default */].FRAG_BUFFERED, events[\"a\" /* default */].ERROR));\n\n _this.lastLoadedFragLevel = 0;\n _this._nextAutoLevel = -1;\n _this.hls = hls;\n _this.timer = null;\n _this._bwEstimator = null;\n _this.onCheck = _this._abandonRulesCheck.bind(_this);\n return _this;\n }\n\n AbrController.prototype.destroy = function destroy() {\n this.clearTimer();\n event_handler.prototype.destroy.call(this);\n };\n\n AbrController.prototype.onFragLoading = function onFragLoading(data) {\n var frag = data.frag;\n if (frag.type === 'main') {\n if (!this.timer) this.timer = setInterval(this.onCheck, 100);\n\n // lazy init of bw Estimator, rationale is that we use different params for Live/VoD\n // so we need to wait for stream manifest / playlist type to instantiate it.\n if (!this._bwEstimator) {\n var hls = this.hls,\n level = data.frag.level,\n isLive = hls.levels[level].details.live,\n config = hls.config,\n ewmaFast = void 0,\n ewmaSlow = void 0;\n\n if (isLive) {\n ewmaFast = config.abrEwmaFastLive;\n ewmaSlow = config.abrEwmaSlowLive;\n } else {\n ewmaFast = config.abrEwmaFastVoD;\n ewmaSlow = config.abrEwmaSlowVoD;\n }\n this._bwEstimator = new ewma_bandwidth_estimator(hls, ewmaSlow, ewmaFast, config.abrEwmaDefaultEstimate);\n }\n this.fragCurrent = frag;\n }\n };\n\n AbrController.prototype._abandonRulesCheck = function _abandonRulesCheck() {\n /*\n monitor fragment retrieval time...\n we compute expected time of arrival of the complete fragment.\n we compare it to expected time of buffer starvation\n */\n var hls = this.hls,\n v = hls.media,\n frag = this.fragCurrent,\n loader = frag.loader,\n minAutoLevel = hls.minAutoLevel;\n\n // if loader has been destroyed or loading has been aborted, stop timer and return\n if (!loader || loader.stats && loader.stats.aborted) {\n logger[\"b\" /* logger */].warn('frag loader destroy or aborted, disarm abandonRules');\n this.clearTimer();\n // reset forced auto level value so that next level will be selected\n this._nextAutoLevel = -1;\n return;\n }\n var stats = loader.stats;\n /* only monitor frag retrieval time if\n (video not paused OR first fragment being loaded(ready state === HAVE_NOTHING = 0)) AND autoswitching enabled AND not lowest level (=> means that we have several levels) */\n if (v && stats && (!v.paused && v.playbackRate !== 0 || !v.readyState) && frag.autoLevel && frag.level) {\n var requestDelay = performance.now() - stats.trequest,\n playbackRate = Math.abs(v.playbackRate);\n // monitor fragment load progress after half of expected fragment duration,to stabilize bitrate\n if (requestDelay > 500 * frag.duration / playbackRate) {\n var levels = hls.levels,\n loadRate = Math.max(1, stats.bw ? stats.bw / 8 : stats.loaded * 1000 / requestDelay),\n // byte/s; at least 1 byte/s to avoid division by zero\n // compute expected fragment length using frag duration and level bitrate. also ensure that expected len is gte than already loaded size\n level = levels[frag.level],\n levelBitrate = level.realBitrate ? Math.max(level.realBitrate, level.bitrate) : level.bitrate,\n expectedLen = stats.total ? stats.total : Math.max(stats.loaded, Math.round(frag.duration * levelBitrate / 8)),\n pos = v.currentTime,\n fragLoadedDelay = (expectedLen - stats.loaded) / loadRate,\n bufferStarvationDelay = (buffer_helper.bufferInfo(v, pos, hls.config.maxBufferHole).end - pos) / playbackRate;\n // consider emergency switch down only if we have less than 2 frag buffered AND\n // time to finish loading current fragment is bigger than buffer starvation delay\n // ie if we risk buffer starvation if bw does not increase quickly\n if (bufferStarvationDelay < 2 * frag.duration / playbackRate && fragLoadedDelay > bufferStarvationDelay) {\n var fragLevelNextLoadedDelay = void 0,\n nextLoadLevel = void 0;\n // lets iterate through lower level and try to find the biggest one that could avoid rebuffering\n // we start from current level - 1 and we step down , until we find a matching level\n for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {\n // compute time to load next fragment at lower level\n // 0.8 : consider only 80% of current bw to be conservative\n // 8 = bits per byte (bps/Bps)\n var levelNextBitrate = levels[nextLoadLevel].realBitrate ? Math.max(levels[nextLoadLevel].realBitrate, levels[nextLoadLevel].bitrate) : levels[nextLoadLevel].bitrate;\n fragLevelNextLoadedDelay = frag.duration * levelNextBitrate / (8 * 0.8 * loadRate);\n if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n // we found a lower level that be rebuffering free with current estimated bw !\n break;\n }\n }\n // only emergency switch down if it takes less time to load new fragment at lowest level instead\n // of finishing loading current one ...\n if (fragLevelNextLoadedDelay < fragLoadedDelay) {\n logger[\"b\" /* logger */].warn('loading too slow, abort fragment loading and switch to level ' + nextLoadLevel + ':fragLoadedDelay[' + nextLoadLevel + ']<fragLoadedDelay[' + (frag.level - 1) + '];bufferStarvationDelay:' + fragLevelNextLoadedDelay.toFixed(1) + '<' + fragLoadedDelay.toFixed(1) + ':' + bufferStarvationDelay.toFixed(1));\n // force next load level in auto mode\n hls.nextLoadLevel = nextLoadLevel;\n // update bw estimate for this fragment before cancelling load (this will help reducing the bw)\n this._bwEstimator.sample(requestDelay, stats.loaded);\n // abort fragment loading\n loader.abort();\n // stop abandon rules timer\n this.clearTimer();\n hls.trigger(events[\"a\" /* default */].FRAG_LOAD_EMERGENCY_ABORTED, { frag: frag, stats: stats });\n }\n }\n }\n }\n };\n\n AbrController.prototype.onFragLoaded = function onFragLoaded(data) {\n var frag = data.frag;\n if (frag.type === 'main' && !isNaN(frag.sn)) {\n // stop monitoring bw once frag loaded\n this.clearTimer();\n // store level id after successful fragment load\n this.lastLoadedFragLevel = frag.level;\n // reset forced auto level value so that next level will be selected\n this._nextAutoLevel = -1;\n\n // compute level average bitrate\n if (this.hls.config.abrMaxWithRealBitrate) {\n var level = this.hls.levels[frag.level];\n var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + data.stats.loaded;\n var loadedDuration = (level.loaded ? level.loaded.duration : 0) + data.frag.duration;\n level.loaded = { bytes: loadedBytes, duration: loadedDuration };\n level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);\n }\n // if fragment has been loaded to perform a bitrate test,\n if (data.frag.bitrateTest) {\n var stats = data.stats;\n stats.tparsed = stats.tbuffered = stats.tload;\n this.onFragBuffered(data);\n }\n }\n };\n\n AbrController.prototype.onFragBuffered = function onFragBuffered(data) {\n var stats = data.stats,\n frag = data.frag;\n // only update stats on first frag buffering\n // if same frag is loaded multiple times, it might be in browser cache, and loaded quickly\n // and leading to wrong bw estimation\n // on bitrate test, also only update stats once (if tload = tbuffered == on FRAG_LOADED)\n if (stats.aborted !== true && frag.type === 'main' && !isNaN(frag.sn) && (!frag.bitrateTest || stats.tload === stats.tbuffered)) {\n // use tparsed-trequest instead of tbuffered-trequest to compute fragLoadingProcessing; rationale is that buffer appending only happens once media is attached\n // in case we use config.startFragPrefetch while media is not attached yet, fragment might be parsed while media not attached yet, but it will only be buffered on media attached\n // as a consequence it could happen really late in the process. meaning that appending duration might appears huge ... leading to underestimated throughput estimation\n var fragLoadingProcessingMs = stats.tparsed - stats.trequest;\n logger[\"b\" /* logger */].log('latency/loading/parsing/append/kbps:' + Math.round(stats.tfirst - stats.trequest) + '/' + Math.round(stats.tload - stats.tfirst) + '/' + Math.round(stats.tparsed - stats.tload) + '/' + Math.round(stats.tbuffered - stats.tparsed) + '/' + Math.round(8 * stats.loaded / (stats.tbuffered - stats.trequest)));\n this._bwEstimator.sample(fragLoadingProcessingMs, stats.loaded);\n stats.bwEstimate = this._bwEstimator.getEstimate();\n // if fragment has been loaded to perform a bitrate test, (hls.startLevel = -1), store bitrate test delay duration\n if (frag.bitrateTest) this.bitrateTestDelay = fragLoadingProcessingMs / 1000;else this.bitrateTestDelay = 0;\n }\n };\n\n AbrController.prototype.onError = function onError(data) {\n // stop timer in case of frag loading error\n switch (data.details) {\n case errors[\"a\" /* ErrorDetails */].FRAG_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].FRAG_LOAD_TIMEOUT:\n this.clearTimer();\n break;\n default:\n break;\n }\n };\n\n AbrController.prototype.clearTimer = function clearTimer() {\n clearInterval(this.timer);\n this.timer = null;\n };\n\n // return next auto level\n\n\n AbrController.prototype._findBestLevel = function _findBestLevel(currentLevel, currentFragDuration, currentBw, minAutoLevel, maxAutoLevel, maxFetchDuration, bwFactor, bwUpFactor, levels) {\n for (var i = maxAutoLevel; i >= minAutoLevel; i--) {\n var levelInfo = levels[i],\n levelDetails = levelInfo.details,\n avgDuration = levelDetails ? levelDetails.totalduration / levelDetails.fragments.length : currentFragDuration,\n live = levelDetails ? levelDetails.live : false,\n adjustedbw = void 0;\n // follow algorithm captured from stagefright :\n // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n // consider only 80% of the available bandwidth, but if we are switching up,\n // be even more conservative (70%) to avoid overestimating and immediately\n // switching back.\n if (i <= currentLevel) adjustedbw = bwFactor * currentBw;else adjustedbw = bwUpFactor * currentBw;\n\n var bitrate = levels[i].realBitrate ? Math.max(levels[i].realBitrate, levels[i].bitrate) : levels[i].bitrate,\n fetchDuration = bitrate * avgDuration / adjustedbw;\n\n logger[\"b\" /* logger */].trace('level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: ' + i + '/' + Math.round(adjustedbw) + '/' + bitrate + '/' + avgDuration + '/' + maxFetchDuration + '/' + fetchDuration);\n // if adjusted bw is greater than level bitrate AND\n if (adjustedbw > bitrate && (\n // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that _findBestLevel will return -1\n !fetchDuration || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)) {\n // as we are looping from highest to lowest, this will return the best achievable quality level\n return i;\n }\n }\n // not enough time budget even with quality level 0 ... rebuffering might happen\n return -1;\n };\n\n abr_controller__createClass(AbrController, [{\n key: 'nextAutoLevel',\n get: function get() {\n var forcedAutoLevel = this._nextAutoLevel;\n var bwEstimator = this._bwEstimator;\n // in case next auto level has been forced, and bw not available or not reliable, return forced value\n if (forcedAutoLevel !== -1 && (!bwEstimator || !bwEstimator.canEstimate())) return forcedAutoLevel;\n\n // compute next level using ABR logic\n var nextABRAutoLevel = this._nextABRAutoLevel;\n // if forced auto level has been defined, use it to cap ABR computed quality level\n if (forcedAutoLevel !== -1) nextABRAutoLevel = Math.min(forcedAutoLevel, nextABRAutoLevel);\n\n return nextABRAutoLevel;\n },\n set: function set(nextLevel) {\n this._nextAutoLevel = nextLevel;\n }\n }, {\n key: '_nextABRAutoLevel',\n get: function get() {\n var hls = this.hls,\n maxAutoLevel = hls.maxAutoLevel,\n levels = hls.levels,\n config = hls.config,\n minAutoLevel = hls.minAutoLevel;\n var v = hls.media,\n currentLevel = this.lastLoadedFragLevel,\n currentFragDuration = this.fragCurrent ? this.fragCurrent.duration : 0,\n pos = v ? v.currentTime : 0,\n\n // playbackRate is the absolute value of the playback rate; if v.playbackRate is 0, we use 1 to load as\n // if we're playing back at the normal rate.\n playbackRate = v && v.playbackRate !== 0 ? Math.abs(v.playbackRate) : 1.0,\n avgbw = this._bwEstimator ? this._bwEstimator.getEstimate() : config.abrEwmaDefaultEstimate,\n\n // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted.\n bufferStarvationDelay = (buffer_helper.bufferInfo(v, pos, config.maxBufferHole).end - pos) / playbackRate;\n\n // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all\n var bestLevel = this._findBestLevel(currentLevel, currentFragDuration, avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, config.abrBandWidthFactor, config.abrBandWidthUpFactor, levels);\n if (bestLevel >= 0) {\n return bestLevel;\n } else {\n logger[\"b\" /* logger */].trace('rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering');\n // not possible to get rid of rebuffering ... let's try to find level that will guarantee less than maxStarvationDelay of rebuffering\n // if no matching level found, logic will return 0\n var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay,\n bwFactor = config.abrBandWidthFactor,\n bwUpFactor = config.abrBandWidthUpFactor;\n if (bufferStarvationDelay === 0) {\n // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test\n var bitrateTestDelay = this.bitrateTestDelay;\n if (bitrateTestDelay) {\n // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value\n // max video loading delay used in automatic start level selection :\n // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level +\n // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )\n // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration\n var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;\n maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n logger[\"b\" /* logger */].trace('bitrate test took ' + Math.round(1000 * bitrateTestDelay) + 'ms, set first fragment max fetchDuration to ' + Math.round(1000 * maxStarvationDelay) + ' ms');\n // don't use conservative factor on bitrate test\n bwFactor = bwUpFactor = 1;\n }\n }\n bestLevel = this._findBestLevel(currentLevel, currentFragDuration, avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay + maxStarvationDelay, bwFactor, bwUpFactor, levels);\n return Math.max(bestLevel, 0);\n }\n }\n }]);\n\n return AbrController;\n}(event_handler);\n\n/* harmony default export */ var abr_controller = (abr_controller_AbrController);\n// CONCATENATED MODULE: ./src/controller/buffer-controller.js\nfunction buffer_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction buffer_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction buffer_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * Buffer Controller\n*/\n\n\n\n\n\n\n\nvar buffer_controller_MediaSource = getMediaSource();\n\nvar buffer_controller_BufferController = function (_EventHandler) {\n buffer_controller__inherits(BufferController, _EventHandler);\n\n function BufferController(hls) {\n buffer_controller__classCallCheck(this, BufferController);\n\n // the value that we have set mediasource.duration to\n // (the actual duration may be tweaked slighly by the browser)\n var _this = buffer_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHING, events[\"a\" /* default */].MEDIA_DETACHING, events[\"a\" /* default */].MANIFEST_PARSED, events[\"a\" /* default */].BUFFER_RESET, events[\"a\" /* default */].BUFFER_APPENDING, events[\"a\" /* default */].BUFFER_CODECS, events[\"a\" /* default */].BUFFER_EOS, events[\"a\" /* default */].BUFFER_FLUSHING, events[\"a\" /* default */].LEVEL_PTS_UPDATED, events[\"a\" /* default */].LEVEL_UPDATED));\n\n _this._msDuration = null;\n // the value that we want to set mediaSource.duration to\n _this._levelDuration = null;\n // current stream state: true - for live broadcast, false - for VoD content\n _this._live = null;\n // cache the self generated object url to detect hijack of video tag\n _this._objectUrl = null;\n\n // Source Buffer listeners\n _this.onsbue = _this.onSBUpdateEnd.bind(_this);\n _this.onsbe = _this.onSBUpdateError.bind(_this);\n _this.pendingTracks = {};\n _this.tracks = {};\n return _this;\n }\n\n BufferController.prototype.destroy = function destroy() {\n event_handler.prototype.destroy.call(this);\n };\n\n BufferController.prototype.onLevelPtsUpdated = function onLevelPtsUpdated(data) {\n var type = data.type;\n var audioTrack = this.tracks.audio;\n\n // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended)\n // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset`\n // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos). At the time of change we issue\n // `SourceBuffer.abort()` and adjusting `SourceBuffer.timestampOffset` if `SourceBuffer.updating` is false or awaiting `updateend`\n // event if SB is in updating state.\n // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486\n\n if (type === 'audio' && audioTrack && audioTrack.container === 'audio/mpeg') {\n // Chrome audio mp3 track\n var audioBuffer = this.sourceBuffer.audio;\n var delta = Math.abs(audioBuffer.timestampOffset - data.start);\n\n // adjust timestamp offset if time delta is greater than 100ms\n if (delta > 0.1) {\n var updating = audioBuffer.updating;\n\n try {\n audioBuffer.abort();\n } catch (err) {\n updating = true;\n logger[\"b\" /* logger */].warn('can not abort audio buffer: ' + err);\n }\n\n if (!updating) {\n logger[\"b\" /* logger */].warn('change mpeg audio timestamp offset from ' + audioBuffer.timestampOffset + ' to ' + data.start);\n audioBuffer.timestampOffset = data.start;\n } else {\n this.audioTimestampOffset = data.start;\n }\n }\n }\n };\n\n BufferController.prototype.onManifestParsed = function onManifestParsed(data) {\n var audioExpected = data.audio,\n videoExpected = data.video || data.levels.length && data.audio,\n sourceBufferNb = 0;\n // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller\n // sourcebuffers will be created all at once when the expected nb of tracks will be reached\n // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller\n // it will contain the expected nb of source buffers, no need to compute it\n if (data.altAudio && (audioExpected || videoExpected)) {\n sourceBufferNb = (audioExpected ? 1 : 0) + (videoExpected ? 1 : 0);\n logger[\"b\" /* logger */].log(sourceBufferNb + ' sourceBuffer(s) expected');\n }\n this.sourceBufferNb = sourceBufferNb;\n };\n\n BufferController.prototype.onMediaAttaching = function onMediaAttaching(data) {\n var media = this.media = data.media;\n if (media) {\n // setup the media source\n var ms = this.mediaSource = new buffer_controller_MediaSource();\n // Media Source listeners\n this.onmso = this.onMediaSourceOpen.bind(this);\n this.onmse = this.onMediaSourceEnded.bind(this);\n this.onmsc = this.onMediaSourceClose.bind(this);\n ms.addEventListener('sourceopen', this.onmso);\n ms.addEventListener('sourceended', this.onmse);\n ms.addEventListener('sourceclose', this.onmsc);\n // link video and media Source\n media.src = URL.createObjectURL(ms);\n // cache the locally generated object url\n this._objectUrl = media.src;\n }\n };\n\n BufferController.prototype.onMediaDetaching = function onMediaDetaching() {\n logger[\"b\" /* logger */].log('media source detaching');\n var ms = this.mediaSource;\n if (ms) {\n if (ms.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n ms.endOfStream();\n } catch (err) {\n logger[\"b\" /* logger */].warn('onMediaDetaching:' + err.message + ' while calling endOfStream');\n }\n }\n ms.removeEventListener('sourceopen', this.onmso);\n ms.removeEventListener('sourceended', this.onmse);\n ms.removeEventListener('sourceclose', this.onmsc);\n\n // Detach properly the MediaSource from the HTMLMediaElement as\n // suggested in https://github.com/w3c/media-source/issues/53.\n if (this.media) {\n URL.revokeObjectURL(this._objectUrl);\n\n // clean up video tag src only if it's our own url. some external libraries might\n // hijack the video tag and change its 'src' without destroying the Hls instance first\n if (this.media.src === this._objectUrl) {\n this.media.removeAttribute('src');\n this.media.load();\n } else {\n logger[\"b\" /* logger */].warn('media.src was changed by a third party - skip cleanup');\n }\n }\n\n this.mediaSource = null;\n this.media = null;\n this._objectUrl = null;\n this.pendingTracks = {};\n this.tracks = {};\n this.sourceBuffer = {};\n this.flushRange = [];\n this.segments = [];\n this.appended = 0;\n }\n this.onmso = this.onmse = this.onmsc = null;\n this.hls.trigger(events[\"a\" /* default */].MEDIA_DETACHED);\n };\n\n BufferController.prototype.onMediaSourceOpen = function onMediaSourceOpen() {\n logger[\"b\" /* logger */].log('media source opened');\n this.hls.trigger(events[\"a\" /* default */].MEDIA_ATTACHED, { media: this.media });\n var mediaSource = this.mediaSource;\n if (mediaSource) {\n // once received, don't listen anymore to sourceopen event\n mediaSource.removeEventListener('sourceopen', this.onmso);\n }\n this.checkPendingTracks();\n };\n\n BufferController.prototype.checkPendingTracks = function checkPendingTracks() {\n // if any buffer codecs pending, check if we have enough to create sourceBuffers\n var pendingTracks = this.pendingTracks,\n pendingTracksNb = Object.keys(pendingTracks).length;\n // if any pending tracks and (if nb of pending tracks gt or equal than expected nb or if unknown expected nb)\n if (pendingTracksNb && (this.sourceBufferNb <= pendingTracksNb || this.sourceBufferNb === 0)) {\n // ok, let's create them now !\n this.createSourceBuffers(pendingTracks);\n this.pendingTracks = {};\n // append any pending segments now !\n this.doAppending();\n }\n };\n\n BufferController.prototype.onMediaSourceClose = function onMediaSourceClose() {\n logger[\"b\" /* logger */].log('media source closed');\n };\n\n BufferController.prototype.onMediaSourceEnded = function onMediaSourceEnded() {\n logger[\"b\" /* logger */].log('media source ended');\n };\n\n BufferController.prototype.onSBUpdateEnd = function onSBUpdateEnd() {\n // update timestampOffset\n if (this.audioTimestampOffset) {\n var audioBuffer = this.sourceBuffer.audio;\n logger[\"b\" /* logger */].warn('change mpeg audio timestamp offset from ' + audioBuffer.timestampOffset + ' to ' + this.audioTimestampOffset);\n audioBuffer.timestampOffset = this.audioTimestampOffset;\n delete this.audioTimestampOffset;\n }\n\n if (this._needsFlush) this.doFlush();\n\n if (this._needsEos) this.checkEos();\n\n this.appending = false;\n var parent = this.parent;\n // count nb of pending segments waiting for appending on this sourcebuffer\n var pending = this.segments.reduce(function (counter, segment) {\n return segment.parent === parent ? counter + 1 : counter;\n }, 0);\n\n // this.sourceBuffer is better to use than media.buffered as it is closer to the PTS data from the fragments\n var timeRanges = {};\n var sourceBuffer = this.sourceBuffer;\n for (var streamType in sourceBuffer) {\n timeRanges[streamType] = sourceBuffer[streamType].buffered;\n }this.hls.trigger(events[\"a\" /* default */].BUFFER_APPENDED, { parent: parent, pending: pending, timeRanges: timeRanges });\n // don't append in flushing mode\n if (!this._needsFlush) this.doAppending();\n\n this.updateMediaElementDuration();\n };\n\n BufferController.prototype.onSBUpdateError = function onSBUpdateError(event) {\n logger[\"b\" /* logger */].error('sourceBuffer error:', event);\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // this error might not always be fatal (it is fatal if decode error is set, in that case\n // it will be followed by a mediaElement error ...)\n this.hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].BUFFER_APPENDING_ERROR, fatal: false });\n // we don't need to do more than that, as accordin to the spec, updateend will be fired just after\n };\n\n BufferController.prototype.onBufferReset = function onBufferReset() {\n var sourceBuffer = this.sourceBuffer;\n for (var type in sourceBuffer) {\n var sb = sourceBuffer[type];\n try {\n this.mediaSource.removeSourceBuffer(sb);\n sb.removeEventListener('updateend', this.onsbue);\n sb.removeEventListener('error', this.onsbe);\n } catch (err) {}\n }\n this.sourceBuffer = {};\n this.flushRange = [];\n this.segments = [];\n this.appended = 0;\n };\n\n BufferController.prototype.onBufferCodecs = function onBufferCodecs(tracks) {\n // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks\n // if sourcebuffers already created, do nothing ...\n if (Object.keys(this.sourceBuffer).length === 0) {\n for (var trackName in tracks) {\n this.pendingTracks[trackName] = tracks[trackName];\n }var mediaSource = this.mediaSource;\n if (mediaSource && mediaSource.readyState === 'open') {\n // try to create sourcebuffers if mediasource opened\n this.checkPendingTracks();\n }\n }\n };\n\n BufferController.prototype.createSourceBuffers = function createSourceBuffers(tracks) {\n var sourceBuffer = this.sourceBuffer,\n mediaSource = this.mediaSource;\n\n for (var trackName in tracks) {\n if (!sourceBuffer[trackName]) {\n var track = tracks[trackName];\n // use levelCodec as first priority\n var codec = track.levelCodec || track.codec;\n var mimeType = track.container + ';codecs=' + codec;\n logger[\"b\" /* logger */].log('creating sourceBuffer(' + mimeType + ')');\n try {\n var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n sb.addEventListener('updateend', this.onsbue);\n sb.addEventListener('error', this.onsbe);\n this.tracks[trackName] = { codec: codec, container: track.container };\n track.buffer = sb;\n } catch (err) {\n logger[\"b\" /* logger */].error('error while trying to add sourceBuffer:' + err.message);\n this.hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].BUFFER_ADD_CODEC_ERROR, fatal: false, err: err, mimeType: mimeType });\n }\n }\n }\n this.hls.trigger(events[\"a\" /* default */].BUFFER_CREATED, { tracks: tracks });\n };\n\n BufferController.prototype.onBufferAppending = function onBufferAppending(data) {\n if (!this._needsFlush) {\n if (!this.segments) this.segments = [data];else this.segments.push(data);\n\n this.doAppending();\n }\n };\n\n BufferController.prototype.onBufferAppendFail = function onBufferAppendFail(data) {\n logger[\"b\" /* logger */].error('sourceBuffer error:', data.event);\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // this error might not always be fatal (it is fatal if decode error is set, in that case\n // it will be followed by a mediaElement error ...)\n this.hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: errors[\"a\" /* ErrorDetails */].BUFFER_APPENDING_ERROR, fatal: false });\n };\n\n // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n\n\n BufferController.prototype.onBufferEos = function onBufferEos(data) {\n var sb = this.sourceBuffer;\n var dataType = data.type;\n for (var type in sb) {\n if (!dataType || type === dataType) {\n if (!sb[type].ended) {\n sb[type].ended = true;\n logger[\"b\" /* logger */].log(type + ' sourceBuffer now EOS');\n }\n }\n }\n this.checkEos();\n };\n\n // if all source buffers are marked as ended, signal endOfStream() to MediaSource.\n\n\n BufferController.prototype.checkEos = function checkEos() {\n var sb = this.sourceBuffer,\n mediaSource = this.mediaSource;\n if (!mediaSource || mediaSource.readyState !== 'open') {\n this._needsEos = false;\n return;\n }\n for (var type in sb) {\n var sbobj = sb[type];\n if (!sbobj.ended) return;\n\n if (sbobj.updating) {\n this._needsEos = true;\n return;\n }\n }\n logger[\"b\" /* logger */].log('all media data available, signal endOfStream() to MediaSource and stop loading fragment');\n // Notify the media element that it now has all of the media data\n try {\n mediaSource.endOfStream();\n } catch (e) {\n logger[\"b\" /* logger */].warn('exception while calling mediaSource.endOfStream()');\n }\n this._needsEos = false;\n };\n\n BufferController.prototype.onBufferFlushing = function onBufferFlushing(data) {\n this.flushRange.push({ start: data.startOffset, end: data.endOffset, type: data.type });\n // attempt flush immediately\n this.flushBufferCounter = 0;\n this.doFlush();\n };\n\n BufferController.prototype.onLevelUpdated = function onLevelUpdated(_ref) {\n var details = _ref.details;\n\n if (details.fragments.length > 0) {\n this._levelDuration = details.totalduration + details.fragments[0].start;\n this._live = details.live;\n this.updateMediaElementDuration();\n }\n };\n\n /**\n * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n * 'liveDurationInfinity` is set to `true`\n * More details: https://github.com/video-dev/hls.js/issues/355\n */\n\n\n BufferController.prototype.updateMediaElementDuration = function updateMediaElementDuration() {\n var config = this.hls.config;\n\n var duration = void 0;\n\n if (this._levelDuration === null || !this.media || !this.mediaSource || !this.sourceBuffer || this.media.readyState === 0 || this.mediaSource.readyState !== 'open') return;\n\n for (var type in this.sourceBuffer) {\n if (this.sourceBuffer[type].updating === true) {\n // can't set duration whilst a buffer is updating\n return;\n }\n }\n\n duration = this.media.duration;\n // initialise to the value that the media source is reporting\n if (this._msDuration === null) this._msDuration = this.mediaSource.duration;\n\n if (this._live === true && config.liveDurationInfinity === true) {\n // Override duration to Infinity\n logger[\"b\" /* logger */].log('Media Source duration is set to Infinity');\n this._msDuration = this.mediaSource.duration = Infinity;\n } else if (this._levelDuration > this._msDuration && this._levelDuration > duration || duration === Infinity || isNaN(duration)) {\n // levelDuration was the last value we set.\n // not using mediaSource.duration as the browser may tweak this value\n // only update Media Source duration if its value increase, this is to avoid\n // flushing already buffered portion when switching between quality level\n logger[\"b\" /* logger */].log('Updating Media Source duration to ' + this._levelDuration.toFixed(3));\n this._msDuration = this.mediaSource.duration = this._levelDuration;\n }\n };\n\n BufferController.prototype.doFlush = function doFlush() {\n // loop through all buffer ranges to flush\n while (this.flushRange.length) {\n var range = this.flushRange[0];\n // flushBuffer will abort any buffer append in progress and flush Audio/Video Buffer\n if (this.flushBuffer(range.start, range.end, range.type)) {\n // range flushed, remove from flush array\n this.flushRange.shift();\n this.flushBufferCounter = 0;\n } else {\n this._needsFlush = true;\n // avoid looping, wait for SB update end to retrigger a flush\n return;\n }\n }\n if (this.flushRange.length === 0) {\n // everything flushed\n this._needsFlush = false;\n\n // let's recompute this.appended, which is used to avoid flush looping\n var appended = 0;\n var sourceBuffer = this.sourceBuffer;\n try {\n for (var type in sourceBuffer) {\n appended += sourceBuffer[type].buffered.length;\n }\n } catch (error) {\n // error could be thrown while accessing buffered, in case sourcebuffer has already been removed from MediaSource\n // this is harmess at this stage, catch this to avoid reporting an internal exception\n logger[\"b\" /* logger */].error('error while accessing sourceBuffer.buffered');\n }\n this.appended = appended;\n this.hls.trigger(events[\"a\" /* default */].BUFFER_FLUSHED);\n }\n };\n\n BufferController.prototype.doAppending = function doAppending() {\n var hls = this.hls,\n sourceBuffer = this.sourceBuffer,\n segments = this.segments;\n if (Object.keys(sourceBuffer).length) {\n if (this.media.error) {\n this.segments = [];\n logger[\"b\" /* logger */].error('trying to append although a media error occured, flush segment and abort');\n return;\n }\n if (this.appending) {\n // logger.log(`sb appending in progress`);\n return;\n }\n if (segments && segments.length) {\n var segment = segments.shift();\n try {\n var type = segment.type,\n sb = sourceBuffer[type];\n if (sb) {\n if (!sb.updating) {\n // reset sourceBuffer ended flag before appending segment\n sb.ended = false;\n // logger.log(`appending ${segment.content} ${type} SB, size:${segment.data.length}, ${segment.parent}`);\n this.parent = segment.parent;\n sb.appendBuffer(segment.data);\n this.appendError = 0;\n this.appended++;\n this.appending = true;\n } else {\n segments.unshift(segment);\n }\n } else {\n // in case we don't have any source buffer matching with this segment type,\n // it means that Mediasource fails to create sourcebuffer\n // discard this segment, and trigger update end\n this.onSBUpdateEnd();\n }\n } catch (err) {\n // in case any error occured while appending, put back segment in segments table\n logger[\"b\" /* logger */].error('error while trying to append buffer:' + err.message);\n segments.unshift(segment);\n var event = { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, parent: segment.parent };\n if (err.code !== 22) {\n if (this.appendError) this.appendError++;else this.appendError = 1;\n\n event.details = errors[\"a\" /* ErrorDetails */].BUFFER_APPEND_ERROR;\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. retrying help recovering this\n */\n if (this.appendError > hls.config.appendErrorMaxRetry) {\n logger[\"b\" /* logger */].log('fail ' + hls.config.appendErrorMaxRetry + ' times to append segment in sourceBuffer');\n segments = [];\n event.fatal = true;\n hls.trigger(events[\"a\" /* default */].ERROR, event);\n } else {\n event.fatal = false;\n hls.trigger(events[\"a\" /* default */].ERROR, event);\n }\n } else {\n // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n this.segments = [];\n event.details = errors[\"a\" /* ErrorDetails */].BUFFER_FULL_ERROR;\n event.fatal = false;\n hls.trigger(events[\"a\" /* default */].ERROR, event);\n }\n }\n }\n }\n };\n\n /*\n flush specified buffered range,\n return true once range has been flushed.\n as sourceBuffer.remove() is asynchronous, flushBuffer will be retriggered on sourceBuffer update end\n */\n\n\n BufferController.prototype.flushBuffer = function flushBuffer(startOffset, endOffset, typeIn) {\n var sb = void 0,\n i = void 0,\n bufStart = void 0,\n bufEnd = void 0,\n flushStart = void 0,\n flushEnd = void 0,\n sourceBuffer = this.sourceBuffer;\n if (Object.keys(sourceBuffer).length) {\n logger[\"b\" /* logger */].log('flushBuffer,pos/start/end: ' + this.media.currentTime.toFixed(3) + '/' + startOffset + '/' + endOffset);\n // safeguard to avoid infinite looping : don't try to flush more than the nb of appended segments\n if (this.flushBufferCounter < this.appended) {\n for (var type in sourceBuffer) {\n // check if sourcebuffer type is defined (typeIn): if yes, let's only flush this one\n // if no, let's flush all sourcebuffers\n if (typeIn && type !== typeIn) continue;\n\n sb = sourceBuffer[type];\n // we are going to flush buffer, mark source buffer as 'not ended'\n sb.ended = false;\n if (!sb.updating) {\n try {\n for (i = 0; i < sb.buffered.length; i++) {\n bufStart = sb.buffered.start(i);\n bufEnd = sb.buffered.end(i);\n // workaround firefox not able to properly flush multiple buffered range.\n if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1 && endOffset === Number.POSITIVE_INFINITY) {\n flushStart = startOffset;\n flushEnd = endOffset;\n } else {\n flushStart = Math.max(bufStart, startOffset);\n flushEnd = Math.min(bufEnd, endOffset);\n }\n /* sometimes sourcebuffer.remove() does not flush\n the exact expected time range.\n to avoid rounding issues/infinite loop,\n only flush buffer range of length greater than 500ms.\n */\n if (Math.min(flushEnd, bufEnd) - flushStart > 0.5) {\n this.flushBufferCounter++;\n logger[\"b\" /* logger */].log('flush ' + type + ' [' + flushStart + ',' + flushEnd + '], of [' + bufStart + ',' + bufEnd + '], pos:' + this.media.currentTime);\n sb.remove(flushStart, flushEnd);\n return false;\n }\n }\n } catch (e) {\n logger[\"b\" /* logger */].warn('exception while accessing sourcebuffer, it might have been removed from MediaSource');\n }\n } else {\n // logger.log('abort ' + type + ' append in progress');\n // this will abort any appending in progress\n // sb.abort();\n logger[\"b\" /* logger */].warn('cannot flush, sb updating in progress');\n return false;\n }\n }\n } else {\n logger[\"b\" /* logger */].warn('abort flushing too many retries');\n }\n logger[\"b\" /* logger */].log('buffer flushed');\n }\n // everything flushed !\n return true;\n };\n\n return BufferController;\n}(event_handler);\n\n/* harmony default export */ var buffer_controller = (buffer_controller_BufferController);\n// CONCATENATED MODULE: ./src/controller/cap-level-controller.js\nvar cap_level_controller__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction cap_level_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction cap_level_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction cap_level_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * cap stream level to media size dimension controller\n*/\n\n\n\n\nvar cap_level_controller_CapLevelController = function (_EventHandler) {\n cap_level_controller__inherits(CapLevelController, _EventHandler);\n\n function CapLevelController(hls) {\n cap_level_controller__classCallCheck(this, CapLevelController);\n\n return cap_level_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].FPS_DROP_LEVEL_CAPPING, events[\"a\" /* default */].MEDIA_ATTACHING, events[\"a\" /* default */].MANIFEST_PARSED));\n }\n\n CapLevelController.prototype.destroy = function destroy() {\n if (this.hls.config.capLevelToPlayerSize) {\n this.media = this.restrictedLevels = null;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n if (this.timer) this.timer = clearInterval(this.timer);\n }\n };\n\n CapLevelController.prototype.onFpsDropLevelCapping = function onFpsDropLevelCapping(data) {\n // Don't add a restricted level more than once\n if (CapLevelController.isLevelAllowed(data.droppedLevel, this.restrictedLevels)) this.restrictedLevels.push(data.droppedLevel);\n };\n\n CapLevelController.prototype.onMediaAttaching = function onMediaAttaching(data) {\n this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n };\n\n CapLevelController.prototype.onManifestParsed = function onManifestParsed(data) {\n var hls = this.hls;\n this.restrictedLevels = [];\n if (hls.config.capLevelToPlayerSize) {\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.levels = data.levels;\n hls.firstLevel = this.getMaxLevel(data.firstLevel);\n clearInterval(this.timer);\n this.timer = setInterval(this.detectPlayerSize.bind(this), 1000);\n this.detectPlayerSize();\n }\n };\n\n CapLevelController.prototype.detectPlayerSize = function detectPlayerSize() {\n if (this.media) {\n var levelsLength = this.levels ? this.levels.length : 0;\n if (levelsLength) {\n var hls = this.hls;\n hls.autoLevelCapping = this.getMaxLevel(levelsLength - 1);\n if (hls.autoLevelCapping > this.autoLevelCapping) {\n // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch\n // usually happen when the user go to the fullscreen mode.\n hls.streamController.nextLevelSwitch();\n }\n this.autoLevelCapping = hls.autoLevelCapping;\n }\n }\n };\n\n /*\n * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n */\n\n\n CapLevelController.prototype.getMaxLevel = function getMaxLevel(capLevelIndex) {\n var _this2 = this;\n\n if (!this.levels) return -1;\n\n var validLevels = this.levels.filter(function (level, index) {\n return CapLevelController.isLevelAllowed(index, _this2.restrictedLevels) && index <= capLevelIndex;\n });\n\n return CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);\n };\n\n CapLevelController.isLevelAllowed = function isLevelAllowed(level) {\n var restrictedLevels = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n return restrictedLevels.indexOf(level) === -1;\n };\n\n CapLevelController.getMaxLevelByMediaSize = function getMaxLevelByMediaSize(levels, width, height) {\n if (!levels || levels && !levels.length) return -1;\n\n // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next\n // to determine whether we've chosen the greatest bandwidth for the media's dimensions\n var atGreatestBandiwdth = function atGreatestBandiwdth(curLevel, nextLevel) {\n if (!nextLevel) return true;\n\n return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;\n };\n\n // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to\n // the max level\n var maxLevelIndex = levels.length - 1;\n\n for (var i = 0; i < levels.length; i += 1) {\n var level = levels[i];\n if ((level.width >= width || level.height >= height) && atGreatestBandiwdth(level, levels[i + 1])) {\n maxLevelIndex = i;\n break;\n }\n }\n\n return maxLevelIndex;\n };\n\n cap_level_controller__createClass(CapLevelController, [{\n key: 'mediaWidth',\n get: function get() {\n var width = void 0;\n var media = this.media;\n if (media) {\n width = media.width || media.clientWidth || media.offsetWidth;\n width *= CapLevelController.contentScaleFactor;\n }\n return width;\n }\n }, {\n key: 'mediaHeight',\n get: function get() {\n var height = void 0;\n var media = this.media;\n if (media) {\n height = media.height || media.clientHeight || media.offsetHeight;\n height *= CapLevelController.contentScaleFactor;\n }\n return height;\n }\n }], [{\n key: 'contentScaleFactor',\n get: function get() {\n var pixelRatio = 1;\n try {\n pixelRatio = window.devicePixelRatio;\n } catch (e) {}\n return pixelRatio;\n }\n }]);\n\n return CapLevelController;\n}(event_handler);\n\n/* harmony default export */ var cap_level_controller = (cap_level_controller_CapLevelController);\n// CONCATENATED MODULE: ./src/controller/fps-controller.js\nfunction fps_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fps_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction fps_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * FPS Controller\n*/\n\n\n\n\n\nvar fps_controller_FPSController = function (_EventHandler) {\n fps_controller__inherits(FPSController, _EventHandler);\n\n function FPSController(hls) {\n fps_controller__classCallCheck(this, FPSController);\n\n return fps_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHING));\n }\n\n FPSController.prototype.destroy = function destroy() {\n if (this.timer) clearInterval(this.timer);\n\n this.isVideoPlaybackQualityAvailable = false;\n };\n\n FPSController.prototype.onMediaAttaching = function onMediaAttaching(data) {\n var config = this.hls.config;\n if (config.capLevelOnFPSDrop) {\n var video = this.video = data.media instanceof HTMLVideoElement ? data.media : null;\n if (typeof video.getVideoPlaybackQuality === 'function') this.isVideoPlaybackQualityAvailable = true;\n\n clearInterval(this.timer);\n this.timer = setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);\n }\n };\n\n FPSController.prototype.checkFPS = function checkFPS(video, decodedFrames, droppedFrames) {\n var currentTime = performance.now();\n if (decodedFrames) {\n if (this.lastTime) {\n var currentPeriod = currentTime - this.lastTime,\n currentDropped = droppedFrames - this.lastDroppedFrames,\n currentDecoded = decodedFrames - this.lastDecodedFrames,\n droppedFPS = 1000 * currentDropped / currentPeriod,\n hls = this.hls;\n hls.trigger(events[\"a\" /* default */].FPS_DROP, { currentDropped: currentDropped, currentDecoded: currentDecoded, totalDroppedFrames: droppedFrames });\n if (droppedFPS > 0) {\n // logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod));\n if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {\n var currentLevel = hls.currentLevel;\n logger[\"b\" /* logger */].warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel);\n if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {\n currentLevel = currentLevel - 1;\n hls.trigger(events[\"a\" /* default */].FPS_DROP_LEVEL_CAPPING, { level: currentLevel, droppedLevel: hls.currentLevel });\n hls.autoLevelCapping = currentLevel;\n hls.streamController.nextLevelSwitch();\n }\n }\n }\n }\n this.lastTime = currentTime;\n this.lastDroppedFrames = droppedFrames;\n this.lastDecodedFrames = decodedFrames;\n }\n };\n\n FPSController.prototype.checkFPSInterval = function checkFPSInterval() {\n var video = this.video;\n if (video) {\n if (this.isVideoPlaybackQualityAvailable) {\n var videoPlaybackQuality = video.getVideoPlaybackQuality();\n this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);\n } else {\n this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);\n }\n }\n };\n\n return FPSController;\n}(event_handler);\n\n/* harmony default export */ var fps_controller = (fps_controller_FPSController);\n// CONCATENATED MODULE: ./src/utils/xhr-loader.js\nfunction xhr_loader__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * XHR based logger\n*/\n\n\n\nvar xhr_loader_XhrLoader = function () {\n function XhrLoader(config) {\n xhr_loader__classCallCheck(this, XhrLoader);\n\n if (config && config.xhrSetup) this.xhrSetup = config.xhrSetup;\n }\n\n XhrLoader.prototype.destroy = function destroy() {\n this.abort();\n this.loader = null;\n };\n\n XhrLoader.prototype.abort = function abort() {\n var loader = this.loader;\n if (loader && loader.readyState !== 4) {\n this.stats.aborted = true;\n loader.abort();\n }\n\n window.clearTimeout(this.requestTimeout);\n this.requestTimeout = null;\n window.clearTimeout(this.retryTimeout);\n this.retryTimeout = null;\n };\n\n XhrLoader.prototype.load = function load(context, config, callbacks) {\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.stats = { trequest: performance.now(), retry: 0 };\n this.retryDelay = config.retryDelay;\n this.loadInternal();\n };\n\n XhrLoader.prototype.loadInternal = function loadInternal() {\n var xhr = void 0,\n context = this.context;\n xhr = this.loader = new XMLHttpRequest();\n\n var stats = this.stats;\n stats.tfirst = 0;\n stats.loaded = 0;\n var xhrSetup = this.xhrSetup;\n\n try {\n if (xhrSetup) {\n try {\n xhrSetup(xhr, context.url);\n } catch (e) {\n // fix xhrSetup: (xhr, url) => {xhr.setRequestHeader(\"Content-Language\", \"test\");}\n // not working, as xhr.setRequestHeader expects xhr.readyState === OPEN\n xhr.open('GET', context.url, true);\n xhrSetup(xhr, context.url);\n }\n }\n if (!xhr.readyState) xhr.open('GET', context.url, true);\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n this.callbacks.onError({ code: xhr.status, text: e.message }, context, xhr);\n return;\n }\n\n if (context.rangeEnd) xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));\n\n xhr.onreadystatechange = this.readystatechange.bind(this);\n xhr.onprogress = this.loadprogress.bind(this);\n xhr.responseType = context.responseType;\n\n // setup timeout before we perform request\n this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), this.config.timeout);\n xhr.send();\n };\n\n XhrLoader.prototype.readystatechange = function readystatechange(event) {\n var xhr = event.currentTarget,\n readyState = xhr.readyState,\n stats = this.stats,\n context = this.context,\n config = this.config;\n\n // don't proceed if xhr has been aborted\n if (stats.aborted) return;\n\n // >= HEADERS_RECEIVED\n if (readyState >= 2) {\n // clear xhr timeout and rearm it if readyState less than 4\n window.clearTimeout(this.requestTimeout);\n if (stats.tfirst === 0) stats.tfirst = Math.max(performance.now(), stats.trequest);\n\n if (readyState === 4) {\n var status = xhr.status;\n // http status between 200 to 299 are all successful\n if (status >= 200 && status < 300) {\n stats.tload = Math.max(stats.tfirst, performance.now());\n var data = void 0,\n len = void 0;\n if (context.responseType === 'arraybuffer') {\n data = xhr.response;\n len = data.byteLength;\n } else {\n data = xhr.responseText;\n len = data.length;\n }\n stats.loaded = stats.total = len;\n var response = { url: xhr.responseURL, data: data };\n this.callbacks.onSuccess(response, stats, context, xhr);\n } else {\n // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n if (stats.retry >= config.maxRetry || status >= 400 && status < 499) {\n logger[\"b\" /* logger */].error(status + ' while loading ' + context.url);\n this.callbacks.onError({ code: status, text: xhr.statusText }, context, xhr);\n } else {\n // retry\n logger[\"b\" /* logger */].warn(status + ' while loading ' + context.url + ', retrying in ' + this.retryDelay + '...');\n // aborts and resets internal state\n this.destroy();\n // schedule retry\n this.retryTimeout = window.setTimeout(this.loadInternal.bind(this), this.retryDelay);\n // set exponential backoff\n this.retryDelay = Math.min(2 * this.retryDelay, config.maxRetryDelay);\n stats.retry++;\n }\n }\n } else {\n // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), config.timeout);\n }\n }\n };\n\n XhrLoader.prototype.loadtimeout = function loadtimeout() {\n logger[\"b\" /* logger */].warn('timeout while loading ' + this.context.url);\n this.callbacks.onTimeout(this.stats, this.context, null);\n };\n\n XhrLoader.prototype.loadprogress = function loadprogress(event) {\n var xhr = event.currentTarget,\n stats = this.stats;\n\n stats.loaded = event.loaded;\n if (event.lengthComputable) stats.total = event.total;\n\n var onProgress = this.callbacks.onProgress;\n if (onProgress) {\n // third arg is to provide on progress data\n onProgress(stats, this.context, null, xhr);\n }\n };\n\n return XhrLoader;\n}();\n\n/* harmony default export */ var xhr_loader = (xhr_loader_XhrLoader);\n// CONCATENATED MODULE: ./src/controller/audio-track-controller.js\nvar audio_track_controller__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction audio_track_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction audio_track_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction audio_track_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * audio track controller\n*/\n\n\n\n\n\n\nvar audio_track_controller_AudioTrackController = function (_EventHandler) {\n audio_track_controller__inherits(AudioTrackController, _EventHandler);\n\n function AudioTrackController(hls) {\n audio_track_controller__classCallCheck(this, AudioTrackController);\n\n var _this = audio_track_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MANIFEST_LOADING, events[\"a\" /* default */].MANIFEST_PARSED, events[\"a\" /* default */].AUDIO_TRACK_LOADED, events[\"a\" /* default */].ERROR));\n\n _this.ticks = 0;\n _this.ontick = _this.tick.bind(_this);\n return _this;\n }\n\n AudioTrackController.prototype.destroy = function destroy() {\n this.cleanTimer();\n event_handler.prototype.destroy.call(this);\n };\n\n AudioTrackController.prototype.cleanTimer = function cleanTimer() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n };\n\n AudioTrackController.prototype.tick = function tick() {\n this.ticks++;\n if (this.ticks === 1) {\n this.doTick();\n if (this.ticks > 1) setTimeout(this.tick, 1);\n\n this.ticks = 0;\n }\n };\n\n AudioTrackController.prototype.doTick = function doTick() {\n this.updateTrack(this.trackId);\n };\n\n AudioTrackController.prototype.onError = function onError(data) {\n if (data.fatal && data.type === errors[\"b\" /* ErrorTypes */].NETWORK_ERROR) this.cleanTimer();\n };\n\n AudioTrackController.prototype.onManifestLoading = function onManifestLoading() {\n // reset audio tracks on manifest loading\n this.tracks = [];\n this.trackId = -1;\n };\n\n AudioTrackController.prototype.onManifestParsed = function onManifestParsed(data) {\n var _this2 = this;\n\n var tracks = data.audioTracks || [];\n var defaultFound = false;\n this.tracks = tracks;\n this.hls.trigger(events[\"a\" /* default */].AUDIO_TRACKS_UPDATED, { audioTracks: tracks });\n // loop through available audio tracks and autoselect default if needed\n var id = 0;\n tracks.forEach(function (track) {\n if (track.default && !defaultFound) {\n _this2.audioTrack = id;\n defaultFound = true;\n return;\n }\n id++;\n });\n if (defaultFound === false && tracks.length) {\n logger[\"b\" /* logger */].log('no default audio track defined, use first audio track as default');\n this.audioTrack = 0;\n }\n };\n\n AudioTrackController.prototype.onAudioTrackLoaded = function onAudioTrackLoaded(data) {\n if (data.id < this.tracks.length) {\n logger[\"b\" /* logger */].log('audioTrack ' + data.id + ' loaded');\n this.tracks[data.id].details = data.details;\n // check if current playlist is a live playlist\n if (data.details.live && !this.timer) {\n // if live playlist we will have to reload it periodically\n // set reload period to playlist target duration\n this.timer = setInterval(this.ontick, 1000 * data.details.targetduration);\n }\n if (!data.details.live && this.timer) {\n // playlist is not live and timer is armed : stopping it\n this.cleanTimer();\n }\n }\n };\n\n /** get alternate audio tracks list from playlist **/\n\n\n AudioTrackController.prototype.setAudioTrackInternal = function setAudioTrackInternal(newId) {\n // check if level idx is valid\n if (newId >= 0 && newId < this.tracks.length) {\n // stopping live reloading timer if any\n this.cleanTimer();\n this.trackId = newId;\n logger[\"b\" /* logger */].log('switching to audioTrack ' + newId);\n var audioTrack = this.tracks[newId],\n hls = this.hls,\n type = audioTrack.type,\n url = audioTrack.url,\n eventObj = { id: newId, type: type, url: url };\n hls.trigger(events[\"a\" /* default */].AUDIO_TRACK_SWITCHING, eventObj);\n // check if we need to load playlist for this audio Track\n var details = audioTrack.details;\n if (url && (details === undefined || details.live === true)) {\n // track not retrieved yet, or live playlist we need to (re)load it\n logger[\"b\" /* logger */].log('(re)loading playlist for audioTrack ' + newId);\n hls.trigger(events[\"a\" /* default */].AUDIO_TRACK_LOADING, { url: url, id: newId });\n }\n }\n };\n\n AudioTrackController.prototype.updateTrack = function updateTrack(newId) {\n // check if level idx is valid\n if (newId >= 0 && newId < this.tracks.length) {\n // stopping live reloading timer if any\n this.cleanTimer();\n this.trackId = newId;\n logger[\"b\" /* logger */].log('updating audioTrack ' + newId);\n var audioTrack = this.tracks[newId],\n url = audioTrack.url;\n // check if we need to load playlist for this audio Track\n var details = audioTrack.details;\n if (url && (details === undefined || details.live === true)) {\n // track not retrieved yet, or live playlist we need to (re)load it\n logger[\"b\" /* logger */].log('(re)loading playlist for audioTrack ' + newId);\n this.hls.trigger(events[\"a\" /* default */].AUDIO_TRACK_LOADING, { url: url, id: newId });\n }\n }\n };\n\n audio_track_controller__createClass(AudioTrackController, [{\n key: 'audioTracks',\n get: function get() {\n return this.tracks;\n }\n\n /** get index of the selected audio track (index in audio track lists) **/\n\n }, {\n key: 'audioTrack',\n get: function get() {\n return this.trackId;\n }\n\n /** select an audio track, based on its index in audio track lists**/\n ,\n set: function set(audioTrackId) {\n if (this.trackId !== audioTrackId || this.tracks[audioTrackId].details === undefined) this.setAudioTrackInternal(audioTrackId);\n }\n }]);\n\n return AudioTrackController;\n}(event_handler);\n\n/* harmony default export */ var audio_track_controller = (audio_track_controller_AudioTrackController);\n// CONCATENATED MODULE: ./src/controller/audio-stream-controller.js\nvar audio_stream_controller__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction audio_stream_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction audio_stream_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction audio_stream_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * Audio Stream Controller\n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar audio_stream_controller_State = {\n STOPPED: 'STOPPED',\n STARTING: 'STARTING',\n IDLE: 'IDLE',\n PAUSED: 'PAUSED',\n KEY_LOADING: 'KEY_LOADING',\n FRAG_LOADING: 'FRAG_LOADING',\n FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',\n WAITING_TRACK: 'WAITING_TRACK',\n PARSING: 'PARSING',\n PARSED: 'PARSED',\n BUFFER_FLUSHING: 'BUFFER_FLUSHING',\n ENDED: 'ENDED',\n ERROR: 'ERROR',\n WAITING_INIT_PTS: 'WAITING_INIT_PTS'\n};\n\nvar audio_stream_controller_AudioStreamController = function (_TaskLoop) {\n audio_stream_controller__inherits(AudioStreamController, _TaskLoop);\n\n function AudioStreamController(hls, fragmentTracker) {\n audio_stream_controller__classCallCheck(this, AudioStreamController);\n\n var _this = audio_stream_controller__possibleConstructorReturn(this, _TaskLoop.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHED, events[\"a\" /* default */].MEDIA_DETACHING, events[\"a\" /* default */].AUDIO_TRACKS_UPDATED, events[\"a\" /* default */].AUDIO_TRACK_SWITCHING, events[\"a\" /* default */].AUDIO_TRACK_LOADED, events[\"a\" /* default */].KEY_LOADED, events[\"a\" /* default */].FRAG_LOADED, events[\"a\" /* default */].FRAG_PARSING_INIT_SEGMENT, events[\"a\" /* default */].FRAG_PARSING_DATA, events[\"a\" /* default */].FRAG_PARSED, events[\"a\" /* default */].ERROR, events[\"a\" /* default */].BUFFER_RESET, events[\"a\" /* default */].BUFFER_CREATED, events[\"a\" /* default */].BUFFER_APPENDED, events[\"a\" /* default */].BUFFER_FLUSHED, events[\"a\" /* default */].INIT_PTS_FOUND));\n\n _this.fragmentTracker = fragmentTracker;\n _this.config = hls.config;\n _this.audioCodecSwap = false;\n _this._state = audio_stream_controller_State.STOPPED;\n _this.initPTS = [];\n _this.waitingFragment = null;\n _this.videoTrackCC = null;\n return _this;\n }\n\n AudioStreamController.prototype.onHandlerDestroying = function onHandlerDestroying() {\n this.stopLoad();\n };\n\n AudioStreamController.prototype.onHandlerDestroyed = function onHandlerDestroyed() {\n this.state = audio_stream_controller_State.STOPPED;\n this.fragmentTracker = null;\n };\n\n // Signal that video PTS was found\n\n\n AudioStreamController.prototype.onInitPtsFound = function onInitPtsFound(data) {\n var demuxerId = data.id,\n cc = data.frag.cc,\n initPTS = data.initPTS;\n if (demuxerId === 'main') {\n // Always update the new INIT PTS\n // Can change due level switch\n this.initPTS[cc] = initPTS;\n this.videoTrackCC = cc;\n logger[\"b\" /* logger */].log('InitPTS for cc: ' + cc + ' found from video track: ' + initPTS);\n\n // If we are waiting we need to demux/remux the waiting frag\n // With the new initPTS\n if (this.state === audio_stream_controller_State.WAITING_INIT_PTS) this.tick();\n }\n };\n\n AudioStreamController.prototype.startLoad = function startLoad(startPosition) {\n if (this.tracks) {\n var lastCurrentTime = this.lastCurrentTime;\n this.stopLoad();\n this.setInterval(100);\n this.fragLoadError = 0;\n if (lastCurrentTime > 0 && startPosition === -1) {\n logger[\"b\" /* logger */].log('audio:override startPosition with lastCurrentTime @' + lastCurrentTime.toFixed(3));\n this.state = audio_stream_controller_State.IDLE;\n } else {\n this.lastCurrentTime = this.startPosition ? this.startPosition : startPosition;\n this.state = audio_stream_controller_State.STARTING;\n }\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime;\n this.tick();\n } else {\n this.startPosition = startPosition;\n this.state = audio_stream_controller_State.STOPPED;\n }\n };\n\n AudioStreamController.prototype.stopLoad = function stopLoad() {\n var frag = this.fragCurrent;\n if (frag) {\n if (frag.loader) frag.loader.abort();\n\n this.fragmentTracker.removeFragment(frag);\n this.fragCurrent = null;\n }\n this.fragPrevious = null;\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = null;\n }\n this.state = audio_stream_controller_State.STOPPED;\n };\n\n AudioStreamController.prototype.doTick = function doTick() {\n var pos = void 0,\n track = void 0,\n trackDetails = void 0,\n hls = this.hls,\n config = hls.config;\n // logger.log('audioStream:' + this.state);\n switch (this.state) {\n case audio_stream_controller_State.ERROR:\n // don't do anything in error state to avoid breaking further ...\n case audio_stream_controller_State.PAUSED:\n // don't do anything in paused state either ...\n case audio_stream_controller_State.BUFFER_FLUSHING:\n break;\n case audio_stream_controller_State.STARTING:\n this.state = audio_stream_controller_State.WAITING_TRACK;\n this.loadedmetadata = false;\n break;\n case audio_stream_controller_State.IDLE:\n var tracks = this.tracks;\n // audio tracks not received => exit loop\n if (!tracks) break;\n\n // if video not attached AND\n // start fragment already requested OR start frag prefetch disable\n // exit loop\n // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop\n if (!this.media && (this.startFragRequested || !config.startFragPrefetch)) break;\n\n // determine next candidate fragment to be loaded, based on current position and\n // end of buffer position\n // if we have not yet loaded any fragment, start loading from start position\n if (this.loadedmetadata) {\n pos = this.media.currentTime;\n } else {\n pos = this.nextLoadPosition;\n if (pos === undefined) break;\n }\n var media = this.mediaBuffer ? this.mediaBuffer : this.media,\n videoBuffer = this.videoBuffer ? this.videoBuffer : this.media,\n bufferInfo = buffer_helper.bufferInfo(media, pos, config.maxBufferHole),\n mainBufferInfo = buffer_helper.bufferInfo(videoBuffer, pos, config.maxBufferHole),\n bufferLen = bufferInfo.len,\n bufferEnd = bufferInfo.end,\n fragPrevious = this.fragPrevious,\n\n // ensure we buffer at least config.maxBufferLength (default 30s) or config.maxMaxBufferLength (default: 600s)\n // whichever is smaller.\n // once we reach that threshold, don't buffer more than video (mainBufferInfo.len)\n maxConfigBuffer = Math.min(config.maxBufferLength, config.maxMaxBufferLength),\n maxBufLen = Math.max(maxConfigBuffer, mainBufferInfo.len),\n audioSwitch = this.audioSwitch,\n trackId = this.trackId;\n\n // if buffer length is less than maxBufLen try to load a new fragment\n if ((bufferLen < maxBufLen || audioSwitch) && trackId < tracks.length) {\n trackDetails = tracks[trackId].details;\n // if track info not retrieved yet, switch state and wait for track retrieval\n if (typeof trackDetails === 'undefined') {\n this.state = audio_stream_controller_State.WAITING_TRACK;\n break;\n }\n\n // check if we need to finalize media stream\n // we just got done loading the final fragment and there is no other buffered range after ...\n // rationale is that in case there are any buffered ranges after, it means that there are unbuffered portion in between\n // so we should not switch to ENDED in that case, to be able to buffer them\n if (!audioSwitch && !trackDetails.live && fragPrevious && fragPrevious.sn === trackDetails.endSN && !bufferInfo.nextStart) {\n // if we are not seeking or if we are seeking but everything (almost) til the end is buffered, let's signal eos\n // we don't compare exactly media.duration === bufferInfo.end as there could be some subtle media duration difference when switching\n // between different renditions. using half frag duration should help cope with these cases.\n if (!this.media.seeking || this.media.duration - bufferEnd < fragPrevious.duration / 2) {\n // Finalize the media stream\n this.hls.trigger(events[\"a\" /* default */].BUFFER_EOS, { type: 'audio' });\n this.state = audio_stream_controller_State.ENDED;\n break;\n }\n }\n\n // find fragment index, contiguous with end of buffer position\n var fragments = trackDetails.fragments,\n fragLen = fragments.length,\n start = fragments[0].start,\n end = fragments[fragLen - 1].start + fragments[fragLen - 1].duration,\n frag = void 0;\n\n // When switching audio track, reload audio as close as possible to currentTime\n if (audioSwitch) {\n if (trackDetails.live && !trackDetails.PTSKnown) {\n logger[\"b\" /* logger */].log('switching audiotrack, live stream, unknown PTS,load first fragment');\n bufferEnd = 0;\n } else {\n bufferEnd = pos;\n // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime\n if (trackDetails.PTSKnown && pos < start) {\n // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start\n if (bufferInfo.end > start || bufferInfo.nextStart) {\n logger[\"b\" /* logger */].log('alt audio track ahead of main track, seek to start of alt audio track');\n this.media.currentTime = start + 0.05;\n } else {\n return;\n }\n }\n }\n }\n if (trackDetails.initSegment && !trackDetails.initSegment.data) {\n frag = trackDetails.initSegment;\n } // eslint-disable-line brace-style\n // if bufferEnd before start of playlist, load first fragment\n else if (bufferEnd <= start) {\n frag = fragments[0];\n if (this.videoTrackCC !== null && frag.cc !== this.videoTrackCC) {\n // Ensure we find a fragment which matches the continuity of the video track\n frag = findFragWithCC(fragments, this.videoTrackCC);\n }\n if (trackDetails.live && frag.loadIdx && frag.loadIdx === this.fragLoadIdx) {\n // we just loaded this first fragment, and we are still lagging behind the start of the live playlist\n // let's force seek to start\n var nextBuffered = bufferInfo.nextStart ? bufferInfo.nextStart : start;\n logger[\"b\" /* logger */].log('no alt audio available @currentTime:' + this.media.currentTime + ', seeking @' + (nextBuffered + 0.05));\n this.media.currentTime = nextBuffered + 0.05;\n return;\n }\n } else {\n var foundFrag = void 0;\n var maxFragLookUpTolerance = config.maxFragLookUpTolerance;\n var fragNext = fragPrevious ? fragments[fragPrevious.sn - fragments[0].sn + 1] : undefined;\n var fragmentWithinToleranceTest = function fragmentWithinToleranceTest(candidate) {\n // offset should be within fragment boundary - config.maxFragLookUpTolerance\n // this is to cope with situations like\n // bufferEnd = 9.991\n // frag[Ø] : [0,10]\n // frag[1] : [10,20]\n // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n // frag start frag start+duration\n // |-----------------------------|\n // <---> <--->\n // ...--------><-----------------------------><---------....\n // previous frag matching fragment next frag\n // return -1 return 0 return 1\n // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration);\n if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) return 1;\n // if maxFragLookUpTolerance will have negative value then don't return -1 for first element\n else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) return -1;\n\n return 0;\n };\n\n if (bufferEnd < end) {\n if (bufferEnd > end - maxFragLookUpTolerance) maxFragLookUpTolerance = 0;\n\n // Prefer the next fragment if it's within tolerance\n if (fragNext && !fragmentWithinToleranceTest(fragNext)) foundFrag = fragNext;else foundFrag = binary_search.search(fragments, fragmentWithinToleranceTest);\n } else {\n // reach end of playlist\n foundFrag = fragments[fragLen - 1];\n }\n if (foundFrag) {\n frag = foundFrag;\n start = foundFrag.start;\n // logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);\n if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {\n if (frag.sn < trackDetails.endSN) {\n frag = fragments[frag.sn + 1 - trackDetails.startSN];\n logger[\"b\" /* logger */].log('SN just loaded, load next one: ' + frag.sn);\n } else {\n frag = null;\n }\n }\n }\n }\n if (frag) {\n // logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));\n if (frag.decryptdata && frag.decryptdata.uri != null && frag.decryptdata.key == null) {\n logger[\"b\" /* logger */].log('Loading key for ' + frag.sn + ' of [' + trackDetails.startSN + ' ,' + trackDetails.endSN + '],track ' + trackId);\n this.state = audio_stream_controller_State.KEY_LOADING;\n hls.trigger(events[\"a\" /* default */].KEY_LOADING, { frag: frag });\n } else {\n logger[\"b\" /* logger */].log('Loading ' + frag.sn + ', cc: ' + frag.cc + ' of [' + trackDetails.startSN + ' ,' + trackDetails.endSN + '],track ' + trackId + ', currentTime:' + pos + ',bufferEnd:' + bufferEnd.toFixed(3));\n // Check if fragment is not loaded\n if (this.fragmentTracker.getState(frag) === FragmentState.NOT_LOADED) {\n this.fragCurrent = frag;\n this.startFragRequested = true;\n if (!isNaN(frag.sn)) this.nextLoadPosition = frag.start + frag.duration;\n\n hls.trigger(events[\"a\" /* default */].FRAG_LOADING, { frag: frag });\n this.state = audio_stream_controller_State.FRAG_LOADING;\n }\n }\n }\n }\n break;\n case audio_stream_controller_State.WAITING_TRACK:\n track = this.tracks[this.trackId];\n // check if playlist is already loaded\n if (track && track.details) this.state = audio_stream_controller_State.IDLE;\n\n break;\n case audio_stream_controller_State.FRAG_LOADING_WAITING_RETRY:\n var now = performance.now();\n var retryDate = this.retryDate;\n media = this.media;\n var isSeeking = media && media.seeking;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if (!retryDate || now >= retryDate || isSeeking) {\n logger[\"b\" /* logger */].log('audioStreamController: retryDate reached, switch back to IDLE state');\n this.state = audio_stream_controller_State.IDLE;\n }\n break;\n case audio_stream_controller_State.WAITING_INIT_PTS:\n var videoTrackCC = this.videoTrackCC;\n if (this.initPTS[videoTrackCC] === undefined) break;\n\n // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS\n var waitingFrag = this.waitingFragment;\n if (waitingFrag) {\n var waitingFragCC = waitingFrag.frag.cc;\n if (videoTrackCC !== waitingFragCC) {\n track = this.tracks[this.trackId];\n if (track.details && track.details.live) {\n logger[\"b\" /* logger */].warn('Waiting fragment CC (' + waitingFragCC + ') does not match video track CC (' + videoTrackCC + ')');\n this.waitingFragment = null;\n this.state = audio_stream_controller_State.IDLE;\n }\n } else {\n this.state = audio_stream_controller_State.FRAG_LOADING;\n this.onFragLoaded(this.waitingFragment);\n this.waitingFragment = null;\n }\n } else {\n this.state = audio_stream_controller_State.IDLE;\n }\n\n break;\n case audio_stream_controller_State.STOPPED:\n case audio_stream_controller_State.FRAG_LOADING:\n case audio_stream_controller_State.PARSING:\n case audio_stream_controller_State.PARSED:\n case audio_stream_controller_State.ENDED:\n break;\n default:\n break;\n }\n };\n\n AudioStreamController.prototype.onMediaAttached = function onMediaAttached(data) {\n var media = this.media = this.mediaBuffer = data.media;\n this.onvseeking = this.onMediaSeeking.bind(this);\n this.onvended = this.onMediaEnded.bind(this);\n media.addEventListener('seeking', this.onvseeking);\n media.addEventListener('ended', this.onvended);\n var config = this.config;\n if (this.tracks && config.autoStartLoad) this.startLoad(config.startPosition);\n };\n\n AudioStreamController.prototype.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n if (media && media.ended) {\n logger[\"b\" /* logger */].log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n // remove video listeners\n if (media) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvseeked = this.onvended = null;\n }\n this.media = this.mediaBuffer = this.videoBuffer = null;\n this.loadedmetadata = false;\n this.stopLoad();\n };\n\n AudioStreamController.prototype.onMediaSeeking = function onMediaSeeking() {\n if (this.state === audio_stream_controller_State.ENDED) {\n // switch to IDLE state to check for potential new fragment\n this.state = audio_stream_controller_State.IDLE;\n }\n if (this.media) this.lastCurrentTime = this.media.currentTime;\n\n // tick to speed up processing\n this.tick();\n };\n\n AudioStreamController.prototype.onMediaEnded = function onMediaEnded() {\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n };\n\n AudioStreamController.prototype.onAudioTracksUpdated = function onAudioTracksUpdated(data) {\n logger[\"b\" /* logger */].log('audio tracks updated');\n this.tracks = data.audioTracks;\n };\n\n AudioStreamController.prototype.onAudioTrackSwitching = function onAudioTrackSwitching(data) {\n // if any URL found on new audio track, it is an alternate audio track\n var altAudio = !!data.url;\n this.trackId = data.id;\n\n this.fragCurrent = null;\n this.state = audio_stream_controller_State.PAUSED;\n this.waitingFragment = null;\n // destroy useless demuxer when switching audio to main\n if (!altAudio) {\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = null;\n }\n } else {\n // switching to audio track, start timer if not already started\n this.setInterval(100);\n }\n\n // should we switch tracks ?\n if (altAudio) {\n this.audioSwitch = true;\n // main audio track are handled by stream-controller, just do something if switching to alt audio track\n this.state = audio_stream_controller_State.IDLE;\n }\n this.tick();\n };\n\n AudioStreamController.prototype.onAudioTrackLoaded = function onAudioTrackLoaded(data) {\n var newDetails = data.details,\n trackId = data.id,\n track = this.tracks[trackId],\n duration = newDetails.totalduration,\n sliding = 0;\n\n logger[\"b\" /* logger */].log('track ' + trackId + ' loaded [' + newDetails.startSN + ',' + newDetails.endSN + '],duration:' + duration);\n\n if (newDetails.live) {\n var curDetails = track.details;\n if (curDetails && newDetails.fragments.length > 0) {\n // we already have details for that level, merge them\n mergeDetails(curDetails, newDetails);\n sliding = newDetails.fragments[0].start;\n // TODO\n // this.liveSyncPosition = this.computeLivePosition(sliding, curDetails);\n if (newDetails.PTSKnown) logger[\"b\" /* logger */].log('live audio playlist sliding:' + sliding.toFixed(3));else logger[\"b\" /* logger */].log('live audio playlist - outdated PTS, unknown sliding');\n } else {\n newDetails.PTSKnown = false;\n logger[\"b\" /* logger */].log('live audio playlist - first load, unknown sliding');\n }\n } else {\n newDetails.PTSKnown = false;\n }\n track.details = newDetails;\n\n // compute start position\n if (!this.startFragRequested) {\n // compute start position if set to -1. use it straight away if value is defined\n if (this.startPosition === -1) {\n // first, check if start time offset has been set in playlist, if yes, use this value\n var startTimeOffset = newDetails.startTimeOffset;\n if (!isNaN(startTimeOffset)) {\n logger[\"b\" /* logger */].log('start time offset found in playlist, adjust startPosition to ' + startTimeOffset);\n this.startPosition = startTimeOffset;\n } else {\n this.startPosition = 0;\n }\n }\n this.nextLoadPosition = this.startPosition;\n }\n // only switch batck to IDLE state if we were waiting for track to start downloading a new fragment\n if (this.state === audio_stream_controller_State.WAITING_TRACK) this.state = audio_stream_controller_State.IDLE;\n\n // trigger handler right now\n this.tick();\n };\n\n AudioStreamController.prototype.onKeyLoaded = function onKeyLoaded() {\n if (this.state === audio_stream_controller_State.KEY_LOADING) {\n this.state = audio_stream_controller_State.IDLE;\n this.tick();\n }\n };\n\n AudioStreamController.prototype.onFragLoaded = function onFragLoaded(data) {\n var fragCurrent = this.fragCurrent,\n fragLoaded = data.frag;\n if (this.state === audio_stream_controller_State.FRAG_LOADING && fragCurrent && fragLoaded.type === 'audio' && fragLoaded.level === fragCurrent.level && fragLoaded.sn === fragCurrent.sn) {\n var track = this.tracks[this.trackId],\n details = track.details,\n duration = details.totalduration,\n trackId = fragCurrent.level,\n sn = fragCurrent.sn,\n cc = fragCurrent.cc,\n audioCodec = this.config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2',\n stats = this.stats = data.stats;\n if (sn === 'initSegment') {\n this.state = audio_stream_controller_State.IDLE;\n\n stats.tparsed = stats.tbuffered = performance.now();\n details.initSegment.data = data.payload;\n this.hls.trigger(events[\"a\" /* default */].FRAG_BUFFERED, { stats: stats, frag: fragCurrent, id: 'audio' });\n this.tick();\n } else {\n this.state = audio_stream_controller_State.PARSING;\n // transmux the MPEG-TS data to ISO-BMFF segments\n this.appended = false;\n if (!this.demuxer) this.demuxer = new demux_demuxer(this.hls, 'audio');\n\n // Check if we have video initPTS\n // If not we need to wait for it\n var initPTS = this.initPTS[cc];\n var initSegmentData = details.initSegment ? details.initSegment.data : [];\n if (details.initSegment || initPTS !== undefined) {\n this.pendingBuffering = true;\n logger[\"b\" /* logger */].log('Demuxing ' + sn + ' of [' + details.startSN + ' ,' + details.endSN + '],track ' + trackId);\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n var accurateTimeOffset = false; // details.PTSKnown || !details.live;\n this.demuxer.push(data.payload, initSegmentData, audioCodec, null, fragCurrent, duration, accurateTimeOffset, initPTS);\n } else {\n logger[\"b\" /* logger */].log('unknown video PTS for continuity counter ' + cc + ', waiting for video PTS before demuxing audio frag ' + sn + ' of [' + details.startSN + ' ,' + details.endSN + '],track ' + trackId);\n this.waitingFragment = data;\n this.state = audio_stream_controller_State.WAITING_INIT_PTS;\n }\n }\n }\n this.fragLoadError = 0;\n };\n\n AudioStreamController.prototype.onFragParsingInitSegment = function onFragParsingInitSegment(data) {\n var fragCurrent = this.fragCurrent;\n var fragNew = data.frag;\n if (fragCurrent && data.id === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === audio_stream_controller_State.PARSING) {\n var tracks = data.tracks,\n track = void 0;\n\n // delete any video track found on audio demuxer\n if (tracks.video) delete tracks.video;\n\n // include levelCodec in audio and video tracks\n track = tracks.audio;\n if (track) {\n track.levelCodec = track.codec;\n track.id = data.id;\n this.hls.trigger(events[\"a\" /* default */].BUFFER_CODECS, tracks);\n logger[\"b\" /* logger */].log('audio track:audio,container:' + track.container + ',codecs[level/parsed]=[' + track.levelCodec + '/' + track.codec + ']');\n var initSegment = track.initSegment;\n if (initSegment) {\n var appendObj = { type: 'audio', data: initSegment, parent: 'audio', content: 'initSegment' };\n if (this.audioSwitch) {\n this.pendingData = [appendObj];\n } else {\n this.appended = true;\n // arm pending Buffering flag before appending a segment\n this.pendingBuffering = true;\n this.hls.trigger(events[\"a\" /* default */].BUFFER_APPENDING, appendObj);\n }\n }\n // trigger handler right now\n this.tick();\n }\n }\n };\n\n AudioStreamController.prototype.onFragParsingData = function onFragParsingData(data) {\n var _this2 = this;\n\n var fragCurrent = this.fragCurrent;\n var fragNew = data.frag;\n if (fragCurrent && data.id === 'audio' && data.type === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === audio_stream_controller_State.PARSING) {\n var trackId = this.trackId,\n track = this.tracks[trackId],\n hls = this.hls;\n\n if (isNaN(data.endPTS)) {\n data.endPTS = data.startPTS + fragCurrent.duration;\n data.endDTS = data.startDTS + fragCurrent.duration;\n }\n\n fragCurrent.addElementaryStream(loader_fragment.ElementaryStreamTypes.AUDIO);\n\n logger[\"b\" /* logger */].log('parsed ' + data.type + ',PTS:[' + data.startPTS.toFixed(3) + ',' + data.endPTS.toFixed(3) + '],DTS:[' + data.startDTS.toFixed(3) + '/' + data.endDTS.toFixed(3) + '],nb:' + data.nb);\n updateFragPTSDTS(track.details, fragCurrent, data.startPTS, data.endPTS);\n\n var audioSwitch = this.audioSwitch,\n media = this.media,\n appendOnBufferFlush = false;\n // Only flush audio from old audio tracks when PTS is known on new audio track\n if (audioSwitch && media) {\n if (media.readyState) {\n var currentTime = media.currentTime;\n logger[\"b\" /* logger */].log('switching audio track : currentTime:' + currentTime);\n if (currentTime >= data.startPTS) {\n logger[\"b\" /* logger */].log('switching audio track : flushing all audio');\n this.state = audio_stream_controller_State.BUFFER_FLUSHING;\n hls.trigger(events[\"a\" /* default */].BUFFER_FLUSHING, { startOffset: 0, endOffset: Number.POSITIVE_INFINITY, type: 'audio' });\n appendOnBufferFlush = true;\n // Lets announce that the initial audio track switch flush occur\n this.audioSwitch = false;\n hls.trigger(events[\"a\" /* default */].AUDIO_TRACK_SWITCHED, { id: trackId });\n }\n } else {\n // Lets announce that the initial audio track switch flush occur\n this.audioSwitch = false;\n hls.trigger(events[\"a\" /* default */].AUDIO_TRACK_SWITCHED, { id: trackId });\n }\n }\n\n var pendingData = this.pendingData;\n\n if (!pendingData) {\n console.warn('Apparently attempt to enqueue media payload without codec initialization data upfront');\n hls.trigger(events[\"a\" /* default */].ERROR, { type: errors[\"b\" /* ErrorTypes */].MEDIA_ERROR, details: null, fatal: true });\n return;\n }\n\n if (!this.audioSwitch) {\n [data.data1, data.data2].forEach(function (buffer) {\n if (buffer && buffer.length) pendingData.push({ type: data.type, data: buffer, parent: 'audio', content: 'data' });\n });\n if (!appendOnBufferFlush && pendingData.length) {\n pendingData.forEach(function (appendObj) {\n // only append in PARSING state (rationale is that an appending error could happen synchronously on first segment appending)\n // in that case it is useless to append following segments\n if (_this2.state === audio_stream_controller_State.PARSING) {\n // arm pending Buffering flag before appending a segment\n _this2.pendingBuffering = true;\n _this2.hls.trigger(events[\"a\" /* default */].BUFFER_APPENDING, appendObj);\n }\n });\n this.pendingData = [];\n this.appended = true;\n }\n }\n // trigger handler right now\n this.tick();\n }\n };\n\n AudioStreamController.prototype.onFragParsed = function onFragParsed(data) {\n var fragCurrent = this.fragCurrent;\n var fragNew = data.frag;\n if (fragCurrent && data.id === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === audio_stream_controller_State.PARSING) {\n this.stats.tparsed = performance.now();\n this.state = audio_stream_controller_State.PARSED;\n this._checkAppendedParsed();\n }\n };\n\n AudioStreamController.prototype.onBufferReset = function onBufferReset() {\n // reset reference to sourcebuffers\n this.mediaBuffer = this.videoBuffer = null;\n this.loadedmetadata = false;\n };\n\n AudioStreamController.prototype.onBufferCreated = function onBufferCreated(data) {\n var audioTrack = data.tracks.audio;\n if (audioTrack) {\n this.mediaBuffer = audioTrack.buffer;\n this.loadedmetadata = true;\n }\n if (data.tracks.video) this.videoBuffer = data.tracks.video.buffer;\n };\n\n AudioStreamController.prototype.onBufferAppended = function onBufferAppended(data) {\n if (data.parent === 'audio') {\n var state = this.state;\n if (state === audio_stream_controller_State.PARSING || state === audio_stream_controller_State.PARSED) {\n // check if all buffers have been appended\n this.pendingBuffering = data.pending > 0;\n this._checkAppendedParsed();\n }\n }\n };\n\n AudioStreamController.prototype._checkAppendedParsed = function _checkAppendedParsed() {\n // trigger handler right now\n if (this.state === audio_stream_controller_State.PARSED && (!this.appended || !this.pendingBuffering)) {\n var frag = this.fragCurrent,\n stats = this.stats,\n hls = this.hls;\n if (frag) {\n this.fragPrevious = frag;\n stats.tbuffered = performance.now();\n hls.trigger(events[\"a\" /* default */].FRAG_BUFFERED, { stats: stats, frag: frag, id: 'audio' });\n var media = this.mediaBuffer ? this.mediaBuffer : this.media;\n logger[\"b\" /* logger */].log('audio buffered : ' + time_ranges.toString(media.buffered));\n if (this.audioSwitch && this.appended) {\n this.audioSwitch = false;\n hls.trigger(events[\"a\" /* default */].AUDIO_TRACK_SWITCHED, { id: this.trackId });\n }\n this.state = audio_stream_controller_State.IDLE;\n }\n this.tick();\n }\n };\n\n AudioStreamController.prototype.onError = function onError(data) {\n var frag = data.frag;\n // don't handle frag error not related to audio fragment\n if (frag && frag.type !== 'audio') return;\n\n switch (data.details) {\n case errors[\"a\" /* ErrorDetails */].FRAG_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].FRAG_LOAD_TIMEOUT:\n if (!data.fatal) {\n var loadError = this.fragLoadError;\n if (loadError) loadError++;else loadError = 1;\n\n var config = this.config;\n if (loadError <= config.fragLoadingMaxRetry) {\n this.fragLoadError = loadError;\n // exponential backoff capped to config.fragLoadingMaxRetryTimeout\n var delay = Math.min(Math.pow(2, loadError - 1) * config.fragLoadingRetryDelay, config.fragLoadingMaxRetryTimeout);\n logger[\"b\" /* logger */].warn('audioStreamController: frag loading failed, retry in ' + delay + ' ms');\n this.retryDate = performance.now() + delay;\n // retry loading state\n this.state = audio_stream_controller_State.FRAG_LOADING_WAITING_RETRY;\n } else {\n logger[\"b\" /* logger */].error('audioStreamController: ' + data.details + ' reaches max retry, redispatch as fatal ...');\n // switch error to fatal\n data.fatal = true;\n this.state = audio_stream_controller_State.ERROR;\n }\n }\n break;\n case errors[\"a\" /* ErrorDetails */].AUDIO_TRACK_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].AUDIO_TRACK_LOAD_TIMEOUT:\n case errors[\"a\" /* ErrorDetails */].KEY_LOAD_ERROR:\n case errors[\"a\" /* ErrorDetails */].KEY_LOAD_TIMEOUT:\n // when in ERROR state, don't switch back to IDLE state in case a non-fatal error is received\n if (this.state !== audio_stream_controller_State.ERROR) {\n // if fatal error, stop processing, otherwise move to IDLE to retry loading\n this.state = data.fatal ? audio_stream_controller_State.ERROR : audio_stream_controller_State.IDLE;\n logger[\"b\" /* logger */].warn('audioStreamController: ' + data.details + ' while loading frag,switch to ' + this.state + ' state ...');\n }\n break;\n case errors[\"a\" /* ErrorDetails */].BUFFER_FULL_ERROR:\n // if in appending state\n if (data.parent === 'audio' && (this.state === audio_stream_controller_State.PARSING || this.state === audio_stream_controller_State.PARSED)) {\n var media = this.mediaBuffer,\n currentTime = this.media.currentTime,\n mediaBuffered = media && buffer_helper.isBuffered(media, currentTime) && buffer_helper.isBuffered(media, currentTime + 0.5);\n // reduce max buf len if current position is buffered\n if (mediaBuffered) {\n var _config = this.config;\n if (_config.maxMaxBufferLength >= _config.maxBufferLength) {\n // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n _config.maxMaxBufferLength /= 2;\n logger[\"b\" /* logger */].warn('audio:reduce max buffer length to ' + _config.maxMaxBufferLength + 's');\n }\n this.state = audio_stream_controller_State.IDLE;\n } else {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole audio buffer to recover\n logger[\"b\" /* logger */].warn('buffer full error also media.currentTime is not buffered, flush audio buffer');\n this.fragCurrent = null;\n // flush everything\n this.state = audio_stream_controller_State.BUFFER_FLUSHING;\n this.hls.trigger(events[\"a\" /* default */].BUFFER_FLUSHING, { startOffset: 0, endOffset: Number.POSITIVE_INFINITY, type: 'audio' });\n }\n }\n break;\n default:\n break;\n }\n };\n\n AudioStreamController.prototype.onBufferFlushed = function onBufferFlushed() {\n var _this3 = this;\n\n var pendingData = this.pendingData;\n if (pendingData && pendingData.length) {\n logger[\"b\" /* logger */].log('appending pending audio data on Buffer Flushed');\n pendingData.forEach(function (appendObj) {\n _this3.hls.trigger(events[\"a\" /* default */].BUFFER_APPENDING, appendObj);\n });\n this.appended = true;\n this.pendingData = [];\n this.state = audio_stream_controller_State.PARSED;\n } else {\n // move to IDLE once flush complete. this should trigger new fragment loading\n this.state = audio_stream_controller_State.IDLE;\n // reset reference to frag\n this.fragPrevious = null;\n this.tick();\n }\n };\n\n audio_stream_controller__createClass(AudioStreamController, [{\n key: 'state',\n set: function set(nextState) {\n if (this.state !== nextState) {\n var previousState = this.state;\n this._state = nextState;\n logger[\"b\" /* logger */].log('audio stream:' + previousState + '->' + nextState);\n }\n },\n get: function get() {\n return this._state;\n }\n }]);\n\n return AudioStreamController;\n}(task_loop);\n\n/* harmony default export */ var audio_stream_controller = (audio_stream_controller_AudioStreamController);\n// CONCATENATED MODULE: ./src/utils/vttcue.js\n/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* harmony default export */ var vttcue = ((function () {\n if (typeof window !== 'undefined' && window.VTTCue) return window.VTTCue;\n\n var autoKeyword = 'auto';\n var directionSetting = {\n '': true,\n lr: true,\n rl: true\n };\n var alignSetting = {\n start: true,\n middle: true,\n end: true,\n left: true,\n right: true\n };\n\n function findDirectionSetting(value) {\n if (typeof value !== 'string') return false;\n\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n }\n\n function findAlignSetting(value) {\n if (typeof value !== 'string') return false;\n\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n }\n\n function extend(obj) {\n var i = 1;\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n\n return obj;\n }\n\n function VTTCue(startTime, endTime, text) {\n var cue = this;\n var isIE8 = function () {\n if (typeof navigator === 'undefined') return;\n\n return (/MSIE\\s8\\.0/.test(navigator.userAgent)\n );\n }();\n var baseObj = {};\n\n if (isIE8) cue = document.createElement('custom');else baseObj.enumerable = true;\n\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n cue.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = '';\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = '';\n var _snapToLines = true;\n var _line = 'auto';\n var _lineAlign = 'start';\n var _position = 50;\n var _positionAlign = 'middle';\n var _size = 50;\n var _align = 'middle';\n\n Object.defineProperty(cue, 'id', extend({}, baseObj, {\n get: function get() {\n return _id;\n },\n set: function set(value) {\n _id = '' + value;\n }\n }));\n\n Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, {\n get: function get() {\n return _pauseOnExit;\n },\n set: function set(value) {\n _pauseOnExit = !!value;\n }\n }));\n\n Object.defineProperty(cue, 'startTime', extend({}, baseObj, {\n get: function get() {\n return _startTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') throw new TypeError('Start time must be set to a number.');\n\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'endTime', extend({}, baseObj, {\n get: function get() {\n return _endTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') throw new TypeError('End time must be set to a number.');\n\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'text', extend({}, baseObj, {\n get: function get() {\n return _text;\n },\n set: function set(value) {\n _text = '' + value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'region', extend({}, baseObj, {\n get: function get() {\n return _region;\n },\n set: function set(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'vertical', extend({}, baseObj, {\n get: function get() {\n return _vertical;\n },\n set: function set(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) throw new SyntaxError('An invalid or illegal string was specified.');\n\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, {\n get: function get() {\n return _snapToLines;\n },\n set: function set(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'line', extend({}, baseObj, {\n get: function get() {\n return _line;\n },\n set: function set(value) {\n if (typeof value !== 'number' && value !== autoKeyword) throw new SyntaxError('An invalid number or illegal string was specified.');\n\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, {\n get: function get() {\n return _lineAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n if (!setting) throw new SyntaxError('An invalid or illegal string was specified.');\n\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'position', extend({}, baseObj, {\n get: function get() {\n return _position;\n },\n set: function set(value) {\n if (value < 0 || value > 100) throw new Error('Position must be between 0 and 100.');\n\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, {\n get: function get() {\n return _positionAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n if (!setting) throw new SyntaxError('An invalid or illegal string was specified.');\n\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'size', extend({}, baseObj, {\n get: function get() {\n return _size;\n },\n set: function set(value) {\n if (value < 0 || value > 100) throw new Error('Size must be between 0 and 100.');\n\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue, 'align', extend({}, baseObj, {\n get: function get() {\n return _align;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n if (!setting) throw new SyntaxError('An invalid or illegal string was specified.');\n\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n\n /**\n * Other <track> spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n cue.displayState = undefined;\n\n if (isIE8) return cue;\n }\n\n /**\n * VTTCue methods\n */\n\n VTTCue.prototype.getCueAsHTML = function () {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n var WebVTT = window.WebVTT;\n return WebVTT.convertCueToDOMTree(window, this.text);\n };\n\n return VTTCue;\n})());\n// CONCATENATED MODULE: ./src/utils/vttparser.js\n/*\n * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js#L1716\n */\n\n\n\nvar StringDecoder = function StringDecoder() {\n return {\n decode: function decode(data) {\n if (!data) return '';\n\n if (typeof data !== 'string') throw new Error('Error - expected string data.');\n\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nfunction VTTParser() {\n this.window = window;\n this.state = 'INITIAL';\n this.buffer = '';\n this.decoder = new StringDecoder();\n this.regionList = [];\n}\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{2})(:\\d{2})?\\.(\\d{3})/);\n if (!m) return null;\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(':', ''), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = Object.create(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function set(k, v) {\n if (!this.get(k) && v !== '') this.values[k] = v;\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function get(k, dflt, defaultKey) {\n if (defaultKey) return this.has(k) ? this.values[k] : dflt[defaultKey];\n\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function has(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function alt(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function integer(k, v) {\n if (/^-?\\d+$/.test(v)) {\n // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function percent(k, v) {\n var m = void 0;\n if (m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/)) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== 'string') continue;\n\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) continue;\n\n var k = kv[0];\n var v = kv[1];\n callback(k, v);\n }\n}\n\nvar defaults = new vttcue(0, 0, 0);\n// 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244\n// Safari doesn't yet support this change, but FF and Chrome do.\nvar center = defaults.align === 'middle' ? 'middle' : 'center';\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) throw new Error('Malformed timestamp: ' + oInput);\n\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, '');\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case 'region':\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case 'vertical':\n settings.alt(k, v, ['rl', 'lr']);\n break;\n case 'line':\n var vals = v.split(','),\n vals0 = vals[0];\n settings.integer(k, vals0);\n if (settings.percent(k, vals0)) settings.set('snapToLines', false);\n\n settings.alt(k, vals0, ['auto']);\n if (vals.length === 2) settings.alt('lineAlign', vals[1], ['start', center, 'end']);\n\n break;\n case 'position':\n vals = v.split(',');\n settings.percent(k, vals[0]);\n if (vals.length === 2) settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']);\n\n break;\n case 'size':\n settings.percent(k, v);\n break;\n case 'align':\n settings.alt(k, v, ['start', center, 'end', 'left', 'right']);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get('region', null);\n cue.vertical = settings.get('vertical', '');\n var line = settings.get('line', 'auto');\n if (line === 'auto' && defaults.line === -1) {\n // set numeric line number for Safari\n line = -1;\n }\n cue.line = line;\n cue.lineAlign = settings.get('lineAlign', 'start');\n cue.snapToLines = settings.get('snapToLines', true);\n cue.size = settings.get('size', 100);\n cue.align = settings.get('align', center);\n var position = settings.get('position', 'auto');\n if (position === 'auto' && defaults.position === 50) {\n // set numeric position for Safari\n position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50;\n }\n cue.position = position;\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, '');\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== '-->') {\n // (3) next characters must match '-->'\n throw new Error('Malformed time stamp (time stamps must be separated by \\'-->\\'): ' + oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\nfunction fixLineBreaks(input) {\n return input.replace(/<br(?: \\/)?>/gi, '\\n');\n}\n\nVTTParser.prototype = {\n parse: function parse(data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, { stream: true });\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n\n buffer = fixLineBreaks(buffer);\n\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') ++pos;\n\n if (buffer[pos] === '\\n') ++pos;\n\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n parseOptions(input, function (k, v) {\n switch (k) {\n case 'Region':\n // 3.3 WebVTT region metadata header syntax\n console.log('parse region', v);\n // parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line = void 0;\n if (self.state === 'INITIAL') {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) return this;\n\n line = collectNextLine();\n // strip of UTF-8 BOM if any\n // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n var m = line.match(/^()?WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) throw new Error('Malformed WebVTT signature.');\n\n self.state = 'HEADER';\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) return this;\n\n if (!alreadyCollectedLine) line = collectNextLine();else alreadyCollectedLine = false;\n\n switch (self.state) {\n case 'HEADER':\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = 'ID';\n }\n continue;\n case 'NOTE':\n // Ignore NOTE blocks.\n if (!line) self.state = 'ID';\n\n continue;\n case 'ID':\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = 'NOTE';\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) continue;\n\n self.cue = new vttcue(0, 0, '');\n self.state = 'CUE';\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf('-->') === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /* falls through */\n case 'CUE':\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = 'BADCUE';\n continue;\n }\n self.state = 'CUETEXT';\n continue;\n case 'CUETEXT':\n var hasSubstring = line.indexOf('-->') !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n if (self.oncue) self.oncue(self.cue);\n\n self.cue = null;\n self.state = 'ID';\n continue;\n }\n if (self.cue.text) self.cue.text += '\\n';\n\n self.cue.text += line;\n continue;\n case 'BADCUE':\n // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) self.state = 'ID';\n\n continue;\n }\n }\n } catch (e) {\n // If we are currently parsing a cue, report what we have.\n if (self.state === 'CUETEXT' && self.cue && self.oncue) self.oncue(self.cue);\n\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE';\n }\n return this;\n },\n flush: function flush() {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === 'HEADER') {\n self.buffer += '\\n\\n';\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === 'INITIAL') throw new Error('Malformed WebVTT signature.');\n } catch (e) {\n throw e;\n }\n if (self.onflush) self.onflush();\n\n return this;\n }\n};\n\n\n\n/* harmony default export */ var vttparser = (VTTParser);\n// CONCATENATED MODULE: ./src/utils/cues.js\n\n\nfunction newCue(track, startTime, endTime, captionScreen) {\n var row = void 0;\n var cue = void 0;\n var indenting = void 0;\n var indent = void 0;\n var text = void 0;\n var VTTCue = window.VTTCue || window.TextTrackCue;\n\n for (var r = 0; r < captionScreen.rows.length; r++) {\n row = captionScreen.rows[r];\n indenting = true;\n indent = 0;\n text = '';\n\n if (!row.isEmpty()) {\n for (var c = 0; c < row.chars.length; c++) {\n if (row.chars[c].uchar.match(/\\s/) && indenting) {\n indent++;\n } else {\n text += row.chars[c].uchar;\n indenting = false;\n }\n }\n // To be used for cleaning-up orphaned roll-up captions\n row.cueStartTime = startTime;\n\n // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE\n if (startTime === endTime) endTime += 0.0001;\n\n cue = new VTTCue(startTime, endTime, fixLineBreaks(text.trim()));\n\n if (indent >= 16) indent--;else indent++;\n\n // VTTCue.line get's flakey when using controls, so let's now include line 13&14\n // also, drop line 1 since it's to close to the top\n if (navigator.userAgent.match(/Firefox\\//)) cue.line = r + 1;else cue.line = r > 7 ? r - 2 : r + 1;\n\n cue.align = 'left';\n // Clamp the position between 0 and 100 - if out of these bounds, Firefox throws an exception and captions break\n cue.position = Math.max(0, Math.min(100, 100 * (indent / 32) + (navigator.userAgent.match(/Firefox\\//) ? 50 : 0)));\n track.addCue(cue);\n }\n }\n}\n// CONCATENATED MODULE: ./src/utils/cea-608-parser.js\nfunction cea_608_parser__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\n\nvar specialCea608CharsCodes = {\n 0x2a: 0xe1, // lowercase a, acute accent\n 0x5c: 0xe9, // lowercase e, acute accent\n 0x5e: 0xed, // lowercase i, acute accent\n 0x5f: 0xf3, // lowercase o, acute accent\n 0x60: 0xfa, // lowercase u, acute accent\n 0x7b: 0xe7, // lowercase c with cedilla\n 0x7c: 0xf7, // division symbol\n 0x7d: 0xd1, // uppercase N tilde\n 0x7e: 0xf1, // lowercase n tilde\n 0x7f: 0x2588, // Full block\n // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n 0x80: 0xae, // Registered symbol (R)\n 0x81: 0xb0, // degree sign\n 0x82: 0xbd, // 1/2 symbol\n 0x83: 0xbf, // Inverted (open) question mark\n 0x84: 0x2122, // Trademark symbol (TM)\n 0x85: 0xa2, // Cents symbol\n 0x86: 0xa3, // Pounds sterling\n 0x87: 0x266a, // Music 8'th note\n 0x88: 0xe0, // lowercase a, grave accent\n 0x89: 0x20, // transparent space (regular)\n 0x8a: 0xe8, // lowercase e, grave accent\n 0x8b: 0xe2, // lowercase a, circumflex accent\n 0x8c: 0xea, // lowercase e, circumflex accent\n 0x8d: 0xee, // lowercase i, circumflex accent\n 0x8e: 0xf4, // lowercase o, circumflex accent\n 0x8f: 0xfb, // lowercase u, circumflex accent\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n 0x90: 0xc1, // capital letter A with acute\n 0x91: 0xc9, // capital letter E with acute\n 0x92: 0xd3, // capital letter O with acute\n 0x93: 0xda, // capital letter U with acute\n 0x94: 0xdc, // capital letter U with diaresis\n 0x95: 0xfc, // lowercase letter U with diaeresis\n 0x96: 0x2018, // opening single quote\n 0x97: 0xa1, // inverted exclamation mark\n 0x98: 0x2a, // asterisk\n 0x99: 0x2019, // closing single quote\n 0x9a: 0x2501, // box drawings heavy horizontal\n 0x9b: 0xa9, // copyright sign\n 0x9c: 0x2120, // Service mark\n 0x9d: 0x2022, // (round) bullet\n 0x9e: 0x201c, // Left double quotation mark\n 0x9f: 0x201d, // Right double quotation mark\n 0xa0: 0xc0, // uppercase A, grave accent\n 0xa1: 0xc2, // uppercase A, circumflex\n 0xa2: 0xc7, // uppercase C with cedilla\n 0xa3: 0xc8, // uppercase E, grave accent\n 0xa4: 0xca, // uppercase E, circumflex\n 0xa5: 0xcb, // capital letter E with diaresis\n 0xa6: 0xeb, // lowercase letter e with diaresis\n 0xa7: 0xce, // uppercase I, circumflex\n 0xa8: 0xcf, // uppercase I, with diaresis\n 0xa9: 0xef, // lowercase i, with diaresis\n 0xaa: 0xd4, // uppercase O, circumflex\n 0xab: 0xd9, // uppercase U, grave accent\n 0xac: 0xf9, // lowercase u, grave accent\n 0xad: 0xdb, // uppercase U, circumflex\n 0xae: 0xab, // left-pointing double angle quotation mark\n 0xaf: 0xbb, // right-pointing double angle quotation mark\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n 0xb0: 0xc3, // Uppercase A, tilde\n 0xb1: 0xe3, // Lowercase a, tilde\n 0xb2: 0xcd, // Uppercase I, acute accent\n 0xb3: 0xcc, // Uppercase I, grave accent\n 0xb4: 0xec, // Lowercase i, grave accent\n 0xb5: 0xd2, // Uppercase O, grave accent\n 0xb6: 0xf2, // Lowercase o, grave accent\n 0xb7: 0xd5, // Uppercase O, tilde\n 0xb8: 0xf5, // Lowercase o, tilde\n 0xb9: 0x7b, // Open curly brace\n 0xba: 0x7d, // Closing curly brace\n 0xbb: 0x5c, // Backslash\n 0xbc: 0x5e, // Caret\n 0xbd: 0x5f, // Underscore\n 0xbe: 0x7c, // Pipe (vertical line)\n 0xbf: 0x223c, // Tilde operator\n 0xc0: 0xc4, // Uppercase A, umlaut\n 0xc1: 0xe4, // Lowercase A, umlaut\n 0xc2: 0xd6, // Uppercase O, umlaut\n 0xc3: 0xf6, // Lowercase o, umlaut\n 0xc4: 0xdf, // Esszett (sharp S)\n 0xc5: 0xa5, // Yen symbol\n 0xc6: 0xa4, // Generic currency sign\n 0xc7: 0x2503, // Box drawings heavy vertical\n 0xc8: 0xc5, // Uppercase A, ring\n 0xc9: 0xe5, // Lowercase A, ring\n 0xca: 0xd8, // Uppercase O, stroke\n 0xcb: 0xf8, // Lowercase o, strok\n 0xcc: 0x250f, // Box drawings heavy down and right\n 0xcd: 0x2513, // Box drawings heavy down and left\n 0xce: 0x2517, // Box drawings heavy up and right\n 0xcf: 0x251b // Box drawings heavy up and left\n};\n\n/**\n * Utils\n */\nvar getCharForByte = function getCharForByte(byte) {\n var charCode = byte;\n if (specialCea608CharsCodes.hasOwnProperty(byte)) charCode = specialCea608CharsCodes[byte];\n\n return String.fromCharCode(charCode);\n};\n\nvar NR_ROWS = 15,\n NR_COLS = 100;\n// Tables to look up row from PAC data\nvar rowsLowCh1 = { 0x11: 1, 0x12: 3, 0x15: 5, 0x16: 7, 0x17: 9, 0x10: 11, 0x13: 12, 0x14: 14 };\nvar rowsHighCh1 = { 0x11: 2, 0x12: 4, 0x15: 6, 0x16: 8, 0x17: 10, 0x13: 13, 0x14: 15 };\nvar rowsLowCh2 = { 0x19: 1, 0x1A: 3, 0x1D: 5, 0x1E: 7, 0x1F: 9, 0x18: 11, 0x1B: 12, 0x1C: 14 };\nvar rowsHighCh2 = { 0x19: 2, 0x1A: 4, 0x1D: 6, 0x1E: 8, 0x1F: 10, 0x1B: 13, 0x1C: 15 };\n\nvar backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'];\n\n/**\n * Simple logger class to be able to write with time-stamps and filter on level.\n */\nvar cea_608_parser_logger = {\n verboseFilter: { 'DATA': 3, 'DEBUG': 3, 'INFO': 2, 'WARNING': 2, 'TEXT': 1, 'ERROR': 0 },\n time: null,\n verboseLevel: 0, // Only write errors\n setTime: function setTime(newTime) {\n this.time = newTime;\n },\n log: function log(severity, msg) {\n var minLevel = this.verboseFilter[severity];\n if (this.verboseLevel >= minLevel) console.log(this.time + ' [' + severity + '] ' + msg);\n }\n};\n\nvar numArrayToHexArray = function numArrayToHexArray(numArray) {\n var hexArray = [];\n for (var j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }return hexArray;\n};\n\nvar PenState = function () {\n function PenState(foreground, underline, italics, background, flash) {\n cea_608_parser__classCallCheck(this, PenState);\n\n this.foreground = foreground || 'white';\n this.underline = underline || false;\n this.italics = italics || false;\n this.background = background || 'black';\n this.flash = flash || false;\n }\n\n PenState.prototype.reset = function reset() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n };\n\n PenState.prototype.setStyles = function setStyles(styles) {\n var attribs = ['foreground', 'underline', 'italics', 'background', 'flash'];\n for (var i = 0; i < attribs.length; i++) {\n var style = attribs[i];\n if (styles.hasOwnProperty(style)) this[style] = styles[style];\n }\n };\n\n PenState.prototype.isDefault = function isDefault() {\n return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash;\n };\n\n PenState.prototype.equals = function equals(other) {\n return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;\n };\n\n PenState.prototype.copy = function copy(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n };\n\n PenState.prototype.toString = function toString() {\n return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash;\n };\n\n return PenState;\n}();\n\n/**\n * Unicode character with styling and background.\n * @constructor\n */\n\n\nvar StyledUnicodeChar = function () {\n function StyledUnicodeChar(uchar, foreground, underline, italics, background, flash) {\n cea_608_parser__classCallCheck(this, StyledUnicodeChar);\n\n this.uchar = uchar || ' '; // unicode character\n this.penState = new PenState(foreground, underline, italics, background, flash);\n }\n\n StyledUnicodeChar.prototype.reset = function reset() {\n this.uchar = ' ';\n this.penState.reset();\n };\n\n StyledUnicodeChar.prototype.setChar = function setChar(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n };\n\n StyledUnicodeChar.prototype.setPenState = function setPenState(newPenState) {\n this.penState.copy(newPenState);\n };\n\n StyledUnicodeChar.prototype.equals = function equals(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n };\n\n StyledUnicodeChar.prototype.copy = function copy(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n };\n\n StyledUnicodeChar.prototype.isEmpty = function isEmpty() {\n return this.uchar === ' ' && this.penState.isDefault();\n };\n\n return StyledUnicodeChar;\n}();\n\n/**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\n\n\nvar Row = function () {\n function Row() {\n cea_608_parser__classCallCheck(this, Row);\n\n this.chars = [];\n for (var i = 0; i < NR_COLS; i++) {\n this.chars.push(new StyledUnicodeChar());\n }this.pos = 0;\n this.currPenState = new PenState();\n }\n\n Row.prototype.equals = function equals(other) {\n var equal = true;\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].equals(other.chars[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n };\n\n Row.prototype.copy = function copy(other) {\n for (var i = 0; i < NR_COLS; i++) {\n this.chars[i].copy(other.chars[i]);\n }\n };\n\n Row.prototype.isEmpty = function isEmpty() {\n var empty = true;\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n };\n\n /**\n * Set the cursor to a valid column.\n */\n\n\n Row.prototype.setCursor = function setCursor(absPos) {\n if (this.pos !== absPos) this.pos = absPos;\n\n if (this.pos < 0) {\n cea_608_parser_logger.log('ERROR', 'Negative cursor position ' + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n cea_608_parser_logger.log('ERROR', 'Too large cursor position ' + this.pos);\n this.pos = NR_COLS;\n }\n };\n\n /**\n * Move the cursor relative to current position.\n */\n\n\n Row.prototype.moveCursor = function moveCursor(relPos) {\n var newPos = this.pos + relPos;\n if (relPos > 1) {\n for (var i = this.pos + 1; i < newPos + 1; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n this.setCursor(newPos);\n };\n\n /**\n * Backspace, move one step back and clear character.\n */\n\n\n Row.prototype.backSpace = function backSpace() {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n };\n\n Row.prototype.insertChar = function insertChar(byte) {\n if (byte >= 0x90) {\n // Extended char\n this.backSpace();\n }\n var char = getCharForByte(byte);\n if (this.pos >= NR_COLS) {\n cea_608_parser_logger.log('ERROR', 'Cannot insert ' + byte.toString(16) + ' (' + char + ') at position ' + this.pos + '. Skipping it!');\n return;\n }\n this.chars[this.pos].setChar(char, this.currPenState);\n this.moveCursor(1);\n };\n\n Row.prototype.clearFromPos = function clearFromPos(startPos) {\n var i = void 0;\n for (i = startPos; i < NR_COLS; i++) {\n this.chars[i].reset();\n }\n };\n\n Row.prototype.clear = function clear() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n };\n\n Row.prototype.clearToEndOfRow = function clearToEndOfRow() {\n this.clearFromPos(this.pos);\n };\n\n Row.prototype.getTextString = function getTextString() {\n var chars = [];\n var empty = true;\n for (var i = 0; i < NR_COLS; i++) {\n var char = this.chars[i].uchar;\n if (char !== ' ') empty = false;\n\n chars.push(char);\n }\n if (empty) return '';else return chars.join('');\n };\n\n Row.prototype.setPenStyles = function setPenStyles(styles) {\n this.currPenState.setStyles(styles);\n var currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n };\n\n return Row;\n}();\n\n/**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n*/\n\n\nvar CaptionScreen = function () {\n function CaptionScreen() {\n cea_608_parser__classCallCheck(this, CaptionScreen);\n\n this.rows = [];\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows.push(new Row());\n } // Note that we use zero-based numbering (0-14)\n\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.reset();\n }\n\n CaptionScreen.prototype.reset = function reset() {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }this.currRow = NR_ROWS - 1;\n };\n\n CaptionScreen.prototype.equals = function equals(other) {\n var equal = true;\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n };\n\n CaptionScreen.prototype.copy = function copy(other) {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n };\n\n CaptionScreen.prototype.isEmpty = function isEmpty() {\n var empty = true;\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n };\n\n CaptionScreen.prototype.backSpace = function backSpace() {\n var row = this.rows[this.currRow];\n row.backSpace();\n };\n\n CaptionScreen.prototype.clearToEndOfRow = function clearToEndOfRow() {\n var row = this.rows[this.currRow];\n row.clearToEndOfRow();\n };\n\n /**\n * Insert a character (without styling) in the current row.\n */\n\n\n CaptionScreen.prototype.insertChar = function insertChar(char) {\n var row = this.rows[this.currRow];\n row.insertChar(char);\n };\n\n CaptionScreen.prototype.setPen = function setPen(styles) {\n var row = this.rows[this.currRow];\n row.setPenStyles(styles);\n };\n\n CaptionScreen.prototype.moveCursor = function moveCursor(relPos) {\n var row = this.rows[this.currRow];\n row.moveCursor(relPos);\n };\n\n CaptionScreen.prototype.setCursor = function setCursor(absPos) {\n cea_608_parser_logger.log('INFO', 'setCursor: ' + absPos);\n var row = this.rows[this.currRow];\n row.setCursor(absPos);\n };\n\n CaptionScreen.prototype.setPAC = function setPAC(pacData) {\n cea_608_parser_logger.log('INFO', 'pacData = ' + JSON.stringify(pacData));\n var newRow = pacData.row - 1;\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) newRow = this.nrRollUpRows - 1;\n\n // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows\n if (this.nrRollUpRows && this.currRow !== newRow) {\n // clear all rows first\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n } // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location\n // topRowIndex - the start of rows to copy (inclusive index)\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n // We only copy if the last position was already shown.\n // We use the cueStartTime value to check this.\n var lastOutputScreen = this.lastOutputScreen;\n if (lastOutputScreen) {\n var prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n if (prevLineTime && prevLineTime < cea_608_parser_logger.time) {\n for (var _i = 0; _i < this.nrRollUpRows; _i++) {\n this.rows[newRow - this.nrRollUpRows + _i + 1].copy(lastOutputScreen.rows[topRowIndex + _i]);\n }\n }\n }\n }\n\n this.currRow = newRow;\n var row = this.rows[this.currRow];\n if (pacData.indent !== null) {\n var indent = pacData.indent;\n var prevPos = Math.max(indent - 1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n var styles = { foreground: pacData.color, underline: pacData.underline, italics: pacData.italics, background: 'black', flash: false };\n this.setPen(styles);\n };\n\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n\n\n CaptionScreen.prototype.setBkgData = function setBkgData(bkgData) {\n cea_608_parser_logger.log('INFO', 'bkgData = ' + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); // Space\n };\n\n CaptionScreen.prototype.setRollUpRows = function setRollUpRows(nrRows) {\n this.nrRollUpRows = nrRows;\n };\n\n CaptionScreen.prototype.rollUp = function rollUp() {\n if (this.nrRollUpRows === null) {\n cea_608_parser_logger.log('DEBUG', 'roll_up but nrRollUpRows not set yet');\n return; // Not properly setup\n }\n cea_608_parser_logger.log('TEXT', this.getDisplayText());\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n var topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n cea_608_parser_logger.log('INFO', 'Rolling up');\n // logger.log('TEXT', this.get_display_text())\n };\n\n /**\n * Get all non-empty rows with as unicode text.\n */\n\n\n CaptionScreen.prototype.getDisplayText = function getDisplayText(asOneRow) {\n asOneRow = asOneRow || false;\n var displayText = [];\n var text = '';\n var rowNr = -1;\n for (var i = 0; i < NR_ROWS; i++) {\n var rowText = this.rows[i].getTextString();\n if (rowText) {\n rowNr = i + 1;\n if (asOneRow) displayText.push('Row ' + rowNr + ': \\'' + rowText + '\\'');else displayText.push(rowText.trim());\n }\n }\n if (displayText.length > 0) {\n if (asOneRow) text = '[' + displayText.join(' | ') + ']';else text = displayText.join('\\n');\n }\n return text;\n };\n\n CaptionScreen.prototype.getTextAndFormat = function getTextAndFormat() {\n return this.rows;\n };\n\n return CaptionScreen;\n}();\n\n// var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT'];\n\nvar Cea608Channel = function () {\n function Cea608Channel(channelNumber, outputFilter) {\n cea_608_parser__classCallCheck(this, Cea608Channel);\n\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen();\n this.nonDisplayedMemory = new CaptionScreen();\n this.lastOutputScreen = new CaptionScreen();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n }\n\n Cea608Channel.prototype.reset = function reset() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n this.lastCueEndTime = null;\n };\n\n Cea608Channel.prototype.getHandler = function getHandler() {\n return this.outputFilter;\n };\n\n Cea608Channel.prototype.setHandler = function setHandler(newHandler) {\n this.outputFilter = newHandler;\n };\n\n Cea608Channel.prototype.setPAC = function setPAC(pacData) {\n this.writeScreen.setPAC(pacData);\n };\n\n Cea608Channel.prototype.setBkgData = function setBkgData(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n };\n\n Cea608Channel.prototype.setMode = function setMode(newMode) {\n if (newMode === this.mode) return;\n\n this.mode = newMode;\n cea_608_parser_logger.log('INFO', 'MODE=' + newMode);\n if (this.mode === 'MODE_POP-ON') {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n if (this.mode !== 'MODE_ROLL-UP') {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n this.mode = newMode;\n };\n\n Cea608Channel.prototype.insertChars = function insertChars(chars) {\n for (var i = 0; i < chars.length; i++) {\n this.writeScreen.insertChar(chars[i]);\n }var screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';\n cea_608_parser_logger.log('INFO', screen + ': ' + this.writeScreen.getDisplayText(true));\n if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {\n cea_608_parser_logger.log('TEXT', 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n };\n\n Cea608Channel.prototype.ccRCL = function ccRCL() {\n // Resume Caption Loading (switch mode to Pop On)\n cea_608_parser_logger.log('INFO', 'RCL - Resume Caption Loading');\n this.setMode('MODE_POP-ON');\n };\n\n Cea608Channel.prototype.ccBS = function ccBS() {\n // BackSpace\n cea_608_parser_logger.log('INFO', 'BS - BackSpace');\n if (this.mode === 'MODE_TEXT') return;\n\n this.writeScreen.backSpace();\n if (this.writeScreen === this.displayedMemory) this.outputDataUpdate();\n };\n\n Cea608Channel.prototype.ccAOF = function ccAOF() {// Reserved (formerly Alarm Off)\n\n };\n\n Cea608Channel.prototype.ccAON = function ccAON() {// Reserved (formerly Alarm On)\n\n };\n\n Cea608Channel.prototype.ccDER = function ccDER() {\n // Delete to End of Row\n cea_608_parser_logger.log('INFO', 'DER- Delete to End of Row');\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n };\n\n Cea608Channel.prototype.ccRU = function ccRU(nrRows) {\n // Roll-Up Captions-2,3,or 4 Rows\n cea_608_parser_logger.log('INFO', 'RU(' + nrRows + ') - Roll Up');\n this.writeScreen = this.displayedMemory;\n this.setMode('MODE_ROLL-UP');\n this.writeScreen.setRollUpRows(nrRows);\n };\n\n Cea608Channel.prototype.ccFON = function ccFON() {\n // Flash On\n cea_608_parser_logger.log('INFO', 'FON - Flash On');\n this.writeScreen.setPen({ flash: true });\n };\n\n Cea608Channel.prototype.ccRDC = function ccRDC() {\n // Resume Direct Captioning (switch mode to PaintOn)\n cea_608_parser_logger.log('INFO', 'RDC - Resume Direct Captioning');\n this.setMode('MODE_PAINT-ON');\n };\n\n Cea608Channel.prototype.ccTR = function ccTR() {\n // Text Restart in text mode (not supported, however)\n cea_608_parser_logger.log('INFO', 'TR');\n this.setMode('MODE_TEXT');\n };\n\n Cea608Channel.prototype.ccRTD = function ccRTD() {\n // Resume Text Display in Text mode (not supported, however)\n cea_608_parser_logger.log('INFO', 'RTD');\n this.setMode('MODE_TEXT');\n };\n\n Cea608Channel.prototype.ccEDM = function ccEDM() {\n // Erase Displayed Memory\n cea_608_parser_logger.log('INFO', 'EDM - Erase Displayed Memory');\n this.displayedMemory.reset();\n this.outputDataUpdate(true);\n };\n\n Cea608Channel.prototype.ccCR = function ccCR() {\n // Carriage Return\n cea_608_parser_logger.log('CR - Carriage Return');\n this.writeScreen.rollUp();\n this.outputDataUpdate(true);\n };\n\n Cea608Channel.prototype.ccENM = function ccENM() {\n // Erase Non-Displayed Memory\n cea_608_parser_logger.log('INFO', 'ENM - Erase Non-displayed Memory');\n this.nonDisplayedMemory.reset();\n };\n\n Cea608Channel.prototype.ccEOC = function ccEOC() {\n // End of Caption (Flip Memories)\n cea_608_parser_logger.log('INFO', 'EOC - End Of Caption');\n if (this.mode === 'MODE_POP-ON') {\n var tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n cea_608_parser_logger.log('TEXT', 'DISP: ' + this.displayedMemory.getDisplayText());\n }\n this.outputDataUpdate(true);\n };\n\n Cea608Channel.prototype.ccTO = function ccTO(nrCols) {\n // Tab Offset 1,2, or 3 columns\n cea_608_parser_logger.log('INFO', 'TO(' + nrCols + ') - Tab Offset');\n this.writeScreen.moveCursor(nrCols);\n };\n\n Cea608Channel.prototype.ccMIDROW = function ccMIDROW(secondByte) {\n // Parse MIDROW command\n var styles = { flash: false };\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n if (!styles.italics) {\n var colorIndex = Math.floor(secondByte / 2) - 0x10;\n var colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = 'white';\n }\n cea_608_parser_logger.log('INFO', 'MIDROW: ' + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n };\n\n Cea608Channel.prototype.outputDataUpdate = function outputDataUpdate() {\n var dispatch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var t = cea_608_parser_logger.time;\n if (t === null) return;\n\n if (this.outputFilter) {\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n // Start of a new cue\n this.cueStartTime = t;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen);\n if (dispatch === true && this.outputFilter.dispatchCue) this.outputFilter.dispatchCue();\n }\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : t;\n }\n }\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n };\n\n Cea608Channel.prototype.cueSplitAtTime = function cueSplitAtTime(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n\n this.cueStartTime = t;\n }\n }\n };\n\n return Cea608Channel;\n}();\n\nvar Cea608Parser = function () {\n function Cea608Parser(field, out1, out2) {\n cea_608_parser__classCallCheck(this, Cea608Parser);\n\n this.field = field || 1;\n this.outputs = [out1, out2];\n this.channels = [new Cea608Channel(1, out1), new Cea608Channel(2, out2)];\n this.currChNr = -1; // Will be 1 or 2\n this.lastCmdA = null; // First byte of last command\n this.lastCmdB = null; // Second byte of last command\n this.bufferedData = [];\n this.startTime = null;\n this.lastTime = null;\n this.dataCounters = { 'padding': 0, 'char': 0, 'cmd': 0, 'other': 0 };\n }\n\n Cea608Parser.prototype.getHandler = function getHandler(index) {\n return this.channels[index].getHandler();\n };\n\n Cea608Parser.prototype.setHandler = function setHandler(index, newHandler) {\n this.channels[index].setHandler(newHandler);\n };\n\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */\n\n\n Cea608Parser.prototype.addData = function addData(t, byteList) {\n var cmdFound = void 0,\n a = void 0,\n b = void 0,\n charsFound = false;\n\n this.lastTime = t;\n cea_608_parser_logger.setTime(t);\n\n for (var i = 0; i < byteList.length; i += 2) {\n a = byteList[i] & 0x7f;\n b = byteList[i + 1] & 0x7f;\n if (a === 0 && b === 0) {\n this.dataCounters.padding += 2;\n continue;\n } else {\n cea_608_parser_logger.log('DATA', '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')');\n }\n cmdFound = this.parseCmd(a, b);\n if (!cmdFound) cmdFound = this.parseMidrow(a, b);\n\n if (!cmdFound) cmdFound = this.parsePAC(a, b);\n\n if (!cmdFound) cmdFound = this.parseBackgroundAttributes(a, b);\n\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n if (charsFound) {\n if (this.currChNr && this.currChNr >= 0) {\n var channel = this.channels[this.currChNr - 1];\n channel.insertChars(charsFound);\n } else {\n cea_608_parser_logger.log('WARNING', 'No channel found yet. TEXT-MODE?');\n }\n }\n }\n if (cmdFound) {\n this.dataCounters.cmd += 2;\n } else if (charsFound) {\n this.dataCounters.char += 2;\n } else {\n this.dataCounters.other += 2;\n cea_608_parser_logger.log('WARNING', 'Couldn\\'t parse cleaned data ' + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]]));\n }\n }\n };\n\n /**\n * Parse Command.\n * @returns {Boolean} Tells if a command was found\n */\n\n\n Cea608Parser.prototype.parseCmd = function parseCmd(a, b) {\n var chNr = null;\n\n var cond1 = (a === 0x14 || a === 0x1C) && b >= 0x20 && b <= 0x2F;\n var cond2 = (a === 0x17 || a === 0x1F) && b >= 0x21 && b <= 0x23;\n if (!(cond1 || cond2)) return false;\n\n if (a === this.lastCmdA && b === this.lastCmdB) {\n this.lastCmdA = null;\n this.lastCmdB = null; // Repeated commands are dropped (once)\n cea_608_parser_logger.log('DEBUG', 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped');\n return true;\n }\n\n if (a === 0x14 || a === 0x17) chNr = 1;else chNr = 2; // (a === 0x1C || a=== 0x1f)\n\n var channel = this.channels[chNr - 1];\n\n if (a === 0x14 || a === 0x1C) {\n if (b === 0x20) channel.ccRCL();else if (b === 0x21) channel.ccBS();else if (b === 0x22) channel.ccAOF();else if (b === 0x23) channel.ccAON();else if (b === 0x24) channel.ccDER();else if (b === 0x25) channel.ccRU(2);else if (b === 0x26) channel.ccRU(3);else if (b === 0x27) channel.ccRU(4);else if (b === 0x28) channel.ccFON();else if (b === 0x29) channel.ccRDC();else if (b === 0x2A) channel.ccTR();else if (b === 0x2B) channel.ccRTD();else if (b === 0x2C) channel.ccEDM();else if (b === 0x2D) channel.ccCR();else if (b === 0x2E) channel.ccENM();else if (b === 0x2F) channel.ccEOC();\n } else {\n // a == 0x17 || a == 0x1F\n channel.ccTO(b - 0x20);\n }\n this.lastCmdA = a;\n this.lastCmdB = b;\n this.currChNr = chNr;\n return true;\n };\n\n /**\n * Parse midrow styling command\n * @returns {Boolean}\n */\n\n\n Cea608Parser.prototype.parseMidrow = function parseMidrow(a, b) {\n var chNr = null;\n\n if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {\n if (a === 0x11) chNr = 1;else chNr = 2;\n\n if (chNr !== this.currChNr) {\n cea_608_parser_logger.log('ERROR', 'Mismatch channel in midrow parsing');\n return false;\n }\n var channel = this.channels[chNr - 1];\n channel.ccMIDROW(b);\n cea_608_parser_logger.log('DEBUG', 'MIDROW (' + numArrayToHexArray([a, b]) + ')');\n return true;\n }\n return false;\n };\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */\n\n\n Cea608Parser.prototype.parsePAC = function parsePAC(a, b) {\n var chNr = null;\n var row = null;\n\n var case1 = (a >= 0x11 && a <= 0x17 || a >= 0x19 && a <= 0x1F) && b >= 0x40 && b <= 0x7F;\n var case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5F;\n if (!(case1 || case2)) return false;\n\n if (a === this.lastCmdA && b === this.lastCmdB) {\n this.lastCmdA = null;\n this.lastCmdB = null;\n return true; // Repeated commands are dropped (once)\n }\n\n chNr = a <= 0x17 ? 1 : 2;\n\n if (b >= 0x40 && b <= 0x5F) {\n row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];\n } else {\n // 0x60 <= b <= 0x7F\n row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n var pacData = this.interpretPAC(row, b);\n var channel = this.channels[chNr - 1];\n channel.setPAC(pacData);\n this.lastCmdA = a;\n this.lastCmdB = b;\n this.currChNr = chNr;\n return true;\n };\n\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns {Object} pacData with style parameters.\n */\n\n\n Cea608Parser.prototype.interpretPAC = function interpretPAC(row, byte) {\n var pacIndex = byte;\n var pacData = { color: null, italics: false, indent: null, underline: false, row: row };\n\n if (byte > 0x5F) pacIndex = byte - 0x60;else pacIndex = byte - 0x40;\n\n pacData.underline = (pacIndex & 1) === 1;\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;\n }\n return pacData; // Note that row has zero offset. The spec uses 1.\n };\n\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n\n\n Cea608Parser.prototype.parseChars = function parseChars(a, b) {\n var channelNr = null,\n charCodes = null,\n charCode1 = null;\n\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n if (charCode1 >= 0x11 && charCode1 <= 0x13) {\n // Special character\n var oneCode = b;\n if (charCode1 === 0x11) oneCode = b + 0x50;else if (charCode1 === 0x12) oneCode = b + 0x70;else oneCode = b + 0x90;\n\n cea_608_parser_logger.log('INFO', 'Special char \\'' + getCharForByte(oneCode) + '\\' in channel ' + channelNr);\n charCodes = [oneCode];\n } else if (a >= 0x20 && a <= 0x7f) {\n charCodes = b === 0 ? [a] : [a, b];\n }\n if (charCodes) {\n var hexCodes = numArrayToHexArray(charCodes);\n cea_608_parser_logger.log('DEBUG', 'Char codes = ' + hexCodes.join(','));\n this.lastCmdA = null;\n this.lastCmdB = null;\n }\n return charCodes;\n };\n\n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns{Boolean} Tells if background attributes are found\n */\n\n\n Cea608Parser.prototype.parseBackgroundAttributes = function parseBackgroundAttributes(a, b) {\n var bkgData = void 0,\n index = void 0,\n chNr = void 0,\n channel = void 0;\n\n var case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;\n var case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;\n if (!(case1 || case2)) return false;\n\n bkgData = {};\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b - 0x20) / 2);\n bkgData.background = backgroundColors[index];\n if (b % 2 === 1) bkgData.background = bkgData.background + '_semi';\n } else if (b === 0x2d) {\n bkgData.background = 'transparent';\n } else {\n bkgData.foreground = 'black';\n if (b === 0x2f) bkgData.underline = true;\n }\n chNr = a < 0x18 ? 1 : 2;\n channel = this.channels[chNr - 1];\n channel.setBkgData(bkgData);\n this.lastCmdA = null;\n this.lastCmdB = null;\n return true;\n };\n\n /**\n * Reset state of parser and its channels.\n */\n\n\n Cea608Parser.prototype.reset = function reset() {\n for (var i = 0; i < this.channels.length; i++) {\n if (this.channels[i]) this.channels[i].reset();\n }\n this.lastCmdA = null;\n this.lastCmdB = null;\n };\n\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n\n\n Cea608Parser.prototype.cueSplitAtTime = function cueSplitAtTime(t) {\n for (var i = 0; i < this.channels.length; i++) {\n if (this.channels[i]) this.channels[i].cueSplitAtTime(t);\n }\n };\n\n return Cea608Parser;\n}();\n\n/* harmony default export */ var cea_608_parser = (Cea608Parser);\n// CONCATENATED MODULE: ./src/utils/output-filter.js\nfunction output_filter__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OutputFilter = function () {\n function OutputFilter(timelineController, track) {\n output_filter__classCallCheck(this, OutputFilter);\n\n this.timelineController = timelineController;\n this.track = track;\n this.startTime = null;\n this.endTime = null;\n this.screen = null;\n }\n\n OutputFilter.prototype.dispatchCue = function dispatchCue() {\n if (this.startTime === null) return;\n\n this.timelineController.addCues('textTrack' + this.track, this.startTime, this.endTime, this.screen);\n this.startTime = null;\n };\n\n OutputFilter.prototype.newCue = function newCue(startTime, endTime, screen) {\n if (this.startTime === null || this.startTime > startTime) this.startTime = startTime;\n\n this.endTime = endTime;\n this.screen = screen;\n this.timelineController.createCaptionsTrack(this.track);\n };\n\n return OutputFilter;\n}();\n\n/* harmony default export */ var output_filter = (OutputFilter);\n// CONCATENATED MODULE: ./src/utils/webvtt-parser.js\n\n\n\n// String.prototype.startsWith is not supported in IE11\nvar startsWith = function startsWith(inputString, searchString, position) {\n return inputString.substr(position || 0, searchString.length) === searchString;\n};\n\nvar cueString2millis = function cueString2millis(timeString) {\n var ts = parseInt(timeString.substr(-3));\n var secs = parseInt(timeString.substr(-6, 2));\n var mins = parseInt(timeString.substr(-9, 2));\n var hours = timeString.length > 9 ? parseInt(timeString.substr(0, timeString.indexOf(':'))) : 0;\n\n if (isNaN(ts) || isNaN(secs) || isNaN(mins) || isNaN(hours)) return -1;\n\n ts += 1000 * secs;\n ts += 60 * 1000 * mins;\n ts += 60 * 60 * 1000 * hours;\n\n return ts;\n};\n\n// From https://github.com/darkskyapp/string-hash\nvar hash = function hash(text) {\n var hash = 5381;\n var i = text.length;\n while (i) {\n hash = hash * 33 ^ text.charCodeAt(--i);\n }return (hash >>> 0).toString();\n};\n\nvar calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) {\n var currCC = vttCCs[cc];\n var prevCC = vttCCs[currCC.prevCC];\n\n // This is the first discontinuity or cues have been processed since the last discontinuity\n // Offset = current discontinuity time\n if (!prevCC || !prevCC.new && currCC.new) {\n vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n currCC.new = false;\n return;\n }\n\n // There have been discontinuities since cues were last parsed.\n // Offset = time elapsed\n while (prevCC && prevCC.new) {\n vttCCs.ccOffset += currCC.start - prevCC.start;\n currCC.new = false;\n currCC = prevCC;\n prevCC = vttCCs[currCC.prevCC];\n }\n\n vttCCs.presentationOffset = presentationTime;\n};\n\nvar WebVTTParser = {\n parse: function parse(vttByteArray, syncPTS, vttCCs, cc, callBack, errorCallBack) {\n // Convert byteArray into string, replacing any somewhat exotic linefeeds with \"\\n\", then split on that character.\n var re = /\\r\\n|\\n\\r|\\n|\\r/g;\n // Uint8Array.prototype.reduce is not implemented in IE11\n var vttLines = Object(id3[\"b\" /* utf8ArrayToStr */])(new Uint8Array(vttByteArray)).trim().replace(re, '\\n').split('\\n');\n\n var cueTime = '00:00.000';\n var mpegTs = 0;\n var localTime = 0;\n var presentationTime = 0;\n var cues = [];\n var parsingError = void 0;\n var inHeader = true;\n // let VTTCue = VTTCue || window.TextTrackCue;\n\n // Create parser object using VTTCue with TextTrackCue fallback on certain browsers.\n var parser = new vttparser();\n\n parser.oncue = function (cue) {\n // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline.\n var currCC = vttCCs[cc];\n var cueOffset = vttCCs.ccOffset;\n\n // Update offsets for new discontinuities\n if (currCC && currCC.new) {\n if (localTime !== undefined) {\n // When local time is provided, offset = discontinuity start time - local time\n cueOffset = vttCCs.ccOffset = currCC.start;\n } else {\n calculateOffset(vttCCs, cc, presentationTime);\n }\n }\n\n if (presentationTime) {\n // If we have MPEGTS, offset = presentation time + discontinuity offset\n cueOffset = presentationTime + vttCCs.ccOffset - vttCCs.presentationOffset;\n }\n\n cue.startTime += cueOffset - localTime;\n cue.endTime += cueOffset - localTime;\n\n // Create a unique hash id for a cue based on start/end times and text.\n // This helps timeline-controller to avoid showing repeated captions.\n cue.id = hash(cue.startTime.toString()) + hash(cue.endTime.toString()) + hash(cue.text);\n\n // Fix encoding of special characters. TODO: Test with all sorts of weird characters.\n cue.text = decodeURIComponent(encodeURIComponent(cue.text));\n if (cue.endTime > 0) cues.push(cue);\n };\n\n parser.onparsingerror = function (e) {\n parsingError = e;\n };\n\n parser.onflush = function () {\n if (parsingError && errorCallBack) {\n errorCallBack(parsingError);\n return;\n }\n callBack(cues);\n };\n\n // Go through contents line by line.\n vttLines.forEach(function (line) {\n if (inHeader) {\n // Look for X-TIMESTAMP-MAP in header.\n if (startsWith(line, 'X-TIMESTAMP-MAP=')) {\n // Once found, no more are allowed anyway, so stop searching.\n inHeader = false;\n // Extract LOCAL and MPEGTS.\n line.substr(16).split(',').forEach(function (timestamp) {\n if (startsWith(timestamp, 'LOCAL:')) cueTime = timestamp.substr(6);else if (startsWith(timestamp, 'MPEGTS:')) mpegTs = parseInt(timestamp.substr(7));\n });\n try {\n // Calculate subtitle offset in milliseconds.\n // If sync PTS is less than zero, we have a 33-bit wraparound, which is fixed by adding 2^33 = 8589934592.\n syncPTS = syncPTS < 0 ? syncPTS + 8589934592 : syncPTS;\n // Adjust MPEGTS by sync PTS.\n mpegTs -= syncPTS;\n // Convert cue time to seconds\n localTime = cueString2millis(cueTime) / 1000;\n // Convert MPEGTS to seconds from 90kHz.\n presentationTime = mpegTs / 90000;\n\n if (localTime === -1) parsingError = new Error('Malformed X-TIMESTAMP-MAP: ' + line);\n } catch (e) {\n parsingError = new Error('Malformed X-TIMESTAMP-MAP: ' + line);\n }\n // Return without parsing X-TIMESTAMP-MAP line.\n return;\n } else if (line === '') {\n inHeader = false;\n }\n }\n // Parse line by default.\n parser.parse(line + '\\n');\n });\n\n parser.flush();\n }\n};\n\n/* harmony default export */ var webvtt_parser = (WebVTTParser);\n// CONCATENATED MODULE: ./src/controller/timeline-controller.js\nfunction timeline_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction timeline_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction timeline_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * Timeline Controller\n*/\n\n\n\n\n\n\n\n\n\nfunction reuseVttTextTrack(inUseTrack, manifestTrack) {\n return inUseTrack && inUseTrack.label === manifestTrack.name && !(inUseTrack.textTrack1 || inUseTrack.textTrack2);\n}\n\nfunction intersection(x1, x2, y1, y2) {\n return Math.min(x2, y2) - Math.max(x1, y1);\n}\n\nvar timeline_controller_TimelineController = function (_EventHandler) {\n timeline_controller__inherits(TimelineController, _EventHandler);\n\n function TimelineController(hls) {\n timeline_controller__classCallCheck(this, TimelineController);\n\n var _this = timeline_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHING, events[\"a\" /* default */].MEDIA_DETACHING, events[\"a\" /* default */].FRAG_PARSING_USERDATA, events[\"a\" /* default */].FRAG_DECRYPTED, events[\"a\" /* default */].MANIFEST_LOADING, events[\"a\" /* default */].MANIFEST_LOADED, events[\"a\" /* default */].FRAG_LOADED, events[\"a\" /* default */].LEVEL_SWITCHING, events[\"a\" /* default */].INIT_PTS_FOUND));\n\n _this.hls = hls;\n _this.config = hls.config;\n _this.enabled = true;\n _this.Cues = hls.config.cueHandler;\n _this.textTracks = [];\n _this.tracks = [];\n _this.unparsedVttFrags = [];\n _this.initPTS = undefined;\n _this.cueRanges = [];\n\n if (_this.config.enableCEA708Captions) {\n var channel1 = new output_filter(_this, 1);\n var channel2 = new output_filter(_this, 2);\n\n _this.cea608Parser = new cea_608_parser(0, channel1, channel2);\n }\n return _this;\n }\n\n TimelineController.prototype.addCues = function addCues(channel, startTime, endTime, screen) {\n // skip cues which overlap more than 50% with previously parsed time ranges\n var ranges = this.cueRanges;\n var merged = false;\n for (var i = ranges.length; i--;) {\n var cueRange = ranges[i];\n var overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);\n if (overlap >= 0) {\n cueRange[0] = Math.min(cueRange[0], startTime);\n cueRange[1] = Math.max(cueRange[1], endTime);\n merged = true;\n if (overlap / (endTime - startTime) > 0.5) return;\n }\n }\n if (!merged) ranges.push([startTime, endTime]);\n\n this.Cues.newCue(this[channel], startTime, endTime, screen);\n };\n\n // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n\n\n TimelineController.prototype.onInitPtsFound = function onInitPtsFound(data) {\n var _this2 = this;\n\n if (typeof this.initPTS === 'undefined') this.initPTS = data.initPTS;\n\n // Due to asynchrony, initial PTS may arrive later than the first VTT fragments are loaded.\n // Parse any unparsed fragments upon receiving the initial PTS.\n if (this.unparsedVttFrags.length) {\n this.unparsedVttFrags.forEach(function (frag) {\n _this2.onFragLoaded(frag);\n });\n this.unparsedVttFrags = [];\n }\n };\n\n TimelineController.prototype.getExistingTrack = function getExistingTrack(channelNumber) {\n var media = this.media;\n if (media) {\n for (var i = 0; i < media.textTracks.length; i++) {\n var textTrack = media.textTracks[i];\n var propName = 'textTrack' + channelNumber;\n if (textTrack[propName] === true) return textTrack;\n }\n }\n return null;\n };\n\n TimelineController.prototype.createCaptionsTrack = function createCaptionsTrack(track) {\n var trackVar = 'textTrack' + track;\n if (!this[trackVar]) {\n // Enable reuse of existing text track.\n var existingTrack = this.getExistingTrack(track);\n if (!existingTrack) {\n var textTrack = this.createTextTrack('captions', this.config['captionsTextTrack' + track + 'Label'], this.config['captionsTextTrack' + track + 'LanguageCode']);\n if (textTrack) {\n textTrack[trackVar] = true;\n this[trackVar] = textTrack;\n }\n } else {\n this[trackVar] = existingTrack;\n clearCurrentCues(this[trackVar]);\n\n sendAddTrackEvent(this[trackVar], this.media);\n }\n }\n };\n\n TimelineController.prototype.createTextTrack = function createTextTrack(kind, label, lang) {\n var media = this.media;\n if (media) return media.addTextTrack(kind, label, lang);\n };\n\n TimelineController.prototype.destroy = function destroy() {\n event_handler.prototype.destroy.call(this);\n };\n\n TimelineController.prototype.onMediaAttaching = function onMediaAttaching(data) {\n this.media = data.media;\n this._cleanTracks();\n };\n\n TimelineController.prototype.onMediaDetaching = function onMediaDetaching() {\n clearCurrentCues(this.textTrack1);\n clearCurrentCues(this.textTrack2);\n };\n\n TimelineController.prototype.onManifestLoading = function onManifestLoading() {\n this.lastSn = -1; // Detect discontiguity in fragment parsing\n this.prevCC = -1;\n this.vttCCs = { ccOffset: 0, presentationOffset: 0 }; // Detect discontinuity in subtitle manifests\n this._cleanTracks();\n };\n\n TimelineController.prototype._cleanTracks = function _cleanTracks() {\n // clear outdated subtitles\n var media = this.media;\n if (media) {\n var textTracks = media.textTracks;\n if (textTracks) {\n for (var i = 0; i < textTracks.length; i++) {\n clearCurrentCues(textTracks[i]);\n }\n }\n }\n };\n\n TimelineController.prototype.onManifestLoaded = function onManifestLoaded(data) {\n var _this3 = this;\n\n this.textTracks = [];\n this.unparsedVttFrags = this.unparsedVttFrags || [];\n this.initPTS = undefined;\n this.cueRanges = [];\n\n if (this.config.enableWebVTT) {\n this.tracks = data.subtitles || [];\n var inUseTracks = this.media ? this.media.textTracks : [];\n\n this.tracks.forEach(function (track, index) {\n var textTrack = void 0;\n if (index < inUseTracks.length) {\n var inUseTrack = inUseTracks[index];\n // Reuse tracks with the same label, but do not reuse 608/708 tracks\n if (reuseVttTextTrack(inUseTrack, track)) textTrack = inUseTrack;\n }\n if (!textTrack) textTrack = _this3.createTextTrack('subtitles', track.name, track.lang);\n\n if (track.default) textTrack.mode = _this3.hls.subtitleDisplay ? 'showing' : 'hidden';else textTrack.mode = 'disabled';\n\n _this3.textTracks.push(textTrack);\n });\n }\n };\n\n TimelineController.prototype.onLevelSwitching = function onLevelSwitching() {\n this.enabled = this.hls.currentLevel.closedCaptions !== 'NONE';\n };\n\n TimelineController.prototype.onFragLoaded = function onFragLoaded(data) {\n var frag = data.frag,\n payload = data.payload;\n if (frag.type === 'main') {\n var sn = frag.sn;\n // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack\n if (sn !== this.lastSn + 1) {\n var cea608Parser = this.cea608Parser;\n if (cea608Parser) cea608Parser.reset();\n }\n this.lastSn = sn;\n } // eslint-disable-line brace-style\n // If fragment is subtitle type, parse as WebVTT.\n else if (frag.type === 'subtitle') {\n if (payload.byteLength) {\n // We need an initial synchronisation PTS. Store fragments as long as none has arrived.\n if (typeof this.initPTS === 'undefined') {\n this.unparsedVttFrags.push(data);\n return;\n }\n\n var decryptData = frag.decryptdata;\n // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait.\n if (decryptData == null || decryptData.key == null || decryptData.method !== 'AES-128') this._parseVTTs(frag, payload);\n } else {\n // In case there is no payload, finish unsuccessfully.\n this.hls.trigger(events[\"a\" /* default */].SUBTITLE_FRAG_PROCESSED, { success: false, frag: frag });\n }\n }\n };\n\n TimelineController.prototype._parseVTTs = function _parseVTTs(frag, payload) {\n var vttCCs = this.vttCCs;\n if (!vttCCs[frag.cc]) {\n vttCCs[frag.cc] = { start: frag.start, prevCC: this.prevCC, new: true };\n this.prevCC = frag.cc;\n }\n var textTracks = this.textTracks,\n hls = this.hls;\n\n // Parse the WebVTT file contents.\n webvtt_parser.parse(payload, this.initPTS, vttCCs, frag.cc, function (cues) {\n var currentTrack = textTracks[frag.trackId];\n // WebVTTParser.parse is an async method and if the currently selected text track mode is set to \"disabled\"\n // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null\n // and trying to access getCueById method of cues will throw an exception\n if (currentTrack.mode === 'disabled') {\n hls.trigger(events[\"a\" /* default */].SUBTITLE_FRAG_PROCESSED, { success: false, frag: frag });\n return;\n }\n // Add cues and trigger event with success true.\n cues.forEach(function (cue) {\n // Sometimes there are cue overlaps on segmented vtts so the same\n // cue can appear more than once in different vtt files.\n // This avoid showing duplicated cues with same timecode and text.\n if (!currentTrack.cues.getCueById(cue.id)) {\n try {\n currentTrack.addCue(cue);\n } catch (err) {\n var textTrackCue = new window.TextTrackCue(cue.startTime, cue.endTime, cue.text);\n textTrackCue.id = cue.id;\n currentTrack.addCue(textTrackCue);\n }\n }\n });\n hls.trigger(events[\"a\" /* default */].SUBTITLE_FRAG_PROCESSED, { success: true, frag: frag });\n }, function (e) {\n // Something went wrong while parsing. Trigger event with success false.\n logger[\"b\" /* logger */].log('Failed to parse VTT cue: ' + e);\n hls.trigger(events[\"a\" /* default */].SUBTITLE_FRAG_PROCESSED, { success: false, frag: frag });\n });\n };\n\n TimelineController.prototype.onFragDecrypted = function onFragDecrypted(data) {\n var decryptedData = data.payload,\n frag = data.frag;\n\n if (frag.type === 'subtitle') {\n if (typeof this.initPTS === 'undefined') {\n this.unparsedVttFrags.push(data);\n return;\n }\n\n this._parseVTTs(frag, decryptedData);\n }\n };\n\n TimelineController.prototype.onFragParsingUserdata = function onFragParsingUserdata(data) {\n // push all of the CEA-708 messages into the interpreter\n // immediately. It will create the proper timestamps based on our PTS value\n if (this.enabled && this.config.enableCEA708Captions) {\n for (var i = 0; i < data.samples.length; i++) {\n var ccdatas = this.extractCea608Data(data.samples[i].bytes);\n this.cea608Parser.addData(data.samples[i].pts, ccdatas);\n }\n }\n };\n\n TimelineController.prototype.extractCea608Data = function extractCea608Data(byteArray) {\n var count = byteArray[0] & 31;\n var position = 2;\n var tmpByte = void 0,\n ccbyte1 = void 0,\n ccbyte2 = void 0,\n ccValid = void 0,\n ccType = void 0;\n var actualCCBytes = [];\n\n for (var j = 0; j < count; j++) {\n tmpByte = byteArray[position++];\n ccbyte1 = 0x7F & byteArray[position++];\n ccbyte2 = 0x7F & byteArray[position++];\n ccValid = (4 & tmpByte) !== 0;\n ccType = 3 & tmpByte;\n\n if (ccbyte1 === 0 && ccbyte2 === 0) continue;\n\n if (ccValid) {\n if (ccType === 0) {\n // || ccType === 1\n actualCCBytes.push(ccbyte1);\n actualCCBytes.push(ccbyte2);\n }\n }\n }\n return actualCCBytes;\n };\n\n return TimelineController;\n}(event_handler);\n\n/* harmony default export */ var timeline_controller = (timeline_controller_TimelineController);\n// CONCATENATED MODULE: ./src/controller/subtitle-track-controller.js\nvar subtitle_track_controller__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction subtitle_track_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction subtitle_track_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction subtitle_track_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * subtitle track controller\n*/\n\n\n\n\n\nfunction filterSubtitleTracks(textTrackList) {\n var tracks = [];\n for (var i = 0; i < textTrackList.length; i++) {\n if (textTrackList[i].kind === 'subtitles') tracks.push(textTrackList[i]);\n }\n return tracks;\n}\n\nvar subtitle_track_controller_SubtitleTrackController = function (_EventHandler) {\n subtitle_track_controller__inherits(SubtitleTrackController, _EventHandler);\n\n function SubtitleTrackController(hls) {\n subtitle_track_controller__classCallCheck(this, SubtitleTrackController);\n\n var _this = subtitle_track_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHED, events[\"a\" /* default */].MEDIA_DETACHING, events[\"a\" /* default */].MANIFEST_LOADING, events[\"a\" /* default */].MANIFEST_LOADED, events[\"a\" /* default */].SUBTITLE_TRACK_LOADED));\n\n _this.tracks = [];\n _this.trackId = -1;\n _this.media = undefined;\n\n /**\n * @member {boolean} subtitleDisplay Enable/disable subtitle display rendering\n */\n _this.subtitleDisplay = false;\n return _this;\n }\n\n SubtitleTrackController.prototype._onTextTracksChanged = function _onTextTracksChanged() {\n // Media is undefined when switching streams via loadSource()\n if (!this.media) return;\n\n var trackId = -1;\n var tracks = filterSubtitleTracks(this.media.textTracks);\n for (var id = 0; id < tracks.length; id++) {\n if (tracks[id].mode === 'hidden') {\n // Do not break in case there is a following track with showing.\n trackId = id;\n } else if (tracks[id].mode === 'showing') {\n trackId = id;\n break;\n }\n }\n\n // Setting current subtitleTrack will invoke code.\n this.subtitleTrack = trackId;\n };\n\n SubtitleTrackController.prototype.destroy = function destroy() {\n event_handler.prototype.destroy.call(this);\n };\n\n // Listen for subtitle track change, then extract the current track ID.\n\n\n SubtitleTrackController.prototype.onMediaAttached = function onMediaAttached(data) {\n var _this2 = this;\n\n this.media = data.media;\n if (!this.media) return;\n\n if (this.queuedDefaultTrack !== undefined) {\n this.subtitleTrack = this.queuedDefaultTrack;\n delete this.queuedDefaultTrack;\n }\n\n this.trackChangeListener = this._onTextTracksChanged.bind(this);\n\n this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks);\n if (this.useTextTrackPolling) {\n this.subtitlePollingInterval = setInterval(function () {\n _this2.trackChangeListener();\n }, 500);\n } else {\n this.media.textTracks.addEventListener('change', this.trackChangeListener);\n }\n };\n\n SubtitleTrackController.prototype.onMediaDetaching = function onMediaDetaching() {\n if (!this.media) return;\n\n if (this.useTextTrackPolling) clearInterval(this.subtitlePollingInterval);else this.media.textTracks.removeEventListener('change', this.trackChangeListener);\n\n this.media = undefined;\n };\n\n // Reset subtitle tracks on manifest loading\n\n\n SubtitleTrackController.prototype.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.trackId = -1;\n };\n\n // Fired whenever a new manifest is loaded.\n\n\n SubtitleTrackController.prototype.onManifestLoaded = function onManifestLoaded(data) {\n var _this3 = this;\n\n var tracks = data.subtitles || [];\n this.tracks = tracks;\n this.trackId = -1;\n this.hls.trigger(events[\"a\" /* default */].SUBTITLE_TRACKS_UPDATED, { subtitleTracks: tracks });\n\n // loop through available subtitle tracks and autoselect default if needed\n // TODO: improve selection logic to handle forced, etc\n tracks.forEach(function (track) {\n if (track.default) {\n // setting this.subtitleTrack will trigger internal logic\n // if media has not been attached yet, it will fail\n // we keep a reference to the default track id\n // and we'll set subtitleTrack when onMediaAttached is triggered\n if (_this3.media) _this3.subtitleTrack = track.id;else _this3.queuedDefaultTrack = track.id;\n }\n });\n };\n\n // Trigger subtitle track playlist reload.\n\n\n SubtitleTrackController.prototype.onTick = function onTick() {\n var trackId = this.trackId;\n var subtitleTrack = this.tracks[trackId];\n if (!subtitleTrack) return;\n\n var details = subtitleTrack.details;\n // check if we need to load playlist for this subtitle Track\n if (details === undefined || details.live === true) {\n // track not retrieved yet, or live playlist we need to (re)load it\n logger[\"b\" /* logger */].log('(re)loading playlist for subtitle track ' + trackId);\n this.hls.trigger(events[\"a\" /* default */].SUBTITLE_TRACK_LOADING, { url: subtitleTrack.url, id: trackId });\n }\n };\n\n SubtitleTrackController.prototype.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(data) {\n var _this4 = this;\n\n if (data.id < this.tracks.length) {\n logger[\"b\" /* logger */].log('subtitle track ' + data.id + ' loaded');\n this.tracks[data.id].details = data.details;\n // check if current playlist is a live playlist\n if (data.details.live && !this.timer) {\n // if live playlist we will have to reload it periodically\n // set reload period to playlist target duration\n this.timer = setInterval(function () {\n _this4.onTick();\n }, 1000 * data.details.targetduration, this);\n }\n if (!data.details.live && this.timer) {\n // playlist is not live and timer is armed : stopping it\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n };\n\n /** get alternate subtitle tracks list from playlist **/\n\n\n SubtitleTrackController.prototype.setSubtitleTrackInternal = function setSubtitleTrackInternal(newId) {\n // check if level idx is valid\n if (newId < -1 || newId >= this.tracks.length) return;\n\n // stopping live reloading timer if any\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n\n var textTracks = filterSubtitleTracks(this.media.textTracks);\n\n // hide currently enabled subtitle track\n if (this.trackId !== -1) textTracks[this.trackId].mode = 'disabled';\n\n this.trackId = newId;\n logger[\"b\" /* logger */].log('switching to subtitle track ' + newId);\n this.hls.trigger(events[\"a\" /* default */].SUBTITLE_TRACK_SWITCH, { id: newId });\n\n if (newId === -1) return;\n\n var subtitleTrack = this.tracks[newId];\n if (newId < textTracks.length) textTracks[newId].mode = this.subtitleDisplay ? 'showing' : 'hidden';\n\n // check if we need to load playlist for this subtitle Track\n var details = subtitleTrack.details;\n if (details === undefined || details.live === true) {\n // track not retrieved yet, or live playlist we need to (re)load it\n logger[\"b\" /* logger */].log('(re)loading playlist for subtitle track ' + newId);\n this.hls.trigger(events[\"a\" /* default */].SUBTITLE_TRACK_LOADING, { url: subtitleTrack.url, id: newId });\n }\n };\n\n subtitle_track_controller__createClass(SubtitleTrackController, [{\n key: 'subtitleTracks',\n get: function get() {\n return this.tracks;\n }\n\n /** get index of the selected subtitle track (index in subtitle track lists) **/\n\n }, {\n key: 'subtitleTrack',\n get: function get() {\n return this.trackId;\n }\n\n /** select a subtitle track, based on its index in subtitle track lists**/\n ,\n set: function set(subtitleTrackId) {\n if (this.trackId !== subtitleTrackId) {\n // || this.tracks[subtitleTrackId].details === undefined) {\n this.setSubtitleTrackInternal(subtitleTrackId);\n }\n }\n }]);\n\n return SubtitleTrackController;\n}(event_handler);\n\n/* harmony default export */ var subtitle_track_controller = (subtitle_track_controller_SubtitleTrackController);\n// EXTERNAL MODULE: ./src/crypt/decrypter.js + 3 modules\nvar decrypter = __webpack_require__(5);\n\n// CONCATENATED MODULE: ./src/controller/subtitle-stream-controller.js\nfunction subtitle_stream_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction subtitle_stream_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction subtitle_stream_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*\n * Subtitle Stream Controller\n*/\n\n\n\n\n\n\nvar subtitle_stream_controller_State = {\n STOPPED: 'STOPPED',\n IDLE: 'IDLE',\n KEY_LOADING: 'KEY_LOADING',\n FRAG_LOADING: 'FRAG_LOADING'\n};\n\nvar subtitle_stream_controller_SubtitleStreamController = function (_TaskLoop) {\n subtitle_stream_controller__inherits(SubtitleStreamController, _TaskLoop);\n\n function SubtitleStreamController(hls) {\n subtitle_stream_controller__classCallCheck(this, SubtitleStreamController);\n\n var _this = subtitle_stream_controller__possibleConstructorReturn(this, _TaskLoop.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHED, events[\"a\" /* default */].ERROR, events[\"a\" /* default */].KEY_LOADED, events[\"a\" /* default */].FRAG_LOADED, events[\"a\" /* default */].SUBTITLE_TRACKS_UPDATED, events[\"a\" /* default */].SUBTITLE_TRACK_SWITCH, events[\"a\" /* default */].SUBTITLE_TRACK_LOADED, events[\"a\" /* default */].SUBTITLE_FRAG_PROCESSED));\n\n _this.config = hls.config;\n _this.vttFragSNsProcessed = {};\n _this.vttFragQueues = undefined;\n _this.currentlyProcessing = null;\n _this.state = subtitle_stream_controller_State.STOPPED;\n _this.currentTrackId = -1;\n _this.decrypter = new decrypter[\"a\" /* default */](hls.observer, hls.config);\n return _this;\n }\n\n SubtitleStreamController.prototype.onHandlerDestroyed = function onHandlerDestroyed() {\n this.state = subtitle_stream_controller_State.STOPPED;\n };\n\n // Remove all queued items and create a new, empty queue for each track.\n\n\n SubtitleStreamController.prototype.clearVttFragQueues = function clearVttFragQueues() {\n var _this2 = this;\n\n this.vttFragQueues = {};\n this.tracks.forEach(function (track) {\n _this2.vttFragQueues[track.id] = [];\n });\n };\n\n // If no frag is being processed and queue isn't empty, initiate processing of next frag in line.\n\n\n SubtitleStreamController.prototype.nextFrag = function nextFrag() {\n if (this.currentlyProcessing === null && this.currentTrackId > -1 && this.vttFragQueues[this.currentTrackId].length) {\n var frag = this.currentlyProcessing = this.vttFragQueues[this.currentTrackId].shift();\n this.fragCurrent = frag;\n this.hls.trigger(events[\"a\" /* default */].FRAG_LOADING, { frag: frag });\n this.state = subtitle_stream_controller_State.FRAG_LOADING;\n }\n };\n\n // When fragment has finished processing, add sn to list of completed if successful.\n\n\n SubtitleStreamController.prototype.onSubtitleFragProcessed = function onSubtitleFragProcessed(data) {\n if (data.success) this.vttFragSNsProcessed[data.frag.trackId].push(data.frag.sn);\n\n this.currentlyProcessing = null;\n this.state = subtitle_stream_controller_State.IDLE;\n this.nextFrag();\n };\n\n SubtitleStreamController.prototype.onMediaAttached = function onMediaAttached() {\n this.state = subtitle_stream_controller_State.IDLE;\n };\n\n // If something goes wrong, procede to next frag, if we were processing one.\n\n\n SubtitleStreamController.prototype.onError = function onError(data) {\n var frag = data.frag;\n // don't handle frag error not related to subtitle fragment\n if (frag && frag.type !== 'subtitle') return;\n\n if (this.currentlyProcessing) {\n this.currentlyProcessing = null;\n this.nextFrag();\n }\n };\n\n SubtitleStreamController.prototype.doTick = function doTick() {\n var _this3 = this;\n\n switch (this.state) {\n case subtitle_stream_controller_State.IDLE:\n var tracks = this.tracks;\n var trackId = this.currentTrackId;\n\n var processedFragSNs = this.vttFragSNsProcessed[trackId],\n fragQueue = this.vttFragQueues[trackId],\n currentFragSN = this.currentlyProcessing ? this.currentlyProcessing.sn : -1;\n\n var alreadyProcessed = function alreadyProcessed(frag) {\n return processedFragSNs.indexOf(frag.sn) > -1;\n };\n\n var alreadyInQueue = function alreadyInQueue(frag) {\n return fragQueue.some(function (fragInQueue) {\n return fragInQueue.sn === frag.sn;\n });\n };\n\n // exit if tracks don't exist\n if (!tracks) break;\n\n var trackDetails;\n\n if (trackId < tracks.length) trackDetails = tracks[trackId].details;\n\n if (typeof trackDetails === 'undefined') break;\n\n // Add all fragments that haven't been, aren't currently being and aren't waiting to be processed, to queue.\n trackDetails.fragments.forEach(function (frag) {\n if (!(alreadyProcessed(frag) || frag.sn === currentFragSN || alreadyInQueue(frag))) {\n // Load key if subtitles are encrypted\n if (frag.decryptdata && frag.decryptdata.uri != null && frag.decryptdata.key == null) {\n logger[\"b\" /* logger */].log('Loading key for ' + frag.sn);\n _this3.state = subtitle_stream_controller_State.KEY_LOADING;\n _this3.hls.trigger(events[\"a\" /* default */].KEY_LOADING, { frag: frag });\n } else {\n // Frags don't know their subtitle track ID, so let's just add that...\n frag.trackId = trackId;\n fragQueue.push(frag);\n _this3.nextFrag();\n }\n }\n });\n }\n };\n\n // Got all new subtitle tracks.\n\n\n SubtitleStreamController.prototype.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(data) {\n var _this4 = this;\n\n logger[\"b\" /* logger */].log('subtitle tracks updated');\n this.tracks = data.subtitleTracks;\n this.clearVttFragQueues();\n this.vttFragSNsProcessed = {};\n this.tracks.forEach(function (track) {\n _this4.vttFragSNsProcessed[track.id] = [];\n });\n };\n\n SubtitleStreamController.prototype.onSubtitleTrackSwitch = function onSubtitleTrackSwitch(data) {\n this.currentTrackId = data.id;\n if (this.currentTrackId === -1) return;\n\n // Check if track was already loaded and if so make sure we finish\n // downloading its frags, if not all have been downloaded yet\n var currentTrack = this.tracks[this.currentTrackId];\n var details = currentTrack.details;\n if (details !== undefined) this.tick();\n };\n\n // Got a new set of subtitle fragments.\n\n\n SubtitleStreamController.prototype.onSubtitleTrackLoaded = function onSubtitleTrackLoaded() {\n this.tick();\n };\n\n SubtitleStreamController.prototype.onKeyLoaded = function onKeyLoaded() {\n if (this.state === subtitle_stream_controller_State.KEY_LOADING) {\n this.state = subtitle_stream_controller_State.IDLE;\n this.tick();\n }\n };\n\n SubtitleStreamController.prototype.onFragLoaded = function onFragLoaded(data) {\n var fragCurrent = this.fragCurrent,\n decryptData = data.frag.decryptdata;\n var fragLoaded = data.frag,\n hls = this.hls;\n if (this.state === subtitle_stream_controller_State.FRAG_LOADING && fragCurrent && data.frag.type === 'subtitle' && fragCurrent.sn === data.frag.sn) {\n // check to see if the payload needs to be decrypted\n if (data.payload.byteLength > 0 && decryptData != null && decryptData.key != null && decryptData.method === 'AES-128') {\n var startTime = void 0;\n try {\n startTime = performance.now();\n } catch (error) {\n startTime = Date.now();\n }\n // decrypt the subtitles\n this.decrypter.decrypt(data.payload, decryptData.key.buffer, decryptData.iv.buffer, function (decryptedData) {\n var endTime = void 0;\n try {\n endTime = performance.now();\n } catch (error) {\n endTime = Date.now();\n }\n hls.trigger(events[\"a\" /* default */].FRAG_DECRYPTED, { frag: fragLoaded, payload: decryptedData, stats: { tstart: startTime, tdecrypt: endTime } });\n });\n }\n }\n };\n\n return SubtitleStreamController;\n}(task_loop);\n\n/* harmony default export */ var subtitle_stream_controller = (subtitle_stream_controller_SubtitleStreamController);\n// CONCATENATED MODULE: ./src/controller/eme-controller.js\nvar eme_controller__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction eme_controller__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction eme_controller__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction eme_controller__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * @author Stephan Hesse <disparat@gmail.com> | <tchakabam@gmail.com>\n *\n * DRM support for Hls.js\n */\n\n\n\n\n\n\n\nvar MAX_LICENSE_REQUEST_FAILURES = 3;\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess\n */\nvar KeySystems = {\n WIDEVINE: 'com.widevine.alpha',\n PLAYREADY: 'com.microsoft.playready'\n};\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration\n * @param {Array<string>} audioCodecs List of required audio codecs to support\n * @param {Array<string>} videoCodecs List of required video codecs to support\n * @param {object} drmSystemOptions Optional parameters/requirements for the key-system\n * @returns {Array<MediaSystemConfiguration>} An array of supported configurations\n */\n\nvar createWidevineMediaKeySystemConfigurations = function createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions) {\n /* jshint ignore:line */\n var baseConfig = {\n // initDataTypes: ['keyids', 'mp4'],\n // label: \"\",\n // persistentState: \"not-allowed\", // or \"required\" ?\n // distinctiveIdentifier: \"not-allowed\", // or \"required\" ?\n // sessionTypes: ['temporary'],\n videoCapabilities: [\n // { contentType: 'video/mp4; codecs=\"avc1.42E01E\"' }\n ]\n };\n\n videoCodecs.forEach(function (codec) {\n baseConfig.videoCapabilities.push({\n contentType: 'video/mp4; codecs=\"' + codec + '\"'\n });\n });\n\n return [baseConfig];\n};\n\n/**\n * The idea here is to handle key-system (and their respective platforms) specific configuration differences\n * in order to work with the local requestMediaKeySystemAccess method.\n *\n * We can also rule-out platform-related key-system support at this point by throwing an error or returning null.\n *\n * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum\n * @param {Array<string>} audioCodecs List of required audio codecs to support\n * @param {Array<string>} videoCodecs List of required video codecs to support\n * @returns {Array<MediaSystemConfiguration> | null} A non-empty Array of MediaKeySystemConfiguration objects or `null`\n */\nvar getSupportedMediaKeySystemConfigurations = function getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs) {\n switch (keySystem) {\n case KeySystems.WIDEVINE:\n return createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs);\n default:\n throw Error('Unknown key-system: ' + keySystem);\n }\n};\n\n/**\n * Controller to deal with encrypted media extensions (EME)\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API\n *\n * @class\n * @constructor\n */\n\nvar eme_controller_EMEController = function (_EventHandler) {\n eme_controller__inherits(EMEController, _EventHandler);\n\n /**\n * @constructs\n * @param {Hls} hls Our Hls.js instance\n */\n function EMEController(hls) {\n eme_controller__classCallCheck(this, EMEController);\n\n var _this = eme_controller__possibleConstructorReturn(this, _EventHandler.call(this, hls, events[\"a\" /* default */].MEDIA_ATTACHED, events[\"a\" /* default */].MANIFEST_PARSED));\n\n _this._widevineLicenseUrl = hls.config.widevineLicenseUrl;\n _this._licenseXhrSetup = hls.config.licenseXhrSetup;\n _this._emeEnabled = hls.config.emeEnabled;\n\n _this._requestMediaKeySystemAccess = hls.config.requestMediaKeySystemAccessFunc;\n\n _this._mediaKeysList = [];\n _this._media = null;\n\n _this._hasSetMediaKeys = false;\n _this._isMediaEncrypted = false;\n\n _this._requestLicenseFailureCount = 0;\n return _this;\n }\n\n /**\n *\n * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum\n * @returns {string} License server URL for key-system (if any configured, otherwise causes error)\n */\n\n\n EMEController.prototype.getLicenseServerUrl = function getLicenseServerUrl(keySystem) {\n var url = void 0;\n switch (keySystem) {\n case KeySystems.WIDEVINE:\n url = this._widevineLicenseUrl;\n break;\n default:\n url = null;\n break;\n }\n\n if (!url) {\n logger[\"b\" /* logger */].error('No license server URL configured for key-system \"' + keySystem + '\"');\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].KEY_SYSTEM_ERROR,\n details: errors[\"a\" /* ErrorDetails */].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n }\n\n return url;\n };\n\n /**\n * Requests access object and adds it to our list upon success\n * @private\n * @param {string} keySystem System ID (see `KeySystems`)\n * @param {Array<string>} audioCodecs List of required audio codecs to support\n * @param {Array<string>} videoCodecs List of required video codecs to support\n */\n\n\n EMEController.prototype._attemptKeySystemAccess = function _attemptKeySystemAccess(keySystem, audioCodecs, videoCodecs) {\n var _this2 = this;\n\n // TODO: add other DRM \"options\"\n\n var mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs);\n\n if (!mediaKeySystemConfigs) {\n logger[\"b\" /* logger */].warn('Can not create config for key-system (maybe because platform is not supported):', keySystem);\n return;\n }\n\n logger[\"b\" /* logger */].log('Requesting encrypted media key-system access');\n\n // expecting interface like window.navigator.requestMediaKeySystemAccess\n this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs).then(function (mediaKeySystemAccess) {\n _this2._onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess);\n }).catch(function (err) {\n logger[\"b\" /* logger */].error('Failed to obtain key-system \"' + keySystem + '\" access:', err);\n });\n };\n\n /**\n * Handles obtaining access to a key-system\n *\n * @param {string} keySystem\n * @param {MediaKeySystemAccess} mediaKeySystemAccess https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess\n */\n EMEController.prototype._onMediaKeySystemAccessObtained = function _onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess) {\n var _this3 = this;\n\n logger[\"b\" /* logger */].log('Access for key-system \"' + keySystem + '\" obtained');\n\n var mediaKeysListItem = {\n mediaKeys: null,\n mediaKeysSession: null,\n mediaKeysSessionInitialized: false,\n mediaKeySystemAccess: mediaKeySystemAccess,\n mediaKeySystemDomain: keySystem\n };\n\n this._mediaKeysList.push(mediaKeysListItem);\n\n mediaKeySystemAccess.createMediaKeys().then(function (mediaKeys) {\n mediaKeysListItem.mediaKeys = mediaKeys;\n\n logger[\"b\" /* logger */].log('Media-keys created for key-system \"' + keySystem + '\"');\n\n _this3._onMediaKeysCreated();\n }).catch(function (err) {\n logger[\"b\" /* logger */].error('Failed to create media-keys:', err);\n });\n };\n\n /**\n * Handles key-creation (represents access to CDM). We are going to create key-sessions upon this\n * for all existing keys where no session exists yet.\n */\n\n\n EMEController.prototype._onMediaKeysCreated = function _onMediaKeysCreated() {\n var _this4 = this;\n\n // check for all key-list items if a session exists, otherwise, create one\n this._mediaKeysList.forEach(function (mediaKeysListItem) {\n if (!mediaKeysListItem.mediaKeysSession) {\n mediaKeysListItem.mediaKeysSession = mediaKeysListItem.mediaKeys.createSession();\n _this4._onNewMediaKeySession(mediaKeysListItem.mediaKeysSession);\n }\n });\n };\n\n /**\n *\n * @param {*} keySession\n */\n\n\n EMEController.prototype._onNewMediaKeySession = function _onNewMediaKeySession(keySession) {\n var _this5 = this;\n\n logger[\"b\" /* logger */].log('New key-system session ' + keySession.sessionId);\n\n keySession.addEventListener('message', function (event) {\n _this5._onKeySessionMessage(keySession, event.message);\n }, false);\n };\n\n EMEController.prototype._onKeySessionMessage = function _onKeySessionMessage(keySession, message) {\n logger[\"b\" /* logger */].log('Got EME message event, creating license request');\n\n this._requestLicense(message, function (data) {\n logger[\"b\" /* logger */].log('Received license data, updating key-session');\n keySession.update(data);\n });\n };\n\n EMEController.prototype._onMediaEncrypted = function _onMediaEncrypted(initDataType, initData) {\n logger[\"b\" /* logger */].log('Media is encrypted using \"' + initDataType + '\" init data type');\n\n this._isMediaEncrypted = true;\n this._mediaEncryptionInitDataType = initDataType;\n this._mediaEncryptionInitData = initData;\n\n this._attemptSetMediaKeys();\n this._generateRequestWithPreferredKeySession();\n };\n\n EMEController.prototype._attemptSetMediaKeys = function _attemptSetMediaKeys() {\n if (!this._hasSetMediaKeys) {\n // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?\n var keysListItem = this._mediaKeysList[0];\n if (!keysListItem || !keysListItem.mediaKeys) {\n logger[\"b\" /* logger */].error('Fatal: Media is encrypted but no CDM access or no keys have been obtained yet');\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].KEY_SYSTEM_ERROR,\n details: errors[\"a\" /* ErrorDetails */].KEY_SYSTEM_NO_KEYS,\n fatal: true\n });\n return;\n }\n\n logger[\"b\" /* logger */].log('Setting keys for encrypted media');\n\n this._media.setMediaKeys(keysListItem.mediaKeys);\n this._hasSetMediaKeys = true;\n }\n };\n\n EMEController.prototype._generateRequestWithPreferredKeySession = function _generateRequestWithPreferredKeySession() {\n var _this6 = this;\n\n // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?\n var keysListItem = this._mediaKeysList[0];\n if (!keysListItem) {\n logger[\"b\" /* logger */].error('Fatal: Media is encrypted but not any key-system access has been obtained yet');\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].KEY_SYSTEM_ERROR,\n details: errors[\"a\" /* ErrorDetails */].KEY_SYSTEM_NO_ACCESS,\n fatal: true\n });\n return;\n }\n\n if (keysListItem.mediaKeysSessionInitialized) {\n logger[\"b\" /* logger */].warn('Key-Session already initialized but requested again');\n return;\n }\n\n var keySession = keysListItem.mediaKeysSession;\n if (!keySession) {\n logger[\"b\" /* logger */].error('Fatal: Media is encrypted but no key-session existing');\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].KEY_SYSTEM_ERROR,\n details: errors[\"a\" /* ErrorDetails */].KEY_SYSTEM_NO_SESSION,\n fatal: true\n });\n }\n\n var initDataType = this._mediaEncryptionInitDataType;\n var initData = this._mediaEncryptionInitData;\n\n logger[\"b\" /* logger */].log('Generating key-session request for \"' + initDataType + '\" init data type');\n\n keysListItem.mediaKeysSessionInitialized = true;\n\n keySession.generateRequest(initDataType, initData).then(function () {\n logger[\"b\" /* logger */].debug('Key-session generation succeeded');\n }).catch(function (err) {\n logger[\"b\" /* logger */].error('Error generating key-session request:', err);\n _this6.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].KEY_SYSTEM_ERROR,\n details: errors[\"a\" /* ErrorDetails */].KEY_SYSTEM_NO_SESSION,\n fatal: false\n });\n });\n };\n\n /**\n * @param {string} url License server URL\n * @param {ArrayBuffer} keyMessage Message data issued by key-system\n * @param {function} callback Called when XHR has succeeded\n * @returns {XMLHttpRequest} Unsent (but opened state) XHR object\n */\n\n\n EMEController.prototype._createLicenseXhr = function _createLicenseXhr(url, keyMessage, callback) {\n var xhr = new XMLHttpRequest();\n var licenseXhrSetup = this._licenseXhrSetup;\n\n try {\n if (licenseXhrSetup) {\n try {\n licenseXhrSetup(xhr, url);\n } catch (e) {\n // let's try to open before running setup\n xhr.open('POST', url, true);\n licenseXhrSetup(xhr, url);\n }\n }\n // if licenseXhrSetup did not yet call open, let's do it now\n if (!xhr.readyState) xhr.open('POST', url, true);\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n logger[\"b\" /* logger */].error('Error setting up key-system license XHR', e);\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].KEY_SYSTEM_ERROR,\n details: errors[\"a\" /* ErrorDetails */].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n return;\n }\n\n xhr.responseType = 'arraybuffer';\n xhr.onreadystatechange = this._onLicenseRequestReadyStageChange.bind(this, xhr, url, keyMessage, callback);\n return xhr;\n };\n\n /**\n * @param {XMLHttpRequest} xhr\n * @param {string} url License server URL\n * @param {ArrayBuffer} keyMessage Message data issued by key-system\n * @param {function} callback Called when XHR has succeeded\n *\n */\n\n\n EMEController.prototype._onLicenseRequestReadyStageChange = function _onLicenseRequestReadyStageChange(xhr, url, keyMessage, callback) {\n switch (xhr.readyState) {\n case 4:\n if (xhr.status === 200) {\n this._requestLicenseFailureCount = 0;\n logger[\"b\" /* logger */].log('License request succeeded');\n callback(xhr.response);\n } else {\n logger[\"b\" /* logger */].error('License Request XHR failed (' + url + '). Status: ' + xhr.status + ' (' + xhr.statusText + ')');\n\n this._requestLicenseFailureCount++;\n if (this._requestLicenseFailureCount <= MAX_LICENSE_REQUEST_FAILURES) {\n var attemptsLeft = MAX_LICENSE_REQUEST_FAILURES - this._requestLicenseFailureCount + 1;\n logger[\"b\" /* logger */].warn('Retrying license request, ' + attemptsLeft + ' attempts left');\n this._requestLicense(keyMessage, callback);\n return;\n }\n\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].KEY_SYSTEM_ERROR,\n details: errors[\"a\" /* ErrorDetails */].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n }\n break;\n }\n };\n\n /**\n * @param {object} keysListItem\n * @param {ArrayBuffer} keyMessage\n * @returns {ArrayBuffer} Challenge data posted to license server\n */\n\n\n EMEController.prototype._generateLicenseRequestChallenge = function _generateLicenseRequestChallenge(keysListItem, keyMessage) {\n var challenge = void 0;\n\n if (keysListItem.mediaKeySystemDomain === KeySystems.PLAYREADY) {\n logger[\"b\" /* logger */].error('PlayReady is not supported (yet)');\n\n // from https://github.com/MicrosoftEdge/Demos/blob/master/eme/scripts/demo.js\n /*\n if (this.licenseType !== this.LICENSE_TYPE_WIDEVINE) {\n // For PlayReady CDMs, we need to dig the Challenge out of the XML.\n var keyMessageXml = new DOMParser().parseFromString(String.fromCharCode.apply(null, new Uint16Array(keyMessage)), 'application/xml');\n if (keyMessageXml.getElementsByTagName('Challenge')[0]) {\n challenge = atob(keyMessageXml.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue);\n } else {\n throw 'Cannot find <Challenge> in key message';\n }\n var headerNames = keyMessageXml.getElementsByTagName('name');\n var headerValues = keyMessageXml.getElementsByTagName('value');\n if (headerNames.length !== headerValues.length) {\n throw 'Mismatched header <name>/<value> pair in key message';\n }\n for (var i = 0; i < headerNames.length; i++) {\n xhr.setRequestHeader(headerNames[i].childNodes[0].nodeValue, headerValues[i].childNodes[0].nodeValue);\n }\n }\n */\n } else if (keysListItem.mediaKeySystemDomain === KeySystems.WIDEVINE) {\n // For Widevine CDMs, the challenge is the keyMessage.\n challenge = keyMessage;\n } else {\n logger[\"b\" /* logger */].error('Unsupported key-system:', keysListItem.mediaKeySystemDomain);\n }\n\n return challenge;\n };\n\n EMEController.prototype._requestLicense = function _requestLicense(keyMessage, callback) {\n logger[\"b\" /* logger */].log('Requesting content license for key-system');\n\n var keysListItem = this._mediaKeysList[0];\n if (!keysListItem) {\n logger[\"b\" /* logger */].error('Fatal error: Media is encrypted but no key-system access has been obtained yet');\n this.hls.trigger(events[\"a\" /* default */].ERROR, {\n type: errors[\"b\" /* ErrorTypes */].KEY_SYSTEM_ERROR,\n details: errors[\"a\" /* ErrorDetails */].KEY_SYSTEM_NO_ACCESS,\n fatal: true\n });\n return;\n }\n\n var url = this.getLicenseServerUrl(keysListItem.mediaKeySystemDomain);\n var xhr = this._createLicenseXhr(url, keyMessage, callback);\n\n logger[\"b\" /* logger */].log('Sending license request to URL: ' + url);\n\n xhr.send(this._generateLicenseRequestChallenge(keysListItem, keyMessage));\n };\n\n EMEController.prototype.onMediaAttached = function onMediaAttached(data) {\n var _this7 = this;\n\n if (!this._emeEnabled) return;\n\n var media = data.media;\n\n // keep reference of media\n this._media = media;\n\n // FIXME: also handle detaching media !\n\n media.addEventListener('encrypted', function (e) {\n _this7._onMediaEncrypted(e.initDataType, e.initData);\n });\n };\n\n EMEController.prototype.onManifestParsed = function onManifestParsed(data) {\n if (!this._emeEnabled) return;\n\n var audioCodecs = data.levels.map(function (level) {\n return level.audioCodec;\n });\n var videoCodecs = data.levels.map(function (level) {\n return level.videoCodec;\n });\n\n this._attemptKeySystemAccess(KeySystems.WIDEVINE, audioCodecs, videoCodecs);\n };\n\n eme_controller__createClass(EMEController, [{\n key: 'requestMediaKeySystemAccess',\n get: function get() {\n if (!this._requestMediaKeySystemAccess) throw new Error('No requestMediaKeySystemAccess function configured');\n\n return this._requestMediaKeySystemAccess;\n }\n }]);\n\n return EMEController;\n}(event_handler);\n\n/* harmony default export */ var eme_controller = (eme_controller_EMEController);\n// CONCATENATED MODULE: ./src/helper/mediakeys-helper.js\nvar requestMediaKeySystemAccess = function () {\n if (window.navigator && window.navigator.requestMediaKeySystemAccess) return window.navigator.requestMediaKeySystemAccess.bind(window.navigator);else return null;\n}();\n\n\n// CONCATENATED MODULE: ./src/config.js\n/**\n * HLS config\n */\n\n\n\n\n\n\n// import FetchLoader from './utils/fetch-loader';\n\n\n\n\n\n\n\n\n\n\n\n\nvar hlsDefaultConfig = {\n autoStartLoad: true, // used by stream-controller\n startPosition: -1, // used by stream-controller\n defaultAudioCodec: undefined, // used by stream-controller\n debug: false, // used by logger\n capLevelOnFPSDrop: false, // used by fps-controller\n capLevelToPlayerSize: false, // used by cap-level-controller\n initialLiveManifestSize: 1, // used by stream-controller\n maxBufferLength: 30, // used by stream-controller\n maxBufferSize: 60 * 1000 * 1000, // used by stream-controller\n maxBufferHole: 0.5, // used by stream-controller\n\n lowBufferWatchdogPeriod: 0.5, // used by stream-controller\n highBufferWatchdogPeriod: 3, // used by stream-controller\n nudgeOffset: 0.1, // used by stream-controller\n nudgeMaxRetry: 3, // used by stream-controller\n maxFragLookUpTolerance: 0.25, // used by stream-controller\n liveSyncDurationCount: 3, // used by stream-controller\n liveMaxLatencyDurationCount: Infinity, // used by stream-controller\n liveSyncDuration: undefined, // used by stream-controller\n liveMaxLatencyDuration: undefined, // used by stream-controller\n liveDurationInfinity: false, // used by buffer-controller\n maxMaxBufferLength: 600, // used by stream-controller\n enableWorker: true, // used by demuxer\n enableSoftwareAES: true, // used by decrypter\n manifestLoadingTimeOut: 10000, // used by playlist-loader\n manifestLoadingMaxRetry: 1, // used by playlist-loader\n manifestLoadingRetryDelay: 1000, // used by playlist-loader\n manifestLoadingMaxRetryTimeout: 64000, // used by playlist-loader\n startLevel: undefined, // used by level-controller\n levelLoadingTimeOut: 10000, // used by playlist-loader\n levelLoadingMaxRetry: 4, // used by playlist-loader\n levelLoadingRetryDelay: 1000, // used by playlist-loader\n levelLoadingMaxRetryTimeout: 64000, // used by playlist-loader\n fragLoadingTimeOut: 20000, // used by fragment-loader\n fragLoadingMaxRetry: 6, // used by fragment-loader\n fragLoadingRetryDelay: 1000, // used by fragment-loader\n fragLoadingMaxRetryTimeout: 64000, // used by fragment-loader\n startFragPrefetch: false, // used by stream-controller\n fpsDroppedMonitoringPeriod: 5000, // used by fps-controller\n fpsDroppedMonitoringThreshold: 0.2, // used by fps-controller\n appendErrorMaxRetry: 3, // used by buffer-controller\n loader: xhr_loader,\n // loader: FetchLoader,\n fLoader: undefined, // used by fragment-loader\n pLoader: undefined, // used by playlist-loader\n xhrSetup: undefined, // used by xhr-loader\n licenseXhrSetup: undefined, // used by eme-controller\n // fetchSetup: undefined,\n abrController: abr_controller,\n bufferController: buffer_controller,\n capLevelController: cap_level_controller,\n fpsController: fps_controller,\n stretchShortVideoTrack: false, // used by mp4-remuxer\n maxAudioFramesDrift: 1, // used by mp4-remuxer\n forceKeyFrameOnDiscontinuity: true, // used by ts-demuxer\n abrEwmaFastLive: 3, // used by abr-controller\n abrEwmaSlowLive: 9, // used by abr-controller\n abrEwmaFastVoD: 3, // used by abr-controller\n abrEwmaSlowVoD: 9, // used by abr-controller\n abrEwmaDefaultEstimate: 5e5, // 500 kbps // used by abr-controller\n abrBandWidthFactor: 0.95, // used by abr-controller\n abrBandWidthUpFactor: 0.7, // used by abr-controller\n abrMaxWithRealBitrate: false, // used by abr-controller\n maxStarvationDelay: 4, // used by abr-controller\n maxLoadingDelay: 4, // used by abr-controller\n minAutoBitrate: 0, // used by hls\n emeEnabled: false, // used by eme-controller\n widevineLicenseUrl: undefined, // used by eme-controller\n requestMediaKeySystemAccessFunc: requestMediaKeySystemAccess // used by eme-controller\n};\n\nif (true) {\n hlsDefaultConfig.subtitleStreamController = subtitle_stream_controller;\n hlsDefaultConfig.subtitleTrackController = subtitle_track_controller;\n hlsDefaultConfig.timelineController = timeline_controller;\n hlsDefaultConfig.cueHandler = cues_namespaceObject; // used by timeline-controller\n hlsDefaultConfig.enableCEA708Captions = true; // used by timeline-controller\n hlsDefaultConfig.enableWebVTT = true; // used by timeline-controller\n hlsDefaultConfig.captionsTextTrack1Label = 'English'; // used by timeline-controller\n hlsDefaultConfig.captionsTextTrack1LanguageCode = 'en'; // used by timeline-controller\n hlsDefaultConfig.captionsTextTrack2Label = 'Spanish'; // used by timeline-controller\n hlsDefaultConfig.captionsTextTrack2LanguageCode = 'es'; // used by timeline-controller\n}\n\nif (true) {\n hlsDefaultConfig.audioStreamController = audio_stream_controller;\n hlsDefaultConfig.audioTrackController = audio_track_controller;\n}\n\nif (true) hlsDefaultConfig.emeController = eme_controller;\n// CONCATENATED MODULE: ./src/hls.js\nvar hls__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction hls__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// polyfill for IE11\n__webpack_require__(12);\n\n/**\n * @module Hls\n * @class\n * @constructor\n */\n\nvar hls_Hls = function () {\n\n /**\n * @type {boolean}\n */\n Hls.isSupported = function isSupported() {\n return is_supported_isSupported();\n };\n\n /**\n * @type {HlsEvents}\n */\n\n\n hls__createClass(Hls, null, [{\n key: 'version',\n\n /**\n * @type {string}\n */\n get: function get() {\n return \"0.9.1\";\n }\n }, {\n key: 'Events',\n get: function get() {\n return events[\"a\" /* default */];\n }\n\n /**\n * @type {HlsErrorTypes}\n */\n\n }, {\n key: 'ErrorTypes',\n get: function get() {\n return errors[\"b\" /* ErrorTypes */];\n }\n\n /**\n * @type {HlsErrorDetails}\n */\n\n }, {\n key: 'ErrorDetails',\n get: function get() {\n return errors[\"a\" /* ErrorDetails */];\n }\n\n /**\n * @type {HlsConfig}\n */\n\n }, {\n key: 'DefaultConfig',\n get: function get() {\n if (!Hls.defaultConfig) return hlsDefaultConfig;\n\n return Hls.defaultConfig;\n }\n\n /**\n * @type {HlsConfig}\n */\n ,\n set: function set(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n\n /**\n * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n *\n * @constructs Hls\n * @param {HlsConfig} config\n */\n\n }]);\n\n function Hls() {\n var _this = this;\n\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n hls__classCallCheck(this, Hls);\n\n var defaultConfig = Hls.DefaultConfig;\n\n if ((config.liveSyncDurationCount || config.liveMaxLatencyDurationCount) && (config.liveSyncDuration || config.liveMaxLatencyDuration)) throw new Error('Illegal hls.js config: don\\'t mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration');\n\n for (var prop in defaultConfig) {\n if (prop in config) continue;\n config[prop] = defaultConfig[prop];\n }\n\n if (config.liveMaxLatencyDurationCount !== undefined && config.liveMaxLatencyDurationCount <= config.liveSyncDurationCount) throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be gt \"liveSyncDurationCount\"');\n\n if (config.liveMaxLatencyDuration !== undefined && (config.liveMaxLatencyDuration <= config.liveSyncDuration || config.liveSyncDuration === undefined)) throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be gt \"liveSyncDuration\"');\n\n Object(logger[\"a\" /* enableLogs */])(config.debug);\n this.config = config;\n this._autoLevelCapping = -1;\n // observer setup\n var observer = this.observer = new events_default.a();\n observer.trigger = function trigger(event) {\n for (var _len = arguments.length, data = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n data[_key - 1] = arguments[_key];\n }\n\n observer.emit.apply(observer, [event, event].concat(data));\n };\n\n observer.off = function off(event) {\n for (var _len2 = arguments.length, data = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n data[_key2 - 1] = arguments[_key2];\n }\n\n observer.removeListener.apply(observer, [event].concat(data));\n };\n this.on = observer.on.bind(observer);\n this.off = observer.off.bind(observer);\n this.trigger = observer.trigger.bind(observer);\n\n // core controllers and network loaders\n\n /**\n * @member {AbrController} abrController\n */\n var abrController = this.abrController = new config.abrController(this);\n\n var bufferController = new config.bufferController(this);\n var capLevelController = new config.capLevelController(this);\n var fpsController = new config.fpsController(this);\n var playListLoader = new playlist_loader(this);\n var fragmentLoader = new fragment_loader(this);\n var keyLoader = new key_loader(this);\n var id3TrackController = new id3_track_controller(this);\n\n // network controllers\n\n /**\n * @member {LevelController} levelController\n */\n var levelController = this.levelController = new level_controller(this);\n\n // FIXME: FragmentTracker must be defined before StreamController because the order of event handling is important\n var fragmentTracker = new fragment_tracker_FragmentTracker(this);\n\n /**\n * @member {StreamController} streamController\n */\n var streamController = this.streamController = new stream_controller(this, fragmentTracker);\n\n var networkControllers = [levelController, streamController];\n\n // optional audio stream controller\n /**\n * @var {ICoreComponent | Controller}\n */\n var Controller = config.audioStreamController;\n if (Controller) networkControllers.push(new Controller(this, fragmentTracker));\n\n /**\n * @member {INetworkController[]} networkControllers\n */\n this.networkControllers = networkControllers;\n\n /**\n * @var {ICoreComponent[]}\n */\n var coreComponents = [playListLoader, fragmentLoader, keyLoader, abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker];\n\n // optional audio track and subtitle controller\n Controller = config.audioTrackController;\n if (Controller) {\n var audioTrackController = new Controller(this);\n\n /**\n * @member {AudioTrackController} audioTrackController\n */\n this.audioTrackController = audioTrackController;\n coreComponents.push(audioTrackController);\n }\n\n Controller = config.subtitleTrackController;\n if (Controller) {\n var subtitleTrackController = new Controller(this);\n\n /**\n * @member {SubtitleTrackController} subtitleTrackController\n */\n this.subtitleTrackController = subtitleTrackController;\n coreComponents.push(subtitleTrackController);\n }\n\n Controller = config.emeController;\n if (Controller) {\n var emeController = new Controller(this);\n\n /**\n * @member {EMEController} emeController\n */\n this.emeController = emeController;\n coreComponents.push(emeController);\n }\n\n // optional subtitle controller\n [config.subtitleStreamController, config.timelineController].forEach(function (Controller) {\n if (Controller) coreComponents.push(new Controller(_this));\n });\n\n /**\n * @member {ICoreComponent[]}\n */\n this.coreComponents = coreComponents;\n }\n\n /**\n * Dispose of the instance\n */\n\n\n Hls.prototype.destroy = function destroy() {\n logger[\"b\" /* logger */].log('destroy');\n this.trigger(events[\"a\" /* default */].DESTROYING);\n this.detachMedia();\n this.coreComponents.concat(this.networkControllers).forEach(function (component) {\n component.destroy();\n });\n this.url = null;\n this.observer.removeAllListeners();\n this._autoLevelCapping = -1;\n };\n\n /**\n * Attach a media element\n * @param {HTMLMediaElement} media\n */\n\n\n Hls.prototype.attachMedia = function attachMedia(media) {\n logger[\"b\" /* logger */].log('attachMedia');\n this.media = media;\n this.trigger(events[\"a\" /* default */].MEDIA_ATTACHING, { media: media });\n };\n\n /**\n * Detach from the media\n */\n\n\n Hls.prototype.detachMedia = function detachMedia() {\n logger[\"b\" /* logger */].log('detachMedia');\n this.trigger(events[\"a\" /* default */].MEDIA_DETACHING);\n this.media = null;\n };\n\n /**\n * Set the source URL. Can be relative or absolute.\n * @param {string} url\n */\n\n\n Hls.prototype.loadSource = function loadSource(url) {\n url = url_toolkit_default.a.buildAbsoluteURL(window.location.href, url, { alwaysNormalize: true });\n logger[\"b\" /* logger */].log('loadSource:' + url);\n this.url = url;\n // when attaching to a source URL, trigger a playlist load\n this.trigger(events[\"a\" /* default */].MANIFEST_LOADING, { url: url });\n };\n\n /**\n * Start loading data from the stream source.\n * Depending on default config, client starts loading automatically when a source is set.\n *\n * @param {number} startPosition Set the start position to stream from\n * @default -1 None (from earliest point)\n */\n\n\n Hls.prototype.startLoad = function startLoad() {\n var startPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;\n\n logger[\"b\" /* logger */].log('startLoad(' + startPosition + ')');\n this.networkControllers.forEach(function (controller) {\n controller.startLoad(startPosition);\n });\n };\n\n /**\n * Stop loading of any stream data.\n */\n\n\n Hls.prototype.stopLoad = function stopLoad() {\n logger[\"b\" /* logger */].log('stopLoad');\n this.networkControllers.forEach(function (controller) {\n controller.stopLoad();\n });\n };\n\n /**\n * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n */\n\n\n Hls.prototype.swapAudioCodec = function swapAudioCodec() {\n logger[\"b\" /* logger */].log('swapAudioCodec');\n this.streamController.swapAudioCodec();\n };\n\n /**\n * When the media-element fails, this allows to detach and then re-attach it\n * as one call (convenience method).\n *\n * Automatic recovery of media-errors by this process is configurable.\n */\n\n\n Hls.prototype.recoverMediaError = function recoverMediaError() {\n logger[\"b\" /* logger */].log('recoverMediaError');\n var media = this.media;\n this.detachMedia();\n this.attachMedia(media);\n };\n\n /**\n * @type {QualityLevel[]}\n */\n\n\n hls__createClass(Hls, [{\n key: 'levels',\n get: function get() {\n return this.levelController.levels;\n }\n\n /**\n * Index of quality level currently played\n * @type {number}\n */\n\n }, {\n key: 'currentLevel',\n get: function get() {\n return this.streamController.currentLevel;\n }\n\n /**\n * Set quality level index immediately .\n * This will flush the current buffer to replace the quality asap.\n * That means playback will interrupt at least shortly to re-buffer and re-sync eventually.\n * @type {number} -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n logger[\"b\" /* logger */].log('set currentLevel:' + newLevel);\n this.loadLevel = newLevel;\n this.streamController.immediateLevelSwitch();\n }\n\n /**\n * Index of next quality level loaded as scheduled by stream controller.\n * @type {number}\n */\n\n }, {\n key: 'nextLevel',\n get: function get() {\n return this.streamController.nextLevel;\n }\n\n /**\n * Set quality level index for next loaded data.\n * This will switch the video quality asap, without interrupting playback.\n * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n * @type {number} -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n logger[\"b\" /* logger */].log('set nextLevel:' + newLevel);\n this.levelController.manualLevel = newLevel;\n this.streamController.nextLevelSwitch();\n }\n\n /**\n * Return the quality level of the currently or last (of none is loaded currently) segment\n * @type {number}\n */\n\n }, {\n key: 'loadLevel',\n get: function get() {\n return this.levelController.level;\n }\n\n /**\n * Set quality level index for next loaded data in a conservative way.\n * This will switch the quality without flushing, but interrupt current loading.\n * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n * @type {number} newLevel -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n logger[\"b\" /* logger */].log('set loadLevel:' + newLevel);\n this.levelController.manualLevel = newLevel;\n }\n\n /**\n * get next quality level loaded\n * @type {number}\n */\n\n }, {\n key: 'nextLoadLevel',\n get: function get() {\n return this.levelController.nextLoadLevel;\n }\n\n /**\n * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n * Same as `loadLevel` but will wait for next switch (until current loading is done).\n * @type {number} level\n */\n ,\n set: function set(level) {\n this.levelController.nextLoadLevel = level;\n }\n\n /**\n * Return \"first level\": like a default level, if not set,\n * falls back to index of first level referenced in manifest\n * @type {number}\n */\n\n }, {\n key: 'firstLevel',\n get: function get() {\n return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n }\n\n /**\n * Sets \"first-level\", see getter.\n * @type {number}\n */\n ,\n set: function set(newLevel) {\n logger[\"b\" /* logger */].log('set firstLevel:' + newLevel);\n this.levelController.firstLevel = newLevel;\n }\n\n /**\n * Return start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n * @type {number}\n */\n\n }, {\n key: 'startLevel',\n get: function get() {\n return this.levelController.startLevel;\n }\n\n /**\n * set start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n * @type {number} newLevel\n */\n ,\n set: function set(newLevel) {\n logger[\"b\" /* logger */].log('set startLevel:' + newLevel);\n var hls = this;\n // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel\n if (newLevel !== -1) newLevel = Math.max(newLevel, hls.minAutoLevel);\n\n hls.levelController.startLevel = newLevel;\n }\n\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n * @type {number}\n */\n\n }, {\n key: 'autoLevelCapping',\n get: function get() {\n return this._autoLevelCapping;\n }\n\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n * @type {number}\n */\n ,\n set: function set(newLevel) {\n logger[\"b\" /* logger */].log('set autoLevelCapping:' + newLevel);\n this._autoLevelCapping = newLevel;\n }\n\n /**\n * True when automatic level selection enabled\n * @type {boolean}\n */\n\n }, {\n key: 'autoLevelEnabled',\n get: function get() {\n return this.levelController.manualLevel === -1;\n }\n\n /**\n * Level set manually (if any)\n * @type {number}\n */\n\n }, {\n key: 'manualLevel',\n get: function get() {\n return this.levelController.manualLevel;\n }\n\n /**\n * min level selectable in auto mode according to config.minAutoBitrate\n * @type {number}\n */\n\n }, {\n key: 'minAutoLevel',\n get: function get() {\n var hls = this,\n levels = hls.levels,\n minAutoBitrate = hls.config.minAutoBitrate,\n len = levels ? levels.length : 0;\n for (var i = 0; i < len; i++) {\n var levelNextBitrate = levels[i].realBitrate ? Math.max(levels[i].realBitrate, levels[i].bitrate) : levels[i].bitrate;\n if (levelNextBitrate > minAutoBitrate) return i;\n }\n return 0;\n }\n\n /**\n * max level selectable in auto mode according to autoLevelCapping\n * @type {number}\n */\n\n }, {\n key: 'maxAutoLevel',\n get: function get() {\n var hls = this;\n var levels = hls.levels;\n var autoLevelCapping = hls.autoLevelCapping;\n var maxAutoLevel = void 0;\n if (autoLevelCapping === -1 && levels && levels.length) maxAutoLevel = levels.length - 1;else maxAutoLevel = autoLevelCapping;\n\n return maxAutoLevel;\n }\n\n /**\n * next automatically selected quality level\n * @type {number}\n */\n\n }, {\n key: 'nextAutoLevel',\n get: function get() {\n var hls = this;\n // ensure next auto level is between min and max auto level\n return Math.min(Math.max(hls.abrController.nextAutoLevel, hls.minAutoLevel), hls.maxAutoLevel);\n }\n\n /**\n * this setter is used to force next auto level.\n * this is useful to force a switch down in auto mode:\n * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n * forced value is valid for one fragment. upon succesful frag loading at forced level,\n * this value will be resetted to -1 by ABR controller.\n * @type {number}\n */\n ,\n set: function set(nextLevel) {\n var hls = this;\n hls.abrController.nextAutoLevel = Math.max(hls.minAutoLevel, nextLevel);\n }\n\n /**\n * @type {AudioTrack[]}\n */\n\n }, {\n key: 'audioTracks',\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTracks : [];\n }\n\n /**\n * index of the selected audio track (index in audio track lists)\n * @type {number}\n */\n\n }, {\n key: 'audioTrack',\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTrack : -1;\n }\n\n /**\n * selects an audio track, based on its index in audio track lists\n * @type {number}\n */\n ,\n set: function set(audioTrackId) {\n var audioTrackController = this.audioTrackController;\n if (audioTrackController) audioTrackController.audioTrack = audioTrackId;\n }\n\n /**\n * @type {Seconds}\n */\n\n }, {\n key: 'liveSyncPosition',\n get: function get() {\n return this.streamController.liveSyncPosition;\n }\n\n /**\n * get alternate subtitle tracks list from playlist\n * @type {SubtitleTrack[]}\n */\n\n }, {\n key: 'subtitleTracks',\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];\n }\n\n /**\n * index of the selected subtitle track (index in subtitle track lists)\n * @type {number}\n */\n\n }, {\n key: 'subtitleTrack',\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n }\n\n /**\n * select an subtitle track, based on its index in subtitle track lists\n * @type{number}\n */\n ,\n set: function set(subtitleTrackId) {\n var subtitleTrackController = this.subtitleTrackController;\n if (subtitleTrackController) subtitleTrackController.subtitleTrack = subtitleTrackId;\n }\n\n /**\n * @type {booelan}\n */\n\n }, {\n key: 'subtitleDisplay',\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;\n }\n\n /**\n * Enable/disable subtitle display rendering\n * @type {boolean}\n */\n ,\n set: function set(value) {\n var subtitleTrackController = this.subtitleTrackController;\n if (subtitleTrackController) subtitleTrackController.subtitleDisplay = value;\n }\n }]);\n\n return Hls;\n}();\n\n/* harmony default export */ var src_hls = __webpack_exports__[\"default\"] = (hls_Hls);\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction webpackBootstrapFunc (modules) {\n/******/ // The module cache\n/******/ var installedModules = {};\n\n/******/ // The require function\n/******/ function __webpack_require__(moduleId) {\n\n/******/ // Check if module is in cache\n/******/ if(installedModules[moduleId])\n/******/ return installedModules[moduleId].exports;\n\n/******/ // Create a new module (and put it into the cache)\n/******/ var module = installedModules[moduleId] = {\n/******/ i: moduleId,\n/******/ l: false,\n/******/ exports: {}\n/******/ };\n\n/******/ // Execute the module function\n/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ // Flag the module as loaded\n/******/ module.l = true;\n\n/******/ // Return the exports of the module\n/******/ return module.exports;\n/******/ }\n\n/******/ // expose the modules object (__webpack_modules__)\n/******/ __webpack_require__.m = modules;\n\n/******/ // expose the module cache\n/******/ __webpack_require__.c = installedModules;\n\n/******/ // identity function for calling harmony imports with the correct context\n/******/ __webpack_require__.i = function(value) { return value; };\n\n/******/ // define getter function for harmony exports\n/******/ __webpack_require__.d = function(exports, name, getter) {\n/******/ if(!__webpack_require__.o(exports, name)) {\n/******/ Object.defineProperty(exports, name, {\n/******/ configurable: false,\n/******/ enumerable: true,\n/******/ get: getter\n/******/ });\n/******/ }\n/******/ };\n\n/******/ // define __esModule on exports\n/******/ __webpack_require__.r = function(exports) {\n/******/ Object.defineProperty(exports, '__esModule', { value: true });\n/******/ };\n\n/******/ // getDefaultExport function for compatibility with non-harmony modules\n/******/ __webpack_require__.n = function(module) {\n/******/ var getter = module && module.__esModule ?\n/******/ function getDefault() { return module['default']; } :\n/******/ function getModuleExports() { return module; };\n/******/ __webpack_require__.d(getter, 'a', getter);\n/******/ return getter;\n/******/ };\n\n/******/ // Object.prototype.hasOwnProperty.call\n/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n/******/ // __webpack_public_path__\n/******/ __webpack_require__.p = \"/\";\n\n/******/ // on error function for async loading\n/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n var f = __webpack_require__(__webpack_require__.s = ENTRY_MODULE)\n return f.default || f // try to call default if defined to also support babel esmodule exports\n}\n\nvar moduleNameReqExp = '[\\\\.|\\\\-|\\\\+|\\\\w|\\/|@]+'\nvar dependencyRegExp = '\\\\((\\/\\\\*.*?\\\\*\\/)?\\s?.*?(' + moduleNameReqExp + ').*?\\\\)' // additional chars when output.pathinfo is true\n\n// http://stackoverflow.com/a/2593661/130442\nfunction quoteRegExp (str) {\n return (str + '').replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&')\n}\n\nfunction getModuleDependencies (sources, module, queueName) {\n var retval = {}\n retval[queueName] = []\n\n var fnString = module.toString()\n var wrapperSignature = fnString.match(/^function\\s?\\(\\w+,\\s*\\w+,\\s*(\\w+)\\)/)\n if (!wrapperSignature) return retval\n var webpackRequireName = wrapperSignature[1]\n\n // main bundle deps\n var re = new RegExp('(\\\\\\\\n|\\\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g')\n var match\n while ((match = re.exec(fnString))) {\n if (match[3] === 'dll-reference') continue\n retval[queueName].push(match[3])\n }\n\n // dll deps\n re = new RegExp('\\\\(' + quoteRegExp(webpackRequireName) + '\\\\(\"(dll-reference\\\\s(' + moduleNameReqExp + '))\"\\\\)\\\\)' + dependencyRegExp, 'g')\n while ((match = re.exec(fnString))) {\n if (!sources[match[2]]) {\n retval[queueName].push(match[1])\n sources[match[2]] = __webpack_require__(match[1]).m\n }\n retval[match[2]] = retval[match[2]] || []\n retval[match[2]].push(match[4])\n }\n\n return retval\n}\n\nfunction hasValuesInQueues (queues) {\n var keys = Object.keys(queues)\n return keys.reduce(function (hasValues, key) {\n return hasValues || queues[key].length > 0\n }, false)\n}\n\nfunction getRequiredModules (sources, moduleId) {\n var modulesQueue = {\n main: [moduleId]\n }\n var requiredModules = {\n main: []\n }\n var seenModules = {\n main: {}\n }\n\n while (hasValuesInQueues(modulesQueue)) {\n var queues = Object.keys(modulesQueue)\n for (var i = 0; i < queues.length; i++) {\n var queueName = queues[i]\n var queue = modulesQueue[queueName]\n var moduleToCheck = queue.pop()\n seenModules[queueName] = seenModules[queueName] || {}\n if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue\n seenModules[queueName][moduleToCheck] = true\n requiredModules[queueName] = requiredModules[queueName] || []\n requiredModules[queueName].push(moduleToCheck)\n var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName)\n var newModulesKeys = Object.keys(newModules)\n for (var j = 0; j < newModulesKeys.length; j++) {\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || []\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]])\n }\n }\n }\n\n return requiredModules\n}\n\nmodule.exports = function (moduleId, options) {\n options = options || {}\n var sources = {\n main: __webpack_require__.m\n }\n\n var requiredModules = options.all ? { main: Object.keys(sources) } : getRequiredModules(sources, moduleId)\n\n var src = ''\n\n Object.keys(requiredModules).filter(function (m) { return m !== 'main' }).forEach(function (module) {\n var entryModule = 0\n while (requiredModules[module][entryModule]) {\n entryModule++\n }\n requiredModules[module].push(entryModule)\n sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })'\n src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) { return '' + JSON.stringify(id) + ': ' + sources[module][id].toString() }).join(',') + '});\\n'\n })\n\n src = src + '(' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) { return '' + JSON.stringify(id) + ': ' + sources.main[id].toString() }).join(',') + '})(self);'\n\n var blob = new window.Blob([src], { type: 'text/javascript' })\n if (options.bare) { return blob }\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL\n\n var workerUrl = URL.createObjectURL(blob)\n var worker = new window.Worker(workerUrl)\n worker.objectURL = workerUrl\n\n return worker\n}\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__demux_demuxer_inline__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_logger__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_events__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_events___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_events__);\n/* demuxer web worker.\n * - listen to worker message, and trigger DemuxerInline upon reception of Fragments.\n * - provides MP4 Boxes back to main thread using [transferable objects](https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast) in order to minimize message passing overhead.\n */\n\n\n\n\n\n\nvar DemuxerWorker = function DemuxerWorker(self) {\n // observer setup\n var observer = new __WEBPACK_IMPORTED_MODULE_3_events___default.a();\n observer.trigger = function trigger(event) {\n for (var _len = arguments.length, data = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n data[_key - 1] = arguments[_key];\n }\n\n observer.emit.apply(observer, [event, event].concat(data));\n };\n\n observer.off = function off(event) {\n for (var _len2 = arguments.length, data = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n data[_key2 - 1] = arguments[_key2];\n }\n\n observer.removeListener.apply(observer, [event].concat(data));\n };\n\n var forwardMessage = function forwardMessage(ev, data) {\n self.postMessage({ event: ev, data: data });\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data;\n // console.log('demuxer cmd:' + data.cmd);\n switch (data.cmd) {\n case 'init':\n var config = JSON.parse(data.config);\n self.demuxer = new __WEBPACK_IMPORTED_MODULE_0__demux_demuxer_inline__[\"a\" /* default */](observer, data.typeSupported, config, data.vendor);\n try {\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_logger__[\"a\" /* enableLogs */])(config.debug === true);\n } catch (err) {\n console.warn('demuxerWorker: unable to enable logs');\n }\n // signal end of worker init\n forwardMessage('init', null);\n break;\n case 'demux':\n self.demuxer.push(data.data, data.decryptdata, data.initSegment, data.audioCodec, data.videoCodec, data.timeOffset, data.discontinuity, data.trackSwitch, data.contiguous, data.duration, data.accurateTimeOffset, data.defaultInitPTS);\n break;\n default:\n break;\n }\n });\n\n // forward events to main thread\n observer.on(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].FRAG_DECRYPTED, forwardMessage);\n observer.on(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].FRAG_PARSING_INIT_SEGMENT, forwardMessage);\n observer.on(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].FRAG_PARSED, forwardMessage);\n observer.on(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].ERROR, forwardMessage);\n observer.on(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].FRAG_PARSING_METADATA, forwardMessage);\n observer.on(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].FRAG_PARSING_USERDATA, forwardMessage);\n observer.on(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].INIT_PTS_FOUND, forwardMessage);\n\n // special case for FRAG_PARSING_DATA: pass data1/data2 as transferable object (no copy)\n observer.on(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* default */].FRAG_PARSING_DATA, function (ev, data) {\n var transferable = [];\n var message = { event: ev, data: data };\n if (data.data1) {\n message.data1 = data.data1.buffer;\n transferable.push(data.data1.buffer);\n delete data.data1;\n }\n if (data.data2) {\n message.data2 = data.data2.buffer;\n transferable.push(data.data2.buffer);\n delete data.data2;\n }\n self.postMessage(message, transferable);\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (DemuxerWorker);\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n/*! http://mths.be/endswith v0.2.0 by @mathias */\nif (!String.prototype.endsWith) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar toString = {}.toString;\n\t\tvar endsWith = function(search) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\tif (search && toString.call(search) == '[object RegExp]') {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar stringLength = string.length;\n\t\t\tvar searchString = String(search);\n\t\t\tvar searchLength = searchString.length;\n\t\t\tvar pos = stringLength;\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tvar position = arguments[1];\n\t\t\t\tif (position !== undefined) {\n\t\t\t\t\t// `ToInteger`\n\t\t\t\t\tpos = position ? Number(position) : 0;\n\t\t\t\t\tif (pos != pos) { // better `isNaN`\n\t\t\t\t\t\tpos = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar end = Math.min(Math.max(pos, 0), stringLength);\n\t\t\tvar start = end - searchLength;\n\t\t\tif (start < 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar index = -1;\n\t\t\twhile (++index < searchLength) {\n\t\t\t\tif (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'endsWith', {\n\t\t\t\t'value': endsWith,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.endsWith = endsWith;\n\t\t}\n\t}());\n}\n\n\n/***/ })\n/******/ ])[\"default\"];\n});\n//# sourceMappingURL=hls.js.map","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2nVBY\",\"scrollableDiv\":\"scrollableDiv__10boh\",\"additionalPoster\":\"additionalPoster__2hp5S\",\"categoryListDiv\":\"categoryListDiv__3OAFt\",\"justifyLeft\":\"justifyLeft__3V5CO\",\"roundArrows\":\"roundArrows__1Qt5y\",\"headline\":\"headline__32pR2\",\"headlineWithSeeAll\":\"headlineWithSeeAll__1bosI\",\"imageOnly\":\"imageOnly__2KsRQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__3SZNx\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__3piTz\",\"stylelessButton\":\"stylelessButton__bCKWA\",\"modal\":\"modal__3opE7\",\"inner\":\"inner__2eKZ9\",\"prevCastArrow\":\"prevCastArrow__fZceQ\",\"nextCastArrow\":\"nextCastArrow__1GQjz\",\"castDetailContainer\":\"castDetailContainer__2PRxD\",\"castModal\":\"castModal__2xgxR\",\"title\":\"title__1QSsu\",\"aired\":\"aired__3TwDz\",\"description\":\"description__2zEUA\",\"close\":\"close__IK-Sl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"geoLocation_wrapper_1OmEl\",\"title\":\"geoLocation_title_c76Ar\",\"body\":\"geoLocation_body_5L2vz\",\"info\":\"geoLocation_info_3O7ke\",\"actions\":\"geoLocation_actions_13goi\",\"button\":\"geoLocation_button_3Sd5j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"castImageContainer\":\"castImageContainer__krhYd\",\"actorName\":\"actorName__1d8RM\",\"characterName\":\"characterName__62qFT\",\"bio\":\"bio__13Q1f\",\"modal\":\"modal__3iQ7P\",\"imageButton\":\"imageButton__3BmsW\",\"castImage\":\"castImage__FfKS7\",\"missingCastImage\":\"missingCastImage__2POSm\",\"castInitials\":\"castInitials__1iOBv\",\"container\":\"container__MCUUh\",\"title\":\"title__3VVi9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__2cJVa\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__2VTVW\",\"stylelessButton\":\"stylelessButton__1rFMo\",\"subscribeButton\":\"subscribeButton__PH9KN\",\"container\":\"container__oIFaP\",\"content\":\"content__zW3L6\",\"subscriptionForm\":\"subscriptionForm__3eBsv\",\"headline\":\"headline__gQExs\",\"legal\":\"legal__1sy8l\",\"logo\":\"logo__1HgNb\",\"emailInput\":\"emailInput__2QnVp\",\"discordContainer\":\"discordContainer__3DAW_\",\"seriesLink\":\"seriesLink__3sjb-\"};","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"anonymousOverlay\":\"anonymousOverlay__3sbh0\",\"badge\":\"badge__3b5Dc\",\"networkIcon\":\"networkIcon__-6hrJ\",\"play\":\"play__3ds2Y\",\"playButton\":\"playButton__1mOsO\",\"playButtonV2\":\"playButtonV2__3bxLd\",\"playableShowTile\":\"playableShowTile__1Z66h\",\"playButtonOverlay\":\"playButtonOverlay__1M2P9\",\"playButtonScale\":\"playButtonScale__3W3ld\",\"hoverStateToolTip\":\"hoverStateToolTip__3qAld\",\"hoverStateActionButtons\":\"hoverStateActionButtons__cIH1E\",\"rightActionButton\":\"rightActionButton__2Er7n\",\"leftActionButton\":\"leftActionButton__3aHKt\",\"watchListButton\":\"watchListButton__3rPpb\",\"infoButton\":\"infoButton__1NZO3\",\"image\":\"image__oqAzj\",\"gridImage\":\"gridImage__1q8h4\",\"imageContainer\":\"imageContainer__6pZmo\",\"playButtonOverlayHoverStateV2\":\"playButtonOverlayHoverStateV2__AEQ18\",\"categoryListImage\":\"categoryListImage__1OJ1_\",\"hoverStateBadgeV2\":\"hoverStateBadgeV2__3M8c_\",\"progress\":\"progress__Sz_aK\",\"done\":\"done__JHXP2\",\"anonymousUpsellCTA\":\"anonymousUpsellCTA__3e4uh\",\"cursorDefault\":\"cursorDefault__1dqRr\",\"tile\":\"tile__2yBsU\",\"fadeAnimated\":\"fadeAnimated__27MV6\",\"fadein\":\"fadein__3vNlW\",\"fadeAnimatedUnauthorized\":\"fadeAnimatedUnauthorized__1SqYB\",\"fadeInUnAuth\":\"fadeInUnAuth__2wFkr\",\"networkUpsell\":\"networkUpsell__20l1y\",\"clickable\":\"clickable__3Zj-Y\",\"imageContainerWithButtons\":\"imageContainerWithButtons__3wsmr\",\"maintainRatioContainer\":\"maintainRatioContainer__2D2za\",\"categoryListContainer\":\"categoryListContainer__PtmbP\",\"toFade\":\"toFade__QMMtX\",\"underlayImage\":\"underlayImage__KMaga\",\"top\":\"top__1jPt8\",\"padForImage\":\"padForImage__3cGXS\",\"blueBadge\":\"blueBadge__iheo6\",\"newBadge\":\"newBadge__PQulb\",\"redBadge\":\"redBadge__33lqi\",\"liveBadge\":\"liveBadge__3P8ky\",\"liveHoverV2Badge\":\"liveHoverV2Badge__1-WQk\",\"infoBadge\":\"infoBadge__35Dr-\",\"clipBadge\":\"clipBadge__OWcd0\",\"defaultBadge\":\"defaultBadge__217QE\",\"otherBadge\":\"otherBadge__3TuLe\",\"badgeInvalid\":\"badgeInvalid__yz1tq\",\"watchListToolTip\":\"watchListToolTip__mVlh8\",\"watchListButtonContainer\":\"watchListButtonContainer__1WHfl\",\"infoButtonLink\":\"infoButtonLink__kw-X2\",\"infoToolTip\":\"infoToolTip__cRCZk\",\"hoverStateToolTipLabel\":\"hoverStateToolTipLabel__3lrmK\",\"hoverStateToolTipTip\":\"hoverStateToolTipTip__31Ctu\",\"hoverStateToolTipRight\":\"hoverStateToolTipRight__3TH3e\",\"liveTileV2Shadow\":\"liveTileV2Shadow__3PlzG\",\"title\":\"title__ZDLaw\",\"subtitle\":\"subtitle__zazKg\",\"titleReverse\":\"titleReverse__3h6gG\",\"ellipsisTitle\":\"ellipsisTitle__2EXPP\",\"titleWrapper\":\"titleWrapper__2sKPF\",\"descLink\":\"descLink__2wHCe\",\"subtitleWrapper\":\"subtitleWrapper__aKTDf\",\"subtitleText\":\"subtitleText__3stBw\",\"metadata\":\"metadata__3iyMF\",\"info\":\"info__EwxgE\",\"imageOverlay\":\"imageOverlay__3nZp6\",\"playText\":\"playText__2QObe\",\"clickDisabled\":\"clickDisabled__3I-ep\",\"imageContainerV2\":\"imageContainerV2__13nzg\",\"lock\":\"lock__1znZC\",\"titleLock\":\"titleLock__WAZqs\",\"isLiveNow\":\"isLiveNow__1mYjB\",\"hoverStateV2Lock\":\"hoverStateV2Lock__51lK5\",\"categoryListTitle\":\"categoryListTitle__2oRMA\",\"titleV2\":\"titleV2__rcaiE\",\"toggleEnabled\":\"toggleEnabled__2C8_t\",\"dotdotdot\":\"dotdotdot__24ZrQ\",\"x\":\"x__3GVQl\",\"details\":\"details__3667l\",\"moreInfo\":\"moreInfo__SzAWL\",\"infoExtended\":\"infoExtended__21VLs\",\"networkLogoBubbleIcon\":\"networkLogoBubbleIcon__3_NYh\",\"networkLogoBubbleContainer\":\"networkLogoBubbleContainer__3JKhZ\",\"networkLogoBubble\":\"networkLogoBubble__3i0R3\",\"networkLogoBubbleIE\":\"networkLogoBubbleIE__1vH8A\",\"toggled\":\"toggled__1mq2s\",\"titleLastWord\":\"titleLastWord__2DXTP\",\"subtitleLastWord\":\"subtitleLastWord__1M0wx\",\"description\":\"description__3KS4H\",\"multiline\":\"multiline__2BZju\",\"networkIconHoverStateV2\":\"networkIconHoverStateV2__2tXyl\",\"tile-text-center\":\"tile-text-center__3S3_4\",\"fadeTile\":\"fadeTile__2Zmso\",\"fadeImage\":\"fadeImage__2V62Q\",\"dogEar\":\"dogEar__364qx\",\"networkUpsellCTA\":\"networkUpsellCTA__1hI5L\",\"imageOverlayHidden\":\"imageOverlayHidden__QiKaz\",\"imageOverlayInnerContainer\":\"imageOverlayInnerContainer__1_IRk\",\"imageOverlayDetailContainer\":\"imageOverlayDetailContainer__2O49E\",\"imageOverlayTitle\":\"imageOverlayTitle__6ePZh\",\"titleFavorite\":\"titleFavorite__yNXY8\",\"imageOverlayDate\":\"imageOverlayDate__2Dllr\",\"imageOverlaySubtitle\":\"imageOverlaySubtitle__1bbGz\",\"imageOverlayDescription\":\"imageOverlayDescription__2x1J4\",\"imageOverlayMetadata\":\"imageOverlayMetadata__3utpS\",\"imageOverlayNetworkLogo\":\"imageOverlayNetworkLogo__2NgqI\",\"imageOverlayFooter\":\"imageOverlayFooter__kZb-O\",\"link\":\"link__2wsgJ\",\"optionalText\":\"optionalText__2RIHA\",\"tile-image-left\":\"tile-image-left__3pYZN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"anonymousOverlay\":\"anonymousOverlay__1_JoQ\",\"overlayContainer\":\"overlayContainer__3Ygzk\",\"badge\":\"badge__3DbvS\",\"blueBadge\":\"blueBadge__3mnPE\",\"newBadge\":\"newBadge__3NPDn\",\"redBadge\":\"redBadge__1rbZD\",\"liveBadge\":\"liveBadge__2lI17\",\"liveHoverV2Badge\":\"liveHoverV2Badge__35MHB\",\"infoBadge\":\"infoBadge__3Kqtr\",\"clipBadge\":\"clipBadge__18iss\",\"defaultBadge\":\"defaultBadge___DFjo\",\"otherBadge\":\"otherBadge__3ROcL\",\"badgeInvalid\":\"badgeInvalid___wL-I\",\"imageContainer\":\"imageContainer__29fJY\",\"hoverStateBadgeV2\":\"hoverStateBadgeV2__3n-1p\",\"play\":\"play__EHCAN\",\"imageOverlay\":\"imageOverlay__3CX8b\",\"playText\":\"playText__3qmSZ\",\"toFade\":\"toFade__1LLvk\",\"clickDisabled\":\"clickDisabled__wAq9m\",\"clickable\":\"clickable__2m4ZS\",\"scaleFromLeft\":\"scaleFromLeft__1F2HV\",\"scaleFromRight\":\"scaleFromRight__1QV5i\",\"anonymousUpsellCTA\":\"anonymousUpsellCTA__2YWzT\",\"tile\":\"tile__1UcKH\",\"fadeAnimated\":\"fadeAnimated__2jIYA\",\"fadein\":\"fadein__1gy--\",\"fadeAnimatedUnauthorized\":\"fadeAnimatedUnauthorized__9221d\",\"fadeInUnAuth\":\"fadeInUnAuth__qzhf5\",\"image\":\"image__1zguU\",\"maintainRatioContainer\":\"maintainRatioContainer__2ts9g\",\"underlayImage\":\"underlayImage__3iqpI\",\"top\":\"top__yd8uR\",\"padForImage\":\"padForImage__21OBS\",\"title\":\"title__38FAc\",\"subtitle\":\"subtitle__2KCgR\",\"titleReverse\":\"titleReverse__wEWGd\",\"ellipsisTitle\":\"ellipsisTitle__25tll\",\"titleWrapper\":\"titleWrapper__1PfOz\",\"subtitleWrapper\":\"subtitleWrapper__10QZy\",\"metadata\":\"metadata__3mn8Q\",\"progress\":\"progress__sOgfV\",\"done\":\"done__1xdpC\",\"lock\":\"lock__7wKq3\",\"titleLock\":\"titleLock__2lH5G\",\"hoverStateV2Lock\":\"hoverStateV2Lock__3qt59\",\"titleV2\":\"titleV2__1vNPd\",\"toggleEnabled\":\"toggleEnabled__1YxGo\",\"dotdotdot\":\"dotdotdot__QCeCb\",\"x\":\"x__2-2Ri\",\"details\":\"details__HPGwA\",\"info\":\"info__1Mdsc\",\"moreInfo\":\"moreInfo__xH_v3\",\"infoExtended\":\"infoExtended__fsD1b\",\"toggled\":\"toggled__32-0z\",\"titleLastWord\":\"titleLastWord__1oG2_\",\"subtitleLastWord\":\"subtitleLastWord__1yfuh\",\"description\":\"description__2hX0n\",\"descLink\":\"descLink__38KaW\",\"multiline\":\"multiline__1S8Ve\",\"networkUpsellCTA\":\"networkUpsellCTA__f4Wqd\",\"networkIcon\":\"networkIcon__1mTPk\",\"dogEar\":\"dogEar__2C44Q\",\"networkIconHoverStateV2\":\"networkIconHoverStateV2__3jWpP\",\"tile-text-center\":\"tile-text-center__2OMDh\",\"fadeTile\":\"fadeTile__dmVZC\",\"fadeImage\":\"fadeImage__1Slnt\",\"imageOverlayDetailContainer\":\"imageOverlayDetailContainer__bM476\",\"imageOverlayTitle\":\"imageOverlayTitle__16qTr\",\"titleFavorite\":\"titleFavorite__3uH7v\",\"imageOverlayDate\":\"imageOverlayDate__1RYVp\",\"imageOverlaySubtitle\":\"imageOverlaySubtitle__2vvt5\",\"imageOverlayDescription\":\"imageOverlayDescription__CzsLN\",\"imageOverlayMetadata\":\"imageOverlayMetadata__2cd4x\",\"imageOverlayNetworkLogo\":\"imageOverlayNetworkLogo__3pcBd\",\"imageOverlayFooter\":\"imageOverlayFooter__FBzC8\",\"link\":\"link__JVkk7\",\"optionalText\":\"optionalText__3RDmS\",\"tile-image-left\":\"tile-image-left__-f8D1\",\"networkLogoBubble\":\"networkLogoBubble__3E6gt\",\"playButtonOverlay\":\"playButtonOverlay__2svf-\",\"playButton\":\"playButton__20jab\",\"playButtonScale\":\"playButtonScale__2pdaB\",\"disabled\":\"disabled__4yaxU\",\"tubi\":\"tubi__24tsG\",\"tubiBadge\":\"tubiBadge__1iAkj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"carouselContainer\":\"carouselContainer__14B_7\",\"carouselItemContainer\":\"carouselItemContainer__3ao_M\",\"carouselPosterContainer\":\"carouselPosterContainer__1NjoQ\",\"container\":\"container__AKXYm\",\"redesignCollections\":\"redesignCollections__2qitz\",\"justifyLeft\":\"justifyLeft__1te3h\",\"roundArrows\":\"roundArrows__1XG2r\",\"carouselPosterWrapper\":\"carouselPosterWrapper__1XAKx\",\"emptyHeader\":\"emptyHeader__3tJE_\",\"partnerPosterWrapper\":\"partnerPosterWrapper__q_ye0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3V0WI\",\"videoContainer\":\"videoContainer__2bBqx\",\"videoSizer\":\"videoSizer__3jn0r\",\"bannerContainer\":\"bannerContainer__3w7kn\",\"exitContainer\":\"exitContainer__3sHDc\",\"digitalChannelContainer\":\"digitalChannelContainer__2yQvN\",\"loaderContainer\":\"loaderContainer__4COcf\",\"loader\":\"loader__vUn-I\",\"bannerCopy\":\"bannerCopy__3Gfge\",\"watchDetailContainer\":\"watchDetailContainer__3SbjP\",\"mobileScheduleHeader\":\"mobileScheduleHeader__3WtJz\",\"panelPlayerAltHeader\":\"panelPlayerAltHeader__19kzd\",\"altHeaderWrapper\":\"altHeaderWrapper__1onrS\",\"cta\":\"cta__MVSoX\",\"promoHeader\":\"promoHeader__1G0Px\",\"promoText\":\"promoText__3ekAm\",\"button\":\"button__1rLqs\",\"buttonText\":\"buttonText__2NX5Z\",\"scheduleGrid\":\"scheduleGrid__yshn4\",\"exitHeader\":\"exitHeader__-97XN\",\"exitCopy\":\"exitCopy__28OTc\",\"scheduleRowMobile\":\"scheduleRowMobile__O34_H\",\"scheduleLeft\":\"scheduleLeft__3G2SC\",\"networkLogo\":\"networkLogo__NU7Wa\",\"affiliateNetworkLogo\":\"affiliateNetworkLogo__19yNn\",\"altHeaderDetails\":\"altHeaderDetails__zgCbK\",\"gridLoading\":\"gridLoading__16ri6\",\"gridLoader\":\"gridLoader__1-whR\",\"playerSpacer\":\"playerSpacer__3o7Wc\",\"noScroll\":\"noScroll__yGBhW\",\"dropdown\":\"dropdown__1Z7KL\",\"videoOuterContainer\":\"videoOuterContainer__ihEwP\",\"panelPlayer\":\"panelPlayer__1wiPy\",\"tabDateLabel\":\"tabDateLabel__1Oj6s\",\"tabButtons\":\"tabButtons__33cCE\",\"tab\":\"tab__3vnl5\",\"active\":\"active__1Is4l\",\"mobileDropdowns\":\"mobileDropdowns__3waLq\",\"affiliateNetworkLogoHidden\":\"affiliateNetworkLogoHidden__3XQxs\",\"timeline\":\"timeline__24rc6\",\"timelineLeft\":\"timelineLeft__hzbdr\",\"timelineDropdown\":\"timelineDropdown__2KleK\",\"timelineMain\":\"timelineMain__2n-Du\",\"time\":\"time__2FnEd\",\"timelineEmptyArrow\":\"timelineEmptyArrow__2W_CG\",\"timelineArrow\":\"timelineArrow__3zGcg\",\"timelineRightArrow\":\"timelineRightArrow__1tEwP\",\"timelineLeftArrow\":\"timelineLeftArrow__2oUoR\",\"scheduleRow\":\"scheduleRow__3tHZR\",\"scheduleRowOpen\":\"scheduleRowOpen__3Aawu\",\"currentTime\":\"currentTime__BXvKV\",\"scheduleRowSelected\":\"scheduleRowSelected__3Vzfp\",\"altHeaderVideoContainer\":\"altHeaderVideoContainer__13pzp\",\"scheduleItemWrapper\":\"scheduleItemWrapper__1wQE5\",\"epgWrap\":\"epgWrap__3Hz0K\",\"noEpg\":\"noEpg__1p5IF\",\"epgWrapNation\":\"epgWrapNation__2KyZH\",\"epgContainer\":\"epgContainer___m7Xm\",\"dividerLine\":\"dividerLine__u3fYF\",\"breadcrumbs\":\"breadcrumbs__YmUMV\",\"resultsContainer\":\"resultsContainer__3DxlG\",\"noResultsContainer\":\"noResultsContainer__3ScF9\",\"noResultsText\":\"noResultsText__J-FO0\",\"returnToScheduleBtn\":\"returnToScheduleBtn__2iqB0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"networkLogo\":\"networkLogo__19Fkj\",\"header\":\"header__N_NXm\",\"altHeader\":\"altHeader__23I9t\",\"container\":\"container__17iFC\",\"headline\":\"headline__12REF\",\"infoContainer\":\"infoContainer__2JtJ4\",\"description\":\"description__dkkTv\",\"meta\":\"meta__gagG6\",\"buttons\":\"buttons__1L_dc\",\"showButton\":\"showButton__nnuBa\",\"altHeadline\":\"altHeadline__hJXk2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"style_container_1gjd4\",\"tile\":\"style_tile_1wiMJ\",\"moreInfo\":\"style_moreInfo_iCMoQ\",\"description\":\"style_description_2Q7av\",\"subtitle\":\"style_subtitle_3TpP5\",\"details\":\"style_details_1x0iJ\",\"titleWrapper\":\"style_titleWrapper_7iYVe\",\"actionButton\":\"style_actionButton_re0Y_\",\"title\":\"style_title_1nNrs\",\"subtitleWrapper\":\"style_subtitleWrapper_3L3iw\",\"subtitleText\":\"style_subtitleText_3cCg2\",\"subtitleLastWord\":\"style_subtitleLastWord_2lnrW\",\"titleContainer\":\"style_titleContainer_31tay\",\"titleReverse\":\"style_titleReverse_fHMvz\",\"liveBadge\":\"style_liveBadge_2zFri\",\"lock\":\"style_lock_3zzAg\",\"networkImage\":\"style_networkImage_h_LGt\",\"imageContainer\":\"style_imageContainer_188vm\",\"badge\":\"style_badge_3rOvy\",\"optionalText\":\"style_optionalText_25X6-\",\"image\":\"style_image_1ADyL\",\"play\":\"style_play_gh-zx\",\"hoverOverlay\":\"style_hoverOverlay_2KDBk\",\"networkIcon\":\"style_networkIcon_3ZLFJ\",\"imageContainerWithButtons\":\"style_imageContainerWithButtons_RK0sx\",\"scaleFromLeft\":\"style_scaleFromLeft_3Nq3-\",\"scaleFromRight\":\"style_scaleFromRight_1wNVz\",\"descLink\":\"style_descLink_1c1lX\",\"dimTile\":\"style_dimTile_38jd3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"screen\":\"GeoBlock_screen_3W3Ez\",\"info\":\"GeoBlock_info_1MLGt\",\"fox\":\"GeoBlock_fox_3koYO\",\"background\":\"GeoBlock_background_3d8qN\",\"header\":\"GeoBlock_header_3smJM\",\"message\":\"GeoBlock_message_19PGF\",\"button\":\"GeoBlock_button_3X3eU\",\"innerBackground\":\"GeoBlock_innerBackground_25fsM\",\"character\":\"GeoBlock_character_3xksG\",\"logo\":\"GeoBlock_logo_2MEPf\",\"logoButton\":\"GeoBlock_logoButton_2EQhy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__1ezvJ\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__lBSr_\",\"stylelessButton\":\"stylelessButton__22Wt7\",\"close\":\"close__20e1V\",\"OnlyLogoHeader\":\"OnlyLogoHeader__Id2_E\",\"AccountHeader\":\"AccountHeader__1hou_\",\"logo\":\"logo__2gM9a\",\"isFoxSoul\":\"isFoxSoul__2qsef\",\"isNation\":\"isNation__2Uy0e\",\"InnerHeaderWrap\":\"InnerHeaderWrap__o1WRm\",\"header\":\"header__1mDPZ\",\"isGoogle\":\"isGoogle__RH1l5\",\"closeHidden\":\"closeHidden__30BoX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__VwH9U\",\"resetPasswordSuccess\":\"resetPasswordSuccess__3W2nQ\",\"isNation\":\"isNation__1H9ID\",\"InnerContainer\":\"InnerContainer__3GCmw\",\"resetPasswordSuccessWrap\":\"resetPasswordSuccessWrap__3xGQB\",\"DefaultButton_Round\":\"DefaultButton_Round__2vh8j\",\"btnPrimary\":\"btnPrimary__LQBEG\",\"btnHollow\":\"btnHollow__tVa55\",\"btnBlue\":\"btnBlue__10UfH\",\"btnFoxSoul\":\"btnFoxSoul__1s17c\",\"isFoxSoul\":\"isFoxSoul__3cLz4\",\"DefaultErrorText\":\"DefaultErrorText__1sZfR\",\"error\":\"error__3R8HN\",\"title\":\"title__20JqU\",\"passwordLabel\":\"passwordLabel__8K-U3\",\"inputField\":\"inputField__ncefd\",\"back\":\"back__1yz5e\",\"logo\":\"logo__2__mx\",\"resetPasswordSuccessHeaderText\":\"resetPasswordSuccessHeaderText__1B25a\",\"resetPasswordSuccessText\":\"resetPasswordSuccessText__GXwVs\",\"resetPasswordSuccessButton\":\"resetPasswordSuccessButton__3v2-9\",\"signupSuccessContainer\":\"signupSuccessContainer__3qcrx\",\"secondaryHeader\":\"secondaryHeader__2T9qi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"missingCastImage\":\"missingCastImage__3Y65F\",\"imageButton\":\"imageButton__1h4Kc\",\"missingImageButton\":\"missingImageButton__Cj6lg\",\"castImage\":\"castImage__1n7vo\",\"castInitials\":\"castInitials__xljJ6\",\"castMemberContainer\":\"castMemberContainer__23l0W\",\"carouselCastMember\":\"carouselCastMember__3nP0i\",\"castNamesContainer\":\"castNamesContainer__1QQ_e\",\"actorName\":\"actorName__2qwCd\",\"characterName\":\"characterName__3XLnR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__2NhE8\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__3NhhV\",\"stylelessButton\":\"stylelessButton__3AJm0\",\"returnButtonContainer\":\"returnButtonContainer__1jdth\",\"returnButton\":\"returnButton__hIB1t\",\"gridContainer\":\"gridContainer__f_-9z\",\"gridItem\":\"gridItem__Ao_GV\",\"allItemsContainer\":\"allItemsContainer__2Avv7\",\"castItem\":\"castItem__2iDG1\",\"breadcrumb\":\"breadcrumb__3FVjo\",\"header\":\"header__22Xp2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headerContentWrapper\":\"headerContentWrapper__U6SVy\",\"content\":\"content__1AbTX\",\"fullWidth\":\"fullWidth__3ShQg\",\"hideContent\":\"hideContent__125Hx\",\"rightContent\":\"rightContent__358MC\",\"leftContent\":\"leftContent__23S6U\",\"iconContainer\":\"iconContainer__1YmPJ\",\"profileIconContainer\":\"profileIconContainer__13HSH\",\"profileDivider\":\"profileDivider__397mc\",\"profileButton\":\"profileButton__IFjxN\",\"userIcon\":\"userIcon__2K_iE\",\"mvpdButton\":\"mvpdButton__7FrxC\",\"userButton\":\"userButton__XcrDz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__Rzbtn\",\"scrollableDiv\":\"scrollableDiv__35iNS\",\"outterContainer\":\"outterContainer__2nYjS\",\"carouselPoster\":\"carouselPoster__3CR3Y\",\"carouselPosterFirst\":\"carouselPosterFirst__2a8B8\",\"carouselPosterEnd\":\"carouselPosterEnd__yX8B9\",\"carouselPosterImage\":\"carouselPosterImage__2i178\",\"logo\":\"logo__1YT0k\",\"header\":\"header__QNJa6\",\"title\":\"title__QMSUP\",\"mainTitle\":\"mainTitle__34tVa\",\"subtitle\":\"subtitle__3Ykw5\",\"carousel\":\"carousel__3rLuH\",\"emptyHeader\":\"emptyHeader__3dOvV\",\"contents\":\"contents__1GDNF\",\"screen\":\"screen__1Kyfg\"};","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var toString = require('./toString');\n\n/**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\nfunction replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n}\n\nmodule.exports = replace;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","module.exports = (__webpack_require__(88))(123);","'use strict';\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar PropTypes = require('prop-types');\nvar createReactClass = require('create-react-class');\nvar isVisibleWithOffset = require('./lib/is-visible-with-offset')\n\nvar containmentPropType = PropTypes.any;\n\nif (typeof window !== 'undefined') {\n containmentPropType = PropTypes.instanceOf(window.Element);\n}\n\nfunction throttle (callback, limit) {\n var wait = false;\n return function () {\n if (!wait) {\n wait = true;\n setTimeout(function () {\n callback();\n wait = false;\n }, limit);\n }\n }\n}\n\nfunction debounce(func, wait) {\n var timeout;\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n func.apply(context, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n\nfunction normalizeRect (rect) {\n if (rect.width === undefined) {\n rect.width = rect.right - rect.left;\n }\n\n if (rect.height === undefined) {\n rect.height = rect.bottom - rect.top;\n }\n\n return rect;\n}\n\nmodule.exports = createReactClass({\n displayName: 'VisibilitySensor',\n\n propTypes: {\n onChange: PropTypes.func,\n active: PropTypes.bool,\n partialVisibility: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n ]),\n delayedCall: PropTypes.bool,\n offset: PropTypes.oneOfType([\n PropTypes.shape({\n top: PropTypes.number,\n left: PropTypes.number,\n bottom: PropTypes.number,\n right: PropTypes.number\n }),\n // deprecated offset property\n PropTypes.shape({\n direction: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n value: PropTypes.number\n })\n ]),\n scrollCheck: PropTypes.bool,\n scrollDelay: PropTypes.number,\n scrollThrottle: PropTypes.number,\n resizeCheck: PropTypes.bool,\n resizeDelay: PropTypes.number,\n resizeThrottle: PropTypes.number,\n intervalCheck: PropTypes.bool,\n intervalDelay: PropTypes.number,\n containment: containmentPropType,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n ]),\n minTopValue: PropTypes.number,\n },\n\n getDefaultProps: function () {\n return {\n active: true,\n partialVisibility: false,\n minTopValue: 0,\n scrollCheck: false,\n scrollDelay: 250,\n scrollThrottle: -1,\n resizeCheck: false,\n resizeDelay: 250,\n resizeThrottle: -1,\n intervalCheck: true,\n intervalDelay: 100,\n delayedCall: false,\n offset: {},\n containment: null,\n children: React.createElement('span')\n };\n },\n\n getInitialState: function () {\n return {\n isVisible: null,\n visibilityRect: {}\n };\n },\n\n componentDidMount: function () {\n this.node = ReactDOM.findDOMNode(this);\n if (this.props.active) {\n this.startWatching();\n }\n },\n\n componentWillUnmount: function () {\n this.stopWatching();\n },\n\n componentWillReceiveProps: function (nextProps) {\n if (nextProps.active && !this.props.active) {\n this.setState(this.getInitialState());\n this.startWatching();\n } else if (!nextProps.active) {\n this.stopWatching();\n }\n },\n\n componentDidUpdate: function (prevProps) {\n this.node = ReactDOM.findDOMNode(this);\n },\n\n getContainer: function () {\n return this.props.containment || window;\n },\n\n addEventListener: function (target, event, delay, throttle) {\n if (!this.debounceCheck) {\n this.debounceCheck = {};\n }\n\n var timeout;\n var func;\n\n var later = function () {\n timeout = null;\n this.check();\n }.bind(this);\n\n if (throttle > -1) {\n func = function () {\n if (!timeout) {\n timeout = setTimeout(later, throttle || 0);\n }\n };\n } else {\n func = function () {\n clearTimeout(timeout);\n timeout = setTimeout(later, delay || 0);\n };\n }\n\n var info = {\n target: target,\n fn: func,\n getLastTimeout: function () {\n return timeout;\n },\n };\n\n target.addEventListener(event, info.fn);\n this.debounceCheck[event] = info;\n },\n\n startWatching: function () {\n if (this.debounceCheck || this.interval) { return; }\n\n if (this.props.intervalCheck) {\n this.interval = setInterval(this.check, this.props.intervalDelay);\n }\n\n if (this.props.scrollCheck) {\n this.addEventListener(\n this.getContainer(),\n 'scroll',\n this.props.scrollDelay,\n this.props.scrollThrottle\n );\n }\n\n if (this.props.resizeCheck) {\n this.addEventListener(\n window,\n 'resize',\n this.props.resizeDelay,\n this.props.resizeThrottle\n );\n }\n\n // if dont need delayed call, check on load ( before the first interval fires )\n !this.props.delayedCall && this.check();\n },\n\n stopWatching: function () {\n if (this.debounceCheck) {\n // clean up event listeners and their debounce callers\n for (var debounceEvent in this.debounceCheck) {\n if (this.debounceCheck.hasOwnProperty(debounceEvent)) {\n var debounceInfo = this.debounceCheck[debounceEvent];\n\n clearTimeout(debounceInfo.getLastTimeout());\n debounceInfo.target.removeEventListener(\n debounceEvent, debounceInfo.fn\n );\n\n this.debounceCheck[debounceEvent] = null;\n }\n }\n }\n this.debounceCheck = null;\n\n if (this.interval) { this.interval = clearInterval(this.interval); }\n },\n\n roundRectDown: function (rect) {\n return {\n top: Math.floor(rect.top),\n left: Math.floor(rect.left),\n bottom: Math.floor(rect.bottom),\n right: Math.floor(rect.right),\n };\n },\n\n /**\n * Check if the element is within the visible viewport\n */\n check: function () {\n var el = this.node;\n var rect;\n var containmentRect;\n // if the component has rendered to null, dont update visibility\n if (!el) {\n return this.state;\n }\n\n rect = normalizeRect(this.roundRectDown(el.getBoundingClientRect()));\n\n if (this.props.containment) {\n var containmentDOMRect = this.props.containment.getBoundingClientRect();\n containmentRect = {\n top: containmentDOMRect.top,\n left: containmentDOMRect.left,\n bottom: containmentDOMRect.bottom,\n right: containmentDOMRect.right,\n }\n } else {\n containmentRect = {\n top: 0,\n left: 0,\n bottom: window.innerHeight || document.documentElement.clientHeight,\n right: window.innerWidth || document.documentElement.clientWidth\n };\n }\n\n // Check if visibility is wanted via offset?\n var offset = this.props.offset || {};\n var hasValidOffset = typeof offset === 'object';\n if (hasValidOffset) {\n containmentRect.top += offset.top || 0;\n containmentRect.left += offset.left || 0;\n containmentRect.bottom -= offset.bottom || 0;\n containmentRect.right -= offset.right || 0;\n }\n\n var visibilityRect = {\n top: rect.top >= containmentRect.top,\n left: rect.left >= containmentRect.left,\n bottom: rect.bottom <= containmentRect.bottom,\n right: rect.right <= containmentRect.right\n };\n\n var hasSize = rect.height > 0 && rect.width > 0;\n\n var isVisible = (\n hasSize &&\n visibilityRect.top &&\n visibilityRect.left &&\n visibilityRect.bottom &&\n visibilityRect.right\n );\n\n // check for partial visibility\n if (hasSize && this.props.partialVisibility) {\n var partialVisible =\n rect.top <= containmentRect.bottom && rect.bottom >= containmentRect.top &&\n rect.left <= containmentRect.right && rect.right >= containmentRect.left;\n\n // account for partial visibility on a single edge\n if (typeof this.props.partialVisibility === 'string') {\n partialVisible = visibilityRect[this.props.partialVisibility]\n }\n\n // if we have minimum top visibility set by props, lets check, if it meets the passed value\n // so if for instance element is at least 200px in viewport, then show it.\n isVisible = this.props.minTopValue\n ? partialVisible && rect.top <= (containmentRect.bottom - this.props.minTopValue)\n : partialVisible\n }\n\n // Deprecated options for calculating offset.\n if (typeof offset.direction === 'string' &&\n typeof offset.value === 'number') {\n console.warn('[notice] offset.direction and offset.value have been deprecated. They still work for now, but will be removed in next major version. Please upgrade to the new syntax: { %s: %d }', offset.direction, offset.value)\n\n isVisible = isVisibleWithOffset(offset, rect, containmentRect);\n }\n\n var state = this.state;\n // notify the parent when the value changes\n if (this.state.isVisible !== isVisible) {\n state = {\n isVisible: isVisible,\n visibilityRect: visibilityRect\n };\n this.setState(state);\n if (this.props.onChange) this.props.onChange(isVisible, visibilityRect);\n }\n\n return state;\n },\n\n render: function () {\n if (this.props.children instanceof Function) {\n return this.props.children({\n isVisible: this.state.isVisible,\n visibilityRect: this.state.visibilityRect,\n });\n }\n return React.Children.only(this.props.children);\n }\n});\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tile\":\"tile__3g9xz\",\"title\":\"title__3hP5D\",\"titleLock\":\"titleLock__36VcO\",\"header\":\"header__1caUh\",\"uppercase\":\"uppercase__31Z4C\",\"hr\":\"hr__28S1Z\",\"button\":\"button__1W-vf\",\"CTAContainer\":\"CTAContainer__1DXxh\",\"actionButtons\":\"actionButtons__3w57r\",\"actionButton\":\"actionButton__1acd3\",\"promoActionButton\":\"promoActionButton__2b2lg\",\"image\":\"image__10P-L\",\"single\":\"single__1NkJj\",\"imageContainer\":\"imageContainer__3Oaq3\",\"promoCTAContainer\":\"promoCTAContainer__2UNvx\",\"promoDescription\":\"promoDescription__2mBSq\",\"defaultLinkButton\":\"defaultLinkButton__u13iu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"play\":\"play__1FIEY\",\"carouselPosterFirst\":\"carouselPosterFirst__1UmvZ\",\"carouselPoster\":\"carouselPoster__3ZrxK\",\"carouselPosterEnd\":\"carouselPosterEnd__13qzP\",\"overlay\":\"overlay__1wv-Y\",\"logoContainer\":\"logoContainer__3avfO\",\"logo\":\"logo__1fkX7\",\"hoverStateToolTip\":\"hoverStateToolTip__1v9G7\",\"watchList\":\"watchList__rS0kG\",\"watchList_Label\":\"watchList_Label__3zsvH\",\"descriptionBlock\":\"descriptionBlock__XjHOR\",\"episodeTitle\":\"episodeTitle__2WtLm\",\"description\":\"description__1UFBB\",\"videoContainer\":\"videoContainer__30u7B\",\"shadowOverlay\":\"shadowOverlay__24N95\",\"previewContainer\":\"previewContainer__Ko_X6\",\"imageContainer\":\"imageContainer__2RCar\",\"playText\":\"playText__1dJKw\",\"videoPoster\":\"videoPoster__5wUiP\",\"posterCTA\":\"posterCTA__2ydbK\",\"posterContents\":\"posterContents__pZBxS\",\"invisible\":\"invisible__3eQHZ\",\"posterVisible\":\"posterVisible__3qsqr\",\"simplifiedHover\":\"simplifiedHover__1eePP\",\"carouselPosterImage\":\"carouselPosterImage__wIEse\",\"badge\":\"badge__8OCPX\",\"blueBadge\":\"blueBadge__1W76B\",\"newBadge\":\"newBadge__2QYb2\",\"redBadge\":\"redBadge__2PZAI\",\"liveBadge\":\"liveBadge__1GYwi\",\"defaultBadge\":\"defaultBadge__1SBk4\",\"audioBadge\":\"audioBadge__1ePyU\",\"otherBadge\":\"otherBadge__1P-9i\",\"hoverStateToolTipLabel\":\"hoverStateToolTipLabel__1ylqj\",\"hoverStateToolTipTip\":\"hoverStateToolTipTip__3TV-5\",\"hoverStateToolTipRight\":\"hoverStateToolTipRight__1vUMp\",\"watchListToolTip\":\"watchListToolTip__1YDVN\",\"watchListButtonContainer\":\"watchListButtonContainer__1CuHX\",\"carouselContainer\":\"carouselContainer__w6omk\",\"additionalPoster\":\"additionalPoster__1iWVD\",\"seriesDetailAnonymous\":\"seriesDetailAnonymous__2jljD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"screen\":\"Error500_screen_1Z9v3\",\"info\":\"Error500_info_1jgLA\",\"fox\":\"Error500_fox_3pPki\",\"backgroundOverlay\":\"Error500_backgroundOverlay_3kMqx\",\"background\":\"Error500_background_2K8JK\",\"header\":\"Error500_header_3NY8f\",\"message\":\"Error500_message_17Ro-\",\"character\":\"Error500_character_1gHi9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__2Br9j\",\"forgotPassword\":\"forgotPassword__1Z3bz\",\"isNation\":\"isNation__336_b\",\"InnerContainer\":\"InnerContainer__2DlWj\",\"forgotPasswordContainer\":\"forgotPasswordContainer__LFuoN\",\"DefaultButton_Round\":\"DefaultButton_Round__39eux\",\"btnPrimary\":\"btnPrimary__3bPsg\",\"btnHollow\":\"btnHollow__diZq3\",\"btnBlue\":\"btnBlue__15LND\",\"btnFoxSoul\":\"btnFoxSoul__3YS-Q\",\"DefaultErrorText\":\"DefaultErrorText__2d43V\",\"error\":\"error__2hhQT\",\"title\":\"title__3pG8V\",\"passwordLabel\":\"passwordLabel__3_osf\",\"inputField\":\"inputField__1wqBz\",\"back\":\"back__2ELKp\",\"secondaryHeader\":\"secondaryHeader__3YOIr\",\"forgotPasswordFormContainer\":\"forgotPasswordFormContainer__2O5TF\",\"forgotPasswordText\":\"forgotPasswordText__L-ZT8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__m3sRa\",\"signOut\":\"signOut__2eZOi\",\"isNation\":\"isNation__3xpVK\",\"InnerContainer\":\"InnerContainer__6mGOB\",\"signOutContainer\":\"signOutContainer__3mLtO\",\"DefaultButton_Round\":\"DefaultButton_Round__3yi3l\",\"btnPrimary\":\"btnPrimary__AU4ks\",\"btnHollow\":\"btnHollow__1BfQo\",\"btnBlue\":\"btnBlue__1Nj_H\",\"btnFoxSoul\":\"btnFoxSoul__3Uvrq\",\"DefaultErrorText\":\"DefaultErrorText__1e_uh\",\"title\":\"title__2rUj9\",\"passwordLabel\":\"passwordLabel__ltRcy\",\"inputField\":\"inputField__1P_MZ\",\"back\":\"back__3f9sq\",\"headerSuccess\":\"headerSuccess__1KSaP\",\"logoutContainer\":\"logoutContainer__1TS0k\",\"logoutHeaderText\":\"logoutHeaderText__1ifF0\",\"logoutText\":\"logoutText__4ZeQE\",\"perksButtonContainer\":\"perksButtonContainer__350LA\",\"cancel\":\"cancel__2flcc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__3vVCP\",\"Perks\":\"Perks__26bQJ\",\"isNation\":\"isNation__1Ce4L\",\"InnerContainer\":\"InnerContainer__2hiP8\",\"PerksContainer\":\"PerksContainer__2HMZN\",\"DefaultButton_Round\":\"DefaultButton_Round__2M9_k\",\"btnPrimary\":\"btnPrimary__2elrY\",\"btnHollow\":\"btnHollow__3Pscy\",\"btnBlue\":\"btnBlue__33sUA\",\"btnFoxSoul\":\"btnFoxSoul__2Qf0q\",\"DefaultErrorText\":\"DefaultErrorText__2keDu\",\"title\":\"title__1aw1r\",\"passwordLabel\":\"passwordLabel__2ds8Q\",\"inputField\":\"inputField__35Zmg\",\"back\":\"back__2TrTx\",\"perksWrap\":\"perksWrap__1DYAO\",\"perkContainer\":\"perkContainer__3jLE3\",\"imageContainer\":\"imageContainer__38W_1\",\"perkIcon\":\"perkIcon__275Ix\",\"perkText\":\"perkText__9ixar\",\"buttonWrap\":\"buttonWrap__M3n2U\",\"signInText\":\"signInText__1nkJF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentContainer\":\"contentContainer__3KRj_\",\"infoContainer\":\"infoContainer__3v5WN\",\"article\":\"article__1sVJA\",\"castDetail\":\"castDetail__xGZ23\",\"nextCastArrow\":\"nextCastArrow__2ekWn\",\"prevCastArrow\":\"prevCastArrow__379bn\",\"breadcrumbs\":\"breadcrumbs__wP8H2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1DrRi\",\"contents\":\"contents__2nHOz\",\"infoContainer\":\"infoContainer__2Nqxz\",\"visible\":\"visible__3PmLK\",\"description\":\"description__2PWtQ\",\"closeButtonContainer\":\"closeButtonContainer__2u4mS\",\"closeButton\":\"closeButton__2wZHs\",\"actionButton\":\"actionButton__837t8\",\"iconContainer\":\"iconContainer__3dE62\",\"label\":\"label__HU3oe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3IHfC\",\"detailContainer\":\"detailContainer__3n31A\",\"image\":\"image__Sd-Qa\",\"infoContainer\":\"infoContainer__3oOf7\",\"titleContainer\":\"titleContainer__8-P10\",\"title\":\"title__2RYNA\",\"actionButtons\":\"actionButtons__2efln\",\"primaryButton\":\"primaryButton__1DjYu\",\"secondaryButton\":\"secondaryButton__3fmJM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__RFXZi\",\"miniPlayerActive\":\"miniPlayerActive__1zlUI\",\"btnClose\":\"btnClose__2_IGT\",\"miniPlayerActiveSafari\":\"miniPlayerActiveSafari__Ip11L\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__1aDRh\",\"stylelessButton\":\"stylelessButton__3uEkO\",\"btnPip\":\"btnPip__2OsAa\",\"btnPopIn\":\"btnPopIn__2g5L6\",\"disableMiniPlayer\":\"disableMiniPlayer__30kTr\",\"resizablePlayer\":\"resizablePlayer__2biYP\",\"innerContainer\":\"innerContainer__3Gsdp\",\"miniPlayer\":\"miniPlayer__2MEG_\",\"fadeIn\":\"fadeIn__1vtP1\",\"epgLivePageWatchDetailContainer\":\"epgLivePageWatchDetailContainer__1PYgJ\",\"container\":\"container__2tJ6n\",\"videoContainerWrapper\":\"videoContainerWrapper__19nDv\",\"hide\":\"hide__1HR7m\",\"watchDetailContainer\":\"watchDetailContainer__120ki\",\"watchDetailGradient\":\"watchDetailGradient__3JYv3\",\"nationDigitalVideo\":\"nationDigitalVideo__1E90f\",\"nationDigitalVideoContainer\":\"nationDigitalVideoContainer__1Q4iS\",\"playerSpacer\":\"playerSpacer__1I_Zu\",\"fullscreen\":\"fullscreen__3n50r\"};","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseClamp = require('./_baseClamp'),\n baseToString = require('./_baseToString'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\nfunction startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n}\n\nmodule.exports = startsWith;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__286GU\",\"innerContainer\":\"innerContainer__2s1Ou\",\"headerText\":\"headerText__3-SbB\",\"descriptionText\":\"descriptionText__3BQqg\",\"headerBar\":\"headerBar__fPiLF\",\"headerBarExtraPadding\":\"headerBarExtraPadding__20qLE\",\"headerBarAutoWidth\":\"headerBarAutoWidth__1zK8F\",\"headerContainer\":\"headerContainer__zj7MY\",\"close\":\"close__f_O1O\",\"logo\":\"logo__3zF_U\",\"headerBarBorder\":\"headerBarBorder__3V6NX\",\"headerBarText\":\"headerBarText__1pIbw\",\"back\":\"back__38uYA\",\"backDesktop\":\"backDesktop__3eYqw\",\"hideDesktop\":\"hideDesktop__3NaOt\",\"hideMobile\":\"hideMobile__vSaL3\",\"confirmContainer\":\"confirmContainer__180R4\",\"confirm\":\"confirm__JPkk7\",\"contentHeaderText\":\"contentHeaderText__1qJzb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1DYBN\",\"overlay\":\"overlay__LGQ9K\",\"innerContainer\":\"innerContainer__2R0jN\",\"playerContainer\":\"playerContainer__3jfjk\",\"actionButtons\":\"actionButtons__1oUgZ\",\"actionButton\":\"actionButton__zkscr\",\"videoContainerWrapper\":\"videoContainerWrapper__tmZ4j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__3mgcj\",\"isNation\":\"isNation__2QFxW\",\"InnerContainer\":\"InnerContainer__2Jay9\",\"DefaultButton_Round\":\"DefaultButton_Round__14rhq\",\"btnPrimary\":\"btnPrimary__34WD5\",\"btnHollow\":\"btnHollow__1yT-J\",\"btnBlue\":\"btnBlue__2_cr8\",\"btnFoxSoul\":\"btnFoxSoul__1BW-r\",\"DefaultErrorText\":\"DefaultErrorText__1mGbd\",\"defaultErrorGenericText\":\"defaultErrorGenericText__2PMoK\",\"title\":\"title__YGK80\",\"passwordLabel\":\"passwordLabel__3OMIC\",\"inputField\":\"inputField__3FZR4\",\"back\":\"back__2RPwN\",\"socialFacebookButton\":\"socialFacebookButton__2tE76\",\"socialFacebookButtonIcon\":\"socialFacebookButtonIcon__3zceP\",\"socialFacebookButtonDivider\":\"socialFacebookButtonDivider__1Try_\",\"socialFacebookButtonText\":\"socialFacebookButtonText__114yL\",\"socialFacebookButtonTextOptional\":\"socialFacebookButtonTextOptional__2QyeE\",\"socialMigrationDropdownText\":\"socialMigrationDropdownText__3AQuE\",\"socialMigrationText\":\"socialMigrationText__3Cj5U\",\"socialMigrationContainer\":\"socialMigrationContainer__1KX1p\",\"circleIcon\":\"circleIcon__29zz4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"altHeaderContainer\":\"altHeaderContainer__14RjS\",\"fallbackBackground\":\"fallbackBackground__4Enb7\",\"altHeader\":\"altHeader__HQhc4\",\"altHeadline\":\"altHeadline__fFbYi\",\"hide\":\"hide__1mnFS\",\"stickyHeader\":\"stickyHeader__2nmJX\",\"dropdownStickyHeader\":\"dropdownStickyHeader__1Cojz\",\"pointer\":\"pointer__zOti3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"marketingBanner\":\"marketingBanner__1x5Tg\",\"contentContainer\":\"contentContainer__bxUo8\",\"displayContainer\":\"displayContainer__SBxkx\",\"videoImage\":\"videoImage__ZAjAT\",\"marketing-video\":\"marketing-video__2att3\",\"shadow\":\"shadow__NiIUR\",\"logo\":\"logo__1f2sf\",\"headline\":\"headline__3qltx\",\"description\":\"description__cTEml\",\"descriptionText\":\"descriptionText__243hN\",\"CTA\":\"CTA__3-Ngg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__2zGan\",\"DeleteAccount\":\"DeleteAccount__2U14H\",\"isNation\":\"isNation__1xN6a\",\"InnerContainer\":\"InnerContainer__2lSGb\",\"DefaultButton_Round\":\"DefaultButton_Round__3j1Eu\",\"btnPrimary\":\"btnPrimary__3pn3q\",\"btnHollow\":\"btnHollow__3Lkbt\",\"btnBlue\":\"btnBlue__LQZ-i\",\"btnFoxSoul\":\"btnFoxSoul__2rzYG\",\"DefaultErrorText\":\"DefaultErrorText__3Qjsy\",\"title\":\"title__P5XIj\",\"passwordLabel\":\"passwordLabel__VSEdD\",\"inputField\":\"inputField__3NGNW\",\"back\":\"back__38Sq7\",\"DeleteAccountContainer\":\"DeleteAccountContainer__3HZnW\",\"logoutContainer\":\"logoutContainer__1U0A_\",\"logoutHeaderText\":\"logoutHeaderText__1tXZE\",\"logoutText\":\"logoutText__wHoPv\",\"btnWrap\":\"btnWrap__HWjPi\",\"deleteBtn\":\"deleteBtn__3N6yL\",\"cancelBtn\":\"cancelBtn___jK-d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"promo\":\"promo__3wk96\",\"promoContent\":\"promoContent__38MIR\",\"promoImage\":\"promoImage__2ZlfO\",\"promoDetails\":\"promoDetails__1xaZL\",\"promoLogo\":\"promoLogo__1NWQL\",\"promoDescription\":\"promoDescription__1qGFk\",\"promoCTA\":\"promoCTA__2vh6J\",\"btn\":\"btn__1K-42\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2uNvF\",\"gradientDivider\":\"gradientDivider__12I-P\",\"NFTContainer\":\"NFTContainer__3b4iv\",\"divider\":\"divider__fOqq7\",\"contentContainer\":\"contentContainer__33t0g\",\"noPrevContentContainer\":\"noPrevContentContainer__WqhFb\",\"content\":\"content__25uDK\",\"activeDropContent\":\"activeDropContent__n4ZxY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__snJoC\",\"thumbnailContainer\":\"thumbnailContainer__9AWDC\",\"videoThumbnail\":\"videoThumbnail__10HBl\",\"thumbnail\":\"thumbnail__drivN\",\"imageContainer\":\"imageContainer__I8m3V\",\"image\":\"image__3OjY2\",\"noPrevImage\":\"noPrevImage__2M2EE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"livePageOverflowWrap\":\"livePageOverflowWrap__3fDJT\",\"headerPadding\":\"headerPadding__2yDaR\",\"withNetworks\":\"withNetworks__1t7st\",\"appContainer\":\"appContainer__1L2uL\",\"loaderImg\":\"loaderImg__Js3fN\",\"spin\":\"spin__kFjhm\",\"loaderWrap\":\"loaderWrap__1FyFy\",\"hiddenContent\":\"hiddenContent__3z07u\",\"overflowHidden\":\"overflowHidden__ugfos\"};","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","module.exports = (__webpack_require__(88))(44);","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"textRowRegular\":\"textRowRegular__2Ywmx\",\"textRowCenter\":\"textRowCenter__37GuI\",\"textRowRounded\":\"textRowRounded__WbiCo\",\"separator\":\"separator__2xrqc\",\"carousel\":\"carousel__FauIP\",\"carouselItemTile\":\"carouselItemTile__1lRdf\",\"gradientImageWide\":\"gradientImageWide__ugN8o\",\"gradientImageRounded\":\"gradientImageRounded__109NT\",\"gradientImagePoster\":\"gradientImagePoster__2v3jB\"};","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","module.exports = (__webpack_require__(88))(150);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.load = load;\nexports.select = select;\nexports.save = save;\nexports.remove = remove;\nexports.setRawCookie = setRawCookie;\nexports.plugToRequest = plugToRequest;\n\nvar _cookie = require('cookie');\n\nvar _cookie2 = _interopRequireDefault(_cookie);\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _isNode = require('is-node');\n\nvar _isNode2 = _interopRequireDefault(_isNode);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _rawCookie = {};\nvar _res = undefined;\n\nfunction _isResWritable() {\n return _res && !_res.headersSent;\n}\n\nfunction load(name, doNotParse, opt) {\n var cookies = _isNode2.default ? _rawCookie : _cookie2.default.parse(document.cookie, opt);\n var cookieVal = cookies && cookies[name];\n\n if (typeof doNotParse === 'undefined') {\n doNotParse = !cookieVal || cookieVal[0] !== '{' && cookieVal[0] !== '[';\n }\n\n if (!doNotParse) {\n try {\n cookieVal = JSON.parse(cookieVal);\n } catch (e) {\n // Not serialized object\n }\n }\n\n return cookieVal;\n}\n\nfunction select(regex) {\n var cookies = _isNode2.default ? _rawCookie : _cookie2.default.parse(document.cookie);\n\n if (!cookies) {\n return {};\n }\n\n if (!regex) {\n return cookies;\n }\n\n return Object.keys(cookies).reduce(function (accumulator, name) {\n if (!regex.test(name)) {\n return accumulator;\n }\n\n var newCookie = {};\n newCookie[name] = cookies[name];\n return (0, _objectAssign2.default)({}, accumulator, newCookie);\n }, {});\n}\n\nfunction save(name, val, opt) {\n _rawCookie[name] = val;\n\n // allow you to work with cookies as objects.\n if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') {\n _rawCookie[name] = JSON.stringify(val);\n }\n\n // Cookies only work in the browser\n if (!_isNode2.default) {\n document.cookie = _cookie2.default.serialize(name, _rawCookie[name], opt);\n }\n\n if (_isResWritable() && _res.cookie) {\n var expressOpt = _extends({}, opt);\n if (expressOpt.maxAge) {\n // the standard for maxAge is seconds but express uses milliseconds\n expressOpt.maxAge = opt.maxAge * 1000;\n }\n\n _res.cookie(name, val, opt);\n }\n}\n\nfunction remove(name, opt) {\n delete _rawCookie[name];\n\n if (typeof opt === 'undefined') {\n opt = {};\n } else if (typeof opt === 'string') {\n // Will be deprecated in future versions\n opt = { path: opt };\n } else {\n // Prevent mutation of opt below\n opt = (0, _objectAssign2.default)({}, opt);\n }\n\n if (typeof document !== 'undefined') {\n opt.expires = new Date(1970, 1, 1, 0, 0, 1);\n opt.maxAge = 0;\n document.cookie = _cookie2.default.serialize(name, '', opt);\n }\n\n if (_isResWritable() && _res.clearCookie) {\n _res.clearCookie(name, opt);\n }\n}\n\nfunction setRawCookie(rawCookie) {\n if (rawCookie) {\n _rawCookie = _cookie2.default.parse(rawCookie);\n } else {\n _rawCookie = {};\n }\n}\n\nfunction plugToRequest(req, res) {\n if (req.cookie) {\n _rawCookie = req.cookie;\n } else if (req.cookies) {\n _rawCookie = req.cookies;\n } else if (req.headers && req.headers.cookie) {\n setRawCookie(req.headers.cookie);\n } else {\n _rawCookie = {};\n }\n\n _res = res;\n\n return function unplug() {\n _res = null;\n _rawCookie = {};\n };\n}\n\nexports.default = {\n setRawCookie: setRawCookie,\n load: load,\n select: select,\n save: save,\n remove: remove,\n plugToRequest: plugToRequest\n};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"screen\":\"Shows_screen_3dtIQ\",\"header\":\"Shows_header_WSDHY\",\"contentContainer\":\"Shows_contentContainer_juNkv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__jX_xL\",\"isNation\":\"isNation__1zxnt\",\"InnerContainer\":\"InnerContainer__1-uvP\",\"DefaultButton_Round\":\"DefaultButton_Round__2WaRo\",\"btnPrimary\":\"btnPrimary__1L6j2\",\"btnHollow\":\"btnHollow__wRUNQ\",\"btnBlue\":\"btnBlue__20fT3\",\"btnFoxSoul\":\"btnFoxSoul__2vVwy\",\"DefaultErrorText\":\"DefaultErrorText__2kCao\",\"defaultErrorGenericText\":\"defaultErrorGenericText__2TTEp\",\"title\":\"title__K0Rvv\",\"passwordLabel\":\"passwordLabel__1YaRx\",\"inputField\":\"inputField__1AH7J\",\"back\":\"back__3UmlK\",\"signInAppleButton\":\"signInAppleButton__10h9Z\",\"signInAppleButtonIcon\":\"signInAppleButtonIcon__2WSZX\",\"signInAppleButtonDivider\":\"signInAppleButtonDivider__2z3Xj\",\"signInAppleButtonText\":\"signInAppleButtonText__1wZc0\",\"circleIcon\":\"circleIcon__3UAKv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__wuPgy\",\"step\":\"step__2FMOH\",\"filled\":\"filled__1ocx-\",\"connector\":\"connector__cKOm8\",\"anchor\":\"anchor__8MsZT\",\"completed\":\"completed__jUiUf\",\"label\":\"label__2Y4Lr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__2mSnX\",\"smallerHeader\":\"smallerHeader__1ZWW9\",\"altHeader\":\"altHeader__3dOP4\",\"headline\":\"headline__1l1P1\",\"kicker\":\"kicker__2nKdP\",\"nationKicker\":\"nationKicker__3m7UW\",\"container\":\"container__fC17u\",\"imageAndText\":\"imageAndText__2Yqkj\",\"text\":\"text__3l7Jv\",\"smallerImageAndText\":\"smallerImageAndText__3Oe8_\",\"imageOnly\":\"imageOnly__WLsRL\",\"smallerImageOnly\":\"smallerImageOnly__28jYR\",\"seriesLogo\":\"seriesLogo__2o6q9\",\"headerTitle\":\"headerTitle__2PNn7\",\"smallerTitle\":\"smallerTitle__2pFDs\",\"infoContainer\":\"infoContainer__5ICWk\",\"smallerInfoContainer\":\"smallerInfoContainer__-q7eP\",\"withSmallHeader\":\"withSmallHeader__25X5w\",\"badge\":\"badge__D9rIL\",\"foxAwesomeMoreLink\":\"foxAwesomeMoreLink__24xa3\",\"moreLink\":\"moreLink__9-tpX\",\"moreInfo\":\"moreInfo__aK7-c\",\"secondaryText\":\"secondaryText__1Obbr\",\"showButton\":\"showButton__4MliD\",\"showName\":\"showName___0Rz9\",\"infoTagsRedesign\":\"infoTagsRedesign__14XE2\",\"infoTagsRedesignContainer\":\"infoTagsRedesignContainer__1Q-37\",\"description\":\"description__dKUKr\",\"highlight\":\"highlight__cNgVm\",\"progress\":\"progress__39B6-\",\"buttons\":\"buttons__2qENp\",\"buttonGutter\":\"buttonGutter__3rb3e\",\"descriptionTextVideo\":\"descriptionTextVideo__3WIVQ\",\"detailContainer\":\"detailContainer__zAO6V\",\"carouselStyle\":\"carouselStyle__1PhUk\",\"heroPlayerCTA\":\"heroPlayerCTA__2ksnx\",\"singleSlide\":\"singleSlide__2O4ge\",\"moreInfoButton\":\"moreInfoButton__1H0hq\",\"descriptionText\":\"descriptionText__2PBYd\",\"highlightMovie\":\"highlightMovie__6lnJy\",\"highlightSeries\":\"highlightSeries__3WwDI\",\"redBadge\":\"redBadge__2x8IP\",\"liveBadge\":\"liveBadge__3HGAv\",\"defaultBadge\":\"defaultBadge__LckwX\",\"upcomingBadge\":\"upcomingBadge__iWUJa\",\"featuredBadge\":\"featuredBadge__22aSh\",\"done\":\"done__3AqeD\",\"meta\":\"meta__1QwnV\",\"networkLogo\":\"networkLogo__2JqAY\",\"squared\":\"squared__2NavM\",\"showButtonText\":\"showButtonText__XyVpz\",\"toggle\":\"toggle__2VdkE\",\"fadeButtons\":\"fadeButtons__1Rody\",\"icon\":\"icon__fM05t\",\"paddingTopHeader\":\"paddingTopHeader__3LDPE\",\"descriptionButton\":\"descriptionButton__1QRYH\",\"descriptionTextMovie\":\"descriptionTextMovie__2XMi2\",\"descriptionTextSeries\":\"descriptionTextSeries__C75R9\",\"logo\":\"logo__3m2Wf\",\"locationRequired\":\"locationRequired__2BZvB\",\"heroPlayerCTANationBurntInImage\":\"heroPlayerCTANationBurntInImage__2RSU1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"theme_button_2eYMn\",\"imageBackground\":\"theme_imageBackground_yh_vv\",\"message\":\"theme_message_209Ru\",\"retryTitle\":\"theme_retryTitle_BlpIk\",\"retryMessage\":\"theme_retryMessage_2XpIJ\",\"retryButton\":\"theme_retryButton_1Y-8J\",\"retryIcon\":\"theme_retryIcon_1CAwC\",\"retryCode\":\"theme_retryCode_2ZMDS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"slideSmallPromo\":\"smallPromo_slideSmallPromo_ZzGal\",\"outerContainer\":\"smallPromo_outerContainer_2jQ_G\",\"background\":\"smallPromo_background_2O07U\",\"container\":\"smallPromo_container_1rodf\",\"networkLogo\":\"smallPromo_networkLogo_12xDX\",\"headline\":\"smallPromo_headline_GJF0j\",\"cta\":\"smallPromo_cta_1wKII\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__BY2Jf\",\"forgotPasswordSuccess\":\"forgotPasswordSuccess__qqKAZ\",\"isNation\":\"isNation__2gVdc\",\"InnerContainer\":\"InnerContainer__mEs84\",\"forgotPasswordSuccessContainer\":\"forgotPasswordSuccessContainer__2oFvw\",\"DefaultButton_Round\":\"DefaultButton_Round__2onxu\",\"btnPrimary\":\"btnPrimary__1Kmnx\",\"btnHollow\":\"btnHollow__1w1xR\",\"btnBlue\":\"btnBlue__7R5ep\",\"btnFoxSoul\":\"btnFoxSoul__2OLaI\",\"DefaultErrorText\":\"DefaultErrorText__dgp1c\",\"title\":\"title__GQslp\",\"passwordLabel\":\"passwordLabel__10L8b\",\"inputField\":\"inputField__3D_a8\",\"back\":\"back__3ntrn\",\"wrap\":\"wrap__16ta0\",\"forgotPasswordSuccessHeaderText\":\"forgotPasswordSuccessHeaderText__ydE_K\",\"forgotPasswordSuccessText\":\"forgotPasswordSuccessText__KJ3mi\",\"forgotPasswordSuccessButton\":\"forgotPasswordSuccessButton__1DsGS\",\"secondaryHeader\":\"secondaryHeader__1npQL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__3dH73\",\"SignUpSuccess\":\"SignUpSuccess__1lDGH\",\"isNation\":\"isNation__UTiVi\",\"InnerContainer\":\"InnerContainer__3Coup\",\"container\":\"container__27tSm\",\"DefaultButton_Round\":\"DefaultButton_Round__3bdhG\",\"btnPrimary\":\"btnPrimary__dyv-O\",\"btnHollow\":\"btnHollow__1fPJE\",\"btnBlue\":\"btnBlue__AhhMl\",\"btnFoxSoul\":\"btnFoxSoul__2w4JV\",\"DefaultErrorText\":\"DefaultErrorText__2WKYv\",\"title\":\"title__3g0KX\",\"passwordLabel\":\"passwordLabel__1JkIN\",\"inputField\":\"inputField__3tpQB\",\"back\":\"back__327DL\",\"maybeLaterLink\":\"maybeLaterLink__3U0Cu\",\"contentWrap\":\"contentWrap__4Yhm3\",\"signupSuccessText\":\"signupSuccessText__1_ivn\",\"signupSuccessHeaderText\":\"signupSuccessHeaderText__3ViCg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search\":\"search__1njzj\",\"searchInputContainer\":\"searchInputContainer__1XDXp\",\"providerList\":\"providerList__16Bis\",\"searchInput\":\"searchInput__n9ci1\",\"searchIcon\":\"searchIcon__1qbiv\",\"altSearchedResultsContainer\":\"altSearchedResultsContainer__3ZVOD\",\"altResultsContainer\":\"altResultsContainer__2RSXp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imageContainer\":\"imageContainer__oYSMi\",\"container\":\"container__Dw76f\",\"thumbnailContainer\":\"thumbnailContainer__3CNl1\",\"videoThumbnail\":\"videoThumbnail__txhk6\",\"thumbnail\":\"thumbnail__3_yp3\",\"image\":\"image__1LWXr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1VpkF\",\"section\":\"section__2uB7a\",\"iconText\":\"iconText__PAYA7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"seasonCarousel\":\"seasonCarousel__t-278\",\"seasonSelector\":\"seasonSelector__2THb_\",\"loaderContainer\":\"loaderContainer__86Znl\",\"dropdownList\":\"dropdownList__1Vz41\",\"active\":\"active__3obj9\",\"listItem\":\"listItem__1udio\",\"dropdownBackDrop\":\"dropdownBackDrop__juqxE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoName\":\"videoName__EtI2G\",\"container\":\"container__2rwVn\",\"player\":\"player__3wev-\",\"videos\":\"videos__1Injz\",\"endcard\":\"endcard__29ZXV\",\"altHeaderVideoContainer\":\"altHeaderVideoContainer__3Uf6O\",\"altHeaderDetails\":\"altHeaderDetails__345f1\",\"videoSizer\":\"videoSizer__2lnDM\",\"watchDetailContainer\":\"watchDetailContainer__3Ge7W\",\"sectionTitle\":\"sectionTitle__6TgrG\",\"sectionTitlePrimary\":\"sectionTitlePrimary__3BpSS\",\"buttonsContainer\":\"buttonsContainer__3ikIb\",\"loader\":\"loader__23iiG\",\"altHeaderWrapper\":\"altHeaderWrapper__3C52-\",\"cta\":\"cta__1GKhk\",\"promoHeader\":\"promoHeader__3nugJ\",\"promoText\":\"promoText__25Si0\",\"button\":\"button__2wf1z\",\"buttonText\":\"buttonText__8l_Dg\",\"sectionTitleGridForced\":\"sectionTitleGridForced__2g2Xe\",\"panelPlayer\":\"panelPlayer__1-vd_\",\"panelPlayerAltHeader\":\"panelPlayerAltHeader__t3ekh\",\"videoOuterContainer\":\"videoOuterContainer__2MRrn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"style_container_3cF5x\",\"content\":\"style_content_1j_Nm\",\"extender\":\"style_extender_3UQgi\",\"imageContainer\":\"style_imageContainer_QeZiS\",\"iconContainer\":\"style_iconContainer_aaBfy\",\"image\":\"style_image_2Bu9r\",\"text\":\"style_text_2FwDx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Footer\":\"Footer__2Vajv\",\"graphikFont\":\"graphikFont__3km6N\",\"proximaFont\":\"proximaFont__248qD\",\"container\":\"container__3Lb47\",\"containerUpsell\":\"containerUpsell__2paOR\",\"sectionItems\":\"sectionItems__2Cpme\",\"listTitle\":\"listTitle__2GPx-\",\"link\":\"link__1vWoS\",\"linkText\":\"linkText__17sk9\",\"social\":\"social__31gSE\",\"brandLogo\":\"brandLogo__1W7wp\",\"linkTextContainer\":\"linkTextContainer__k9_G6\",\"list\":\"list__p3AxA\",\"footerContent\":\"footerContent__2tBLg\",\"collapseBox\":\"collapseBox__XbuVQ\",\"sectionCollapsed\":\"sectionCollapsed__2e9-W\",\"sectionItemsWrapper\":\"sectionItemsWrapper__3Bx7B\",\"footerSection\":\"footerSection__3W1oh\",\"sectionWrapper\":\"sectionWrapper__3XDWj\",\"legalContainer\":\"legalContainer__32c9E\",\"legalLink\":\"legalLink__2jtA5\",\"legalText\":\"legalText__2BLCW\",\"logoWrapper\":\"logoWrapper__2v5GQ\",\"inlineLogoWrapper\":\"inlineLogoWrapper__wxb1M\",\"promoImage\":\"promoImage__-Yzi_\",\"promosHeadline\":\"promosHeadline__1rQLL\",\"promoHeadline\":\"promoHeadline__30F7B\",\"promoHeadlineLink\":\"promoHeadlineLink__2y4CX\",\"promoDescription\":\"promoDescription__vQy2h\",\"promoContentContainer\":\"promoContentContainer__2THAX\",\"promosContainer\":\"promosContainer__1bruv\",\"listFullWidth\":\"listFullWidth__Wtb_N\",\"promoContainer\":\"promoContainer__39Gi9\",\"promoImageContainer\":\"promoImageContainer__1nr-2\"};","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var parse = require('../parse/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nfunction getISOYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\nmodule.exports = getISOYear\n","var startOfWeek = require('../start_of_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfISOWeek (dirtyDate) {\n return startOfWeek(dirtyDate, {weekStartsOn: 1})\n}\n\nmodule.exports = startOfISOWeek\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nfunction startOfDay (dirtyDate) {\n var date = parse(dirtyDate)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfDay\n","module.exports = require('./head');\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n stringSize = require('./_stringSize');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nvar _isByteLength = _interopRequireDefault(require(\"./isByteLength\"));\n\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\n\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n};\n/* eslint-disable max-len */\n\n/* eslint-disable no-control-regex */\n\nvar splitNameAddress = /^([^\\x00-\\x1F\\x7F-\\x9F\\cX]+)<(.+)>$/i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar gmailUserPart = /^[a-z\\d]+$/;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\nvar defaultMaxEmailLength = 254;\n/* eslint-enable max-len */\n\n/* eslint-enable no-control-regex */\n\n/**\n * Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2\n * @param {String} display_name\n */\n\nfunction validateDisplayName(display_name) {\n var trim_quotes = display_name.match(/^\"(.+)\"$/i);\n var display_name_without_quotes = trim_quotes ? trim_quotes[1] : display_name; // display name with only spaces is not valid\n\n if (!display_name_without_quotes.trim()) {\n return false;\n } // check whether display name contains illegal character\n\n\n var contains_illegal = /[\\.\";<>]/.test(display_name_without_quotes);\n\n if (contains_illegal) {\n // if contains illegal characters,\n // must to be enclosed in double-quotes, otherwise it's not a valid display name\n if (!trim_quotes) {\n return false;\n } // the quotes in display name must start with character symbol \\\n\n\n var all_start_with_back_slash = display_name_without_quotes.split('\"').length === display_name_without_quotes.split('\\\\\"').length;\n\n if (!all_start_with_back_slash) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(splitNameAddress);\n\n if (display_email) {\n var display_name;\n\n var _display_email = _slicedToArray(display_email, 3);\n\n display_name = _display_email[1];\n str = _display_email[2];\n\n // sometimes need to trim the last space to get the display name\n // because there may be a space between display name and email address\n // eg. myname <address@gmail.com>\n // the display name is `myname` instead of `myname `, so need to trim the last space\n if (display_name.endsWith(' ')) {\n display_name = display_name.substr(0, display_name.length - 1);\n }\n\n if (!validateDisplayName(display_name)) {\n return false;\n }\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {\n return false;\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n var lower_domain = domain.toLowerCase();\n\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n if (!(0, _isByteLength.default)(username.replace('.', ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n\n var _user_parts = username.split('.');\n\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n\n if (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n })) {\n return false;\n }\n\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n\n var noBracketdomain = domain.substr(1, domain.length - 2);\n\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n\n for (var _i2 = 0; _i2 < user_parts.length; _i2++) {\n if (!pattern.test(user_parts[_i2])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3Ub5x\",\"button\":\"button__2lMCc\",\"buttonCta\":\"buttonCta__2Tx4X\",\"buttonsContainer\":\"buttonsContainer__1ZGis\",\"hr\":\"hr__2HEON\",\"padding\":\"padding__1OiGI\",\"grid\":\"grid__YUETc\",\"grid-5-4-3-1\":\"grid-5-4-3-1__1C-G_\",\"grid-5-4-2-1\":\"grid-5-4-2-1__2nMdC\",\"grid-4-3-1\":\"grid-4-3-1__TZqCF\",\"grid-4-2-1\":\"grid-4-2-1__srzr3\",\"grid-3-2-1\":\"grid-3-2-1__3upT3\",\"grid-4-1\":\"grid-4-1__2K0db\",\"grid-3-1\":\"grid-3-1__zZfv2\",\"grid-2-1\":\"grid-2-1__2VW28\",\"grid-horizontal-1\":\"grid-horizontal-1__2snRS\",\"grid-horizontal-3\":\"grid-horizontal-3__14pBq\",\"grid-4-2\":\"grid-4-2__1mvGn\",\"grid-3-2\":\"grid-3-2__3yojm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"anonymousOverlay\":\"anonymousOverlay__2eVfw\",\"overlayContainer\":\"overlayContainer__2SVKk\",\"badge\":\"badge__3r1eX\",\"blueBadge\":\"blueBadge__3uXvP\",\"newBadge\":\"newBadge__2WZhN\",\"redBadge\":\"redBadge__sPBlk\",\"liveBadge\":\"liveBadge__14HEU\",\"liveHoverV2Badge\":\"liveHoverV2Badge__2ZpcM\",\"infoBadge\":\"infoBadge__1m2Mk\",\"clipBadge\":\"clipBadge__2FthH\",\"defaultBadge\":\"defaultBadge__1Xwx5\",\"otherBadge\":\"otherBadge__1nmNl\",\"badgeInvalid\":\"badgeInvalid__1EXY9\",\"imageContainer\":\"imageContainer__2yjWq\",\"hoverStateBadgeV2\":\"hoverStateBadgeV2__15S_H\",\"play\":\"play__1dM1N\",\"imageOverlay\":\"imageOverlay__CNaKx\",\"playText\":\"playText__3AFhQ\",\"toFade\":\"toFade__1TWUm\",\"clickDisabled\":\"clickDisabled__1AT6Y\",\"clickable\":\"clickable__1FkD0\",\"scaleFromLeft\":\"scaleFromLeft__2Tm_Z\",\"scaleFromRight\":\"scaleFromRight__2fazS\",\"anonymousUpsellCTA\":\"anonymousUpsellCTA__2i14F\",\"tile\":\"tile__pdyUj\",\"fadeAnimated\":\"fadeAnimated__2lmi9\",\"fadein\":\"fadein__3_PH2\",\"fadeAnimatedUnauthorized\":\"fadeAnimatedUnauthorized__b5tFB\",\"fadeInUnAuth\":\"fadeInUnAuth__1tQ1t\",\"image\":\"image__1ggDo\",\"maintainRatioContainer\":\"maintainRatioContainer__7ljev\",\"underlayImage\":\"underlayImage__sAUvP\",\"top\":\"top__3MFyA\",\"padForImage\":\"padForImage__9Xs1T\",\"title\":\"title__3KUR-\",\"subtitle\":\"subtitle__22Z9h\",\"titleReverse\":\"titleReverse__72WB-\",\"ellipsisTitle\":\"ellipsisTitle__25FJm\",\"titleWrapper\":\"titleWrapper__1DJss\",\"subtitleWrapper\":\"subtitleWrapper__FK_sm\",\"metadata\":\"metadata__1569R\",\"progress\":\"progress__1UPLJ\",\"done\":\"done__1DUdG\",\"lock\":\"lock__2rM8X\",\"titleLock\":\"titleLock__2-dIO\",\"hoverStateV2Lock\":\"hoverStateV2Lock__8e6pB\",\"titleV2\":\"titleV2__3j2uB\",\"toggleEnabled\":\"toggleEnabled__Lq2X1\",\"dotdotdot\":\"dotdotdot__2BskB\",\"x\":\"x__1hQTK\",\"details\":\"details__oFSVT\",\"info\":\"info__1uPoH\",\"moreInfo\":\"moreInfo__2P8sH\",\"infoExtended\":\"infoExtended__dJllX\",\"toggled\":\"toggled__3QzVY\",\"titleLastWord\":\"titleLastWord__3hpTA\",\"subtitleLastWord\":\"subtitleLastWord__2Hdz9\",\"description\":\"description__1Dggp\",\"descLink\":\"descLink__lt_t_\",\"multiline\":\"multiline__3_WA6\",\"networkUpsellCTA\":\"networkUpsellCTA__2bqyU\",\"networkIcon\":\"networkIcon__3KjnH\",\"dogEar\":\"dogEar__oAswN\",\"networkIconHoverStateV2\":\"networkIconHoverStateV2__3AILW\",\"tile-text-center\":\"tile-text-center__1Gt2l\",\"fadeTile\":\"fadeTile__21fx_\",\"fadeImage\":\"fadeImage__3QEyJ\",\"imageOverlayDetailContainer\":\"imageOverlayDetailContainer__Bf2Xw\",\"imageOverlayTitle\":\"imageOverlayTitle__2kmkf\",\"titleFavorite\":\"titleFavorite__A-7tm\",\"imageOverlayDate\":\"imageOverlayDate__McFMW\",\"imageOverlaySubtitle\":\"imageOverlaySubtitle__2Ayu8\",\"imageOverlayDescription\":\"imageOverlayDescription__3FWbx\",\"imageOverlayMetadata\":\"imageOverlayMetadata__x7cys\",\"imageOverlayNetworkLogo\":\"imageOverlayNetworkLogo__4p3Er\",\"imageOverlayFooter\":\"imageOverlayFooter__GFgFG\",\"link\":\"link__ndpL5\",\"optionalText\":\"optionalText__OA8ti\",\"tile-image-left\":\"tile-image-left__2WN18\",\"networkLogoBubble\":\"networkLogoBubble__1TQkh\",\"playButtonOverlay\":\"playButtonOverlay__1wvj9\",\"playButton\":\"playButton__3041B\",\"playButtonScale\":\"playButtonScale__2UCi-\",\"content\":\"content__v3Bt0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2vqLY\",\"mobile\":\"mobile__27-2l\",\"tablet\":\"tablet__3ai14\",\"desktop\":\"desktop__2I3Tk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__10vXl\",\"contents\":\"contents__3TqZd\",\"infoContainer\":\"infoContainer__1r4Pk\",\"visible\":\"visible__1begm\",\"headerName\":\"headerName__1iI3C\",\"description\":\"description__XFgWA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__mR0P0\",\"resizablePlayer\":\"resizablePlayer__1aIa6\",\"videoContainer\":\"videoContainer__2U3yp\",\"playerLoadingImage\":\"playerLoadingImage__2BObo\",\"tpPlayer\":\"tpPlayer__3TnGH\",\"fullscreen\":\"fullscreen__kNsxC\",\"heroContainer\":\"heroContainer__1je9l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tile\":\"style_tile_erM9I\",\"title\":\"style_title_1SzX-\",\"withSpacer\":\"style_withSpacer_127Sz\",\"seeMore\":\"style_seeMore_1Fxu-\",\"imageContainer\":\"style_imageContainer_hfhNi\",\"image\":\"style_image_1O-mt\",\"fadein\":\"style_fadein_2FfHd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search\":\"search__2woNv\",\"buttonsContainer\":\"buttonsContainer__3peJp\",\"button\":\"button__3hCEU\",\"hr\":\"hr__1Cz7P\",\"results\":\"results__3-k9V\",\"tabs\":\"tabs__kwH6t\",\"tabItem\":\"tabItem__1xD4L\",\"active\":\"active__2eVm9\",\"searchResultTitle\":\"searchResultTitle__2eS5e\",\"noResults\":\"noResults__2CdOj\",\"filters\":\"filters__3x5gi\",\"categoryDropdown\":\"categoryDropdown__Ywt_r\",\"filterDropdown\":\"filterDropdown__3-Owo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video\":\"video__3jKnv\",\"modalOverlay\":\"modalOverlay__2yU2Q\",\"modal\":\"modal__2qPFS\",\"closeButton\":\"closeButton__1V-Zk\",\"CTA\":\"CTA__3WS28\",\"btn\":\"btn__4qmw8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mobileExternalLink\":\"mobileExternalLink__2lAZe\",\"tabRowWrapper\":\"tabRowWrapper__2n2EJ\",\"tabRow\":\"tabRow__3OaF4\",\"singleOptionTabRow\":\"singleOptionTabRow__W9aiL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"placeholder\":\"placeholder__3lh6j\",\"container\":\"container__3xlNs\",\"innerContainer\":\"innerContainer__2neWZ\",\"copy\":\"copy__1ZyyT\",\"ctaButton\":\"ctaButton__3VLLU\",\"networkImageWrap\":\"networkImageWrap__UKtrq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"providersDirectory\":\"providersDirectory__2PGDf\",\"providersDirectoryKey\":\"providersDirectoryKey__2b9pj\",\"scrollToTop\":\"scrollToTop__2Z3CZ\",\"noProvidersFound\":\"noProvidersFound__1NGHy\",\"top\":\"top__18VW7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2gSjs\",\"header\":\"header__2mZiW\",\"content\":\"content__3x_E1\",\"headerBarText\":\"headerBarText__1sLFU\",\"mvpdListContainer\":\"mvpdListContainer__2INFi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mvpdButton\":\"mvpdButton__2akn9\",\"rightIcon\":\"rightIcon__2nhqK\",\"providerLogo\":\"providerLogo__2fgK2\",\"signOutContainer\":\"signOutContainer__1MMI_\",\"providerLogoDesktop\":\"providerLogoDesktop__1-PlG\",\"signOutButton\":\"signOutButton__VDDb_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"graphikFont\":\"style_graphikFont_-RnHG\",\"proximaFont\":\"style_proximaFont_N3qur\",\"container\":\"style_container_36OFE\",\"content\":\"style_content_38X5i\",\"header\":\"style_header_3XoP-\",\"body\":\"style_body_1Z3pn\",\"button\":\"style_button_2RVe1\"};","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","\"use strict\";\n\nvar encode = require('mdurl/encode');\nvar decode = require('mdurl/decode');\n\nvar C_BACKSLASH = 92;\n\nvar decodeHTML = require('entities').decodeHTML;\n\nvar ENTITY = \"&(?:#x[a-f0-9]{1,8}|#[0-9]{1,8}|[a-z][a-z0-9]{1,31});\";\n\nvar TAGNAME = '[A-Za-z][A-Za-z0-9-]*';\nvar ATTRIBUTENAME = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar UNQUOTEDVALUE = \"[^\\\"'=<>`\\\\x00-\\\\x20]+\";\nvar SINGLEQUOTEDVALUE = \"'[^']*'\";\nvar DOUBLEQUOTEDVALUE = '\"[^\"]*\"';\nvar ATTRIBUTEVALUE = \"(?:\" + UNQUOTEDVALUE + \"|\" + SINGLEQUOTEDVALUE + \"|\" + DOUBLEQUOTEDVALUE + \")\";\nvar ATTRIBUTEVALUESPEC = \"(?:\" + \"\\\\s*=\" + \"\\\\s*\" + ATTRIBUTEVALUE + \")\";\nvar ATTRIBUTE = \"(?:\" + \"\\\\s+\" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + \"?)\";\nvar OPENTAG = \"<\" + TAGNAME + ATTRIBUTE + \"*\" + \"\\\\s*/?>\";\nvar CLOSETAG = \"</\" + TAGNAME + \"\\\\s*[>]\";\nvar HTMLCOMMENT = \"<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->\";\nvar PROCESSINGINSTRUCTION = \"[<][?].*?[?][>]\";\nvar DECLARATION = \"<![A-Z]+\" + \"\\\\s+[^>]*>\";\nvar CDATA = \"<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\";\nvar HTMLTAG = \"(?:\" + OPENTAG + \"|\" + CLOSETAG + \"|\" + HTMLCOMMENT + \"|\" +\n PROCESSINGINSTRUCTION + \"|\" + DECLARATION + \"|\" + CDATA + \")\";\nvar reHtmlTag = new RegExp('^' + HTMLTAG, 'i');\n\nvar reBackslashOrAmp = /[\\\\&]/;\n\nvar ESCAPABLE = '[!\"#$%&\\'()*+,./:;<=>?@[\\\\\\\\\\\\]^_`{|}~-]';\n\nvar reEntityOrEscapedChar = new RegExp('\\\\\\\\' + ESCAPABLE + '|' + ENTITY, 'gi');\n\nvar XMLSPECIAL = '[&<>\"]';\n\nvar reXmlSpecial = new RegExp(XMLSPECIAL, 'g');\n\nvar reXmlSpecialOrEntity = new RegExp(ENTITY + '|' + XMLSPECIAL, 'gi');\n\nvar unescapeChar = function(s) {\n if (s.charCodeAt(0) === C_BACKSLASH) {\n return s.charAt(1);\n } else {\n return decodeHTML(s);\n }\n};\n\n// Replace entities and backslash escapes with literal characters.\nvar unescapeString = function(s) {\n if (reBackslashOrAmp.test(s)) {\n return s.replace(reEntityOrEscapedChar, unescapeChar);\n } else {\n return s;\n }\n};\n\nvar normalizeURI = function(uri) {\n try {\n return encode(decode(uri));\n }\n catch(err) {\n return uri;\n }\n};\n\nvar replaceUnsafeChar = function(s) {\n switch (s) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n case '\"':\n return '"';\n default:\n return s;\n }\n};\n\nvar escapeXml = function(s, preserve_entities) {\n if (reXmlSpecial.test(s)) {\n if (preserve_entities) {\n return s.replace(reXmlSpecialOrEntity, replaceUnsafeChar);\n } else {\n return s.replace(reXmlSpecial, replaceUnsafeChar);\n }\n } else {\n return s;\n }\n};\n\nmodule.exports = { unescapeString: unescapeString,\n normalizeURI: normalizeURI,\n escapeXml: escapeXml,\n reHtmlTag: reHtmlTag,\n OPENTAG: OPENTAG,\n CLOSETAG: CLOSETAG,\n ENTITY: ENTITY,\n ESCAPABLE: ESCAPABLE\n };\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","/* eslint-disable import/prefer-default-export */\nexport const isTestEnvironment = () => process.env.BABEL_ENV === 'test';\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","/*! @license DOMPurify 2.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.3/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n\n var regExpTest = unapply(RegExp.prototype.test);\n\n var typeErrorCreate = unconstruct(TypeError);\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n\n /* Add properties to a lookup table */\n function addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n\n /* Shallow clone an object */\n function clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\n var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n var text = freeze(['#text']);\n\n var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\n var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.3';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with <html>... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify.\n *\n * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n * might cause XSS from attacks hidden in closed shadowroots in case the browser\n * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n */\n var RETURN_DOM_IMPORT = true;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Parsing of strict XHTML documents */\n var PARSER_MEDIA_TYPE = void 0;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc = void 0;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n content = stringReplace(content, ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n return false;\n\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n value = stringReplace(value, ERB_EXPR$$1, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) ; else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : emptyHTML;\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (RETURN_DOM_IMPORT) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","module.exports = (__webpack_require__(88))(136);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"Favorite_button_2UVkb\",\"wrapper\":\"Favorite_wrapper_6i8-I\",\"optional\":\"Favorite_optional_1TBsB\"};","var assignValue = require('./_assignValue'),\n copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n isArrayLike = require('./isArrayLike'),\n isPrototype = require('./_isPrototype'),\n keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imageContainer\":\"imageContainer__35ZYw\",\"image\":\"image__3OWUm\",\"networkLogo\":\"networkLogo__1_5ci\",\"playIcon\":\"playIcon__2yS7C\",\"overlayContainer\":\"overlayContainer__33_88\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"epgLoader\":\"epgLoader__17wIg\",\"epgWrap\":\"epgWrap__xNIqJ\",\"filterSearchBar\":\"filterSearchBar__2hExj\",\"filterBtns\":\"filterBtns__3juIZ\",\"searchInput\":\"searchInput__1J8V7\",\"gridRow\":\"gridRow__ygVfN\",\"left\":\"left__2KJoi\",\"right\":\"right__2GLQX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"time\":\"time__G5CIK\",\"timelineMainStarting\":\"timelineMainStarting__Wdyj1\",\"timelineMain\":\"timelineMain__2NEyy\",\"timelineWrap\":\"timelineWrap__kUxBA\",\"scrollDate\":\"scrollDate__dnNDg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3NJLO\",\"currentTimer\":\"currentTimer__1aRww\",\"currentTimerArrow\":\"currentTimerArrow__CTr_N\",\"splitTimer\":\"splitTimer__1EMbQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__2DWj9\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__3yefH\",\"stylelessButton\":\"stylelessButton__1iJAm\",\"cta\":\"cta__3BJEl\",\"AccountContainer\":\"AccountContainer__3s2c1\",\"activationSuccess\":\"activationSuccess__IutGY\",\"isNation\":\"isNation__1sNw8\",\"InnerContainer\":\"InnerContainer__2C0_D\",\"activationSuccessContainer\":\"activationSuccessContainer__1fy2O\",\"DefaultButton_Round\":\"DefaultButton_Round__nnoPt\",\"btnPrimary\":\"btnPrimary__1f31B\",\"btnHollow\":\"btnHollow__1yx7_\",\"btnBlue\":\"btnBlue__2d6Zs\",\"btnFoxSoul\":\"btnFoxSoul__3Rygy\",\"DefaultErrorText\":\"DefaultErrorText__1mlry\",\"title\":\"title__1Opa8\",\"passwordLabel\":\"passwordLabel__KhtlI\",\"inputField\":\"inputField__2VWBZ\",\"back\":\"back__3kf30\",\"headerText\":\"headerText__3EzeF\",\"successText\":\"successText__37GZu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"signInSeparatorContainer\":\"signInSeparatorContainer__2zRHY\",\"signInSeparator\":\"signInSeparator__2qJHF\",\"signInSeparatorLine\":\"signInSeparatorLine__Vw9cO\",\"signInSeparatorText\":\"signInSeparatorText__1UMm_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search\":\"search__3T8dv\",\"buttonsContainer\":\"buttonsContainer__3FbIY\",\"button\":\"button__3Wksy\",\"hr\":\"hr__2ivE1\",\"results\":\"results__2aADu\",\"tabs\":\"tabs__I2H8q\",\"tabItem\":\"tabItem__1zxzz\",\"active\":\"active__285RQ\",\"searchResultTitle\":\"searchResultTitle__1gXWq\",\"noResults\":\"noResults__rqA8k\",\"filters\":\"filters__3Z47f\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__WMsBs\",\"headerInnerContainer\":\"headerInnerContainer__39p0j\",\"container\":\"container__1AkkH\",\"select\":\"select__36CSj\",\"seasons\":\"seasons__26VBA\",\"more\":\"more__wkjF3\",\"clips\":\"clips__3evsr\",\"active\":\"active__3cdIH\",\"hidden\":\"hidden__3Z9Mh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NationWhatIs_container_2IjRQ\",\"anonMiddleLeft\":\"NationWhatIs_anonMiddleLeft_2CGC3\",\"devices\":\"NationWhatIs_devices_1epAR\",\"anonMiddleRight\":\"NationWhatIs_anonMiddleRight_3lTC7\",\"logo\":\"NationWhatIs_logo_2nY-v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropTimer\":\"dropTimer__1JgSP\",\"activeDropTimer\":\"activeDropTimer__1ggPN\",\"timerContainer\":\"timerContainer__3_qgo\",\"countdownBackground\":\"countdownBackground__2smA5\",\"dropTimeEntry\":\"dropTimeEntry__3qbkN\",\"dropTimeValue\":\"dropTimeValue__2f7WA\",\"dropTimeTitle\":\"dropTimeTitle__1FqZ8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logoContainer\":\"logoContainer__3Y4K2\",\"titleLink\":\"titleLink__2TFnY\",\"altLogo\":\"altLogo__30OA9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"links\":\"links__3361E\",\"linksLabel\":\"linksLabel__2TBU2\",\"wrapper\":\"wrapper__1ioBu\",\"link\":\"link__1Q6PO\",\"title\":\"title__2jRG4\",\"icon\":\"icon__2Uw3g\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3HGAE\",\"mvpdIncomplete\":\"mvpdIncomplete__3Zb8p\",\"content\":\"content__2MovG\",\"maybeLaterLink\":\"maybeLaterLink__3ZT0_\",\"resizablePlayer\":\"resizablePlayer__lICPg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1bhbp\",\"imageContainer\":\"imageContainer__3fot7\",\"image\":\"image__WwRP4\",\"content\":\"content__20hdn\",\"button\":\"button__rdhEo\",\"unlockUpsellText\":\"unlockUpsellText__2C3gX\",\"perksContainer\":\"perksContainer__2_Y5d\",\"perkContainer\":\"perkContainer__3lHar\",\"perkInnerContainer\":\"perkInnerContainer__2HB9E\",\"perkImageContainer\":\"perkImageContainer__3Kmmr\",\"perkIcon\":\"perkIcon__38fxE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"style_container_1Vddq\",\"image\":\"style_image_LppI7\",\"text\":\"style_text_2vkC4\",\"icon\":\"style_icon_2FqgC\",\"textContainer\":\"style_textContainer_GQ9hB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rightIcon\":\"rightIcon__3oozO\",\"searchIconInOrder\":\"searchIconInOrder__3dNRN\",\"storeIcon\":\"storeIcon__1Vgvx\",\"searchIcon\":\"searchIcon__2cxcA\"};","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = false;\n","module.exports = {};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","exports.f = {}.propertyIsEnumerable;\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @returns {Date} the new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nfunction addDays (dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate)\n var amount = Number(dirtyAmount)\n date.setDate(date.getDate() + amount)\n return date\n}\n\nmodule.exports = addDays\n","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount) {\n var timestamp = parse(dirtyDate).getTime()\n var amount = Number(dirtyAmount)\n return new Date(timestamp + amount)\n}\n\nmodule.exports = addMilliseconds\n","var getISOYear = require('../get_iso_year/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nfunction startOfISOYear (dirtyDate) {\n var year = getISOYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n return date\n}\n\nmodule.exports = startOfISOYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nfunction compareAsc (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var timeLeft = dateLeft.getTime()\n var dateRight = parse(dirtyDateRight)\n var timeRight = dateRight.getTime()\n\n if (timeLeft < timeRight) {\n return -1\n } else if (timeLeft > timeRight) {\n return 1\n } else {\n return 0\n }\n}\n\nmodule.exports = compareAsc\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clamp = clamp;\nexports.canUseDOM = exports.slidesOnLeft = exports.slidesOnRight = exports.siblingDirection = exports.getTotalSlides = exports.getPostClones = exports.getPreClones = exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = exports.checkSpecKeys = exports.getSlideCount = exports.checkNavigable = exports.getNavigableIndexes = exports.swipeEnd = exports.swipeMove = exports.swipeStart = exports.keyHandler = exports.changeSlide = exports.slideHandler = exports.initializedState = exports.extractObject = exports.canGoNext = exports.getSwipeDirection = exports.getHeight = exports.getWidth = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.lazyStartIndex = exports.getRequiredLazySlides = exports.getOnDemandLazySlides = exports.safePreventDefault = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nmodule.exports = isEqualWith;\n","var toString = require('./toString');\n\n/**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\nfunction toUpper(value) {\n return toString(value).toUpperCase();\n}\n\nmodule.exports = toUpper;\n","var baseFindKey = require('./_baseFindKey'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\nfunction findKey(object, predicate) {\n return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);\n}\n\nmodule.exports = findKey;\n","module.exports = require('./forEach');\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imgContainer\":\"imgContainer__1MKGh\",\"spin\":\"spin__1Vpo9\",\"buttonLoader\":\"buttonLoader__2mMFV\",\"loadingContainer\":\"loadingContainer__3EtTS\",\"centerLoader\":\"centerLoader__3uT74\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"icon__3j7mQ\",\"iconUp\":\"iconUp__2wJmB\",\"iconDown\":\"iconDown__37ENW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"networkLogoBubbleIcon\":\"networkLogoBubbleIcon__sHUe8\",\"networkLogoBubbleContainer\":\"networkLogoBubbleContainer__1dzrA\",\"networkLogoBubble\":\"networkLogoBubble__1z6Dz\",\"networkLogoBubbleIE\":\"networkLogoBubbleIE__1ZsgM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"currentTimerContainer\":\"currentTimerContainer__j-9Gy\",\"currentTimer\":\"currentTimer__2pc7l\",\"currentTimerTime\":\"currentTimerTime__1j6Gc\",\"currentTimerArrow\":\"currentTimerArrow__2jiNX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imageContainer\":\"imageContainer__12gGr\",\"image\":\"image__52XmR\",\"overlay\":\"overlay__3XgHW\",\"progressBar\":\"progressBar__2yNvQ\",\"progress\":\"progress__38KFO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"epgContainer\":\"epgContainer__2JwPb\",\"navBtns\":\"navBtns__3LEzt\",\"nextStickyBtn\":\"nextStickyBtn__2WTIT\",\"StickyBtnContainer\":\"StickyBtnContainer__2jhQk\",\"scheduleGrid\":\"scheduleGrid__hCGmA\",\"timeline\":\"timeline__ihKMy\",\"panelContainer\":\"panelContainer__2ionO\",\"epgWrap\":\"epgWrap__2RZJ8\",\"noEpg\":\"noEpg__26BUz\",\"epgWrapNation\":\"epgWrapNation__17ElL\",\"timelineNowBtn\":\"timelineNowBtn__1nbxX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"playButton\":\"playButton__2x7dg\",\"playButtonShadow\":\"playButtonShadow__1r60J\",\"image\":\"image__28iKC\",\"video\":\"video__c6kBG\",\"overlay\":\"overlay__1sutX\",\"link\":\"link__26ixP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"outerContainer\":\"outerContainer__2fW-o\",\"overlay\":\"overlay__3DooD\",\"header\":\"header__cD1KG\",\"actionButton\":\"actionButton__V09fM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttons\":\"buttons__26w5b\",\"desktopCTAContainer\":\"desktopCTAContainer__3XTmV\",\"mobileCTAContainer\":\"mobileCTAContainer__3h2ax\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"background\":\"background__2Pqat\",\"container\":\"container__3kcQh\",\"messageContainer\":\"messageContainer__14YOX\",\"miniPlayerActive\":\"miniPlayerActive__36f8B\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"googleButton\":\"googleButton__3J5_B\",\"googleButtonIcon\":\"googleButtonIcon__3zzHQ\",\"googleButtonText\":\"googleButtonText__1bfy0\",\"circleIcon\":\"circleIcon__buSeI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__3KEb7\",\"ForgotPassword\":\"ForgotPassword__TuqMd\",\"isNation\":\"isNation__3tV7T\",\"InnerContainer\":\"InnerContainer__1_e0P\",\"signInWrap\":\"signInWrap__2GrOZ\",\"DefaultButton_Round\":\"DefaultButton_Round__ALw3w\",\"btnPrimary\":\"btnPrimary__3drsj\",\"btnHollow\":\"btnHollow__oiKVk\",\"btnBlue\":\"btnBlue__39W-V\",\"btnFoxSoul\":\"btnFoxSoul__w6nk2\",\"DefaultErrorText\":\"DefaultErrorText__2v8_h\",\"title\":\"title__3KRye\",\"passwordLabel\":\"passwordLabel__332wB\",\"inputField\":\"inputField__1xN4M\",\"back\":\"back__39hyj\",\"instructions\":\"instructions__3algc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2Bhbw\",\"title\":\"title__rm9px\",\"subtitle\":\"subtitle__1a99l\",\"button\":\"button__eAN0I\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"VideosTab_container_173Dn\",\"seriesHeader\":\"VideosTab_seriesHeader_zl2IX\",\"episodesWrapper\":\"VideosTab_episodesWrapper_3USW3\",\"scrollContainer\":\"VideosTab_scrollContainer_1w_dw\",\"headerTitle\":\"VideosTab_headerTitle_2tYPe\",\"seasonTitle\":\"VideosTab_seasonTitle_35464\",\"buttonLoadMore\":\"VideosTab_buttonLoadMore_3RFeD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__27BXu\",\"title\":\"title__yTXaI\",\"description\":\"description__3dg4c\",\"image\":\"image__1ARLE\",\"caption\":\"caption__2_o6a\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nextArrow\":\"nextArrow__1SEN5\",\"prevArrow\":\"prevArrow__2N1k9\",\"mobileCast\":\"mobileCast__e9Wd3\",\"desktopCast\":\"desktopCast__3fyS0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__1Nt0M\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__1lIQJ\",\"stylelessButton\":\"stylelessButton__28sOF\",\"returnButton\":\"returnButton__17Thd\",\"breadcrumb\":\"breadcrumb__3Do0X\",\"gridContainer\":\"gridContainer__17tRF\",\"gridItem\":\"gridItem__2yviH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tile\":\"style_tile_1NL4V\",\"fadein\":\"style_fadein_1DD00\",\"title\":\"style_title_eLHG9\",\"imageContainer\":\"style_imageContainer_LfIYc\",\"networkImage\":\"style_networkImage_1FOp2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"list\":\"list__35SMN\",\"listItem\":\"listItem__1zPsK\",\"right\":\"right__2tXYh\",\"center\":\"center__18j2F\",\"left\":\"left__o3bsL\",\"badge\":\"badge__rk6oj\",\"subtitle\":\"subtitle__3Rlqr\",\"description\":\"description__3FI3J\",\"progress\":\"progress__2VvA5\",\"title\":\"title__cJD5f\",\"titleContainer\":\"titleContainer__1hPCt\",\"icon\":\"icon__1hgAM\",\"play\":\"play__3dYvh\",\"liveBadge\":\"liveBadge__1y948\",\"otherBadge\":\"otherBadge__2ViLE\",\"inlineBadge\":\"inlineBadge__QRbvv\",\"playDimmed\":\"playDimmed__3j7y6\",\"done\":\"done__1gjUF\",\"dotdotdot\":\"dotdotdot__iO7Wd\",\"x\":\"x__2oI9A\",\"buttonsContainer\":\"buttonsContainer__1KoPm\",\"button\":\"button__1hcHb\",\"titleText\":\"titleText__3s-nk\",\"episodeCount\":\"episodeCount__1aZv1\",\"titleWrapper\":\"titleWrapper__2izHe\",\"image\":\"image__1RRkf\",\"tile\":\"tile__1zjmN\",\"moreInfo\":\"moreInfo__1KY1j\",\"requiresAuth\":\"requiresAuth__2tKy-\",\"descLink\":\"descLink__2LC3F\",\"imageContainer\":\"imageContainer__kPja1\",\"hoverStateBadgeV2\":\"hoverStateBadgeV2__31CvM\",\"networkIcon\":\"networkIcon__3Fsu7\",\"metadata\":\"metadata__255DG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"closeButton\":\"closeButton__3NHca\",\"stickyBannerContainer\":\"stickyBannerContainer__WTNFY\",\"wrapper\":\"wrapper__1uaTD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"categories\":\"categories__vEGpT\",\"navLinks\":\"navLinks__30A9n\",\"hoverMenuContainer\":\"hoverMenuContainer__3kCj1\",\"categoriesMobile\":\"categoriesMobile__W7BVs\",\"categoriesMobileIos\":\"categoriesMobileIos__2eG3Z\"};","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports.default = {\n\n unmount: function unmount() {\n __mapped = {};\n },\n\n register: function register(name, element) {\n __mapped[name] = element;\n },\n\n unregister: function unregister(name) {\n delete __mapped[name];\n },\n\n get: function get(name) {\n return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n },\n\n setActiveLink: function setActiveLink(link) {\n return __activeLink = link;\n },\n\n getActiveLink: function getActiveLink() {\n return __activeLink;\n },\n\n scrollTo: function scrollTo(to, props) {\n\n var target = this.get(to);\n\n if (!target) {\n console.warn(\"target Element not found\");\n return;\n }\n\n props = _extends({}, props, { absolute: false });\n\n var containerId = props.containerId;\n var container = props.container;\n\n var containerElement = void 0;\n if (containerId) {\n containerElement = document.getElementById(containerId);\n } else if (container && container.nodeType) {\n containerElement = container;\n } else {\n containerElement = document;\n }\n\n props.absolute = true;\n\n var scrollOffset = _utils2.default.scrollOffset(containerElement, target) + (props.offset || 0);\n\n /*\r\n * if animate is not provided just scroll into the view\r\n */\n if (!props.smooth) {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](to, target);\n }\n\n if (containerElement === document) {\n window.scrollTo(0, scrollOffset);\n } else {\n containerElement.scrollTop = scrollOffset;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](to, target);\n }\n\n return;\n }\n\n /*\r\n * Animate scrolling\r\n */\n\n _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar pushHash = function pushHash(hash) {\n hash = hash ? hash.indexOf('#') === 0 ? hash : '#' + hash : '';\n\n if (history.pushState) {\n var loc = window.location;\n history.pushState(null, null, hash ? loc.pathname + loc.search + hash\n // remove hash\n : loc.pathname + loc.search);\n } else {\n location.hash = hash;\n }\n};\n\nvar getHash = function getHash() {\n return window.location.hash.replace(/^#/, '');\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n return function (element) {\n return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n };\n};\n\nvar scrollOffset = function scrollOffset(c, t) {\n return c === document ? t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetTop : t.getBoundingClientRect().top + c.scrollTop;\n};\n\nexports.default = {\n pushHash: pushHash,\n getHash: getHash,\n filterElementInContainer: filterElementInContainer,\n scrollOffset: scrollOffset\n};","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\n\nfunction _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); }\n\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n var invalidType;\n\n if (input === null) {\n invalidType = 'null';\n } else {\n invalidType = _typeof(input);\n\n if (invalidType === 'object' && input.constructor && input.constructor.hasOwnProperty('name')) {\n invalidType = input.constructor.name;\n } else {\n invalidType = \"a \".concat(invalidType);\n }\n }\n\n throw new TypeError(\"Expected string but received \".concat(invalidType, \".\"));\n }\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfWeek\n","var startOfDay = require('../start_of_day/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_DAY = 86400000\n\n/**\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n */\nfunction differenceInCalendarDays (dirtyDateLeft, dirtyDateRight) {\n var startOfDayLeft = startOfDay(dirtyDateLeft)\n var startOfDayRight = startOfDay(dirtyDateRight)\n\n var timestampLeft = startOfDayLeft.getTime() -\n startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n var timestampRight = startOfDayRight.getTime() -\n startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)\n}\n\nmodule.exports = differenceInCalendarDays\n","var parse = require('../parse/index.js')\nvar getDaysInMonth = require('../get_days_in_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @returns {Date} the new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nfunction addMonths (dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate)\n var amount = Number(dirtyAmount)\n var desiredMonth = date.getMonth() + amount\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()))\n return date\n}\n\nmodule.exports = addMonths\n","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nfunction differenceInMilliseconds (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getTime() - dateRight.getTime()\n}\n\nmodule.exports = differenceInMilliseconds\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeJoin = arrayProto.join;\n\n/**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\nfunction join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n}\n\nmodule.exports = join;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"countdown\":\"countdown__3sX69\",\"redirectLink\":\"redirectLink__3epEO\",\"additionalPoster\":\"additionalPoster__3A1xe\",\"tile\":\"tile__MYz6Z\",\"linkTile\":\"linkTile__2LUFw\",\"moreInfo\":\"moreInfo__1Q2yB\",\"description\":\"description__3RcER\",\"subtitle\":\"subtitle__255eA\",\"titleWrapper\":\"titleWrapper__2YkV9\",\"actionButton\":\"actionButton__1uRoE\",\"title\":\"title__1YkPz\",\"categoryListDetails\":\"categoryListDetails__1rpcg\",\"details\":\"details__VG7FT\",\"info\":\"info__182u_\",\"liveBadge\":\"liveBadge__2hChL\",\"imageOverlayHidden\":\"imageOverlayHidden__1co7X\",\"dimTile\":\"dimTile__ZenTK\",\"imageOverlay\":\"imageOverlay__3sJDR\",\"imageContainer\":\"imageContainer__pZMpI\",\"image\":\"image__nV7_Z\",\"categoryListContainer\":\"categoryListContainer__3d_H9\",\"affiliateLogo\":\"affiliateLogo__3bo95\",\"affiliateLogoContainer\":\"affiliateLogoContainer__16r-c\",\"badge\":\"badge__2Pz46\",\"networkIcon\":\"networkIcon__2a5G4\",\"imageContainerWithButtons\":\"imageContainerWithButtons__t4vD9\",\"imageContainerV2\":\"imageContainerV2__1xONn\",\"imageOverlayTitle\":\"imageOverlayTitle__VphPl\",\"imageOverlayDescription\":\"imageOverlayDescription__74Shb\",\"scaleFromLeft\":\"scaleFromLeft__3tdtg\",\"scaleFromRight\":\"scaleFromRight__rG2ZM\",\"descLink\":\"descLink__1f4GQ\"};","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nmodule.exports = dropRight;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _eventlistener = require('eventlistener');\n\nvar _lodash = require('lodash.debounce');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = require('lodash.throttle');\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _parentScroll = require('./utils/parentScroll');\n\nvar _parentScroll2 = _interopRequireDefault(_parentScroll);\n\nvar _inViewport = require('./utils/inViewport');\n\nvar _inViewport2 = _interopRequireDefault(_inViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar LazyLoad = function (_Component) {\n _inherits(LazyLoad, _Component);\n\n function LazyLoad(props) {\n _classCallCheck(this, LazyLoad);\n\n var _this = _possibleConstructorReturn(this, (LazyLoad.__proto__ || Object.getPrototypeOf(LazyLoad)).call(this, props));\n\n _this.lazyLoadHandler = _this.lazyLoadHandler.bind(_this);\n\n if (props.throttle > 0) {\n if (props.debounce) {\n _this.lazyLoadHandler = (0, _lodash2.default)(_this.lazyLoadHandler, props.throttle);\n } else {\n _this.lazyLoadHandler = (0, _lodash4.default)(_this.lazyLoadHandler, props.throttle);\n }\n }\n\n _this.state = { visible: false };\n return _this;\n }\n\n _createClass(LazyLoad, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._mounted = true;\n var eventNode = this.getEventNode();\n\n this.lazyLoadHandler();\n\n if (this.lazyLoadHandler.flush) {\n this.lazyLoadHandler.flush();\n }\n\n (0, _eventlistener.add)(window, 'resize', this.lazyLoadHandler);\n (0, _eventlistener.add)(eventNode, 'scroll', this.lazyLoadHandler);\n\n if (eventNode !== window) (0, _eventlistener.add)(window, 'scroll', this.lazyLoadHandler);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps() {\n if (!this.state.visible) {\n this.lazyLoadHandler();\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(_nextProps, nextState) {\n return nextState.visible;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._mounted = false;\n if (this.lazyLoadHandler.cancel) {\n this.lazyLoadHandler.cancel();\n }\n\n this.detachListeners();\n }\n }, {\n key: 'getEventNode',\n value: function getEventNode() {\n return (0, _parentScroll2.default)((0, _reactDom.findDOMNode)(this));\n }\n }, {\n key: 'getOffset',\n value: function getOffset() {\n var _props = this.props,\n offset = _props.offset,\n offsetVertical = _props.offsetVertical,\n offsetHorizontal = _props.offsetHorizontal,\n offsetTop = _props.offsetTop,\n offsetBottom = _props.offsetBottom,\n offsetLeft = _props.offsetLeft,\n offsetRight = _props.offsetRight,\n threshold = _props.threshold;\n\n\n var _offsetAll = threshold || offset;\n var _offsetVertical = offsetVertical || _offsetAll;\n var _offsetHorizontal = offsetHorizontal || _offsetAll;\n\n return {\n top: offsetTop || _offsetVertical,\n bottom: offsetBottom || _offsetVertical,\n left: offsetLeft || _offsetHorizontal,\n right: offsetRight || _offsetHorizontal\n };\n }\n }, {\n key: 'lazyLoadHandler',\n value: function lazyLoadHandler() {\n if (!this._mounted) {\n return;\n }\n var offset = this.getOffset();\n var node = (0, _reactDom.findDOMNode)(this);\n var eventNode = this.getEventNode();\n\n if ((0, _inViewport2.default)(node, eventNode, offset)) {\n var onContentVisible = this.props.onContentVisible;\n\n\n this.setState({ visible: true }, function () {\n if (onContentVisible) {\n onContentVisible();\n }\n });\n this.detachListeners();\n }\n }\n }, {\n key: 'detachListeners',\n value: function detachListeners() {\n var eventNode = this.getEventNode();\n\n (0, _eventlistener.remove)(window, 'resize', this.lazyLoadHandler);\n (0, _eventlistener.remove)(eventNode, 'scroll', this.lazyLoadHandler);\n\n if (eventNode !== window) (0, _eventlistener.remove)(window, 'scroll', this.lazyLoadHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n children = _props2.children,\n className = _props2.className,\n height = _props2.height,\n width = _props2.width;\n var visible = this.state.visible;\n\n\n var elStyles = { height: height, width: width };\n var elClasses = 'LazyLoad' + (visible ? ' is-visible' : '') + (className ? ' ' + className : '');\n\n return _react2.default.createElement(this.props.elementType, {\n className: elClasses,\n style: elStyles\n }, visible && _react.Children.only(children));\n }\n }]);\n\n return LazyLoad;\n}(_react.Component);\n\nexports.default = LazyLoad;\n\n\nLazyLoad.propTypes = {\n children: _propTypes2.default.node.isRequired,\n className: _propTypes2.default.string,\n debounce: _propTypes2.default.bool,\n elementType: _propTypes2.default.string,\n height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n offset: _propTypes2.default.number,\n offsetBottom: _propTypes2.default.number,\n offsetHorizontal: _propTypes2.default.number,\n offsetLeft: _propTypes2.default.number,\n offsetRight: _propTypes2.default.number,\n offsetTop: _propTypes2.default.number,\n offsetVertical: _propTypes2.default.number,\n threshold: _propTypes2.default.number,\n throttle: _propTypes2.default.number,\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n onContentVisible: _propTypes2.default.func\n};\n\nLazyLoad.defaultProps = {\n elementType: 'div',\n debounce: true,\n offset: 0,\n offsetBottom: 0,\n offsetHorizontal: 0,\n offsetLeft: 0,\n offsetRight: 0,\n offsetTop: 0,\n offsetVertical: 0,\n throttle: 250\n};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__3bhgD\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__3f5wt\",\"stylelessButton\":\"stylelessButton__13xG4\",\"container\":\"container__2maZN\",\"itemContainer\":\"itemContainer__3LQrR\",\"headerInnerContainer\":\"headerInnerContainer__18mlh\",\"itemContent\":\"itemContent__3Hq24\",\"itemContentActive\":\"itemContentActive__19q0o\",\"item\":\"item__1tcHp\",\"header\":\"header__1Vzjx\",\"headerOpen\":\"headerOpen__2FzBJ\",\"headerInnerContainerOpen\":\"headerInnerContainerOpen__2dZsf\"};","module.exports = require('./dist/InfiniteScroll')\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3Hp4H\",\"scrollableDiv\":\"scrollableDiv__2IC85\",\"justifyLeft\":\"justifyLeft__3bfAD\",\"carouselContainer\":\"carouselContainer__1_z1V\",\"headline\":\"headline__2WIec\",\"imageOnly\":\"imageOnly__1RHMR\",\"headlineWithSeeAll\":\"headlineWithSeeAll__3rYUT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"redirectLink\":\"redirectLink__IY0vF\",\"container\":\"container__2ConB\",\"tile\":\"tile__3ACld\",\"linkTile\":\"linkTile__3dnGz\",\"subtitle\":\"subtitle__1Vl0M\",\"titleWrapper\":\"titleWrapper__1gpAb\",\"title\":\"title__3SYlq\",\"imageContainer\":\"imageContainer__XeAHd\",\"details\":\"details__1VhYi\",\"info\":\"info__1O3tl\",\"imageOverlayHidden\":\"imageOverlayHidden__gyfYX\",\"dimTile\":\"dimTile__3e5Vc\",\"imageOverlay\":\"imageOverlay__u7p7l\",\"networkIcon\":\"networkIcon__1tjh8\",\"image\":\"image__rdA8w\",\"imageOverlayTitle\":\"imageOverlayTitle__1DORc\",\"imageOverlayDescription\":\"imageOverlayDescription__1J9mu\",\"scaleImage\":\"scaleImage__2uwUx\",\"scaleFromLeft\":\"scaleFromLeft__3k2Pp\",\"scaleFromRight\":\"scaleFromRight__3VnzE\",\"badge\":\"badge__wZnBN\",\"moreInfo\":\"moreInfo__1cu4n\",\"description\":\"description__dUsyz\",\"descLink\":\"descLink__2n8Bx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"back\":\"back__2r9Nn\",\"backDesktop\":\"backDesktop__GAkYx\",\"providersText\":\"providersText__3qTg0\",\"providersContainer\":\"providersContainer__2W76N\",\"filteredProvidersContainer\":\"filteredProvidersContainer__1RpYG\",\"providerContainer\":\"providerContainer__2DOhz\",\"inputContainer\":\"inputContainer__2m_fK\",\"input\":\"input__jt8Om\",\"headerBar\":\"headerBar__11bYd\",\"headerBarText\":\"headerBarText__uK6bu\",\"content\":\"content__3FwdX\",\"link\":\"link__1AHUU\",\"helpLinkContainer\":\"helpLinkContainer__PAHrC\",\"hideMobile\":\"hideMobile__2zQaP\",\"hideDesktop\":\"hideDesktop__3ltZm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"icon__2tBs-\",\"small\":\"small__1e-uL\",\"medium\":\"medium__1VZ8t\",\"medium-large\":\"medium-large__QJNeG\",\"large\":\"large__1Sg5F\",\"full\":\"full__1aRP9\",\"inherit\":\"inherit__2pHjV\",\"black\":\"black__1UW01\",\"greydarker\":\"greydarker__WP0jT\",\"greydark\":\"greydark__XHeqZ\",\"grey\":\"grey__1BrHE\",\"greylight\":\"greylight__xJVq-\",\"greylighter\":\"greylighter__2jgD_\",\"white\":\"white__1SSXF\",\"white50\":\"white50__VA9Ah\",\"white25\":\"white25__1x2gd\",\"blue\":\"blue__2Y2OB\",\"green\":\"green__28WG3\",\"orange\":\"orange__2czfN\",\"purple\":\"purple__1IJMS\",\"red\":\"red__3Tu6R\",\"turquoise\":\"turquoise__1j6UI\",\"yellow\":\"yellow__1qzZF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"epgFavorite\":\"epgFavorite__3Y9W5\",\"button\":\"button__3lTib\",\"link\":\"link__3cDLT\",\"icon\":\"icon__3C4s8\",\"watchList\":\"watchList__17oCq\",\"favoriteIcon\":\"favoriteIcon__1yGA6\",\"optional\":\"optional__1uDlp\",\"optionalText\":\"optionalText__C9b6r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__21WbR\",\"videoContainer\":\"videoContainer__3nwbT\",\"videoSizer\":\"videoSizer__3gR4A\",\"bannerContainer\":\"bannerContainer__Gc9CE\",\"exitContainer\":\"exitContainer__z7MI8\",\"digitalChannelContainer\":\"digitalChannelContainer__B0GUt\",\"loaderContainer\":\"loaderContainer__2dcJL\",\"loader\":\"loader__21NhZ\",\"bannerCopy\":\"bannerCopy__1XLs4\",\"watchDetailContainer\":\"watchDetailContainer__UIF4E\",\"mobileScheduleHeader\":\"mobileScheduleHeader__2iDrG\",\"panelPlayerAltHeader\":\"panelPlayerAltHeader__1tI8x\",\"altHeaderWrapper\":\"altHeaderWrapper__3Vnm_\",\"cta\":\"cta__1SSzQ\",\"promoHeader\":\"promoHeader__16b_o\",\"promoText\":\"promoText__39SkC\",\"button\":\"button__m_QJE\",\"buttonText\":\"buttonText__-01fL\",\"scheduleGrid\":\"scheduleGrid__b_mn4\",\"exitHeader\":\"exitHeader__1VQ9h\",\"exitCopy\":\"exitCopy__2k709\",\"scheduleRowMobile\":\"scheduleRowMobile__zj-Dn\",\"scheduleLeft\":\"scheduleLeft__3pfiq\",\"networkLogo\":\"networkLogo__2-Uw9\",\"affiliateNetworkLogo\":\"affiliateNetworkLogo__39TUv\",\"altHeaderDetails\":\"altHeaderDetails__1r_6a\",\"gridLoading\":\"gridLoading__2RcSe\",\"gridLoader\":\"gridLoader__3AW_N\",\"playerSpacer\":\"playerSpacer__3WSs5\",\"noScroll\":\"noScroll__2AF0Z\",\"dropdown\":\"dropdown__3v8mD\",\"videoOuterContainer\":\"videoOuterContainer__1vCOH\",\"panelPlayer\":\"panelPlayer__2tqf_\",\"tabDateLabel\":\"tabDateLabel__1XGpB\",\"tabButtons\":\"tabButtons__2DH3H\",\"tab\":\"tab__hbgQ4\",\"active\":\"active__34DSd\",\"mobileDropdowns\":\"mobileDropdowns__1xVay\",\"affiliateNetworkLogoHidden\":\"affiliateNetworkLogoHidden__OcNTV\",\"timeline\":\"timeline__2t_fA\",\"timelineLeft\":\"timelineLeft__2Xq_8\",\"timelineDropdown\":\"timelineDropdown__XVO07\",\"timelineMain\":\"timelineMain__3zl0Q\",\"time\":\"time__1XyaV\",\"timelineEmptyArrow\":\"timelineEmptyArrow__2NMHR\",\"timelineArrow\":\"timelineArrow__1AKuq\",\"timelineRightArrow\":\"timelineRightArrow__CxqiD\",\"timelineLeftArrow\":\"timelineLeftArrow__2Rhv7\",\"scheduleRow\":\"scheduleRow__3xClz\",\"scheduleRowOpen\":\"scheduleRowOpen__KHEo_\",\"currentTime\":\"currentTime__gHXlR\",\"scheduleRowSelected\":\"scheduleRowSelected__3Nbto\",\"altHeaderVideoContainer\":\"altHeaderVideoContainer__JSeuM\",\"scheduleItemWrapper\":\"scheduleItemWrapper__1BIn0\",\"epgWrap\":\"epgWrap__2Ls39\",\"noEpg\":\"noEpg__3Jhxx\",\"epgWrapNation\":\"epgWrapNation__3aso2\",\"epgContainer\":\"epgContainer__n8gg5\",\"dividerLine\":\"dividerLine__3_iVj\",\"breadcrumbs\":\"breadcrumbs__3_DIq\",\"collectionsContainer\":\"collectionsContainer__1RKgz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pageMaxWidth\":\"pageMaxWidth__wD1Db\",\"carouselMaxWidth\":\"carouselMaxWidth__1VVP_\",\"showSlide\":\"showSlide__2NAN9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"theme_button_1JW4T\",\"message\":\"theme_message_3-sTy\",\"title\":\"theme_title_CqAk_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"link\":\"link__3IDC0\",\"signInForgotPasswordContainer\":\"signInForgotPasswordContainer__3qH3n\",\"signInForgotPassword\":\"signInForgotPassword__1HHNf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__cHyDs\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__G0b3Q\",\"stylelessButton\":\"stylelessButton__3-9ml\",\"accountListItem\":\"accountListItem__3vVX6\",\"accountContainer\":\"accountContainer__2iEp6\",\"mobileSplit\":\"mobileSplit__xnujX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__11_22\",\"manageFavorites\":\"manageFavorites__-mi_m\",\"isNation\":\"isNation__1a1ry\",\"InnerContainer\":\"InnerContainer__2HZj6\",\"manageFavoritesContainer\":\"manageFavoritesContainer__2ugIS\",\"DefaultButton_Round\":\"DefaultButton_Round__1ECO_\",\"btnPrimary\":\"btnPrimary__1b0E6\",\"btnHollow\":\"btnHollow__dYLcp\",\"btnBlue\":\"btnBlue__N-Ol4\",\"btnFoxSoul\":\"btnFoxSoul__2bFAA\",\"DefaultErrorText\":\"DefaultErrorText__38l_B\",\"title\":\"title__2pq0t\",\"passwordLabel\":\"passwordLabel__3wdq-\",\"inputField\":\"inputField__17Rcr\",\"back\":\"back__zfObG\",\"wrap\":\"wrap__3MgPb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__19E2s\",\"container\":\"container__6TRPA\",\"isNation\":\"isNation__3sDh6\",\"InnerContainer\":\"InnerContainer__3Hqj8\",\"innerContainer\":\"innerContainer__3SiIB\",\"DefaultButton_Round\":\"DefaultButton_Round__1SCQl\",\"btnPrimary\":\"btnPrimary__2tD1R\",\"btnHollow\":\"btnHollow__36VQF\",\"btnBlue\":\"btnBlue__2g4pB\",\"btnFoxSoul\":\"btnFoxSoul__2x4VT\",\"DefaultErrorText\":\"DefaultErrorText__2PPsp\",\"title\":\"title__2TuYx\",\"passwordLabel\":\"passwordLabel__2QVxH\",\"inputField\":\"inputField__KBWyU\",\"back\":\"back__1gpe8\",\"shareImage\":\"shareImage__19drn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__2uSef\",\"searchHeader\":\"searchHeader__111NC\",\"close\":\"close__1qPA0\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__u6qwh\",\"stylelessButton\":\"stylelessButton__9sdWM\",\"inner\":\"inner__RlK2V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1BOC2\",\"title\":\"title__2OL_Y\",\"cast\":\"cast__1TOlw\"};","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"StartFreeTrial_container_3hfL7\",\"startWatching\":\"StartFreeTrial_startWatching_2NyBs\",\"button\":\"StartFreeTrial_button_1rirY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3UOb_\",\"background\":\"background__3z6fy\",\"content\":\"content__jeSRs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imageContainer\":\"imageContainer__3VoVd\",\"image\":\"image__ijkJ6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"about\":\"about__lNv9D\",\"wrap\":\"wrap__2eYsE\",\"description\":\"description__3eWt-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__27Yt_\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__2iSnD\",\"stylelessButton\":\"stylelessButton__3Dyzv\",\"castContainer\":\"castContainer__10-Cz\",\"seeAllButton\":\"seeAllButton__dYoRu\",\"castHeader\":\"castHeader__32RzQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__2nJI2\",\"content\":\"content__HSOQ1\",\"actionButtons\":\"actionButtons__3U3Co\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"input__3tMlk\",\"inputContainer\":\"inputContainer__10BDA\",\"shortInputContainer\":\"shortInputContainer__hRJFt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__24gx_\",\"innerContainer\":\"innerContainer__2cSfj\",\"content\":\"content__gchS7\"};","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require('./scroll-spy');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require('./scroll-hash');\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar protoTypes = {\n to: _propTypes2.default.string.isRequired,\n containerId: _propTypes2.default.string,\n container: _propTypes2.default.object,\n activeClass: _propTypes2.default.string,\n spy: _propTypes2.default.bool,\n smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n offset: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n isDynamic: _propTypes2.default.bool,\n onClick: _propTypes2.default.func,\n duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n absolute: _propTypes2.default.bool,\n onSetActive: _propTypes2.default.func,\n onSetInactive: _propTypes2.default.func,\n ignoreCancelEvents: _propTypes2.default.bool,\n hashSpy: _propTypes2.default.bool\n};\n\nexports.default = function (Component, customScroller) {\n\n var scroller = customScroller || _scroller2.default;\n\n var Link = function (_React$PureComponent) {\n _inherits(Link, _React$PureComponent);\n\n function Link(props) {\n _classCallCheck(this, Link);\n\n var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Link, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId && !container) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n _scrollSpy2.default.mount(scrollSpyContainer);\n }\n\n if (this.props.hashSpy) {\n if (!_scrollHash2.default.isMounted()) {\n _scrollHash2.default.mount(scroller);\n }\n _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.onClick = this.handleClick;\n\n return _react2.default.createElement(Component, props);\n }\n }]);\n\n return Link;\n }(_react2.default.PureComponent);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.spyHandler = function (y) {\n\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n return;\n }\n\n var to = _this2.props.to;\n var element = null;\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemTopBound = cords.top - containerTop + y;\n elemBottomBound = elemTopBound + cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n _scrollHash2.default.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n }\n }\n\n if (isInside && (activeLink !== to || _this2.state.active === false)) {\n scroller.setActiveLink(to);\n\n _this2.props.hashSpy && _scrollHash2.default.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n }\n }\n };\n };\n\n ;\n\n Link.propTypes = protoTypes;\n\n Link.defaultProps = { offset: 0 };\n\n return Link;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps\nvar eventThrottler = function eventThrottler(eventHandler) {\n return (0, _lodash2.default)(eventHandler, 66);\n};\n\nvar scrollSpy = {\n\n spyCallbacks: [],\n spySetState: [],\n scrollSpyContainers: [],\n\n mount: function mount(scrollSpyContainer) {\n if (scrollSpyContainer) {\n var eventHandler = eventThrottler(function (event) {\n scrollSpy.scrollHandler(scrollSpyContainer);\n });\n scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n }\n },\n isMounted: function isMounted(scrollSpyContainer) {\n return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n },\n currentPositionY: function currentPositionY(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n } else {\n return scrollSpyContainer.scrollTop;\n }\n },\n scrollHandler: function scrollHandler(scrollSpyContainer) {\n var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n callbacks.forEach(function (c) {\n return c(scrollSpy.currentPositionY(scrollSpyContainer));\n });\n },\n addStateHandler: function addStateHandler(handler) {\n scrollSpy.spySetState.push(handler);\n },\n addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n if (!container.spyCallbacks) {\n container.spyCallbacks = [];\n }\n\n container.spyCallbacks.push(handler);\n\n handler(scrollSpy.currentPositionY(scrollSpyContainer));\n },\n updateStates: function updateStates() {\n scrollSpy.spySetState.forEach(function (s) {\n return s();\n });\n },\n unmount: function unmount(stateHandler, spyHandler) {\n scrollSpy.scrollSpyContainers.forEach(function (c) {\n return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n });\n\n if (scrollSpy.spySetState && scrollSpy.spySetState.length) {\n scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n }\n\n document.removeEventListener('scroll', scrollSpy.scrollHandler);\n },\n\n\n update: function update() {\n return scrollSpy.scrollSpyContainers.forEach(function (c) {\n return scrollSpy.scrollHandler(c);\n });\n }\n};\n\nexports.default = scrollSpy;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n var supportsPassiveOption = function () {\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n return supportsPassiveOption;\n }();\n target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n target.removeEventListener(eventName, listener);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports.default = Events;","module.exports = (__webpack_require__(88))(58);","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","/**\n * @category Common Helpers\n * @summary Is the given argument an instance of Date?\n *\n * @description\n * Is the given argument an instance of Date?\n *\n * @param {*} argument - the argument to check\n * @returns {Boolean} the given argument is an instance of Date\n *\n * @example\n * // Is 'mayonnaise' a Date?\n * var result = isDate('mayonnaise')\n * //=> false\n */\nfunction isDate (argument) {\n return argument instanceof Date\n}\n\nmodule.exports = isDate\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nfunction getDaysInMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n var monthIndex = date.getMonth()\n var lastDayOfMonth = new Date(0)\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)\n lastDayOfMonth.setHours(0, 0, 0, 0)\n return lastDayOfMonth.getDate()\n}\n\nmodule.exports = getDaysInMonth\n","var addDays = require('../add_days/index.js')\n\n/**\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @returns {Date} the new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nfunction addWeeks (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n var days = amount * 7\n return addDays(dirtyDate, days)\n}\n\nmodule.exports = addWeeks\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nfunction compareDesc (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var timeLeft = dateLeft.getTime()\n var dateRight = parse(dirtyDateRight)\n var timeRight = dateRight.getTime()\n\n if (timeLeft > timeRight) {\n return -1\n } else if (timeLeft < timeRight) {\n return 1\n } else {\n return 0\n }\n}\n\nmodule.exports = compareDesc\n","var parse = require('../parse/index.js')\nvar differenceInCalendarMonths = require('../difference_in_calendar_months/index.js')\nvar compareAsc = require('../compare_asc/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 7\n */\nfunction differenceInMonths (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight))\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference)\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastMonthNotFull)\n}\n\nmodule.exports = differenceInMonths\n","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\n/**\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nfunction differenceInSeconds (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInSeconds\n","var buildDistanceInWordsLocale = require('./build_distance_in_words_locale/index.js')\nvar buildFormatLocale = require('./build_format_locale/index.js')\n\n/**\n * @category Locales\n * @summary English locale.\n */\nmodule.exports = {\n distanceInWords: buildDistanceInWordsLocale(),\n format: buildFormatLocale()\n}\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nfunction endOfDay (dirtyDate) {\n var date = parse(dirtyDate)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfDay\n","var parse = require('../parse/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\nvar startOfISOYear = require('../start_of_iso_year/index.js')\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nfunction getISOWeek (dirtyDate) {\n var date = parse(dirtyDate)\n var diff = startOfISOWeek(date).getTime() - startOfISOYear(date).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n\nmodule.exports = getISOWeek\n","var startOfWeek = require('../start_of_week/index.js')\n\n/**\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4)\n * )\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4),\n * {weekStartsOn: 1}\n * )\n * //=> false\n */\nfunction isSameWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()\n}\n\nmodule.exports = isSameWeek\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","\"use strict\";\n\nfunction isContainer(node) {\n switch (node._type) {\n case 'Document':\n case 'BlockQuote':\n case 'List':\n case 'Item':\n case 'Paragraph':\n case 'Heading':\n case 'Emph':\n case 'Strong':\n case 'Link':\n case 'Image':\n case 'CustomInline':\n case 'CustomBlock':\n return true;\n default:\n return false;\n }\n}\n\nvar resumeAt = function(node, entering) {\n this.current = node;\n this.entering = (entering === true);\n};\n\nvar next = function(){\n var cur = this.current;\n var entering = this.entering;\n\n if (cur === null) {\n return null;\n }\n\n var container = isContainer(cur);\n\n if (entering && container) {\n if (cur._firstChild) {\n this.current = cur._firstChild;\n this.entering = true;\n } else {\n // stay on node but exit\n this.entering = false;\n }\n\n } else if (cur === this.root) {\n this.current = null;\n\n } else if (cur._next === null) {\n this.current = cur._parent;\n this.entering = false;\n\n } else {\n this.current = cur._next;\n this.entering = true;\n }\n\n return {entering: entering, node: cur};\n};\n\nvar NodeWalker = function(root) {\n return { current: root,\n root: root,\n entering: true,\n next: next,\n resumeAt: resumeAt };\n};\n\nvar Node = function(nodeType, sourcepos) {\n this._type = nodeType;\n this._parent = null;\n this._firstChild = null;\n this._lastChild = null;\n this._prev = null;\n this._next = null;\n this._sourcepos = sourcepos;\n this._lastLineBlank = false;\n this._open = true;\n this._string_content = null;\n this._literal = null;\n this._listData = {};\n this._info = null;\n this._destination = null;\n this._title = null;\n this._isFenced = false;\n this._fenceChar = null;\n this._fenceLength = 0;\n this._fenceOffset = null;\n this._level = null;\n this._onEnter = null;\n this._onExit = null;\n};\n\nvar proto = Node.prototype;\n\nObject.defineProperty(proto, 'isContainer', {\n get: function () { return isContainer(this); }\n});\n\nObject.defineProperty(proto, 'type', {\n get: function() { return this._type; }\n});\n\nObject.defineProperty(proto, 'firstChild', {\n get: function() { return this._firstChild; }\n});\n\nObject.defineProperty(proto, 'lastChild', {\n get: function() { return this._lastChild; }\n});\n\nObject.defineProperty(proto, 'next', {\n get: function() { return this._next; }\n});\n\nObject.defineProperty(proto, 'prev', {\n get: function() { return this._prev; }\n});\n\nObject.defineProperty(proto, 'parent', {\n get: function() { return this._parent; }\n});\n\nObject.defineProperty(proto, 'sourcepos', {\n get: function() { return this._sourcepos; }\n});\n\nObject.defineProperty(proto, 'literal', {\n get: function() { return this._literal; },\n set: function(s) { this._literal = s; }\n});\n\nObject.defineProperty(proto, 'destination', {\n get: function() { return this._destination; },\n set: function(s) { this._destination = s; }\n});\n\nObject.defineProperty(proto, 'title', {\n get: function() { return this._title; },\n set: function(s) { this._title = s; }\n});\n\nObject.defineProperty(proto, 'info', {\n get: function() { return this._info; },\n set: function(s) { this._info = s; }\n});\n\nObject.defineProperty(proto, 'level', {\n get: function() { return this._level; },\n set: function(s) { this._level = s; }\n});\n\nObject.defineProperty(proto, 'listType', {\n get: function() { return this._listData.type; },\n set: function(t) { this._listData.type = t; }\n});\n\nObject.defineProperty(proto, 'listTight', {\n get: function() { return this._listData.tight; },\n set: function(t) { this._listData.tight = t; }\n});\n\nObject.defineProperty(proto, 'listStart', {\n get: function() { return this._listData.start; },\n set: function(n) { this._listData.start = n; }\n});\n\nObject.defineProperty(proto, 'listDelimiter', {\n get: function() { return this._listData.delimiter; },\n set: function(delim) { this._listData.delimiter = delim; }\n});\n\nObject.defineProperty(proto, 'onEnter', {\n get: function() { return this._onEnter; },\n set: function(s) { this._onEnter = s; }\n});\n\nObject.defineProperty(proto, 'onExit', {\n get: function() { return this._onExit; },\n set: function(s) { this._onExit = s; }\n});\n\nNode.prototype.appendChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._lastChild) {\n this._lastChild._next = child;\n child._prev = this._lastChild;\n this._lastChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.prependChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._firstChild) {\n this._firstChild._prev = child;\n child._next = this._firstChild;\n this._firstChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.unlink = function() {\n if (this._prev) {\n this._prev._next = this._next;\n } else if (this._parent) {\n this._parent._firstChild = this._next;\n }\n if (this._next) {\n this._next._prev = this._prev;\n } else if (this._parent) {\n this._parent._lastChild = this._prev;\n }\n this._parent = null;\n this._next = null;\n this._prev = null;\n};\n\nNode.prototype.insertAfter = function(sibling) {\n sibling.unlink();\n sibling._next = this._next;\n if (sibling._next) {\n sibling._next._prev = sibling;\n }\n sibling._prev = this;\n this._next = sibling;\n sibling._parent = this._parent;\n if (!sibling._next) {\n sibling._parent._lastChild = sibling;\n }\n};\n\nNode.prototype.insertBefore = function(sibling) {\n sibling.unlink();\n sibling._prev = this._prev;\n if (sibling._prev) {\n sibling._prev._next = sibling;\n }\n sibling._next = this;\n this._prev = sibling;\n sibling._parent = this._parent;\n if (!sibling._prev) {\n sibling._parent._firstChild = sibling;\n }\n};\n\nNode.prototype.walker = function() {\n var walker = new NodeWalker(this);\n return walker;\n};\n\nmodule.exports = Node;\n\n\n/* Example of use of walker:\n\n var walker = w.walker();\n var event;\n\n while (event = walker.next()) {\n console.log(event.entering, event.node.type);\n }\n\n */\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./Api\"));\n__export(require(\"./Auth\"));\n__export(require(\"./Logger\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar jwt_decode_1 = __importDefault(require(\"jwt-decode\"));\nvar universal_cookie_1 = __importDefault(require(\"universal-cookie\"));\nvar Auth_1 = require(\"../helpers/Auth\");\nvar Logger_1 = require(\"./Logger\");\n// Constants\nvar TOKEN_NAME = \"FOXSSOACCT\";\nvar PREPROD_TOKEN_NAME = \"qFOXSSOACCT\";\n// Auth Main\nvar Auth = /** @class */ (function (_super) {\n __extends(Auth, _super);\n function Auth() {\n var _this = _super.call(this) || this;\n _this.isDebug = false; // default turned off\n return _this;\n }\n Auth.prototype.init = function (_a) {\n var _b = _a.domain, domain = _b === void 0 ? \"\" : _b, _c = _a.preProd, preProd = _c === void 0 ? false : _c, _d = _a.debug, debug = _d === void 0 ? false : _d;\n this.isDebug = debug;\n this.domain = domain;\n this.name = preProd ? PREPROD_TOKEN_NAME : TOKEN_NAME;\n this.token = this.getToken();\n if (this.token) {\n try {\n this.jwt = jwt_decode_1.default(this.token.accessToken);\n }\n catch (error) {\n this.jwt = undefined;\n Logger_1.logInfo(\"Auth\", \"parse jwt\");\n Logger_1.logError(error);\n }\n }\n if (this.isDebug) {\n Logger_1.logDebug(\"Auth: name, token, jwt\", {\n name: this.name,\n token: this.token,\n jwt: this.jwt,\n });\n }\n Logger_1.logInfo(\"Auth\", \"Initialized\");\n };\n Auth.prototype.getToken = function () {\n var token = this.name ? this.get(this.name) : undefined;\n if (this.isDebug) {\n Logger_1.logDebug(\"Auth: get token\", token);\n }\n else {\n Logger_1.logInfo(\"Auth\", \"get token\");\n }\n return token;\n };\n Auth.prototype.getAccessToken = function () {\n Logger_1.logInfo(\"Auth\", \"get access token\");\n var token = this.getToken();\n return token ? token === null || token === void 0 ? void 0 : token.accessToken : undefined;\n };\n Auth.prototype.setToken = function (authToken, setCookieOptions) {\n Logger_1.logInfo(\"Auth\", \"set token\");\n try {\n if (authToken) {\n var options = Auth_1.getCookieOptions(authToken, setCookieOptions);\n // set token\n this.token = authToken;\n this.jwt = jwt_decode_1.default(authToken.accessToken);\n if (this.name) {\n this.set(this.name, this.token, options);\n }\n if (this.isDebug) {\n }\n }\n else {\n throw Error(\"cannot set empty token\");\n }\n }\n catch (e) {\n Logger_1.logError(e);\n }\n };\n Auth.prototype.removeToken = function () {\n Logger_1.logInfo(\"Auth\", \"remove token\");\n var options = Auth_1.getCookieOptions(undefined);\n if (this.name) {\n this.remove(this.name); // remove token from root path\n this.remove(this.name, options); // remove token from domain path\n }\n this.token = undefined;\n this.jwt = undefined;\n if (this.isDebug) {\n Logger_1.logDebug(\"Auth: remove token\", {\n token: this.token,\n jwt: this.jwt,\n });\n }\n };\n Auth.prototype.isUserSignedIn = function () {\n return !this.isUserAnonymous();\n };\n Auth.prototype.isUserAnonymous = function () {\n return !!this.jwt && this.jwt.atype === \"anonymous\";\n };\n Auth.prototype.getMvpdId = function () {\n return this.jwt ? this.jwt.mvpdid : undefined;\n };\n Auth.prototype.getUserId = function () {\n return this.jwt ? this.jwt.uid : undefined;\n };\n return Auth;\n}(universal_cookie_1.default));\nexports.AuthStore = new Auth();\n//# sourceMappingURL=Auth.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NewRelic_1 = require(\"../integrations/NewRelic\");\nfunction logError(error) {\n NewRelic_1.nrNoticeError(error);\n console.error(error);\n}\nexports.logError = logError;\nfunction logInfo(name, data) {\n console.info(name + \": \", data);\n}\nexports.logInfo = logInfo;\nfunction logDebug(name, data) {\n console.debug(name + \": \", data);\n}\nexports.logDebug = logDebug;\nfunction logAction(name, data) {\n NewRelic_1.nrAddPageAction(name, data);\n logDebug(name, data);\n}\nexports.logAction = logAction;\nfunction logAttribute(name, value) {\n NewRelic_1.nrSetCustomAttribute(name, value);\n logInfo(name, value);\n}\nexports.logAttribute = logAttribute;\n//# sourceMappingURL=Logger.js.map","module.exports = (__webpack_require__(88))(151);","var createRound = require('./_createRound');\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nmodule.exports = round;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"FavoriteAccount_icon_2loJb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"link\":\"link__prKxX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__p65pi\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__30El8\",\"stylelessButton\":\"stylelessButton__1PhVd\",\"closeButtonContainer\":\"closeButtonContainer__17LsS\",\"closeButton\":\"closeButton__1c3Kq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"countdownTime\":\"countdownTime__2jsyD\",\"countdownVideoContainer\":\"countdownVideoContainer__3bxaa\"};","var CAN_USE_DOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n// Adapted from Modernizr\n// https://github.com/Modernizr/Modernizr/blob/acb3f0d9/feature-detects/dom/passiveeventlisteners.js#L26-L37\nfunction testPassiveEventListeners() {\n if (!CAN_USE_DOM) {\n return false;\n }\n\n if (!window.addEventListener || !window.removeEventListener || !Object.defineProperty) {\n return false;\n }\n\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get: function () {\n function get() {\n supportsPassiveOption = true;\n }\n\n return get;\n }()\n });\n var noop = function noop() {};\n window.addEventListener('testPassiveEventSupport', noop, opts);\n window.removeEventListener('testPassiveEventSupport', noop, opts);\n } catch (e) {\n // do nothing\n }\n\n return supportsPassiveOption;\n}\n\nvar memoized = void 0;\n\nfunction canUsePassiveEventListeners() {\n if (memoized === undefined) {\n memoized = testPassiveEventListeners();\n }\n return memoized;\n}\n\nfunction normalizeEventOptions(eventOptions) {\n if (!eventOptions) {\n return undefined;\n }\n\n if (!canUsePassiveEventListeners()) {\n // If the browser does not support the passive option, then it is expecting\n // a boolean for the options argument to specify whether it should use\n // capture or not. In more modern browsers, this is passed via the `capture`\n // option, so let's just hoist that value up.\n return !!eventOptions.capture;\n }\n\n return eventOptions;\n}\n\n/* eslint-disable no-bitwise */\n\n/**\n * Generate a unique key for any set of event options\n */\nfunction eventOptionsKey(normalizedEventOptions) {\n if (!normalizedEventOptions) {\n return 0;\n }\n\n // If the browser does not support passive event listeners, the normalized\n // event options will be a boolean.\n if (normalizedEventOptions === true) {\n return 100;\n }\n\n // At this point, the browser supports passive event listeners, so we expect\n // the event options to be an object with possible properties of capture,\n // passive, and once.\n //\n // We want to consistently return the same value, regardless of the order of\n // these properties, so let's use binary maths to assign each property to a\n // bit, and then add those together (with an offset to account for the\n // booleans at the beginning of this function).\n var capture = normalizedEventOptions.capture << 0;\n var passive = normalizedEventOptions.passive << 1;\n var once = normalizedEventOptions.once << 2;\n return capture + passive + once;\n}\n\nfunction ensureCanMutateNextEventHandlers(eventHandlers) {\n if (eventHandlers.handlers === eventHandlers.nextHandlers) {\n // eslint-disable-next-line no-param-reassign\n eventHandlers.nextHandlers = eventHandlers.handlers.slice();\n }\n}\n\nfunction TargetEventHandlers(target) {\n this.target = target;\n this.events = {};\n}\n\nTargetEventHandlers.prototype.getEventHandlers = function () {\n function getEventHandlers(eventName, options) {\n var key = String(eventName) + ' ' + String(eventOptionsKey(options));\n\n if (!this.events[key]) {\n this.events[key] = {\n handlers: [],\n handleEvent: undefined\n };\n this.events[key].nextHandlers = this.events[key].handlers;\n }\n\n return this.events[key];\n }\n\n return getEventHandlers;\n}();\n\nTargetEventHandlers.prototype.handleEvent = function () {\n function handleEvent(eventName, options, event) {\n var eventHandlers = this.getEventHandlers(eventName, options);\n eventHandlers.handlers = eventHandlers.nextHandlers;\n eventHandlers.handlers.forEach(function (handler) {\n if (handler) {\n // We need to check for presence here because a handler function may\n // cause later handlers to get removed. This can happen if you for\n // instance have a waypoint that unmounts another waypoint as part of an\n // onEnter/onLeave handler.\n handler(event);\n }\n });\n }\n\n return handleEvent;\n}();\n\nTargetEventHandlers.prototype.add = function () {\n function add(eventName, listener, options) {\n var _this = this;\n\n // options has already been normalized at this point.\n var eventHandlers = this.getEventHandlers(eventName, options);\n\n ensureCanMutateNextEventHandlers(eventHandlers);\n\n if (eventHandlers.nextHandlers.length === 0) {\n eventHandlers.handleEvent = this.handleEvent.bind(this, eventName, options);\n\n this.target.addEventListener(eventName, eventHandlers.handleEvent, options);\n }\n\n eventHandlers.nextHandlers.push(listener);\n\n var isSubscribed = true;\n var unsubscribe = function () {\n function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextEventHandlers(eventHandlers);\n var index = eventHandlers.nextHandlers.indexOf(listener);\n eventHandlers.nextHandlers.splice(index, 1);\n\n if (eventHandlers.nextHandlers.length === 0) {\n // All event handlers have been removed, so we want to remove the event\n // listener from the target node.\n\n if (_this.target) {\n // There can be a race condition where the target may no longer exist\n // when this function is called, e.g. when a React component is\n // unmounting. Guarding against this prevents the following error:\n //\n // Cannot read property 'removeEventListener' of undefined\n _this.target.removeEventListener(eventName, eventHandlers.handleEvent, options);\n }\n\n eventHandlers.handleEvent = undefined;\n }\n }\n\n return unsubscribe;\n }();\n return unsubscribe;\n }\n\n return add;\n}();\n\nvar EVENT_HANDLERS_KEY = '__consolidated_events_handlers__';\n\n// eslint-disable-next-line import/prefer-default-export\nfunction addEventListener(target, eventName, listener, options) {\n if (!target[EVENT_HANDLERS_KEY]) {\n // eslint-disable-next-line no-param-reassign\n target[EVENT_HANDLERS_KEY] = new TargetEventHandlers(target);\n }\n var normalizedEventOptions = normalizeEventOptions(options);\n return target[EVENT_HANDLERS_KEY].add(eventName, listener, normalizedEventOptions);\n}\n\nexport { addEventListener };\n","var baseIndexOf = require('./_baseIndexOf'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\nfunction indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n}\n\nmodule.exports = indexOf;\n","module.exports = (__webpack_require__(88))(157);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"theme_button_18JSF\",\"message\":\"theme_message_5AOIZ\",\"title\":\"theme_title_3Qs8A\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"theme_button_2pC6e\",\"message\":\"theme_message_2AgSG\",\"title\":\"theme_title_2-NFB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__1bf75\",\"isNation\":\"isNation__1Gn1Y\",\"InnerContainer\":\"InnerContainer__29V6g\",\"DefaultButton_Round\":\"DefaultButton_Round__3F5AB\",\"miniPlayerActive\":\"miniPlayerActive__q_obl\",\"previewPass\":\"previewPass__341v1\",\"previewPassLoginLink\":\"previewPassLoginLink__Omanz\",\"btnPrimary\":\"btnPrimary__1Mft-\",\"btnHollow\":\"btnHollow__272hA\",\"btnBlue\":\"btnBlue__1FeNz\",\"btnFoxSoul\":\"btnFoxSoul__2hZik\",\"DefaultErrorText\":\"DefaultErrorText__144Iy\",\"title\":\"title__2iMfY\",\"passwordLabel\":\"passwordLabel__3R0hh\",\"inputField\":\"inputField__7xNI6\",\"back\":\"back__3K9CB\",\"fullscreen\":\"fullscreen__2RcD4\",\"previewPassLine\":\"previewPassLine__QihJr\",\"previewPassCopy\":\"previewPassCopy__1XztZ\",\"container\":\"container__3nvAk\",\"previewPassText\":\"previewPassText__3enHl\",\"previewPassCountdown\":\"previewPassCountdown__TsgTL\",\"playerLoadingImage\":\"playerLoadingImage__1iiOi\",\"loaderBackground\":\"loaderBackground__3SL3B\",\"previewPassExpired\":\"previewPassExpired__gKAK7\",\"videoBannerContainer\":\"videoBannerContainer__1xsC2\",\"backfade\":\"backfade__3alJ_\",\"backfadeVisible\":\"backfadeVisible__tQFmo\",\"previewPassHideFullscreen\":\"previewPassHideFullscreen__2nsgD\",\"previewPassWithHover\":\"previewPassWithHover__JtuId\",\"previewPassTransition\":\"previewPassTransition__3Hm4N\",\"previewPassCopyWithHover\":\"previewPassCopyWithHover__51rWT\",\"previewPassLoginLinkWithHover\":\"previewPassLoginLinkWithHover__1tu04\",\"hideControls\":\"hideControls__iGkFI\",\"loader\":\"loader__16uZs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"altHeader\":\"AltHeader_altHeader_14jOm\",\"altHeaderContainer\":\"AltHeader_altHeaderContainer_29Kzy\",\"stickyHeader\":\"AltHeader_stickyHeader_2MNP0\",\"altHeadline\":\"AltHeader_altHeadline_1VsXj\",\"hide\":\"AltHeader_hide_YDy7I\",\"stickyHeaderWithNavSchedule\":\"AltHeader_stickyHeaderWithNavSchedule_1O0XF\",\"fallbackBackground\":\"AltHeader_fallbackBackground_2SrdV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"screen\":\"ArticleDetail_screen_LUDAk\",\"article\":\"ArticleDetail_article_3EQgr\"};","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['react','prop-types','create-react-class'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('react'),require('prop-types'),require('create-react-class'));\n } else {\n root.ReactSlider = factory(root.React,root.PropTypes,root.createReactClass);\n }\n}(this, function (React, PropTypes, createReactClass) {\n\n /**\n * To prevent text selection while dragging.\n * http://stackoverflow.com/questions/5429827/how-can-i-prevent-text-element-selection-with-cursor-drag\n */\n function pauseEvent(e) {\n if (e.stopPropagation) e.stopPropagation();\n if (e.preventDefault) e.preventDefault();\n return false;\n }\n\n function stopPropagation(e) {\n if (e.stopPropagation) e.stopPropagation();\n }\n\n /**\n * Spreads `count` values equally between `min` and `max`.\n */\n function linspace(min, max, count) {\n var range = (max - min) / (count - 1);\n var res = [];\n for (var i = 0; i < count; i++) {\n res.push(min + range * i);\n }\n return res;\n }\n\n function ensureArray(x) {\n return x == null ? [] : Array.isArray(x) ? x : [x];\n }\n\n function undoEnsureArray(x) {\n return x != null && x.length === 1 ? x[0] : x;\n }\n\n var isArray = Array.isArray || function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n\n // undoEnsureArray(ensureArray(x)) === x\n\n var ReactSlider = createReactClass({\n displayName: 'ReactSlider',\n\n propTypes: {\n\n /**\n * The minimum value of the slider.\n */\n min: PropTypes.number,\n\n /**\n * The maximum value of the slider.\n */\n max: PropTypes.number,\n\n /**\n * Value to be added or subtracted on each step the slider makes.\n * Must be greater than zero.\n * `max - min` should be evenly divisible by the step value.\n */\n step: PropTypes.number,\n\n /**\n * The minimal distance between any pair of handles.\n * Must be positive, but zero means they can sit on top of each other.\n */\n minDistance: PropTypes.number,\n\n /**\n * Determines the initial positions of the handles and the number of handles if the component has no children.\n *\n * If a number is passed a slider with one handle will be rendered.\n * If an array is passed each value will determine the position of one handle.\n * The values in the array must be sorted.\n * If the component has children, the length of the array must match the number of children.\n */\n defaultValue: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.arrayOf(PropTypes.number)\n ]),\n\n /**\n * Like `defaultValue` but for [controlled components](http://facebook.github.io/react/docs/forms.html#controlled-components).\n */\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.arrayOf(PropTypes.number)\n ]),\n\n /**\n * Determines whether the slider moves horizontally (from left to right) or vertically (from top to bottom).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * The css class set on the slider node.\n */\n className: PropTypes.string,\n\n /**\n * The css class set on each handle node.\n *\n * In addition each handle will receive a numbered css class of the form `${handleClassName}-${i}`,\n * e.g. `handle-0`, `handle-1`, ...\n */\n handleClassName: PropTypes.string,\n\n /**\n * The css class set on the handle that is currently being moved.\n */\n handleActiveClassName: PropTypes.string,\n\n /**\n * If `true` bars between the handles will be rendered.\n */\n withBars: PropTypes.bool,\n\n /**\n * The css class set on the bars between the handles.\n * In addition bar fragment will receive a numbered css class of the form `${barClassName}-${i}`,\n * e.g. `bar-0`, `bar-1`, ...\n */\n barClassName: PropTypes.string,\n\n /**\n * If `true` the active handle will push other handles\n * within the constraints of `min`, `max`, `step` and `minDistance`.\n */\n pearling: PropTypes.bool,\n\n /**\n * If `true` the handles can't be moved.\n */\n disabled: PropTypes.bool,\n\n /**\n * Disables handle move when clicking the slider bar\n */\n snapDragDisabled: PropTypes.bool,\n\n /**\n * Inverts the slider.\n */\n invert: PropTypes.bool,\n\n /**\n * Callback called before starting to move a handle.\n */\n onBeforeChange: PropTypes.func,\n\n /**\n * Callback called on every value change.\n */\n onChange: PropTypes.func,\n\n /**\n * Callback called only after moving a handle has ended.\n */\n onAfterChange: PropTypes.func,\n\n /**\n * Callback called when the the slider is clicked (handle or bars).\n * Receives the value at the clicked position as argument.\n */\n onSliderClick: PropTypes.func\n },\n\n getDefaultProps: function () {\n return {\n min: 0,\n max: 100,\n step: 1,\n minDistance: 0,\n defaultValue: 0,\n orientation: 'horizontal',\n className: 'slider',\n handleClassName: 'handle',\n handleActiveClassName: 'active',\n barClassName: 'bar',\n withBars: false,\n pearling: false,\n disabled: false,\n snapDragDisabled: false,\n invert: false\n };\n },\n\n getInitialState: function () {\n var value = this._or(ensureArray(this.props.value), ensureArray(this.props.defaultValue));\n\n // reused throughout the component to store results of iterations over `value`\n this.tempArray = value.slice();\n\n // array for storing resize timeouts ids\n this.pendingResizeTimeouts = [];\n\n var zIndices = [];\n for (var i = 0; i < value.length; i++) {\n value[i] = this._trimAlignValue(value[i], this.props);\n zIndices.push(i);\n }\n\n return {\n index: -1,\n upperBound: 0,\n sliderLength: 0,\n value: value,\n zIndices: zIndices\n };\n },\n\n // Keep the internal `value` consistent with an outside `value` if present.\n // This basically allows the slider to be a controlled component.\n componentWillReceiveProps: function (newProps) {\n var value = this._or(ensureArray(newProps.value), this.state.value);\n\n // ensure the array keeps the same size as `value`\n this.tempArray = value.slice();\n\n for (var i = 0; i < value.length; i++) {\n this.state.value[i] = this._trimAlignValue(value[i], newProps);\n }\n if (this.state.value.length > value.length)\n this.state.value.length = value.length;\n\n // If an upperBound has not yet been determined (due to the component being hidden\n // during the mount event, or during the last resize), then calculate it now\n if (this.state.upperBound === 0) {\n this._resize();\n }\n },\n\n // Check if the arity of `value` or `defaultValue` matches the number of children (= number of custom handles).\n // If no custom handles are provided, just returns `value` if present and `defaultValue` otherwise.\n // If custom handles are present but neither `value` nor `defaultValue` are applicable the handles are spread out\n // equally.\n // TODO: better name? better solution?\n _or: function (value, defaultValue) {\n var count = React.Children.count(this.props.children);\n switch (count) {\n case 0:\n return value.length > 0 ? value : defaultValue;\n case value.length:\n return value;\n case defaultValue.length:\n return defaultValue;\n default:\n if (value.length !== count || defaultValue.length !== count) {\n console.warn(this.constructor.displayName + \": Number of values does not match number of children.\");\n }\n return linspace(this.props.min, this.props.max, count);\n }\n },\n\n componentDidMount: function () {\n window.addEventListener('resize', this._handleResize);\n this._resize();\n },\n\n componentWillUnmount: function () {\n this._clearPendingResizeTimeouts();\n window.removeEventListener('resize', this._handleResize);\n },\n\n getValue: function () {\n return undoEnsureArray(this.state.value);\n },\n\n _resize: function () {\n var slider = this.slider;\n var handle = this.handle0;\n var rect = slider.getBoundingClientRect();\n\n var size = this._sizeKey();\n\n var sliderMax = rect[this._posMaxKey()];\n var sliderMin = rect[this._posMinKey()];\n\n this.setState({\n upperBound: slider[size] - handle[size],\n sliderLength: Math.abs(sliderMax - sliderMin),\n handleSize: handle[size],\n sliderStart: this.props.invert ? sliderMax : sliderMin\n });\n },\n\n _handleResize: function () {\n // setTimeout of 0 gives element enough time to have assumed its new size if it is being resized\n var resizeTimeout = window.setTimeout(function() {\n // drop this timeout from pendingResizeTimeouts to reduce memory usage\n this.pendingResizeTimeouts.shift();\n this._resize();\n }.bind(this), 0);\n\n this.pendingResizeTimeouts.push(resizeTimeout);\n },\n\n // clear all pending timeouts to avoid error messages after unmounting\n _clearPendingResizeTimeouts: function() {\n do {\n var nextTimeout = this.pendingResizeTimeouts.shift();\n\n clearTimeout(nextTimeout);\n } while (this.pendingResizeTimeouts.length);\n },\n\n // calculates the offset of a handle in pixels based on its value.\n _calcOffset: function (value) {\n var range = this.props.max - this.props.min;\n if (range === 0) {\n return 0;\n }\n var ratio = (value - this.props.min) / range;\n return ratio * this.state.upperBound;\n },\n\n // calculates the value corresponding to a given pixel offset, i.e. the inverse of `_calcOffset`.\n _calcValue: function (offset) {\n var ratio = offset / this.state.upperBound;\n return ratio * (this.props.max - this.props.min) + this.props.min;\n },\n\n _buildHandleStyle: function (offset, i) {\n var style = {\n position: 'absolute',\n willChange: this.state.index >= 0 ? this._posMinKey() : '',\n zIndex: this.state.zIndices.indexOf(i) + 1\n };\n style[this._posMinKey()] = offset + 'px';\n return style;\n },\n\n _buildBarStyle: function (min, max) {\n var obj = {\n position: 'absolute',\n willChange: this.state.index >= 0 ? this._posMinKey() + ',' + this._posMaxKey() : ''\n };\n obj[this._posMinKey()] = min;\n obj[this._posMaxKey()] = max;\n return obj;\n },\n\n _getClosestIndex: function (pixelOffset) {\n var minDist = Number.MAX_VALUE;\n var closestIndex = -1;\n\n var value = this.state.value;\n var l = value.length;\n\n for (var i = 0; i < l; i++) {\n var offset = this._calcOffset(value[i]);\n var dist = Math.abs(pixelOffset - offset);\n if (dist < minDist) {\n minDist = dist;\n closestIndex = i;\n }\n }\n\n return closestIndex;\n },\n\n _calcOffsetFromPosition: function (position) {\n var pixelOffset = position - this.state.sliderStart;\n if (this.props.invert) pixelOffset = this.state.sliderLength - pixelOffset;\n pixelOffset -= (this.state.handleSize / 2);\n return pixelOffset;\n },\n\n // Snaps the nearest handle to the value corresponding to `position` and calls `callback` with that handle's index.\n _forceValueFromPosition: function (position, callback) {\n var pixelOffset = this._calcOffsetFromPosition(position);\n var closestIndex = this._getClosestIndex(pixelOffset);\n var nextValue = this._trimAlignValue(this._calcValue(pixelOffset));\n\n var value = this.state.value.slice(); // Clone this.state.value since we'll modify it temporarily\n value[closestIndex] = nextValue;\n\n // Prevents the slider from shrinking below `props.minDistance`\n for (var i = 0; i < value.length - 1; i += 1) {\n if (value[i + 1] - value[i] < this.props.minDistance) return;\n }\n\n this.setState({value: value}, callback.bind(this, closestIndex));\n },\n\n _getMousePosition: function (e) {\n return [\n e['page' + this._axisKey()],\n e['page' + this._orthogonalAxisKey()]\n ];\n },\n\n _getTouchPosition: function (e) {\n var touch = e.touches[0];\n return [\n touch['page' + this._axisKey()],\n touch['page' + this._orthogonalAxisKey()]\n ];\n },\n\n _getKeyDownEventMap: function () {\n return {\n 'keydown': this._onKeyDown,\n 'focusout': this._onBlur\n }\n },\n\n _getMouseEventMap: function () {\n return {\n 'mousemove': this._onMouseMove,\n 'mouseup': this._onMouseUp\n }\n },\n\n _getTouchEventMap: function () {\n return {\n 'touchmove': this._onTouchMove,\n 'touchend': this._onTouchEnd\n }\n },\n\n // create the `keydown` handler for the i-th handle\n _createOnKeyDown: function (i) {\n return function (e) {\n if (this.props.disabled) return;\n this._start(i);\n this._addHandlers(this._getKeyDownEventMap());\n pauseEvent(e);\n }.bind(this);\n },\n\n // create the `mousedown` handler for the i-th handle\n _createOnMouseDown: function (i) {\n return function (e) {\n if (this.props.disabled) return;\n var position = this._getMousePosition(e);\n this._start(i, position[0]);\n this._addHandlers(this._getMouseEventMap());\n pauseEvent(e);\n }.bind(this);\n },\n\n // create the `touchstart` handler for the i-th handle\n _createOnTouchStart: function (i) {\n return function (e) {\n if (this.props.disabled || e.touches.length > 1) return;\n var position = this._getTouchPosition(e);\n this.startPosition = position;\n this.isScrolling = undefined; // don't know yet if the user is trying to scroll\n this._start(i, position[0]);\n this._addHandlers(this._getTouchEventMap());\n stopPropagation(e);\n }.bind(this);\n },\n\n _addHandlers: function (eventMap) {\n for (var key in eventMap) {\n document.addEventListener(key, eventMap[key], false);\n }\n },\n\n _removeHandlers: function (eventMap) {\n for (var key in eventMap) {\n document.removeEventListener(key, eventMap[key], false);\n }\n },\n\n _start: function (i, position) {\n var activeEl = document.activeElement;\n var handleRef = this['handle' + i];\n // if activeElement is body window will lost focus in IE9\n if (activeEl && activeEl != document.body && activeEl != handleRef) {\n activeEl.blur && activeEl.blur();\n }\n\n this.hasMoved = false;\n\n this._fireChangeEvent('onBeforeChange');\n\n var zIndices = this.state.zIndices;\n zIndices.splice(zIndices.indexOf(i), 1); // remove wherever the element is\n zIndices.push(i); // add to end\n\n this.setState(function (prevState) {\n return {\n startValue: this.state.value[i],\n startPosition: position !== undefined ? position : prevState.startPosition,\n index: i,\n zIndices: zIndices\n };\n });\n },\n\n _onMouseUp: function () {\n this._onEnd(this._getMouseEventMap());\n },\n\n _onTouchEnd: function () {\n this._onEnd(this._getTouchEventMap());\n },\n\n _onBlur: function () {\n this._onEnd(this._getKeyDownEventMap());\n },\n\n _onEnd: function (eventMap) {\n this._removeHandlers(eventMap);\n this.setState({index: -1}, this._fireChangeEvent.bind(this, 'onAfterChange'));\n },\n\n _onMouseMove: function (e) {\n var position = this._getMousePosition(e);\n var diffPosition = this._getDiffPosition(position[0]);\n var newValue = this._getValueFromPosition(diffPosition);\n this._move(newValue);\n },\n\n _onTouchMove: function (e) {\n if (e.touches.length > 1) return;\n\n var position = this._getTouchPosition(e);\n\n if (typeof this.isScrolling === 'undefined') {\n var diffMainDir = position[0] - this.startPosition[0];\n var diffScrollDir = position[1] - this.startPosition[1];\n this.isScrolling = Math.abs(diffScrollDir) > Math.abs(diffMainDir);\n }\n\n if (this.isScrolling) {\n this.setState({index: -1});\n return;\n }\n\n pauseEvent(e);\n\n var diffPosition = this._getDiffPosition(position[0]);\n var newValue = this._getValueFromPosition(diffPosition);\n\n this._move(newValue);\n },\n\n _onKeyDown: function (e) {\n if (e.ctrlKey || e.shiftKey || e.altKey) return;\n switch (e.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n e.preventDefault();\n return this._moveDownOneStep();\n case \"ArrowRight\":\n case \"ArrowDown\":\n e.preventDefault();\n return this._moveUpOneStep();\n case \"Home\":\n return this._move(this.props.min);\n case \"End\":\n return this._move(this.props.max);\n default:\n return;\n }\n },\n\n _moveUpOneStep: function () {\n var oldValue = this.state.value[this.state.index];\n var newValue = oldValue + this.props.step;\n this._move(Math.min(newValue, this.props.max));\n },\n\n _moveDownOneStep: function () {\n var oldValue = this.state.value[this.state.index];\n var newValue = oldValue - this.props.step;\n this._move(Math.max(newValue, this.props.min));\n },\n\n _getValueFromPosition: function (position) {\n var diffValue = position / (this.state.sliderLength - this.state.handleSize) * (this.props.max - this.props.min);\n return this._trimAlignValue(this.state.startValue + diffValue);\n },\n\n _getDiffPosition: function (position) {\n var diffPosition = position - this.state.startPosition;\n if (this.props.invert) diffPosition *= -1;\n return diffPosition;\n },\n\n _move: function (newValue) {\n this.hasMoved = true;\n\n var props = this.props;\n var state = this.state;\n var index = state.index;\n\n var value = state.value;\n var length = value.length;\n var oldValue = value[index];\n\n var minDistance = props.minDistance;\n\n // if \"pearling\" (= handles pushing each other) is disabled,\n // prevent the handle from getting closer than `minDistance` to the previous or next handle.\n if (!props.pearling) {\n if (index > 0) {\n var valueBefore = value[index - 1];\n if (newValue < valueBefore + minDistance) {\n newValue = valueBefore + minDistance;\n }\n }\n\n if (index < length - 1) {\n var valueAfter = value[index + 1];\n if (newValue > valueAfter - minDistance) {\n newValue = valueAfter - minDistance;\n }\n }\n }\n\n value[index] = newValue;\n\n // if \"pearling\" is enabled, let the current handle push the pre- and succeeding handles.\n if (props.pearling && length > 1) {\n if (newValue > oldValue) {\n this._pushSucceeding(value, minDistance, index);\n this._trimSucceeding(length, value, minDistance, props.max);\n }\n else if (newValue < oldValue) {\n this._pushPreceding(value, minDistance, index);\n this._trimPreceding(length, value, minDistance, props.min);\n }\n }\n\n // Normally you would use `shouldComponentUpdate`, but since the slider is a low-level component,\n // the extra complexity might be worth the extra performance.\n if (newValue !== oldValue) {\n this.setState({value: value}, this._fireChangeEvent.bind(this, 'onChange'));\n }\n },\n\n _pushSucceeding: function (value, minDistance, index) {\n var i, padding;\n for (i = index, padding = value[i] + minDistance;\n value[i + 1] != null && padding > value[i + 1];\n i++, padding = value[i] + minDistance) {\n value[i + 1] = this._alignValue(padding);\n }\n },\n\n _trimSucceeding: function (length, nextValue, minDistance, max) {\n for (var i = 0; i < length; i++) {\n var padding = max - i * minDistance;\n if (nextValue[length - 1 - i] > padding) {\n nextValue[length - 1 - i] = padding;\n }\n }\n },\n\n _pushPreceding: function (value, minDistance, index) {\n var i, padding;\n for (i = index, padding = value[i] - minDistance;\n value[i - 1] != null && padding < value[i - 1];\n i--, padding = value[i] - minDistance) {\n value[i - 1] = this._alignValue(padding);\n }\n },\n\n _trimPreceding: function (length, nextValue, minDistance, min) {\n for (var i = 0; i < length; i++) {\n var padding = min + i * minDistance;\n if (nextValue[i] < padding) {\n nextValue[i] = padding;\n }\n }\n },\n\n _axisKey: function () {\n var orientation = this.props.orientation;\n if (orientation === 'horizontal') return 'X';\n if (orientation === 'vertical') return 'Y';\n },\n\n _orthogonalAxisKey: function () {\n var orientation = this.props.orientation;\n if (orientation === 'horizontal') return 'Y';\n if (orientation === 'vertical') return 'X';\n },\n\n _posMinKey: function () {\n var orientation = this.props.orientation;\n if (orientation === 'horizontal') return this.props.invert ? 'right' : 'left';\n if (orientation === 'vertical') return this.props.invert ? 'bottom' : 'top';\n },\n\n _posMaxKey: function () {\n var orientation = this.props.orientation;\n if (orientation === 'horizontal') return this.props.invert ? 'left' : 'right';\n if (orientation === 'vertical') return this.props.invert ? 'top' : 'bottom';\n },\n\n _sizeKey: function () {\n var orientation = this.props.orientation;\n if (orientation === 'horizontal') return 'clientWidth';\n if (orientation === 'vertical') return 'clientHeight';\n },\n\n _trimAlignValue: function (val, props) {\n return this._alignValue(this._trimValue(val, props), props);\n },\n\n _trimValue: function (val, props) {\n props = props || this.props;\n\n if (val <= props.min) val = props.min;\n if (val >= props.max) val = props.max;\n\n return val;\n },\n\n _alignValue: function (val, props) {\n props = props || this.props;\n\n var valModStep = (val - props.min) % props.step;\n var alignValue = val - valModStep;\n\n if (Math.abs(valModStep) * 2 >= props.step) {\n alignValue += (valModStep > 0) ? props.step : (-props.step);\n }\n\n return parseFloat(alignValue.toFixed(5));\n },\n\n _renderHandle: function (style, child, i) {\n var self = this;\n var className = this.props.handleClassName + ' ' +\n (this.props.handleClassName + '-' + i) + ' ' +\n (this.state.index === i ? this.props.handleActiveClassName : '');\n\n return (\n React.createElement('div', {\n ref: function (r) {\n self['handle' + i] = r;\n },\n key: 'handle' + i,\n className: className,\n style: style,\n onMouseDown: this._createOnMouseDown(i),\n onTouchStart: this._createOnTouchStart(i),\n onFocus: this._createOnKeyDown(i),\n tabIndex: 0,\n role: \"slider\",\n \"aria-valuenow\": this.state.value[i],\n \"aria-valuemin\": this.props.min,\n \"aria-valuemax\": this.props.max,\n \"aria-label\": isArray(this.props.ariaLabel) ? this.props.ariaLabel[i] : this.props.ariaLabel,\n \"aria-valuetext\": this.props.ariaValuetext,\n },\n child\n )\n );\n },\n\n _renderHandles: function (offset) {\n var length = offset.length;\n\n var styles = this.tempArray;\n for (var i = 0; i < length; i++) {\n styles[i] = this._buildHandleStyle(offset[i], i);\n }\n\n var res = [];\n var renderHandle = this._renderHandle;\n if (React.Children.count(this.props.children) > 0) {\n React.Children.forEach(this.props.children, function (child, i) {\n res[i] = renderHandle(styles[i], child, i);\n });\n } else {\n for (i = 0; i < length; i++) {\n res[i] = renderHandle(styles[i], null, i);\n }\n }\n return res;\n },\n\n _renderBar: function (i, offsetFrom, offsetTo) {\n var self = this;\n return (\n React.createElement('div', {\n key: 'bar' + i,\n ref: function (r) {\n self['bar' + i] = r;\n },\n className: this.props.barClassName + ' ' + this.props.barClassName + '-' + i,\n style: this._buildBarStyle(offsetFrom, this.state.upperBound - offsetTo)\n })\n );\n },\n\n _renderBars: function (offset) {\n var bars = [];\n var lastIndex = offset.length - 1;\n\n bars.push(this._renderBar(0, 0, offset[0]));\n\n for (var i = 0; i < lastIndex; i++) {\n bars.push(this._renderBar(i + 1, offset[i], offset[i + 1]));\n }\n\n bars.push(this._renderBar(lastIndex + 1, offset[lastIndex], this.state.upperBound));\n\n return bars;\n },\n\n _onSliderMouseDown: function (e) {\n if (this.props.disabled) return;\n this.hasMoved = false;\n if (!this.props.snapDragDisabled) {\n var position = this._getMousePosition(e);\n this._forceValueFromPosition(position[0], function (i) {\n this._start(i, position[0]);\n this._fireChangeEvent('onChange');\n this._addHandlers(this._getMouseEventMap());\n }.bind(this));\n }\n\n pauseEvent(e);\n },\n\n _onSliderClick: function (e) {\n if (this.props.disabled) return;\n\n if (this.props.onSliderClick && !this.hasMoved) {\n var position = this._getMousePosition(e);\n var valueAtPos = this._trimAlignValue(this._calcValue(this._calcOffsetFromPosition(position[0])));\n this.props.onSliderClick(valueAtPos);\n }\n },\n\n _fireChangeEvent: function (event) {\n if (this.props[event]) {\n this.props[event](undoEnsureArray(this.state.value));\n }\n },\n\n render: function () {\n var self = this;\n var state = this.state;\n var props = this.props;\n\n var offset = this.tempArray;\n var value = state.value;\n var l = value.length;\n for (var i = 0; i < l; i++) {\n offset[i] = this._calcOffset(value[i], i);\n }\n\n var bars = props.withBars ? this._renderBars(offset) : null;\n var handles = this._renderHandles(offset);\n\n return (\n React.createElement('div', {\n ref: function (r) {\n self.slider = r;\n },\n style: {position: 'relative'},\n className: props.className + (props.disabled ? ' disabled' : ''),\n onMouseDown: this._onSliderMouseDown,\n onClick: this._onSliderClick\n },\n bars,\n handles\n )\n );\n }\n });\n\n return ReactSlider;\n}));\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__1Owit\",\"isNation\":\"isNation__WgdNM\",\"InnerContainer\":\"InnerContainer__2pEXw\",\"DefaultButton_Round\":\"DefaultButton_Round__2GdwI\",\"btnPrimary\":\"btnPrimary__3Unt8\",\"btnHollow\":\"btnHollow__TqrKR\",\"btnBlue\":\"btnBlue__YRJUO\",\"btnFoxSoul\":\"btnFoxSoul__lGEn8\",\"DefaultErrorText\":\"DefaultErrorText__e94Yn\",\"title\":\"title__1qRld\",\"passwordLabel\":\"passwordLabel__us1wf\",\"inputField\":\"inputField__2vAp5\",\"back\":\"back__lMFQf\",\"btnX\":\"btnX__T9kcp\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__3jJxV\",\"stylelessButton\":\"stylelessButton__3xscf\",\"link\":\"link__1SyYt\",\"signinCreateProfileContainer\":\"signinCreateProfileContainer__3TbPt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2VM08\",\"header\":\"header__zBX1s\",\"headerInnerContainer\":\"headerInnerContainer__3N3el\",\"headerOpen\":\"headerOpen__1d-5Q\",\"selectedText\":\"selectedText__1cSfA\",\"isActive\":\"isActive__1P9BQ\",\"headerInnerContainerOpen\":\"headerInnerContainerOpen__11HhN\",\"itemContainer\":\"itemContainer__1qKZq\",\"item\":\"item__g85UW\",\"itemContent\":\"itemContent__3_v79\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__2btPB\",\"activeHeader\":\"activeHeader__2Kmfj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"description\":\"description__2Iwxa\",\"activeDescription\":\"activeDescription__3_ui2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"social\":\"social__WM6t0\",\"icon\":\"icon__SvjZJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"description\":\"description__1PiIV\",\"readMore\":\"readMore__b7Jih\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"progressBar\":\"progressBar__1RupT\",\"completed\":\"completed__3byEC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tuneIn\":\"tuneIn__1jRDE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"style_container_1UTck\",\"grid\":\"style_grid_p3ErX\",\"grid-5-4-3-1\":\"style_grid-5-4-3-1_3G0u4\",\"grid-5-4-2-1\":\"style_grid-5-4-2-1_2oX9S\",\"grid-4-3-1\":\"style_grid-4-3-1_1kaMv\",\"grid-4-2-1\":\"style_grid-4-2-1_1kPwT\",\"grid-3-2-1\":\"style_grid-3-2-1_37ixb\",\"grid-4-1\":\"style_grid-4-1_3TNF2\",\"grid-3-1\":\"style_grid-3-1_3gwr6\",\"grid-2-1\":\"style_grid-2-1_2F4Sx\",\"grid-horizontal-1\":\"style_grid-horizontal-1_37Q1e\",\"grid-horizontal-3\":\"style_grid-horizontal-3_q1QBd\",\"grid-4-2\":\"style_grid-4-2_3yt7a\",\"grid-3-2\":\"style_grid-3-2_Z1Okj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonsContainer\":\"WatchTileGrid_buttonsContainer_1QB_W\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"providerContainer\":\"providerContainer__uHF3j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"providerGroup\":\"providerGroup__3GZeZ\",\"providerGroupKey\":\"providerGroupKey__2CarK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"innerContainer\":\"innerContainer__28ojr\",\"headerText\":\"headerText__3Y6K5\",\"descriptionText\":\"descriptionText__2BoqG\",\"confirmContainer\":\"confirmContainer__1PZ9L\",\"confirm\":\"confirm__1tHsO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__28CVQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"SignUpModal\":\"SignUpModal__2LBK0\",\"IconWrapper\":\"IconWrapper__30w_M\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX___sxAK\",\"closeButton\":\"closeButton__2ymlm\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__1F_vq\",\"menuButton\":\"menuButton__3ohC0\",\"stylelessButton\":\"stylelessButton__2HUvD\"};","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rating\":\"DynamicRating_rating_gvAFc\",\"HD\":\"DynamicRating_HD_3hp-I\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__3YANk\",\"hide\":\"hide__1108j\",\"withNetworksBar\":\"withNetworksBar__1lmzl\"};","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n if (typeof window !== 'undefined') {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n return currentWindowProperties() || function (callback, element, delay) {\n window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n };\n}();\n\nvar makeData = function makeData() {\n return {\n currentPositionY: 0,\n startPositionY: 0,\n targetPositionY: 0,\n progress: 0,\n duration: 0,\n cancel: false,\n\n target: null,\n containerElement: null,\n to: null,\n start: null,\n deltaTop: null,\n percent: null,\n delayTimeout: null\n };\n};\n\nvar currentPositionY = function currentPositionY(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollTop;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n var data = options.data;\n\n // Cancel on specific events\n if (!options.ignoreCancelEvents && data.cancel) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n return;\n };\n\n data.deltaTop = Math.round(data.targetPositionY - data.startPositionY);\n\n if (data.start === null) {\n data.start = timestamp;\n }\n\n data.progress = timestamp - data.start;\n\n data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n data.currentPositionY = data.startPositionY + Math.ceil(data.deltaTop * data.percent);\n\n if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n data.containerElement.scrollTop = data.currentPositionY;\n } else {\n window.scrollTo(0, data.currentPositionY);\n }\n\n if (data.percent < 1) {\n var easedAnimate = animateScroll.bind(null, easing, options);\n requestAnimationFrameHelper.call(window, easedAnimate);\n return;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n};\n\nvar setContainer = function setContainer(options) {\n options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(y, options, to, target) {\n options.data = options.data || makeData();\n\n window.clearTimeout(options.data.delayTimeout);\n\n _cancelEvents2.default.subscribe(function () {\n options.data.cancel = true;\n });\n\n setContainer(options);\n\n options.data.start = null;\n options.data.cancel = false;\n options.data.startPositionY = currentPositionY(options);\n options.data.targetPositionY = options.absolute ? y : y + options.data.startPositionY;\n\n if (options.data.startPositionY === options.data.targetPositionY) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPositionY);\n }\n return;\n }\n\n options.data.deltaTop = Math.round(options.data.targetPositionY - options.data.startPositionY);\n\n options.data.duration = functionWrapper(options.duration)(options.data.deltaTop);\n options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n options.data.to = to;\n options.data.target = target;\n\n var easing = getAnimationType(options);\n var easedAnimate = animateScroll.bind(null, easing, options);\n\n if (options && options.delay > 0) {\n options.data.delayTimeout = window.setTimeout(function () {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n }, options.delay);\n return;\n }\n\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n options = _extends({}, options);\n options.data = options.data || makeData();\n options.absolute = true;\n return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toY, options) {\n animateTopScroll(toY, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toY, options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(currentPositionY(options) + toY, options);\n};\n\nexports.default = {\n animateTopScroll: animateTopScroll,\n getAnimationType: getAnimationType,\n scrollToTop: scrollToTop,\n scrollToBottom: scrollToBottom,\n scrollTo: scrollTo,\n scrollMore: scrollMore\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n mountFlag: false,\n initialized: false,\n scroller: null,\n containers: {},\n\n mount: function mount(scroller) {\n this.scroller = scroller;\n\n this.handleHashChange = this.handleHashChange.bind(this);\n window.addEventListener('hashchange', this.handleHashChange);\n\n this.initStateFromHash();\n this.mountFlag = true;\n },\n mapContainer: function mapContainer(to, container) {\n this.containers[to] = container;\n },\n isMounted: function isMounted() {\n return this.mountFlag;\n },\n isInitialized: function isInitialized() {\n return this.initialized;\n },\n initStateFromHash: function initStateFromHash() {\n var _this = this;\n\n var hash = this.getHash();\n if (hash) {\n window.setTimeout(function () {\n _this.scrollTo(hash, true);\n _this.initialized = true;\n }, 10);\n } else {\n this.initialized = true;\n }\n },\n scrollTo: function scrollTo(to, isInit) {\n var scroller = this.scroller;\n var element = scroller.get(to);\n if (element && (isInit || to !== scroller.getActiveLink())) {\n var container = this.containers[to] || document;\n scroller.scrollTo(to, { container: container });\n }\n },\n getHash: function getHash() {\n return _utils2.default.getHash();\n },\n changeHash: function changeHash(to) {\n if (this.isInitialized() && _utils2.default.getHash() !== to) {\n _utils2.default.pushHash(to);\n }\n },\n handleHashChange: function handleHashChange() {\n this.scrollTo(this.getHash());\n },\n unmount: function unmount() {\n this.scroller = null;\n this.containers = null;\n window.removeEventListener('hashchange', this.handleHashChange);\n }\n};\n\nexports.default = scrollHash;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexports.default = function (Component) {\n var Element = function (_React$Component) {\n _inherits(Element, _React$Component);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this.childBindings = {\n domNode: null\n };\n return _this;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n _scroller2.default.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n _scroller2.default.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(_react2.default.Component);\n\n ;\n\n Element.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n };\n\n return Element;\n};","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","exports.f = require('./_wks');\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\n\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","var addMilliseconds = require('../add_milliseconds/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @returns {Date} the new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nfunction addHours (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR)\n}\n\nmodule.exports = addHours\n","var getISOYear = require('../get_iso_year/index.js')\nvar setISOYear = require('../set_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @returns {Date} the new date with the ISO week-numbering years added\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nfunction addISOYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return setISOYear(dirtyDate, getISOYear(dirtyDate) + amount)\n}\n\nmodule.exports = addISOYears\n","var parse = require('../parse/index.js')\nvar startOfISOYear = require('../start_of_iso_year/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year setted\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nfunction setISOYear (dirtyDate, dirtyISOYear) {\n var date = parse(dirtyDate)\n var isoYear = Number(dirtyISOYear)\n var diff = differenceInCalendarDays(date, startOfISOYear(date))\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(isoYear, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n date = startOfISOYear(fourthOfJanuary)\n date.setDate(date.getDate() + diff)\n return date\n}\n\nmodule.exports = setISOYear\n","var addMilliseconds = require('../add_milliseconds/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @returns {Date} the new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE)\n}\n\nmodule.exports = addMinutes\n","var addMonths = require('../add_months/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @returns {Date} the new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nfunction addQuarters (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n var months = amount * 3\n return addMonths(dirtyDate, months)\n}\n\nmodule.exports = addQuarters\n","var addMilliseconds = require('../add_milliseconds/index.js')\n\n/**\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @returns {Date} the new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nfunction addSeconds (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * 1000)\n}\n\nmodule.exports = addSeconds\n","var addMonths = require('../add_months/index.js')\n\n/**\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @returns {Date} the new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nfunction addYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMonths(dirtyDate, amount * 12)\n}\n\nmodule.exports = addYears\n","var getISOYear = require('../get_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nfunction differenceInCalendarISOYears (dirtyDateLeft, dirtyDateRight) {\n return getISOYear(dirtyDateLeft) - getISOYear(dirtyDateRight)\n}\n\nmodule.exports = differenceInCalendarISOYears\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nfunction differenceInCalendarMonths (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth()\n\n return yearDiff * 12 + monthDiff\n}\n\nmodule.exports = differenceInCalendarMonths\n","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nfunction getQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var quarter = Math.floor(date.getMonth() / 3) + 1\n return quarter\n}\n\nmodule.exports = getQuarter\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInCalendarYears (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n return dateLeft.getFullYear() - dateRight.getFullYear()\n}\n\nmodule.exports = differenceInCalendarYears\n","var parse = require('../parse/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\nvar compareAsc = require('../compare_asc/index.js')\n\n/**\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full days\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n */\nfunction differenceInDays (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight))\n dateLeft.setDate(dateLeft.getDate() - sign * difference)\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastDayNotFull)\n}\n\nmodule.exports = differenceInDays\n","var addISOYears = require('../add_iso_years/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nfunction subISOYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addISOYears(dirtyDate, -amount)\n}\n\nmodule.exports = subISOYears\n","var compareDesc = require('../compare_desc/index.js')\nvar parse = require('../parse/index.js')\nvar differenceInSeconds = require('../difference_in_seconds/index.js')\nvar differenceInMonths = require('../difference_in_months/index.js')\nvar enLocale = require('../locale/en/index.js')\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_TWO_MONTHS = 86400\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWords(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 1)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = distanceInWords(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWords(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWords(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nfunction distanceInWords (dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {}\n\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate)\n\n var locale = options.locale\n var localize = enLocale.distanceInWords.localize\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n }\n\n var dateLeft, dateRight\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare)\n dateRight = parse(dirtyDate)\n } else {\n dateLeft = parse(dirtyDate)\n dateRight = parse(dirtyDateToCompare)\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset()\n var minutes = Math.round(seconds / 60) - offset\n var months\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return localize('lessThanXSeconds', 5, localizeOptions)\n } else if (seconds < 10) {\n return localize('lessThanXSeconds', 10, localizeOptions)\n } else if (seconds < 20) {\n return localize('lessThanXSeconds', 20, localizeOptions)\n } else if (seconds < 40) {\n return localize('halfAMinute', null, localizeOptions)\n } else if (seconds < 60) {\n return localize('lessThanXMinutes', 1, localizeOptions)\n } else {\n return localize('xMinutes', 1, localizeOptions)\n }\n } else {\n if (minutes === 0) {\n return localize('lessThanXMinutes', 1, localizeOptions)\n } else {\n return localize('xMinutes', minutes, localizeOptions)\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return localize('xMinutes', minutes, localizeOptions)\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return localize('aboutXHours', 1, localizeOptions)\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60)\n return localize('aboutXHours', hours, localizeOptions)\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return localize('xDays', 1, localizeOptions)\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY)\n return localize('xDays', days, localizeOptions)\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH)\n return localize('aboutXMonths', months, localizeOptions)\n }\n\n months = differenceInMonths(dateRight, dateLeft)\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)\n return localize('xMonths', nearestMonth, localizeOptions)\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12\n var years = Math.floor(months / 12)\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return localize('aboutXYears', years, localizeOptions)\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return localize('overXYears', years, localizeOptions)\n\n // N years 9 months up to N year 12 months\n } else {\n return localize('almostXYears', years + 1, localizeOptions)\n }\n }\n}\n\nmodule.exports = distanceInWords\n","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setDate(date.getDate() + diff)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfWeek\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfMonth\n","var parse = require('../parse/index.js')\nvar startOfYear = require('../start_of_year/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\n\n/**\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nfunction getDayOfYear (dirtyDate) {\n var date = parse(dirtyDate)\n var diff = differenceInCalendarDays(date, startOfYear(date))\n var dayOfYear = diff + 1\n return dayOfYear\n}\n\nmodule.exports = getDayOfYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nfunction startOfYear (dirtyDate) {\n var cleanDate = parse(dirtyDate)\n var date = new Date(0)\n date.setFullYear(cleanDate.getFullYear(), 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfYear\n","var isDate = require('../is_date/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {Date} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} argument must be an instance of Date\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate) {\n if (isDate(dirtyDate)) {\n return !isNaN(dirtyDate)\n } else {\n throw new TypeError(toString.call(dirtyDate) + ' is not an instance of Date')\n }\n}\n\nmodule.exports = isValid\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nfunction isLeapYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0\n}\n\nmodule.exports = isLeapYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nfunction getISODay (dirtyDate) {\n var date = parse(dirtyDate)\n var day = date.getDay()\n\n if (day === 0) {\n day = 7\n }\n\n return day\n}\n\nmodule.exports = getISODay\n","var startOfHour = require('../start_of_hour/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 6, 30)\n * )\n * //=> true\n */\nfunction isSameHour (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft)\n var dateRightStartOfHour = startOfHour(dirtyDateRight)\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()\n}\n\nmodule.exports = isSameHour\n","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an hour\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nfunction startOfHour (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMinutes(0, 0, 0)\n return date\n}\n\nmodule.exports = startOfHour\n","var isSameWeek = require('../is_same_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(\n * new Date(2014, 8, 1),\n * new Date(2014, 8, 7)\n * )\n * //=> true\n */\nfunction isSameISOWeek (dirtyDateLeft, dirtyDateRight) {\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {weekStartsOn: 1})\n}\n\nmodule.exports = isSameISOWeek\n","var startOfISOYear = require('../start_of_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOYear(\n * new Date(2003, 11, 29),\n * new Date(2005, 0, 2)\n * )\n * //=> true\n */\nfunction isSameISOYear (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfYear = startOfISOYear(dirtyDateLeft)\n var dateRightStartOfYear = startOfISOYear(dirtyDateRight)\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()\n}\n\nmodule.exports = isSameISOYear\n","var startOfMinute = require('../start_of_minute/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nfunction isSameMinute (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft)\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight)\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()\n}\n\nmodule.exports = isSameMinute\n","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nfunction startOfMinute (dirtyDate) {\n var date = parse(dirtyDate)\n date.setSeconds(0, 0)\n return date\n}\n\nmodule.exports = startOfMinute\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameMonth (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n}\n\nmodule.exports = isSameMonth\n","var startOfQuarter = require('../start_of_quarter/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(\n * new Date(2014, 0, 1),\n * new Date(2014, 2, 8)\n * )\n * //=> true\n */\nfunction isSameQuarter (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft)\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight)\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()\n}\n\nmodule.exports = isSameQuarter\n","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nfunction startOfQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3\n date.setMonth(month, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfQuarter\n","var startOfSecond = require('../start_of_second/index.js')\n\n/**\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nfunction isSameSecond (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft)\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight)\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()\n}\n\nmodule.exports = isSameSecond\n","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nfunction startOfSecond (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMilliseconds(0)\n return date\n}\n\nmodule.exports = startOfSecond\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameYear (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n\nmodule.exports = isSameYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction lastDayOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setHours(0, 0, 0, 0)\n date.setDate(date.getDate() + diff)\n return date\n}\n\nmodule.exports = lastDayOfWeek\n","var parse = require('../parse/index.js')\nvar getDaysInMonth = require('../get_days_in_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month setted\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nfunction setMonth (dirtyDate, dirtyMonth) {\n var date = parse(dirtyDate)\n var month = Number(dirtyMonth)\n var year = date.getFullYear()\n var day = date.getDate()\n\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(year, month, 15)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth))\n return date\n}\n\nmodule.exports = setMonth\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nmodule.exports = charsStartIndex;\n","var encode = require(\"./lib/encode.js\"),\n decode = require(\"./lib/decode.js\");\n\nexports.decode = function(data, level) {\n return (!level || level <= 0 ? decode.XML : decode.HTML)(data);\n};\n\nexports.decodeStrict = function(data, level) {\n return (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data);\n};\n\nexports.encode = function(data, level) {\n return (!level || level <= 0 ? encode.XML : encode.HTML)(data);\n};\n\nexports.encodeXML = encode.XML;\n\nexports.encodeHTML4 = exports.encodeHTML5 = exports.encodeHTML = encode.HTML;\n\nexports.decodeXML = exports.decodeXMLStrict = decode.XML;\n\nexports.decodeHTML4 = exports.decodeHTML5 = exports.decodeHTML = decode.HTML;\n\nexports.decodeHTML4Strict = exports.decodeHTML5Strict = exports.decodeHTMLStrict = decode.HTMLStrict;\n\nexports.escape = encode.escape;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\nvar rng;\n\nvar crypto = global.crypto || global.msCrypto; // for IE 11\nif (crypto && crypto.getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n rng = function whatwgRNG() {\n crypto.getRandomValues(rnds8);\n return rnds8;\n };\n}\n\nif (!rng) {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n rng = function() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\nmodule.exports = rng;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\nmodule.exports = bytesToUuid;\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Channel = function Channel(data) {\n _classCallCheck(this, Channel);\n\n var listeners = [];\n data = data || {};\n\n this.subscribe = function (fn) {\n listeners.push(fn);\n };\n\n this.unsubscribe = function (fn) {\n var idx = listeners.indexOf(fn);\n if (idx !== -1) listeners.splice(idx, 1);\n };\n\n this.update = function (fn) {\n if (fn) fn(data);\n listeners.forEach(function (l) {\n return l(data);\n });\n };\n};\n\nexports.default = Channel;\nmodule.exports = exports['default'];","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","module.exports = (__webpack_require__(88))(3);","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = __importDefault(require(\"axios\"));\nvar Auth_1 = require(\"./Auth\");\nvar Logger_1 = require(\"./Logger\");\nfunction Api(_a) {\n var _b = _a.baseURL, baseURL = _b === void 0 ? \"\" : _b, _c = _a.apiKey, apiKey = _c === void 0 ? \"\" : _c;\n if (!apiKey || !baseURL) {\n throw Error(\"API config must have baseUrl or apiKey defined\");\n }\n // create instance\n var instance = axios_1.default.create({\n baseURL: baseURL,\n headers: {\n \"x-api-key\": apiKey,\n },\n });\n /* interceptors */\n // log request interceptor\n instance.interceptors.request.use(function (config) {\n var tokenConfig = config;\n var token = Auth_1.AuthStore.getAccessToken();\n Logger_1.logInfo(\"Api: \", \"adding auth header\");\n if (tokenConfig.token && token) {\n tokenConfig.headers.Authorization = \"Bearer \" + token;\n }\n return tokenConfig;\n }, function (error) {\n Logger_1.logError(error);\n return Promise.reject(error);\n });\n // log and determine auth token status 403, store.dispatch(signout())\n instance.interceptors.response.use(function (res) {\n Logger_1.logDebug(\"res: \", res.config.url + \", \" + res.status + \", \" + res.statusText);\n return res && res.data;\n }, function (error) {\n Logger_1.logError(error);\n return Promise.reject(error);\n });\n return instance;\n}\nexports.Api = Api;\n//# sourceMappingURL=Api.js.map","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\nvar upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n});\n\nmodule.exports = upperCase;\n","// Basic colors\nconst color = {\n white: '#ffffff',\n white60: 'rgba(255, 255, 255, 0.6)',\n white20: 'rgba(255, 255, 255, 0.2)',\n black: '#000000',\n highlight: '#1a84dd',\n inactive: '#656e75',\n border: '#222b32',\n};\n\n// Typography values\nconst typography = {};\ntypography.family = {\n sansserif: 'Graphik,\"Helvetica Neue\",Helvetica,Arial,sans-serif',\n proxima: 'proxima-nova,Graphik,\"Helvetica Neue\",Helvetica,Arial,sans-serif',\n monospace: 'monospace',\n};\n\n// Layout values\nconst layout = {};\nlayout.breakpoint = {\n tempDesktopXLMin: '2560px',\n tempDesktopLargeMin: '1440px',\n desktopLargeMin: '2220px',\n desktopMax: '2219px',\n desktopMin: '1099px',\n tabletMax: '1098px',\n tabletV2Max: '1024px',\n tabletMin: '768px',\n mobileMax: '767px',\n};\n\n// Rem values\nconst rem = {};\nrem.page = {\n maxPlayerWidth: '70.9375rem',\n maxPlayerWidthLarge: '106rem',\n maxWidth: '66.9375rem',\n maxWidthLarge: '130rem',\n sidePadding: '2.5rem',\n headerHeightMobile: '3.8rem',\n headerHeightTablet: '6rem',\n headerHeightDesktop: '4.5625rem',\n};\n\n// Exportable theme object\nmodule.exports = {\n theme: 'Fox',\n variables: {\n color,\n typography,\n layout,\n rem,\n },\n};\n","var baseUnset = require('./_baseUnset');\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n}\n\nmodule.exports = unset;\n","var baseToString = require('./_baseToString'),\n castSlice = require('./_castSlice'),\n charsStartIndex = require('./_charsStartIndex'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\nfunction trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n}\n\nmodule.exports = trimStart;\n","var baseForOwn = require('./_baseForOwn'),\n castFunction = require('./_castFunction');\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n","'use strict';\n\nvar React = require('react');\nvar Parser = require('commonmark').Parser;\nvar ReactRenderer = require('commonmark-react-renderer');\nvar propTypes = require('prop-types');\n\nfunction ReactMarkdown(props) {\n React.Component.call(this, props);\n}\n\nReactMarkdown.prototype = Object.create(React.Component.prototype);\nReactMarkdown.prototype.constructor = ReactMarkdown;\n\nReactMarkdown.prototype.render = function() {\n var containerProps = this.props.containerProps || {};\n var renderer = new ReactRenderer(this.props);\n var parser = new Parser(this.props.parserOptions);\n var ast = parser.parse(this.props.source || '');\n\n if (this.props.walker) {\n var walker = ast.walker();\n var event;\n\n while ((event = walker.next())) {\n this.props.walker.call(this, event, walker);\n }\n }\n\n if (this.props.className) {\n containerProps.className = this.props.className;\n }\n\n return React.createElement.apply(React,\n [this.props.containerTagName, containerProps, this.props.childBefore]\n .concat(renderer.render(ast).concat(\n [this.props.childAfter]\n ))\n );\n};\n\nReactMarkdown.propTypes = {\n className: propTypes.string,\n containerProps: propTypes.object,\n source: propTypes.string.isRequired,\n containerTagName: propTypes.string,\n childBefore: propTypes.object,\n childAfter: propTypes.object,\n sourcePos: propTypes.bool,\n escapeHtml: propTypes.bool,\n skipHtml: propTypes.bool,\n softBreak: propTypes.string,\n allowNode: propTypes.func,\n allowedTypes: propTypes.array,\n disallowedTypes: propTypes.array,\n transformLinkUri: propTypes.func,\n transformImageUri: propTypes.func,\n unwrapDisallowed: propTypes.bool,\n renderers: propTypes.object,\n walker: propTypes.func,\n parserOptions: propTypes.object\n};\n\nReactMarkdown.defaultProps = {\n containerTagName: 'div',\n parserOptions: {}\n};\n\nReactMarkdown.types = ReactRenderer.types;\nReactMarkdown.renderers = ReactRenderer.renderers;\nReactMarkdown.uriTransformer = ReactRenderer.uriTransformer;\n\nmodule.exports = ReactMarkdown;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"grid-3-1\":\"TileGridAccountFavorites_grid-3-1_3UdYA\",\"grid\":\"TileGridAccountFavorites_grid_1HR16\",\"grid-3-2\":\"TileGridAccountFavorites_grid-3-2_2bCan\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"TileAccountFavorites_title_3RTU6\",\"tile\":\"TileAccountFavorites_tile_3TSY6\",\"imageContainer\":\"TileAccountFavorites_imageContainer_1xAW-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"list\":\"list__79zGD\",\"listItem\":\"listItem__1Byfs\",\"right\":\"right__38jhT\",\"center\":\"center__2kMYu\",\"left\":\"left__3EkH-\",\"badge\":\"badge__37-ud\",\"subtitle\":\"subtitle__2PGIS\",\"description\":\"description__7KCVY\",\"progress\":\"progress__2TXa_\",\"title\":\"title__saEKJ\",\"titleContainer\":\"titleContainer__4fKpv\",\"icon\":\"icon__3QRAM\",\"play\":\"play__21_D_\",\"liveBadge\":\"liveBadge__12T5I\",\"otherBadge\":\"otherBadge__3xkbl\",\"inlineBadge\":\"inlineBadge__Z9Pej\",\"playDimmed\":\"playDimmed__3SR22\",\"done\":\"done__3G41K\",\"dotdotdot\":\"dotdotdot__3YXFE\",\"x\":\"x__1SCUB\",\"buttonsContainer\":\"buttonsContainer__Kds1N\",\"button\":\"button__Sb_6d\",\"titleText\":\"titleText__2rnDb\",\"episodeCount\":\"episodeCount__3TjW9\"};","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logo\":\"logo__2sZJB\",\"hideNetworkLogo\":\"hideNetworkLogo__3hbdl\"};","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\nvar lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n});\n\nmodule.exports = lowerCase;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"iconDown\":\"DropdownIcon_iconDown_1Em9h\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__1sdpE\",\"isNation\":\"isNation__3NsG4\",\"InnerContainer\":\"InnerContainer__2vmFL\",\"DefaultButton_Round\":\"DefaultButton_Round__1aiz_\",\"miniPlayerActive\":\"miniPlayerActive__NWhTf\",\"previewPass\":\"previewPass__17wBQ\",\"previewPassLoginLink\":\"previewPassLoginLink__1764W\",\"btnPrimary\":\"btnPrimary__3Equw\",\"btnHollow\":\"btnHollow__dSCuI\",\"btnBlue\":\"btnBlue__3r9X6\",\"btnFoxSoul\":\"btnFoxSoul__EyvD3\",\"DefaultErrorText\":\"DefaultErrorText__2W28r\",\"title\":\"title__1K-hz\",\"passwordLabel\":\"passwordLabel__3b9wi\",\"inputField\":\"inputField__2Lcs2\",\"back\":\"back__2URRI\",\"fullscreen\":\"fullscreen__3UyqS\",\"previewPassLine\":\"previewPassLine__2lvOJ\",\"previewPassCopy\":\"previewPassCopy__1kJLK\",\"container\":\"container__1fxlL\",\"previewPassText\":\"previewPassText__3xuZu\",\"previewPassCountdown\":\"previewPassCountdown__bMKPM\",\"playerLoadingImage\":\"playerLoadingImage__3uRLM\",\"loaderBackground\":\"loaderBackground__2Yh5V\",\"previewPassExpired\":\"previewPassExpired__2IrjP\",\"videoBannerContainer\":\"videoBannerContainer__r_Bwo\",\"backfade\":\"backfade__3D2pp\",\"backfadeVisible\":\"backfadeVisible__2c_KI\",\"previewPassHideFullscreen\":\"previewPassHideFullscreen__o2uIM\",\"previewPassWithHover\":\"previewPassWithHover__308ps\",\"previewPassTransition\":\"previewPassTransition__39rB7\",\"previewPassCopyWithHover\":\"previewPassCopyWithHover__3Wp0Z\",\"previewPassLoginLinkWithHover\":\"previewPassLoginLinkWithHover__1Qu8_\",\"hideControls\":\"hideControls__1Bj61\",\"loader\":\"loader__2AuzQ\",\"redesignCollections\":\"redesignCollections__2MxtU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__3leHK\",\"isNation\":\"isNation__3qe-A\",\"InnerContainer\":\"InnerContainer__jsTgz\",\"DefaultButton_Round\":\"DefaultButton_Round__2a8ty\",\"miniPlayerActive\":\"miniPlayerActive__121rF\",\"previewPass\":\"previewPass__1tXiW\",\"previewPassLoginLink\":\"previewPassLoginLink__2mb1C\",\"btnPrimary\":\"btnPrimary__ArkKv\",\"btnHollow\":\"btnHollow__3fd-Z\",\"btnBlue\":\"btnBlue__1fH3-\",\"btnFoxSoul\":\"btnFoxSoul__2q1nf\",\"DefaultErrorText\":\"DefaultErrorText__3zs8F\",\"title\":\"title__WXVHy\",\"passwordLabel\":\"passwordLabel__217lq\",\"inputField\":\"inputField__1dGv8\",\"back\":\"back__2_trd\",\"fullscreen\":\"fullscreen__ot5vI\",\"previewPassLine\":\"previewPassLine__2jB_R\",\"previewPassCopy\":\"previewPassCopy__1rUv2\",\"container\":\"container__1cnK8\",\"previewPassText\":\"previewPassText__1XmeG\",\"previewPassCountdown\":\"previewPassCountdown__MYoAv\",\"playerLoadingImage\":\"playerLoadingImage__2xkvF\",\"loaderBackground\":\"loaderBackground__UTpxa\",\"previewPassExpired\":\"previewPassExpired__2ljLq\",\"videoBannerContainer\":\"videoBannerContainer__2Khiv\",\"backfade\":\"backfade__WM4OF\",\"backfadeVisible\":\"backfadeVisible__1urXi\",\"previewPassHideFullscreen\":\"previewPassHideFullscreen__OcL6k\",\"previewPassWithHover\":\"previewPassWithHover__1-mxY\",\"previewPassTransition\":\"previewPassTransition__CgK7X\",\"previewPassCopyWithHover\":\"previewPassCopyWithHover__1tOIQ\",\"previewPassLoginLinkWithHover\":\"previewPassLoginLinkWithHover__11Z53\",\"hideControls\":\"hideControls__3TUCo\",\"loader\":\"loader__3Zn3w\",\"loaderText\":\"loaderText__2vdIw\",\"preprimetimeText\":\"preprimetimeText__1Khwi\",\"preprimetimeButton\":\"preprimetimeButton__v8Pis\",\"resizablePlayer\":\"resizablePlayer__2ZO52\",\"nationDigitalVideoPlayerContainer\":\"nationDigitalVideoPlayerContainer__1HWl6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1HRU0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta\":\"meta__1sUoa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"title__1hHsa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"descriptionMeta\":\"descriptionMeta__2jVU8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"carouselPosterFirst\":\"carouselPosterFirst__1sci9\",\"carouselPoster\":\"carouselPoster__2u_U-\",\"carouselPosterEnd\":\"carouselPosterEnd__21yqK\",\"additionalPoster\":\"additionalPoster__3dm1O\",\"overlayHeader\":\"overlayHeader__2GT69\",\"logoContainer\":\"logoContainer__1bBgZ\",\"logo\":\"logo__1fZ93\",\"watchList\":\"watchList__3iwUd\",\"hoverStateToolTip\":\"hoverStateToolTip__3O7gG\",\"watchList_Label\":\"watchList_Label__2WJNO\",\"descriptionBlock\":\"descriptionBlock__12Bor\",\"episodeTitle\":\"episodeTitle__95L4y\",\"description\":\"description__23FWg\",\"play\":\"play__3ooiO\",\"videoContainer\":\"videoContainer__4Sl5G\",\"shadowOverlay\":\"shadowOverlay__zl8Wu\",\"previewContainer\":\"previewContainer__P-xpO\",\"imageContainer\":\"imageContainer__1wiRi\",\"playText\":\"playText__2ZDnN\",\"videoPoster\":\"videoPoster__13jcn\",\"posterCTA\":\"posterCTA__mulmi\",\"posterContents\":\"posterContents__3wiJx\",\"invisible\":\"invisible__3QuXT\",\"posterVisible\":\"posterVisible__10W27\",\"simplifiedHover\":\"simplifiedHover__1_v_I\",\"carouselPosterImage\":\"carouselPosterImage__K_JAU\",\"badge\":\"badge__1BF5X\",\"blueBadge\":\"blueBadge__2iWYM\",\"newBadge\":\"newBadge__30Shs\",\"redBadge\":\"redBadge__2twfm\",\"liveBadge\":\"liveBadge__3DvIR\",\"defaultBadge\":\"defaultBadge__1eRiH\",\"audioBadge\":\"audioBadge__3EcEs\",\"otherBadge\":\"otherBadge__3mWc6\",\"hoverStateToolTipLabel\":\"hoverStateToolTipLabel__2WasB\",\"hoverStateToolTipTip\":\"hoverStateToolTipTip__2lLjK\",\"hoverStateToolTipRight\":\"hoverStateToolTipRight__3gSML\",\"watchListToolTip\":\"watchListToolTip__gILnU\",\"watchListButtonContainer\":\"watchListButtonContainer__39YDv\",\"carouselContainer\":\"carouselContainer__3aVr5\",\"seriesDetailAnonymous\":\"seriesDetailAnonymous__1mTeX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pinnedContentContainer\":\"pinnedContentContainer__1YV4y\"};","var createAggregator = require('./_createAggregator');\n\n/**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\nvar partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n}, function() { return [[], []]; });\n\nmodule.exports = partition;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imageContainer\":\"ScheduleItemTile_imageContainer_7BWTz\"};","module.exports = (__webpack_require__(88))(51);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"list\":\"list__23vJ3\",\"listItem\":\"listItem__3IFNm\",\"right\":\"right__UPEOe\",\"center\":\"center__UBQFq\",\"left\":\"left__28HPy\",\"badge\":\"badge__1Y1WS\",\"subtitle\":\"subtitle__23ZXx\",\"description\":\"description__1lEsV\",\"progress\":\"progress__3fecd\",\"title\":\"title__1OavW\",\"titleContainer\":\"titleContainer__2dBtM\",\"icon\":\"icon__28hMO\",\"play\":\"play__1Shh0\",\"liveBadge\":\"liveBadge__d5pNC\",\"otherBadge\":\"otherBadge__32TLu\",\"inlineBadge\":\"inlineBadge__2OQDc\",\"playDimmed\":\"playDimmed__3gRHw\",\"done\":\"done__2Lt6S\",\"dotdotdot\":\"dotdotdot__BKw0T\",\"x\":\"x__2fXw3\",\"buttonsContainer\":\"buttonsContainer__Rp857\",\"button\":\"button__3Zq6n\",\"titleText\":\"titleText__17s0M\",\"episodeCount\":\"episodeCount__3XHif\",\"header\":\"header__2Y4sJ\",\"currentDate\":\"currentDate__2JW2V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"altHeader\":\"AltHeaderPrimeTime_altHeader_jzTWW\",\"altHeaderContainer\":\"AltHeaderPrimeTime_altHeaderContainer_2nbic\",\"altHeaderContent\":\"AltHeaderPrimeTime_altHeaderContent_3EZWL\",\"stickyHeader\":\"AltHeaderPrimeTime_stickyHeader_2cDnX\",\"altHeadline\":\"AltHeaderPrimeTime_altHeadline_ctag4\",\"hide\":\"AltHeaderPrimeTime_hide_1nB4Y\",\"stickyHeaderWithNavSchedule\":\"AltHeaderPrimeTime_stickyHeaderWithNavSchedule_2K8NS\",\"fallbackBackground\":\"AltHeaderPrimeTime_fallbackBackground_1-fss\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__adxRz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"vingette\":\"vingette__Mr0nZ\",\"playButton\":\"playButton__3Yk-Y\",\"fade\":\"fade__3JBOK\",\"container\":\"container__Y4WIL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"shadowOverlay\":\"shadowOverlay__2GlCi\",\"carouselWrappedContainer\":\"carouselWrappedContainer__uhX7p\",\"image\":\"image__2f3Zu\",\"container\":\"container__yPMuJ\",\"withNetworksBar\":\"withNetworksBar__3pagq\",\"video\":\"video__2UDed\",\"redesignCollection\":\"redesignCollection__w4m_2\",\"videoContainer\":\"videoContainer__3uzNC\",\"heroPlayerCTANationBurntInImage\":\"heroPlayerCTANationBurntInImage__1883g\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2Xnrg\"};","var toInteger = require('./toInteger');\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\nmodule.exports = isInteger;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"Favorite_icon_wjAhH\",\"favoriteIcon\":\"Favorite_favoriteIcon_2KL7R\",\"link\":\"Favorite_link_38rUa\",\"optionalText\":\"Favorite_optionalText_2RIcm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"ReadMore_button_iIAVx\",\"buttonContainer\":\"ReadMore_buttonContainer_as2xT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2zoRA\",\"networkLogo\":\"networkLogo__3PwEQ\",\"detailContainer\":\"detailContainer__2fn66\",\"title\":\"title__3qNTR\",\"titleLink\":\"titleLink__j2bIH\",\"showSubtitle\":\"showSubtitle__1D3yv\",\"toggle\":\"toggle__2HjSM\",\"metadata\":\"metadata__1msdb\",\"networkLogoDetail\":\"networkLogoDetail__1zoLl\",\"controlsHidden\":\"controlsHidden__1cMcl\",\"playerLoading\":\"playerLoading__NdnLP\",\"mediaEnding\":\"mediaEnding__2UNSQ\",\"infoContainer\":\"infoContainer__3a1gY\",\"subtitle\":\"subtitle__1vJTB\",\"subtitleCredits\":\"subtitleCredits__8HRIc\",\"subtextCredits\":\"subtextCredits__2OwzS\",\"creditsString\":\"creditsString__1Ju69\",\"subtext\":\"subtext__2UBbd\",\"subtextExpanded\":\"subtextExpanded__1P67g\",\"subtextTuneIn\":\"subtextTuneIn__24ju3\",\"creditsWrapper\":\"creditsWrapper__2qr95\",\"tuneInWrapper\":\"tuneInWrapper__y-LUc\",\"descriptionWrapper\":\"descriptionWrapper__29YX4\",\"badge\":\"badge__1dmup\",\"liveIndicator\":\"liveIndicator__yHgj5\",\"badgeContainer\":\"badgeContainer__n2-eu\",\"titleDisabled\":\"titleDisabled__19inW\",\"contextTitle\":\"contextTitle__1gFD7\",\"adPlaying\":\"adPlaying__1AzjY\",\"hideNetworkLogo\":\"hideNetworkLogo__3mV0j\",\"networkLogoFullscreen\":\"networkLogoFullscreen__2bMIb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AccountContainer\":\"AccountContainer__354Wr\",\"isNation\":\"isNation__3Z5NV\",\"InnerContainer\":\"InnerContainer__19-fz\",\"DefaultButton_Round\":\"DefaultButton_Round__1x8q1\",\"miniPlayerActive\":\"miniPlayerActive__27j9c\",\"previewPass\":\"previewPass__2rd0Y\",\"previewPassLoginLink\":\"previewPassLoginLink__3beN3\",\"btnPrimary\":\"btnPrimary__J85aw\",\"btnHollow\":\"btnHollow__vpD4c\",\"btnBlue\":\"btnBlue__2KuPV\",\"btnFoxSoul\":\"btnFoxSoul__2mV0Z\",\"DefaultErrorText\":\"DefaultErrorText__3MKpu\",\"title\":\"title__YK9Cb\",\"passwordLabel\":\"passwordLabel__Q7DR1\",\"inputField\":\"inputField__1cIzO\",\"back\":\"back__3iVkz\",\"fullscreen\":\"fullscreen__cZB9z\",\"previewPassLine\":\"previewPassLine__32lE9\",\"previewPassCopy\":\"previewPassCopy__21aJW\",\"container\":\"container__1RJYm\",\"previewPassText\":\"previewPassText__uADS0\",\"previewPassCountdown\":\"previewPassCountdown__3dvFO\",\"playerLoadingImage\":\"playerLoadingImage__2bJse\",\"loaderBackground\":\"loaderBackground__1ClP6\",\"previewPassExpired\":\"previewPassExpired__11CYY\",\"videoBannerContainer\":\"videoBannerContainer__1ozie\",\"backfade\":\"backfade__3FBpb\",\"backfadeVisible\":\"backfadeVisible__3n37H\",\"previewPassHideFullscreen\":\"previewPassHideFullscreen__3Quh1\",\"previewPassWithHover\":\"previewPassWithHover__1VWuq\",\"previewPassTransition\":\"previewPassTransition__MO9Y7\",\"previewPassCopyWithHover\":\"previewPassCopyWithHover__3rzWi\",\"previewPassLoginLinkWithHover\":\"previewPassLoginLinkWithHover__1udZq\",\"hideControls\":\"hideControls__1T5VC\",\"loader\":\"loader__C3LfT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"style_image_3sRq3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"progress\":\"style_progress_2M4uD\",\"done\":\"style_done_1x5t7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"networkIcon\":\"networkIcon__3HhPq\",\"tile\":\"tile__2cTbP\",\"details\":\"details__3U0IO\",\"info\":\"info__3gr7C\",\"title\":\"title__26VSx\",\"titlespan\":\"titlespan__3wco3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"scrollableDiv\":\"scrollableDiv__1H0C3\",\"headline\":\"headline__y5YMU\",\"badge\":\"badge__32w2m\",\"blueBadge\":\"blueBadge__xDXGS\",\"newBadge\":\"newBadge__1538h\",\"redBadge\":\"redBadge__22skA\",\"liveBadge\":\"liveBadge__2gfzp\",\"defaultBadge\":\"defaultBadge__1kedw\",\"audioBadge\":\"audioBadge__P6iky\",\"otherBadge\":\"otherBadge__2_qPQ\",\"badgeInvalid\":\"badgeInvalid__29dyx\",\"carouselPoster\":\"carouselPoster__VGwEi\",\"carouselPosterFirst\":\"carouselPosterFirst__2-tB1\",\"carouselPosterEnd\":\"carouselPosterEnd__39WjQ\",\"overlayHeader\":\"overlayHeader__2DmgV\",\"logoContainer\":\"logoContainer__1b3x9\",\"logo\":\"logo__bOT7P\",\"watchList\":\"watchList__1m3tp\",\"watchList_Label\":\"watchList_Label__3mcIt\",\"descriptionBlock\":\"descriptionBlock__GJpO4\",\"episodeTitle\":\"episodeTitle__32fvY\",\"description\":\"description__3YzyP\",\"play\":\"play__1UnOn\",\"videoContainer\":\"videoContainer__1J5rP\",\"shadowOverlay\":\"shadowOverlay__1z-dP\",\"previewContainer\":\"previewContainer__xSqRY\",\"imageContainer\":\"imageContainer__10N9O\",\"playText\":\"playText__11sIX\",\"videoPoster\":\"videoPoster__26b4N\",\"posterCTA\":\"posterCTA__1rMdL\",\"posterContents\":\"posterContents__2ZL_W\",\"invisible\":\"invisible__1qi4x\",\"carouselPosterImage\":\"carouselPosterImage__3i-AP\",\"hoverStateToolTip\":\"hoverStateToolTip__20Djo\",\"hoverStateToolTipLabel\":\"hoverStateToolTipLabel__NCU07\",\"hoverStateToolTipTip\":\"hoverStateToolTipTip__37QM2\",\"hoverStateToolTipRight\":\"hoverStateToolTipRight__3XQBO\",\"watchListToolTip\":\"watchListToolTip__1qfiB\",\"watchListButtonContainer\":\"watchListButtonContainer__Q-684\",\"additionalPoster\":\"additionalPoster__1QBtN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"carouselContainer\":\"carouselContainer__IpYBF\",\"additionalPoster\":\"additionalPoster__2my3d\",\"container\":\"container__11rkD\",\"slick-prev\":\"slick-prev__781Zt\",\"scrollableDiv\":\"scrollableDiv__1eoz4\",\"headline\":\"headline__3DHeu\",\"imageOnly\":\"imageOnly__1og_U\",\"roundArrows\":\"roundArrows__1hDW5\"};","var arrayEach = require('./_arrayEach'),\n baseCreate = require('./_baseCreate'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee'),\n getPrototype = require('./_getPrototype'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray');\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Breadcrumbs_container_2Bdk-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"screen\":\"LatestEpisode_screen_2HR-l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2tCCq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footerContainer\":\"footerContainer__23iDp\"};","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.GoogleLogin=t(require(\"react\")):e.GoogleLogin=t(e.react)}(\"undefined\"!=typeof self?self:this,(function(e){return o={},t.m=n=[function(t){t.exports=e},function(e,t,n){e.exports=n(2)()},function(e,t,n){\"use strict\";function o(){}function r(){}var i=n(3);r.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,r,a){if(a!==i){var c=Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function t(){return e}var n={array:e.isRequired=e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:o};return n.PropTypes=n}},function(e){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){\"use strict\";function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],o=!0,r=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(o=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);o=!0);}catch(e){r=!0,i=e}finally{try{o||null==c.return||c.return()}finally{if(r)throw i}}return n}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(n):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function r(e,t){null!=t&&t<=e.length||(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],o=!0,r=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(o=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);o=!0);}catch(e){r=!0,i=e}finally{try{o||null==c.return||c.return()}finally{if(r)throw i}}return n}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(n):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function a(e,t){null!=t&&t<=e.length||(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],o=!0,r=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(o=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);o=!0);}catch(e){r=!0,i=e}finally{try{o||null==c.return||c.return()}finally{if(r)throw i}}return n}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(n):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function u(e,t){null!=t&&t<=e.length||(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],o=!0,r=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(o=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);o=!0);}catch(e){r=!0,i=e}finally{try{o||null==c.return||c.return()}finally{if(r)throw i}}return n}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(n):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function s(e,t){null!=t&&t<=e.length||(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function f(e,t,n,o,r,i){var a=e.getElementsByTagName(t)[0],c=a,u=a;(u=e.createElement(t)).id=n,u.src=o,c&&c.parentNode?c.parentNode.insertBefore(u,c):e.head.appendChild(u),u.onerror=i,u.onload=r}function d(e,t){var n=e.getElementById(t);n&&n.parentNode.removeChild(n)}function p(e){return b.a.createElement(\"span\",{style:{paddingRight:10,fontWeight:500,paddingLeft:e.icon?0:10,paddingTop:10,paddingBottom:10}},e.children)}function g(e){return b.a.createElement(\"div\",{style:{marginRight:10,background:e.active?\"#eee\":\"#fff\",padding:10,borderRadius:2}},b.a.createElement(\"svg\",{width:\"18\",height:\"18\",xmlns:\"http://www.w3.org/2000/svg\"},b.a.createElement(\"g\",{fill:\"#000\",fillRule:\"evenodd\"},b.a.createElement(\"path\",{d:\"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48z\",fill:\"#EA4335\"}),b.a.createElement(\"path\",{d:\"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62z\",fill:\"#4285F4\"}),b.a.createElement(\"path\",{d:\"M3.88 10.78A5.54 5.54 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9.008 9.008 0 0 0 0 9c0 1.45.35 2.82.96 4.04l2.92-2.26z\",fill:\"#FBBC05\"}),b.a.createElement(\"path\",{d:\"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18z\",fill:\"#34A853\"}),b.a.createElement(\"path\",{fill:\"none\",d:\"M0 0h18v18H0z\"}))))}function y(e){var t=i(Object(m.useState)(!1),2),n=t[0],o=t[1],r=i(Object(m.useState)(!1),2),a=r[0],c=r[1],u=e.tag,l=e.type,s=e.className,f=e.disabledStyle,d=e.buttonText,y=e.children,v=e.render,S=e.theme,j=e.icon,O=e.disabled,x=h({onSuccess:e.onSuccess,onAutoLoadFinished:e.onAutoLoadFinished,onRequest:e.onRequest,onFailure:e.onFailure,onScriptLoadFailure:e.onScriptLoadFailure,clientId:e.clientId,cookiePolicy:e.cookiePolicy,loginHint:e.loginHint,hostedDomain:e.hostedDomain,autoLoad:e.autoLoad,isSignedIn:e.isSignedIn,fetchBasicProfile:e.fetchBasicProfile,redirectUri:e.redirectUri,discoveryDocs:e.discoveryDocs,uxMode:e.uxMode,scope:e.scope,accessType:e.accessType,responseType:e.responseType,jsSrc:e.jsSrc,prompt:e.prompt}),I=x.signIn,w=O||!x.loaded;if(v)return v({onClick:I,disabled:w});var k={backgroundColor:\"dark\"===S?\"rgb(66, 133, 244)\":\"#fff\",display:\"inline-flex\",alignItems:\"center\",color:\"dark\"===S?\"#fff\":\"rgba(0, 0, 0, .54)\",boxShadow:\"0 2px 2px 0 rgba(0, 0, 0, .24), 0 0 1px 0 rgba(0, 0, 0, .24)\",padding:0,borderRadius:2,border:\"1px solid transparent\",fontSize:14,fontWeight:\"500\",fontFamily:\"Roboto, sans-serif\"},A={cursor:\"pointer\",backgroundColor:\"dark\"===S?\"#3367D6\":\"#eee\",color:\"dark\"===S?\"#fff\":\"rgba(0, 0, 0, .54)\",opacity:1},_=w?Object.assign({},k,f):a?Object.assign({},k,A):n?Object.assign({},k,{cursor:\"pointer\",opacity:.9}):k;return b.a.createElement(u,{onMouseEnter:function(){return o(!0)},onMouseLeave:function(){o(!1),c(!1)},onMouseDown:function(){return c(!0)},onMouseUp:function(){return c(!1)},onClick:I,style:_,type:l,disabled:w,className:s},[j&&b.a.createElement(g,{key:1,active:a}),b.a.createElement(p,{icon:j,key:2},y||d)])}n.r(t),n.d(t,\"default\",(function(){return S})),n.d(t,\"GoogleLogin\",(function(){return S})),n.d(t,\"GoogleLogout\",(function(){return O})),n.d(t,\"useGoogleLogin\",(function(){return h})),n.d(t,\"useGoogleLogout\",(function(){return j}));var m=n(0),b=n.n(m),h=(n(1),function(e){function t(e){var t=e.getBasicProfile(),n=e.getAuthResponse(!0);e.googleId=t.getId(),e.tokenObj=n,e.tokenId=n.id_token,e.accessToken=n.access_token,e.profileObj={googleId:t.getId(),imageUrl:t.getImageUrl(),email:t.getEmail(),name:t.getName(),givenName:t.getGivenName(),familyName:t.getFamilyName()},i(e)}function n(e){if(e&&e.preventDefault(),P){var n=window.gapi.auth2.getAuthInstance(),o={prompt:L};p(),\"code\"===_?n.grantOfflineAccess(o).then((function(e){return i(e)}),(function(e){return l(e)})):n.signIn(o).then((function(e){return t(e)}),(function(e){return l(e)}))}}var r=e.onSuccess,i=void 0===r?function(){}:r,a=e.onAutoLoadFinished,c=void 0===a?function(){}:a,u=e.onFailure,l=void 0===u?function(){}:u,s=e.onRequest,p=void 0===s?function(){}:s,g=e.onScriptLoadFailure,y=e.clientId,b=e.cookiePolicy,h=e.loginHint,v=e.hostedDomain,S=e.autoLoad,j=e.isSignedIn,O=e.fetchBasicProfile,x=e.redirectUri,I=e.discoveryDocs,w=e.uxMode,k=e.scope,A=e.accessType,_=e.responseType,E=e.jsSrc,T=void 0===E?\"https://apis.google.com/js/api.js\":E,L=e.prompt,M=o(Object(m.useState)(!1),2),P=M[0],C=M[1];return Object(m.useEffect)((function(){var e=!1,n=g||l;return f(document,\"script\",\"google-login\",T,(function(){var o={client_id:y,cookie_policy:b,login_hint:h,hosted_domain:v,fetch_basic_profile:O,discoveryDocs:I,ux_mode:w,redirect_uri:x,scope:k,access_type:A};\"code\"===_&&(o.access_type=\"offline\"),window.gapi.load(\"auth2\",(function(){var r=window.gapi.auth2.getAuthInstance();r?r.then((function(){e||(j&&r.isSignedIn.get()?(C(!0),c(!0),t(r.currentUser.get())):(C(!0),c(!1)))}),(function(e){l(e)})):window.gapi.auth2.init(o).then((function(n){if(!e){C(!0);var o=j&&n.isSignedIn.get();c(o),o&&t(n.currentUser.get())}}),(function(e){C(!0),c(!1),n(e)}))}))}),(function(e){n(e)})),function(){e=!0,d(document,\"google-login\")}}),[]),Object(m.useEffect)((function(){S&&n()}),[P]),{signIn:n,loaded:P}});function v(e){var t=l(Object(m.useState)(!1),2),n=t[0],o=t[1],r=l(Object(m.useState)(!1),2),i=r[0],a=r[1],c=e.tag,u=e.type,s=e.className,f=e.disabledStyle,d=e.buttonText,y=e.children,h=e.render,v=e.theme,S=e.icon,O=e.disabled,x=j({jsSrc:e.jsSrc,onFailure:e.onFailure,onScriptLoadFailure:e.onScriptLoadFailure,clientId:e.clientId,cookiePolicy:e.cookiePolicy,loginHint:e.loginHint,hostedDomain:e.hostedDomain,fetchBasicProfile:e.fetchBasicProfile,discoveryDocs:e.discoveryDocs,uxMode:e.uxMode,redirectUri:e.redirectUri,scope:e.scope,accessType:e.accessType,onLogoutSuccess:e.onLogoutSuccess}),I=x.signOut,w=O||!x.loaded;if(h)return h({onClick:I,disabled:w});var k={backgroundColor:\"dark\"===v?\"rgb(66, 133, 244)\":\"#fff\",display:\"inline-flex\",alignItems:\"center\",color:\"dark\"===v?\"#fff\":\"rgba(0, 0, 0, .54)\",boxShadow:\"0 2px 2px 0 rgba(0, 0, 0, .24), 0 0 1px 0 rgba(0, 0, 0, .24)\",padding:0,borderRadius:2,border:\"1px solid transparent\",fontSize:14,fontWeight:\"500\",fontFamily:\"Roboto, sans-serif\"},A={cursor:\"pointer\",backgroundColor:\"dark\"===v?\"#3367D6\":\"#eee\",color:\"dark\"===v?\"#fff\":\"rgba(0, 0, 0, .54)\",opacity:1},_=w?Object.assign({},k,f):i?Object.assign({},k,A):n?Object.assign({},k,{cursor:\"pointer\",opacity:.9}):k;return b.a.createElement(c,{onMouseEnter:function(){return o(!0)},onMouseLeave:function(){o(!1),a(!1)},onMouseDown:function(){return a(!0)},onMouseUp:function(){return a(!1)},onClick:I,style:_,type:u,disabled:w,className:s},[S&&b.a.createElement(g,{key:1,active:i}),b.a.createElement(p,{icon:S,key:2},y||d)])}y.defaultProps={type:\"button\",tag:\"button\",buttonText:\"Sign in with Google\",scope:\"profile email\",accessType:\"online\",prompt:\"\",cookiePolicy:\"single_host_origin\",fetchBasicProfile:!0,isSignedIn:!1,uxMode:\"popup\",disabledStyle:{opacity:.6},icon:!0,theme:\"light\",onRequest:function(){}};var S=y,j=function(e){var t=e.jsSrc,n=void 0===t?\"https://apis.google.com/js/api.js\":t,o=e.onFailure,r=e.onScriptLoadFailure,i=e.clientId,a=e.cookiePolicy,u=e.loginHint,l=e.hostedDomain,s=e.fetchBasicProfile,p=e.discoveryDocs,g=e.uxMode,y=e.redirectUri,b=e.scope,h=e.accessType,v=e.onLogoutSuccess,S=c(Object(m.useState)(!1),2),j=S[0],O=S[1],x=Object(m.useCallback)((function(){if(window.gapi){var e=window.gapi.auth2.getAuthInstance();null!=e&&e.then((function(){e.signOut().then((function(){e.disconnect(),v()}))}),(function(e){return o(e)}))}}),[v]);return Object(m.useEffect)((function(){var e=r||o;return f(document,\"script\",\"google-login\",n,(function(){var t={client_id:i,cookie_policy:a,login_hint:u,hosted_domain:l,fetch_basic_profile:s,discoveryDocs:p,ux_mode:g,redirect_uri:y,scope:b,access_type:h};window.gapi.load(\"auth2\",(function(){window.gapi.auth2.getAuthInstance()?O(!0):window.gapi.auth2.init(t).then((function(){return O(!0)}),(function(t){return e(t)}))}))}),(function(t){e(t)})),function(){d(document,\"google-login\")}}),[]),{signOut:x,loaded:j}};v.defaultProps={type:\"button\",tag:\"button\",buttonText:\"Logout of Google\",disabledStyle:{opacity:.6},icon:!0,theme:\"light\",jsSrc:\"https://apis.google.com/js/api.js\"};var O=v}],t.c=o,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:o})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&n&&\"string\"!=typeof e)for(var r in e)t.d(o,r,function(t){return e[t]}.bind(null,r));return o},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=4);function t(e){if(o[e])return o[e].exports;var r=o[e]={i:e,l:!1,exports:{}};return n[e].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n,o}));","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n negate = require('./negate');\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nmodule.exports = reject;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"support\":\"SupportLink_support_2hYm4\"};","var baseOrderBy = require('./_baseOrderBy'),\n isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PromoList_container_3ewRf\",\"headline\":\"PromoList_headline_q5YKK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tile\":\"tiles_tile_U4cG1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"castItem\":\"CastItem_castItem_3AwwT\",\"wrapper\":\"CastItem_wrapper_qTzqf\",\"linkableWrapper\":\"CastItem_linkableWrapper_2ArSo\",\"image\":\"CastItem_image_kJsUE\",\"name\":\"CastItem_name_3EHvL\",\"role\":\"CastItem_role_3Oq31\",\"socialNetworksList\":\"CastItem_socialNetworksList_2SoSa\",\"socialNetworkItem\":\"CastItem_socialNetworkItem_3pGBC\",\"twitter\":\"CastItem_twitter_3NG_J\",\"facebook\":\"CastItem_facebook_ZrnSj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"castItem\":\"CastItem_castItem_2cEmD\",\"wrapper\":\"CastItem_wrapper_4bign\",\"name\":\"CastItem_name_2-0Iz\",\"role\":\"CastItem_role_1u5-w\",\"image\":\"CastItem_image_3hty6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"BioDetail_container_3Q79h\",\"bio\":\"BioDetail_bio_2kP8e\",\"cast\":\"BioDetail_cast_1hvq3\",\"navigationWrapper\":\"BioDetail_navigationWrapper_lygQW\",\"leftArrow\":\"BioDetail_leftArrow_26YI9\",\"rightArrow\":\"BioDetail_rightArrow_2j9_j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stickyHeader\":\"AltHeader_stickyHeader_1ZpVu\",\"altHeaderContainer\":\"AltHeader_altHeaderContainer_382GJ\",\"altHeader\":\"AltHeader_altHeader_3-JJM\",\"altHeadline\":\"AltHeader_altHeadline_2DcTU\"};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _throttle = _interopRequireDefault(require(\"./throttle\"));\n\nfunction isEqualArray(a, b) {\n return a.length === b.length && a.every(function (item, index) {\n return item === b[index];\n });\n}\n\nvar Scrollspy =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inherits2.default)(Scrollspy, _React$Component);\n (0, _createClass2.default)(Scrollspy, null, [{\n key: \"propTypes\",\n get: function get() {\n return {\n items: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,\n currentClassName: _propTypes.default.string.isRequired,\n scrolledPastClassName: _propTypes.default.string,\n style: _propTypes.default.object,\n componentTag: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.elementType]),\n offset: _propTypes.default.number,\n rootEl: _propTypes.default.string,\n onUpdate: _propTypes.default.func\n };\n }\n }, {\n key: \"defaultProps\",\n get: function get() {\n return {\n items: [],\n currentClassName: '',\n style: {},\n componentTag: 'ul',\n offset: 0,\n onUpdate: function onUpdate() {}\n };\n }\n }]);\n\n function Scrollspy(props) {\n var _this;\n\n (0, _classCallCheck2.default)(this, Scrollspy);\n _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Scrollspy).call(this, props));\n _this.state = {\n targetItems: [],\n inViewState: [],\n isScrolledPast: [] // manually bind as ES6 does not apply this\n // auto binding as React.createClass does\n\n };\n _this._handleSpy = _this._handleSpy.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n (0, _createClass2.default)(Scrollspy, [{\n key: \"_initSpyTarget\",\n value: function _initSpyTarget(items) {\n var targetItems = items.map(function (item) {\n return document.getElementById(item);\n });\n return targetItems;\n } // https://github.com/makotot/react-scrollspy/pull/45\n\n }, {\n key: \"_fillArray\",\n value: function _fillArray(array, val) {\n var newArray = [];\n\n for (var i = 0, max = array.length; i < max; i++) {\n newArray[i] = val;\n }\n\n return newArray;\n }\n }, {\n key: \"_isScrolled\",\n value: function _isScrolled() {\n return this._getScrollDimension().scrollTop > 0;\n }\n }, {\n key: \"_getScrollDimension\",\n value: function _getScrollDimension() {\n var doc = document;\n var rootEl = this.props.rootEl;\n var scrollTop = rootEl ? doc.querySelector(rootEl).scrollTop : doc.documentElement.scrollTop || doc.body.parentNode.scrollTop || doc.body.scrollTop;\n var scrollHeight = rootEl ? doc.querySelector(rootEl).scrollHeight : doc.documentElement.scrollHeight || doc.body.parentNode.scrollHeight || doc.body.scrollHeight;\n return {\n scrollTop: scrollTop,\n scrollHeight: scrollHeight\n };\n }\n }, {\n key: \"_getElemsViewState\",\n value: function _getElemsViewState(targets) {\n var elemsInView = [];\n var elemsOutView = [];\n var viewStatusList = [];\n var targetItems = targets ? targets : this.state.targetItems;\n var hasInViewAlready = false;\n\n for (var i = 0, max = targetItems.length; i < max; i++) {\n var currentContent = targetItems[i];\n var isInView = hasInViewAlready ? false : this._isInView(currentContent);\n\n if (isInView) {\n hasInViewAlready = true;\n elemsInView.push(currentContent);\n } else {\n elemsOutView.push(currentContent);\n }\n\n var isLastItem = i === max - 1;\n\n var isScrolled = this._isScrolled(); // https://github.com/makotot/react-scrollspy/pull/26#issue-167413769\n\n\n var isLastShortItemAtBottom = this._isAtBottom() && this._isInView(currentContent) && !isInView && isLastItem && isScrolled;\n\n if (isLastShortItemAtBottom) {\n elemsOutView.pop();\n elemsOutView.push.apply(elemsOutView, (0, _toConsumableArray2.default)(elemsInView));\n elemsInView = [currentContent];\n viewStatusList = this._fillArray(viewStatusList, false);\n isInView = true;\n }\n\n viewStatusList.push(isInView);\n }\n\n return {\n inView: elemsInView,\n outView: elemsOutView,\n viewStatusList: viewStatusList,\n scrolledPast: this.props.scrolledPastClassName && this._getScrolledPast(viewStatusList)\n };\n }\n }, {\n key: \"_isInView\",\n value: function _isInView(el) {\n if (!el) {\n return false;\n }\n\n var _this$props = this.props,\n rootEl = _this$props.rootEl,\n offset = _this$props.offset;\n var rootRect;\n\n if (rootEl) {\n rootRect = document.querySelector(rootEl).getBoundingClientRect();\n }\n\n var rect = el.getBoundingClientRect();\n var winH = rootEl ? rootRect.height : window.innerHeight;\n\n var _this$_getScrollDimen = this._getScrollDimension(),\n scrollTop = _this$_getScrollDimen.scrollTop;\n\n var scrollBottom = scrollTop + winH;\n var elTop = rootEl ? rect.top + scrollTop - rootRect.top + offset : rect.top + scrollTop + offset;\n var elBottom = elTop + el.offsetHeight;\n return elTop < scrollBottom && elBottom > scrollTop;\n }\n }, {\n key: \"_isAtBottom\",\n value: function _isAtBottom() {\n var rootEl = this.props.rootEl;\n\n var _this$_getScrollDimen2 = this._getScrollDimension(),\n scrollTop = _this$_getScrollDimen2.scrollTop,\n scrollHeight = _this$_getScrollDimen2.scrollHeight;\n\n var winH = rootEl ? document.querySelector(rootEl).getBoundingClientRect().height : window.innerHeight;\n var scrolledToBottom = scrollTop + winH >= scrollHeight;\n return scrolledToBottom;\n }\n }, {\n key: \"_getScrolledPast\",\n value: function _getScrolledPast(viewStatusList) {\n if (!viewStatusList.some(function (item) {\n return item;\n })) {\n return viewStatusList;\n }\n\n var hasFoundInView = false;\n var scrolledPastItems = viewStatusList.map(function (item) {\n if (item && !hasFoundInView) {\n hasFoundInView = true;\n return false;\n }\n\n return !hasFoundInView;\n });\n return scrolledPastItems;\n }\n }, {\n key: \"_spy\",\n value: function _spy(targets) {\n var _this2 = this;\n\n var elemensViewState = this._getElemsViewState(targets);\n\n var currentStatuses = this.state.inViewState;\n this.setState({\n inViewState: elemensViewState.viewStatusList,\n isScrolledPast: elemensViewState.scrolledPast\n }, function () {\n _this2._update(currentStatuses);\n });\n }\n }, {\n key: \"_update\",\n value: function _update(prevStatuses) {\n if (isEqualArray(this.state.inViewState, prevStatuses)) {\n return;\n }\n\n this.props.onUpdate(this.state.targetItems[this.state.inViewState.indexOf(true)]);\n }\n }, {\n key: \"_handleSpy\",\n value: function _handleSpy() {\n (0, _throttle.default)(this._spy(), 100);\n }\n }, {\n key: \"_initFromProps\",\n value: function _initFromProps() {\n var targetItems = this._initSpyTarget(this.props.items);\n\n this.setState({\n targetItems: targetItems\n });\n\n this._spy(targetItems);\n }\n }, {\n key: \"offEvent\",\n value: function offEvent() {\n var el = this.props.rootEl ? document.querySelector(this.props.rootEl) : window;\n el.removeEventListener('scroll', this._handleSpy);\n }\n }, {\n key: \"onEvent\",\n value: function onEvent() {\n var el = this.props.rootEl ? document.querySelector(this.props.rootEl) : window;\n el.addEventListener('scroll', this._handleSpy);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._initFromProps();\n\n this.onEvent();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.offEvent();\n }\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps() {\n this._initFromProps();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var Tag = this.props.componentTag;\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n scrolledPastClassName = _this$props2.scrolledPastClassName,\n style = _this$props2.style;\n var counter = 0;\n\n var items = _react.default.Children.map(children, function (child, idx) {\n var _classNames;\n\n if (!child) {\n return null;\n }\n\n var ChildTag = child.type;\n var isScrolledPast = scrolledPastClassName && _this3.state.isScrolledPast[idx];\n var childClass = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, \"\".concat(child.props.className), child.props.className), (0, _defineProperty2.default)(_classNames, \"\".concat(_this3.props.currentClassName), _this3.state.inViewState[idx]), (0, _defineProperty2.default)(_classNames, \"\".concat(_this3.props.scrolledPastClassName), isScrolledPast), _classNames));\n return _react.default.createElement(ChildTag, (0, _extends2.default)({}, child.props, {\n className: childClass,\n key: counter++\n }), child.props.children);\n });\n\n var itemClass = (0, _classnames.default)((0, _defineProperty2.default)({}, \"\".concat(className), className));\n return _react.default.createElement(Tag, {\n className: itemClass,\n style: style\n }, items);\n }\n }]);\n return Scrollspy;\n}(_react.default.Component);\n\nexports.default = Scrollspy;","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\nvar countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n});\n\nmodule.exports = countBy;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tile\":\"seriesCollectionVideoTiles_tile_zVFxw\",\"title\":\"seriesCollectionVideoTiles_title_3brBs\",\"subtitle\":\"seriesCollectionVideoTiles_subtitle_fjwex\",\"description\":\"seriesCollectionVideoTiles_description_3GhRC\",\"metadata\":\"seriesCollectionVideoTiles_metadata_QtUIM\",\"networkIcon\":\"seriesCollectionVideoTiles_networkIcon_36nyA\",\"titleLock\":\"seriesCollectionVideoTiles_titleLock_3skhm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"Article_title_aKcpG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"carouselContainer\":\"carouselContainer__19zaM\",\"container\":\"container__1ORdj\",\"scrollableDiv\":\"scrollableDiv__2AUAr\",\"headline\":\"headline__KGuaL\",\"imageOnly\":\"imageOnly__T6ltQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__3rAFD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"description\":\"description__34YVN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__1pLZq\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__2UzYy\",\"stylelessButton\":\"stylelessButton__2WNOs\",\"rewardsCTA\":\"rewardsCTA__zQjBM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"title__1C_gB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnX\":\"btnX__1hFi_\",\"horizontal3LinesMenuButton\":\"horizontal3LinesMenuButton__10m4c\",\"stylelessButton\":\"stylelessButton__2I6kN\",\"dropCTA\":\"dropCTA__a1M3n\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"h1\":\"h1__1kqIK\",\"h2\":\"h2__3ldhW\",\"h3\":\"h3__3RSwf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dividerLine\":\"dividerLine__2rwE4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"background\":\"background__ltkvp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"Favorite_button_18GLX\",\"checkmark-thin\":\"Favorite_checkmark-thin_3ZkcX\",\"optional\":\"Favorite_optional_EwR4x\",\"favoriteIcon\":\"Favorite_favoriteIcon_1QhH-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta\":\"meta__25Xju\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"epgFavorite\":\"Favorite_epgFavorite_1Z7Po\",\"button\":\"Favorite_button_21XZu\",\"link\":\"Favorite_link_1-ZyV\",\"icon\":\"Favorite_icon_32WoA\",\"watchList\":\"Favorite_watchList_4myzN\",\"favoriteIcon\":\"Favorite_favoriteIcon_3k4LA\",\"optional\":\"Favorite_optional_Lou_e\",\"favoriteTextIcon\":\"Favorite_favoriteTextIcon_3lWxT\",\"optionalText\":\"Favorite_optionalText_3_EMg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"grid\":\"grid__2SZZm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tile\":\"tile__2J8FE\",\"imageContainer\":\"imageContainer__14Ibz\",\"image\":\"image__1lZbZ\",\"play\":\"play__3xlu2\",\"playButton\":\"playButton__3kTpC\",\"title\":\"title__23yHK\",\"description\":\"description__-y4CA\",\"metadata\":\"metadata__3TtG-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"recommendedCarousel\":\"recommendedCarousel__FnGeo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"style_image_7JaTq\",\"imageContainer\":\"style_imageContainer_2DDYa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"style_image_UE3f3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Breadcrumbs_container_1qbmA\"};","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","module.exports=function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function r(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function u(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function c(e){return function(t){function n(e){i(this,n);var t=r(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e));return t.state={windowSize:{windowWidth:window&&window.innerWidth||document&&(document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth)||null,windowHeight:window&&window.innerHeight||document&&(document.documentElement.clientHeight||document.body.clientHeight)||null}},t}return u(n,t),a(n,[{key:\"render\",value:function(){var t=this;return p.default.createElement(m,{onResize:function(e){return t.setState({windowSize:e})}},p.default.createElement(e,s({},this.props,{windowSize:this.state.windowSize})))}}]),n}(p.default.Component)}Object.defineProperty(t,\"__esModule\",{value:!0});var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();t.withWindowSizeListener=c;var l=n(1),p=o(l),f=n(2),d=o(f),h=n(5),y=o(h),m=function(e){function t(e){i(this,t);var n=r(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.displayName=\"WindowSizeListener\",n._listeners=[],n.DEBOUNCE_TIME=100,n.onResize=n.onResize.bind(n),n}return u(t,e),a(t,[{key:\"shouldComponentUpdate\",value:function(e){return e.onResize!==this.props.onResize}},{key:\"componentDidMount\",value:function(){this._listeners.length||(this._debouncedResize=(0,y.default)(this.onResize,this.DEBOUNCE_TIME),window.addEventListener(\"resize\",this._debouncedResize,!1)),this._listeners.push(this.props.onResize),this._debouncedResize()}},{key:\"componentWillUnmount\",value:function(){var e=this._listeners.indexOf(this.props.onResize);this._listeners.splice(e,1),this._listeners.length||window.removeEventListener(\"resize\",this._debouncedResize,!1)}},{key:\"componentDidUpdate\",value:function(e){if(e.onResize!==this.props.onResize){var t=this._listeners.indexOf(e.onResize);this._listeners.splice(t,1,this.props.onResize)}}},{key:\"onResize\",value:function(){var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,t=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;this._listeners.forEach(function(n){n({windowWidth:e,windowHeight:t})})}},{key:\"render\",value:function(){return this.props.children?this.props.children:null}},{key:\"DEBOUNCE_TIME\",get:function(){return this._DEBOUNCE_TIME},set:function(e){this._DEBOUNCE_TIME=e}}]),t}(p.default.Component);m.propTypes={onResize:d.default.func.isRequired},t.default=m},function(e,t){e.exports=require(\"react\")},function(e,t,n){e.exports=n(3)()},function(e,t,n){\"use strict\";function o(){}var i=n(4);e.exports=function(){function e(e,t,n,o,r,u){if(u!==i){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return n.checkPropTypes=o,n.PropTypes=n,n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){function o(e,t,n){function o(){w&&clearTimeout(w),d&&clearTimeout(d),b=0,d=w=v=void 0}function r(t,n){n&&clearTimeout(n),d=w=v=void 0,t&&(b=a(),h=e.apply(m,f),w||d||(f=m=void 0))}function s(){var e=t-(a()-y);e<=0||e>t?r(v,d):w=setTimeout(s,e)}function l(){r(E,w)}function p(){if(f=arguments,y=a(),m=this,v=E&&(w||!O),!1===_)var n=O&&!w;else{d||O||(b=y);var o=_-(y-b),i=o<=0||o>_;i?(d&&(d=clearTimeout(d)),b=y,h=e.apply(m,f)):d||(d=setTimeout(l,o))}return i&&w?w=clearTimeout(w):w||t===_||(w=setTimeout(s,t)),n&&(i=!0,h=e.apply(m,f)),!i||w||d||(f=m=void 0),h}var f,d,h,y,m,w,v,b=0,_=!1,E=!0;if(\"function\"!=typeof e)throw new TypeError(u);if(t=t<0?0:+t||0,!0===n){var O=!0;E=!1}else i(n)&&(O=!!n.leading,_=\"maxWait\"in n&&c(+n.maxWait||0,t),E=\"trailing\"in n?!!n.trailing:E);return p.cancel=o,p}function i(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}var r=n(6),u=\"Expected a function\",c=Math.max,s=r(Date,\"now\"),a=s||function(){return(new Date).getTime()};e.exports=o},function(e,t){function n(e){return!!e&&\"object\"==typeof e}function o(e,t){var n=null==e?void 0:e[t];return u(n)?n:void 0}function i(e){return r(e)&&f.call(e)==c}function r(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function u(e){return null!=e&&(i(e)?d.test(l.call(e)):n(e)&&s.test(e))}var c=\"[object Function]\",s=/^\\[object .+?Constructor\\]$/,a=Object.prototype,l=Function.prototype.toString,p=a.hasOwnProperty,f=a.toString,d=RegExp(\"^\"+l.call(p).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");e.exports=o}]);","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./core\"));\n__export(require(\"./integrations\"));\n//# sourceMappingURL=index.js.map","var root = require('./_root');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite;\n\n/**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\nfunction isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n}\n\nmodule.exports = isFinite;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__2vICj\",\"description\":\"description__o0I_H\",\"innerContainer\":\"innerContainer__3o76n\",\"content\":\"content__1pAl2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__39R4f\",\"innerContainer\":\"innerContainer__1zNNE\",\"content\":\"content__3rARA\",\"perksContainer\":\"perksContainer__1t9tg\",\"perkHeaderContainer\":\"perkHeaderContainer__1DCKX\",\"perkContainer\":\"perkContainer__3bC27\",\"perkIcon\":\"perkIcon__1IB6K\",\"perkImageContainer\":\"perkImageContainer__2CKj1\",\"headerPerkText\":\"headerPerkText__1aW4G\",\"perkText\":\"perkText__1Bh2_\",\"perksSeparator\":\"perksSeparator__3X852\",\"close\":\"close__3UZPI\",\"resumeWithProfile\":\"resumeWithProfile__2VDcv\",\"perkInnerContainer\":\"perkInnerContainer__2fwaw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1qZ3L\",\"innerContainer\":\"innerContainer__16iGg\",\"content\":\"content__2n6jS\",\"perksContainer\":\"perksContainer__3YnFE\",\"perkHeaderContainer\":\"perkHeaderContainer__2AUaY\",\"perkContainer\":\"perkContainer__2c64b\",\"perkIcon\":\"perkIcon__2rZJb\",\"perkImageContainer\":\"perkImageContainer__3Wb-u\",\"headerPerkText\":\"headerPerkText__1EqaP\",\"perkText\":\"perkText__NiGrV\",\"perksSeparator\":\"perksSeparator__2hIQv\",\"close\":\"close__3YWsR\",\"resumeWithProfile\":\"resumeWithProfile__tf7q6\",\"perkInnerContainer\":\"perkInnerContainer__3Ch6q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__1Dl6m\",\"content\":\"content__1va8B\",\"close\":\"close__2u5Y1\",\"mvpdIncompleteHeading\":\"mvpdIncompleteHeading__3TZS6\",\"mvpdIncompleteSubheading\":\"mvpdIncompleteSubheading__25ANx\",\"mvpdIncompleteButton\":\"mvpdIncompleteButton__1CwUg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"content__1UXop\",\"icon\":\"icon__1Yl7_\",\"headerText\":\"headerText__1tUfY\",\"descriptionText\":\"descriptionText__3I2KI\",\"buttonContainer\":\"buttonContainer__3VQvZ\",\"primaryButton\":\"primaryButton__1u7dD\",\"secondaryButton\":\"secondaryButton__1NO22\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"back\":\"back__1Fh1F\",\"backDesktop\":\"backDesktop__20X3_\",\"headerBar\":\"headerBar__nPQFS\",\"mvpdframe\":\"mvpdframe__3uh3q\",\"content\":\"content__14Uvf\",\"link\":\"link__17ibX\",\"hideMobile\":\"hideMobile__14cFv\",\"hideDesktop\":\"hideDesktop__1cK9p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"innerContainer\":\"innerContainer__1JEwD\",\"content\":\"content__1M0la\",\"logoContainerNoAuthZ\":\"logoContainerNoAuthZ__2_lT2\",\"close\":\"close__2Ucou\",\"iconContainer\":\"iconContainer__eBJ-Q\",\"checkmark\":\"checkmark__2n_BW\",\"logoContainer\":\"logoContainer__1sSbi\",\"networkContainer\":\"networkContainer__3ddmu\",\"successContainer\":\"successContainer__2V84t\",\"headerText\":\"headerText__KKSR6\",\"descriptionText\":\"descriptionText__1KGgN\",\"logo\":\"logo__1wGfX\",\"headerBarMobile\":\"headerBarMobile__3jAa1\",\"descriptionTextLimitedAccess\":\"descriptionTextLimitedAccess__34b6x\",\"networkContainer2\":\"networkContainer2__NyNNs\",\"authSuccessButton\":\"authSuccessButton__20bhi\",\"noAccessDescription\":\"noAccessDescription__2DOsK\",\"noAccessLockIcon\":\"noAccessLockIcon__3S9gL\",\"lockIcon\":\"lockIcon__tZawe\",\"logoImage\":\"logoImage__2wLgP\",\"networkLogoContainer\":\"networkLogoContainer__p9JK8\",\"networkLogoContainerFade\":\"networkLogoContainerFade__3Xa9N\",\"networkLogoImage\":\"networkLogoImage__3CGBL\",\"confirmContainer\":\"confirmContainer__1VQUU\",\"confirm\":\"confirm__NGvj3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__2qcam\",\"description\":\"description__3TgH2\",\"innerContainer\":\"innerContainer__3Ontv\",\"content\":\"content__2-Xha\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header__10U89\",\"description\":\"description__11MFJ\",\"innerContainer\":\"innerContainer__2mdQk\",\"content\":\"content__3kwQn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"innerContainer\":\"innerContainer__2sU-R\",\"container\":\"container__3hRk4\",\"headerText\":\"headerText__1vq1y\",\"content\":\"content__2ru-V\",\"descriptionText\":\"descriptionText__3Z6HA\",\"confirmContainer\":\"confirmContainer__2qSVQ\",\"confirm\":\"confirm___xM_V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__WecSp\",\"innerContainer\":\"innerContainer__28Be3\",\"expiredMVPD\":\"expiredMVPD__2-UFT\",\"content\":\"content__WSxxW\",\"hasOnClose\":\"hasOnClose__3YUFW\",\"button\":\"button__1pYO-\",\"perksContainer\":\"perksContainer__IzGRg\",\"perkContainer\":\"perkContainer__326cr\",\"perkIcon\":\"perkIcon__3ENWT\",\"perkImageContainer\":\"perkImageContainer__1ECuZ\",\"perkText\":\"perkText__1DXaf\",\"perksSeparator\":\"perksSeparator__kFYlx\",\"close\":\"close__2MRVy\",\"perkInnerContainer\":\"perkInnerContainer__3yVqp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"container__2icf5\",\"innerContainer\":\"innerContainer__3aazZ\",\"content\":\"content__1F3yR\",\"hasOnClose\":\"hasOnClose__31TGy\",\"button\":\"button__2I_zT\",\"perksContainer\":\"perksContainer__3I_E0\",\"perkContainer\":\"perkContainer__3fjyW\",\"perkIcon\":\"perkIcon__3wxRt\",\"perkImageContainer\":\"perkImageContainer__b6XF4\",\"perkText\":\"perkText__2d45q\",\"perksSeparator\":\"perksSeparator__dGDwz\",\"close\":\"close__3o26o\",\"perkInnerContainer\":\"perkInnerContainer__387LW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"errorDetails\":\"errorDetails__3xTQ4\",\"close\":\"close__26Ztw\",\"mvpdRetry\":\"mvpdRetry__2eBHW\",\"content\":\"content__1iMql\",\"maybeLaterLink\":\"maybeLaterLink__2wTAz\",\"mvpdRetryHeading\":\"mvpdRetryHeading__36dmj\",\"mvpdRetryButton\":\"mvpdRetryButton__21Ptp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"innerContainer\":\"innerContainer__hBPb0\",\"container\":\"container__1l0SL\",\"headerText\":\"headerText__3X5wL\",\"content\":\"content__329VB\"};","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nmodule.exports = difference;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"content__2apKq\",\"container\":\"container__yc_GY\",\"innerContainer\":\"innerContainer__3vVmD\",\"previewPassExpired\":\"previewPassExpired__2ZjM0\",\"previewPassExpiredSubheading\":\"previewPassExpiredSubheading__1sEba\",\"previewPassExpiredHeading\":\"previewPassExpiredHeading__2OIzU\",\"previewPassButton\":\"previewPassButton__1boN1\",\"previewPassMaybeLaterLink\":\"previewPassMaybeLaterLink__1c8Jy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"content__2VNV_\",\"container\":\"container__r6r10\",\"innerContainer\":\"innerContainer__3QUK7\",\"previewPassExpired\":\"previewPassExpired__sAqS3\",\"previewPassExpiredHeading\":\"previewPassExpiredHeading__1vYZf\",\"previewPassExpiredSubheading\":\"previewPassExpiredSubheading__3smif\",\"previewPassButton\":\"previewPassButton__29dyi\",\"previewPassMaybeLaterLink\":\"previewPassMaybeLaterLink__31Klh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"innerContainer\":\"innerContainer__2Ajww\",\"container\":\"container__282Xs\",\"content\":\"content__212SC\"};","module.exports = (__webpack_require__(88))(131);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"style_container_28bu7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"Favorite_icon_3jBX2\",\"favoriteIcon\":\"Favorite_favoriteIcon_2_TXv\",\"link\":\"Favorite_link_tTHcl\",\"optionalText\":\"Favorite_optionalText_3FVbn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"ReadMore_button_2kkyT\",\"buttonContainer\":\"ReadMore_buttonContainer_1UeQA\"};","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar LinkElement = function (_React$Component) {\n _inherits(LinkElement, _React$Component);\n\n function LinkElement() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, LinkElement);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LinkElement.__proto__ || Object.getPrototypeOf(LinkElement)).call.apply(_ref, [this].concat(args))), _this), _this.render = function () {\n return _react2.default.createElement(\n 'a',\n _this.props,\n _this.props.children\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return LinkElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(LinkElement);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /*\r\n * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n */\n defaultEasing: function defaultEasing(x) {\n if (x < 0.5) {\n return Math.pow(x * 2, 2) / 2;\n }\n return 1 - Math.pow((1 - x) * 2, 2) / 2;\n },\n /*\r\n * https://gist.github.com/gre/1650294\r\n */\n // no easing, no acceleration\n linear: function linear(x) {\n return x;\n },\n // accelerating from zero velocity\n easeInQuad: function easeInQuad(x) {\n return x * x;\n },\n // decelerating to zero velocity\n easeOutQuad: function easeOutQuad(x) {\n return x * (2 - x);\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function easeInOutQuad(x) {\n return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n },\n // accelerating from zero velocity \n easeInCubic: function easeInCubic(x) {\n return x * x * x;\n },\n // decelerating to zero velocity π\n easeOutCubic: function easeOutCubic(x) {\n return --x * x * x + 1;\n },\n // acceleration until halfway, then deceleration \n easeInOutCubic: function easeInOutCubic(x) {\n return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n },\n // accelerating from zero velocity \n easeInQuart: function easeInQuart(x) {\n return x * x * x * x;\n },\n // decelerating to zero velocity \n easeOutQuart: function easeOutQuart(x) {\n return 1 - --x * x * x * x;\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function easeInOutQuart(x) {\n return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n },\n // accelerating from zero velocity\n easeInQuint: function easeInQuint(x) {\n return x * x * x * x * x;\n },\n // decelerating to zero velocity\n easeOutQuint: function easeOutQuint(x) {\n return 1 + --x * x * x * x * x;\n },\n // acceleration until halfway, then deceleration \n easeInOutQuint: function easeInOutQuint(x) {\n return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\n\nexports.default = {\n subscribe: function subscribe(cancelEvent) {\n return typeof document !== 'undefined' && events.forEach(function (event) {\n return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n });\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ButtonElement = function (_React$Component) {\n _inherits(ButtonElement, _React$Component);\n\n function ButtonElement() {\n _classCallCheck(this, ButtonElement);\n\n return _possibleConstructorReturn(this, (ButtonElement.__proto__ || Object.getPrototypeOf(ButtonElement)).apply(this, arguments));\n }\n\n _createClass(ButtonElement, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'input',\n this.props,\n this.props.children\n );\n }\n }]);\n\n return ButtonElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(ButtonElement);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollElement = require('../mixins/scroll-element');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ElementWrapper = function (_React$Component) {\n _inherits(ElementWrapper, _React$Component);\n\n function ElementWrapper() {\n _classCallCheck(this, ElementWrapper);\n\n return _possibleConstructorReturn(this, (ElementWrapper.__proto__ || Object.getPrototypeOf(ElementWrapper)).apply(this, arguments));\n }\n\n _createClass(ElementWrapper, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n // Remove `parentBindings` from props\n var newProps = _extends({}, this.props);\n if (newProps.parentBindings) {\n delete newProps.parentBindings;\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({}, newProps, { ref: function ref(el) {\n _this2.props.parentBindings.domNode = el;\n } }),\n this.props.children\n );\n }\n }]);\n\n return ElementWrapper;\n}(_react2.default.Component);\n\n;\n\nElementWrapper.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n};\n\nexports.default = (0, _scrollElement2.default)(ElementWrapper);","\"use strict\";\n\n/* DEPRECATED */\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\nvar utils = require('./utils');\nvar scrollSpy = require('./scroll-spy');\nvar defaultScroller = require('./scroller');\nvar PropTypes = require('prop-types');\nvar scrollHash = require('./scroll-hash');\n\nvar protoTypes = {\n to: PropTypes.string.isRequired,\n containerId: PropTypes.string,\n container: PropTypes.object,\n activeClass: PropTypes.string,\n spy: PropTypes.bool,\n smooth: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n offset: PropTypes.number,\n delay: PropTypes.number,\n isDynamic: PropTypes.bool,\n onClick: PropTypes.func,\n duration: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n absolute: PropTypes.bool,\n onSetActive: PropTypes.func,\n onSetInactive: PropTypes.func,\n ignoreCancelEvents: PropTypes.bool,\n hashSpy: PropTypes.bool\n};\n\nvar Helpers = {\n Scroll: function Scroll(Component, customScroller) {\n\n console.warn(\"Helpers.Scroll is deprecated since v1.7.0\");\n\n var scroller = customScroller || defaultScroller;\n\n var Scroll = function (_React$Component) {\n _inherits(Scroll, _React$Component);\n\n function Scroll(props) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!scrollSpy.isMounted(scrollSpyContainer)) {\n scrollSpy.mount(scrollSpyContainer);\n }\n\n if (this.props.hashSpy) {\n if (!scrollHash.isMounted()) {\n scrollHash.mount(scroller);\n }\n scrollHash.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n if (this.props.spy) {\n scrollSpy.addStateHandler(this.stateHandler);\n }\n\n scrollSpy.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n scrollSpy.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.onClick = this.handleClick;\n\n return React.createElement(Component, props);\n }\n }]);\n\n return Scroll;\n }(React.Component);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.stateHandler = function () {\n if (scroller.getActiveLink() !== _this2.props.to) {\n if (_this2.state !== null && _this2.state.active && _this2.props.onSetInactive) {\n _this2.props.onSetInactive();\n }\n _this2.setState({ active: false });\n }\n };\n\n this.spyHandler = function (y) {\n\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (scrollHash.isMounted() && !scrollHash.isInitialized()) {\n return;\n }\n\n var to = _this2.props.to;\n var element = null;\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemTopBound = cords.top - containerTop + y;\n elemBottomBound = elemTopBound + cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n scrollHash.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive();\n }\n\n return scrollSpy.updateStates();\n }\n\n if (isInside && activeLink !== to) {\n scroller.setActiveLink(to);\n\n _this2.props.hashSpy && scrollHash.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to);\n }\n return scrollSpy.updateStates();\n }\n };\n };\n\n ;\n\n Scroll.propTypes = protoTypes;\n\n Scroll.defaultProps = { offset: 0 };\n\n return Scroll;\n },\n Element: function Element(Component) {\n\n console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n var Element = function (_React$Component2) {\n _inherits(Element, _React$Component2);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this3.childBindings = {\n domNode: null\n };\n return _this3;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n defaultScroller.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n defaultScroller.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(React.Component);\n\n ;\n\n Element.propTypes = {\n name: PropTypes.string,\n id: PropTypes.string\n };\n\n return Element;\n }\n};\n\nmodule.exports = Helpers;","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","module.exports = (__webpack_require__(88))(13);","// Coding standard for this project defined @ https://github.com/MatthewSH/standards/blob/master/JavaScript.md\n'use strict';\n\nexports = module.exports = !!(typeof process !== 'undefined' && process.versions && process.versions.node);\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseUnset = require('./_baseUnset'),\n isIndex = require('./_isIndex');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nmodule.exports = basePullAt;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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); }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n var parts = str.split('.');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].length > 63) {\n return false;\n }\n }\n\n if (options.require_tld) {\n var tld = parts.pop();\n\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces\n\n\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n return false;\n }\n }\n\n for (var part, _i = 0; _i < parts.length; _i++) {\n part = parts[_i];\n\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\nvar ipv6Block = /^[0-9A-F]{1,4}$/i;\n\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n } // initial or final ::\n\n\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false; // multiple :: in address\n }\n\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) {// it has been checked before that the last\n // block is a valid IPv4 address\n } else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n\n return blocks.length === expectedNumberOfBlocks;\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","var MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nmodule.exports = function getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime())\n var baseTimezoneOffset = date.getTimezoneOffset()\n date.setSeconds(0, 0)\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n","var parse = require('../parse/index.js')\n\n/**\n * @category Range Helpers\n * @summary Is the given date range overlapping with another date range?\n *\n * @description\n * Is the given date range overlapping with another date range?\n *\n * @param {Date|String|Number} initialRangeStartDate - the start of the initial range\n * @param {Date|String|Number} initialRangeEndDate - the end of the initial range\n * @param {Date|String|Number} comparedRangeStartDate - the start of the range to compare it with\n * @param {Date|String|Number} comparedRangeEndDate - the end of the range to compare it with\n * @returns {Boolean} whether the date ranges are overlapping\n * @throws {Error} startDate of a date range cannot be after its endDate\n *\n * @example\n * // For overlapping date ranges:\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping date ranges:\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 21), new Date(2014, 0, 22)\n * )\n * //=> false\n */\nfunction areRangesOverlapping (dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) {\n var initialStartTime = parse(dirtyInitialRangeStartDate).getTime()\n var initialEndTime = parse(dirtyInitialRangeEndDate).getTime()\n var comparedStartTime = parse(dirtyComparedRangeStartDate).getTime()\n var comparedEndTime = parse(dirtyComparedRangeEndDate).getTime()\n\n if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) {\n throw new Error('The start of the range cannot be after the end of the range')\n }\n\n return initialStartTime < comparedEndTime && comparedStartTime < initialEndTime\n}\n\nmodule.exports = areRangesOverlapping\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} the second argument must be an instance of Array\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nfunction closestIndexTo (dirtyDateToCompare, dirtyDatesArray) {\n if (!(dirtyDatesArray instanceof Array)) {\n throw new TypeError(toString.call(dirtyDatesArray) + ' is not an instance of Array')\n }\n\n var dateToCompare = parse(dirtyDateToCompare)\n var timeToCompare = dateToCompare.getTime()\n\n var result\n var minDistance\n\n dirtyDatesArray.forEach(function (dirtyDate, index) {\n var currentDate = parse(dirtyDate)\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result === undefined || distance < minDistance) {\n result = index\n minDistance = distance\n }\n })\n\n return result\n}\n\nmodule.exports = closestIndexTo\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} the second argument must be an instance of Array\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nfunction closestTo (dirtyDateToCompare, dirtyDatesArray) {\n if (!(dirtyDatesArray instanceof Array)) {\n throw new TypeError(toString.call(dirtyDatesArray) + ' is not an instance of Array')\n }\n\n var dateToCompare = parse(dirtyDateToCompare)\n var timeToCompare = dateToCompare.getTime()\n\n var result\n var minDistance\n\n dirtyDatesArray.forEach(function (dirtyDate) {\n var currentDate = parse(dirtyDate)\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result === undefined || distance < minDistance) {\n result = currentDate\n minDistance = distance\n }\n })\n\n return result\n}\n\nmodule.exports = closestTo\n","var startOfISOWeek = require('../start_of_iso_week/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nfunction differenceInCalendarISOWeeks (dirtyDateLeft, dirtyDateRight) {\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft)\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight)\n\n var timestampLeft = startOfISOWeekLeft.getTime() -\n startOfISOWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n var timestampRight = startOfISOWeekRight.getTime() -\n startOfISOWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n\nmodule.exports = differenceInCalendarISOWeeks\n","var getQuarter = require('../get_quarter/index.js')\nvar parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nfunction differenceInCalendarQuarters (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight)\n\n return yearDiff * 4 + quarterDiff\n}\n\nmodule.exports = differenceInCalendarQuarters\n","var startOfWeek = require('../start_of_week/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 2\n */\nfunction differenceInCalendarWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions)\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfWeekLeft.getTime() -\n startOfWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n var timestampRight = startOfWeekRight.getTime() -\n startOfWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n\nmodule.exports = differenceInCalendarWeeks\n","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nfunction differenceInHours (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_HOUR\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInHours\n","var parse = require('../parse/index.js')\nvar differenceInCalendarISOYears = require('../difference_in_calendar_iso_years/index.js')\nvar compareAsc = require('../compare_asc/index.js')\nvar subISOYears = require('../sub_iso_years/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nfunction differenceInISOYears (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarISOYears(dateLeft, dateRight))\n dateLeft = subISOYears(dateLeft, sign * difference)\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOYearNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastISOYearNotFull)\n}\n\nmodule.exports = differenceInISOYears\n","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nfunction differenceInMinutes (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInMinutes\n","var differenceInMonths = require('../difference_in_months/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInQuarters (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInQuarters\n","var differenceInDays = require('../difference_in_days/index.js')\n\n/**\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 2\n */\nfunction differenceInWeeks (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInWeeks\n","var parse = require('../parse/index.js')\nvar differenceInCalendarYears = require('../difference_in_calendar_years/index.js')\nvar compareAsc = require('../compare_asc/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 1\n */\nfunction differenceInYears (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight))\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference)\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastYearNotFull)\n}\n\nmodule.exports = differenceInYears\n","function buildDistanceInWordsLocale () {\n var distanceInWordsLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n }\n\n function localize (token, count, options) {\n options = options || {}\n\n var result\n if (typeof distanceInWordsLocale[token] === 'string') {\n result = distanceInWordsLocale[token]\n } else if (count === 1) {\n result = distanceInWordsLocale[token].one\n } else {\n result = distanceInWordsLocale[token].other.replace('{{count}}', count)\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n }\n\n return {\n localize: localize\n }\n}\n\nmodule.exports = buildDistanceInWordsLocale\n","var buildFormattingTokensRegExp = require('../../_lib/build_formatting_tokens_reg_exp/index.js')\n\nfunction buildFormatLocale () {\n // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n var months3char = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n var monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n var weekdays2char = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\n var weekdays3char = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n var weekdaysFull = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n var meridiemUppercase = ['AM', 'PM']\n var meridiemLowercase = ['am', 'pm']\n var meridiemFull = ['a.m.', 'p.m.']\n\n var formatters = {\n // Month: Jan, Feb, ..., Dec\n 'MMM': function (date) {\n return months3char[date.getMonth()]\n },\n\n // Month: January, February, ..., December\n 'MMMM': function (date) {\n return monthsFull[date.getMonth()]\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': function (date) {\n return weekdays2char[date.getDay()]\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': function (date) {\n return weekdays3char[date.getDay()]\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': function (date) {\n return weekdaysFull[date.getDay()]\n },\n\n // AM, PM\n 'A': function (date) {\n return (date.getHours() / 12) >= 1 ? meridiemUppercase[1] : meridiemUppercase[0]\n },\n\n // am, pm\n 'a': function (date) {\n return (date.getHours() / 12) >= 1 ? meridiemLowercase[1] : meridiemLowercase[0]\n },\n\n // a.m., p.m.\n 'aa': function (date) {\n return (date.getHours() / 12) >= 1 ? meridiemFull[1] : meridiemFull[0]\n }\n }\n\n // Generate ordinal version of formatters: M -> Mo, D -> Do, etc.\n var ordinalFormatters = ['M', 'D', 'DDD', 'd', 'Q', 'W']\n ordinalFormatters.forEach(function (formatterToken) {\n formatters[formatterToken + 'o'] = function (date, formatters) {\n return ordinal(formatters[formatterToken](date))\n }\n })\n\n return {\n formatters: formatters,\n formattingTokensRegExp: buildFormattingTokensRegExp(formatters)\n }\n}\n\nfunction ordinal (number) {\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nmodule.exports = buildFormatLocale\n","var commonFormatterKeys = [\n 'M', 'MM', 'Q', 'D', 'DD', 'DDD', 'DDDD', 'd',\n 'E', 'W', 'WW', 'YY', 'YYYY', 'GG', 'GGGG',\n 'H', 'HH', 'h', 'hh', 'm', 'mm',\n 's', 'ss', 'S', 'SS', 'SSS',\n 'Z', 'ZZ', 'X', 'x'\n]\n\nfunction buildFormattingTokensRegExp (formatters) {\n var formatterKeys = []\n for (var key in formatters) {\n if (formatters.hasOwnProperty(key)) {\n formatterKeys.push(key)\n }\n }\n\n var formattingTokens = commonFormatterKeys\n .concat(formatterKeys)\n .sort()\n .reverse()\n var formattingTokensRegExp = new RegExp(\n '(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?' + '(' + formattingTokens.join('|') + '|.)', 'g'\n )\n\n return formattingTokensRegExp\n}\n\nmodule.exports = buildFormattingTokensRegExp\n","var compareDesc = require('../compare_desc/index.js')\nvar parse = require('../parse/index.js')\nvar differenceInSeconds = require('../difference_in_seconds/index.js')\nvar enLocale = require('../locale/en/index.js')\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_YEAR = 525600\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `distanceInWords`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'s'|'m'|'h'|'d'|'M'|'Y'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.partialMethod='floor'] - which way to round partial units\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWordsStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = distanceInWordsStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWordsStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = distanceInWordsStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {unit: 'm'}\n * )\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = distanceInWordsStrict(\n * new Date(2015, 0, 28),\n * new Date(2015, 0, 1),\n * {unit: 'M', partialMethod: 'ceil'}\n * )\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWordsStrict(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nfunction distanceInWordsStrict (dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {}\n\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate)\n\n var locale = options.locale\n var localize = enLocale.distanceInWords.localize\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n }\n\n var dateLeft, dateRight\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare)\n dateRight = parse(dirtyDate)\n } else {\n dateLeft = parse(dirtyDate)\n dateRight = parse(dirtyDateToCompare)\n }\n\n var unit\n var mathPartial = Math[options.partialMethod ? String(options.partialMethod) : 'floor']\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset()\n var minutes = mathPartial(seconds / 60) - offset\n var hours, days, months, years\n\n if (options.unit) {\n unit = String(options.unit)\n } else {\n if (minutes < 1) {\n unit = 's'\n } else if (minutes < 60) {\n unit = 'm'\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'h'\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'd'\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'M'\n } else {\n unit = 'Y'\n }\n }\n\n // 0 up to 60 seconds\n if (unit === 's') {\n return localize('xSeconds', seconds, localizeOptions)\n\n // 1 up to 60 mins\n } else if (unit === 'm') {\n return localize('xMinutes', minutes, localizeOptions)\n\n // 1 up to 24 hours\n } else if (unit === 'h') {\n hours = mathPartial(minutes / 60)\n return localize('xHours', hours, localizeOptions)\n\n // 1 up to 30 days\n } else if (unit === 'd') {\n days = mathPartial(minutes / MINUTES_IN_DAY)\n return localize('xDays', days, localizeOptions)\n\n // 1 up to 12 months\n } else if (unit === 'M') {\n months = mathPartial(minutes / MINUTES_IN_MONTH)\n return localize('xMonths', months, localizeOptions)\n\n // 1 year up to max Date\n } else if (unit === 'Y') {\n years = mathPartial(minutes / MINUTES_IN_YEAR)\n return localize('xYears', years, localizeOptions)\n }\n\n throw new Error('Unknown unit: ' + unit)\n}\n\nmodule.exports = distanceInWordsStrict\n","var distanceInWords = require('../distance_in_words/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = distanceInWordsToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = distanceInWordsToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = distanceInWordsToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWordsToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nfunction distanceInWordsToNow (dirtyDate, dirtyOptions) {\n return distanceInWords(Date.now(), dirtyDate, dirtyOptions)\n}\n\nmodule.exports = distanceInWordsToNow\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the array of dates within the specified range.\n *\n * @description\n * Return the array of dates within the specified range.\n *\n * @param {Date|String|Number} startDate - the first date\n * @param {Date|String|Number} endDate - the last date\n * @param {Number} [step=1] - the step between each day\n * @returns {Date[]} the array with starts of days from the day of startDate to the day of endDate\n * @throws {Error} startDate cannot be after endDate\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDay(\n * new Date(2014, 9, 6),\n * new Date(2014, 9, 10)\n * )\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nfunction eachDay (dirtyStartDate, dirtyEndDate, dirtyStep) {\n var startDate = parse(dirtyStartDate)\n var endDate = parse(dirtyEndDate)\n var step = dirtyStep !== undefined ? dirtyStep : 1\n\n var endTime = endDate.getTime()\n\n if (startDate.getTime() > endTime) {\n throw new Error('The first date cannot be after the second date')\n }\n\n var dates = []\n\n var currentDate = startDate\n currentDate.setHours(0, 0, 0, 0)\n\n while (currentDate.getTime() <= endTime) {\n dates.push(parse(currentDate))\n currentDate.setDate(currentDate.getDate() + step)\n }\n\n return dates\n}\n\nmodule.exports = eachDay\n","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an hour\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nfunction endOfHour (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMinutes(59, 59, 999)\n return date\n}\n\nmodule.exports = endOfHour\n","var endOfWeek = require('../end_of_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfISOWeek (dirtyDate) {\n return endOfWeek(dirtyDate, {weekStartsOn: 1})\n}\n\nmodule.exports = endOfISOWeek\n","var getISOYear = require('../get_iso_year/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nfunction endOfISOYear (dirtyDate) {\n var year = getISOYear(dirtyDate)\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear)\n date.setMilliseconds(date.getMilliseconds() - 1)\n return date\n}\n\nmodule.exports = endOfISOYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a minute\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nfunction endOfMinute (dirtyDate) {\n var date = parse(dirtyDate)\n date.setSeconds(59, 999)\n return date\n}\n\nmodule.exports = endOfMinute\n","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfQuarter\n","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a second\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nfunction endOfSecond (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMilliseconds(999)\n return date\n}\n\nmodule.exports = endOfSecond\n","var endOfDay = require('../end_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the end of today.\n *\n * @description\n * Return the end of today.\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\nfunction endOfToday () {\n return endOfDay(new Date())\n}\n\nmodule.exports = endOfToday\n","/**\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n *\n * @description\n * Return the end of tomorrow.\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nfunction endOfTomorrow () {\n var now = new Date()\n var year = now.getFullYear()\n var month = now.getMonth()\n var day = now.getDate()\n\n var date = new Date(0)\n date.setFullYear(year, month, day + 1)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfTomorrow\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nfunction endOfYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfYear\n","/**\n * @category Day Helpers\n * @summary Return the end of yesterday.\n *\n * @description\n * Return the end of yesterday.\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nfunction endOfYesterday () {\n var now = new Date()\n var year = now.getFullYear()\n var month = now.getMonth()\n var day = now.getDate()\n\n var date = new Date(0)\n date.setFullYear(year, month, day - 1)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfYesterday\n","var getDayOfYear = require('../get_day_of_year/index.js')\nvar getISOWeek = require('../get_iso_week/index.js')\nvar getISOYear = require('../get_iso_year/index.js')\nvar parse = require('../parse/index.js')\nvar isValid = require('../is_valid/index.js')\nvar enLocale = require('../locale/en/index.js')\n\n/**\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} [format='YYYY-MM-DDTHH:mm:ss.SSSZ'] - the string of tokens\n * @param {Object} [options] - the object with options\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the formatted date string\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * var eoLocale = require('date-fns/locale/eo')\n * var result = format(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\nfunction format (dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = dirtyFormatStr ? String(dirtyFormatStr) : 'YYYY-MM-DDTHH:mm:ss.SSSZ'\n var options = dirtyOptions || {}\n\n var locale = options.locale\n var localeFormatters = enLocale.format.formatters\n var formattingTokensRegExp = enLocale.format.formattingTokensRegExp\n if (locale && locale.format && locale.format.formatters) {\n localeFormatters = locale.format.formatters\n\n if (locale.format.formattingTokensRegExp) {\n formattingTokensRegExp = locale.format.formattingTokensRegExp\n }\n }\n\n var date = parse(dirtyDate)\n\n if (!isValid(date)) {\n return 'Invalid Date'\n }\n\n var formatFn = buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp)\n\n return formatFn(date)\n}\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function (date) {\n return date.getMonth() + 1\n },\n\n // Month: 01, 02, ..., 12\n 'MM': function (date) {\n return addLeadingZeros(date.getMonth() + 1, 2)\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': function (date) {\n return Math.ceil((date.getMonth() + 1) / 3)\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': function (date) {\n return date.getDate()\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': function (date) {\n return addLeadingZeros(date.getDate(), 2)\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': function (date) {\n return getDayOfYear(date)\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': function (date) {\n return addLeadingZeros(getDayOfYear(date), 3)\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': function (date) {\n return date.getDay()\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': function (date) {\n return date.getDay() || 7\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': function (date) {\n return getISOWeek(date)\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': function (date) {\n return addLeadingZeros(getISOWeek(date), 2)\n },\n\n // Year: 00, 01, ..., 99\n 'YY': function (date) {\n return addLeadingZeros(date.getFullYear(), 4).substr(2)\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function (date) {\n return addLeadingZeros(date.getFullYear(), 4)\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function (date) {\n return String(getISOYear(date)).substr(2)\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function (date) {\n return getISOYear(date)\n },\n\n // Hour: 0, 1, ... 23\n 'H': function (date) {\n return date.getHours()\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': function (date) {\n return addLeadingZeros(date.getHours(), 2)\n },\n\n // Hour: 1, 2, ..., 12\n 'h': function (date) {\n var hours = date.getHours()\n if (hours === 0) {\n return 12\n } else if (hours > 12) {\n return hours % 12\n } else {\n return hours\n }\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': function (date) {\n return addLeadingZeros(formatters['h'](date), 2)\n },\n\n // Minute: 0, 1, ..., 59\n 'm': function (date) {\n return date.getMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': function (date) {\n return addLeadingZeros(date.getMinutes(), 2)\n },\n\n // Second: 0, 1, ..., 59\n 's': function (date) {\n return date.getSeconds()\n },\n\n // Second: 00, 01, ..., 59\n 'ss': function (date) {\n return addLeadingZeros(date.getSeconds(), 2)\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': function (date) {\n return Math.floor(date.getMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function (date) {\n return addLeadingZeros(Math.floor(date.getMilliseconds() / 10), 2)\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': function (date) {\n return addLeadingZeros(date.getMilliseconds(), 3)\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function (date) {\n return formatTimezone(date.getTimezoneOffset(), ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function (date) {\n return formatTimezone(date.getTimezoneOffset())\n },\n\n // Seconds timestamp: 512969520\n 'X': function (date) {\n return Math.floor(date.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': function (date) {\n return date.getTime()\n }\n}\n\nfunction buildFormatFn (formatStr, localeFormatters, formattingTokensRegExp) {\n var array = formatStr.match(formattingTokensRegExp)\n var length = array.length\n\n var i\n var formatter\n for (i = 0; i < length; i++) {\n formatter = localeFormatters[array[i]] || formatters[array[i]]\n if (formatter) {\n array[i] = formatter\n } else {\n array[i] = removeFormattingTokens(array[i])\n }\n }\n\n return function (date) {\n var output = ''\n for (var i = 0; i < length; i++) {\n if (array[i] instanceof Function) {\n output += array[i](date, formatters)\n } else {\n output += array[i]\n }\n }\n return output\n }\n}\n\nfunction removeFormattingTokens (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n\nfunction formatTimezone (offset, delimeter) {\n delimeter = delimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return output\n}\n\nmodule.exports = format\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of month\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nfunction getDate (dirtyDate) {\n var date = parse(dirtyDate)\n var dayOfMonth = date.getDate()\n return dayOfMonth\n}\n\nmodule.exports = getDate\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of week\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nfunction getDay (dirtyDate) {\n var date = parse(dirtyDate)\n var day = date.getDay()\n return day\n}\n\nmodule.exports = getDay\n","var isLeapYear = require('../is_leap_year/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a year\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nfunction getDaysInYear (dirtyDate) {\n return isLeapYear(dirtyDate) ? 366 : 365\n}\n\nmodule.exports = getDaysInYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nfunction getHours (dirtyDate) {\n var date = parse(dirtyDate)\n var hours = date.getHours()\n return hours\n}\n\nmodule.exports = getHours\n","var startOfISOYear = require('../start_of_iso_year/index.js')\nvar addWeeks = require('../add_weeks/index.js')\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nfunction getISOWeeksInYear (dirtyDate) {\n var thisYear = startOfISOYear(dirtyDate)\n var nextYear = startOfISOYear(addWeeks(thisYear, 60))\n var diff = nextYear.valueOf() - thisYear.valueOf()\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK)\n}\n\nmodule.exports = getISOWeeksInYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the milliseconds\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nfunction getMilliseconds (dirtyDate) {\n var date = parse(dirtyDate)\n var milliseconds = date.getMilliseconds()\n return milliseconds\n}\n\nmodule.exports = getMilliseconds\n","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nfunction getMinutes (dirtyDate) {\n var date = parse(dirtyDate)\n var minutes = date.getMinutes()\n return minutes\n}\n\nmodule.exports = getMinutes\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the month\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nfunction getMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var month = date.getMonth()\n return month\n}\n\nmodule.exports = getMonth\n","var parse = require('../parse/index.js')\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000\n\n/**\n * @category Range Helpers\n * @summary Get the number of days that overlap in two date ranges\n *\n * @description\n * Get the number of days that overlap in two date ranges\n *\n * @param {Date|String|Number} initialRangeStartDate - the start of the initial range\n * @param {Date|String|Number} initialRangeEndDate - the end of the initial range\n * @param {Date|String|Number} comparedRangeStartDate - the start of the range to compare it with\n * @param {Date|String|Number} comparedRangeEndDate - the end of the range to compare it with\n * @returns {Number} the number of days that overlap in two date ranges\n * @throws {Error} startDate of a date range cannot be after its endDate\n *\n * @example\n * // For overlapping date ranges adds 1 for each started overlapping day:\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping date ranges returns 0:\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 21), new Date(2014, 0, 22)\n * )\n * //=> 0\n */\nfunction getOverlappingDaysInRanges (dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) {\n var initialStartTime = parse(dirtyInitialRangeStartDate).getTime()\n var initialEndTime = parse(dirtyInitialRangeEndDate).getTime()\n var comparedStartTime = parse(dirtyComparedRangeStartDate).getTime()\n var comparedEndTime = parse(dirtyComparedRangeEndDate).getTime()\n\n if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) {\n throw new Error('The start of the range cannot be after the end of the range')\n }\n\n var isOverlapping = initialStartTime < comparedEndTime && comparedStartTime < initialEndTime\n\n if (!isOverlapping) {\n return 0\n }\n\n var overlapStartDate = comparedStartTime < initialStartTime\n ? initialStartTime\n : comparedStartTime\n\n var overlapEndDate = comparedEndTime > initialEndTime\n ? initialEndTime\n : comparedEndTime\n\n var differenceInMs = overlapEndDate - overlapStartDate\n\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY)\n}\n\nmodule.exports = getOverlappingDaysInRanges\n","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nfunction getSeconds (dirtyDate) {\n var date = parse(dirtyDate)\n var seconds = date.getSeconds()\n return seconds\n}\n\nmodule.exports = getSeconds\n","var parse = require('../parse/index.js')\n\n/**\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the timestamp\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nfunction getTime (dirtyDate) {\n var date = parse(dirtyDate)\n var timestamp = date.getTime()\n return timestamp\n}\n\nmodule.exports = getTime\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the year\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nfunction getYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n return year\n}\n\nmodule.exports = getYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare) {\n var date = parse(dirtyDate)\n var dateToCompare = parse(dirtyDateToCompare)\n return date.getTime() > dateToCompare.getTime()\n}\n\nmodule.exports = isAfter\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare) {\n var date = parse(dirtyDate)\n var dateToCompare = parse(dirtyDateToCompare)\n return date.getTime() < dateToCompare.getTime()\n}\n\nmodule.exports = isBefore\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual (dirtyLeftDate, dirtyRightDate) {\n var dateLeft = parse(dirtyLeftDate)\n var dateRight = parse(dirtyRightDate)\n return dateLeft.getTime() === dateRight.getTime()\n}\n\nmodule.exports = isEqual\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nfunction isFirstDayOfMonth (dirtyDate) {\n return parse(dirtyDate).getDate() === 1\n}\n\nmodule.exports = isFirstDayOfMonth\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nfunction isFriday (dirtyDate) {\n return parse(dirtyDate).getDay() === 5\n}\n\nmodule.exports = isFriday\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the given date in the future?\n *\n * @description\n * Is the given date in the future?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * var result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\nfunction isFuture (dirtyDate) {\n return parse(dirtyDate).getTime() > new Date().getTime()\n}\n\nmodule.exports = isFuture\n","var parse = require('../parse/index.js')\nvar endOfDay = require('../end_of_day/index.js')\nvar endOfMonth = require('../end_of_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nfunction isLastDayOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n return endOfDay(date).getTime() === endOfMonth(date).getTime()\n}\n\nmodule.exports = isLastDayOfMonth\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nfunction isMonday (dirtyDate) {\n return parse(dirtyDate).getDay() === 1\n}\n\nmodule.exports = isMonday\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the given date in the past?\n *\n * @description\n * Is the given date in the past?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * var result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isPast (dirtyDate) {\n return parse(dirtyDate).getTime() < new Date().getTime()\n}\n\nmodule.exports = isPast\n","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 18, 0)\n * )\n * //=> true\n */\nfunction isSameDay (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft)\n var dateRightStartOfDay = startOfDay(dirtyDateRight)\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n}\n\nmodule.exports = isSameDay\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nfunction isSaturday (dirtyDate) {\n return parse(dirtyDate).getDay() === 6\n}\n\nmodule.exports = isSaturday\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nfunction isSunday (dirtyDate) {\n return parse(dirtyDate).getDay() === 0\n}\n\nmodule.exports = isSunday\n","var isSameHour = require('../is_same_hour/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * var result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\nfunction isThisHour (dirtyDate) {\n return isSameHour(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisHour\n","var isSameISOWeek = require('../is_same_iso_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * var result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\nfunction isThisISOWeek (dirtyDate) {\n return isSameISOWeek(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisISOWeek\n","var isSameISOYear = require('../is_same_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Is the given date in the same ISO week-numbering year as the current date?\n *\n * @description\n * Is the given date in the same ISO week-numbering year as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week-numbering year\n *\n * @example\n * // If today is 25 September 2014,\n * // is 30 December 2013 in this ISO week-numbering year?\n * var result = isThisISOYear(new Date(2013, 11, 30))\n * //=> true\n */\nfunction isThisISOYear (dirtyDate) {\n return isSameISOYear(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisISOYear\n","var isSameMinute = require('../is_same_minute/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\nfunction isThisMinute (dirtyDate) {\n return isSameMinute(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisMinute\n","var isSameMonth = require('../is_same_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * var result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\nfunction isThisMonth (dirtyDate) {\n return isSameMonth(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisMonth\n","var isSameQuarter = require('../is_same_quarter/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * var result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isThisQuarter (dirtyDate) {\n return isSameQuarter(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisQuarter\n","var isSameSecond = require('../is_same_second/index.js')\n\n/**\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\nfunction isThisSecond (dirtyDate) {\n return isSameSecond(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisSecond\n","var isSameWeek = require('../is_same_week/index.js')\n\n/**\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the date is in this week\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21), {weekStartsOn: 1})\n * //=> false\n */\nfunction isThisWeek (dirtyDate, dirtyOptions) {\n return isSameWeek(new Date(), dirtyDate, dirtyOptions)\n}\n\nmodule.exports = isThisWeek\n","var isSameYear = require('../is_same_year/index.js')\n\n/**\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * var result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isThisYear (dirtyDate) {\n return isSameYear(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nfunction isThursday (dirtyDate) {\n return parse(dirtyDate).getDay() === 4\n}\n\nmodule.exports = isThursday\n","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Is the given date today?\n *\n * @description\n * Is the given date today?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nfunction isToday (dirtyDate) {\n return startOfDay(dirtyDate).getTime() === startOfDay(new Date()).getTime()\n}\n\nmodule.exports = isToday\n","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n *\n * @description\n * Is the given date tomorrow?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\nfunction isTomorrow (dirtyDate) {\n var tomorrow = new Date()\n tomorrow.setDate(tomorrow.getDate() + 1)\n return startOfDay(dirtyDate).getTime() === startOfDay(tomorrow).getTime()\n}\n\nmodule.exports = isTomorrow\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nfunction isTuesday (dirtyDate) {\n return parse(dirtyDate).getDay() === 2\n}\n\nmodule.exports = isTuesday\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nfunction isWednesday (dirtyDate) {\n return parse(dirtyDate).getDay() === 3\n}\n\nmodule.exports = isWednesday\n","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nfunction isWeekend (dirtyDate) {\n var date = parse(dirtyDate)\n var day = date.getDay()\n return day === 0 || day === 6\n}\n\nmodule.exports = isWeekend\n","var parse = require('../parse/index.js')\n\n/**\n * @category Range Helpers\n * @summary Is the given date within the range?\n *\n * @description\n * Is the given date within the range?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Date|String|Number} startDate - the start of range\n * @param {Date|String|Number} endDate - the end of range\n * @returns {Boolean} the date is within the range\n * @throws {Error} startDate cannot be after endDate\n *\n * @example\n * // For the date within the range:\n * isWithinRange(\n * new Date(2014, 0, 3), new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n * //=> true\n *\n * @example\n * // For the date outside of the range:\n * isWithinRange(\n * new Date(2014, 0, 10), new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n * //=> false\n */\nfunction isWithinRange (dirtyDate, dirtyStartDate, dirtyEndDate) {\n var time = parse(dirtyDate).getTime()\n var startTime = parse(dirtyStartDate).getTime()\n var endTime = parse(dirtyEndDate).getTime()\n\n if (startTime > endTime) {\n throw new Error('The start of the range cannot be after the end of the range')\n }\n\n return time >= startTime && time <= endTime\n}\n\nmodule.exports = isWithinRange\n","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Is the given date yesterday?\n *\n * @description\n * Is the given date yesterday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\nfunction isYesterday (dirtyDate) {\n var yesterday = new Date()\n yesterday.setDate(yesterday.getDate() - 1)\n return startOfDay(dirtyDate).getTime() === startOfDay(yesterday).getTime()\n}\n\nmodule.exports = isYesterday\n","var lastDayOfWeek = require('../last_day_of_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction lastDayOfISOWeek (dirtyDate) {\n return lastDayOfWeek(dirtyDate, {weekStartsOn: 1})\n}\n\nmodule.exports = lastDayOfISOWeek\n","var getISOYear = require('../get_iso_year/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nfunction lastDayOfISOYear (dirtyDate) {\n var year = getISOYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year + 1, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n date.setDate(date.getDate() - 1)\n return date\n}\n\nmodule.exports = lastDayOfISOYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction lastDayOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = lastDayOfMonth\n","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a quarter\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction lastDayOfQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = lastDayOfQuarter\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a year\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nfunction lastDayOfYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = lastDayOfYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {...(Date|String|Number)} dates - the dates to compare\n * @returns {Date} the latest of the dates\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max(\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * )\n * //=> Sun Jul 02 1995 00:00:00\n */\nfunction max () {\n var dirtyDates = Array.prototype.slice.call(arguments)\n var dates = dirtyDates.map(function (dirtyDate) {\n return parse(dirtyDate)\n })\n var latestTimestamp = Math.max.apply(null, dates)\n return new Date(latestTimestamp)\n}\n\nmodule.exports = max\n","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * @param {...(Date|String|Number)} dates - the dates to compare\n * @returns {Date} the earliest of the dates\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min(\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * )\n * //=> Wed Feb 11 1987 00:00:00\n */\nfunction min () {\n var dirtyDates = Array.prototype.slice.call(arguments)\n var dates = dirtyDates.map(function (dirtyDate) {\n return parse(dirtyDate)\n })\n var earliestTimestamp = Math.min.apply(null, dates)\n return new Date(earliestTimestamp)\n}\n\nmodule.exports = min\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month setted\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction setDate (dirtyDate, dirtyDayOfMonth) {\n var date = parse(dirtyDate)\n var dayOfMonth = Number(dirtyDayOfMonth)\n date.setDate(dayOfMonth)\n return date\n}\n\nmodule.exports = setDate\n","var parse = require('../parse/index.js')\nvar addDays = require('../add_days/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week setted\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction setDay (dirtyDate, dirtyDay, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n var date = parse(dirtyDate)\n var day = Number(dirtyDay)\n var currentDay = date.getDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n return addDays(date, diff)\n}\n\nmodule.exports = setDay\n","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year setted\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nfunction setDayOfYear (dirtyDate, dirtyDayOfYear) {\n var date = parse(dirtyDate)\n var dayOfYear = Number(dirtyDayOfYear)\n date.setMonth(0)\n date.setDate(dayOfYear)\n return date\n}\n\nmodule.exports = setDayOfYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours setted\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nfunction setHours (dirtyDate, dirtyHours) {\n var date = parse(dirtyDate)\n var hours = Number(dirtyHours)\n date.setHours(hours)\n return date\n}\n\nmodule.exports = setHours\n","var parse = require('../parse/index.js')\nvar addDays = require('../add_days/index.js')\nvar getISODay = require('../get_iso_day/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week setted\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction setISODay (dirtyDate, dirtyDay) {\n var date = parse(dirtyDate)\n var day = Number(dirtyDay)\n var currentDay = getISODay(date)\n var diff = day - currentDay\n return addDays(date, diff)\n}\n\nmodule.exports = setISODay\n","var parse = require('../parse/index.js')\nvar getISOWeek = require('../get_iso_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week setted\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nfunction setISOWeek (dirtyDate, dirtyISOWeek) {\n var date = parse(dirtyDate)\n var isoWeek = Number(dirtyISOWeek)\n var diff = getISOWeek(date) - isoWeek\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n\nmodule.exports = setISOWeek\n","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds setted\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nfunction setMilliseconds (dirtyDate, dirtyMilliseconds) {\n var date = parse(dirtyDate)\n var milliseconds = Number(dirtyMilliseconds)\n date.setMilliseconds(milliseconds)\n return date\n}\n\nmodule.exports = setMilliseconds\n","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes setted\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nfunction setMinutes (dirtyDate, dirtyMinutes) {\n var date = parse(dirtyDate)\n var minutes = Number(dirtyMinutes)\n date.setMinutes(minutes)\n return date\n}\n\nmodule.exports = setMinutes\n","var parse = require('../parse/index.js')\nvar setMonth = require('../set_month/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter setted\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nfunction setQuarter (dirtyDate, dirtyQuarter) {\n var date = parse(dirtyDate)\n var quarter = Number(dirtyQuarter)\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1\n var diff = quarter - oldQuarter\n return setMonth(date, date.getMonth() + diff * 3)\n}\n\nmodule.exports = setQuarter\n","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds setted\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nfunction setSeconds (dirtyDate, dirtySeconds) {\n var date = parse(dirtyDate)\n var seconds = Number(dirtySeconds)\n date.setSeconds(seconds)\n return date\n}\n\nmodule.exports = setSeconds\n","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year setted\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nfunction setYear (dirtyDate, dirtyYear) {\n var date = parse(dirtyDate)\n var year = Number(dirtyYear)\n date.setFullYear(year)\n return date\n}\n\nmodule.exports = setYear\n","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n date.setDate(1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfMonth\n","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the start of today.\n *\n * @description\n * Return the start of today.\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\nfunction startOfToday () {\n return startOfDay(new Date())\n}\n\nmodule.exports = startOfToday\n","/**\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n *\n * @description\n * Return the start of tomorrow.\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nfunction startOfTomorrow () {\n var now = new Date()\n var year = now.getFullYear()\n var month = now.getMonth()\n var day = now.getDate()\n\n var date = new Date(0)\n date.setFullYear(year, month, day + 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfTomorrow\n","/**\n * @category Day Helpers\n * @summary Return the start of yesterday.\n *\n * @description\n * Return the start of yesterday.\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nfunction startOfYesterday () {\n var now = new Date()\n var year = now.getFullYear()\n var month = now.getMonth()\n var day = now.getDate()\n\n var date = new Date(0)\n date.setFullYear(year, month, day - 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfYesterday\n","var addDays = require('../add_days/index.js')\n\n/**\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @returns {Date} the new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nfunction subDays (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addDays(dirtyDate, -amount)\n}\n\nmodule.exports = subDays\n","var addHours = require('../add_hours/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @returns {Date} the new date with the hours subtracted\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nfunction subHours (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addHours(dirtyDate, -amount)\n}\n\nmodule.exports = subHours\n","var addMilliseconds = require('../add_milliseconds/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, -amount)\n}\n\nmodule.exports = subMilliseconds\n","var addMinutes = require('../add_minutes/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @returns {Date} the new date with the mintues subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nfunction subMinutes (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMinutes(dirtyDate, -amount)\n}\n\nmodule.exports = subMinutes\n","var addMonths = require('../add_months/index.js')\n\n/**\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @returns {Date} the new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction subMonths (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMonths(dirtyDate, -amount)\n}\n\nmodule.exports = subMonths\n","var addQuarters = require('../add_quarters/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @returns {Date} the new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nfunction subQuarters (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addQuarters(dirtyDate, -amount)\n}\n\nmodule.exports = subQuarters\n","var addSeconds = require('../add_seconds/index.js')\n\n/**\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @returns {Date} the new date with the seconds subtracted\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nfunction subSeconds (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addSeconds(dirtyDate, -amount)\n}\n\nmodule.exports = subSeconds\n","var addWeeks = require('../add_weeks/index.js')\n\n/**\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @returns {Date} the new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nfunction subWeeks (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addWeeks(dirtyDate, -amount)\n}\n\nmodule.exports = subWeeks\n","var addYears = require('../add_years/index.js')\n\n/**\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @returns {Date} the new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nfunction subYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addYears(dirtyDate, -amount)\n}\n\nmodule.exports = subYears\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","var root = require('./_root'),\n toInteger = require('./toInteger'),\n toNumber = require('./toNumber'),\n toString = require('./toString');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\nmodule.exports = createRound;\n","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","\"use strict\";\n\n// commonmark.js - CommomMark in JavaScript\n// Copyright (C) 2014 John MacFarlane\n// License: BSD3.\n\n// Basic usage:\n//\n// var commonmark = require('commonmark');\n// var parser = new commonmark.Parser();\n// var renderer = new commonmark.HtmlRenderer();\n// console.log(renderer.render(parser.parse('Hello *world*')));\n\nmodule.exports.version = '0.24.0'\nmodule.exports.Node = require('./node');\nmodule.exports.Parser = require('./blocks');\nmodule.exports.HtmlRenderer = require('./html');\nmodule.exports.XmlRenderer = require('./xml');\n","\"use strict\";\n\nvar Node = require('./node');\nvar unescapeString = require('./common').unescapeString;\nvar OPENTAG = require('./common').OPENTAG;\nvar CLOSETAG = require('./common').CLOSETAG;\n\nvar CODE_INDENT = 4;\n\nvar C_TAB = 9;\nvar C_NEWLINE = 10;\nvar C_GREATERTHAN = 62;\nvar C_LESSTHAN = 60;\nvar C_SPACE = 32;\nvar C_OPEN_BRACKET = 91;\n\nvar InlineParser = require('./inlines');\n\nvar reHtmlBlockOpen = [\n /./, // dummy for 0\n /^<(?:script|pre|style)(?:\\s|>|$)/i,\n /^<!--/,\n /^<[?]/,\n /^<![A-Z]/,\n /^<!\\[CDATA\\[/,\n /^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|title|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|[/]?[>]|$)/i,\n new RegExp('^(?:' + OPENTAG + '|' + CLOSETAG + ')\\s*$', 'i')\n];\n\nvar reHtmlBlockClose = [\n /./, // dummy for 0\n /<\\/(?:script|pre|style)>/i,\n /-->/,\n /\\?>/,\n />/,\n /\\]\\]>/\n];\n\nvar reThematicBreak = /^(?:(?:\\* *){3,}|(?:_ *){3,}|(?:- *){3,}) *$/;\n\nvar reMaybeSpecial = /^[#`~*+_=<>0-9-]/;\n\nvar reNonSpace = /[^ \\t\\f\\v\\r\\n]/;\n\nvar reBulletListMarker = /^[*+-]/;\n\nvar reOrderedListMarker = /^(\\d{1,9})([.)])/;\n\nvar reATXHeadingMarker = /^#{1,6}(?: +|$)/;\n\nvar reCodeFence = /^`{3,}(?!.*`)|^~{3,}(?!.*~)/;\n\nvar reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;\n\nvar reSetextHeadingLine = /^(?:=+|-+) *$/;\n\nvar reLineEnding = /\\r\\n|\\n|\\r/;\n\n// Returns true if string contains only space characters.\nvar isBlank = function(s) {\n return !(reNonSpace.test(s));\n};\n\nvar peek = function(ln, pos) {\n if (pos < ln.length) {\n return ln.charCodeAt(pos);\n } else {\n return -1;\n }\n};\n\n// DOC PARSER\n\n// These are methods of a Parser object, defined below.\n\n// Returns true if block ends with a blank line, descending if needed\n// into lists and sublists.\nvar endsWithBlankLine = function(block) {\n while (block) {\n if (block._lastLineBlank) {\n return true;\n }\n var t = block.type;\n if (t === 'List' || t === 'Item') {\n block = block._lastChild;\n } else {\n break;\n }\n }\n return false;\n};\n\n// Break out of all containing lists, resetting the tip of the\n// document to the parent of the highest list, and finalizing\n// all the lists. (This is used to implement the \"two blank lines\n// break out of all lists\" feature.)\nvar breakOutOfLists = function(block) {\n var b = block;\n var last_list = null;\n do {\n if (b.type === 'List') {\n last_list = b;\n }\n b = b._parent;\n } while (b);\n\n if (last_list) {\n while (block !== last_list) {\n this.finalize(block, this.lineNumber);\n block = block._parent;\n }\n this.finalize(last_list, this.lineNumber);\n this.tip = last_list._parent;\n }\n};\n\n// Add a line to the block at the tip. We assume the tip\n// can accept lines -- that check should be done before calling this.\nvar addLine = function() {\n this.tip._string_content += this.currentLine.slice(this.offset) + '\\n';\n};\n\n// Add block of type tag as a child of the tip. If the tip can't\n// accept children, close and finalize it and try its parent,\n// and so on til we find a block that can accept children.\nvar addChild = function(tag, offset) {\n while (!this.blocks[this.tip.type].canContain(tag)) {\n this.finalize(this.tip, this.lineNumber - 1);\n }\n\n var column_number = offset + 1; // offset 0 = column 1\n var newBlock = new Node(tag, [[this.lineNumber, column_number], [0, 0]]);\n newBlock._string_content = '';\n this.tip.appendChild(newBlock);\n this.tip = newBlock;\n return newBlock;\n};\n\n// Parse a list marker and return data on the marker (type,\n// start, delimiter, bullet character, padding) or null.\nvar parseListMarker = function(parser) {\n var rest = parser.currentLine.slice(parser.nextNonspace);\n var match;\n var nextc;\n var spacesStartCol;\n var spacesStartOffset;\n var data = { type: null,\n tight: true, // lists are tight by default\n bulletChar: null,\n start: null,\n delimiter: null,\n padding: null,\n markerOffset: parser.indent };\n if ((match = rest.match(reBulletListMarker))) {\n data.type = 'Bullet';\n data.bulletChar = match[0][0];\n\n } else if ((match = rest.match(reOrderedListMarker))) {\n data.type = 'Ordered';\n data.start = parseInt(match[1]);\n data.delimiter = match[2];\n } else {\n return null;\n }\n // make sure we have spaces after\n nextc = peek(parser.currentLine, parser.nextNonspace + match[0].length);\n if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) {\n return null;\n }\n\n // we've got a match! advance offset and calculate padding\n parser.advanceNextNonspace(); // to start of marker\n parser.advanceOffset(match[0].length, true); // to end of marker\n spacesStartCol = parser.column;\n spacesStartOffset = parser.offset;\n do {\n parser.advanceOffset(1, true);\n nextc = peek(parser.currentLine, parser.offset);\n } while (parser.column - spacesStartCol < 5 &&\n (nextc === C_SPACE || nextc === C_TAB));\n var blank_item = peek(parser.currentLine, parser.offset) === -1;\n var spaces_after_marker = parser.column - spacesStartCol;\n if (spaces_after_marker >= 5 ||\n spaces_after_marker < 1 ||\n blank_item) {\n data.padding = match[0].length + 1;\n parser.column = spacesStartCol;\n parser.offset = spacesStartOffset;\n if (peek(parser.currentLine, parser.offset) === C_SPACE) {\n parser.advanceOffset(1, true);\n }\n } else {\n data.padding = match[0].length + spaces_after_marker;\n }\n return data;\n};\n\n// Returns true if the two list items are of the same type,\n// with the same delimiter and bullet character. This is used\n// in agglomerating list items into lists.\nvar listsMatch = function(list_data, item_data) {\n return (list_data.type === item_data.type &&\n list_data.delimiter === item_data.delimiter &&\n list_data.bulletChar === item_data.bulletChar);\n};\n\n// Finalize and close any unmatched blocks.\nvar closeUnmatchedBlocks = function() {\n if (!this.allClosed) {\n // finalize any blocks not matched\n while (this.oldtip !== this.lastMatchedContainer) {\n var parent = this.oldtip._parent;\n this.finalize(this.oldtip, this.lineNumber - 1);\n this.oldtip = parent;\n }\n this.allClosed = true;\n }\n};\n\n// 'finalize' is run when the block is closed.\n// 'continue' is run to check whether the block is continuing\n// at a certain line and offset (e.g. whether a block quote\n// contains a `>`. It returns 0 for matched, 1 for not matched,\n// and 2 for \"we've dealt with this line completely, go to next.\"\nvar blocks = {\n Document: {\n continue: function() { return 0; },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'Item'); },\n acceptsLines: false\n },\n List: {\n continue: function() { return 0; },\n finalize: function(parser, block) {\n var item = block._firstChild;\n while (item) {\n // check for non-final list item ending with blank line:\n if (endsWithBlankLine(item) && item._next) {\n block._listData.tight = false;\n break;\n }\n // recurse into children of list item, to see if there are\n // spaces between any of them:\n var subitem = item._firstChild;\n while (subitem) {\n if (endsWithBlankLine(subitem) &&\n (item._next || subitem._next)) {\n block._listData.tight = false;\n break;\n }\n subitem = subitem._next;\n }\n item = item._next;\n }\n },\n canContain: function(t) { return (t === 'Item'); },\n acceptsLines: false\n },\n BlockQuote: {\n continue: function(parser) {\n var ln = parser.currentLine;\n if (!parser.indented &&\n peek(ln, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n if (peek(ln, parser.offset) === C_SPACE) {\n parser.offset++;\n }\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'Item'); },\n acceptsLines: false\n },\n Item: {\n continue: function(parser, container) {\n if (parser.blank && container._firstChild !== null) {\n parser.advanceNextNonspace();\n } else if (parser.indent >=\n container._listData.markerOffset +\n container._listData.padding) {\n parser.advanceOffset(container._listData.markerOffset +\n container._listData.padding, true);\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'Item'); },\n acceptsLines: false\n },\n Heading: {\n continue: function() {\n // a heading can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() { return; },\n canContain: function() { return false; },\n acceptsLines: false\n },\n ThematicBreak: {\n continue: function() {\n // a thematic break can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() { return; },\n canContain: function() { return false; },\n acceptsLines: false\n },\n CodeBlock: {\n continue: function(parser, container) {\n var ln = parser.currentLine;\n var indent = parser.indent;\n if (container._isFenced) { // fenced\n var match = (indent <= 3 &&\n ln.charAt(parser.nextNonspace) === container._fenceChar &&\n ln.slice(parser.nextNonspace).match(reClosingCodeFence));\n if (match && match[0].length >= container._fenceLength) {\n // closing fence - we're at end of line, so we can return\n parser.finalize(container, parser.lineNumber);\n return 2;\n } else {\n // skip optional spaces of fence offset\n var i = container._fenceOffset;\n while (i > 0 && peek(ln, parser.offset) === C_SPACE) {\n parser.advanceOffset(1, false);\n i--;\n }\n }\n } else { // indented\n if (indent >= CODE_INDENT) {\n parser.advanceOffset(CODE_INDENT, true);\n } else if (parser.blank) {\n parser.advanceNextNonspace();\n } else {\n return 1;\n }\n }\n return 0;\n },\n finalize: function(parser, block) {\n if (block._isFenced) { // fenced\n // first line becomes info string\n var content = block._string_content;\n var newlinePos = content.indexOf('\\n');\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n block.info = unescapeString(firstLine.trim());\n block._literal = rest;\n } else { // indented\n block._literal = block._string_content.replace(/(\\n *)+$/, '\\n');\n }\n block._string_content = null; // allow GC\n },\n canContain: function() { return false; },\n acceptsLines: true\n },\n HtmlBlock: {\n continue: function(parser, container) {\n return ((parser.blank &&\n (container._htmlBlockType === 6 ||\n container._htmlBlockType === 7)) ? 1 : 0);\n },\n finalize: function(parser, block) {\n block._literal = block._string_content.replace(/(\\n *)+$/, '');\n block._string_content = null; // allow GC\n },\n canContain: function() { return false; },\n acceptsLines: true\n },\n Paragraph: {\n continue: function(parser) {\n return (parser.blank ? 1 : 0);\n },\n finalize: function(parser, block) {\n var pos;\n var hasReferenceDefs = false;\n\n // try parsing the beginning as link reference definitions:\n while (peek(block._string_content, 0) === C_OPEN_BRACKET &&\n (pos =\n parser.inlineParser.parseReference(block._string_content,\n parser.refmap))) {\n block._string_content = block._string_content.slice(pos);\n hasReferenceDefs = true;\n }\n if (hasReferenceDefs && isBlank(block._string_content)) {\n block.unlink();\n }\n },\n canContain: function() { return false; },\n acceptsLines: true\n }\n};\n\n// block start functions. Return values:\n// 0 = no match\n// 1 = matched container, keep going\n// 2 = matched leaf, no more block starts\nvar blockStarts = [\n // block quote\n function(parser) {\n if (!parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n // optional following space\n if (peek(parser.currentLine, parser.offset) === C_SPACE) {\n parser.advanceOffset(1, false);\n }\n parser.closeUnmatchedBlocks();\n parser.addChild('BlockQuote', parser.nextNonspace);\n return 1;\n } else {\n return 0;\n }\n },\n\n // ATX heading\n function(parser) {\n var match;\n if (!parser.indented &&\n (match = parser.currentLine.slice(parser.nextNonspace).match(reATXHeadingMarker))) {\n parser.advanceNextNonspace();\n parser.advanceOffset(match[0].length, false);\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('Heading', parser.nextNonspace);\n container.level = match[0].trim().length; // number of #s\n // remove trailing ###s:\n container._string_content =\n parser.currentLine.slice(parser.offset).replace(/^ *#+ *$/, '').replace(/ +#+ *$/, '');\n parser.advanceOffset(parser.currentLine.length - parser.offset);\n return 2;\n } else {\n return 0;\n }\n },\n\n // Fenced code block\n function(parser) {\n var match;\n if (!parser.indented &&\n (match = parser.currentLine.slice(parser.nextNonspace).match(reCodeFence))) {\n var fenceLength = match[0].length;\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('CodeBlock', parser.nextNonspace);\n container._isFenced = true;\n container._fenceLength = fenceLength;\n container._fenceChar = match[0][0];\n container._fenceOffset = parser.indent;\n parser.advanceNextNonspace();\n parser.advanceOffset(fenceLength, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // HTML block\n function(parser, container) {\n if (!parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_LESSTHAN) {\n var s = parser.currentLine.slice(parser.nextNonspace);\n var blockType;\n\n for (blockType = 1; blockType <= 7; blockType++) {\n if (reHtmlBlockOpen[blockType].test(s) &&\n (blockType < 7 ||\n container.type !== 'Paragraph')) {\n parser.closeUnmatchedBlocks();\n // We don't adjust parser.offset;\n // spaces are part of the HTML block:\n var b = parser.addChild('HtmlBlock',\n parser.offset);\n b._htmlBlockType = blockType;\n return 2;\n }\n }\n }\n\n return 0;\n\n },\n\n // Setext heading\n function(parser, container) {\n var match;\n if (!parser.indented &&\n container.type === 'Paragraph' &&\n ((match = parser.currentLine.slice(parser.nextNonspace).match(reSetextHeadingLine)))) {\n parser.closeUnmatchedBlocks();\n var heading = new Node('Heading', container.sourcepos);\n heading.level = match[0][0] === '=' ? 1 : 2;\n heading._string_content = container._string_content;\n container.insertAfter(heading);\n container.unlink();\n parser.tip = heading;\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // thematic break\n function(parser) {\n if (!parser.indented &&\n reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace))) {\n parser.closeUnmatchedBlocks();\n parser.addChild('ThematicBreak', parser.nextNonspace);\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // list item\n function(parser, container) {\n var data;\n\n if ((!parser.indented || container.type === 'List')\n && (data = parseListMarker(parser))) {\n parser.closeUnmatchedBlocks();\n\n // add the list if needed\n if (parser.tip.type !== 'List' ||\n !(listsMatch(container._listData, data))) {\n container = parser.addChild('List', parser.nextNonspace);\n container._listData = data;\n }\n\n // add the list item\n container = parser.addChild('Item', parser.nextNonspace);\n container._listData = data;\n return 1;\n } else {\n return 0;\n }\n },\n\n // indented code block\n function(parser) {\n if (parser.indented &&\n parser.tip.type !== 'Paragraph' &&\n !parser.blank) {\n // indented code\n parser.advanceOffset(CODE_INDENT, true);\n parser.closeUnmatchedBlocks();\n parser.addChild('CodeBlock', parser.offset);\n return 2;\n } else {\n return 0;\n }\n }\n\n];\n\nvar advanceOffset = function(count, columns) {\n var cols = 0;\n var currentLine = this.currentLine;\n var charsToTab;\n var c;\n while (count > 0 && (c = currentLine[this.offset])) {\n if (c === '\\t') {\n charsToTab = 4 - (this.column % 4);\n this.column += charsToTab;\n this.offset += 1;\n count -= (columns ? charsToTab : 1);\n } else {\n cols += 1;\n this.offset += 1;\n this.column += 1; // assume ascii; block starts are ascii\n count -= 1;\n }\n }\n};\n\nvar advanceNextNonspace = function() {\n this.offset = this.nextNonspace;\n this.column = this.nextNonspaceColumn;\n};\n\nvar findNextNonspace = function() {\n var currentLine = this.currentLine;\n var i = this.offset;\n var cols = this.column;\n var c;\n\n while ((c = currentLine.charAt(i)) !== '') {\n if (c === ' ') {\n i++;\n cols++;\n } else if (c === '\\t') {\n i++;\n cols += (4 - (cols % 4));\n } else {\n break;\n }\n }\n this.blank = (c === '\\n' || c === '\\r' || c === '');\n this.nextNonspace = i;\n this.nextNonspaceColumn = cols;\n this.indent = this.nextNonspaceColumn - this.column;\n this.indented = this.indent >= CODE_INDENT;\n};\n\n// Analyze a line of text and update the document appropriately.\n// We parse markdown text by calling this on each line of input,\n// then finalizing the document.\nvar incorporateLine = function(ln) {\n var all_matched = true;\n var t;\n\n var container = this.doc;\n this.oldtip = this.tip;\n this.offset = 0;\n this.column = 0;\n this.lineNumber += 1;\n\n // replace NUL characters for security\n if (ln.indexOf('\\u0000') !== -1) {\n ln = ln.replace(/\\0/g, '\\uFFFD');\n }\n\n this.currentLine = ln;\n\n // For each containing block, try to parse the associated line start.\n // Bail out on failure: container will point to the last matching block.\n // Set all_matched to false if not all containers match.\n var lastChild;\n while ((lastChild = container._lastChild) && lastChild._open) {\n container = lastChild;\n\n this.findNextNonspace();\n\n switch (this.blocks[container.type].continue(this, container)) {\n case 0: // we've matched, keep going\n break;\n case 1: // we've failed to match a block\n all_matched = false;\n break;\n case 2: // we've hit end of line for fenced code close and can return\n this.lastLineLength = ln.length;\n return;\n default:\n throw 'continue returned illegal value, must be 0, 1, or 2';\n }\n if (!all_matched) {\n container = container._parent; // back up to last matching block\n break;\n }\n }\n\n this.allClosed = (container === this.oldtip);\n this.lastMatchedContainer = container;\n\n // Check to see if we've hit 2nd blank line; if so break out of list:\n if (this.blank && container._lastLineBlank) {\n this.breakOutOfLists(container);\n container = this.tip;\n }\n\n var matchedLeaf = container.type !== 'Paragraph' &&\n blocks[container.type].acceptsLines;\n var starts = this.blockStarts;\n var startsLen = starts.length;\n // Unless last matched container is a code block, try new container starts,\n // adding children to the last matched container:\n while (!matchedLeaf) {\n\n this.findNextNonspace();\n\n // this is a little performance optimization:\n if (!this.indented &&\n !reMaybeSpecial.test(ln.slice(this.nextNonspace))) {\n this.advanceNextNonspace();\n break;\n }\n\n var i = 0;\n while (i < startsLen) {\n var res = starts[i](this, container);\n if (res === 1) {\n container = this.tip;\n break;\n } else if (res === 2) {\n container = this.tip;\n matchedLeaf = true;\n break;\n } else {\n i++;\n }\n }\n\n if (i === startsLen) { // nothing matched\n this.advanceNextNonspace();\n break;\n }\n }\n\n // What remains at the offset is a text line. Add the text to the\n // appropriate container.\n\n // First check for a lazy paragraph continuation:\n if (!this.allClosed && !this.blank &&\n this.tip.type === 'Paragraph') {\n // lazy paragraph continuation\n this.addLine();\n\n } else { // not a lazy continuation\n\n // finalize any blocks not matched\n this.closeUnmatchedBlocks();\n if (this.blank && container.lastChild) {\n container.lastChild._lastLineBlank = true;\n }\n\n t = container.type;\n\n // Block quote lines are never blank as they start with >\n // and we don't count blanks in fenced code for purposes of tight/loose\n // lists or breaking out of lists. We also don't set _lastLineBlank\n // on an empty list item, or if we just closed a fenced block.\n var lastLineBlank = this.blank &&\n !(t === 'BlockQuote' ||\n (t === 'CodeBlock' && container._isFenced) ||\n (t === 'Item' &&\n !container._firstChild &&\n container.sourcepos[0][0] === this.lineNumber));\n\n // propagate lastLineBlank up through parents:\n var cont = container;\n while (cont) {\n cont._lastLineBlank = lastLineBlank;\n cont = cont._parent;\n }\n\n if (this.blocks[t].acceptsLines) {\n this.addLine();\n // if HtmlBlock, check for end condition\n if (t === 'HtmlBlock' &&\n container._htmlBlockType >= 1 &&\n container._htmlBlockType <= 5 &&\n reHtmlBlockClose[container._htmlBlockType].test(this.currentLine.slice(this.offset))) {\n this.finalize(container, this.lineNumber);\n }\n\n } else if (this.offset < ln.length && !this.blank) {\n // create paragraph container for line\n container = this.addChild('Paragraph', this.offset);\n this.advanceNextNonspace();\n this.addLine();\n }\n }\n this.lastLineLength = ln.length;\n};\n\n// Finalize a block. Close it and do any necessary postprocessing,\n// e.g. creating string_content from strings, setting the 'tight'\n// or 'loose' status of a list, and parsing the beginnings\n// of paragraphs for reference definitions. Reset the tip to the\n// parent of the closed block.\nvar finalize = function(block, lineNumber) {\n var above = block._parent;\n block._open = false;\n block.sourcepos[1] = [lineNumber, this.lastLineLength];\n\n this.blocks[block.type].finalize(this, block);\n\n this.tip = above;\n};\n\n// Walk through a block & children recursively, parsing string content\n// into inline content where appropriate.\nvar processInlines = function(block) {\n var node, event, t;\n var walker = block.walker();\n this.inlineParser.refmap = this.refmap;\n this.inlineParser.options = this.options;\n while ((event = walker.next())) {\n node = event.node;\n t = node.type;\n if (!event.entering && (t === 'Paragraph' || t === 'Heading')) {\n this.inlineParser.parse(node);\n }\n }\n};\n\nvar Document = function() {\n var doc = new Node('Document', [[1, 1], [0, 0]]);\n return doc;\n};\n\n// The main parsing function. Returns a parsed document AST.\nvar parse = function(input) {\n this.doc = new Document();\n this.tip = this.doc;\n this.refmap = {};\n this.lineNumber = 0;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = \"\";\n if (this.options.time) { console.time(\"preparing input\"); }\n var lines = input.split(reLineEnding);\n var len = lines.length;\n if (input.charCodeAt(input.length - 1) === C_NEWLINE) {\n // ignore last blank line created by final newline\n len -= 1;\n }\n if (this.options.time) { console.timeEnd(\"preparing input\"); }\n if (this.options.time) { console.time(\"block parsing\"); }\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n while (this.tip) {\n this.finalize(this.tip, len);\n }\n if (this.options.time) { console.timeEnd(\"block parsing\"); }\n if (this.options.time) { console.time(\"inline parsing\"); }\n this.processInlines(this.doc);\n if (this.options.time) { console.timeEnd(\"inline parsing\"); }\n return this.doc;\n};\n\n\n// The Parser object.\nfunction Parser(options){\n return {\n doc: new Document(),\n blocks: blocks,\n blockStarts: blockStarts,\n tip: this.doc,\n oldtip: this.doc,\n currentLine: \"\",\n lineNumber: 0,\n offset: 0,\n column: 0,\n nextNonspace: 0,\n nextNonspaceColumn: 0,\n indent: 0,\n indented: false,\n blank: false,\n allClosed: true,\n lastMatchedContainer: this.doc,\n refmap: {},\n lastLineLength: 0,\n inlineParser: new InlineParser(options),\n findNextNonspace: findNextNonspace,\n advanceOffset: advanceOffset,\n advanceNextNonspace: advanceNextNonspace,\n breakOutOfLists: breakOutOfLists,\n addLine: addLine,\n addChild: addChild,\n incorporateLine: incorporateLine,\n finalize: finalize,\n processInlines: processInlines,\n closeUnmatchedBlocks: closeUnmatchedBlocks,\n parse: parse,\n options: options || {}\n };\n}\n\nmodule.exports = Parser;\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\n'use strict';\n\n\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i, ch, cache = decodeCache[exclude];\n if (cache) { return cache; }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n}\n\n\n// Decode percent-encoded string.\n//\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n var i, l, b1, b2, b3, b4, chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n}\n\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","var inverseXML = getInverseObj(require(\"../maps/xml.json\")),\n xmlReplacer = getInverseReplacer(inverseXML);\n\nexports.XML = getInverse(inverseXML, xmlReplacer);\n\nvar inverseHTML = getInverseObj(require(\"../maps/entities.json\")),\n htmlReplacer = getInverseReplacer(inverseHTML);\n\nexports.HTML = getInverse(inverseHTML, htmlReplacer);\n\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function(inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\n\nfunction getInverseReplacer(inverse) {\n var single = [],\n multiple = [];\n\n Object.keys(inverse).forEach(function(k) {\n if (k.length === 1) {\n single.push(\"\\\\\" + k);\n } else {\n multiple.push(k);\n }\n });\n\n //TODO add ranges\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n\nvar re_nonASCII = /[^\\0-\\x7F]/g,\n re_astralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction singleCharReplacer(c) {\n return (\n \"&#x\" +\n c\n .charCodeAt(0)\n .toString(16)\n .toUpperCase() +\n \";\"\n );\n}\n\nfunction astralReplacer(c) {\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n var high = c.charCodeAt(0);\n var low = c.charCodeAt(1);\n var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;\n return \"&#x\" + codePoint.toString(16).toUpperCase() + \";\";\n}\n\nfunction getInverse(inverse, re) {\n function func(name) {\n return inverse[name];\n }\n\n return function(data) {\n return data\n .replace(re, func)\n .replace(re_astralSymbols, astralReplacer)\n .replace(re_nonASCII, singleCharReplacer);\n };\n}\n\nvar re_xmlChars = getInverseReplacer(inverseXML);\n\nfunction escapeXML(data) {\n return data\n .replace(re_xmlChars, singleCharReplacer)\n .replace(re_astralSymbols, astralReplacer)\n .replace(re_nonASCII, singleCharReplacer);\n}\n\nexports.escape = escapeXML;\n","var entityMap = require(\"../maps/entities.json\"),\n legacyMap = require(\"../maps/legacy.json\"),\n xmlMap = require(\"../maps/xml.json\"),\n decodeCodePoint = require(\"./decode_codepoint.js\");\n\nvar decodeXMLStrict = getStrictDecoder(xmlMap),\n decodeHTMLStrict = getStrictDecoder(entityMap);\n\nfunction getStrictDecoder(map) {\n var keys = Object.keys(map).join(\"|\"),\n replace = getReplacer(map);\n\n keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n\n var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n\n return function(str) {\n return String(str).replace(re, replace);\n };\n}\n\nvar decodeHTML = (function() {\n var legacy = Object.keys(legacyMap).sort(sorter);\n\n var keys = Object.keys(entityMap).sort(sorter);\n\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n } else {\n keys[i] += \";\";\n }\n }\n\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\"),\n replace = getReplacer(entityMap);\n\n function replacer(str) {\n if (str.substr(-1) !== \";\") str += \";\";\n return replace(str);\n }\n\n //TODO consider creating a merged map\n return function(str) {\n return String(str).replace(re, replacer);\n };\n})();\n\nfunction sorter(a, b) {\n return a < b ? 1 : -1;\n}\n\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n if (str.charAt(2) === \"X\" || str.charAt(2) === \"x\") {\n return decodeCodePoint(parseInt(str.substr(3), 16));\n }\n return decodeCodePoint(parseInt(str.substr(2), 10));\n }\n return map[str.slice(1, -1)];\n };\n}\n\nmodule.exports = {\n XML: decodeXMLStrict,\n HTML: decodeHTML,\n HTMLStrict: decodeHTMLStrict\n};\n","var decodeMap = require(\"../maps/decode.json\");\n\nmodule.exports = decodeCodePoint;\n\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n\n if (codePoint in decodeMap) {\n codePoint = decodeMap[codePoint];\n }\n\n var output = \"\";\n\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n\n output += String.fromCharCode(codePoint);\n return output;\n}\n","\"use strict\";\n\nvar Node = require('./node');\nvar common = require('./common');\nvar normalizeReference = require('./normalize-reference');\n\nvar normalizeURI = common.normalizeURI;\nvar unescapeString = common.unescapeString;\nvar fromCodePoint = require('./from-code-point.js');\nvar decodeHTML = require('entities').decodeHTML;\nrequire('string.prototype.repeat'); // Polyfill for String.prototype.repeat\n\n// Constants for character codes:\n\nvar C_NEWLINE = 10;\nvar C_ASTERISK = 42;\nvar C_UNDERSCORE = 95;\nvar C_BACKTICK = 96;\nvar C_OPEN_BRACKET = 91;\nvar C_CLOSE_BRACKET = 93;\nvar C_LESSTHAN = 60;\nvar C_BANG = 33;\nvar C_BACKSLASH = 92;\nvar C_AMPERSAND = 38;\nvar C_OPEN_PAREN = 40;\nvar C_CLOSE_PAREN = 41;\nvar C_COLON = 58;\nvar C_SINGLEQUOTE = 39;\nvar C_DOUBLEQUOTE = 34;\n\n// Some regexps used in inline parser:\n\nvar ESCAPABLE = common.ESCAPABLE;\nvar ESCAPED_CHAR = '\\\\\\\\' + ESCAPABLE;\nvar REG_CHAR = '[^\\\\\\\\()\\\\x00-\\\\x20]';\nvar IN_PARENS_NOSP = '\\\\((' + REG_CHAR + '|' + ESCAPED_CHAR + '|\\\\\\\\)*\\\\)';\n\nvar ENTITY = common.ENTITY;\nvar reHtmlTag = common.reHtmlTag;\n\nvar rePunctuation = new RegExp(/^[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#\\$%&\\(\\)\\*\\+,\\-\\.\\/:;<=>\\?@\\[\\]\\^_`\\{\\|\\}~]/);\n\nvar reLinkTitle = new RegExp(\n '^(?:\"(' + ESCAPED_CHAR + '|[^\"\\\\x00])*\"' +\n '|' +\n '\\'(' + ESCAPED_CHAR + '|[^\\'\\\\x00])*\\'' +\n '|' +\n '\\\\((' + ESCAPED_CHAR + '|[^)\\\\x00])*\\\\))');\n\nvar reLinkDestinationBraces = new RegExp(\n '^(?:[<](?:[^ <>\\\\t\\\\n\\\\\\\\\\\\x00]' + '|' + ESCAPED_CHAR + '|' + '\\\\\\\\)*[>])');\n\nvar reLinkDestination = new RegExp(\n '^(?:' + REG_CHAR + '+|' + ESCAPED_CHAR + '|\\\\\\\\|' + IN_PARENS_NOSP + ')*');\n\nvar reEscapable = new RegExp('^' + ESCAPABLE);\n\nvar reEntityHere = new RegExp('^' + ENTITY, 'i');\n\nvar reTicks = /`+/;\n\nvar reTicksHere = /^`+/;\n\nvar reEllipses = /\\.\\.\\./g;\n\nvar reDash = /--+/g;\n\nvar reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\n\nvar reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\\x00-\\x20]*>/i;\n\nvar reSpnl = /^ *(?:\\n *)?/;\n\nvar reWhitespaceChar = /^\\s/;\n\nvar reWhitespace = /\\s+/g;\n\nvar reFinalSpace = / *$/;\n\nvar reInitialSpace = /^ */;\n\nvar reSpaceAtEndOfLine = /^ *(?:\\n|$)/;\n\nvar reLinkLabel = new RegExp('^\\\\[(?:[^\\\\\\\\\\\\[\\\\]]|' + ESCAPED_CHAR +\n '|\\\\\\\\){0,1000}\\\\]');\n\n// Matches a string of non-special characters.\nvar reMain = /^[^\\n`\\[\\]\\\\!<&*_'\"]+/m;\n\nvar text = function(s) {\n var node = new Node('Text');\n node._literal = s;\n return node;\n};\n\n// INLINE PARSER\n\n// These are methods of an InlineParser object, defined below.\n// An InlineParser keeps track of a subject (a string to be\n// parsed) and a position in that subject.\n\n// If re matches at current position in the subject, advance\n// position in subject and return the match; otherwise return null.\nvar match = function(re) {\n var m = re.exec(this.subject.slice(this.pos));\n if (m === null) {\n return null;\n } else {\n this.pos += m.index + m[0].length;\n return m[0];\n }\n};\n\n// Returns the code for the character at the current subject position, or -1\n// there are no more characters.\nvar peek = function() {\n if (this.pos < this.subject.length) {\n return this.subject.charCodeAt(this.pos);\n } else {\n return -1;\n }\n};\n\n// Parse zero or more space characters, including at most one newline\nvar spnl = function() {\n this.match(reSpnl);\n return true;\n};\n\n// All of the parsers below try to match something at the current position\n// in the subject. If they succeed in matching anything, they\n// return the inline matched, advancing the subject.\n\n// Attempt to parse backticks, adding either a backtick code span or a\n// literal sequence of backticks.\nvar parseBackticks = function(block) {\n var ticks = this.match(reTicksHere);\n if (ticks === null) {\n return false;\n }\n var afterOpenTicks = this.pos;\n var matched;\n var node;\n while ((matched = this.match(reTicks)) !== null) {\n if (matched === ticks) {\n node = new Node('Code');\n node._literal = this.subject.slice(afterOpenTicks,\n this.pos - ticks.length)\n .trim().replace(reWhitespace, ' ');\n block.appendChild(node);\n return true;\n }\n }\n // If we got here, we didn't match a closing backtick sequence.\n this.pos = afterOpenTicks;\n block.appendChild(text(ticks));\n return true;\n};\n\n// Parse a backslash-escaped special character, adding either the escaped\n// character, a hard line break (if the backslash is followed by a newline),\n// or a literal backslash to the block's children. Assumes current character\n// is a backslash.\nvar parseBackslash = function(block) {\n var subj = this.subject;\n var node;\n this.pos += 1;\n if (this.peek() === C_NEWLINE) {\n this.pos += 1;\n node = new Node('Hardbreak');\n block.appendChild(node);\n } else if (reEscapable.test(subj.charAt(this.pos))) {\n block.appendChild(text(subj.charAt(this.pos)));\n this.pos += 1;\n } else {\n block.appendChild(text('\\\\'));\n }\n return true;\n};\n\n// Attempt to parse an autolink (URL or email in pointy brackets).\nvar parseAutolink = function(block) {\n var m;\n var dest;\n var node;\n if ((m = this.match(reEmailAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node('Link');\n node._destination = normalizeURI('mailto:' + dest);\n node._title = '';\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else if ((m = this.match(reAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node('Link');\n node._destination = normalizeURI(dest);\n node._title = '';\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else {\n return false;\n }\n};\n\n// Attempt to parse a raw HTML tag.\nvar parseHtmlTag = function(block) {\n var m = this.match(reHtmlTag);\n if (m === null) {\n return false;\n } else {\n var node = new Node('HtmlInline');\n node._literal = m;\n block.appendChild(node);\n return true;\n }\n};\n\n// Scan a sequence of characters with code cc, and return information about\n// the number of delimiters and whether they are positioned such that\n// they can open and/or close emphasis or strong emphasis. A utility\n// function for strong/emph parsing.\nvar scanDelims = function(cc) {\n var numdelims = 0;\n var char_before, char_after, cc_after;\n var startpos = this.pos;\n var left_flanking, right_flanking, can_open, can_close;\n var after_is_whitespace, after_is_punctuation, before_is_whitespace, before_is_punctuation;\n\n if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n numdelims++;\n this.pos++;\n } else {\n while (this.peek() === cc) {\n numdelims++;\n this.pos++;\n }\n }\n\n if (numdelims === 0) {\n return null;\n }\n\n char_before = startpos === 0 ? '\\n' : this.subject.charAt(startpos - 1);\n\n cc_after = this.peek();\n if (cc_after === -1) {\n char_after = '\\n';\n } else {\n char_after = fromCodePoint(cc_after);\n }\n\n after_is_whitespace = reWhitespaceChar.test(char_after);\n after_is_punctuation = rePunctuation.test(char_after);\n before_is_whitespace = reWhitespaceChar.test(char_before);\n before_is_punctuation = rePunctuation.test(char_before);\n\n left_flanking = !after_is_whitespace &&\n !(after_is_punctuation && !before_is_whitespace && !before_is_punctuation);\n right_flanking = !before_is_whitespace &&\n !(before_is_punctuation && !after_is_whitespace && !after_is_punctuation);\n if (cc === C_UNDERSCORE) {\n can_open = left_flanking &&\n (!right_flanking || before_is_punctuation);\n can_close = right_flanking &&\n (!left_flanking || after_is_punctuation);\n } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n can_open = left_flanking && !right_flanking;\n can_close = right_flanking;\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n this.pos = startpos;\n return { numdelims: numdelims,\n can_open: can_open,\n can_close: can_close };\n};\n\n// Handle a delimiter marker for emphasis or a quote.\nvar handleDelim = function(cc, block) {\n var res = this.scanDelims(cc);\n if (!res) {\n return false;\n }\n var numdelims = res.numdelims;\n var startpos = this.pos;\n var contents;\n\n this.pos += numdelims;\n if (cc === C_SINGLEQUOTE) {\n contents = \"\\u2019\";\n } else if (cc === C_DOUBLEQUOTE) {\n contents = \"\\u201C\";\n } else {\n contents = this.subject.slice(startpos, this.pos);\n }\n var node = text(contents);\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.delimiters = { cc: cc,\n numdelims: numdelims,\n node: node,\n previous: this.delimiters,\n next: null,\n can_open: res.can_open,\n can_close: res.can_close,\n active: true };\n if (this.delimiters.previous !== null) {\n this.delimiters.previous.next = this.delimiters;\n }\n\n return true;\n\n};\n\nvar removeDelimiter = function(delim) {\n if (delim.previous !== null) {\n delim.previous.next = delim.next;\n }\n if (delim.next === null) {\n // top of stack\n this.delimiters = delim.previous;\n } else {\n delim.next.previous = delim.previous;\n }\n};\n\nvar removeDelimitersBetween = function(bottom, top) {\n if (bottom.next !== top) {\n bottom.next = top;\n top.previous = bottom;\n }\n};\n\nvar processEmphasis = function(stack_bottom) {\n var opener, closer, old_closer;\n var opener_inl, closer_inl;\n var tempstack;\n var use_delims;\n var tmp, next;\n var opener_found;\n var openers_bottom = [];\n\n openers_bottom[C_UNDERSCORE] = stack_bottom;\n openers_bottom[C_ASTERISK] = stack_bottom;\n openers_bottom[C_SINGLEQUOTE] = stack_bottom;\n openers_bottom[C_DOUBLEQUOTE] = stack_bottom;\n\n // find first closer above stack_bottom:\n closer = this.delimiters;\n while (closer !== null && closer.previous !== stack_bottom) {\n closer = closer.previous;\n }\n // move forward, looking for closers, and handling each\n while (closer !== null) {\n var closercc = closer.cc;\n if (!(closer.can_close && (closercc === C_UNDERSCORE ||\n closercc === C_ASTERISK ||\n closercc === C_SINGLEQUOTE ||\n closercc === C_DOUBLEQUOTE))) {\n closer = closer.next;\n } else {\n // found emphasis closer. now look back for first matching opener:\n opener = closer.previous;\n opener_found = false;\n while (opener !== null && opener !== stack_bottom &&\n opener !== openers_bottom[closercc]) {\n if (opener.cc === closer.cc && opener.can_open) {\n opener_found = true;\n break;\n }\n opener = opener.previous;\n }\n old_closer = closer;\n\n if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) {\n if (!opener_found) {\n closer = closer.next;\n } else {\n // calculate actual number of delimiters used from closer\n if (closer.numdelims < 3 || opener.numdelims < 3) {\n use_delims = closer.numdelims <= opener.numdelims ?\n closer.numdelims : opener.numdelims;\n } else {\n use_delims = closer.numdelims % 2 === 0 ? 2 : 1;\n }\n\n opener_inl = opener.node;\n closer_inl = closer.node;\n\n // remove used delimiters from stack elts and inlines\n opener.numdelims -= use_delims;\n closer.numdelims -= use_delims;\n opener_inl._literal =\n opener_inl._literal.slice(0,\n opener_inl._literal.length - use_delims);\n closer_inl._literal =\n closer_inl._literal.slice(0,\n closer_inl._literal.length - use_delims);\n\n // build contents for new emph element\n var emph = new Node(use_delims === 1 ? 'Emph' : 'Strong');\n\n tmp = opener_inl._next;\n while (tmp && tmp !== closer_inl) {\n next = tmp._next;\n tmp.unlink();\n emph.appendChild(tmp);\n tmp = next;\n }\n\n opener_inl.insertAfter(emph);\n\n // remove elts between opener and closer in delimiters stack\n removeDelimitersBetween(opener, closer);\n\n // if opener has 0 delims, remove it and the inline\n if (opener.numdelims === 0) {\n opener_inl.unlink();\n this.removeDelimiter(opener);\n }\n\n if (closer.numdelims === 0) {\n closer_inl.unlink();\n tempstack = closer.next;\n this.removeDelimiter(closer);\n closer = tempstack;\n }\n\n }\n\n } else if (closercc === C_SINGLEQUOTE) {\n closer.node._literal = \"\\u2019\";\n if (opener_found) {\n opener.node._literal = \"\\u2018\";\n }\n closer = closer.next;\n\n } else if (closercc === C_DOUBLEQUOTE) {\n closer.node._literal = \"\\u201D\";\n if (opener_found) {\n opener.node.literal = \"\\u201C\";\n }\n closer = closer.next;\n\n }\n if (!opener_found) {\n // Set lower bound for future searches for openers:\n openers_bottom[closercc] = old_closer.previous;\n if (!old_closer.can_open) {\n // We can remove a closer that can't be an opener,\n // once we've seen there's no matching opener:\n this.removeDelimiter(old_closer);\n }\n }\n }\n\n }\n\n // remove all delimiters\n while (this.delimiters !== null && this.delimiters !== stack_bottom) {\n this.removeDelimiter(this.delimiters);\n }\n};\n\n// Attempt to parse link title (sans quotes), returning the string\n// or null if no match.\nvar parseLinkTitle = function() {\n var title = this.match(reLinkTitle);\n if (title === null) {\n return null;\n } else {\n // chop off quotes from title and unescape:\n return unescapeString(title.substr(1, title.length - 2));\n }\n};\n\n// Attempt to parse link destination, returning the string or\n// null if no match.\nvar parseLinkDestination = function() {\n var res = this.match(reLinkDestinationBraces);\n if (res === null) {\n res = this.match(reLinkDestination);\n if (res === null) {\n return null;\n } else {\n return normalizeURI(unescapeString(res));\n }\n } else { // chop off surrounding <..>:\n return normalizeURI(unescapeString(res.substr(1, res.length - 2)));\n }\n};\n\n// Attempt to parse a link label, returning number of characters parsed.\nvar parseLinkLabel = function() {\n var m = this.match(reLinkLabel);\n if (m === null || m.length > 1001) {\n return 0;\n } else {\n return m.length;\n }\n};\n\n// Add open bracket to delimiter stack and add a text node to block's children.\nvar parseOpenBracket = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n\n var node = text('[');\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.delimiters = { cc: C_OPEN_BRACKET,\n numdelims: 1,\n node: node,\n previous: this.delimiters,\n next: null,\n can_open: true,\n can_close: false,\n index: startpos,\n active: true };\n if (this.delimiters.previous !== null) {\n this.delimiters.previous.next = this.delimiters;\n }\n\n return true;\n\n};\n\n// IF next character is [, and ! delimiter to delimiter stack and\n// add a text node to block's children. Otherwise just add a text node.\nvar parseBang = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n if (this.peek() === C_OPEN_BRACKET) {\n this.pos += 1;\n\n var node = text('![');\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.delimiters = { cc: C_BANG,\n numdelims: 1,\n node: node,\n previous: this.delimiters,\n next: null,\n can_open: true,\n can_close: false,\n index: startpos + 1,\n active: true };\n if (this.delimiters.previous !== null) {\n this.delimiters.previous.next = this.delimiters;\n }\n } else {\n block.appendChild(text('!'));\n }\n return true;\n};\n\n// Try to match close bracket against an opening in the delimiter\n// stack. Add either a link or image, or a plain [ character,\n// to block's children. If there is a matching delimiter,\n// remove it from the delimiter stack.\nvar parseCloseBracket = function(block) {\n var startpos;\n var is_image;\n var dest;\n var title;\n var matched = false;\n var reflabel;\n var opener;\n\n this.pos += 1;\n startpos = this.pos;\n\n // look through stack of delimiters for a [ or ![\n opener = this.delimiters;\n\n while (opener !== null) {\n if (opener.cc === C_OPEN_BRACKET || opener.cc === C_BANG) {\n break;\n }\n opener = opener.previous;\n }\n\n if (opener === null) {\n // no matched opener, just return a literal\n block.appendChild(text(']'));\n return true;\n }\n\n if (!opener.active) {\n // no matched opener, just return a literal\n block.appendChild(text(']'));\n // take opener off emphasis stack\n this.removeDelimiter(opener);\n return true;\n }\n\n // If we got here, open is a potential opener\n is_image = opener.cc === C_BANG;\n\n // Check to see if we have a link/image\n\n // Inline link?\n if (this.peek() === C_OPEN_PAREN) {\n this.pos++;\n if (this.spnl() &&\n ((dest = this.parseLinkDestination()) !== null) &&\n this.spnl() &&\n // make sure there's a space before the title:\n (reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&\n (title = this.parseLinkTitle()) || true) &&\n this.spnl() &&\n this.peek() === C_CLOSE_PAREN) {\n this.pos += 1;\n matched = true;\n }\n } else {\n\n // Next, see if there's a link label\n var savepos = this.pos;\n var beforelabel = this.pos;\n var n = this.parseLinkLabel();\n if (n === 0 || n === 2) {\n // empty or missing second label\n reflabel = this.subject.slice(opener.index, startpos);\n } else {\n reflabel = this.subject.slice(beforelabel, beforelabel + n);\n }\n if (n === 0) {\n // If shortcut reference link, rewind before spaces we skipped.\n this.pos = savepos;\n }\n\n // lookup rawlabel in refmap\n var link = this.refmap[normalizeReference(reflabel)];\n if (link) {\n dest = link.destination;\n title = link.title;\n matched = true;\n }\n }\n\n if (matched) {\n var node = new Node(is_image ? 'Image' : 'Link');\n node._destination = dest;\n node._title = title || '';\n\n var tmp, next;\n tmp = opener.node._next;\n while (tmp) {\n next = tmp._next;\n tmp.unlink();\n node.appendChild(tmp);\n tmp = next;\n }\n block.appendChild(node);\n this.processEmphasis(opener.previous);\n\n opener.node.unlink();\n\n // processEmphasis will remove this and later delimiters.\n // Now, for a link, we also deactivate earlier link openers.\n // (no links in links)\n if (!is_image) {\n opener = this.delimiters;\n while (opener !== null) {\n if (opener.cc === C_OPEN_BRACKET) {\n opener.active = false; // deactivate this opener\n }\n opener = opener.previous;\n }\n }\n\n return true;\n\n } else { // no match\n\n this.removeDelimiter(opener); // remove this opener from stack\n this.pos = startpos;\n block.appendChild(text(']'));\n return true;\n }\n\n};\n\n// Attempt to parse an entity.\nvar parseEntity = function(block) {\n var m;\n if ((m = this.match(reEntityHere))) {\n block.appendChild(text(decodeHTML(m)));\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a run of ordinary characters, or a single character with\n// a special meaning in markdown, as a plain string.\nvar parseString = function(block) {\n var m;\n if ((m = this.match(reMain))) {\n if (this.options.smart) {\n block.appendChild(text(\n m.replace(reEllipses, \"\\u2026\")\n .replace(reDash, function(chars) {\n var enCount = 0;\n var emCount = 0;\n if (chars.length % 3 === 0) { // If divisible by 3, use all em dashes\n emCount = chars.length / 3;\n } else if (chars.length % 2 === 0) { // If divisible by 2, use all en dashes\n enCount = chars.length / 2;\n } else if (chars.length % 3 === 2) { // If 2 extra dashes, use en dash for last 2; em dashes for rest\n enCount = 1;\n emCount = (chars.length - 2) / 3;\n } else { // Use en dashes for last 4 hyphens; em dashes for rest\n enCount = 2;\n emCount = (chars.length - 4) / 3;\n }\n return \"\\u2014\".repeat(emCount) + \"\\u2013\".repeat(enCount);\n })));\n } else {\n block.appendChild(text(m));\n }\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a newline. If it was preceded by two spaces, return a hard\n// line break; otherwise a soft line break.\nvar parseNewline = function(block) {\n this.pos += 1; // assume we're at a \\n\n // check previous node for trailing spaces\n var lastc = block._lastChild;\n if (lastc && lastc.type === 'Text' && lastc._literal[lastc._literal.length - 1] === ' ') {\n var hardbreak = lastc._literal[lastc._literal.length - 2] === ' ';\n lastc._literal = lastc._literal.replace(reFinalSpace, '');\n block.appendChild(new Node(hardbreak ? 'Hardbreak' : 'Softbreak'));\n } else {\n block.appendChild(new Node('Softbreak'));\n }\n this.match(reInitialSpace); // gobble leading spaces in next line\n return true;\n};\n\n// Attempt to parse a link reference, modifying refmap.\nvar parseReference = function(s, refmap) {\n this.subject = s;\n this.pos = 0;\n var rawlabel;\n var dest;\n var title;\n var matchChars;\n var startpos = this.pos;\n\n // label:\n matchChars = this.parseLinkLabel();\n if (matchChars === 0) {\n return 0;\n } else {\n rawlabel = this.subject.substr(0, matchChars);\n }\n\n // colon:\n if (this.peek() === C_COLON) {\n this.pos++;\n } else {\n this.pos = startpos;\n return 0;\n }\n\n // link url\n this.spnl();\n\n dest = this.parseLinkDestination();\n if (dest === null || dest.length === 0) {\n this.pos = startpos;\n return 0;\n }\n\n var beforetitle = this.pos;\n this.spnl();\n title = this.parseLinkTitle();\n if (title === null) {\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n }\n\n // make sure we're at line end:\n var atLineEnd = true;\n if (this.match(reSpaceAtEndOfLine) === null) {\n if (title === '') {\n atLineEnd = false;\n } else {\n // the potential title we found is not at the line end,\n // but it could still be a legal link reference if we\n // discard the title\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n // and instead check if the link URL is at the line end\n atLineEnd = this.match(reSpaceAtEndOfLine) !== null;\n }\n }\n\n if (!atLineEnd) {\n this.pos = startpos;\n return 0;\n }\n\n var normlabel = normalizeReference(rawlabel);\n if (normlabel === '') {\n // label must contain non-whitespace characters\n this.pos = startpos;\n return 0;\n }\n\n if (!refmap[normlabel]) {\n refmap[normlabel] = { destination: dest, title: title };\n }\n return this.pos - startpos;\n};\n\n// Parse the next inline element in subject, advancing subject position.\n// On success, add the result to block's children and return true.\n// On failure, return false.\nvar parseInline = function(block) {\n var res = false;\n var c = this.peek();\n if (c === -1) {\n return false;\n }\n switch(c) {\n case C_NEWLINE:\n res = this.parseNewline(block);\n break;\n case C_BACKSLASH:\n res = this.parseBackslash(block);\n break;\n case C_BACKTICK:\n res = this.parseBackticks(block);\n break;\n case C_ASTERISK:\n case C_UNDERSCORE:\n res = this.handleDelim(c, block);\n break;\n case C_SINGLEQUOTE:\n case C_DOUBLEQUOTE:\n res = this.options.smart && this.handleDelim(c, block);\n break;\n case C_OPEN_BRACKET:\n res = this.parseOpenBracket(block);\n break;\n case C_BANG:\n res = this.parseBang(block);\n break;\n case C_CLOSE_BRACKET:\n res = this.parseCloseBracket(block);\n break;\n case C_LESSTHAN:\n res = this.parseAutolink(block) || this.parseHtmlTag(block);\n break;\n case C_AMPERSAND:\n res = this.parseEntity(block);\n break;\n default:\n res = this.parseString(block);\n break;\n }\n if (!res) {\n this.pos += 1;\n block.appendChild(text(fromCodePoint(c)));\n }\n\n return true;\n};\n\n// Parse string content in block into inline children,\n// using refmap to resolve references.\nvar parseInlines = function(block) {\n this.subject = block._string_content.trim();\n this.pos = 0;\n this.delimiters = null;\n while (this.parseInline(block)) {\n }\n block._string_content = null; // allow raw string to be garbage collected\n this.processEmphasis(null);\n};\n\n// The InlineParser object.\nfunction InlineParser(options){\n return {\n subject: '',\n delimiters: null, // used by handleDelim method\n pos: 0,\n refmap: {},\n match: match,\n peek: peek,\n spnl: spnl,\n parseBackticks: parseBackticks,\n parseBackslash: parseBackslash,\n parseAutolink: parseAutolink,\n parseHtmlTag: parseHtmlTag,\n scanDelims: scanDelims,\n handleDelim: handleDelim,\n parseLinkTitle: parseLinkTitle,\n parseLinkDestination: parseLinkDestination,\n parseLinkLabel: parseLinkLabel,\n parseOpenBracket: parseOpenBracket,\n parseCloseBracket: parseCloseBracket,\n parseBang: parseBang,\n parseEntity: parseEntity,\n parseString: parseString,\n parseNewline: parseNewline,\n parseReference: parseReference,\n parseInline: parseInline,\n processEmphasis: processEmphasis,\n removeDelimiter: removeDelimiter,\n options: options || {},\n parse: parseInlines\n };\n}\n\nmodule.exports = InlineParser;\n","\"use strict\";\n\n/* The bulk of this code derives from https://github.com/dmoscrop/fold-case\nBut in addition to case-folding, we also normalize whitespace.\n\nfold-case is Copyright Mathias Bynens <https://mathiasbynens.be/>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n/*eslint-disable key-spacing, comma-spacing */\n\nvar regex = /[ \\t\\r\\n]+|[A-Z\\xB5\\xC0-\\xD6\\xD8-\\xDF\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u0149\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u017F\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C5\\u01C7\\u01C8\\u01CA\\u01CB\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F0-\\u01F2\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0345\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03AB\\u03B0\\u03C2\\u03CF-\\u03D1\\u03D5\\u03D6\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F0\\u03F1\\u03F4\\u03F5\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u0587\\u10A0-\\u10C5\\u10C7\\u10CD\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E96-\\u1E9B\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F50\\u1F52\\u1F54\\u1F56\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1F80-\\u1FAF\\u1FB2-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD2\\u1FD3\\u1FD6-\\u1FDB\\u1FE2-\\u1FE4\\u1FE6-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2126\\u212A\\u212B\\u2132\\u2160-\\u216F\\u2183\\u24B6-\\u24CF\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AD\\uA7B0\\uA7B1\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A]|\\uD801[\\uDC00-\\uDC27]|\\uD806[\\uDCA0-\\uDCBF]/g;\n\nvar map = {'A':'a','B':'b','C':'c','D':'d','E':'e','F':'f','G':'g','H':'h','I':'i','J':'j','K':'k','L':'l','M':'m','N':'n','O':'o','P':'p','Q':'q','R':'r','S':'s','T':'t','U':'u','V':'v','W':'w','X':'x','Y':'y','Z':'z','\\xB5':'\\u03BC','\\xC0':'\\xE0','\\xC1':'\\xE1','\\xC2':'\\xE2','\\xC3':'\\xE3','\\xC4':'\\xE4','\\xC5':'\\xE5','\\xC6':'\\xE6','\\xC7':'\\xE7','\\xC8':'\\xE8','\\xC9':'\\xE9','\\xCA':'\\xEA','\\xCB':'\\xEB','\\xCC':'\\xEC','\\xCD':'\\xED','\\xCE':'\\xEE','\\xCF':'\\xEF','\\xD0':'\\xF0','\\xD1':'\\xF1','\\xD2':'\\xF2','\\xD3':'\\xF3','\\xD4':'\\xF4','\\xD5':'\\xF5','\\xD6':'\\xF6','\\xD8':'\\xF8','\\xD9':'\\xF9','\\xDA':'\\xFA','\\xDB':'\\xFB','\\xDC':'\\xFC','\\xDD':'\\xFD','\\xDE':'\\xFE','\\u0100':'\\u0101','\\u0102':'\\u0103','\\u0104':'\\u0105','\\u0106':'\\u0107','\\u0108':'\\u0109','\\u010A':'\\u010B','\\u010C':'\\u010D','\\u010E':'\\u010F','\\u0110':'\\u0111','\\u0112':'\\u0113','\\u0114':'\\u0115','\\u0116':'\\u0117','\\u0118':'\\u0119','\\u011A':'\\u011B','\\u011C':'\\u011D','\\u011E':'\\u011F','\\u0120':'\\u0121','\\u0122':'\\u0123','\\u0124':'\\u0125','\\u0126':'\\u0127','\\u0128':'\\u0129','\\u012A':'\\u012B','\\u012C':'\\u012D','\\u012E':'\\u012F','\\u0132':'\\u0133','\\u0134':'\\u0135','\\u0136':'\\u0137','\\u0139':'\\u013A','\\u013B':'\\u013C','\\u013D':'\\u013E','\\u013F':'\\u0140','\\u0141':'\\u0142','\\u0143':'\\u0144','\\u0145':'\\u0146','\\u0147':'\\u0148','\\u014A':'\\u014B','\\u014C':'\\u014D','\\u014E':'\\u014F','\\u0150':'\\u0151','\\u0152':'\\u0153','\\u0154':'\\u0155','\\u0156':'\\u0157','\\u0158':'\\u0159','\\u015A':'\\u015B','\\u015C':'\\u015D','\\u015E':'\\u015F','\\u0160':'\\u0161','\\u0162':'\\u0163','\\u0164':'\\u0165','\\u0166':'\\u0167','\\u0168':'\\u0169','\\u016A':'\\u016B','\\u016C':'\\u016D','\\u016E':'\\u016F','\\u0170':'\\u0171','\\u0172':'\\u0173','\\u0174':'\\u0175','\\u0176':'\\u0177','\\u0178':'\\xFF','\\u0179':'\\u017A','\\u017B':'\\u017C','\\u017D':'\\u017E','\\u017F':'s','\\u0181':'\\u0253','\\u0182':'\\u0183','\\u0184':'\\u0185','\\u0186':'\\u0254','\\u0187':'\\u0188','\\u0189':'\\u0256','\\u018A':'\\u0257','\\u018B':'\\u018C','\\u018E':'\\u01DD','\\u018F':'\\u0259','\\u0190':'\\u025B','\\u0191':'\\u0192','\\u0193':'\\u0260','\\u0194':'\\u0263','\\u0196':'\\u0269','\\u0197':'\\u0268','\\u0198':'\\u0199','\\u019C':'\\u026F','\\u019D':'\\u0272','\\u019F':'\\u0275','\\u01A0':'\\u01A1','\\u01A2':'\\u01A3','\\u01A4':'\\u01A5','\\u01A6':'\\u0280','\\u01A7':'\\u01A8','\\u01A9':'\\u0283','\\u01AC':'\\u01AD','\\u01AE':'\\u0288','\\u01AF':'\\u01B0','\\u01B1':'\\u028A','\\u01B2':'\\u028B','\\u01B3':'\\u01B4','\\u01B5':'\\u01B6','\\u01B7':'\\u0292','\\u01B8':'\\u01B9','\\u01BC':'\\u01BD','\\u01C4':'\\u01C6','\\u01C5':'\\u01C6','\\u01C7':'\\u01C9','\\u01C8':'\\u01C9','\\u01CA':'\\u01CC','\\u01CB':'\\u01CC','\\u01CD':'\\u01CE','\\u01CF':'\\u01D0','\\u01D1':'\\u01D2','\\u01D3':'\\u01D4','\\u01D5':'\\u01D6','\\u01D7':'\\u01D8','\\u01D9':'\\u01DA','\\u01DB':'\\u01DC','\\u01DE':'\\u01DF','\\u01E0':'\\u01E1','\\u01E2':'\\u01E3','\\u01E4':'\\u01E5','\\u01E6':'\\u01E7','\\u01E8':'\\u01E9','\\u01EA':'\\u01EB','\\u01EC':'\\u01ED','\\u01EE':'\\u01EF','\\u01F1':'\\u01F3','\\u01F2':'\\u01F3','\\u01F4':'\\u01F5','\\u01F6':'\\u0195','\\u01F7':'\\u01BF','\\u01F8':'\\u01F9','\\u01FA':'\\u01FB','\\u01FC':'\\u01FD','\\u01FE':'\\u01FF','\\u0200':'\\u0201','\\u0202':'\\u0203','\\u0204':'\\u0205','\\u0206':'\\u0207','\\u0208':'\\u0209','\\u020A':'\\u020B','\\u020C':'\\u020D','\\u020E':'\\u020F','\\u0210':'\\u0211','\\u0212':'\\u0213','\\u0214':'\\u0215','\\u0216':'\\u0217','\\u0218':'\\u0219','\\u021A':'\\u021B','\\u021C':'\\u021D','\\u021E':'\\u021F','\\u0220':'\\u019E','\\u0222':'\\u0223','\\u0224':'\\u0225','\\u0226':'\\u0227','\\u0228':'\\u0229','\\u022A':'\\u022B','\\u022C':'\\u022D','\\u022E':'\\u022F','\\u0230':'\\u0231','\\u0232':'\\u0233','\\u023A':'\\u2C65','\\u023B':'\\u023C','\\u023D':'\\u019A','\\u023E':'\\u2C66','\\u0241':'\\u0242','\\u0243':'\\u0180','\\u0244':'\\u0289','\\u0245':'\\u028C','\\u0246':'\\u0247','\\u0248':'\\u0249','\\u024A':'\\u024B','\\u024C':'\\u024D','\\u024E':'\\u024F','\\u0345':'\\u03B9','\\u0370':'\\u0371','\\u0372':'\\u0373','\\u0376':'\\u0377','\\u037F':'\\u03F3','\\u0386':'\\u03AC','\\u0388':'\\u03AD','\\u0389':'\\u03AE','\\u038A':'\\u03AF','\\u038C':'\\u03CC','\\u038E':'\\u03CD','\\u038F':'\\u03CE','\\u0391':'\\u03B1','\\u0392':'\\u03B2','\\u0393':'\\u03B3','\\u0394':'\\u03B4','\\u0395':'\\u03B5','\\u0396':'\\u03B6','\\u0397':'\\u03B7','\\u0398':'\\u03B8','\\u0399':'\\u03B9','\\u039A':'\\u03BA','\\u039B':'\\u03BB','\\u039C':'\\u03BC','\\u039D':'\\u03BD','\\u039E':'\\u03BE','\\u039F':'\\u03BF','\\u03A0':'\\u03C0','\\u03A1':'\\u03C1','\\u03A3':'\\u03C3','\\u03A4':'\\u03C4','\\u03A5':'\\u03C5','\\u03A6':'\\u03C6','\\u03A7':'\\u03C7','\\u03A8':'\\u03C8','\\u03A9':'\\u03C9','\\u03AA':'\\u03CA','\\u03AB':'\\u03CB','\\u03C2':'\\u03C3','\\u03CF':'\\u03D7','\\u03D0':'\\u03B2','\\u03D1':'\\u03B8','\\u03D5':'\\u03C6','\\u03D6':'\\u03C0','\\u03D8':'\\u03D9','\\u03DA':'\\u03DB','\\u03DC':'\\u03DD','\\u03DE':'\\u03DF','\\u03E0':'\\u03E1','\\u03E2':'\\u03E3','\\u03E4':'\\u03E5','\\u03E6':'\\u03E7','\\u03E8':'\\u03E9','\\u03EA':'\\u03EB','\\u03EC':'\\u03ED','\\u03EE':'\\u03EF','\\u03F0':'\\u03BA','\\u03F1':'\\u03C1','\\u03F4':'\\u03B8','\\u03F5':'\\u03B5','\\u03F7':'\\u03F8','\\u03F9':'\\u03F2','\\u03FA':'\\u03FB','\\u03FD':'\\u037B','\\u03FE':'\\u037C','\\u03FF':'\\u037D','\\u0400':'\\u0450','\\u0401':'\\u0451','\\u0402':'\\u0452','\\u0403':'\\u0453','\\u0404':'\\u0454','\\u0405':'\\u0455','\\u0406':'\\u0456','\\u0407':'\\u0457','\\u0408':'\\u0458','\\u0409':'\\u0459','\\u040A':'\\u045A','\\u040B':'\\u045B','\\u040C':'\\u045C','\\u040D':'\\u045D','\\u040E':'\\u045E','\\u040F':'\\u045F','\\u0410':'\\u0430','\\u0411':'\\u0431','\\u0412':'\\u0432','\\u0413':'\\u0433','\\u0414':'\\u0434','\\u0415':'\\u0435','\\u0416':'\\u0436','\\u0417':'\\u0437','\\u0418':'\\u0438','\\u0419':'\\u0439','\\u041A':'\\u043A','\\u041B':'\\u043B','\\u041C':'\\u043C','\\u041D':'\\u043D','\\u041E':'\\u043E','\\u041F':'\\u043F','\\u0420':'\\u0440','\\u0421':'\\u0441','\\u0422':'\\u0442','\\u0423':'\\u0443','\\u0424':'\\u0444','\\u0425':'\\u0445','\\u0426':'\\u0446','\\u0427':'\\u0447','\\u0428':'\\u0448','\\u0429':'\\u0449','\\u042A':'\\u044A','\\u042B':'\\u044B','\\u042C':'\\u044C','\\u042D':'\\u044D','\\u042E':'\\u044E','\\u042F':'\\u044F','\\u0460':'\\u0461','\\u0462':'\\u0463','\\u0464':'\\u0465','\\u0466':'\\u0467','\\u0468':'\\u0469','\\u046A':'\\u046B','\\u046C':'\\u046D','\\u046E':'\\u046F','\\u0470':'\\u0471','\\u0472':'\\u0473','\\u0474':'\\u0475','\\u0476':'\\u0477','\\u0478':'\\u0479','\\u047A':'\\u047B','\\u047C':'\\u047D','\\u047E':'\\u047F','\\u0480':'\\u0481','\\u048A':'\\u048B','\\u048C':'\\u048D','\\u048E':'\\u048F','\\u0490':'\\u0491','\\u0492':'\\u0493','\\u0494':'\\u0495','\\u0496':'\\u0497','\\u0498':'\\u0499','\\u049A':'\\u049B','\\u049C':'\\u049D','\\u049E':'\\u049F','\\u04A0':'\\u04A1','\\u04A2':'\\u04A3','\\u04A4':'\\u04A5','\\u04A6':'\\u04A7','\\u04A8':'\\u04A9','\\u04AA':'\\u04AB','\\u04AC':'\\u04AD','\\u04AE':'\\u04AF','\\u04B0':'\\u04B1','\\u04B2':'\\u04B3','\\u04B4':'\\u04B5','\\u04B6':'\\u04B7','\\u04B8':'\\u04B9','\\u04BA':'\\u04BB','\\u04BC':'\\u04BD','\\u04BE':'\\u04BF','\\u04C0':'\\u04CF','\\u04C1':'\\u04C2','\\u04C3':'\\u04C4','\\u04C5':'\\u04C6','\\u04C7':'\\u04C8','\\u04C9':'\\u04CA','\\u04CB':'\\u04CC','\\u04CD':'\\u04CE','\\u04D0':'\\u04D1','\\u04D2':'\\u04D3','\\u04D4':'\\u04D5','\\u04D6':'\\u04D7','\\u04D8':'\\u04D9','\\u04DA':'\\u04DB','\\u04DC':'\\u04DD','\\u04DE':'\\u04DF','\\u04E0':'\\u04E1','\\u04E2':'\\u04E3','\\u04E4':'\\u04E5','\\u04E6':'\\u04E7','\\u04E8':'\\u04E9','\\u04EA':'\\u04EB','\\u04EC':'\\u04ED','\\u04EE':'\\u04EF','\\u04F0':'\\u04F1','\\u04F2':'\\u04F3','\\u04F4':'\\u04F5','\\u04F6':'\\u04F7','\\u04F8':'\\u04F9','\\u04FA':'\\u04FB','\\u04FC':'\\u04FD','\\u04FE':'\\u04FF','\\u0500':'\\u0501','\\u0502':'\\u0503','\\u0504':'\\u0505','\\u0506':'\\u0507','\\u0508':'\\u0509','\\u050A':'\\u050B','\\u050C':'\\u050D','\\u050E':'\\u050F','\\u0510':'\\u0511','\\u0512':'\\u0513','\\u0514':'\\u0515','\\u0516':'\\u0517','\\u0518':'\\u0519','\\u051A':'\\u051B','\\u051C':'\\u051D','\\u051E':'\\u051F','\\u0520':'\\u0521','\\u0522':'\\u0523','\\u0524':'\\u0525','\\u0526':'\\u0527','\\u0528':'\\u0529','\\u052A':'\\u052B','\\u052C':'\\u052D','\\u052E':'\\u052F','\\u0531':'\\u0561','\\u0532':'\\u0562','\\u0533':'\\u0563','\\u0534':'\\u0564','\\u0535':'\\u0565','\\u0536':'\\u0566','\\u0537':'\\u0567','\\u0538':'\\u0568','\\u0539':'\\u0569','\\u053A':'\\u056A','\\u053B':'\\u056B','\\u053C':'\\u056C','\\u053D':'\\u056D','\\u053E':'\\u056E','\\u053F':'\\u056F','\\u0540':'\\u0570','\\u0541':'\\u0571','\\u0542':'\\u0572','\\u0543':'\\u0573','\\u0544':'\\u0574','\\u0545':'\\u0575','\\u0546':'\\u0576','\\u0547':'\\u0577','\\u0548':'\\u0578','\\u0549':'\\u0579','\\u054A':'\\u057A','\\u054B':'\\u057B','\\u054C':'\\u057C','\\u054D':'\\u057D','\\u054E':'\\u057E','\\u054F':'\\u057F','\\u0550':'\\u0580','\\u0551':'\\u0581','\\u0552':'\\u0582','\\u0553':'\\u0583','\\u0554':'\\u0584','\\u0555':'\\u0585','\\u0556':'\\u0586','\\u10A0':'\\u2D00','\\u10A1':'\\u2D01','\\u10A2':'\\u2D02','\\u10A3':'\\u2D03','\\u10A4':'\\u2D04','\\u10A5':'\\u2D05','\\u10A6':'\\u2D06','\\u10A7':'\\u2D07','\\u10A8':'\\u2D08','\\u10A9':'\\u2D09','\\u10AA':'\\u2D0A','\\u10AB':'\\u2D0B','\\u10AC':'\\u2D0C','\\u10AD':'\\u2D0D','\\u10AE':'\\u2D0E','\\u10AF':'\\u2D0F','\\u10B0':'\\u2D10','\\u10B1':'\\u2D11','\\u10B2':'\\u2D12','\\u10B3':'\\u2D13','\\u10B4':'\\u2D14','\\u10B5':'\\u2D15','\\u10B6':'\\u2D16','\\u10B7':'\\u2D17','\\u10B8':'\\u2D18','\\u10B9':'\\u2D19','\\u10BA':'\\u2D1A','\\u10BB':'\\u2D1B','\\u10BC':'\\u2D1C','\\u10BD':'\\u2D1D','\\u10BE':'\\u2D1E','\\u10BF':'\\u2D1F','\\u10C0':'\\u2D20','\\u10C1':'\\u2D21','\\u10C2':'\\u2D22','\\u10C3':'\\u2D23','\\u10C4':'\\u2D24','\\u10C5':'\\u2D25','\\u10C7':'\\u2D27','\\u10CD':'\\u2D2D','\\u1E00':'\\u1E01','\\u1E02':'\\u1E03','\\u1E04':'\\u1E05','\\u1E06':'\\u1E07','\\u1E08':'\\u1E09','\\u1E0A':'\\u1E0B','\\u1E0C':'\\u1E0D','\\u1E0E':'\\u1E0F','\\u1E10':'\\u1E11','\\u1E12':'\\u1E13','\\u1E14':'\\u1E15','\\u1E16':'\\u1E17','\\u1E18':'\\u1E19','\\u1E1A':'\\u1E1B','\\u1E1C':'\\u1E1D','\\u1E1E':'\\u1E1F','\\u1E20':'\\u1E21','\\u1E22':'\\u1E23','\\u1E24':'\\u1E25','\\u1E26':'\\u1E27','\\u1E28':'\\u1E29','\\u1E2A':'\\u1E2B','\\u1E2C':'\\u1E2D','\\u1E2E':'\\u1E2F','\\u1E30':'\\u1E31','\\u1E32':'\\u1E33','\\u1E34':'\\u1E35','\\u1E36':'\\u1E37','\\u1E38':'\\u1E39','\\u1E3A':'\\u1E3B','\\u1E3C':'\\u1E3D','\\u1E3E':'\\u1E3F','\\u1E40':'\\u1E41','\\u1E42':'\\u1E43','\\u1E44':'\\u1E45','\\u1E46':'\\u1E47','\\u1E48':'\\u1E49','\\u1E4A':'\\u1E4B','\\u1E4C':'\\u1E4D','\\u1E4E':'\\u1E4F','\\u1E50':'\\u1E51','\\u1E52':'\\u1E53','\\u1E54':'\\u1E55','\\u1E56':'\\u1E57','\\u1E58':'\\u1E59','\\u1E5A':'\\u1E5B','\\u1E5C':'\\u1E5D','\\u1E5E':'\\u1E5F','\\u1E60':'\\u1E61','\\u1E62':'\\u1E63','\\u1E64':'\\u1E65','\\u1E66':'\\u1E67','\\u1E68':'\\u1E69','\\u1E6A':'\\u1E6B','\\u1E6C':'\\u1E6D','\\u1E6E':'\\u1E6F','\\u1E70':'\\u1E71','\\u1E72':'\\u1E73','\\u1E74':'\\u1E75','\\u1E76':'\\u1E77','\\u1E78':'\\u1E79','\\u1E7A':'\\u1E7B','\\u1E7C':'\\u1E7D','\\u1E7E':'\\u1E7F','\\u1E80':'\\u1E81','\\u1E82':'\\u1E83','\\u1E84':'\\u1E85','\\u1E86':'\\u1E87','\\u1E88':'\\u1E89','\\u1E8A':'\\u1E8B','\\u1E8C':'\\u1E8D','\\u1E8E':'\\u1E8F','\\u1E90':'\\u1E91','\\u1E92':'\\u1E93','\\u1E94':'\\u1E95','\\u1E9B':'\\u1E61','\\u1EA0':'\\u1EA1','\\u1EA2':'\\u1EA3','\\u1EA4':'\\u1EA5','\\u1EA6':'\\u1EA7','\\u1EA8':'\\u1EA9','\\u1EAA':'\\u1EAB','\\u1EAC':'\\u1EAD','\\u1EAE':'\\u1EAF','\\u1EB0':'\\u1EB1','\\u1EB2':'\\u1EB3','\\u1EB4':'\\u1EB5','\\u1EB6':'\\u1EB7','\\u1EB8':'\\u1EB9','\\u1EBA':'\\u1EBB','\\u1EBC':'\\u1EBD','\\u1EBE':'\\u1EBF','\\u1EC0':'\\u1EC1','\\u1EC2':'\\u1EC3','\\u1EC4':'\\u1EC5','\\u1EC6':'\\u1EC7','\\u1EC8':'\\u1EC9','\\u1ECA':'\\u1ECB','\\u1ECC':'\\u1ECD','\\u1ECE':'\\u1ECF','\\u1ED0':'\\u1ED1','\\u1ED2':'\\u1ED3','\\u1ED4':'\\u1ED5','\\u1ED6':'\\u1ED7','\\u1ED8':'\\u1ED9','\\u1EDA':'\\u1EDB','\\u1EDC':'\\u1EDD','\\u1EDE':'\\u1EDF','\\u1EE0':'\\u1EE1','\\u1EE2':'\\u1EE3','\\u1EE4':'\\u1EE5','\\u1EE6':'\\u1EE7','\\u1EE8':'\\u1EE9','\\u1EEA':'\\u1EEB','\\u1EEC':'\\u1EED','\\u1EEE':'\\u1EEF','\\u1EF0':'\\u1EF1','\\u1EF2':'\\u1EF3','\\u1EF4':'\\u1EF5','\\u1EF6':'\\u1EF7','\\u1EF8':'\\u1EF9','\\u1EFA':'\\u1EFB','\\u1EFC':'\\u1EFD','\\u1EFE':'\\u1EFF','\\u1F08':'\\u1F00','\\u1F09':'\\u1F01','\\u1F0A':'\\u1F02','\\u1F0B':'\\u1F03','\\u1F0C':'\\u1F04','\\u1F0D':'\\u1F05','\\u1F0E':'\\u1F06','\\u1F0F':'\\u1F07','\\u1F18':'\\u1F10','\\u1F19':'\\u1F11','\\u1F1A':'\\u1F12','\\u1F1B':'\\u1F13','\\u1F1C':'\\u1F14','\\u1F1D':'\\u1F15','\\u1F28':'\\u1F20','\\u1F29':'\\u1F21','\\u1F2A':'\\u1F22','\\u1F2B':'\\u1F23','\\u1F2C':'\\u1F24','\\u1F2D':'\\u1F25','\\u1F2E':'\\u1F26','\\u1F2F':'\\u1F27','\\u1F38':'\\u1F30','\\u1F39':'\\u1F31','\\u1F3A':'\\u1F32','\\u1F3B':'\\u1F33','\\u1F3C':'\\u1F34','\\u1F3D':'\\u1F35','\\u1F3E':'\\u1F36','\\u1F3F':'\\u1F37','\\u1F48':'\\u1F40','\\u1F49':'\\u1F41','\\u1F4A':'\\u1F42','\\u1F4B':'\\u1F43','\\u1F4C':'\\u1F44','\\u1F4D':'\\u1F45','\\u1F59':'\\u1F51','\\u1F5B':'\\u1F53','\\u1F5D':'\\u1F55','\\u1F5F':'\\u1F57','\\u1F68':'\\u1F60','\\u1F69':'\\u1F61','\\u1F6A':'\\u1F62','\\u1F6B':'\\u1F63','\\u1F6C':'\\u1F64','\\u1F6D':'\\u1F65','\\u1F6E':'\\u1F66','\\u1F6F':'\\u1F67','\\u1FB8':'\\u1FB0','\\u1FB9':'\\u1FB1','\\u1FBA':'\\u1F70','\\u1FBB':'\\u1F71','\\u1FBE':'\\u03B9','\\u1FC8':'\\u1F72','\\u1FC9':'\\u1F73','\\u1FCA':'\\u1F74','\\u1FCB':'\\u1F75','\\u1FD8':'\\u1FD0','\\u1FD9':'\\u1FD1','\\u1FDA':'\\u1F76','\\u1FDB':'\\u1F77','\\u1FE8':'\\u1FE0','\\u1FE9':'\\u1FE1','\\u1FEA':'\\u1F7A','\\u1FEB':'\\u1F7B','\\u1FEC':'\\u1FE5','\\u1FF8':'\\u1F78','\\u1FF9':'\\u1F79','\\u1FFA':'\\u1F7C','\\u1FFB':'\\u1F7D','\\u2126':'\\u03C9','\\u212A':'k','\\u212B':'\\xE5','\\u2132':'\\u214E','\\u2160':'\\u2170','\\u2161':'\\u2171','\\u2162':'\\u2172','\\u2163':'\\u2173','\\u2164':'\\u2174','\\u2165':'\\u2175','\\u2166':'\\u2176','\\u2167':'\\u2177','\\u2168':'\\u2178','\\u2169':'\\u2179','\\u216A':'\\u217A','\\u216B':'\\u217B','\\u216C':'\\u217C','\\u216D':'\\u217D','\\u216E':'\\u217E','\\u216F':'\\u217F','\\u2183':'\\u2184','\\u24B6':'\\u24D0','\\u24B7':'\\u24D1','\\u24B8':'\\u24D2','\\u24B9':'\\u24D3','\\u24BA':'\\u24D4','\\u24BB':'\\u24D5','\\u24BC':'\\u24D6','\\u24BD':'\\u24D7','\\u24BE':'\\u24D8','\\u24BF':'\\u24D9','\\u24C0':'\\u24DA','\\u24C1':'\\u24DB','\\u24C2':'\\u24DC','\\u24C3':'\\u24DD','\\u24C4':'\\u24DE','\\u24C5':'\\u24DF','\\u24C6':'\\u24E0','\\u24C7':'\\u24E1','\\u24C8':'\\u24E2','\\u24C9':'\\u24E3','\\u24CA':'\\u24E4','\\u24CB':'\\u24E5','\\u24CC':'\\u24E6','\\u24CD':'\\u24E7','\\u24CE':'\\u24E8','\\u24CF':'\\u24E9','\\u2C00':'\\u2C30','\\u2C01':'\\u2C31','\\u2C02':'\\u2C32','\\u2C03':'\\u2C33','\\u2C04':'\\u2C34','\\u2C05':'\\u2C35','\\u2C06':'\\u2C36','\\u2C07':'\\u2C37','\\u2C08':'\\u2C38','\\u2C09':'\\u2C39','\\u2C0A':'\\u2C3A','\\u2C0B':'\\u2C3B','\\u2C0C':'\\u2C3C','\\u2C0D':'\\u2C3D','\\u2C0E':'\\u2C3E','\\u2C0F':'\\u2C3F','\\u2C10':'\\u2C40','\\u2C11':'\\u2C41','\\u2C12':'\\u2C42','\\u2C13':'\\u2C43','\\u2C14':'\\u2C44','\\u2C15':'\\u2C45','\\u2C16':'\\u2C46','\\u2C17':'\\u2C47','\\u2C18':'\\u2C48','\\u2C19':'\\u2C49','\\u2C1A':'\\u2C4A','\\u2C1B':'\\u2C4B','\\u2C1C':'\\u2C4C','\\u2C1D':'\\u2C4D','\\u2C1E':'\\u2C4E','\\u2C1F':'\\u2C4F','\\u2C20':'\\u2C50','\\u2C21':'\\u2C51','\\u2C22':'\\u2C52','\\u2C23':'\\u2C53','\\u2C24':'\\u2C54','\\u2C25':'\\u2C55','\\u2C26':'\\u2C56','\\u2C27':'\\u2C57','\\u2C28':'\\u2C58','\\u2C29':'\\u2C59','\\u2C2A':'\\u2C5A','\\u2C2B':'\\u2C5B','\\u2C2C':'\\u2C5C','\\u2C2D':'\\u2C5D','\\u2C2E':'\\u2C5E','\\u2C60':'\\u2C61','\\u2C62':'\\u026B','\\u2C63':'\\u1D7D','\\u2C64':'\\u027D','\\u2C67':'\\u2C68','\\u2C69':'\\u2C6A','\\u2C6B':'\\u2C6C','\\u2C6D':'\\u0251','\\u2C6E':'\\u0271','\\u2C6F':'\\u0250','\\u2C70':'\\u0252','\\u2C72':'\\u2C73','\\u2C75':'\\u2C76','\\u2C7E':'\\u023F','\\u2C7F':'\\u0240','\\u2C80':'\\u2C81','\\u2C82':'\\u2C83','\\u2C84':'\\u2C85','\\u2C86':'\\u2C87','\\u2C88':'\\u2C89','\\u2C8A':'\\u2C8B','\\u2C8C':'\\u2C8D','\\u2C8E':'\\u2C8F','\\u2C90':'\\u2C91','\\u2C92':'\\u2C93','\\u2C94':'\\u2C95','\\u2C96':'\\u2C97','\\u2C98':'\\u2C99','\\u2C9A':'\\u2C9B','\\u2C9C':'\\u2C9D','\\u2C9E':'\\u2C9F','\\u2CA0':'\\u2CA1','\\u2CA2':'\\u2CA3','\\u2CA4':'\\u2CA5','\\u2CA6':'\\u2CA7','\\u2CA8':'\\u2CA9','\\u2CAA':'\\u2CAB','\\u2CAC':'\\u2CAD','\\u2CAE':'\\u2CAF','\\u2CB0':'\\u2CB1','\\u2CB2':'\\u2CB3','\\u2CB4':'\\u2CB5','\\u2CB6':'\\u2CB7','\\u2CB8':'\\u2CB9','\\u2CBA':'\\u2CBB','\\u2CBC':'\\u2CBD','\\u2CBE':'\\u2CBF','\\u2CC0':'\\u2CC1','\\u2CC2':'\\u2CC3','\\u2CC4':'\\u2CC5','\\u2CC6':'\\u2CC7','\\u2CC8':'\\u2CC9','\\u2CCA':'\\u2CCB','\\u2CCC':'\\u2CCD','\\u2CCE':'\\u2CCF','\\u2CD0':'\\u2CD1','\\u2CD2':'\\u2CD3','\\u2CD4':'\\u2CD5','\\u2CD6':'\\u2CD7','\\u2CD8':'\\u2CD9','\\u2CDA':'\\u2CDB','\\u2CDC':'\\u2CDD','\\u2CDE':'\\u2CDF','\\u2CE0':'\\u2CE1','\\u2CE2':'\\u2CE3','\\u2CEB':'\\u2CEC','\\u2CED':'\\u2CEE','\\u2CF2':'\\u2CF3','\\uA640':'\\uA641','\\uA642':'\\uA643','\\uA644':'\\uA645','\\uA646':'\\uA647','\\uA648':'\\uA649','\\uA64A':'\\uA64B','\\uA64C':'\\uA64D','\\uA64E':'\\uA64F','\\uA650':'\\uA651','\\uA652':'\\uA653','\\uA654':'\\uA655','\\uA656':'\\uA657','\\uA658':'\\uA659','\\uA65A':'\\uA65B','\\uA65C':'\\uA65D','\\uA65E':'\\uA65F','\\uA660':'\\uA661','\\uA662':'\\uA663','\\uA664':'\\uA665','\\uA666':'\\uA667','\\uA668':'\\uA669','\\uA66A':'\\uA66B','\\uA66C':'\\uA66D','\\uA680':'\\uA681','\\uA682':'\\uA683','\\uA684':'\\uA685','\\uA686':'\\uA687','\\uA688':'\\uA689','\\uA68A':'\\uA68B','\\uA68C':'\\uA68D','\\uA68E':'\\uA68F','\\uA690':'\\uA691','\\uA692':'\\uA693','\\uA694':'\\uA695','\\uA696':'\\uA697','\\uA698':'\\uA699','\\uA69A':'\\uA69B','\\uA722':'\\uA723','\\uA724':'\\uA725','\\uA726':'\\uA727','\\uA728':'\\uA729','\\uA72A':'\\uA72B','\\uA72C':'\\uA72D','\\uA72E':'\\uA72F','\\uA732':'\\uA733','\\uA734':'\\uA735','\\uA736':'\\uA737','\\uA738':'\\uA739','\\uA73A':'\\uA73B','\\uA73C':'\\uA73D','\\uA73E':'\\uA73F','\\uA740':'\\uA741','\\uA742':'\\uA743','\\uA744':'\\uA745','\\uA746':'\\uA747','\\uA748':'\\uA749','\\uA74A':'\\uA74B','\\uA74C':'\\uA74D','\\uA74E':'\\uA74F','\\uA750':'\\uA751','\\uA752':'\\uA753','\\uA754':'\\uA755','\\uA756':'\\uA757','\\uA758':'\\uA759','\\uA75A':'\\uA75B','\\uA75C':'\\uA75D','\\uA75E':'\\uA75F','\\uA760':'\\uA761','\\uA762':'\\uA763','\\uA764':'\\uA765','\\uA766':'\\uA767','\\uA768':'\\uA769','\\uA76A':'\\uA76B','\\uA76C':'\\uA76D','\\uA76E':'\\uA76F','\\uA779':'\\uA77A','\\uA77B':'\\uA77C','\\uA77D':'\\u1D79','\\uA77E':'\\uA77F','\\uA780':'\\uA781','\\uA782':'\\uA783','\\uA784':'\\uA785','\\uA786':'\\uA787','\\uA78B':'\\uA78C','\\uA78D':'\\u0265','\\uA790':'\\uA791','\\uA792':'\\uA793','\\uA796':'\\uA797','\\uA798':'\\uA799','\\uA79A':'\\uA79B','\\uA79C':'\\uA79D','\\uA79E':'\\uA79F','\\uA7A0':'\\uA7A1','\\uA7A2':'\\uA7A3','\\uA7A4':'\\uA7A5','\\uA7A6':'\\uA7A7','\\uA7A8':'\\uA7A9','\\uA7AA':'\\u0266','\\uA7AB':'\\u025C','\\uA7AC':'\\u0261','\\uA7AD':'\\u026C','\\uA7B0':'\\u029E','\\uA7B1':'\\u0287','\\uFF21':'\\uFF41','\\uFF22':'\\uFF42','\\uFF23':'\\uFF43','\\uFF24':'\\uFF44','\\uFF25':'\\uFF45','\\uFF26':'\\uFF46','\\uFF27':'\\uFF47','\\uFF28':'\\uFF48','\\uFF29':'\\uFF49','\\uFF2A':'\\uFF4A','\\uFF2B':'\\uFF4B','\\uFF2C':'\\uFF4C','\\uFF2D':'\\uFF4D','\\uFF2E':'\\uFF4E','\\uFF2F':'\\uFF4F','\\uFF30':'\\uFF50','\\uFF31':'\\uFF51','\\uFF32':'\\uFF52','\\uFF33':'\\uFF53','\\uFF34':'\\uFF54','\\uFF35':'\\uFF55','\\uFF36':'\\uFF56','\\uFF37':'\\uFF57','\\uFF38':'\\uFF58','\\uFF39':'\\uFF59','\\uFF3A':'\\uFF5A','\\uD801\\uDC00':'\\uD801\\uDC28','\\uD801\\uDC01':'\\uD801\\uDC29','\\uD801\\uDC02':'\\uD801\\uDC2A','\\uD801\\uDC03':'\\uD801\\uDC2B','\\uD801\\uDC04':'\\uD801\\uDC2C','\\uD801\\uDC05':'\\uD801\\uDC2D','\\uD801\\uDC06':'\\uD801\\uDC2E','\\uD801\\uDC07':'\\uD801\\uDC2F','\\uD801\\uDC08':'\\uD801\\uDC30','\\uD801\\uDC09':'\\uD801\\uDC31','\\uD801\\uDC0A':'\\uD801\\uDC32','\\uD801\\uDC0B':'\\uD801\\uDC33','\\uD801\\uDC0C':'\\uD801\\uDC34','\\uD801\\uDC0D':'\\uD801\\uDC35','\\uD801\\uDC0E':'\\uD801\\uDC36','\\uD801\\uDC0F':'\\uD801\\uDC37','\\uD801\\uDC10':'\\uD801\\uDC38','\\uD801\\uDC11':'\\uD801\\uDC39','\\uD801\\uDC12':'\\uD801\\uDC3A','\\uD801\\uDC13':'\\uD801\\uDC3B','\\uD801\\uDC14':'\\uD801\\uDC3C','\\uD801\\uDC15':'\\uD801\\uDC3D','\\uD801\\uDC16':'\\uD801\\uDC3E','\\uD801\\uDC17':'\\uD801\\uDC3F','\\uD801\\uDC18':'\\uD801\\uDC40','\\uD801\\uDC19':'\\uD801\\uDC41','\\uD801\\uDC1A':'\\uD801\\uDC42','\\uD801\\uDC1B':'\\uD801\\uDC43','\\uD801\\uDC1C':'\\uD801\\uDC44','\\uD801\\uDC1D':'\\uD801\\uDC45','\\uD801\\uDC1E':'\\uD801\\uDC46','\\uD801\\uDC1F':'\\uD801\\uDC47','\\uD801\\uDC20':'\\uD801\\uDC48','\\uD801\\uDC21':'\\uD801\\uDC49','\\uD801\\uDC22':'\\uD801\\uDC4A','\\uD801\\uDC23':'\\uD801\\uDC4B','\\uD801\\uDC24':'\\uD801\\uDC4C','\\uD801\\uDC25':'\\uD801\\uDC4D','\\uD801\\uDC26':'\\uD801\\uDC4E','\\uD801\\uDC27':'\\uD801\\uDC4F','\\uD806\\uDCA0':'\\uD806\\uDCC0','\\uD806\\uDCA1':'\\uD806\\uDCC1','\\uD806\\uDCA2':'\\uD806\\uDCC2','\\uD806\\uDCA3':'\\uD806\\uDCC3','\\uD806\\uDCA4':'\\uD806\\uDCC4','\\uD806\\uDCA5':'\\uD806\\uDCC5','\\uD806\\uDCA6':'\\uD806\\uDCC6','\\uD806\\uDCA7':'\\uD806\\uDCC7','\\uD806\\uDCA8':'\\uD806\\uDCC8','\\uD806\\uDCA9':'\\uD806\\uDCC9','\\uD806\\uDCAA':'\\uD806\\uDCCA','\\uD806\\uDCAB':'\\uD806\\uDCCB','\\uD806\\uDCAC':'\\uD806\\uDCCC','\\uD806\\uDCAD':'\\uD806\\uDCCD','\\uD806\\uDCAE':'\\uD806\\uDCCE','\\uD806\\uDCAF':'\\uD806\\uDCCF','\\uD806\\uDCB0':'\\uD806\\uDCD0','\\uD806\\uDCB1':'\\uD806\\uDCD1','\\uD806\\uDCB2':'\\uD806\\uDCD2','\\uD806\\uDCB3':'\\uD806\\uDCD3','\\uD806\\uDCB4':'\\uD806\\uDCD4','\\uD806\\uDCB5':'\\uD806\\uDCD5','\\uD806\\uDCB6':'\\uD806\\uDCD6','\\uD806\\uDCB7':'\\uD806\\uDCD7','\\uD806\\uDCB8':'\\uD806\\uDCD8','\\uD806\\uDCB9':'\\uD806\\uDCD9','\\uD806\\uDCBA':'\\uD806\\uDCDA','\\uD806\\uDCBB':'\\uD806\\uDCDB','\\uD806\\uDCBC':'\\uD806\\uDCDC','\\uD806\\uDCBD':'\\uD806\\uDCDD','\\uD806\\uDCBE':'\\uD806\\uDCDE','\\uD806\\uDCBF':'\\uD806\\uDCDF','\\xDF':'ss','\\u0130':'i\\u0307','\\u0149':'\\u02BCn','\\u01F0':'j\\u030C','\\u0390':'\\u03B9\\u0308\\u0301','\\u03B0':'\\u03C5\\u0308\\u0301','\\u0587':'\\u0565\\u0582','\\u1E96':'h\\u0331','\\u1E97':'t\\u0308','\\u1E98':'w\\u030A','\\u1E99':'y\\u030A','\\u1E9A':'a\\u02BE','\\u1E9E':'ss','\\u1F50':'\\u03C5\\u0313','\\u1F52':'\\u03C5\\u0313\\u0300','\\u1F54':'\\u03C5\\u0313\\u0301','\\u1F56':'\\u03C5\\u0313\\u0342','\\u1F80':'\\u1F00\\u03B9','\\u1F81':'\\u1F01\\u03B9','\\u1F82':'\\u1F02\\u03B9','\\u1F83':'\\u1F03\\u03B9','\\u1F84':'\\u1F04\\u03B9','\\u1F85':'\\u1F05\\u03B9','\\u1F86':'\\u1F06\\u03B9','\\u1F87':'\\u1F07\\u03B9','\\u1F88':'\\u1F00\\u03B9','\\u1F89':'\\u1F01\\u03B9','\\u1F8A':'\\u1F02\\u03B9','\\u1F8B':'\\u1F03\\u03B9','\\u1F8C':'\\u1F04\\u03B9','\\u1F8D':'\\u1F05\\u03B9','\\u1F8E':'\\u1F06\\u03B9','\\u1F8F':'\\u1F07\\u03B9','\\u1F90':'\\u1F20\\u03B9','\\u1F91':'\\u1F21\\u03B9','\\u1F92':'\\u1F22\\u03B9','\\u1F93':'\\u1F23\\u03B9','\\u1F94':'\\u1F24\\u03B9','\\u1F95':'\\u1F25\\u03B9','\\u1F96':'\\u1F26\\u03B9','\\u1F97':'\\u1F27\\u03B9','\\u1F98':'\\u1F20\\u03B9','\\u1F99':'\\u1F21\\u03B9','\\u1F9A':'\\u1F22\\u03B9','\\u1F9B':'\\u1F23\\u03B9','\\u1F9C':'\\u1F24\\u03B9','\\u1F9D':'\\u1F25\\u03B9','\\u1F9E':'\\u1F26\\u03B9','\\u1F9F':'\\u1F27\\u03B9','\\u1FA0':'\\u1F60\\u03B9','\\u1FA1':'\\u1F61\\u03B9','\\u1FA2':'\\u1F62\\u03B9','\\u1FA3':'\\u1F63\\u03B9','\\u1FA4':'\\u1F64\\u03B9','\\u1FA5':'\\u1F65\\u03B9','\\u1FA6':'\\u1F66\\u03B9','\\u1FA7':'\\u1F67\\u03B9','\\u1FA8':'\\u1F60\\u03B9','\\u1FA9':'\\u1F61\\u03B9','\\u1FAA':'\\u1F62\\u03B9','\\u1FAB':'\\u1F63\\u03B9','\\u1FAC':'\\u1F64\\u03B9','\\u1FAD':'\\u1F65\\u03B9','\\u1FAE':'\\u1F66\\u03B9','\\u1FAF':'\\u1F67\\u03B9','\\u1FB2':'\\u1F70\\u03B9','\\u1FB3':'\\u03B1\\u03B9','\\u1FB4':'\\u03AC\\u03B9','\\u1FB6':'\\u03B1\\u0342','\\u1FB7':'\\u03B1\\u0342\\u03B9','\\u1FBC':'\\u03B1\\u03B9','\\u1FC2':'\\u1F74\\u03B9','\\u1FC3':'\\u03B7\\u03B9','\\u1FC4':'\\u03AE\\u03B9','\\u1FC6':'\\u03B7\\u0342','\\u1FC7':'\\u03B7\\u0342\\u03B9','\\u1FCC':'\\u03B7\\u03B9','\\u1FD2':'\\u03B9\\u0308\\u0300','\\u1FD3':'\\u03B9\\u0308\\u0301','\\u1FD6':'\\u03B9\\u0342','\\u1FD7':'\\u03B9\\u0308\\u0342','\\u1FE2':'\\u03C5\\u0308\\u0300','\\u1FE3':'\\u03C5\\u0308\\u0301','\\u1FE4':'\\u03C1\\u0313','\\u1FE6':'\\u03C5\\u0342','\\u1FE7':'\\u03C5\\u0308\\u0342','\\u1FF2':'\\u1F7C\\u03B9','\\u1FF3':'\\u03C9\\u03B9','\\u1FF4':'\\u03CE\\u03B9','\\u1FF6':'\\u03C9\\u0342','\\u1FF7':'\\u03C9\\u0342\\u03B9','\\u1FFC':'\\u03C9\\u03B9','\\uFB00':'ff','\\uFB01':'fi','\\uFB02':'fl','\\uFB03':'ffi','\\uFB04':'ffl','\\uFB05':'st','\\uFB06':'st','\\uFB13':'\\u0574\\u0576','\\uFB14':'\\u0574\\u0565','\\uFB15':'\\u0574\\u056B','\\uFB16':'\\u057E\\u0576','\\uFB17':'\\u0574\\u056D'};\n\n// Normalize reference label: collapse internal whitespace\n// to single space, remove leading/trailing whitespace, case fold.\nmodule.exports = function(string) {\n return string.slice(1, string.length - 1).trim().replace(regex, function($0) {\n // Note: there is no need to check `hasOwnProperty($0)` here.\n // If character not found in lookup table, it must be whitespace.\n return map[$0] || ' ';\n });\n};\n","\"use strict\";\n\n// derived from https://github.com/mathiasbynens/String.fromCodePoint\n/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (String.fromCodePoint) {\n module.exports = function (_) {\n try {\n return String.fromCodePoint(_);\n } catch (e) {\n if (e instanceof RangeError) {\n return String.fromCharCode(0xFFFD);\n }\n throw e;\n }\n };\n\n} else {\n\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n var fromCodePoint = function() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n return String.fromCharCode(0xFFFD);\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint);\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n module.exports = fromCodePoint;\n}\n","/*! http://mths.be/repeat v0.2.0 by @mathias */\nif (!String.prototype.repeat) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar repeat = function(count) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\t// `ToInteger`\n\t\t\tvar n = count ? Number(count) : 0;\n\t\t\tif (n != n) { // better `isNaN`\n\t\t\t\tn = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices\n\t\t\tif (n < 0 || n == Infinity) {\n\t\t\t\tthrow RangeError();\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (n) {\n\t\t\t\tif (n % 2 == 1) {\n\t\t\t\t\tresult += string;\n\t\t\t\t}\n\t\t\t\tif (n > 1) {\n\t\t\t\t\tstring += string;\n\t\t\t\t}\n\t\t\t\tn >>= 1;\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'repeat', {\n\t\t\t\t'value': repeat,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.repeat = repeat;\n\t\t}\n\t}());\n}\n","\"use strict\";\n\nvar escapeXml = require('./common').escapeXml;\n\n// Helper function to produce an HTML tag.\nvar tag = function(name, attrs, selfclosing) {\n var result = '<' + name;\n if (attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n result += ' ' + attrib[0] + '=\"' + attrib[1] + '\"';\n i++;\n }\n }\n if (selfclosing) {\n result += ' /';\n }\n\n result += '>';\n return result;\n};\n\nvar reHtmlTag = /\\<[^>]*\\>/;\nvar reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i;\nvar reSafeDataProtocol = /^data:image\\/(?:png|gif|jpeg|webp)/i;\n\nvar potentiallyUnsafe = function(url) {\n return reUnsafeProtocol.test(url) &&\n !reSafeDataProtocol.test(url);\n};\n\nvar renderNodes = function(block) {\n\n var attrs;\n var info_words;\n var tagname;\n var walker = block.walker();\n var event, node, entering;\n var buffer = \"\";\n var lastOut = \"\\n\";\n var disableTags = 0;\n var grandparent;\n var out = function(s) {\n if (disableTags > 0) {\n buffer += s.replace(reHtmlTag, '');\n } else {\n buffer += s;\n }\n lastOut = s;\n };\n var esc = this.escape;\n var cr = function() {\n if (lastOut !== '\\n') {\n buffer += '\\n';\n lastOut = '\\n';\n }\n };\n\n var options = this.options;\n\n if (options.time) { console.time(\"rendering\"); }\n\n while ((event = walker.next())) {\n entering = event.entering;\n node = event.node;\n\n attrs = [];\n if (options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n attrs.push(['data-sourcepos', String(pos[0][0]) + ':' +\n String(pos[0][1]) + '-' + String(pos[1][0]) + ':' +\n String(pos[1][1])]);\n }\n }\n\n switch (node.type) {\n case 'Text':\n out(esc(node.literal, false));\n break;\n\n case 'Softbreak':\n out(this.softbreak);\n break;\n\n case 'Hardbreak':\n out(tag('br', [], true));\n cr();\n break;\n\n case 'Emph':\n out(tag(entering ? 'em' : '/em'));\n break;\n\n case 'Strong':\n out(tag(entering ? 'strong' : '/strong'));\n break;\n\n case 'HtmlInline':\n if (options.safe) {\n out('<!-- raw HTML omitted -->');\n } else {\n out(node.literal);\n }\n break;\n\n case 'CustomInline':\n if (entering && node.onEnter) {\n out(node.onEnter);\n } else if (!entering && node.onExit) {\n out(node.onExit);\n }\n break;\n\n case 'Link':\n if (entering) {\n if (!(options.safe && potentiallyUnsafe(node.destination))) {\n attrs.push(['href', esc(node.destination, true)]);\n }\n if (node.title) {\n attrs.push(['title', esc(node.title, true)]);\n }\n out(tag('a', attrs));\n } else {\n out(tag('/a'));\n }\n break;\n\n case 'Image':\n if (entering) {\n if (disableTags === 0) {\n if (options.safe &&\n potentiallyUnsafe(node.destination)) {\n out('<img src=\"\" alt=\"');\n } else {\n out('<img src=\"' + esc(node.destination, true) +\n '\" alt=\"');\n }\n }\n disableTags += 1;\n } else {\n disableTags -= 1;\n if (disableTags === 0) {\n if (node.title) {\n out('\" title=\"' + esc(node.title, true));\n }\n out('\" />');\n }\n }\n break;\n\n case 'Code':\n out(tag('code') + esc(node.literal, false) + tag('/code'));\n break;\n\n case 'Document':\n break;\n\n case 'Paragraph':\n grandparent = node.parent.parent;\n if (grandparent !== null &&\n grandparent.type === 'List') {\n if (grandparent.listTight) {\n break;\n }\n }\n if (entering) {\n cr();\n out(tag('p', attrs));\n } else {\n out(tag('/p'));\n cr();\n }\n break;\n\n case 'BlockQuote':\n if (entering) {\n cr();\n out(tag('blockquote', attrs));\n cr();\n } else {\n cr();\n out(tag('/blockquote'));\n cr();\n }\n break;\n\n case 'Item':\n if (entering) {\n out(tag('li', attrs));\n } else {\n out(tag('/li'));\n cr();\n }\n break;\n\n case 'List':\n tagname = node.listType === 'Bullet' ? 'ul' : 'ol';\n if (entering) {\n var start = node.listStart;\n if (start !== null && start !== 1) {\n attrs.push(['start', start.toString()]);\n }\n cr();\n out(tag(tagname, attrs));\n cr();\n } else {\n cr();\n out(tag('/' + tagname));\n cr();\n }\n break;\n\n case 'Heading':\n tagname = 'h' + node.level;\n if (entering) {\n cr();\n out(tag(tagname, attrs));\n } else {\n out(tag('/' + tagname));\n cr();\n }\n break;\n\n case 'CodeBlock':\n info_words = node.info ? node.info.split(/\\s+/) : [];\n if (info_words.length > 0 && info_words[0].length > 0) {\n attrs.push(['class', 'language-' + esc(info_words[0], true)]);\n }\n cr();\n out(tag('pre') + tag('code', attrs));\n out(esc(node.literal, false));\n out(tag('/code') + tag('/pre'));\n cr();\n break;\n\n case 'HtmlBlock':\n cr();\n if (options.safe) {\n out('<!-- raw HTML omitted -->');\n } else {\n out(node.literal);\n }\n cr();\n break;\n\n case 'CustomBlock':\n cr();\n if (entering && node.onEnter) {\n out(node.onEnter);\n } else if (!entering && node.onExit) {\n out(node.onExit);\n }\n cr();\n break;\n\n case 'ThematicBreak':\n cr();\n out(tag('hr', attrs, true));\n cr();\n break;\n\n default:\n throw \"Unknown node type \" + node.type;\n }\n\n }\n if (options.time) { console.timeEnd(\"rendering\"); }\n return buffer;\n};\n\n// The HtmlRenderer object.\nfunction HtmlRenderer(options){\n return {\n // default options:\n softbreak: '\\n', // by default, soft breaks are rendered as newlines in HTML\n // set to \"<br />\" to make them hard breaks\n // set to \" \" if you want to ignore line wrapping in source\n escape: escapeXml,\n options: options || {},\n render: renderNodes\n };\n}\n\nmodule.exports = HtmlRenderer;\n","\"use strict\";\n\nvar escapeXml = require('./common').escapeXml;\n\n// Helper function to produce an XML tag.\nvar tag = function(name, attrs, selfclosing) {\n var result = '<' + name;\n if (attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n result += ' ' + attrib[0] + '=\"' + attrib[1] + '\"';\n i++;\n }\n }\n if (selfclosing) {\n result += ' /';\n }\n\n result += '>';\n return result;\n};\n\nvar reXMLTag = /\\<[^>]*\\>/;\n\nvar toTagName = function(s) {\n return s.replace(/([a-z])([A-Z])/g, \"$1_$2\").toLowerCase();\n};\n\nvar renderNodes = function(block) {\n\n var attrs;\n var tagname;\n var walker = block.walker();\n var event, node, entering;\n var buffer = \"\";\n var lastOut = \"\\n\";\n var disableTags = 0;\n var indentLevel = 0;\n var indent = ' ';\n var container;\n var selfClosing;\n var nodetype;\n\n var out = function(s) {\n if (disableTags > 0) {\n buffer += s.replace(reXMLTag, '');\n } else {\n buffer += s;\n }\n lastOut = s;\n };\n var esc = this.escape;\n var cr = function() {\n if (lastOut !== '\\n') {\n buffer += '\\n';\n lastOut = '\\n';\n for (var i = indentLevel; i > 0; i--) {\n buffer += indent;\n }\n }\n };\n\n var options = this.options;\n\n if (options.time) { console.time(\"rendering\"); }\n\n buffer += '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n buffer += '<!DOCTYPE CommonMark SYSTEM \"CommonMark.dtd\">\\n';\n\n while ((event = walker.next())) {\n entering = event.entering;\n node = event.node;\n nodetype = node.type;\n\n container = node.isContainer;\n selfClosing = nodetype === 'ThematicBreak' || nodetype === 'Hardbreak' ||\n nodetype === 'Softbreak';\n tagname = toTagName(nodetype);\n\n if (entering) {\n\n attrs = [];\n\n switch (nodetype) {\n case 'Document':\n attrs.push(['xmlns', 'http://commonmark.org/xml/1.0']);\n break;\n case 'List':\n if (node.listType !== null) {\n attrs.push(['type', node.listType.toLowerCase()]);\n }\n if (node.listStart !== null) {\n attrs.push(['start', String(node.listStart)]);\n }\n if (node.listTight !== null) {\n attrs.push(['tight', (node.listTight ? 'true' : 'false')]);\n }\n var delim = node.listDelimiter;\n if (delim !== null) {\n var delimword = '';\n if (delim === '.') {\n delimword = 'period';\n } else {\n delimword = 'paren';\n }\n attrs.push(['delimiter', delimword]);\n }\n break;\n case 'CodeBlock':\n if (node.info) {\n attrs.push(['info', node.info]);\n }\n break;\n case 'Heading':\n attrs.push(['level', String(node.level)]);\n break;\n case 'Link':\n case 'Image':\n attrs.push(['destination', node.destination]);\n attrs.push(['title', node.title]);\n break;\n case 'CustomInline':\n case 'CustomBlock':\n attrs.push(['on_enter', node.onEnter]);\n attrs.push(['on_exit', node.onExit]);\n break;\n default:\n break;\n }\n if (options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n attrs.push(['sourcepos', String(pos[0][0]) + ':' +\n String(pos[0][1]) + '-' + String(pos[1][0]) + ':' +\n String(pos[1][1])]);\n }\n }\n\n cr();\n out(tag(tagname, attrs, selfClosing));\n if (container) {\n indentLevel += 1;\n } else if (!container && !selfClosing) {\n var lit = node.literal;\n if (lit) {\n out(esc(lit));\n }\n out(tag('/' + tagname));\n }\n } else {\n indentLevel -= 1;\n cr();\n out(tag('/' + tagname));\n }\n\n\n }\n if (options.time) { console.timeEnd(\"rendering\"); }\n buffer += '\\n';\n return buffer;\n};\n\n// The XmlRenderer object.\nfunction XmlRenderer(options){\n return {\n // default options:\n softbreak: '\\n', // by default, soft breaks are rendered as newlines in HTML\n // set to \"<br />\" to make them hard breaks\n // set to \" \" if you want to ignore line wrapping in source\n escape: escapeXml,\n options: options || {},\n render: renderNodes\n };\n}\n\nmodule.exports = XmlRenderer;\n","'use strict';\n\nvar React = require('react');\nvar assign = require('lodash.assign');\nvar isPlainObject = require('lodash.isplainobject');\nvar xssFilters = require('xss-filters');\nvar pascalCase = require('pascalcase');\n\nvar typeAliases = {\n blockquote: 'block_quote',\n thematicbreak: 'thematic_break',\n htmlblock: 'html_block',\n htmlinline: 'html_inline',\n codeblock: 'code_block',\n hardbreak: 'linebreak'\n};\n\nvar defaultRenderers = {\n block_quote: 'blockquote', // eslint-disable-line camelcase\n emph: 'em',\n linebreak: 'br',\n image: 'img',\n item: 'li',\n link: 'a',\n paragraph: 'p',\n strong: 'strong',\n thematic_break: 'hr', // eslint-disable-line camelcase\n\n html_block: HtmlRenderer, // eslint-disable-line camelcase\n html_inline: HtmlRenderer, // eslint-disable-line camelcase\n\n list: function List(props) {\n var tag = props.type.toLowerCase() === 'bullet' ? 'ul' : 'ol';\n var attrs = getCoreProps(props);\n\n if (props.start !== null && props.start !== 1) {\n attrs.start = props.start.toString();\n }\n\n return createElement(tag, attrs, props.children);\n },\n code_block: function CodeBlock(props) { // eslint-disable-line camelcase\n var className = props.language && 'language-' + props.language;\n var code = createElement('code', { className: className }, props.literal);\n return createElement('pre', getCoreProps(props), code);\n },\n code: function Code(props) {\n return createElement('code', getCoreProps(props), props.children);\n },\n heading: function Heading(props) {\n return createElement('h' + props.level, getCoreProps(props), props.children);\n },\n\n text: null,\n softbreak: null\n};\n\nvar coreTypes = Object.keys(defaultRenderers);\n\nfunction getCoreProps(props) {\n var propKeys = Object.keys(props);\n\n var dataPropKeys = propKeys.filter(function(propKey) {\n return propKey.match(/data-.*/g);\n });\n\n var base = {\n key: props.nodeKey,\n className: props.className\n };\n\n var dataAttributes = dataPropKeys.reduce(function(prev, dataPropKey) {\n var attributes = {};\n attributes[dataPropKey] = props[dataPropKey];\n\n return assign(attributes, prev);\n }, {});\n\n return assign(dataAttributes, base);\n}\n\nfunction normalizeTypeName(typeName) {\n var norm = typeName.toLowerCase();\n var type = typeAliases[norm] || norm;\n return typeof defaultRenderers[type] !== 'undefined' ? type : typeName;\n}\n\nfunction normalizeRenderers(renderers) {\n return Object.keys(renderers || {}).reduce(function(normalized, type) {\n var norm = normalizeTypeName(type);\n normalized[norm] = renderers[type];\n return normalized;\n }, {});\n}\n\nfunction HtmlRenderer(props) {\n var coreProps = getCoreProps(props);\n var nodeProps = props.escapeHtml ? {} : { dangerouslySetInnerHTML: { __html: props.literal } };\n var children = props.escapeHtml ? [props.literal] : null;\n\n if (props.escapeHtml || !props.skipHtml) {\n var actualProps = assign(coreProps, nodeProps);\n return createElement(props.isBlock ? 'div' : 'span', actualProps, children);\n }\n}\n\nfunction isGrandChildOfList(node) {\n var grandparent = node.parent.parent;\n return (\n grandparent &&\n grandparent.type.toLowerCase() === 'list' &&\n grandparent.listTight\n );\n}\n\nfunction addChild(node, child) {\n var parent = node;\n do {\n parent = parent.parent;\n } while (!parent.react);\n\n parent.react.children.push(child);\n}\n\nfunction createElement(tagName, props, children) {\n var nodeChildren = Array.isArray(children) && children.reduce(reduceChildren, []);\n var args = [tagName, props].concat(nodeChildren || children);\n return React.createElement.apply(React, args);\n}\n\nfunction reduceChildren(children, child) {\n var lastIndex = children.length - 1;\n if (typeof child === 'string' && typeof children[lastIndex] === 'string') {\n children[lastIndex] += child;\n } else {\n children.push(child);\n }\n\n return children;\n}\n\nfunction flattenPosition(pos) {\n return [\n pos[0][0], ':', pos[0][1], '-',\n pos[1][0], ':', pos[1][1]\n ].map(String).join('');\n}\n\n// For some nodes, we want to include more props than for others\nfunction getNodeProps(node, key, opts, renderer) {\n var props = { key: key }, undef;\n\n // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n if (opts.sourcePos && node.sourcepos) {\n props['data-sourcepos'] = flattenPosition(node.sourcepos);\n }\n\n var type = normalizeTypeName(node.type);\n\n switch (type) {\n case 'html_inline':\n case 'html_block':\n props.isBlock = type === 'html_block';\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n break;\n case 'code_block':\n var codeInfo = node.info ? node.info.split(/ +/) : [];\n if (codeInfo.length > 0 && codeInfo[0].length > 0) {\n props.language = codeInfo[0];\n props.codeinfo = codeInfo;\n }\n break;\n case 'code':\n props.children = node.literal;\n props.inline = true;\n break;\n case 'heading':\n props.level = node.level;\n break;\n case 'softbreak':\n props.softBreak = opts.softBreak;\n break;\n case 'link':\n props.href = opts.transformLinkUri ? opts.transformLinkUri(node.destination) : node.destination;\n props.title = node.title || undef;\n if (opts.linkTarget) {\n props.target = opts.linkTarget;\n }\n break;\n case 'image':\n props.src = opts.transformImageUri ? opts.transformImageUri(node.destination) : node.destination;\n props.title = node.title || undef;\n\n // Commonmark treats image description as children. We just want the text\n props.alt = node.react.children.join('');\n node.react.children = undef;\n break;\n case 'list':\n props.start = node.listStart;\n props.type = node.listType;\n props.tight = node.listTight;\n break;\n default:\n }\n\n if (typeof renderer !== 'string') {\n props.literal = node.literal;\n }\n\n var children = props.children || (node.react && node.react.children);\n if (Array.isArray(children)) {\n props.children = children.reduce(reduceChildren, []) || null;\n }\n\n return props;\n}\n\nfunction getPosition(node) {\n if (!node) {\n return null;\n }\n\n if (node.sourcepos) {\n return flattenPosition(node.sourcepos);\n }\n\n return getPosition(node.parent);\n}\n\nfunction renderNodes(block) {\n var walker = block.walker();\n\n var propOptions = {\n sourcePos: this.sourcePos,\n escapeHtml: this.escapeHtml,\n skipHtml: this.skipHtml,\n transformLinkUri: this.transformLinkUri,\n transformImageUri: this.transformImageUri,\n softBreak: this.softBreak,\n linkTarget: this.linkTarget\n };\n\n var e, node, entering, leaving, type, doc, key, nodeProps, prevPos, prevIndex = 0;\n while ((e = walker.next())) {\n var pos = getPosition(e.node.sourcepos ? e.node : e.node.parent);\n if (prevPos === pos) {\n key = pos + prevIndex;\n prevIndex++;\n } else {\n key = pos;\n prevIndex = 0;\n }\n\n prevPos = pos;\n entering = e.entering;\n leaving = !entering;\n node = e.node;\n type = normalizeTypeName(node.type);\n nodeProps = null;\n\n // If we have not assigned a document yet, assume the current node is just that\n if (!doc) {\n doc = node;\n node.react = { children: [] };\n continue;\n } else if (node === doc) {\n // When we're leaving...\n continue;\n }\n\n // In HTML, we don't want paragraphs inside of list items\n if (type === 'paragraph' && isGrandChildOfList(node)) {\n continue;\n }\n\n // If we're skipping HTML nodes, don't keep processing\n if (this.skipHtml && (type === 'html_block' || type === 'html_inline')) {\n continue;\n }\n\n var isDocument = node === doc;\n var disallowedByConfig = this.allowedTypes.indexOf(type) === -1;\n var disallowedByUser = false;\n\n // Do we have a user-defined function?\n var isCompleteParent = node.isContainer && leaving;\n var renderer = this.renderers[type];\n if (this.allowNode && (isCompleteParent || !node.isContainer)) {\n var nodeChildren = isCompleteParent ? node.react.children : [];\n\n nodeProps = getNodeProps(node, key, propOptions, renderer);\n disallowedByUser = !this.allowNode({\n type: pascalCase(type),\n renderer: this.renderers[type],\n props: nodeProps,\n children: nodeChildren\n });\n }\n\n if (!isDocument && (disallowedByUser || disallowedByConfig)) {\n if (!this.unwrapDisallowed && entering && node.isContainer) {\n walker.resumeAt(node, false);\n }\n\n continue;\n }\n\n var isSimpleNode = type === 'text' || type === 'softbreak';\n if (typeof renderer !== 'function' && !isSimpleNode && typeof renderer !== 'string') {\n throw new Error(\n 'Renderer for type `' + pascalCase(node.type) + '` not defined or is not renderable'\n );\n }\n\n if (node.isContainer && entering) {\n node.react = {\n component: renderer,\n props: {},\n children: []\n };\n } else {\n var childProps = nodeProps || getNodeProps(node, key, propOptions, renderer);\n if (renderer) {\n childProps = typeof renderer === 'string'\n ? childProps\n : assign(childProps, {nodeKey: childProps.key});\n\n addChild(node, React.createElement(renderer, childProps));\n } else if (type === 'text') {\n addChild(node, node.literal);\n } else if (type === 'softbreak') {\n // Softbreaks are usually treated as newlines, but in HTML we might want explicit linebreaks\n var softBreak = (\n this.softBreak === 'br' ?\n React.createElement('br', {key: key}) :\n this.softBreak\n );\n addChild(node, softBreak);\n }\n }\n }\n\n return doc.react.children;\n}\n\nfunction defaultLinkUriFilter(uri) {\n var url = uri.replace(/file:\\/\\//g, 'x-file://');\n\n // React does a pretty swell job of escaping attributes,\n // so to prevent double-escaping, we need to decode\n return decodeURI(xssFilters.uriInDoubleQuotedAttr(url));\n}\n\nfunction ReactRenderer(options) {\n var opts = options || {};\n\n if (opts.allowedTypes && opts.disallowedTypes) {\n throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n }\n\n if (opts.allowedTypes && !Array.isArray(opts.allowedTypes)) {\n throw new Error('`allowedTypes` must be an array');\n }\n\n if (opts.disallowedTypes && !Array.isArray(opts.disallowedTypes)) {\n throw new Error('`disallowedTypes` must be an array');\n }\n\n if (opts.allowNode && typeof opts.allowNode !== 'function') {\n throw new Error('`allowNode` must be a function');\n }\n\n var linkFilter = opts.transformLinkUri;\n if (typeof linkFilter === 'undefined') {\n linkFilter = defaultLinkUriFilter;\n } else if (linkFilter && typeof linkFilter !== 'function') {\n throw new Error('`transformLinkUri` must either be a function, or `null` to disable');\n }\n\n var imageFilter = opts.transformImageUri;\n if (typeof imageFilter !== 'undefined' && typeof imageFilter !== 'function') {\n throw new Error('`transformImageUri` must be a function');\n }\n\n if (opts.renderers && !isPlainObject(opts.renderers)) {\n throw new Error('`renderers` must be a plain object of `Type`: `Renderer` pairs');\n }\n\n var allowedTypes = (opts.allowedTypes && opts.allowedTypes.map(normalizeTypeName)) || coreTypes;\n if (opts.disallowedTypes) {\n var disallowed = opts.disallowedTypes.map(normalizeTypeName);\n allowedTypes = allowedTypes.filter(function filterDisallowed(type) {\n return disallowed.indexOf(type) === -1;\n });\n }\n\n return {\n sourcePos: Boolean(opts.sourcePos),\n softBreak: opts.softBreak || '\\n',\n renderers: assign({}, defaultRenderers, normalizeRenderers(opts.renderers)),\n escapeHtml: Boolean(opts.escapeHtml),\n skipHtml: Boolean(opts.skipHtml),\n transformLinkUri: linkFilter,\n transformImageUri: imageFilter,\n allowNode: opts.allowNode,\n allowedTypes: allowedTypes,\n unwrapDisallowed: Boolean(opts.unwrapDisallowed),\n render: renderNodes,\n linkTarget: opts.linkTarget || false\n };\n}\n\nReactRenderer.uriTransformer = defaultLinkUriFilter;\nReactRenderer.types = coreTypes.map(pascalCase);\nReactRenderer.renderers = coreTypes.reduce(function(renderers, type) {\n renderers[pascalCase(type)] = defaultRenderers[type];\n return renderers;\n}, {});\n\nmodule.exports = ReactRenderer;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assign;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","/*\nCopyright (c) 2015, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n\nAuthors: Nera Liu <neraliu@yahoo-inc.com>\n Adonis Fung <adon@yahoo-inc.com>\n Albert Yu <albertyu@yahoo-inc.com>\n*/\n/*jshint node: true */\n\nexports._getPrivFilters = function () {\n\n var LT = /</g,\n QUOT = /\"/g,\n SQUOT = /'/g,\n AMP = /&/g,\n NULL = /\\x00/g,\n SPECIAL_ATTR_VALUE_UNQUOTED_CHARS = /(?:^$|[\\x00\\x09-\\x0D \"'`=<>])/g,\n SPECIAL_HTML_CHARS = /[&<>\"'`]/g, \n SPECIAL_COMMENT_CHARS = /(?:\\x00|^-*!?>|--!?>|--?!?$|\\]>|\\]$)/g;\n\n // CSS sensitive chars: ()\"'/,!*@{}:;\n // By CSS: (Tab|NewLine|colon|semi|lpar|rpar|apos|sol|comma|excl|ast|midast);|(quot|QUOT)\n // By URI_PROTOCOL: (Tab|NewLine);\n var SENSITIVE_HTML_ENTITIES = /&(?:#([xX][0-9A-Fa-f]+|\\d+);?|(Tab|NewLine|colon|semi|lpar|rpar|apos|sol|comma|excl|ast|midast|ensp|emsp|thinsp);|(nbsp|amp|AMP|lt|LT|gt|GT|quot|QUOT);?)/g,\n SENSITIVE_NAMED_REF_MAP = {Tab: '\\t', NewLine: '\\n', colon: ':', semi: ';', lpar: '(', rpar: ')', apos: '\\'', sol: '/', comma: ',', excl: '!', ast: '*', midast: '*', ensp: '\\u2002', emsp: '\\u2003', thinsp: '\\u2009', nbsp: '\\xA0', amp: '&', lt: '<', gt: '>', quot: '\"', QUOT: '\"'};\n\n // var CSS_VALID_VALUE = \n // /^(?:\n // (?!-*expression)#?[-\\w]+\n // |[+-]?(?:\\d+|\\d*\\.\\d+)(?:em|ex|ch|rem|px|mm|cm|in|pt|pc|%|vh|vw|vmin|vmax)?\n // |!important\n // | //empty\n // )$/i;\n var CSS_VALID_VALUE = /^(?:(?!-*expression)#?[-\\w]+|[+-]?(?:\\d+|\\d*\\.\\d+)(?:r?em|ex|ch|cm|mm|in|px|pt|pc|%|vh|vw|vmin|vmax)?|!important|)$/i,\n // TODO: prevent double css escaping by not encoding \\ again, but this may require CSS decoding\n // \\x7F and \\x01-\\x1F less \\x09 are for Safari 5.0, added []{}/* for unbalanced quote\n CSS_DOUBLE_QUOTED_CHARS = /[\\x00-\\x1F\\x7F\\[\\]{}\\\\\"]/g,\n CSS_SINGLE_QUOTED_CHARS = /[\\x00-\\x1F\\x7F\\[\\]{}\\\\']/g,\n // (, \\u207D and \\u208D can be used in background: 'url(...)' in IE, assumed all \\ chars are encoded by QUOTED_CHARS, and null is already replaced with \\uFFFD\n // otherwise, use this CSS_BLACKLIST instead (enhance it with url matching): /(?:\\\\?\\(|[\\u207D\\u208D]|\\\\0{0,4}28 ?|\\\\0{0,2}20[78][Dd] ?)+/g\n CSS_BLACKLIST = /url[\\(\\u207D\\u208D]+/g,\n // this assumes encodeURI() and encodeURIComponent() has escaped 1-32, 127 for IE8\n CSS_UNQUOTED_URL = /['\\(\\)]/g; // \" \\ treated by encodeURI()\n\n // Given a full URI, need to support \"[\" ( IPv6address ) \"]\" in URI as per RFC3986\n // Reference: https://tools.ietf.org/html/rfc3986\n var URL_IPV6 = /\\/\\/%5[Bb]([A-Fa-f0-9:]+)%5[Dd]/;\n\n\n // Reference: http://shazzer.co.uk/database/All/characters-allowd-in-html-entities\n // Reference: http://shazzer.co.uk/vector/Characters-allowed-after-ampersand-in-named-character-references\n // Reference: http://shazzer.co.uk/database/All/Characters-before-javascript-uri\n // Reference: http://shazzer.co.uk/database/All/Characters-after-javascript-uri\n // Reference: https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference\n // Reference for named characters: https://html.spec.whatwg.org/multipage/entities.json\n var URI_BLACKLIST_PROTOCOLS = {'javascript':1, 'data':1, 'vbscript':1, 'mhtml':1, 'x-schema':1},\n URI_PROTOCOL_COLON = /(?::|&#[xX]0*3[aA];?|�*58;?|:)/,\n URI_PROTOCOL_WHITESPACES = /(?:^[\\x00-\\x20]+|[\\t\\n\\r\\x00]+)/g,\n URI_PROTOCOL_NAMED_REF_MAP = {Tab: '\\t', NewLine: '\\n'};\n\n var x, \n strReplace = function (s, regexp, callback) {\n return s === undefined ? 'undefined'\n : s === null ? 'null'\n : s.toString().replace(regexp, callback);\n },\n fromCodePoint = String.fromCodePoint || function(codePoint) {\n if (arguments.length === 0) {\n return '';\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n return String.fromCharCode(codePoint);\n }\n\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n return String.fromCharCode((codePoint >> 10) + 0xD800, (codePoint % 0x400) + 0xDC00);\n };\n\n\n function getProtocol(str) {\n var s = str.split(URI_PROTOCOL_COLON, 2);\n // str.length !== s[0].length is for older IE (e.g., v8), where delimeter residing at last will result in length equals 1, but not 2\n return (s[0] && (s.length === 2 || str.length !== s[0].length)) ? s[0] : null;\n }\n\n function htmlDecode(s, namedRefMap, reNamedRef, skipReplacement) {\n \n namedRefMap = namedRefMap || SENSITIVE_NAMED_REF_MAP;\n reNamedRef = reNamedRef || SENSITIVE_HTML_ENTITIES;\n\n function regExpFunction(m, num, named, named1) {\n if (num) {\n num = Number(num[0] <= '9' ? num : '0' + num);\n // switch(num) {\n // case 0x80: return '\\u20AC'; // EURO SIGN (€)\n // case 0x82: return '\\u201A'; // SINGLE LOW-9 QUOTATION MARK (‚)\n // case 0x83: return '\\u0192'; // LATIN SMALL LETTER F WITH HOOK (ƒ)\n // case 0x84: return '\\u201E'; // DOUBLE LOW-9 QUOTATION MARK („)\n // case 0x85: return '\\u2026'; // HORIZONTAL ELLIPSIS (…)\n // case 0x86: return '\\u2020'; // DAGGER (†)\n // case 0x87: return '\\u2021'; // DOUBLE DAGGER (‡)\n // case 0x88: return '\\u02C6'; // MODIFIER LETTER CIRCUMFLEX ACCENT (ˆ)\n // case 0x89: return '\\u2030'; // PER MILLE SIGN (‰)\n // case 0x8A: return '\\u0160'; // LATIN CAPITAL LETTER S WITH CARON (Š)\n // case 0x8B: return '\\u2039'; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK (‹)\n // case 0x8C: return '\\u0152'; // LATIN CAPITAL LIGATURE OE (Œ)\n // case 0x8E: return '\\u017D'; // LATIN CAPITAL LETTER Z WITH CARON (Ž)\n // case 0x91: return '\\u2018'; // LEFT SINGLE QUOTATION MARK (‘)\n // case 0x92: return '\\u2019'; // RIGHT SINGLE QUOTATION MARK (’)\n // case 0x93: return '\\u201C'; // LEFT DOUBLE QUOTATION MARK (“)\n // case 0x94: return '\\u201D'; // RIGHT DOUBLE QUOTATION MARK (”)\n // case 0x95: return '\\u2022'; // BULLET (•)\n // case 0x96: return '\\u2013'; // EN DASH (–)\n // case 0x97: return '\\u2014'; // EM DASH (—)\n // case 0x98: return '\\u02DC'; // SMALL TILDE (˜)\n // case 0x99: return '\\u2122'; // TRADE MARK SIGN (™)\n // case 0x9A: return '\\u0161'; // LATIN SMALL LETTER S WITH CARON (š)\n // case 0x9B: return '\\u203A'; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (›)\n // case 0x9C: return '\\u0153'; // LATIN SMALL LIGATURE OE (œ)\n // case 0x9E: return '\\u017E'; // LATIN SMALL LETTER Z WITH CARON (ž)\n // case 0x9F: return '\\u0178'; // LATIN CAPITAL LETTER Y WITH DIAERESIS (Ÿ)\n // }\n // // num >= 0xD800 && num <= 0xDFFF, and 0x0D is separately handled, as it doesn't fall into the range of x.pec()\n // return (num >= 0xD800 && num <= 0xDFFF) || num === 0x0D ? '\\uFFFD' : x.frCoPt(num);\n\n return skipReplacement ? fromCodePoint(num)\n : num === 0x80 ? '\\u20AC' // EURO SIGN (€)\n : num === 0x82 ? '\\u201A' // SINGLE LOW-9 QUOTATION MARK (‚)\n : num === 0x83 ? '\\u0192' // LATIN SMALL LETTER F WITH HOOK (ƒ)\n : num === 0x84 ? '\\u201E' // DOUBLE LOW-9 QUOTATION MARK („)\n : num === 0x85 ? '\\u2026' // HORIZONTAL ELLIPSIS (…)\n : num === 0x86 ? '\\u2020' // DAGGER (†)\n : num === 0x87 ? '\\u2021' // DOUBLE DAGGER (‡)\n : num === 0x88 ? '\\u02C6' // MODIFIER LETTER CIRCUMFLEX ACCENT (ˆ)\n : num === 0x89 ? '\\u2030' // PER MILLE SIGN (‰)\n : num === 0x8A ? '\\u0160' // LATIN CAPITAL LETTER S WITH CARON (Š)\n : num === 0x8B ? '\\u2039' // SINGLE LEFT-POINTING ANGLE QUOTATION MARK (‹)\n : num === 0x8C ? '\\u0152' // LATIN CAPITAL LIGATURE OE (Œ)\n : num === 0x8E ? '\\u017D' // LATIN CAPITAL LETTER Z WITH CARON (Ž)\n : num === 0x91 ? '\\u2018' // LEFT SINGLE QUOTATION MARK (‘)\n : num === 0x92 ? '\\u2019' // RIGHT SINGLE QUOTATION MARK (’)\n : num === 0x93 ? '\\u201C' // LEFT DOUBLE QUOTATION MARK (“)\n : num === 0x94 ? '\\u201D' // RIGHT DOUBLE QUOTATION MARK (”)\n : num === 0x95 ? '\\u2022' // BULLET (•)\n : num === 0x96 ? '\\u2013' // EN DASH (–)\n : num === 0x97 ? '\\u2014' // EM DASH (—)\n : num === 0x98 ? '\\u02DC' // SMALL TILDE (˜)\n : num === 0x99 ? '\\u2122' // TRADE MARK SIGN (™)\n : num === 0x9A ? '\\u0161' // LATIN SMALL LETTER S WITH CARON (š)\n : num === 0x9B ? '\\u203A' // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (›)\n : num === 0x9C ? '\\u0153' // LATIN SMALL LIGATURE OE (œ)\n : num === 0x9E ? '\\u017E' // LATIN SMALL LETTER Z WITH CARON (ž)\n : num === 0x9F ? '\\u0178' // LATIN CAPITAL LETTER Y WITH DIAERESIS (Ÿ)\n : (num >= 0xD800 && num <= 0xDFFF) || num === 0x0D ? '\\uFFFD'\n : x.frCoPt(num);\n }\n return namedRefMap[named || named1] || m;\n }\n\n return s === undefined ? 'undefined'\n : s === null ? 'null'\n : s.toString().replace(NULL, '\\uFFFD').replace(reNamedRef, regExpFunction);\n }\n\n function cssEncode(chr) {\n // space after \\\\HEX is needed by spec\n return '\\\\' + chr.charCodeAt(0).toString(16).toLowerCase() + ' ';\n }\n function cssBlacklist(s) {\n return s.replace(CSS_BLACKLIST, function(m){ return '-x-' + m; });\n }\n function cssUrl(s) {\n // encodeURI() in yufull() will throw error for use of the CSS_UNSUPPORTED_CODE_POINT (i.e., [\\uD800-\\uDFFF])\n s = x.yufull(htmlDecode(s));\n var protocol = getProtocol(s);\n\n // prefix ## for blacklisted protocols\n // here .replace(URI_PROTOCOL_WHITESPACES, '') is not needed since yufull has already percent-encoded the whitespaces\n return (protocol && URI_BLACKLIST_PROTOCOLS[protocol.toLowerCase()]) ? '##' + s : s;\n }\n\n return (x = {\n // turn invalid codePoints and that of non-characters to \\uFFFD, and then fromCodePoint()\n frCoPt: function(num) {\n return num === undefined || num === null ? '' :\n !isFinite(num = Number(num)) || // `NaN`, `+Infinity`, or `-Infinity`\n num <= 0 || // not a valid Unicode code point\n num > 0x10FFFF || // not a valid Unicode code point\n // Math.floor(num) != num || \n\n (num >= 0x01 && num <= 0x08) ||\n (num >= 0x0E && num <= 0x1F) ||\n (num >= 0x7F && num <= 0x9F) ||\n (num >= 0xFDD0 && num <= 0xFDEF) ||\n \n num === 0x0B || \n (num & 0xFFFF) === 0xFFFF || \n (num & 0xFFFF) === 0xFFFE ? '\\uFFFD' : fromCodePoint(num);\n },\n d: htmlDecode,\n /*\n * @param {string} s - An untrusted uri input\n * @returns {string} s - null if relative url, otherwise the protocol with whitespaces stripped and lower-cased\n */\n yup: function(s) {\n s = getProtocol(s.replace(NULL, ''));\n // URI_PROTOCOL_WHITESPACES is required for left trim and remove interim whitespaces\n return s ? htmlDecode(s, URI_PROTOCOL_NAMED_REF_MAP, null, true).replace(URI_PROTOCOL_WHITESPACES, '').toLowerCase() : null;\n },\n\n /*\n * @deprecated\n * @param {string} s - An untrusted user input\n * @returns {string} s - The original user input with & < > \" ' ` encoded respectively as & < > " ' and `.\n *\n */\n y: function(s) {\n return strReplace(s, SPECIAL_HTML_CHARS, function (m) {\n return m === '&' ? '&'\n : m === '<' ? '<'\n : m === '>' ? '>'\n : m === '\"' ? '"'\n : m === \"'\" ? '''\n : /*m === '`'*/ '`'; // in hex: 60\n });\n },\n\n // This filter is meant to introduce double-encoding, and should be used with extra care.\n ya: function(s) {\n return strReplace(s, AMP, '&');\n },\n\n // FOR DETAILS, refer to inHTMLData()\n // Reference: https://html.spec.whatwg.org/multipage/syntax.html#data-state\n yd: function (s) {\n return strReplace(s, LT, '<');\n },\n\n // FOR DETAILS, refer to inHTMLComment()\n // All NULL characters in s are first replaced with \\uFFFD.\n // If s contains -->, --!>, or starts with -*>, insert a space right before > to stop state breaking at <!--{{{yc s}}}-->\n // If s ends with --!, --, or -, append a space to stop collaborative state breaking at {{{yc s}}}>, {{{yc s}}}!>, {{{yc s}}}-!>, {{{yc s}}}->\n // Reference: https://html.spec.whatwg.org/multipage/syntax.html#comment-state\n // Reference: http://shazzer.co.uk/vector/Characters-that-close-a-HTML-comment-3\n // Reference: http://shazzer.co.uk/vector/Characters-that-close-a-HTML-comment\n // Reference: http://shazzer.co.uk/vector/Characters-that-close-a-HTML-comment-0021\n // If s contains ]> or ends with ], append a space after ] is verified in IE to stop IE conditional comments.\n // Reference: http://msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx\n // We do not care --\\s>, which can possibly be intepreted as a valid close comment tag in very old browsers (e.g., firefox 3.6), as specified in the html4 spec\n // Reference: http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.4\n yc: function (s) {\n return strReplace(s, SPECIAL_COMMENT_CHARS, function(m){\n return m === '\\x00' ? '\\uFFFD'\n : m === '--!' || m === '--' || m === '-' || m === ']' ? m + ' '\n :/*\n : m === ']>' ? '] >'\n : m === '-->' ? '-- >'\n : m === '--!>' ? '--! >'\n : /-*!?>/.test(m) ? */ m.slice(0, -1) + ' >';\n });\n },\n\n // FOR DETAILS, refer to inDoubleQuotedAttr()\n // Reference: https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(double-quoted)-state\n yavd: function (s) {\n return strReplace(s, QUOT, '"');\n },\n\n // FOR DETAILS, refer to inSingleQuotedAttr()\n // Reference: https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(single-quoted)-state\n yavs: function (s) {\n return strReplace(s, SQUOT, ''');\n },\n\n // FOR DETAILS, refer to inUnQuotedAttr()\n // PART A.\n // if s contains any state breaking chars (\\t, \\n, \\v, \\f, \\r, space, and >),\n // they are escaped and encoded into their equivalent HTML entity representations. \n // Reference: http://shazzer.co.uk/database/All/Characters-which-break-attributes-without-quotes\n // Reference: https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(unquoted)-state\n //\n // PART B. \n // if s starts with ', \" or `, encode it resp. as ', ", or ` to \n // enforce the attr value (unquoted) state\n // Reference: https://html.spec.whatwg.org/multipage/syntax.html#before-attribute-value-state\n // Reference: http://shazzer.co.uk/vector/Characters-allowed-attribute-quote\n // \n // PART C.\n // Inject a \\uFFFD character if an empty or all null string is encountered in \n // unquoted attribute value state.\n // \n // Rationale 1: our belief is that developers wouldn't expect an \n // empty string would result in ' name=\"passwd\"' rendered as \n // attribute value, even though this is how HTML5 is specified.\n // Rationale 2: an empty or all null string (for IE) can \n // effectively alter its immediate subsequent state, we choose\n // \\uFFFD to end the unquoted attr \n // state, which therefore will not mess up later contexts.\n // Rationale 3: Since IE 6, it is verified that NULL chars are stripped.\n // Reference: https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(unquoted)-state\n // \n // Example:\n // <input value={{{yavu s}}} name=\"passwd\"/>\n yavu: function (s) {\n return strReplace(s, SPECIAL_ATTR_VALUE_UNQUOTED_CHARS, function (m) {\n return m === '\\t' ? ' ' // in hex: 09\n : m === '\\n' ? ' ' // in hex: 0A\n : m === '\\x0B' ? ' ' // in hex: 0B for IE. IE<9 \\v equals v, so use \\x0B instead\n : m === '\\f' ? ' ' // in hex: 0C\n : m === '\\r' ? ' ' // in hex: 0D\n : m === ' ' ? ' ' // in hex: 20\n : m === '=' ? '=' // in hex: 3D\n : m === '<' ? '<'\n : m === '>' ? '>'\n : m === '\"' ? '"'\n : m === \"'\" ? '''\n : m === '`' ? '`'\n : /*empty or null*/ '\\uFFFD';\n });\n },\n\n yu: encodeURI,\n yuc: encodeURIComponent,\n\n // Notice that yubl MUST BE APPLIED LAST, and will not be used independently (expected output from encodeURI/encodeURIComponent and yavd/yavs/yavu)\n // This is used to disable JS execution capabilities by prefixing x- to ^javascript:, ^vbscript: or ^data: that possibly could trigger script execution in URI attribute context\n yubl: function (s) {\n return URI_BLACKLIST_PROTOCOLS[x.yup(s)] ? 'x-' + s : s;\n },\n\n // This is NOT a security-critical filter.\n // Reference: https://tools.ietf.org/html/rfc3986\n yufull: function (s) {\n return x.yu(s).replace(URL_IPV6, function(m, p) {\n return '//[' + p + ']';\n });\n },\n\n // chain yufull() with yubl()\n yublf: function (s) {\n return x.yubl(x.yufull(s));\n },\n\n // The design principle of the CSS filter MUST meet the following goal(s).\n // (1) The input cannot break out of the context (expr) and this is to fulfill the just sufficient encoding principle.\n // (2) The input cannot introduce CSS parsing error and this is to address the concern of UI redressing.\n //\n // term\n // : unary_operator?\n // [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* |\n // TIME S* | FREQ S* ]\n // | STRING S* | IDENT S* | URI S* | hexcolor | function\n // \n // Reference:\n // * http://www.w3.org/TR/CSS21/grammar.html \n // * http://www.w3.org/TR/css-syntax-3/\n // \n // NOTE: delimiter in CSS - \\ _ : ; ( ) \" ' / , % # ! * @ . { }\n // 2d 5c 5f 3a 3b 28 29 22 27 2f 2c 25 23 21 2a 40 2e 7b 7d\n\n yceu: function(s) {\n s = htmlDecode(s);\n return CSS_VALID_VALUE.test(s) ? s : \";-x:'\" + cssBlacklist(s.replace(CSS_SINGLE_QUOTED_CHARS, cssEncode)) + \"';-v:\";\n },\n\n // string1 = \\\"([^\\n\\r\\f\\\\\"]|\\\\{nl}|\\\\[^\\n\\r\\f0-9a-f]|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?)*\\\"\n yced: function(s) {\n return cssBlacklist(htmlDecode(s).replace(CSS_DOUBLE_QUOTED_CHARS, cssEncode));\n },\n\n // string2 = \\'([^\\n\\r\\f\\\\']|\\\\{nl}|\\\\[^\\n\\r\\f0-9a-f]|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?)*\\'\n yces: function(s) {\n return cssBlacklist(htmlDecode(s).replace(CSS_SINGLE_QUOTED_CHARS, cssEncode));\n },\n\n // for url({{{yceuu url}}}\n // unquoted_url = ([!#$%&*-~]|\\\\{h}{1,6}(\\r\\n|[ \\t\\r\\n\\f])?|\\\\[^\\r\\n\\f0-9a-f])* (CSS 2.1 definition)\n // unquoted_url = ([^\"'()\\\\ \\t\\n\\r\\f\\v\\u0000\\u0008\\u000b\\u000e-\\u001f\\u007f]|\\\\{h}{1,6}(\\r\\n|[ \\t\\r\\n\\f])?|\\\\[^\\r\\n\\f0-9a-f])* (CSS 3.0 definition)\n // The state machine in CSS 3.0 is more well defined - http://www.w3.org/TR/css-syntax-3/#consume-a-url-token0\n // CSS_UNQUOTED_URL = /['\\(\\)]/g; // \" \\ treated by encodeURI() \n yceuu: function(s) {\n return cssUrl(s).replace(CSS_UNQUOTED_URL, function (chr) {\n return chr === '\\'' ? '\\\\27 ' :\n chr === '(' ? '%28' :\n /* chr === ')' ? */ '%29';\n });\n },\n\n // for url(\"{{{yceud url}}}\n yceud: function(s) { \n return cssUrl(s);\n },\n\n // for url('{{{yceus url}}}\n yceus: function(s) { \n return cssUrl(s).replace(SQUOT, '\\\\27 ');\n }\n });\n};\n\n// exposing privFilters\n// this is an undocumented feature, and please use it with extra care\nvar privFilters = exports._privFilters = exports._getPrivFilters();\n\n\n/* chaining filters */\n\n// uriInAttr and literally uriPathInAttr\n// yubl is always used \n// Rationale: given pattern like this: <a href=\"{{{uriPathInDoubleQuotedAttr s}}}\">\n// developer may expect s is always prefixed with ? or /, but an attacker can abuse it with 'javascript:alert(1)'\nfunction uriInAttr (s, yav, yu) {\n return privFilters.yubl(yav((yu || privFilters.yufull)(s)));\n}\n\n/** \n* Yahoo Secure XSS Filters - just sufficient output filtering to prevent XSS!\n* @module xss-filters \n*/\n\n/**\n* @function module:xss-filters#inHTMLData\n*\n* @param {string} s - An untrusted user input\n* @returns {string} The string s with '<' encoded as '&lt;'\n*\n* @description\n* This filter is to be placed in HTML Data context to encode all '<' characters into '&lt;'\n* <ul>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#data-state\">HTML5 Data State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <div>{{{inHTMLData htmlData}}}</div>\n*\n*/\nexports.inHTMLData = privFilters.yd;\n\n/**\n* @function module:xss-filters#inHTMLComment\n*\n* @param {string} s - An untrusted user input\n* @returns {string} All NULL characters in s are first replaced with \\uFFFD. If s contains -->, --!>, or starts with -*>, insert a space right before > to stop state breaking at <!--{{{yc s}}}-->. If s ends with --!, --, or -, append a space to stop collaborative state breaking at {{{yc s}}}>, {{{yc s}}}!>, {{{yc s}}}-!>, {{{yc s}}}->. If s contains ]> or ends with ], append a space after ] is verified in IE to stop IE conditional comments.\n*\n* @description\n* This filter is to be placed in HTML Comment context\n* <ul>\n* <li><a href=\"http://shazzer.co.uk/vector/Characters-that-close-a-HTML-comment-3\">Shazzer - Closing comments for -.-></a>\n* <li><a href=\"http://shazzer.co.uk/vector/Characters-that-close-a-HTML-comment\">Shazzer - Closing comments for --.></a>\n* <li><a href=\"http://shazzer.co.uk/vector/Characters-that-close-a-HTML-comment-0021\">Shazzer - Closing comments for .></a>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-start-state\">HTML5 Comment Start State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-start-dash-state\">HTML5 Comment Start Dash State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-state\">HTML5 Comment State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-end-dash-state\">HTML5 Comment End Dash State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-end-state\">HTML5 Comment End State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-end-bang-state\">HTML5 Comment End Bang State</a></li>\n* <li><a href=\"http://msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx\">Conditional Comments in Internet Explorer</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <!-- {{{inHTMLComment html_comment}}} -->\n*\n*/\nexports.inHTMLComment = privFilters.yc;\n\n/**\n* @function module:xss-filters#inSingleQuotedAttr\n*\n* @param {string} s - An untrusted user input\n* @returns {string} The string s with any single-quote characters encoded into '&''.\n*\n* @description\n* <p class=\"warning\">Warning: This is NOT designed for any onX (e.g., onclick) attributes!</p>\n* <p class=\"warning\">Warning: If you're working on URI/components, use the more specific uri___InSingleQuotedAttr filter </p>\n* This filter is to be placed in HTML Attribute Value (single-quoted) state to encode all single-quote characters into '&''\n*\n* <ul>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(single-quoted)-state\">HTML5 Attribute Value (Single-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <input name='firstname' value='{{{inSingleQuotedAttr firstname}}}' />\n*\n*/\nexports.inSingleQuotedAttr = privFilters.yavs;\n\n/**\n* @function module:xss-filters#inDoubleQuotedAttr\n*\n* @param {string} s - An untrusted user input\n* @returns {string} The string s with any single-quote characters encoded into '&"'.\n*\n* @description\n* <p class=\"warning\">Warning: This is NOT designed for any onX (e.g., onclick) attributes!</p>\n* <p class=\"warning\">Warning: If you're working on URI/components, use the more specific uri___InDoubleQuotedAttr filter </p>\n* This filter is to be placed in HTML Attribute Value (double-quoted) state to encode all single-quote characters into '&"'\n*\n* <ul>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(double-quoted)-state\">HTML5 Attribute Value (Double-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <input name=\"firstname\" value=\"{{{inDoubleQuotedAttr firstname}}}\" />\n*\n*/\nexports.inDoubleQuotedAttr = privFilters.yavd;\n\n/**\n* @function module:xss-filters#inUnQuotedAttr\n*\n* @param {string} s - An untrusted user input\n* @returns {string} If s contains any state breaking chars (\\t, \\n, \\v, \\f, \\r, space, null, ', \", `, <, >, and =), they are escaped and encoded into their equivalent HTML entity representations. If the string is empty, inject a \\uFFFD character.\n*\n* @description\n* <p class=\"warning\">Warning: This is NOT designed for any onX (e.g., onclick) attributes!</p>\n* <p class=\"warning\">Warning: If you're working on URI/components, use the more specific uri___InUnQuotedAttr filter </p>\n* <p>Regarding \\uFFFD injection, given <a id={{{id}}} name=\"passwd\">,<br/>\n* Rationale 1: our belief is that developers wouldn't expect when id equals an\n* empty string would result in ' name=\"passwd\"' rendered as \n* attribute value, even though this is how HTML5 is specified.<br/>\n* Rationale 2: an empty or all null string (for IE) can \n* effectively alter its immediate subsequent state, we choose\n* \\uFFFD to end the unquoted attr \n* state, which therefore will not mess up later contexts.<br/>\n* Rationale 3: Since IE 6, it is verified that NULL chars are stripped.<br/>\n* Reference: https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(unquoted)-state</p>\n* <ul>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(unquoted)-state\">HTML5 Attribute Value (Unquoted) State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#before-attribute-value-state\">HTML5 Before Attribute Value State</a></li>\n* <li><a href=\"http://shazzer.co.uk/database/All/Characters-which-break-attributes-without-quotes\">Shazzer - Characters-which-break-attributes-without-quotes</a></li>\n* <li><a href=\"http://shazzer.co.uk/vector/Characters-allowed-attribute-quote\">Shazzer - Characters-allowed-attribute-quote</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <input name=\"firstname\" value={{{inUnQuotedAttr firstname}}} />\n*\n*/\nexports.inUnQuotedAttr = privFilters.yavu;\n\n\n/**\n* @function module:xss-filters#uriInSingleQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly an <strong>absolute</strong> URI\n* @returns {string} The string s encoded first by window.encodeURI(), then inSingleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (single-quoted) state for an <strong>absolute</strong> URI.<br/>\n* The correct order of encoders is thus: first window.encodeURI(), then inSingleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* <p>Notice: This filter is IPv6 friendly by not encoding '[' and ']'.</p>\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(single-quoted)-state\">HTML5 Attribute Value (Single-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href='{{{uriInSingleQuotedAttr full_uri}}}'>link</a>\n* \n*/\nexports.uriInSingleQuotedAttr = function (s) {\n return uriInAttr(s, privFilters.yavs);\n};\n\n/**\n* @function module:xss-filters#uriInDoubleQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly an <strong>absolute</strong> URI\n* @returns {string} The string s encoded first by window.encodeURI(), then inDoubleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (double-quoted) state for an <strong>absolute</strong> URI.<br/>\n* The correct order of encoders is thus: first window.encodeURI(), then inDoubleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* <p>Notice: This filter is IPv6 friendly by not encoding '[' and ']'.</p>\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(double-quoted)-state\">HTML5 Attribute Value (Double-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=\"{{{uriInDoubleQuotedAttr full_uri}}}\">link</a>\n* \n*/\nexports.uriInDoubleQuotedAttr = function (s) {\n return uriInAttr(s, privFilters.yavd);\n};\n\n\n/**\n* @function module:xss-filters#uriInUnQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly an <strong>absolute</strong> URI\n* @returns {string} The string s encoded first by window.encodeURI(), then inUnQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (unquoted) state for an <strong>absolute</strong> URI.<br/>\n* The correct order of encoders is thus: first the built-in encodeURI(), then inUnQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* <p>Notice: This filter is IPv6 friendly by not encoding '[' and ']'.</p>\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(unquoted)-state\">HTML5 Attribute Value (Unquoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href={{{uriInUnQuotedAttr full_uri}}}>link</a>\n* \n*/\nexports.uriInUnQuotedAttr = function (s) {\n return uriInAttr(s, privFilters.yavu);\n};\n\n/**\n* @function module:xss-filters#uriInHTMLData\n*\n* @param {string} s - An untrusted user input, supposedly an <strong>absolute</strong> URI\n* @returns {string} The string s encoded by window.encodeURI() and then inHTMLData()\n*\n* @description\n* This filter is to be placed in HTML Data state for an <strong>absolute</strong> URI.\n*\n* <p>Notice: The actual implementation skips inHTMLData(), since '<' is already encoded as '%3C' by encodeURI().</p>\n* <p>Notice: This filter is IPv6 friendly by not encoding '[' and ']'.</p>\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#data-state\">HTML5 Data State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=\"/somewhere\">{{{uriInHTMLData full_uri}}}</a>\n* \n*/\nexports.uriInHTMLData = privFilters.yufull;\n\n\n/**\n* @function module:xss-filters#uriInHTMLComment\n*\n* @param {string} s - An untrusted user input, supposedly an <strong>absolute</strong> URI\n* @returns {string} The string s encoded by window.encodeURI(), and finally inHTMLComment()\n*\n* @description\n* This filter is to be placed in HTML Comment state for an <strong>absolute</strong> URI.\n*\n* <p>Notice: This filter is IPv6 friendly by not encoding '[' and ']'.</p>\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#data-state\">HTML5 Data State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-state\">HTML5 Comment State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <!-- {{{uriInHTMLComment full_uri}}} -->\n* \n*/\nexports.uriInHTMLComment = function (s) {\n return privFilters.yc(privFilters.yufull(s));\n};\n\n\n\n\n/**\n* @function module:xss-filters#uriPathInSingleQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Path/Query or relative URI\n* @returns {string} The string s encoded first by window.encodeURI(), then inSingleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (single-quoted) state for a URI Path/Query or relative URI.<br/>\n* The correct order of encoders is thus: first window.encodeURI(), then inSingleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(single-quoted)-state\">HTML5 Attribute Value (Single-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href='http://example.com/{{{uriPathInSingleQuotedAttr uri_path}}}'>link</a>\n* <a href='http://example.com/?{{{uriQueryInSingleQuotedAttr uri_query}}}'>link</a>\n* \n*/\nexports.uriPathInSingleQuotedAttr = function (s) {\n return uriInAttr(s, privFilters.yavs, privFilters.yu);\n};\n\n/**\n* @function module:xss-filters#uriPathInDoubleQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Path/Query or relative URI\n* @returns {string} The string s encoded first by window.encodeURI(), then inDoubleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (double-quoted) state for a URI Path/Query or relative URI.<br/>\n* The correct order of encoders is thus: first window.encodeURI(), then inDoubleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(double-quoted)-state\">HTML5 Attribute Value (Double-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=\"http://example.com/{{{uriPathInDoubleQuotedAttr uri_path}}}\">link</a>\n* <a href=\"http://example.com/?{{{uriQueryInDoubleQuotedAttr uri_query}}}\">link</a>\n* \n*/\nexports.uriPathInDoubleQuotedAttr = function (s) {\n return uriInAttr(s, privFilters.yavd, privFilters.yu);\n};\n\n\n/**\n* @function module:xss-filters#uriPathInUnQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Path/Query or relative URI\n* @returns {string} The string s encoded first by window.encodeURI(), then inUnQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (unquoted) state for a URI Path/Query or relative URI.<br/>\n* The correct order of encoders is thus: first the built-in encodeURI(), then inUnQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(unquoted)-state\">HTML5 Attribute Value (Unquoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=http://example.com/{{{uriPathInUnQuotedAttr uri_path}}}>link</a>\n* <a href=http://example.com/?{{{uriQueryInUnQuotedAttr uri_query}}}>link</a>\n* \n*/\nexports.uriPathInUnQuotedAttr = function (s) {\n return uriInAttr(s, privFilters.yavu, privFilters.yu);\n};\n\n/**\n* @function module:xss-filters#uriPathInHTMLData\n*\n* @param {string} s - An untrusted user input, supposedly a URI Path/Query or relative URI\n* @returns {string} The string s encoded by window.encodeURI() and then inHTMLData()\n*\n* @description\n* This filter is to be placed in HTML Data state for a URI Path/Query or relative URI.\n*\n* <p>Notice: The actual implementation skips inHTMLData(), since '<' is already encoded as '%3C' by encodeURI().</p>\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#data-state\">HTML5 Data State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=\"http://example.com/\">http://example.com/{{{uriPathInHTMLData uri_path}}}</a>\n* <a href=\"http://example.com/\">http://example.com/?{{{uriQueryInHTMLData uri_query}}}</a>\n* \n*/\nexports.uriPathInHTMLData = privFilters.yu;\n\n\n/**\n* @function module:xss-filters#uriPathInHTMLComment\n*\n* @param {string} s - An untrusted user input, supposedly a URI Path/Query or relative URI\n* @returns {string} The string s encoded by window.encodeURI(), and finally inHTMLComment()\n*\n* @description\n* This filter is to be placed in HTML Comment state for a URI Path/Query or relative URI.\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI\">encodeURI | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#data-state\">HTML5 Data State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-state\">HTML5 Comment State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <!-- http://example.com/{{{uriPathInHTMLComment uri_path}}} -->\n* <!-- http://example.com/?{{{uriQueryInHTMLComment uri_query}}} -->\n*/\nexports.uriPathInHTMLComment = function (s) {\n return privFilters.yc(privFilters.yu(s));\n};\n\n\n/**\n* @function module:xss-filters#uriQueryInSingleQuotedAttr\n* @description This is an alias of {@link module:xss-filters#uriPathInSingleQuotedAttr}\n* \n* @alias module:xss-filters#uriPathInSingleQuotedAttr\n*/\nexports.uriQueryInSingleQuotedAttr = exports.uriPathInSingleQuotedAttr;\n\n/**\n* @function module:xss-filters#uriQueryInDoubleQuotedAttr\n* @description This is an alias of {@link module:xss-filters#uriPathInDoubleQuotedAttr}\n* \n* @alias module:xss-filters#uriPathInDoubleQuotedAttr\n*/\nexports.uriQueryInDoubleQuotedAttr = exports.uriPathInDoubleQuotedAttr;\n\n/**\n* @function module:xss-filters#uriQueryInUnQuotedAttr\n* @description This is an alias of {@link module:xss-filters#uriPathInUnQuotedAttr}\n* \n* @alias module:xss-filters#uriPathInUnQuotedAttr\n*/\nexports.uriQueryInUnQuotedAttr = exports.uriPathInUnQuotedAttr;\n\n/**\n* @function module:xss-filters#uriQueryInHTMLData\n* @description This is an alias of {@link module:xss-filters#uriPathInHTMLData}\n* \n* @alias module:xss-filters#uriPathInHTMLData\n*/\nexports.uriQueryInHTMLData = exports.uriPathInHTMLData;\n\n/**\n* @function module:xss-filters#uriQueryInHTMLComment\n* @description This is an alias of {@link module:xss-filters#uriPathInHTMLComment}\n* \n* @alias module:xss-filters#uriPathInHTMLComment\n*/\nexports.uriQueryInHTMLComment = exports.uriPathInHTMLComment;\n\n\n\n/**\n* @function module:xss-filters#uriComponentInSingleQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Component\n* @returns {string} The string s encoded first by window.encodeURIComponent(), then inSingleQuotedAttr()\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (single-quoted) state for a URI Component.<br/>\n* The correct order of encoders is thus: first window.encodeURIComponent(), then inSingleQuotedAttr()\n*\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\">encodeURIComponent | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(single-quoted)-state\">HTML5 Attribute Value (Single-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href='http://example.com/?q={{{uriComponentInSingleQuotedAttr uri_component}}}'>link</a>\n* \n*/\nexports.uriComponentInSingleQuotedAttr = function (s) {\n return privFilters.yavs(privFilters.yuc(s));\n};\n\n/**\n* @function module:xss-filters#uriComponentInDoubleQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Component\n* @returns {string} The string s encoded first by window.encodeURIComponent(), then inDoubleQuotedAttr()\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (double-quoted) state for a URI Component.<br/>\n* The correct order of encoders is thus: first window.encodeURIComponent(), then inDoubleQuotedAttr()\n*\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\">encodeURIComponent | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(double-quoted)-state\">HTML5 Attribute Value (Double-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=\"http://example.com/?q={{{uriComponentInDoubleQuotedAttr uri_component}}}\">link</a>\n* \n*/\nexports.uriComponentInDoubleQuotedAttr = function (s) {\n return privFilters.yavd(privFilters.yuc(s));\n};\n\n\n/**\n* @function module:xss-filters#uriComponentInUnQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Component\n* @returns {string} The string s encoded first by window.encodeURIComponent(), then inUnQuotedAttr()\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (unquoted) state for a URI Component.<br/>\n* The correct order of encoders is thus: first the built-in encodeURIComponent(), then inUnQuotedAttr()\n*\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\">encodeURIComponent | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(unquoted)-state\">HTML5 Attribute Value (Unquoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=http://example.com/?q={{{uriComponentInUnQuotedAttr uri_component}}}>link</a>\n* \n*/\nexports.uriComponentInUnQuotedAttr = function (s) {\n return privFilters.yavu(privFilters.yuc(s));\n};\n\n/**\n* @function module:xss-filters#uriComponentInHTMLData\n*\n* @param {string} s - An untrusted user input, supposedly a URI Component\n* @returns {string} The string s encoded by window.encodeURIComponent() and then inHTMLData()\n*\n* @description\n* This filter is to be placed in HTML Data state for a URI Component.\n*\n* <p>Notice: The actual implementation skips inHTMLData(), since '<' is already encoded as '%3C' by encodeURIComponent().</p>\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\">encodeURIComponent | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#data-state\">HTML5 Data State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=\"http://example.com/\">http://example.com/?q={{{uriComponentInHTMLData uri_component}}}</a>\n* <a href=\"http://example.com/\">http://example.com/#{{{uriComponentInHTMLData uri_fragment}}}</a>\n* \n*/\nexports.uriComponentInHTMLData = privFilters.yuc;\n\n\n/**\n* @function module:xss-filters#uriComponentInHTMLComment\n*\n* @param {string} s - An untrusted user input, supposedly a URI Component\n* @returns {string} The string s encoded by window.encodeURIComponent(), and finally inHTMLComment()\n*\n* @description\n* This filter is to be placed in HTML Comment state for a URI Component.\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\">encodeURIComponent | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#data-state\">HTML5 Data State</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#comment-state\">HTML5 Comment State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <!-- http://example.com/?q={{{uriComponentInHTMLComment uri_component}}} -->\n* <!-- http://example.com/#{{{uriComponentInHTMLComment uri_fragment}}} -->\n*/\nexports.uriComponentInHTMLComment = function (s) {\n return privFilters.yc(privFilters.yuc(s));\n};\n\n\n// uriFragmentInSingleQuotedAttr\n// added yubl on top of uriComponentInAttr \n// Rationale: given pattern like this: <a href='{{{uriFragmentInSingleQuotedAttr s}}}'>\n// developer may expect s is always prefixed with #, but an attacker can abuse it with 'javascript:alert(1)'\n\n/**\n* @function module:xss-filters#uriFragmentInSingleQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Fragment\n* @returns {string} The string s encoded first by window.encodeURIComponent(), then inSingleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (single-quoted) state for a URI Fragment.<br/>\n* The correct order of encoders is thus: first window.encodeURIComponent(), then inSingleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\">encodeURIComponent | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(single-quoted)-state\">HTML5 Attribute Value (Single-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href='http://example.com/#{{{uriFragmentInSingleQuotedAttr uri_fragment}}}'>link</a>\n* \n*/\nexports.uriFragmentInSingleQuotedAttr = function (s) {\n return privFilters.yubl(privFilters.yavs(privFilters.yuc(s)));\n};\n\n// uriFragmentInDoubleQuotedAttr\n// added yubl on top of uriComponentInAttr \n// Rationale: given pattern like this: <a href=\"{{{uriFragmentInDoubleQuotedAttr s}}}\">\n// developer may expect s is always prefixed with #, but an attacker can abuse it with 'javascript:alert(1)'\n\n/**\n* @function module:xss-filters#uriFragmentInDoubleQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Fragment\n* @returns {string} The string s encoded first by window.encodeURIComponent(), then inDoubleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (double-quoted) state for a URI Fragment.<br/>\n* The correct order of encoders is thus: first window.encodeURIComponent(), then inDoubleQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\">encodeURIComponent | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(double-quoted)-state\">HTML5 Attribute Value (Double-Quoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=\"http://example.com/#{{{uriFragmentInDoubleQuotedAttr uri_fragment}}}\">link</a>\n* \n*/\nexports.uriFragmentInDoubleQuotedAttr = function (s) {\n return privFilters.yubl(privFilters.yavd(privFilters.yuc(s)));\n};\n\n// uriFragmentInUnQuotedAttr\n// added yubl on top of uriComponentInAttr \n// Rationale: given pattern like this: <a href={{{uriFragmentInUnQuotedAttr s}}}>\n// developer may expect s is always prefixed with #, but an attacker can abuse it with 'javascript:alert(1)'\n\n/**\n* @function module:xss-filters#uriFragmentInUnQuotedAttr\n*\n* @param {string} s - An untrusted user input, supposedly a URI Fragment\n* @returns {string} The string s encoded first by window.encodeURIComponent(), then inUnQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* @description\n* This filter is to be placed in HTML Attribute Value (unquoted) state for a URI Fragment.<br/>\n* The correct order of encoders is thus: first the built-in encodeURIComponent(), then inUnQuotedAttr(), and finally prefix the resulted string with 'x-' if it begins with 'javascript:' or 'vbscript:' that could possibly lead to script execution\n*\n* <ul>\n* <li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\">encodeURIComponent | MDN</a></li>\n* <li><a href=\"http://tools.ietf.org/html/rfc3986\">RFC 3986</a></li>\n* <li><a href=\"https://html.spec.whatwg.org/multipage/syntax.html#attribute-value-(unquoted)-state\">HTML5 Attribute Value (Unquoted) State</a></li>\n* </ul>\n*\n* @example\n* // output context to be applied by this filter.\n* <a href=http://example.com/#{{{uriFragmentInUnQuotedAttr uri_fragment}}}>link</a>\n* \n*/\nexports.uriFragmentInUnQuotedAttr = function (s) {\n return privFilters.yubl(privFilters.yavu(privFilters.yuc(s)));\n};\n\n\n/**\n* @function module:xss-filters#uriFragmentInHTMLData\n* @description This is an alias of {@link module:xss-filters#uriComponentInHTMLData}\n* \n* @alias module:xss-filters#uriComponentInHTMLData\n*/\nexports.uriFragmentInHTMLData = exports.uriComponentInHTMLData;\n\n/**\n* @function module:xss-filters#uriFragmentInHTMLComment\n* @description This is an alias of {@link module:xss-filters#uriComponentInHTMLComment}\n* \n* @alias module:xss-filters#uriComponentInHTMLComment\n*/\nexports.uriFragmentInHTMLComment = exports.uriComponentInHTMLComment;\n","/*!\n * pascalcase <https://github.com/jonschlinkert/pascalcase>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nfunction pascalcase(str) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string.');\n }\n str = str.replace(/([A-Z])/g, ' $1');\n if (str.length === 1) { return str.toUpperCase(); }\n str = str.replace(/^[\\W_]+|[\\W_]+$/g, '').toLowerCase();\n str = str.charAt(0).toUpperCase() + str.slice(1);\n return str.replace(/[\\W_]+(\\w|$)/g, function (_, ch) {\n return ch.toUpperCase();\n });\n}\n\nmodule.exports = pascalcase;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nmodule.exports = charsEndIndex;\n","/*!\n * Clamp.js 0.7.0\n * Based on: https://github.com/xavi160/Clamp.js/commit/e313818da231b8dd8fd603dd9c9a61a9d725c22f\n * Mixins:\n * - https://github.com/josephschmitt/Clamp.js/pull/50\n * - https://github.com/josephschmitt/Clamp.js/pull/49\n *\n * Copyright 2011-2013, Joseph Schmitt http://joe.sh\n * Released under the WTFPL license\n * http://sam.zoy.org/wtfpl/\n */\n\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node, CommonJS-like\n module.exports = factory();\n } else {\n // Browser globals\n root.$clamp = factory();\n }\n}(this, function() {\n /**\n * Clamps a text node.\n * @param {HTMLElement} element. Element containing the text node to clamp.\n * @param {Object} options. Options to pass to the clamper.\n */\n function clamp(element, options) {\n options = options || {};\n\n var self = this,\n win = window,\n opt = {\n clamp: options.clamp || 2,\n useNativeClamp: typeof(options.useNativeClamp) != 'undefined' ? options.useNativeClamp : true,\n splitOnChars: options.splitOnChars || ['.', '-', '–', '—', ' '], //Split on sentences (periods), hypens, en-dashes, em-dashes, and words (spaces).\n animate: options.animate || false,\n truncationChar: options.truncationChar || '…',\n truncationHTML: options.truncationHTML\n },\n\n sty = element.style,\n originalText = element.innerHTML,\n\n supportsNativeClamp = typeof(element.style.webkitLineClamp) != 'undefined',\n clampValue = opt.clamp,\n isCSSValue = clampValue.indexOf && (clampValue.indexOf('px') > -1 || clampValue.indexOf('em') > -1),\n truncationHTMLContainer;\n\n if (opt.truncationHTML) {\n truncationHTMLContainer = document.createElement('span');\n truncationHTMLContainer.innerHTML = opt.truncationHTML;\n }\n\n\n // UTILITY FUNCTIONS __________________________________________________________\n\n /**\n * Return the current style for an element.\n * @param {HTMLElement} elem The element to compute.\n * @param {string} prop The style property.\n * @returns {number}\n */\n function computeStyle(elem, prop) {\n if (!win.getComputedStyle) {\n win.getComputedStyle = function(el, pseudo) {\n this.el = el;\n this.getPropertyValue = function(prop) {\n var re = /(\\-([a-z]){1})/g;\n if (prop == 'float') prop = 'styleFloat';\n if (re.test(prop)) {\n prop = prop.replace(re, function() {\n return arguments[2].toUpperCase();\n });\n }\n return el.currentStyle && el.currentStyle[prop] ? el.currentStyle[prop] : null;\n };\n return this;\n };\n }\n\n return win.getComputedStyle(elem, null).getPropertyValue(prop);\n }\n\n /**\n * Returns the maximum number of lines of text that should be rendered based\n * on the current height of the element and the line-height of the text.\n */\n function getMaxLines(height) {\n var availHeight = height || (element.parentNode.clientHeight-element.offsetTop),\n lineHeight = getLineHeight(element);\n\n return Math.max(Math.floor(availHeight / lineHeight), 0);\n }\n\n /**\n * Returns the maximum height a given element should have based on the line-\n * height of the text and the given clamp value.\n */\n function getMaxHeight(clmp) {\n var lineHeight = getLineHeight(element);\n return lineHeight * clmp;\n }\n\n /**\n * Returns the line-height of an element as an integer.\n */\n function getLineHeight(elem) {\n var lh = computeStyle(elem, 'line-height');\n if (lh == 'normal') {\n // Normal line heights vary from browser to browser. The spec recommends\n // a value between 1.0 and 1.2 of the font size. Using 1.1 to split the diff.\n lh = parseFloat(computeStyle(elem, 'font-size')) * 1.2;\n }\n return Math.round(parseFloat(lh));\n }\n\n\n // MEAT AND POTATOES (MMMM, POTATOES...) ______________________________________\n var splitOnChars = opt.splitOnChars.slice(0),\n splitChar = splitOnChars[0],\n chunks,\n lastChunk;\n\n /**\n * Gets an element's last child. That may be another node or a node's contents.\n */\n function getLastChild(elem) {\n if (!elem.lastChild) {\n return;\n }\n //Current element has children, need to go deeper and get last child as a text node\n if (elem.lastChild.children && elem.lastChild.children.length > 0) {\n return getLastChild(Array.prototype.slice.call(elem.children).pop());\n } else if (\n !elem.lastChild\n || !elem.lastChild.nodeValue\n || elem.lastChild.nodeValue == opt.truncationChar\n || elem.lastChild.nodeType === Node.COMMENT_NODE\n ) {\n // Handle scenario where the last child is white-space node\n var sibling = elem.lastChild;\n do {\n if (!sibling) {\n return;\n }\n // TEXT_NODE\n if (\n sibling.nodeType === 3\n && ['', opt.truncationChar].indexOf(sibling.nodeValue) === -1\n && elem.lastChild.nodeType !== Node.COMMENT_NODE\n ) {\n return sibling;\n }\n if (sibling.lastChild) {\n var lastChild = getLastChild(sibling);\n if (lastChild) {\n return lastChild;\n }\n }\n //Current sibling is pretty useless\n sibling.parentNode.removeChild(sibling);\n } while (sibling = sibling.previousSibling);\n }\n //This is the last child we want, return it\n else {\n return elem.lastChild;\n }\n }\n\n /**\n * Removes one character at a time from the text until its width or\n * height is beneath the passed-in max param.\n */\n function truncate(target, maxHeight) {\n if (!target || !maxHeight) {\n return;\n }\n\n /**\n * Resets global variables.\n */\n function reset() {\n splitOnChars = opt.splitOnChars.slice(0);\n splitChar = splitOnChars[0];\n chunks = null;\n lastChunk = null;\n }\n\n var nodeValue = target.nodeValue.replace(opt.truncationChar, '');\n\n //Grab the next chunks\n if (!chunks) {\n //If there are more characters to try, grab the next one\n if (splitOnChars.length > 0) {\n splitChar = splitOnChars.shift();\n }\n //No characters to chunk by. Go character-by-character\n else {\n splitChar = '';\n }\n\n chunks = nodeValue.split(splitChar);\n }\n\n //If there are chunks left to remove, remove the last one and see if\n // the nodeValue fits.\n if (chunks.length > 1) {\n // console.log('chunks', chunks);\n lastChunk = chunks.pop();\n // console.log('lastChunk', lastChunk);\n applyEllipsis(target, chunks.join(splitChar));\n }\n //No more chunks can be removed using this character\n else {\n chunks = null;\n }\n\n //Insert the custom HTML before the truncation character\n if (truncationHTMLContainer) {\n target.nodeValue = target.nodeValue.replace(opt.truncationChar, '');\n element.innerHTML = target.nodeValue + ' ' + truncationHTMLContainer.innerHTML + opt.truncationChar;\n }\n\n //Search produced valid chunks\n if (chunks) {\n //It fits\n if (element.clientHeight <= maxHeight) {\n //There's still more characters to try splitting on, not quite done yet\n if (splitOnChars.length >= 0 && splitChar !== '') {\n applyEllipsis(target, chunks.join(splitChar) + splitChar + lastChunk);\n chunks = null;\n }\n //Finished!\n else {\n return element.innerHTML;\n }\n }\n }\n //No valid chunks produced\n else {\n //No valid chunks even when splitting by letter, time to move\n //on to the next node\n if (splitChar === '') {\n applyEllipsis(target, '');\n target = getLastChild(element);\n\n reset();\n }\n }\n\n //If you get here it means still too big, let's keep truncating\n if (opt.animate) {\n setTimeout(function() {\n truncate(target, maxHeight);\n }, opt.animate === true ? 10 : opt.animate);\n } else {\n return truncate(target, maxHeight);\n }\n }\n\n function applyEllipsis(elem, str) {\n elem.nodeValue = str + opt.truncationChar;\n }\n\n\n // CONSTRUCTOR ________________________________________________________________\n\n if (clampValue == 'auto') {\n clampValue = getMaxLines();\n } else if (isCSSValue) {\n clampValue = getMaxLines(parseInt(clampValue, 10));\n }\n\n var clampedText;\n if (supportsNativeClamp && opt.useNativeClamp) {\n sty.overflow = 'hidden';\n sty.textOverflow = 'ellipsis';\n sty.webkitBoxOrient = 'vertical';\n sty.display = '-webkit-box';\n sty.webkitLineClamp = clampValue;\n\n if (isCSSValue) {\n sty.height = opt.clamp + 'px';\n }\n } else {\n var height = getMaxHeight(clampValue);\n if (height < element.clientHeight) {\n clampedText = truncate(getLastChild(element), height);\n }\n }\n\n return {\n 'original': originalText,\n 'clamped': clampedText\n };\n }\n\n return clamp;\n}));\n","/*!\n * object.pick <https://github.com/jonschlinkert/object.pick>\n *\n * Copyright (c) 2014-2015 Jon Schlinkert, contributors.\n * Licensed under the MIT License\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nmodule.exports = function pick(obj, keys) {\n if (!isObject(obj) && typeof obj !== 'function') {\n return {};\n }\n\n var res = {};\n if (typeof keys === 'string') {\n if (keys in obj) {\n res[keys] = obj[keys];\n }\n return res;\n }\n\n var len = keys.length;\n var idx = -1;\n\n while (++idx < len) {\n var key = keys[idx];\n if (key in obj) {\n res[key] = obj[key];\n }\n }\n return res;\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\n// random #'s we need to init node and clockseq\nvar _seedBytes = rng();\n\n// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\nvar _nodeId = [\n _seedBytes[0] | 0x01,\n _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]\n];\n\n// Per 4.2.2, randomize (14 bit) clockseq\nvar _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;\n\n// Previous uuid creation time\nvar _lastMSecs = 0, _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n var node = options.node || _nodeId;\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options == 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; 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); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; 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); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; 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); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dots = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; 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); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n var _super = _createSuper(Dots);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dots, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave,\n infinite = _this$props.infinite,\n slidesToScroll = _this$props.slidesToScroll,\n slidesToShow = _this$props.slidesToShow,\n slideCount = _this$props.slideCount,\n currentSlide = _this$props.currentSlide;\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = [];\n\n for (var i = 0; i < dotCount; i++) {\n var _rightBound = (i + 1) * slidesToScroll - 1;\n\n var rightBound = infinite ? _rightBound : (0, _innerSliderUtils.clamp)(_rightBound, 0, slideCount - 1);\n\n var _leftBound = rightBound - (slidesToScroll - 1);\n\n var leftBound = infinite ? _leftBound : (0, _innerSliderUtils.clamp)(_leftBound, 0, slideCount - 1);\n var className = (0, _classnames[\"default\"])({\n \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NextArrow = exports.PrevArrow = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; 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); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n var _super = _createSuper(PrevArrow);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PrevArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var prevClasses = {\n \"slick-arrow\": true,\n \"slick-prev\": true\n };\n var prevHandler = this.clickHandler.bind(this, {\n message: \"previous\"\n });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(prevClasses),\n style: {\n display: \"block\"\n },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow;\n\n if (this.props.prevArrow) {\n prevArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n } else {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"0\",\n type: \"button\"\n }, prevArrowProps), \" \", \"Previous\");\n }\n\n return prevArrow;\n }\n }]);\n\n return PrevArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.PrevArrow = PrevArrow;\n\nvar NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n var _super2 = _createSuper(NextArrow);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(NextArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var nextClasses = {\n \"slick-arrow\": true,\n \"slick-next\": true\n };\n var nextHandler = this.clickHandler.bind(this, {\n message: \"next\"\n });\n\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(nextClasses),\n style: {\n display: \"block\"\n },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow;\n\n if (this.props.nextArrow) {\n nextArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n } else {\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"1\",\n type: \"button\"\n }, nextArrowProps), \" \", \"Next\");\n }\n\n return nextArrow;\n }\n }]);\n\n return NextArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.NextArrow = NextArrow;","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", {\n style: {\n display: \"block\"\n }\n }, dots);\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"button\", null, i + 1);\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\nvar _default = defaultProps;\nexports[\"default\"] = _default;","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n","/**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\nfunction baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n}\n\nmodule.exports = baseFindKey;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Sticky = function (_React$Component) {\n _inherits(Sticky, _React$Component);\n\n function Sticky(props) {\n _classCallCheck(this, Sticky);\n\n var _this = _possibleConstructorReturn(this, (Sticky.__proto__ || Object.getPrototypeOf(Sticky)).call(this, props));\n\n _this.updateContext = function (_ref) {\n var inherited = _ref.inherited,\n node = _ref.node;\n\n _this.containerNode = node;\n _this.setState({\n containerOffset: inherited,\n distanceFromBottom: _this.getDistanceFromBottom()\n });\n };\n\n _this.recomputeState = function () {\n var isSticky = _this.isSticky();\n var height = _this.getHeight();\n var width = _this.getWidth();\n var xOffset = _this.getXOffset();\n var distanceFromBottom = _this.getDistanceFromBottom();\n var hasChanged = _this.state.isSticky !== isSticky;\n\n _this.setState({ isSticky: isSticky, height: height, width: width, xOffset: xOffset, distanceFromBottom: distanceFromBottom });\n\n if (hasChanged) {\n if (_this.channel) {\n _this.channel.update(function (data) {\n data.offset = isSticky ? _this.state.height : 0;\n });\n }\n\n _this.props.onStickyStateChange(isSticky);\n }\n };\n\n _this.state = {};\n return _this;\n }\n\n _createClass(Sticky, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.channel = this.context['sticky-channel'];\n this.channel.subscribe(this.updateContext);\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.on(['resize', 'scroll', 'touchstart', 'touchmove', 'touchend', 'pageshow', 'load'], this.recomputeState);\n this.recomputeState();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps() {\n this.recomputeState();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.off(['resize', 'scroll', 'touchstart', 'touchmove', 'touchend', 'pageshow', 'load'], this.recomputeState);\n this.channel.unsubscribe(this.updateContext);\n }\n }, {\n key: 'getXOffset',\n value: function getXOffset() {\n return this.refs.placeholder.getBoundingClientRect().left;\n }\n }, {\n key: 'getWidth',\n value: function getWidth() {\n return this.refs.placeholder.getBoundingClientRect().width;\n }\n }, {\n key: 'getHeight',\n value: function getHeight() {\n return _reactDom2.default.findDOMNode(this.refs.children).getBoundingClientRect().height;\n }\n }, {\n key: 'getDistanceFromTop',\n value: function getDistanceFromTop() {\n return this.refs.placeholder.getBoundingClientRect().top;\n }\n }, {\n key: 'getDistanceFromBottom',\n value: function getDistanceFromBottom() {\n if (!this.containerNode) return 0;\n return this.containerNode.getBoundingClientRect().bottom;\n }\n }, {\n key: 'isSticky',\n value: function isSticky() {\n if (!this.props.isActive) return false;\n\n var fromTop = this.getDistanceFromTop();\n var fromBottom = this.getDistanceFromBottom();\n\n var topBreakpoint = this.state.containerOffset - this.props.topOffset;\n var bottomBreakpoint = this.state.containerOffset + this.props.bottomOffset;\n\n return fromTop <= topBreakpoint && fromBottom >= bottomBreakpoint;\n }\n }, {\n key: 'on',\n value: function on(events, callback) {\n events.forEach(function (evt) {\n window.addEventListener(evt, callback);\n });\n }\n }, {\n key: 'off',\n value: function off(events, callback) {\n events.forEach(function (evt) {\n window.removeEventListener(evt, callback);\n });\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(newProps, newState) {\n var _this2 = this;\n\n // Have we changed the number of props?\n var propNames = Object.keys(this.props);\n if (Object.keys(newProps).length != propNames.length) return true;\n\n // Have we changed any prop values?\n var valuesMatch = propNames.every(function (key) {\n return newProps.hasOwnProperty(key) && newProps[key] === _this2.props[key];\n });\n if (!valuesMatch) return true;\n\n // Have we changed any state that will always impact rendering?\n var state = this.state;\n if (newState.isSticky !== state.isSticky) return true;\n\n // If we are sticky, have we changed any state that will impact rendering?\n if (state.isSticky) {\n if (newState.height !== state.height) return true;\n if (newState.width !== state.width) return true;\n if (newState.xOffset !== state.xOffset) return true;\n if (newState.containerOffset !== state.containerOffset) return true;\n if (newState.distanceFromBottom !== state.distanceFromBottom) return true;\n }\n\n return false;\n }\n\n /*\n * The special sauce.\n */\n\n }, {\n key: 'render',\n value: function render() {\n var placeholderStyle = { paddingBottom: 0 };\n var className = this.props.className;\n\n // To ensure that this component becomes sticky immediately on mobile devices instead\n // of disappearing until the scroll event completes, we add `transform: translateZ(0)`\n // to 'kick' rendering of this element to the GPU\n // @see http://stackoverflow.com/questions/32875046\n var style = _extends({}, { transform: 'translateZ(0)' }, this.props.style);\n\n if (this.state.isSticky) {\n var _stickyStyle = {\n position: 'fixed',\n top: this.state.containerOffset,\n left: this.state.xOffset,\n width: this.state.width\n };\n\n var bottomLimit = this.state.distanceFromBottom - this.state.height - this.props.bottomOffset;\n if (this.state.containerOffset > bottomLimit) {\n _stickyStyle.top = bottomLimit;\n }\n\n placeholderStyle.paddingBottom = this.state.height;\n\n className += ' ' + this.props.stickyClassName;\n style = _extends({}, style, _stickyStyle, this.props.stickyStyle);\n }\n\n var _props = this.props,\n topOffset = _props.topOffset,\n isActive = _props.isActive,\n stickyClassName = _props.stickyClassName,\n stickyStyle = _props.stickyStyle,\n bottomOffset = _props.bottomOffset,\n onStickyStateChange = _props.onStickyStateChange,\n props = _objectWithoutProperties(_props, ['topOffset', 'isActive', 'stickyClassName', 'stickyStyle', 'bottomOffset', 'onStickyStateChange']);\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('div', { ref: 'placeholder', style: placeholderStyle }),\n _react2.default.createElement(\n 'div',\n _extends({}, props, { ref: 'children', className: className, style: style }),\n this.props.children\n )\n );\n }\n }]);\n\n return Sticky;\n}(_react2.default.Component);\n\nSticky.propTypes = {\n isActive: _propTypes2.default.bool,\n className: _propTypes2.default.string,\n style: _propTypes2.default.object,\n stickyClassName: _propTypes2.default.string,\n stickyStyle: _propTypes2.default.object,\n topOffset: _propTypes2.default.number,\n bottomOffset: _propTypes2.default.number,\n onStickyStateChange: _propTypes2.default.func\n};\nSticky.defaultProps = {\n isActive: true,\n className: '',\n style: {},\n stickyClassName: 'sticky',\n stickyStyle: {},\n topOffset: 0,\n bottomOffset: 0,\n onStickyStateChange: function onStickyStateChange() {}\n};\nSticky.contextTypes = {\n 'sticky-channel': _propTypes2.default.any\n};\nexports.default = Sticky;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _channel = require('./channel');\n\nvar _channel2 = _interopRequireDefault(_channel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_React$Component) {\n _inherits(Container, _React$Component);\n\n function Container(props) {\n _classCallCheck(this, Container);\n\n var _this = _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).call(this, props));\n\n _this.updateOffset = function (_ref) {\n var inherited = _ref.inherited,\n offset = _ref.offset;\n\n _this.channel.update(function (data) {\n data.inherited = inherited + offset;\n });\n };\n\n _this.channel = new _channel2.default({ inherited: 0, offset: 0, node: null });\n return _this;\n }\n\n _createClass(Container, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return { 'sticky-channel': this.channel };\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var parentChannel = this.context['sticky-channel'];\n if (parentChannel) parentChannel.subscribe(this.updateOffset);\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var node = _reactDom2.default.findDOMNode(this);\n this.channel.update(function (data) {\n data.node = node;\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.channel.update(function (data) {\n data.node = null;\n });\n\n var parentChannel = this.context['sticky-channel'];\n if (parentChannel) parentChannel.unsubscribe(this.updateOffset);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n this.props,\n this.props.children\n );\n }\n }]);\n\n return Container;\n}(_react2.default.Component);\n\nContainer.contextTypes = {\n 'sticky-channel': _propTypes2.default.any\n};\nContainer.childContextTypes = {\n 'sticky-channel': _propTypes2.default.any\n};\nexports.default = Container;\nmodule.exports = exports['default'];","// extracted by mini-css-extract-plugin\nmodule.exports = {\"redesign\":\"App_redesign_3QOUj\",\"nonRedesign\":\"App_nonRedesign_2Ser4\",\"redesignWithNetworkHeader\":\"App_redesignWithNetworkHeader_1Otgx\",\"graphikFont\":\"App_graphikFont_3dlMd\",\"proximaFont\":\"App_proximaFont_3GYVH\",\"blackBackground\":\"App_blackBackground_3quLa\",\"gradientBackground\":\"App_gradientBackground_j3yTy\",\"app\":\"App_app_1kQ9A\",\"defaultPadding\":\"App_defaultPadding_1XaSu\",\"navPadding\":\"App_navPadding_1LIaR\",\"redesignCollections\":\"App_redesignCollections_36gNE\",\"appWrapper\":\"App_appWrapper_DGvEA\",\"digitalChannelMenu\":\"App_digitalChannelMenu_RtjBy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"firstElementText\":\"HomeImageHeader_firstElementText_2-Yp3\",\"titleAndDescription\":\"HomeImageHeader_titleAndDescription_sWdRv\",\"location\":\"HomeImageHeader_location_313eC\",\"image\":\"HomeImageHeader_image_25UMc\",\"seriesLogo\":\"HomeImageHeader_seriesLogo_Y_EYE\",\"header\":\"HomeImageHeader_header_QI4J_\",\"altHeader\":\"HomeImageHeader_altHeader_3TTrM\",\"container\":\"HomeImageHeader_container_36yEJ\",\"firstSlide\":\"HomeImageHeader_firstSlide_qc3nM\",\"imageAndText\":\"HomeImageHeader_imageAndText_1yVFN\",\"text\":\"HomeImageHeader_text_1uW74\",\"imageOnly\":\"HomeImageHeader_imageOnly_2qAPa\",\"headerTitle\":\"HomeImageHeader_headerTitle_1NlxD\",\"description\":\"HomeImageHeader_description_2llc2\",\"descriptionText\":\"HomeImageHeader_descriptionText_29Cmi\",\"highlightMovie\":\"HomeImageHeader_highlightMovie_237ov\",\"buttons\":\"HomeImageHeader_buttons_1WF4Y\",\"buttonGutter\":\"HomeImageHeader_buttonGutter_2a-Ev\",\"secondaryText\":\"HomeImageHeader_secondaryText_36pKv\",\"showButton\":\"HomeImageHeader_showButton_34n-V\",\"showName\":\"HomeImageHeader_showName_3xjRC\",\"highlight\":\"HomeImageHeader_highlight_3nFEV\",\"highlightSports\":\"HomeImageHeader_highlightSports_1qztu\",\"logo\":\"HomeImageHeader_logo_3YARG\",\"locationRequired\":\"HomeImageHeader_locationRequired_FEMSC\",\"locationDescription\":\"HomeImageHeader_locationDescription_1m-2f\",\"fade\":\"HomeImageHeader_fade_2orZy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"overflowDropdown\":\"DropdownPrimetime_overflowDropdown_138KS\",\"overflowHoverEffect\":\"DropdownPrimetime_overflowHoverEffect_1PhPj\",\"selectedText\":\"DropdownPrimetime_selectedText_3pTxp\",\"header\":\"DropdownPrimetime_header_1269n\",\"headerInnerContainer\":\"DropdownPrimetime_headerInnerContainer_2NPOk\",\"openedZIndex\":\"DropdownPrimetime_openedZIndex_FqILT\",\"closedZIndex\":\"DropdownPrimetime_closedZIndex_3QWzO\",\"container\":\"DropdownPrimetime_container_2qXKZ\",\"dropdown\":\"DropdownPrimetime_dropdown_3lNAT\",\"itemContainer\":\"DropdownPrimetime_itemContainer_2qIne\",\"item\":\"DropdownPrimetime_item_14apF\",\"itemActive\":\"DropdownPrimetime_itemActive_2VMFU\",\"itemContent\":\"DropdownPrimetime_itemContent_2o13C\",\"selectedTextOpen\":\"DropdownPrimetime_selectedTextOpen_3Pmzd\",\"headerInnerContainerOpen\":\"DropdownPrimetime_headerInnerContainerOpen_2pzk_\",\"headerOpen\":\"DropdownPrimetime_headerOpen_2eFNW\",\"dateDropdown\":\"DropdownPrimetime_dateDropdown_IGGex\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tile\":\"videoTiles_tile_1ldww\",\"title\":\"videoTiles_title_38AN6\",\"subtitle\":\"videoTiles_subtitle_3FOxW\",\"metadata\":\"videoTiles_metadata_2TwUP\",\"networkIcon\":\"videoTiles_networkIcon_Bcu9o\",\"titleLock\":\"videoTiles_titleLock_ZW7Of\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"list\":\"StringList_list_1D1hd\",\"label\":\"StringList_label_3my39\",\"item\":\"StringList_item_3QT8D\"};","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// Tell whether the rect is visible, given an offset\n//\n// return: boolean\nmodule.exports = function (offset, rect, containmentRect) {\n var offsetDir = offset.direction;\n var offsetVal = offset.value;\n\n // Rules for checking different kind of offsets. In example if the element is\n // 90px below viewport and offsetTop is 100, it is considered visible.\n switch (offsetDir) {\n case 'top':\n return ((containmentRect.top + offsetVal) < rect.top) &&\n (containmentRect.bottom > rect.bottom) &&\n (containmentRect.left < rect.left) &&\n (containmentRect.right > rect.right);\n\n case 'left':\n return ((containmentRect.left + offsetVal) < rect.left) &&\n (containmentRect.bottom > rect.bottom) &&\n (containmentRect.top < rect.top) &&\n (containmentRect.right > rect.right);\n\n case 'bottom':\n return ((containmentRect.bottom - offsetVal) > rect.bottom) &&\n (containmentRect.left < rect.left) &&\n (containmentRect.right > rect.right) &&\n (containmentRect.top < rect.top);\n\n case 'right':\n return ((containmentRect.right - offsetVal) > rect.right) &&\n (containmentRect.left < rect.left) &&\n (containmentRect.top < rect.top) &&\n (containmentRect.bottom > rect.bottom);\n }\n}\n","(function(root,factory){\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.eventListener = factory();\n }\n}(this, function () {\n\tfunction wrap(standard, fallback) {\n\t\treturn function (el, evtName, listener, useCapture) {\n\t\t\tif (el[standard]) {\n\t\t\t\tel[standard](evtName, listener, useCapture);\n\t\t\t} else if (el[fallback]) {\n\t\t\t\tel[fallback]('on' + evtName, listener);\n\t\t\t}\n\t\t}\n\t}\n\n return {\n\t\tadd: wrap('addEventListener', 'attachEvent'),\n\t\tremove: wrap('removeEventListener', 'detachEvent')\n\t};\n}));","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar style = function style(element, prop) {\n return typeof getComputedStyle !== 'undefined' ? getComputedStyle(element, null).getPropertyValue(prop) : element.style[prop];\n};\n\nvar overflow = function overflow(element) {\n return style(element, 'overflow') + style(element, 'overflow-y') + style(element, 'overflow-x');\n};\n\nvar scrollParent = function scrollParent(element) {\n if (!(element instanceof HTMLElement)) {\n return window;\n }\n\n var parent = element;\n\n while (parent) {\n if (parent === document.body || parent === document.documentElement) {\n break;\n }\n\n if (!parent.parentNode) {\n break;\n }\n\n if (/(scroll|auto)/.test(overflow(parent))) {\n return parent;\n }\n\n parent = parent.parentNode;\n }\n\n return window;\n};\n\nexports.default = scrollParent;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inViewport;\n\nvar _getElementPosition = require('./getElementPosition');\n\nvar _getElementPosition2 = _interopRequireDefault(_getElementPosition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isHidden = function isHidden(element) {\n return element.offsetParent === null;\n};\n\nfunction inViewport(element, container, customOffset) {\n if (isHidden(element)) {\n return false;\n }\n\n var top = void 0;\n var bottom = void 0;\n var left = void 0;\n var right = void 0;\n\n if (typeof container === 'undefined' || container === window) {\n top = window.pageYOffset;\n left = window.pageXOffset;\n bottom = top + window.innerHeight;\n right = left + window.innerWidth;\n } else {\n if (!inViewport(container, window, customOffset)) return false;\n\n var containerPosition = (0, _getElementPosition2.default)(container);\n\n top = containerPosition.top;\n left = containerPosition.left;\n bottom = top + container.offsetHeight;\n right = left + container.offsetWidth;\n }\n\n var elementPosition = (0, _getElementPosition2.default)(element);\n\n return top <= elementPosition.top + element.offsetHeight + customOffset.top && bottom >= elementPosition.top - customOffset.bottom && left <= elementPosition.left + element.offsetWidth + customOffset.left && right >= elementPosition.left - customOffset.right;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getElementPosition;\n/*\r\n* Finds element's position relative to the whole document,\r\n* rather than to the viewport as it is the case with .getBoundingClientRect().\r\n*/\nfunction getElementPosition(element) {\n var rect = element.getBoundingClientRect();\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n };\n}","(function(self) {\n 'use strict';\n\n if (self.NodeList.prototype.forEach) {\n return;\n }\n\n self.NodeList.prototype.forEach = function forEach(cb, thisArg) {\n for (var i = 0; i < this.length; i++) {\n cb.call(thisArg, this[i], i, this);\n }\n };\n})(typeof self !== 'undefined' ? self : this);\n","/* global Blob */\n// This file is generated. Do not edit this file directly.\n// Command: 'npm run generate' should be used to update the content.\n\n/**\n * @type {Blob}\n */\nvar AUDIO = new Blob([new Uint8Array([255, 227, 24, 196, 0, 0, 0, 3, 72, 1, 64, 0, 0, 4, 132, 16, 31, 227, 192, 225, 76, 255, 67, 12, 255, 221, 27, 255, 228, 97, 73, 63, 255, 195, 131, 69, 192, 232, 223, 255, 255, 207, 102, 239, 255, 255, 255, 101, 158, 206, 70, 20, 59, 255, 254, 95, 70, 149, 66, 4, 16, 128, 0, 2, 2, 32, 240, 138, 255, 36, 106, 183, 255, 227, 24, 196, 59, 11, 34, 62, 80, 49, 135, 40, 0, 253, 29, 191, 209, 200, 141, 71, 7, 255, 252, 152, 74, 15, 130, 33, 185, 6, 63, 255, 252, 195, 70, 203, 86, 53, 15, 255, 255, 247, 103, 76, 121, 64, 32, 47, 255, 34, 227, 194, 209, 138, 76, 65, 77, 69, 51, 46, 57, 55, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 255, 227, 24, 196, 73, 13, 153, 210, 100, 81, 135, 56, 0, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170])], { type: 'audio/mpeg' });\n\n/**\n * @type {Blob}\n */\nvar VIDEO = new Blob([new Uint8Array([0, 0, 0, 28, 102, 116, 121, 112, 105, 115, 111, 109, 0, 0, 2, 0, 105, 115, 111, 109, 105, 115, 111, 50, 109, 112, 52, 49, 0, 0, 0, 8, 102, 114, 101, 101, 0, 0, 2, 239, 109, 100, 97, 116, 33, 16, 5, 32, 164, 27, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 33, 16, 5, 32, 164, 27, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 167, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 2, 194, 109, 111, 111, 118, 0, 0, 0, 108, 109, 118, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 232, 0, 0, 0, 47, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 236, 116, 114, 97, 107, 0, 0, 0, 92, 116, 107, 104, 100, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 101, 100, 116, 115, 0, 0, 0, 28, 101, 108, 115, 116, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 47, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 100, 109, 100, 105, 97, 0, 0, 0, 32, 109, 100, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 68, 0, 0, 8, 0, 85, 196, 0, 0, 0, 0, 0, 45, 104, 100, 108, 114, 0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 1, 15, 109, 105, 110, 102, 0, 0, 0, 16, 115, 109, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 100, 105, 110, 102, 0, 0, 0, 28, 100, 114, 101, 102, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1, 0, 0, 0, 211, 115, 116, 98, 108, 0, 0, 0, 103, 115, 116, 115, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 87, 109, 112, 52, 97, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 0, 172, 68, 0, 0, 0, 0, 0, 51, 101, 115, 100, 115, 0, 0, 0, 0, 3, 128, 128, 128, 34, 0, 2, 0, 4, 128, 128, 128, 20, 64, 21, 0, 0, 0, 0, 1, 244, 0, 0, 1, 243, 249, 5, 128, 128, 128, 2, 18, 16, 6, 128, 128, 128, 1, 2, 0, 0, 0, 24, 115, 116, 116, 115, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 4, 0, 0, 0, 0, 28, 115, 116, 115, 99, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 28, 115, 116, 115, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 115, 0, 0, 1, 116, 0, 0, 0, 20, 115, 116, 99, 111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 44, 0, 0, 0, 98, 117, 100, 116, 97, 0, 0, 0, 90, 109, 101, 116, 97, 0, 0, 0, 0, 0, 0, 0, 33, 104, 100, 108, 114, 0, 0, 0, 0, 0, 0, 0, 0, 109, 100, 105, 114, 97, 112, 112, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 105, 108, 115, 116, 0, 0, 0, 37, 169, 116, 111, 111, 0, 0, 0, 29, 100, 97, 116, 97, 0, 0, 0, 1, 0, 0, 0, 0, 76, 97, 118, 102, 53, 54, 46, 52, 48, 46, 49, 48, 49])], { type: 'video/mp4' });\n\n/* global URL */\nfunction setupDefaultValues(options) {\n return Object.assign({\n muted: false,\n timeout: 250,\n inline: false\n }, options);\n}\n\nfunction startPlayback(_ref, elementCallback) {\n var muted = _ref.muted,\n timeout = _ref.timeout,\n inline = _ref.inline;\n\n var _elementCallback = elementCallback(),\n element = _elementCallback.element,\n source = _elementCallback.source;\n\n var playResult = void 0;\n var timeoutId = void 0;\n var sendOutput = void 0;\n\n element.muted = muted;\n if (muted === true) {\n element.setAttribute('muted', 'muted');\n }\n // indicates that the video is to be played \"inline\",\n // that is within the element's playback area.\n if (inline === true) {\n element.setAttribute('playsinline', 'playsinline');\n }\n\n element.src = source;\n\n return new Promise(function (resolve) {\n playResult = element.play();\n timeoutId = setTimeout(function () {\n sendOutput(false, new Error('Timeout ' + timeout + ' ms has been reached'));\n }, timeout);\n sendOutput = function sendOutput(result) {\n var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // Clean up to avoid MediaElementLeak\n element.remove();\n element.srcObject = null;\n\n clearTimeout(timeoutId);\n resolve({ result: result, error: error });\n };\n\n if (playResult !== undefined) {\n playResult.then(function () {\n return sendOutput(true);\n }).catch(function (playError) {\n return sendOutput(false, playError);\n });\n } else {\n sendOutput(true);\n }\n });\n}\n\n//\n// API\n//\n\nfunction video(options) {\n options = setupDefaultValues(options);\n return startPlayback(options, function () {\n return {\n element: document.createElement('video'),\n source: URL.createObjectURL(VIDEO)\n };\n });\n}\n\nfunction audio(options) {\n options = setupDefaultValues(options);\n return startPlayback(options, function () {\n return {\n element: document.createElement('audio'),\n source: URL.createObjectURL(AUDIO)\n };\n });\n}\n\nvar index = { audio: audio, video: video };\n\nexport default index;\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar throttle = function throttle(fn) {\n var threshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;\n var last;\n var timer;\n return function () {\n var now = +new Date();\n var timePassed = !!last && now < last + threshold;\n\n if (timePassed) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n last = now;\n fn();\n }, threshold);\n } else {\n last = now;\n fn();\n }\n };\n};\n\nvar _default = throttle;\nexports.default = _default;","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InfiniteScroll = function (_Component) {\n _inherits(InfiniteScroll, _Component);\n\n function InfiniteScroll(props) {\n _classCallCheck(this, InfiniteScroll);\n\n var _this = _possibleConstructorReturn(this, (InfiniteScroll.__proto__ || Object.getPrototypeOf(InfiniteScroll)).call(this, props));\n\n _this.scrollListener = _this.scrollListener.bind(_this);\n _this.eventListenerOptions = _this.eventListenerOptions.bind(_this);\n _this.mousewheelListener = _this.mousewheelListener.bind(_this);\n return _this;\n }\n\n _createClass(InfiniteScroll, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.pageLoaded = this.props.pageStart;\n this.options = this.eventListenerOptions();\n this.attachScrollListener();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.props.isReverse && this.loadMore) {\n var parentElement = this.getParentElement(this.scrollComponent);\n parentElement.scrollTop = parentElement.scrollHeight - this.beforeScrollHeight + this.beforeScrollTop;\n this.loadMore = false;\n }\n this.attachScrollListener();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.detachScrollListener();\n this.detachMousewheelListener();\n }\n }, {\n key: 'isPassiveSupported',\n value: function isPassiveSupported() {\n var passive = false;\n\n var testOptions = {\n get passive() {\n passive = true;\n }\n };\n\n try {\n document.addEventListener('test', null, testOptions);\n document.removeEventListener('test', null, testOptions);\n } catch (e) {\n // ignore\n }\n return passive;\n }\n }, {\n key: 'eventListenerOptions',\n value: function eventListenerOptions() {\n var options = this.props.useCapture;\n\n if (this.isPassiveSupported()) {\n options = {\n useCapture: this.props.useCapture,\n passive: true\n };\n }\n return options;\n }\n\n // Set a defaut loader for all your `InfiniteScroll` components\n\n }, {\n key: 'setDefaultLoader',\n value: function setDefaultLoader(loader) {\n this.defaultLoader = loader;\n }\n }, {\n key: 'detachMousewheelListener',\n value: function detachMousewheelListener() {\n var scrollEl = window;\n if (this.props.useWindow === false) {\n scrollEl = this.scrollComponent.parentNode;\n }\n\n scrollEl.removeEventListener('mousewheel', this.mousewheelListener, this.options ? this.options : this.props.useCapture);\n }\n }, {\n key: 'detachScrollListener',\n value: function detachScrollListener() {\n var scrollEl = window;\n if (this.props.useWindow === false) {\n scrollEl = this.getParentElement(this.scrollComponent);\n }\n\n scrollEl.removeEventListener('scroll', this.scrollListener, this.options ? this.options : this.props.useCapture);\n scrollEl.removeEventListener('resize', this.scrollListener, this.options ? this.options : this.props.useCapture);\n }\n }, {\n key: 'getParentElement',\n value: function getParentElement(el) {\n var scrollParent = this.props.getScrollParent && this.props.getScrollParent();\n if (scrollParent != null) {\n return scrollParent;\n }\n return el && el.parentNode;\n }\n }, {\n key: 'filterProps',\n value: function filterProps(props) {\n return props;\n }\n }, {\n key: 'attachScrollListener',\n value: function attachScrollListener() {\n var parentElement = this.getParentElement(this.scrollComponent);\n\n if (!this.props.hasMore || !parentElement) {\n return;\n }\n\n var scrollEl = window;\n if (this.props.useWindow === false) {\n scrollEl = parentElement;\n }\n\n scrollEl.addEventListener('mousewheel', this.mousewheelListener, this.options ? this.options : this.props.useCapture);\n scrollEl.addEventListener('scroll', this.scrollListener, this.options ? this.options : this.props.useCapture);\n scrollEl.addEventListener('resize', this.scrollListener, this.options ? this.options : this.props.useCapture);\n\n if (this.props.initialLoad) {\n this.scrollListener();\n }\n }\n }, {\n key: 'mousewheelListener',\n value: function mousewheelListener(e) {\n // Prevents Chrome hangups\n // See: https://stackoverflow.com/questions/47524205/random-high-content-download-time-in-chrome/47684257#47684257\n if (e.deltaY === 1 && !this.isPassiveSupported()) {\n e.preventDefault();\n }\n }\n }, {\n key: 'scrollListener',\n value: function scrollListener() {\n var el = this.scrollComponent;\n var scrollEl = window;\n var parentNode = this.getParentElement(el);\n\n var offset = void 0;\n if (this.props.useWindow) {\n var doc = document.documentElement || document.body.parentNode || document.body;\n var scrollTop = scrollEl.pageYOffset !== undefined ? scrollEl.pageYOffset : doc.scrollTop;\n if (this.props.isReverse) {\n offset = scrollTop;\n } else {\n offset = this.calculateOffset(el, scrollTop);\n }\n } else if (this.props.isReverse) {\n offset = parentNode.scrollTop;\n } else {\n offset = el.scrollHeight - parentNode.scrollTop - parentNode.clientHeight;\n }\n\n // Here we make sure the element is visible as well as checking the offset\n if (offset < Number(this.props.threshold) && el && el.offsetParent !== null) {\n this.detachScrollListener();\n this.beforeScrollHeight = parentNode.scrollHeight;\n this.beforeScrollTop = parentNode.scrollTop;\n // Call loadMore after detachScrollListener to allow for non-async loadMore functions\n if (typeof this.props.loadMore === 'function') {\n this.props.loadMore(this.pageLoaded += 1);\n this.loadMore = true;\n }\n }\n }\n }, {\n key: 'calculateOffset',\n value: function calculateOffset(el, scrollTop) {\n if (!el) {\n return 0;\n }\n\n return this.calculateTopPosition(el) + (el.offsetHeight - scrollTop - window.innerHeight);\n }\n }, {\n key: 'calculateTopPosition',\n value: function calculateTopPosition(el) {\n if (!el) {\n return 0;\n }\n return el.offsetTop + this.calculateTopPosition(el.offsetParent);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var renderProps = this.filterProps(this.props);\n\n var children = renderProps.children,\n element = renderProps.element,\n hasMore = renderProps.hasMore,\n initialLoad = renderProps.initialLoad,\n isReverse = renderProps.isReverse,\n loader = renderProps.loader,\n loadMore = renderProps.loadMore,\n pageStart = renderProps.pageStart,\n ref = renderProps.ref,\n threshold = renderProps.threshold,\n useCapture = renderProps.useCapture,\n useWindow = renderProps.useWindow,\n getScrollParent = renderProps.getScrollParent,\n props = _objectWithoutProperties(renderProps, ['children', 'element', 'hasMore', 'initialLoad', 'isReverse', 'loader', 'loadMore', 'pageStart', 'ref', 'threshold', 'useCapture', 'useWindow', 'getScrollParent']);\n\n props.ref = function (node) {\n _this2.scrollComponent = node;\n if (ref) {\n ref(node);\n }\n };\n\n var childrenArray = [children];\n if (hasMore) {\n if (loader) {\n isReverse ? childrenArray.unshift(loader) : childrenArray.push(loader);\n } else if (this.defaultLoader) {\n isReverse ? childrenArray.unshift(this.defaultLoader) : childrenArray.push(this.defaultLoader);\n }\n }\n return _react2.default.createElement(element, props, childrenArray);\n }\n }]);\n\n return InfiniteScroll;\n}(_react.Component);\n\nInfiniteScroll.propTypes = {\n children: _propTypes2.default.node.isRequired,\n element: _propTypes2.default.node,\n hasMore: _propTypes2.default.bool,\n initialLoad: _propTypes2.default.bool,\n isReverse: _propTypes2.default.bool,\n loader: _propTypes2.default.node,\n loadMore: _propTypes2.default.func.isRequired,\n pageStart: _propTypes2.default.number,\n ref: _propTypes2.default.func,\n getScrollParent: _propTypes2.default.func,\n threshold: _propTypes2.default.number,\n useCapture: _propTypes2.default.bool,\n useWindow: _propTypes2.default.bool\n};\nInfiniteScroll.defaultProps = {\n element: 'div',\n hasMore: false,\n initialLoad: true,\n pageStart: 0,\n ref: null,\n threshold: 250,\n useWindow: true,\n isReverse: false,\n useCapture: false,\n loader: null,\n getScrollParent: null\n};\nexports.default = InfiniteScroll;\nmodule.exports = exports['default'];\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * A local reference to the document.\n */\nvar document = window.document;\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect, DOMRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array<!Document>} */\n this._monitoringDocuments = [];\n /** @private @const {!Array<function()>} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect, DOMRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect} boundingClientRect\n * @param {DOMRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array<Object>} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n if (doc != (this.root && this.root.ownerDocument || document)) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc = (this.root && this.root.ownerDocument || document);\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: crossOriginUpdater && !this.root ? null : rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the <body>\n // or <html> element, update the intersection rect.\n // Note: <body> and <html> cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use <html>/<body> instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target) &&\n (!this.root || this.root.ownerDocument == target.ownerDocument);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {Object} parentBoundingRect The parent's bound client rect.\n * @param {Object} parentIntersectionRect The parent's own intersection rect.\n * @return {Object} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n if (parent && parent.assignedSlot) {\n // If the parent is distributed in a <slot>, return the parent of a slot.\n return parent.assignedSlot.parentNode;\n }\n\n return parent;\n}\n\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","'use strict';\n\nvar base64_url_decode = require('./base64_url_decode');\n\nfunction InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = 'InvalidTokenError';\n\nmodule.exports = function (token,options) {\n if (typeof token !== 'string') {\n throw new InvalidTokenError('Invalid token specified');\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split('.')[pos]));\n } catch (e) {\n throw new InvalidTokenError('Invalid token specified: ' + e.message);\n }\n};\n\nmodule.exports.InvalidTokenError = InvalidTokenError;\n","var atob = require('./atob');\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = '0' + code;\n }\n return '%' + code;\n }));\n}\n\nmodule.exports = function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try{\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n};\n","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction polyfill (input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\n\nmodule.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar getCookiePath = function (options) { return (options === null || options === void 0 ? void 0 : options.path) || \"/\"; };\nvar getTokenExpiration = function (token) {\n return (token === null || token === void 0 ? void 0 : token.tokenExpiration) ? new Date(token.tokenExpiration) : undefined;\n};\nvar getCookieDomain = function (options) {\n var _a;\n // add dot prefix to support subdomains for non-localhost hostname\n var hostname = ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.hostname) || \"\";\n return hostname.includes(\"local\") ? options === null || options === void 0 ? void 0 : options.domain : \".\" + hostname;\n};\nexports.getCookieOptions = function (token, options) {\n var domain = getCookieDomain(options);\n var expires = getTokenExpiration(token);\n var path = getCookiePath(options);\n return { domain: domain, expires: expires, path: path };\n};\n//# sourceMappingURL=Auth.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * New Relic Doc: https://docs.newrelic.com/docs/browser/new-relic-browser/browser-agent-spa-api\n * */\nexports.isNrAvailable = function () { return window && window.newrelic; };\nexports.nrAddRelease = function (name, version) {\n if (exports.isNrAvailable()) {\n window.newrelic.addRelease(name, version);\n }\n};\nexports.nrAddPageAction = function (name, data) {\n if (exports.isNrAvailable()) {\n window.newrelic.addPageAction(name, data);\n }\n};\nexports.nrAddToTrace = function (name, data) {\n if (data === void 0) { data = {}; }\n if (exports.isNrAvailable()) {\n var start = Date.now();\n window.newrelic.addToTrace(__assign({ name: name, start: start }, data));\n }\n};\nexports.nrNoticeError = function (error, data) {\n if (data === void 0) { data = {}; }\n if (exports.isNrAvailable()) {\n window.newrelic.noticeError(error, data);\n }\n};\nexports.nrSetCustomAttribute = function (name, val) {\n if (exports.isNrAvailable()) {\n window.newrelic.setCustomAttribute(name, val);\n }\n};\nexports.nrSetPageViewName = function (name, val) {\n if (exports.isNrAvailable()) {\n window.newrelic.setPageViewName(name, val);\n }\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./Redfast\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"../../core\");\nvar Actions_1 = require(\"./Actions\");\nexports.Redfast = {\n createActions: function (config) {\n if (typeof window !== undefined) {\n core_1.AuthStore.init({});\n window.FoxRedfast = new Actions_1.RedfastActions(config);\n core_1.logInfo(\"Redfast SDK\", \"Actions Initialized\");\n }\n },\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Evergent_1 = require(\"../../core/Evergent\");\nvar core_1 = require(\"../../core\");\nvar RedfastActions = /** @class */ (function () {\n function RedfastActions(_a) {\n var apiKey = _a.apiKey, apiUrl = _a.apiUrl;\n this.ev = new Evergent_1.Evergent({ baseURL: apiUrl, apiKey: apiKey });\n }\n RedfastActions.prototype.applyCoupon = function (couponCode) {\n return this.ev.applyCoupon(couponCode).catch(core_1.logError);\n };\n RedfastActions.prototype.upgradeSubscription = function (_a) {\n var _this = this;\n var planId = _a.planId, _b = _a.couponCode, couponCode = _b === void 0 ? \"\" : _b, _c = _a.promotionId, promotionId = _c === void 0 ? \"\" : _c;\n return this.ev\n .getPaymentMethods()\n .then(function (_a) {\n var hasPaymentMethods = _a.hasPaymentMethods, methods = _a.methods;\n if (hasPaymentMethods) {\n var method = methods[0];\n var paymentmethodInfo = method.paymentmethodInfo;\n var params = {\n planId: planId,\n promotionId: promotionId,\n couponCode: couponCode,\n paymentmethodInfo: paymentmethodInfo,\n };\n return _this.ev.changeService(params);\n }\n return Promise.reject(Error(\"No Payment Methods found on profile\"));\n })\n .catch(core_1.logError);\n };\n return RedfastActions;\n}());\nexports.RedfastActions = RedfastActions;\n//# sourceMappingURL=Actions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Api_1 = require(\"./Api\");\nvar Auth_1 = require(\"./Auth\");\nvar Evergent_1 = require(\"../helpers/Evergent\");\nvar PaymentMethods_1 = require(\"../helpers/PaymentMethods\");\nvar Evergent = /** @class */ (function () {\n function Evergent(config) {\n this.api = Api_1.Api(config);\n this.apiKey = config.apiKey;\n }\n Evergent.prototype.getPaymentMethods = function () {\n var profileId = Auth_1.AuthStore.getUserId();\n var params = {\n GetPaymentMethodsRequestMessage: {\n apiKey: this.apiKey,\n channelPartnerID: \"FOXUSA\",\n cpCustomerID: profileId,\n },\n };\n return this.api\n .post(\"/getPaymentMethods\", params, { token: true })\n .then(function (res) { return Evergent_1.resolveResponse(res, \"GetPaymentMethodsResponseMessage\"); })\n .then(PaymentMethods_1.parsePaymentMethods);\n };\n Evergent.prototype.changeService = function (_a) {\n var planId = _a.planId, couponCode = _a.couponCode, promotionId = _a.promotionId, paymentmethodInfo = _a.paymentmethodInfo, shippingAddress = _a.shippingAddress;\n var profileId = Auth_1.AuthStore.getUserId();\n var params = {\n ChangeServiceRequestMessage: {\n changeType: \"Upgrade\",\n apiKey: this.apiKey,\n channelPartnerID: \"FOXUSA\",\n cpCustomerID: profileId,\n couponCode: couponCode,\n promotionId: promotionId,\n newServiceID: planId,\n paymentmethodInfo: paymentmethodInfo,\n parameters: [\n {\n paramName: \"Opertion Type\",\n paramValue: \"Upgrade\",\n },\n ],\n shippingAddress: shippingAddress,\n },\n };\n return this.api\n .post(\"/changeService\", params, { token: true })\n .then(function (res) { return Evergent_1.resolveResponse(res, \"ChangeServiceResponseMessage\"); });\n };\n Evergent.prototype.applyCoupon = function (couponCode) {\n var params = {\n ApplyCouponCodeRequestMessage: {\n apiKey: this.apiKey,\n channelPartnerID: \"FOXUSA\",\n couponCode: couponCode,\n },\n };\n return this.api\n .post(\"/applyCouponV2\", params, { token: true })\n .then(function (res) { return Evergent_1.resolveResponse(res, \"ApplyCouponCodeResponseMessage\"); });\n };\n return Evergent;\n}());\nexports.Evergent = Evergent;\n//# sourceMappingURL=Evergent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction resolveResponse(res, responseKey) {\n var data = res[responseKey];\n if (data) {\n var _a = data.responseCode, responseCode = _a === void 0 ? \"0\" : _a, _b = data.failureMessage, failureMessage = _b === void 0 ? {} : _b;\n if (responseCode === \"1\") {\n return Promise.resolve(data);\n }\n var _c = failureMessage.errorMessage, errorMessage = _c === void 0 ? \"\" : _c;\n return Promise.reject(Error(errorMessage));\n }\n return Promise.reject(Error(\"Invalid Evergent response\"));\n}\nexports.resolveResponse = resolveResponse;\n//# sourceMappingURL=Evergent.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PAYMENT_METHODS = {\n CARD: \"direct credit card\",\n PAYPAL: \"paypal\",\n APPLE: \"apple pay\",\n};\nvar PAYMENT_METHODS_LABELS = {\n CARD: \"Card\",\n PAYPAL: \"PayPal Account\",\n APPLE: \"Apple Pay\",\n};\nvar getCardPaymentMethod = function (method) {\n var cardInfo = method.CardInfoMessage;\n return __assign({ label: method.label, type: exports.PAYMENT_METHODS.CARD, paymentmethodInfo: {\n label: \"Card\",\n cardInfoMsg: { paymentMethodId: cardInfo.paymentMethodId },\n } }, cardInfo);\n};\nvar getPaypalPaymentMethod = function (method) {\n var paypalInfo = method.PayPalAccountMessage;\n return __assign({ label: method.label, type: exports.PAYMENT_METHODS.CARD, paymentmethodInfo: {\n label: \"PayPalAccount\",\n paypalAccountMsg: { paymentMethodId: paypalInfo.paymentMethodId },\n } }, paypalInfo);\n};\nvar getApplePaymentMethod = function (method) {\n var appleInfo = method.ApplePayInfoMessage;\n return __assign({ label: method.label, type: exports.PAYMENT_METHODS.CARD, paymentmethodInfo: {\n label: \"ApplePay\",\n cardInfoMsg: { paymentMethodId: appleInfo.paymentMethodId },\n } }, appleInfo);\n};\nvar parsePaymentMethodByLabel = function (method) {\n switch (method.label) {\n case PAYMENT_METHODS_LABELS.CARD:\n return getCardPaymentMethod(method);\n case PAYMENT_METHODS_LABELS.PAYPAL:\n return getPaypalPaymentMethod(method);\n case PAYMENT_METHODS_LABELS.APPLE:\n return getApplePaymentMethod(method);\n }\n};\nfunction parsePaymentMethods(_a) {\n var _b = _a.PaymentMethods, PaymentMethods = _b === void 0 ? [] : _b;\n var labels = Object.values(PAYMENT_METHODS_LABELS);\n var pms = PaymentMethods.filter(function (_a) {\n var _b = _a.status, status = _b === void 0 ? \"\" : _b, _c = _a.isAutoPayment, isAutoPayment = _c === void 0 ? false : _c;\n return status === \"Active\" && isAutoPayment;\n }).filter(function (_a) {\n var _b = _a.label, label = _b === void 0 ? \"\" : _b;\n return labels.includes(label);\n });\n var paymentMethods = pms.map(parsePaymentMethodByLabel);\n var hasPaymentMethods = paymentMethods.length > 0;\n var methods = hasPaymentMethods ? paymentMethods : [];\n return {\n methods: methods,\n hasPaymentMethods: hasPaymentMethods,\n };\n}\nexports.parsePaymentMethods = parsePaymentMethods;\n//# sourceMappingURL=PaymentMethods.js.map","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","/* global LanguageExport, ExternalConfigExport */\n\nwindow.Language = LanguageExport;\nwindow.ExternalConfig = ExternalConfigExport;\n\nexport default true;\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Style from './Icon.module.scss';\n\nconst renderGraphic = (icon, igStyle) => {\n switch (icon) {\n case 'add':\n return (\n <g>\n <path d=\"M19 13h-6v6h-2v-6h-6v-2h6v-6h2v6h6v2z\" />\n </g>\n );\n case 'add-thin':\n return (\n <g>\n <path d=\"M13.083,10.902l10.902,0l0,2.181l-10.902,0l0,10.902l-2.181,0l0,-10.902l-10.902,0l0,-2.181l10.902,0l0,-10.902l2.181,0l0,10.902Z\" />\n </g>\n );\n case 'apple':\n return (\n <g>\n <path d=\"M18.685,12.678c-0.027,-2.949 2.408,-4.364 2.519,-4.433c-1.371,-2.005 -3.503,-2.28 -4.264,-2.312c-1.814,-0.183 -3.541,1.068 -4.46,1.068c-0.919,0 -2.341,-1.041 -3.845,-1.012c-1.979,0.029 -3.802,1.15 -4.821,2.921c-2.055,3.564 -0.524,8.847 1.476,11.74c0.979,1.414 2.145,3.008 3.679,2.949c1.477,-0.059 2.035,-0.955 3.818,-0.955c1.783,0 2.285,0.955 3.846,0.927c1.588,-0.031 2.595,-1.445 3.567,-2.864c1.122,-1.642 1.587,-3.231 1.613,-3.314c-0.035,-0.015 -3.096,-1.188 -3.128,-4.715\" />\n <path\n id=\"path190\"\n d=\"M15.752,4.02c0.813,-0.985 1.362,-2.356 1.211,-3.721c-1.172,0.047 -2.59,0.781 -3.432,1.766c-0.753,0.871 -1.414,2.266 -1.235,3.604c1.307,0.102 2.642,-0.665 3.456,-1.649\"\n />\n </g>\n );\n case 'article':\n return (\n <g\n id=\"Permutations\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n strokeLinecap=\"square\"\n >\n <g id=\"1440_Home\" transform=\"translate(-84.000000, -2818.000000)\" stroke=\"#FFFFFF\">\n <g id=\"Links\" transform=\"translate(66.000000, 2734.000000)\">\n <g id=\"Group-5\">\n <g id=\"Group-4\" transform=\"translate(0.000000, 60.000000)\">\n <g id=\"Group\">\n <g id=\"Icon/Article\" transform=\"translate(17.000000, 23.000000)\">\n <line\n x1=\"1.50593822\"\n y1=\"2.47348735\"\n x2=\"13.514349\"\n y2=\"2.47348735\"\n id=\"Line\"\n />\n <line\n x1=\"1.50593822\"\n y1=\"5.82449578\"\n x2=\"9.76434947\"\n y2=\"5.82449578\"\n id=\"Line-Copy\"\n />\n <line\n x1=\"1.50593822\"\n y1=\"9.17550422\"\n x2=\"13.514349\"\n y2=\"9.17550422\"\n id=\"Line-Copy-2\"\n />\n <line\n x1=\"1.50593822\"\n y1=\"12.5265127\"\n x2=\"9.76434947\"\n y2=\"12.5265127\"\n id=\"Line-Copy-3\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n );\n case 'arrow-back':\n return (\n <g>\n <path d=\"M20 11h-12.17l5.59-5.59-1.42-1.41-8 8 8 8 1.41-1.41-5.58-5.59h12.17v-2z\" />\n </g> // eslint-disable-line\n );\n case 'arrow-drop-up':\n return (\n <g>\n <path d=\"M7 14l5-5 5 5z\" />\n </g> // eslint-disable-line\n );\n case 'arrow-forward':\n return (\n <g>\n <path d=\"M12 4l-1.41 1.41 5.58 5.59h-12.17v2h12.17l-5.58 5.59 1.41 1.41 8-8z\" />\n </g> // eslint-disable-line\n );\n case 'arrow-left':\n return (\n <g>\n <path d=\"M6.342,12.192l11.303,11.303l0.333,-0.334l-11.303,-11.302l11.303,-11.303l-0.333,-0.333l-11.303,11.303l-0.002,-0.003l-0.334,0.333l0.003,0.003l-0.003,0.002l0.334,0.333l0.002,-0.002Z\" />\n </g> // eslint-disable-line\n );\n case 'arrow-right':\n return (\n <g>\n <path d=\"M17.642,11.526l-11.303,-11.303l-0.333,0.333l11.303,11.303l-11.303,11.302l0.333,0.334l11.303,-11.303l0.002,0.002l0.334,-0.333l-0.003,-0.002l0.003,-0.003l-0.334,-0.333l-0.002,0.003Z\" />\n </g> // eslint-disable-line\n );\n case 'ios-arrow-right':\n return (\n <g\n xmlns=\"http://www.w3.org/2000/svg\"\n id=\"_x33_20_x5F_See-All-Grid_x5F_Cast-Popup\"\n transform=\"translate(-272.000000, -117.000000)\"\n >\n <g id=\"Arrows\" transform=\"translate(15.000000, 109.000000)\">\n <g\n id=\"Icons_x2F_White_x2F_Back-Arrow\"\n transform=\"translate(266.000000, 24.000000) scale(-1, 1) translate(-266.000000, -24.000000) translate(242.000000, 0.000000)\"\n >\n <polygon\n id=\"iOS-Back-Arrow\"\n className=\"st0\"\n points=\"32.8,37.2 19.7,24 32.8,10.8 30,8 14,24 30,40 \"\n />\n </g>\n </g>\n </g>\n );\n case 'ios-arrow-left':\n return (\n <g\n xmlns=\"http://www.w3.org/2000/svg\"\n id=\"_x33_20_x5F_See-All-Grid_x5F_Cast-Popup\"\n transform=\"translate(-29.000000, -117.000000)\"\n >\n <g id=\"Arrows\" transform=\"translate(15.000000, 109.000000)\">\n <g id=\"Icons_x2F_White_x2F_Back-Arrow\">\n <polygon\n id=\"iOS-Back-Arrow\"\n className=\"st0\"\n points=\"32.8,37.2 19.7,24 32.8,10.8 30,8 14,24 30,40 \"\n />\n </g>\n </g>\n </g>\n );\n case 'auth-key':\n return (\n <g>\n <path d=\"M21.816,8.958l-11.295,0c-1.006,-1.759 -2.785,-2.958 -4.874,-2.958c-3.094,0 -5.647,2.718 -5.647,5.995c0,3.278 2.553,5.996 5.647,5.996c2.089,0 3.946,-1.279 4.951,-3.118l2.167,0l1.779,-1.918l1.392,1.439l1.393,-1.439l1.392,1.519l1.393,-1.519l1.392,1.439l2.476,-2.638l0,-0.32l-2.166,-2.478Zm-18.722,4.716c-0.851,0 -1.547,-0.719 -1.547,-1.679c0,-0.959 0.696,-1.678 1.547,-1.678c0.851,0 1.548,0.719 1.548,1.678c0.077,0.96 -0.619,1.679 -1.548,1.679Z\" />\n </g> // eslint-disable-line\n );\n case 'bell':\n return (\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n stroke=\"#FFF\"\n strokeWidth=\"2\"\n d=\"M1.032 18.998c5.988.002 11.975.002 17.963 0-.004-1.236-.008-3.21.004-3.534.007-.194-.037-.361-.124-.5-.124-.2-.319-.346-.526-.461-.574-.32-1.59-.564-1.59-.564s-.334-.08-.743-.143L16 12.985s-.04-2.523 0-4.505c.022-1.077-.249-1.976-.778-2.704-.629-.864-1.587-1.496-3.308-2.944-.064-.344-.138-.998-.61-1.44-.264-.247-.666-.391-1.235-.391-.47 0-.816.142-1.068.365-.485.427-.675 1.064-.815 1.461-.259.733-.593 1.001-.769 1.082-1.101.505-1.968 1.12-2.553 1.924C4.33 6.569 4.043 7.46 4 8.54c-.067 1.622-.018 4.411-.018 4.411s.006.325.019.816c-.42.078-.758.167-.758.167s-.953.253-1.573.58c-.346.182-.596.388-.629.761-.038.45-.022 2.48-.008 3.723z\"\n transform=\"translate(2.978 .116)\"\n />\n <path\n fill=\"#FFF\"\n d=\"M12.986 21s.007.221 0 .504c-.026.964-1.48 2.448-2.983 2.448-1.503 0-3.07-1.205-3-2.445.014-.271 0-.507 0-.507\"\n transform=\"translate(2.978 .116)\"\n />\n </g>\n );\n case 'bell-filled':\n return (\n <g fill=\"#FFF\" fillRule=\"evenodd\">\n <path\n stroke=\"#FFF\"\n strokeWidth=\"2\"\n d=\"M1.032 18.998c5.988.002 11.975.002 17.963 0-.004-1.236-.008-3.21.004-3.534.007-.194-.037-.361-.124-.5-.124-.2-.319-.346-.526-.461-.574-.32-1.59-.564-1.59-.564s-.334-.08-.743-.143L16 12.985s-.04-2.523 0-4.505c.022-1.077-.249-1.976-.778-2.704-.629-.864-1.587-1.496-3.308-2.944-.064-.344-.138-.998-.61-1.44-.264-.247-.666-.391-1.235-.391-.47 0-.816.142-1.068.365-.485.427-.675 1.064-.815 1.461-.259.733-.593 1.001-.769 1.082-1.101.505-1.968 1.12-2.553 1.924C4.33 6.569 4.043 7.46 4 8.54c-.067 1.622-.018 4.411-.018 4.411s.006.325.019.816c-.42.078-.758.167-.758.167s-.953.253-1.573.58c-.346.182-.596.388-.629.761-.038.45-.022 2.48-.008 3.723z\"\n transform=\"rotate(-16 22.576 2.965)\"\n />\n <path\n d=\"M12.986 21s.007.221 0 .504c-.026.964-1.48 2.448-2.983 2.448-1.503 0-3.07-1.205-3-2.445.014-.271 0-.507 0-.507\"\n transform=\"rotate(-16 22.576 2.965)\"\n />\n </g>\n );\n case 'blocked':\n return (\n <g>\n <circle cx=\"10.5\" cy=\"10.5\" r=\"10.5\" stroke=\"#F00\" />\n <path fill=\"#F00\" d=\"M17.571 2.722l.707.707-14.85 14.85-.706-.708z\" />\n </g>\n );\n case 'cancel':\n return (\n <g>\n <path d=\"M12 2c-5.53 0-10 4.47-10 10s4.47 10 10 10 10-4.47 10-10-4.47-10-10-10zm5 13.59l-1.41 1.41-3.59-3.59-3.59 3.59-1.41-1.41 3.59-3.59-3.59-3.59 1.41-1.41 3.59 3.59 3.59-3.59 1.41 1.41-3.59 3.59 3.59 3.59z\" />\n </g> // eslint-disable-line\n );\n case 'carousel-arrow-left':\n return (\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(4 1.32)\">\n <filter\n fill=\"#000\"\n width=\"139.7%\"\n height=\"139.7%\"\n x=\"-19.8%\"\n y=\"-14.2%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feOffset dy=\"2\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n <feGaussianBlur in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" stdDeviation=\"2\" />\n <feColorMatrix\n in=\"shadowBlurOuter1\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\"\n />\n </filter>\n <circle fill=\"#FFF\" cx=\"18\" cy=\"18\" r=\"17.634\" />\n </g>\n <path\n stroke=\"#000\"\n strokeWidth=\"2\"\n d=\"M17.345 19.32l6.904-6.905.406.406-6.499 6.5 6.5 6.498-.407.407-6.904-6.905z\"\n />\n </g>\n );\n case 'carousel-arrow-right':\n return (\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(3 2)\">\n <filter\n fill=\"#000\"\n width=\"139.7%\"\n height=\"139.7%\"\n x=\"-19.8%\"\n y=\"-14.2%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feOffset dy=\"2\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n <feGaussianBlur in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" stdDeviation=\"2\" />\n <feColorMatrix\n in=\"shadowBlurOuter1\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\"\n />\n </filter>\n <circle fill=\"#FFF\" cx=\"18\" cy=\"18\" r=\"17.634\" />\n </g>\n <path\n stroke=\"#000\"\n strokeWidth=\"2\"\n d=\"M26.655 20l-6.904 6.906-.406-.407L25.844 20l-6.5-6.5.407-.406L26.655 20V20z\"\n />\n </g>\n );\n case 'checkmark':\n return (\n <g>\n <path d=\"M4.649,8.807l-4.367,4.311l9.021,10.173l14.473,-16.283l-4.411,-4.256l-10.122,11.192l-4.594,-5.137Z\" />\n </g> // eslint-disable-line\n );\n case 'checkmark-circle':\n return (\n <g fillRule=\"nonzero\" fill=\"none\">\n <path\n stroke=\"#FFF\"\n strokeWidth=\"2.7\"\n d=\"M68.878 35.486c0 18.613-15.09 33.702-33.703 33.702-18.613 0-33.702-15.089-33.702-33.702S16.562 1.784 35.175 1.784c18.614 0 33.703 15.089 33.703 33.702z\"\n />\n <path\n fill=\"#FFF\"\n d=\"M27.941 50.2l1.435 1.434 1.435-1.435 23.196-23.196 1.436-1.435-2.87-2.87-1.436 1.435-23.196 23.196h2.87L19.213 35.73l-1.435-1.435-2.87 2.87 1.435 1.435z\"\n />\n </g>\n );\n case 'checkmark-thin':\n return (\n <g>\n <path\n fill=\"none\"\n fillRule=\"evenodd\"\n stroke=\"#FFF\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.3\"\n d=\"M2 10.464l5.667 5.465L19 5\"\n />\n </g>\n );\n case 'chevron-down':\n return (\n <path\n fill=\"#FFF\"\n d=\"M5 6L10 1.495 8.714 0 4.997 3.407 1.286 0 0 1.495z\"\n transform=\"translate(.725)\"\n />\n );\n case 'circle-arrow-down':\n return (\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#FFF\"\n fillRule=\"nonzero\"\n d=\"M9 12.375l4.5-4.224-1.158-1.401-3.344 3.194-3.34-3.194L4.5 8.151z\"\n />\n <circle cx=\"9\" cy=\"9\" r=\"9\" />\n <circle cx=\"9\" cy=\"9\" r=\"8\" stroke=\"#FFF\" strokeWidth=\"2\" opacity=\".65\" />\n </g> // eslint-disable-line\n );\n case 'circle-arrow-up':\n return (\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#FFF\"\n fillRule=\"nonzero\"\n d=\"M9 5.625L4.5 9.849l1.158 1.401 3.344-3.194 3.34 3.194L13.5 9.849z\"\n />\n <circle cx=\"9\" cy=\"9\" r=\"9\" />\n <circle cx=\"9\" cy=\"9\" r=\"8\" stroke=\"#FFF\" strokeWidth=\"2\" opacity=\".65\" />\n </g> // eslint-disable-line\n );\n case 'circle-plus':\n return (\n <g\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n fillRule=\"evenodd\"\n transform=\"translate(1 1)\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"11\" stroke=\"#FFF\" strokeWidth=\"2\" />\n <path fill=\"#FFF\" d=\"M10 5h2v12h-2z\" />\n <path fill=\"#FFF\" d=\"M17 10v2H5v-2z\" />\n </g>\n );\n case 'circle-plus-checked':\n return (\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"#FFF\"\n fillRule=\"evenodd\"\n d=\"M12.602 0c6.96 0 12.602 5.642 12.602 12.602s-5.642 12.602-12.602 12.602S0 19.562 0 12.602 5.642 0 12.602 0zm5.604 7.34l-7.14 7.393-3.306-3.192-1.459 1.51 3.306 3.193-.155.161 1.51 1.46 8.755-9.066-1.511-1.459z\"\n />\n );\n case 'circle-plus-hover':\n return (\n <>\n <defs>\n <filter\n id=\"a\"\n width=\"175%\"\n height=\"175%\"\n x=\"-37.5%\"\n y=\"-37.5%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feOffset dy=\"1\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n <feGaussianBlur in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" stdDeviation=\"2\" />\n <feColorMatrix\n in=\"shadowBlurOuter1\"\n result=\"shadowMatrixOuter1\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\"\n />\n <feMerge>\n <feMergeNode in=\"shadowMatrixOuter1\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n </defs>\n <g fill=\"none\" fillRule=\"evenodd\" stroke=\"#FFF\" transform=\"translate(.55 .77)\">\n <circle\n cx=\"13.91\"\n cy=\"13.91\"\n r=\"12.309\"\n fill=\"#000\"\n fillOpacity=\".25\"\n strokeWidth=\"1.739\"\n />\n <path\n fill=\"#FFF\"\n strokeWidth=\".927\"\n d=\"M14.685 8.297v5.4h5.398v1.157l-5.398.004-.004 5.397h-1.156v-5.401H8.128V13.7l5.397-.005.004-5.397h1.156z\"\n />\n </g>\n </>\n );\n case 'circle-plus-checked-hover':\n return (\n <>\n <defs>\n <filter\n id=\"a\"\n width=\"192.3%\"\n height=\"192.3%\"\n x=\"-46.2%\"\n y=\"-46.2%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feOffset dy=\"2\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n <feGaussianBlur in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" stdDeviation=\"2\" />\n <feColorMatrix\n in=\"shadowBlurOuter1\"\n result=\"shadowMatrixOuter1\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\"\n />\n <feMerge>\n <feMergeNode in=\"shadowMatrixOuter1\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n </defs>\n <path\n fill=\"#FFF\"\n fillRule=\"evenodd\"\n d=\"M12.164 0c6.718 0 12.164 5.446 12.164 12.164s-5.446 12.164-12.164 12.164S0 18.882 0 12.164 5.446 0 12.164 0zm5.404 7.122l-6.897 7.166L7.64 11.36 6.23 12.819l4.376 4.225 1.408-1.458 7.021-7.055-1.468-1.41z\"\n transform=\"translate(1.296 1.516)\"\n />\n </>\n );\n case 'close':\n return (\n <g>\n <path d=\"M19 6.41l-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z\" />\n </g> // eslint-disable-line\n );\n case 'external-link-square':\n return (\n <g fill=\"none\" fillRule=\"evenodd\" stroke=\"#FFF\" strokeWidth=\"2\">\n <g strokeLinecap=\"square\">\n <path d=\"M13.125 6.25v-3.5M8.75 1.875h4.375M12.25 2.75L5.72 9.28\" />\n </g>\n <path d=\"M13 10.432L4.563 2H1v12h12v-3.568z\" />\n </g>\n );\n case 'external-link-square-alt':\n return (\n <g fillRule=\"evenodd\" clipRule=\"evenodd\">\n <path d=\"M14 4h-13v18h20v-11h1v12h-22v-20h14v1zm10 5h-1v-6.293l-11.646 11.647-.708-.708 11.647-11.646h-6.293v-1h8v8z\" />\n </g>\n );\n case 'external-link-square-alt2':\n return (\n <g id=\"Permutations\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g\n id=\"1440_Home\"\n transform=\"translate(-313.000000, -2817.000000)\"\n fill=\"#FFFFFF\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n >\n <g id=\"Links\" transform=\"translate(66.000000, 2734.000000)\">\n <g id=\"Group-5\">\n <g id=\"Group-4\" transform=\"translate(0.000000, 60.000000)\">\n <g id=\"Group-2\" transform=\"translate(229.000000, 0.000000)\">\n <g id=\"Icon/LinkOut\" transform=\"translate(17.000000, 23.000000)\">\n <path\n d=\"M7.5,2.32954545 L1.77083333,2.32954545 L1.77083333,12.5568182 L12.1875,12.5568182 L12.1875,7.44318182 L12.7083333,7.44318182 L12.7083333,13.125 L1.25,13.125 L1.25,1.76136364 L7.5,1.76136364 L7.5,2.32954545 Z M13.75,5.17045455 L13.2291667,5.17045455 L13.2291667,1.59488636 L7.16354167,8.2125 L6.79479167,7.81022727 L12.8609375,1.19318182 L9.58333333,1.19318182 L9.58333333,0.625 L13.75,0.625 L13.75,5.17045455 Z\"\n id=\"Shape\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n );\n case 'extension':\n return (\n <g>\n <path d=\"M20.5 11h-1.5v-4c0-1.1-.9-2-2-2h-4v-1.5c0-1.38-1.12-2.5-2.5-2.5s-2.5 1.12-2.5 2.5v1.5h-4c-1.1 0-1.99.9-1.99 2v3.8h1.49c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7h-1.5v3.8c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7v1.5h3.8c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5s-1.12-2.5-2.5-2.5z\" />\n </g> // eslint-disable-line\n );\n case 'facebook':\n return (\n <g>\n <path\n id=\"icon-fb\"\n d=\"M30.1834292,15.0917146 C30.1834292,6.75678464 23.4266445,0 15.0917146,0 C6.75678464,0 0,6.75678464 0,15.0917146 C0,22.6244256 5.5188219,28.8679151 12.7336342,30 L12.7336342,19.4541633 L8.90175353,19.4541633 L8.90175353,15.0917146 L12.7336342,15.0917146 L12.7336342,11.7668212 C12.7336342,7.98446025 14.9867211,5.89520101 18.4339988,5.89520101 C20.0851562,5.89520101 21.8122437,6.18996106 21.8122437,6.18996106 L21.8122437,9.9039377 L19.9092139,9.9039377 C18.0344516,9.9039377 17.449795,11.0672672 17.449795,12.2607506 L17.449795,15.0917146 L21.6353877,15.0917146 L20.9662824,19.4541633 L17.449795,19.4541633 L17.449795,30 C24.6646073,28.8679151 30.1834292,22.6244256 30.1834292,15.0917146\"\n />\n </g> // eslint-disable-line\n );\n case 'favorite':\n return (\n <g>\n <path d=\"M10.684,6.204c-3.995,-3.464 -8.083,-1.986 -8.083,2.731c0,0.358 0.052,0.739 0.158,1.141c0.528,2.004 2.313,4.37 4.965,6.799c1.206,1.097 2.473,2.126 3.795,3.08c0.556,0.402 1.122,0.791 1.697,1.166l-2.273,-0.002c0.575,-0.374 1.14,-0.761 1.696,-1.162c1.322,-0.951 2.589,-1.977 3.795,-3.072c2.69,-2.462 4.486,-4.861 4.983,-6.885c0.093,-0.373 0.139,-0.729 0.139,-1.065c0,-4.649 -4.565,-6.255 -7.97,-2.836l-1.402,1.407l-1.502,-1.302l0.002,0Zm12.978,2.731c0,6.658 -11.584,13.922 -11.584,13.922c0,0 -11.582,-7.289 -11.582,-13.922c0,-6.631 6.33,-8.834 11.584,-4.277c4.612,-4.633 11.583,-2.38 11.583,4.277l-0.001,0l0,0Z\" />\n </g>\n );\n case 'favorite-filled':\n return (\n <g>\n <path d=\"M1.123,9.032c0,6.436 11.016,13.51 11.016,13.51c0,0 11.017,-7.05 11.017,-13.51c0,-6.459 -6.63,-8.646 -11.017,-4.151c-4.996,-4.421 -11.016,-2.284 -11.016,4.152l0,-0.001Z\" />\n </g>\n );\n case 'fb-logo':\n return (\n <g>\n <path\n d=\"M1024,512C1024,229.2,794.8,0,512,0S0,229.2,0,512c0,255.6,187.2,467.4,432,505.8V660H302V512h130V399.2\n C432,270.9,508.4,200,625.4,200c56,0,114.6,10,114.6,10v126h-64.6c-63.6,0-83.4,39.5-83.4,80v96h142l-22.7,148H592v357.8\n C836.8,979.4,1024,767.6,1024,512z\"\n />\n </g>\n );\n case 'filmstrip':\n return (\n <g fill=\"none\" fillRule=\"evenodd\">\n <path stroke=\"#FFF\" strokeWidth=\"1.125\" d=\"M.563 2.063h16.875v13.875H.563z\" />\n <path\n fill=\"#FFF\"\n d=\"M2.25 3.75H4.5v1.5H2.25zM13.5 3.75h2.25v1.5H13.5zM2.25 6.75H4.5v1.5H2.25zM13.5 6.75h2.25v1.5H13.5zM2.25 9.75H4.5v1.5H2.25zM2.25 12.75H4.5v1.5H2.25zM13.5 9.75h2.25v1.5H13.5zM13.5 12.75h2.25v1.5H13.5z\"\n />\n </g>\n );\n case 'folder-open':\n return (\n <g>\n <path d=\"M20 6h-8l-2-2h-6c-1.1 0-1.99.9-1.99 2l-.01 12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-10c0-1.1-.9-2-2-2zm0 12h-16v-10h16v10z\" />\n </g> // eslint-disable-line\n );\n case 'four-squares':\n return (\n <g>\n <path d=\"M0.36,0.314l10.621,0l0,10.62l-10.621,0l0,-10.62Zm0,12.747l10.621,0l0,10.621l-10.621,0l0,-10.621Zm12.747,-12.747l10.621,0l0,10.62l-10.621,0l0,-10.62Zm0,12.747l10.621,0l0,10.621l-10.621,0l0,-10.621Z\" />\n </g>\n );\n case 'fox-logo':\n return (\n <g>\n <path\n d=\"M12.313,7.559c2.397,0 4.33,2.047 4.33,4.576c0,2.529 -1.933,4.577 -4.33,4.577c-2.406,0 -4.349,-2.038 -4.349,-4.577c0,-2.529 1.943,-4.576 4.349,-4.576Zm-9.913,9.296l0,-9.468l5.46,0l0.165,2.597l-3.054,0l0,1.243l2.496,0l0,2.558l-2.496,0l0,3.07l-2.571,0Zm21.169,-0.03l-2.737,-4.886l2.5,-4.513l-2.765,0l-1.111,2.008l-1.135,-2.008l-2.817,0l2.529,4.537l-2.694,4.862l2.765,0l1.305,-2.347l1.323,2.347l2.837,0Zm-10.509,-2.814l0,-3.752c0,-0.446 -0.317,-0.825 -0.747,-0.825c-0.392,0 -0.728,0.379 -0.728,0.825l0,3.752c0,0.418 0.336,0.766 0.728,0.766c0.43,0 0.747,-0.299 0.747,-0.766Z\"\n fillRule=\"nonzero\"\n />\n </g>\n );\n\n case 'fox-watermark-logo':\n return (\n <g id=\"Network/FOXcom/White\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M69.7841286,0.0197794645 C86.8995394,0.0197794645 100.774127,13.8943666 100.774127,31.0097775 C100.774127,48.1251883 86.8995394,62 69.7841286,62 C52.6687177,62 38.7941305,48.1251883 38.7941305,31.0097775 C38.7941305,13.8943666 52.6687177,0.0197794645 69.7841286,0.0197794645 Z M111.616282,0.000112255758 L119.145051,13.2685183 L126.674044,0.000112255758 L146.795889,0.000112255758 L129.236843,31.0538715 L146.795889,61.9998653 L126.571892,61.9998653 L119.145051,48.901639 L111.718434,61.9998653 L91.494437,61.9998653 L109.053483,31.0538715 L91.494437,0.000112255758 L111.616282,0.000112255758 Z M38.5501988,0 L39.6869006,16.9106564 L18.7669176,16.9106564 L18.7669176,25.024278 L35.8279967,25.024278 L35.8279967,41.9894907 L18.7669176,41.9894907 L18.7669176,61.9999775 L1.42108547e-14,61.9999775 L1.42108547e-14,0 L38.5501988,0 Z M69.870341,12.7650737 C67.0410469,12.7650737 64.7537235,15.364019 64.7537235,18.2680754 L64.7537235,18.2680754 L64.7476617,43.6553886 C64.7476617,46.5612411 67.0410469,48.9147953 69.8683204,48.9147953 C72.6971655,48.9147953 75.2125925,46.6351054 75.2125925,43.7294774 L75.2125925,43.7294774 L75.2125925,18.2680754 C75.2125925,15.364019 72.6971655,12.7650737 69.870341,12.7650737 Z\"\n id=\"New-Fox-Logo\"\n fill=\"#FFFFFF\"\n />\n <path\n d=\"M178.770251,60.693693 C186.450423,60.693693 190.860329,57.3738765 194.130595,52.864872 L186.896368,47.711724 C184.81529,50.2387485 182.684661,51.9234315 179.067547,51.9234315 C174.211697,51.9234315 170.792781,47.8603725 170.792781,42.657675 L170.792781,42.558576 C170.792781,37.504527 174.211697,33.3919185 179.067547,33.3919185 C182.387364,33.3919185 184.666641,34.9775025 186.648621,37.4549775 L193.882848,31.855884 C190.810779,27.594627 186.252225,24.621657 179.166647,24.621657 C168.662152,24.621657 160.882881,32.549577 160.882881,42.657675 L160.882881,42.756774 C160.882881,53.1126195 168.860351,60.693693 178.770251,60.693693 Z M213.740763,60.693693 C224.443455,60.693693 232.470474,52.6171245 232.470474,42.657675 L232.470474,42.558576 C232.470474,32.5991265 224.542554,24.621657 213.839862,24.621657 C203.13717,24.621657 195.110151,32.6982255 195.110151,42.657675 L195.110151,42.756774 C195.110151,52.7162235 203.038071,60.693693 213.740763,60.693693 Z M154,51 C156.761424,51 159,53.2385763 159,56 C159,58.7614237 156.761424,61 154,61 C151.238576,61 149,58.7614237 149,56 C149,53.2385763 151.238576,51 154,51 Z M245.229716,25.31535 L253.504483,38.7432645 L261.779249,25.31535 L271.936897,25.31535 L271.936897,60 L262.373844,60 L262.373844,40.081101 L253.504483,53.657664 L253.306285,53.657664 L244.486474,40.1802 L244.486474,60 L235.072069,60 L235.072069,25.31535 L245.229716,25.31535 Z M213.740763,33.2928195 C219.042559,33.2928195 222.659673,37.6531755 222.659673,42.657675 L222.659673,42.756774 C222.659673,47.7612735 219.141658,52.0225305 213.839862,52.0225305 C208.587615,52.0225305 204.970501,47.6621745 204.970501,42.657675 L204.970501,42.558576 C204.970501,37.5540765 208.488516,33.2928195 213.740763,33.2928195 Z\"\n id=\"COM\"\n fill=\"#FFFFFF\"\n fillRule=\"nonzero\"\n />\n </g>\n );\n\n case 'google-play':\n return (\n <g>\n <path d=\"M22.424,13.014l-3.979,2.193l-3.625,-3.361l3.384,-3.214l4.22,2.339c0,0 0.817,0.36 0.817,0.954c0,0.677 -0.817,1.089 -0.817,1.089Zm-20.119,-12.77c0.069,-0.018 0.143,-0.031 0.227,-0.031c0.635,0 1.227,0.408 1.227,0.408l13.087,7.258l-2.899,3.158l-11.642,-10.793Zm10.764,11.75l-10.738,11.702c-0.904,-0.181 -0.754,-1.557 -0.752,-1.694l0,-20.428c0,0 -0.017,-1.112 0.705,-1.324l10.785,11.744Zm3.766,4.101l-12.94,7.133c0,0 -0.825,0.488 -1.358,0.488c-0.071,0 -0.137,-0.006 -0.199,-0.018l11.474,-10.895l3.023,3.292Z\" />\n </g>\n );\n case 'info':\n return (\n <g>\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"#FFF\"\n fillOpacity=\".25\"\n fillRule=\"evenodd\"\n d=\"M12 19a7 7 0 1 1 0-14 7 7 0 0 1 0 14zm0-9.625a.875.875 0 1 0 0-1.75.875.875 0 0 0 0 1.75zm-.656 1.75v5.25h1.312v-5.25h-1.312z\"\n />\n </g>\n );\n case 'info-thin':\n return (\n <>\n <defs>\n <filter\n id=\"a\"\n width=\"192.3%\"\n height=\"192.3%\"\n x=\"-46.2%\"\n y=\"-46.2%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feColorMatrix\n in=\"shadowBlurOuter1\"\n result=\"shadowMatrixOuter1\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\"\n />\n <feMerge>\n <feMergeNode in=\"shadowMatrixOuter1\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n </defs>\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(.38 .84)\">\n <circle\n cx=\"12.84\"\n cy=\"12.84\"\n r=\"11.362\"\n fill=\"#000\"\n fillOpacity=\".25\"\n stroke=\"#FFF\"\n strokeWidth=\"1.605\"\n />\n <g fill=\"#FFF\" transform=\"translate(11.488 6.758)\">\n <ellipse cx=\"1.352\" cy=\"1.216\" rx=\"1.352\" ry=\"1.216\" />\n <path d=\"M.338 4.866h2.027v7.299H.338z\" />\n </g>\n </g>\n </>\n );\n case 'instagram':\n return (\n <g>\n <defs>\n <path\n id=\"SVGID_4_\"\n d=\"M826.1,0H197.9C88.7,0,0,88.7,0,197.9v628.3c0,109,88.7,197.8,197.9,197.8h628.2\n c109.1,0,197.9-88.8,197.9-197.9V197.9C1024,88.7,935.2,0,826.1,0z M882.9,118.1l22.6-0.1v173.5l-173,0.5l-0.6-173.5L882.9,118.1\n z M365.9,406.9c32.8-45.4,86-75.1,146.1-75.1s113.3,29.7,146.1,75.1c4,5.5,7.5,11.3,10.8,17.2c14.7,26,23.3,56,23.3,87.9\n c0,99.4-80.9,180.2-180.3,180.2S331.6,611.4,331.6,512c0-31.9,8.6-61.8,23.3-87.9C358.4,418.2,361.9,412.4,365.9,406.9z\n M924.2,826.1c0,54.1-44.1,98.1-98.2,98.1H197.9c-54.1,0-98.1-44-98.1-98.1V406.9h152.9c-3.8,9.4-7.1,19-9.9,28.9\n c-7,24.2-10.8,49.8-10.8,76.2c0,154.4,125.6,280,280,280s280-125.6,280-280c0-26.4-3.8-51.9-10.8-76.2\n c-2.8-9.8-6.1-19.5-9.9-28.9h152.9L924.2,826.1L924.2,826.1z\"\n />\n </defs>\n <clipPath id=\"SVGID_3_\">\n <use href=\"#SVGID_4_\" style={{ overflow: 'visible' }} />\n </clipPath>\n <rect x=\"-256\" y=\"-256\" style={igStyle} width=\"1536\" height=\"1536\" />\n </g>\n );\n case 'keyboard-arrow-down':\n return (\n <g>\n <path d=\"M7.41 7.84l4.59 4.58 4.59-4.58 1.41 1.41-6 6-6-6z\" />\n </g> // eslint-disable-line\n );\n case 'keyboard-arrow-up':\n return (\n <g>\n <path d=\"M7.41 15.41l4.59-4.58 4.59 4.58 1.41-1.41-6-6-6 6z\" />\n </g> // eslint-disable-line\n );\n case 'lock':\n return (\n <g>\n <path d=\"M19.011,11.934l0,-5.211c-0.029,-3.672 -3.148,-6.64 -6.993,-6.64c-3.845,0 -6.963,2.969 -6.99,6.64l-0.002,5.211l-1.945,0c-0.426,0 -0.777,0.335 -0.777,0.744l0,10.406c0,0.409 0.351,0.743 0.777,0.743l17.875,0c0.426,0 0.775,-0.334 0.775,-0.743l0,-10.406c0,-0.409 -0.349,-0.744 -0.775,-0.744l-1.945,0Zm-11.267,-5.211c0,0.005 0.003,0.013 0.003,0.017c0.016,-2.236 1.936,-4.056 4.272,-4.056c2.34,0 4.255,1.821 4.271,4.056c0,-0.004 0.003,-0.012 0.003,-0.017l0,5.211l-8.549,0l0,-5.211Z\" />\n </g> // eslint-disable-line\n );\n case 'movie':\n return (\n <g>\n <path d=\"M18 4l2 4h-3l-2-4h-2l2 4h-3l-2-4H8l2 4H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4z\" />\n </g> // eslint-disable-line\n );\n case 'movie-info':\n return (\n <g>\n <path d=\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 19H3v-2h2v2zm0-4H3v-2h2v2zm0-4H3V9h2v2zm0-4H3V5h2v2zm8 10h-2v-6h2v6zm0-8h-2V7h2v2zm8 10h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V9h2v2zm0-4h-2V5h2v2z\" />\n </g> // eslint-disable-line\n );\n case 'notification-off':\n return (\n <g>\n <path d=\"M12.317,2.493c0.12,0 0.24,0 0.24,0c0.12,0.12 0.12,0.479 0.24,0.719c0,0.36 0.24,1.56 1.559,2.159c2.279,0.84 2.519,2.159 2.519,3.239l0,6.357l1.799,0.48c0.36,0.12 0.96,0.24 1.2,0.36c0,0.36 0,1.199 0,1.919l-7.557,0l-7.557,0c0,-0.84 0,-1.44 0,-1.919c0.36,-0.12 0.84,-0.36 1.2,-0.36l1.799,-0.48l0,-1.919c0,0 0,-2.759 0,-4.318c0,-1.32 0.48,-2.399 2.639,-3.359c0.96,-0.479 1.319,-1.319 1.559,-1.919c-0.12,-0.24 0,-0.839 0.24,-0.959l0.12,0m-7.916,13.434m7.916,-15.833c-2.639,0 -2.759,2.878 -3.118,2.998c-2.519,1.2 -3.839,2.879 -3.959,5.518c-0.12,1.679 0,4.438 0,4.438c0,0 -1.079,0.24 -1.799,0.72c-0.72,0.359 -1.079,0.839 -1.199,1.559c0,0.72 0,4.798 0,4.798l19.911,0c0,0 0,-4.078 0,-4.438c0,-0.96 -0.48,-1.44 -1.2,-1.919c-0.719,-0.36 -1.799,-0.72 -1.799,-0.72c0,0 0,-2.519 0,-4.438c0,-2.759 -1.439,-4.558 -3.958,-5.518c-0.24,-0.12 0,-2.998 -2.879,-2.998Z\" />\n <path d=\"M15.196,21.084c0,0 0,0.24 0,0.48c0,0.96 -1.44,2.399 -2.999,2.399c-1.559,0 -3.118,-1.199 -2.998,-2.399c0,-0.24 0,-0.48 0,-0.48\" />\n </g>\n );\n case 'notification-on':\n return (\n <g>\n <path d=\"M5.216,12.993c0,0 0,-2.879 0,-4.438c0.12,-2.639 1.559,-4.318 3.958,-5.517c0.36,-0.12 0.48,-2.999 3.119,-2.999c2.879,0 2.759,2.879 2.879,2.999c2.519,0.959 4.078,2.758 3.958,5.517c0,1.919 0,4.438 0,4.438c0,0 1.199,0.24 1.799,0.72c0.72,0.36 1.2,0.959 1.2,1.919c0,0.48 0,4.438 0,4.438c0,0 -0.36,0 -0.96,0c-6.117,0 -12.115,0 -18.232,0c-0.6,0 -0.839,0 -0.839,0c0,0 0,-4.078 0,-4.798c0.12,-0.719 0.479,-1.199 1.199,-1.559c0.84,-0.48 1.919,-0.72 1.919,-0.72Z\" />\n <path d=\"M15.172,21.03c0,0 0,0.24 0,0.479c0,0.96 -1.44,2.399 -2.999,2.399c-1.559,0 -3.119,-1.199 -2.999,-2.399c0,-0.239 0,-0.479 0,-0.479\" />\n </g>\n );\n case 'edit-icon':\n return (\n <g>\n <path\n d=\"M17.456058,5.91891193 L19.267767,4.10710678 C20.2104357,3.16061199 20.2409263,2.17220389 19.3855417,1.29581982 L18.7047254,0.594712568 C17.8493408,-0.264143816 16.8118716,-0.15537726 15.8692029,0.773589849 L14.0951402,2.54613078 L17.456058,5.91891193 Z M5.44370412,17.9355005 L16.7490401,6.62724495 L16.7490401,6.62724495 L13.3743541,3.25561154 L2.06525646,14.5668948 C1.85756188,14.7746295 1.69817751,15.0255655 1.59843283,15.3018656 L0.0278603893,19.6524669 C-0.0190221021,19.7823348 0.0482509052,19.9256194 0.178118857,19.9725018 C0.23290799,19.9922808 0.292884023,19.9923069 0.347690376,19.9725757 L4.70677405,18.4032346 C4.98385771,18.30348 5.23549275,18.1437657 5.44370412,17.9355005 Z\"\n id=\"Edit\"\n />\n </g>\n );\n case 'play-button':\n return (\n <g>\n <circle\n cx=\"12.041\"\n cy=\"12.041\"\n r=\"11.041\"\n style={{ fill: '#000', fillOpacity: '0', stroke: '#fff', strokeWidth: '2px' }}\n />\n <g>\n <path d=\"M17.099,12.444l-7.656,4.352c-0.341,0.194 -0.767,-0.048 -0.767,-0.436l0,-8.703c0,-0.388 0.426,-0.631 0.767,-0.437l7.656,4.352c0.341,0.194 0.341,0.679 0,0.872\" />\n <path\n d=\"M17.099,12.444l-7.656,4.352c-0.341,0.194 -0.767,-0.048 -0.767,-0.436l0,-8.703c0,-0.388 0.426,-0.631 0.767,-0.437l7.656,4.352c0.341,0.194 0.341,0.679 0,0.872Z\"\n style={{ fill: 'none', stroke: '#fff', strokeWidth: '0.14px' }}\n />\n </g>\n </g>\n );\n case 'play-button-thin':\n return (\n <g xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M7.25 7h24v24h-24z\" />\n <circle cx=\"19\" cy=\"19\" r=\"17\" stroke=\"#FFF\" strokeWidth=\"2\" />\n <path fill=\"#FFF\" d=\"M15.25 12v14l11-7z\" />\n </g>\n );\n case 'play-rectangle':\n return (\n <g>\n <path id=\"Rectangle-3\" d=\"M4.966,0.958l17.087,10.806l-17.087,10.693l0,-21.499Z\" />\n </g>\n );\n case 'play-arrow':\n return (\n <g>\n <path fill=\"#FFF\" fillRule=\"evenodd\" d=\"M0 0v14l11-7z\" />\n </g>\n );\n case 'phone':\n return (\n <g>\n <path d=\"M16.197 19.108v.7a2.7 2.7 0 0 1-2.7 2.7h-9.9a2.7 2.7 0 0 1-2.7-2.7v-16.2a2.7 2.7 0 0 1 2.7-2.7h9.9a2.7 2.7 0 0 1 2.7 2.7v15.5zm-2.7-2v-13.5h-9.9v13.5h9.9zm-4.95 4.05a1.35 1.35 0 1 0 0-2.7 1.35 1.35 0 0 0 0 2.7z\" />\n </g>\n );\n case 'remove':\n return (\n <g>\n <path d=\"M19 13h-14v-2h14v2z\" />\n </g>\n );\n case 'restart':\n return (\n <g>\n <path\n d=\"M9.977,11.256l4.636,-3.873l0,7.746l-4.636,-3.873Zm-3.706,0l4.636,-3.884l-0.001,1.294l-3.119,2.597l3.133,2.586l-0.013,1.291l-4.636,-3.884l0,0Z\"\n style={{ fill: '#fff' }}\n />\n <circle\n cx=\"11.033\"\n cy=\"11.033\"\n r=\"10.533\"\n style={{ fill: 'none', stroke: '#fff', strokeWidth: '1px' }}\n />\n </g>\n );\n case 'restart-double':\n return (\n <g>\n <path d=\"M10.675,12.002l13.354,-11.955l0,23.91l-13.354,-11.955Zm-10.675,0l13.354,-11.987l-0.002,3.996l-8.983,8.009l9.023,7.982l-0.038,3.986l-13.354,-11.986Z\" />\n </g>\n );\n case 'search':\n return (\n <g>\n <path d=\"M10,-2.84217094e-14 C15.5228475,-2.84217094e-14 20,4.4771525 20,10 C20,12.3985785 19.1555311,14.5999207 17.7476871,16.3229329 L23.7022045,22.2662514 C24.098788,22.6621511 24.0993423,23.3045856 23.7034426,23.7011691 C23.7030302,23.7015821 23.7026176,23.7019948 23.7022045,23.7024071 C23.3047355,24.0991909 22.6610374,24.0991909 22.2635684,23.7024071 L16.3099413,17.7582842 C14.5888617,19.1597677 12.3925543,20 10,20 C4.4771525,20 0,15.5228475 0,10 C0,4.4771525 4.4771525,-2.84217094e-14 10,-2.84217094e-14 Z M10,1.86440678 C5.50683593,1.86440678 1.86440678,5.50683593 1.86440678,10 C1.86440678,14.4931641 5.50683593,18.1355932 10,18.1355932 C14.4931641,18.1355932 18.1355932,14.4931641 18.1355932,10 C18.1355932,5.50683593 14.4931641,1.86440678 10,1.86440678 Z\" />\n </g> // eslint-disable-line\n );\n case 'serif-arrow-right':\n return (\n <g>\n <path d=\"M23.121,11.352l-7.193,-7.26c-0.779,-0.788 -2.044,-0.788 -2.825,0c-0.78,0.787 -0.78,2.064 0,2.851l3.782,3.817l-14.392,0c-1.103,0 -1.998,0.903 -1.998,2.016c0,1.114 0.895,2.017 1.998,2.017l14.391,0l-3.783,3.818c-0.779,0.787 -0.779,2.064 0,2.851c0.39,0.395 0.902,0.591 1.414,0.591c0.512,0 1.023,-0.196 1.412,-0.591l7.192,-7.26c0.782,-0.786 0.782,-2.063 0.002,-2.85Z\" />\n </g> // eslint-disable-line\n );\n case 'settings':\n return (\n <g>\n <path d=\"M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65c-.03-.24-.24-.42-.49-.42h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zm-7.43 2.52c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\" />\n </g> // eslint-disable-line\n );\n case 'share':\n return (\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n stroke=\"#FEFEFE\"\n strokeWidth=\"1.75\"\n d=\"M11.138 10.643h2.314c1.284 0 2.326 1.103 2.326 2.464v7.38c0 1.36-1.042 2.464-2.326 2.464H3.376c-1.284 0-2.326-1.103-2.326-2.464v-7.38c0-1.36 1.042-2.464 2.326-2.464h2.387\"\n />\n <path\n stroke=\"#FEFEFE\"\n strokeLinecap=\"round\"\n strokeWidth=\"2\"\n d=\"M8.414 2.565L8.414 15.547\"\n />\n <path\n fill=\"#FEFEFE\"\n d=\"M12.157 7.349L13.841 5.789 8.414 0 2.987 5.789 4.671 7.349 8.275 3.524 8.414 3.674 8.555 3.524z\"\n />\n </g>\n );\n case 'slideshow':\n return (\n <g>\n <path d=\"M10 8v8l5-4-5-4zm9-5h-14c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2zm0 16h-14v-14h14v14z\" />\n </g> // eslint-disable-line\n );\n case 'star':\n return (\n <g>\n <path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\" />\n </g> // eslint-disable-line\n );\n case 'store-tag':\n return (\n <g>\n <path d=\"M11.766 3.165l-9.148 9.149 7.3 7.3 9.148-9.149.003-5.082-2.22-2.221-5.083.003zm6.868-.835L20.91.054l1.309 1.31-2.276 2.275.978.977-.004 6.616-11 11L0 12.313l11-11 6.615-.003 1.02 1.02z\" />\n <path d=\"M11.821 10.39a2.862 2.862 0 1 1 4.048-4.047 2.862 2.862 0 0 1-4.048 4.048zm1.309-1.308a1.011 1.011 0 1 0 1.43-1.43 1.011 1.011 0 0 0-1.43 1.43z\" />\n </g>\n );\n case 'trailer':\n return (\n <g>\n <path\n d=\"M24,0 L24,24 L0,24 L0,0 L24,0 Z M22.1988,1.8 L1.8,1.8 L1.8,22.1988 L22.1988,22.1988 L22.1988,1.8 Z M6.7092,18 L6.7092,20.4 L3.6,20.4 L3.6,18 L6.7092,18 Z M20.4,18 L20.4,20.4 L17.2896,20.4 L17.2896,18 L20.4,18 Z M6.7092,13.2 L6.7092,15.6 L3.6,15.6 L3.6,13.2 L6.7092,13.2 Z M20.4,13.2 L20.4,15.6 L17.2896,15.6 L17.2896,13.2 L20.4,13.2 Z M6.7092,8.4 L6.7092,10.8 L3.6,10.8 L3.6,8.4 L6.7092,8.4 Z M20.4,8.4 L20.4,10.8 L17.2896,10.8 L17.2896,8.4 L20.4,8.4 Z M6.7092,3.6 L6.7092,6 L3.6,6 L3.6,3.6 L6.7092,3.6 Z M20.4,3.6 L20.4,6 L17.2896,6 L17.2896,3.6 L20.4,3.6 Z\"\n id=\"Trailer\"\n fill=\"#FFFFFF\"\n />\n </g>\n );\n case 'tv':\n return (\n <g>\n <path d=\"M21 3h-18c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2l.01-12c0-1.1-.9-2-2-2zm0 14h-18v-12h18v12z\" />\n </g>\n );\n case 'tv-options-input-settings':\n return (\n <g>\n <path d=\"M7.17 13.63l1 1.73c.06.11.19.15.31.11l1.24-.5c.26.2.54.37.85.49l.19 1.32c.01.13.12.22.24.22h2c.12 0 .23-.09.25-.21l.19-1.32c.3-.13.59-.29.84-.49l1.25.5c.11.04.24 0 .31-.11l1-1.73c.06-.11.03-.24-.06-.32l-1.06-.83c.02-.16.04-.32.04-.49s-.01-.33-.04-.49l1.06-.83c.09-.08.12-.21.06-.32l-1-1.73c-.06-.11-.19-.15-.31-.11l-1.24.5c-.26-.2-.54-.37-.84-.49l-.19-1.32c-.03-.12-.14-.21-.26-.21h-2c-.12 0-.23.09-.25.21l-.19 1.32c-.3.13-.59.29-.85.49l-1.24-.5c-.11-.04-.24 0-.31.11l-1 1.73c-.06.11-.04.24.06.32l1.06.83c-.02.16-.03.32-.03.49s.01.33.04.49l-1.06.83c-.1.07-.12.21-.06.31zm4.83-3.63c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9-7h-18c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2zm0 16.01h-18v-14.02h18v14.02z\" />\n </g> // eslint-disable-line\n );\n case 'twitter':\n return (\n <g>\n <path d=\"M7.549,19.541c9.068,0 14.03,-7.52 14.03,-14.031c0,-0.211 0,-0.423 -0.009,-0.634c0.962,-0.693 1.798,-1.568 2.462,-2.558c-0.885,0.394 -1.837,0.654 -2.837,0.779c1.019,-0.606 1.798,-1.578 2.173,-2.732c-0.952,0.568 -2.01,0.972 -3.135,1.193c-0.904,-0.962 -2.183,-1.558 -3.596,-1.558c-2.722,0 -4.934,2.212 -4.934,4.933c0,0.385 0.048,0.76 0.125,1.125c-4.096,-0.202 -7.731,-2.173 -10.164,-5.154c-0.423,0.731 -0.664,1.577 -0.664,2.481c0,1.712 0.875,3.222 2.193,4.106c-0.808,-0.029 -1.568,-0.25 -2.231,-0.615c0,0.019 0,0.038 0,0.067c0,2.385 1.702,4.385 3.952,4.837c-0.413,0.116 -0.846,0.173 -1.298,0.173c-0.318,0 -0.625,-0.029 -0.923,-0.086c0.625,1.962 2.452,3.385 4.606,3.423c-1.693,1.327 -3.818,2.116 -6.126,2.116c-0.394,0 -0.788,-0.019 -1.173,-0.067c2.173,1.384 4.77,2.202 7.549,2.202\" />\n </g> // eslint-disable-line\n );\n case 'twitter-logo':\n return (\n <g>\n <defs>\n <path\n id=\"SVGID_1_\"\n d=\"M1024,199.4c-37.7,16.5-78.1,27.5-120.6,32.5c43.4-25.6,76.6-66.1,92.4-114.4\n c-40.6,23.7-85.6,41-133.5,50.2c-38.3-40.2-92.9-65.3-153.3-65.3c-116,0-210,92.6-210,206.8c0,16.2,1.9,31.9,5.4,47.1\n c-174.6-8.6-329.4-91-433-216.1c-18.1,30.5-28.5,66.1-28.5,104c0,71.7,37.2,135,93.5,172.1c-34.4-1.1-66.8-10.4-95.2-25.9\n c0,0.9,0,1.7,0,2.6c0,26.5,5.2,51.7,14.4,75c25.7,64.9,83.4,113.8,154.2,127.9c-17.7,4.7-36.2,7.3-55.4,7.3\n c-13.5,0-26.6-1.3-39.5-3.8c26.8,82.1,104.4,142,196.3,143.6c-71.9,55.5-162.5,88.6-260.9,88.6c-17,0-33.7-1-50.2-2.9\n c93,58.7,203.5,92.9,322.1,92.9c328.4,0,530.2-227.5,583.5-463.5c9.4-41.7,14.3-83.7,14.3-124.8c0-8.9-0.2-17.9-0.6-26.7\n C960.3,277.3,995.9,240.9,1024,199.4\"\n />\n </defs>\n <clipPath id=\"SVGID_2_\">\n <use href=\"#SVGID_1_\" style={{ overflow: 'visible' }} />\n </clipPath>\n <rect\n x=\"-227.4\"\n y=\"-124.9\"\n className=\"st0\"\n style={{ clipPath: 'url(#SVGID_2_)' }}\n width=\"1478.7\"\n height=\"1273.9\"\n />\n </g>\n );\n case 'user':\n return (\n <g>\n <path\n id=\"icon-me\"\n d=\"M12.022,13.452c3.187,0 5.77,-2.857 5.77,-6.383c0,-3.526 -2.583,-6.384 -5.77,-6.384c-3.187,0 -5.771,2.858 -5.771,6.384c0,3.526 2.584,6.383 5.771,6.383Zm6.351,0.247c-0.233,-0.15 -0.536,-0.109 -0.742,0.075c-1.489,1.326 -3.455,2.131 -5.609,2.131c-2.155,0 -4.121,-0.805 -5.609,-2.131c-0.207,-0.184 -0.51,-0.225 -0.742,-0.075c-3.23,2.079 -5.372,5.686 -5.367,9.8c0,0.107 0.09,0.197 0.199,0.197l23.038,0c0.108,0 0.198,-0.09 0.198,-0.197c0.006,-4.114 -2.136,-7.721 -5.366,-9.8Z\"\n />\n </g>\n );\n case 'user-unfilled':\n return (\n <g>\n <path\n id=\"path-1\"\n d=\"M12.072,0.705c2.491,0 4.509,2.019 4.509,4.509c0,2.491 -2.018,4.51 -4.509,4.51c-1.196,0 -2.343,-0.475 -3.188,-1.321c-0.846,-0.846 -1.321,-1.993 -1.321,-3.189c0,-2.49 2.019,-4.509 4.509,-4.509Zm-0.002,11.273c-5.603,0 -10.143,4.361 -10.143,9.736c0.002,0.369 0,1.537 0,1.537c0,0 0.319,-0.007 0.558,0l19.17,0c0.24,-0.005 0.563,0 0.563,0c0,0 -0.002,-1.168 0,-1.537c-0.005,-5.379 -4.545,-9.736 -10.148,-9.736Z\"\n />\n </g> // eslint-disable-line\n );\n case 'view-day':\n return (\n <g>\n <path d=\"M2 21h19v-3h-19v3zm18-13h-17c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zm-18-5v3h19v-3h-19z\" />\n </g> // eslint-disable-line\n );\n case 'video-collection':\n return (\n <g>\n <path d=\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8 12.5v-9l6 4.5-6 4.5z\" />\n </g> // eslint-disable-line\n );\n case 'vpn-key':\n return (\n <g>\n <path d=\"M12.65 10c-.82-2.33-3.04-4-5.65-4-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4h4.35v4h4v-4h2v-4h-10.35zm-5.65 4c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\" />\n </g> // eslint-disable-line\n );\n case 'youtube':\n return (\n <g>\n <defs>\n <path\n id=\"SVGID_5_\"\n d=\"M1013.7,298.5c0,0-10-73.6-40.6-106c-38.9-42.5-82.6-42.7-102.5-45.2c-143.4-10.7-358.3-10.7-358.3-10.7\n\t\t\t\th-0.5c0,0-215,0-358.2,10.8c-20,2.4-63.6,2.7-102.6,45.2c-30.6,32.4-40.6,106-40.6,106S0,384.9,0,471.3v81\n\t\t\t\tc0,86.5,10.3,172.9,10.3,172.9s10,73.6,40.6,106c39,42.5,90.2,41.2,112.9,45.6C245.7,885,512,887.6,512,887.6\n\t\t\t\ts215.1-0.4,358.5-11.1c19.9-2.5,63.6-2.7,102.5-45.3c30.7-32.4,40.6-105.9,40.6-105.9s10.3-86.4,10.3-172.9v-81\n\t\t\t\tC1024,384.9,1013.7,298.5,1013.7,298.5z M682.9,501.1L406.3,650.5l-0.1-230v-69.9L682.9,501.1z\"\n />\n </defs>\n <clipPath id=\"SVGID_6_\">\n <use href=\"#SVGID_5_\" style={{ overflow: 'visible' }} />\n </clipPath>\n <rect\n x=\"-239.4\"\n y=\"-102.9\"\n className=\"st0\"\n style={{ clipPath: 'url(#SVGID_6_)' }}\n width=\"1502.9\"\n height=\"1229.8\"\n />\n </g>\n );\n default:\n return <g />;\n }\n};\n\nconst Icon = ({\n ariaHidden = false,\n ariaLabel = null,\n color = null,\n icon,\n role = 'button',\n size = null,\n viewBox = null,\n}) => {\n const classes = classNames({\n [Style.icon]: icon,\n [Style[size]]: size,\n [Style[color]]: color,\n });\n const igStyle = {\n clipPath: 'url(#SVGID_3_)',\n };\n return (\n <svg\n className={classes}\n viewBox={viewBox || '0 0 24 24'}\n preserveAspectRatio=\"xMidYMid meet\"\n data-testid={`${icon}-icon`}\n aria-label={ariaLabel}\n aria-hidden={ariaHidden}\n role={role}\n focusable=\"true\"\n >\n {renderGraphic(icon, igStyle)}\n </svg>\n );\n};\n\nIcon.propTypes = {\n ariaLabel: PropTypes.string,\n ariaHidden: PropTypes.bool,\n icon: PropTypes.string.isRequired,\n color: PropTypes.oneOf([\n 'inherit',\n 'black',\n 'greydarker',\n 'greydark',\n 'grey',\n 'greylight',\n 'greylighter',\n 'white',\n 'white25',\n 'white50',\n 'blue',\n 'green',\n 'orange',\n 'purple',\n 'red',\n 'turquoise',\n 'yellow',\n ]),\n role: PropTypes.string,\n size: PropTypes.oneOf(['small', 'medium', 'medium-large', 'large', 'full']),\n viewBox: PropTypes.string,\n};\n\nIcon.defaultProps = {\n ariaLabel: undefined,\n ariaHidden: undefined,\n color: null,\n role: 'button',\n viewBox: null,\n size: undefined,\n};\n\nexport default React.memo(Icon);\n","var _a, _b, _c, _d;\nexport var Brands;\n(function (Brands) {\n Brands[\"FOX\"] = \"fox\";\n Brands[\"NATION\"] = \"nation\";\n Brands[\"FOXNEWS\"] = \"news\";\n})(Brands || (Brands = {}));\n/**\n * TODO: look into whether strings can be declared without initializers:\n * https://www.typescriptlang.org/docs/handbook/enums.html\n */\nexport var Events;\n(function (Events) {\n Events[\"ACCOUNT_UPDATE_PASSWORD_LANDING\"] = \"accountUpdatePasswordLanding\";\n Events[\"ADDED_FAVORITES\"] = \"addedFavorites\";\n Events[\"AUTHENTICATION_COMPLETED\"] = \"authenticationCompleted\";\n Events[\"AUTHENTICATION_STARTED\"] = \"authenticationStarted\";\n Events[\"AUTHENTICATON_SELECT_PROVIDER_COMPLETED\"] = \"authenticationSelectProviderCompleted\";\n Events[\"AUTHENTICATON_SELECT_PROVIDER_ERROR\"] = \"authenticationSelectProviderError\";\n Events[\"AUTHENTICATON_SELECT_PROVIDER_STARTED\"] = \"authenticationSelectProviderStarted\";\n Events[\"AUTHETNTICATION_LOGGED_OUT\"] = \"AuthenticationLoggedOut\";\n Events[\"BANNER_CLICKED\"] = \"bannerClicked\";\n Events[\"BANNER_NOTIFICATION_ACTION\"] = \"bannerNotificationAction\";\n Events[\"BANNER_NOTIFICATION_IMPRESSION\"] = \"bannerNotificationImpression\";\n Events[\"BROWSE_ITEM_SELECTED\"] = \"browseItemSelected\";\n Events[\"BUTTON_LINK_SELECTED\"] = \"buttonLinkSelected\";\n Events[\"CAST_LANDING\"] = \"castLanding\";\n Events[\"CCPA_PAGE_LANDING\"] = \"CCPAPageLanding\";\n Events[\"CHANNEL_PAGE_LANDING\"] = \"channelPageLanding\";\n Events[\"COLLECTION_ITEMS_AVAILABLE\"] = \"collectionItemsAvailable\";\n Events[\"COLLECTION_ITEMS_RENDERED\"] = \"collectionItemsRendered\";\n Events[\"CONTINUE_WATCHING_WIDGET\"] = \"continueWatchingWidget\";\n Events[\"DETAILS_PAGE_PLAYLIST_LANDING\"] = \"detailsPagePlaylistLanding\";\n Events[\"DETAIL_PAGE_DEFAULT_STATE\"] = \"detailsPageDefaultState\";\n Events[\"DETAIL_PAGE_MENU_ITEM_VIEW\"] = \"detailPageMenuItemView\";\n Events[\"EMAIL_ROADBLOCK_IMPRESSION\"] = \"emailRoadblockImpression\";\n Events[\"EMAIL_ROADBLOCK_SUBMIT\"] = \"emailRoadblockSubmit\";\n Events[\"EMAIL_ROADBLOCK_BYPASS\"] = \"emailRoadblockBypass\";\n Events[\"EMAIL_ROADBLOCK_ABANDON\"] = \"emailRoadblockAbandon\";\n Events[\"END_CARD_ITEM_SELECTED\"] = \"endCardItemSelected\";\n Events[\"EVENT_END_CARD_IMPRESSION\"] = \"endCardImpression\";\n Events[\"EXPERIMENT_VIEWED\"] = \"experimentViewed\";\n Events[\"EXPOSURE\"] = \"exposure\";\n Events[\"FB_LINKING_COMPLETED\"] = \"fbLinkingCompleted\";\n Events[\"FB_LINKING_STARTED\"] = \"fbLinkingStarted\";\n Events[\"FB_PASSWORD_CREATION_COMPLETED\"] = \"fbPasswordCreationCompleted\";\n Events[\"FB_PASSWORD_CREATION_STARTED\"] = \"fbPasswordCreationStarted\";\n Events[\"FB_SIGN_IN_COMPLETED\"] = \"fbSignInCompleted\";\n Events[\"FB_SIGN_IN_STARTED\"] = \"fbSignInStarted\";\n Events[\"FB_SIGN_UP_COMPLETED\"] = \"fbSignUpCompleted\";\n Events[\"FB_SIGN_UP_STARTED\"] = \"fbSignUpStarted\";\n Events[\"FIND_SECTION_SEARCH\"] = \"findSectionSearch\";\n Events[\"FOOTER_LINK_CLICKED\"] = \"footerLinkClicked\";\n Events[\"GLOBAL_NAV_CLICKED\"] = \"globalNavClicked\";\n Events[\"HEADER_LINK_CLICKED\"] = \"headerLinkClicked\";\n Events[\"HERO_ITEM_SELECT_ACTION\"] = \"heroItemSelectAction\";\n Events[\"IDLE_PROMPT\"] = \"idlePrompt\";\n Events[\"IDLE_PROMPT_ACTION\"] = \"idlePromptAction\";\n Events[\"LIVE_TV_BUTTON_ACTION\"] = \"liveTvButtonAction\";\n Events[\"LIVE_TV_EPG_CELL_TAPPED\"] = \"liveTvEpgCellTapped\";\n Events[\"LIVE_TV_EPG_DETAIL_EXPAND\"] = \"epgDetailExpand\";\n Events[\"LOCAL_SECTION_LANDING\"] = \"localSectionLanding\";\n Events[\"MENU_ITEM_SELECTED\"] = \"menuItemSelected\";\n Events[\"MODAL_CLOSED\"] = \"modalClosed\";\n Events[\"PLAYER_LANDING\"] = \"playerLanding\";\n Events[\"PLAYER_SCREEN_LAYOUT_CHANGED\"] = \"Player Screen Layout Changed\";\n Events[\"PLAYLIST_BUTTON_ACTION\"] = \"playlistButtonAction\";\n Events[\"PREVIEW_PASS_EXPIRED\"] = \"previewPassExpired\";\n Events[\"PRIVACY_POLICY_PAGE_VIEW\"] = \"privacyPolicyPageView\";\n Events[\"PRIVIEW_PASS_STARTED\"] = \"previewPassStarted\";\n Events[\"PROFILE_APPLE_ID_LINK_COMPLETED\"] = \"profileAppleIdLinkCompleted\";\n Events[\"PROFILE_APPLE_ID_LINK_STARTED\"] = \"profileAppleIdLinkStarted\";\n Events[\"PROFILE_APPLE_ID_SIGNUP_COMPLETED\"] = \"profileAppleIdSignUpCompleted\";\n Events[\"PROFILE_APPLE_ID_SIGNUP_STARTED\"] = \"profileAppleIdSignUpStarted\";\n Events[\"PROFILE_GOOGLE_LINK_COMPLETED\"] = \"profileGoogleLinkCompleted\";\n Events[\"PROFILE_GOOGLE_LINK_STARTED\"] = \"profileGoogleLinkStarted\";\n Events[\"PROFILE_INITIATED\"] = \"profileInitiated\";\n Events[\"PROFILE_LOGGED_OUT\"] = \"profileLoggedOut\";\n Events[\"PROFILE_PROMPT\"] = \"profilePrompt\";\n Events[\"PROFILE_PROMPT_LANDING\"] = \"profilePromptLanding\";\n Events[\"PROFILE_SCREEN_BACKED_OUT\"] = \"profileScreenBackedOut\";\n Events[\"PROFILE_SIGNIN_COMPLETED\"] = \"profileSignInCompleted\";\n Events[\"PROFILE_SIGNUP_COMPLETED\"] = \"profileSignUpCompleted\";\n Events[\"PROFILE_SIGNUP_STATRED\"] = \"profileSignUpStarted\";\n Events[\"PROFILE_SIGN_IN_ERROR\"] = \"profileSignInError\";\n Events[\"PROFILE_SIGN_IN_FORGOT_PASSWORD\"] = \"profileSignInForgotPassword\";\n Events[\"PROFILE_SIGN_IN_LANDING\"] = \"profileSignInLanding\";\n Events[\"PROFILE_SIGN_IN_STARTED\"] = \"profileSignInStarted\";\n Events[\"PROFILE_SIGN_OUT\"] = \"signOutCompleted\";\n Events[\"PROFILE_SIGN_OUT_STARTED\"] = \"signOutStarted\";\n Events[\"PROFILE_SIGN_UP_ERROR\"] = \"profileSignupError\";\n Events[\"PROFILE_SIGN_UP_LANDING\"] = \"profileSignUpLanding\";\n Events[\"PROFILE_UPSELL_PRESENTED\"] = \"profileUpsellPresented\";\n Events[\"PURCHASE_CTA_CLICKED\"] = \"purchaseCtaClicked\";\n Events[\"REMOVED_FAVORITES\"] = \"removedFavorites\";\n Events[\"ROADBLOCK_LANDING\"] = \"roadblockLanding\";\n Events[\"SEARCH_APPLIED_FILTER\"] = \"searchAppliedFilter\";\n Events[\"SEARCH_COMPLETED\"] = \"searchCompleted\";\n Events[\"SEARCH_RESULT_SELECTED\"] = \"searchResultSelected\";\n Events[\"SEARCH_STARTED\"] = \"searchStarted\";\n Events[\"SETTINGS_SECTION_LANDING\"] = \"settingsSectionLanding\";\n Events[\"SHOP_NOW_BUTTON_CLICKED\"] = \"shopNowButtonClicked\";\n Events[\"TOP_LEVEL_SECTION_LANDING\"] = \"topLevelSectionLanding\";\n Events[\"UPGRADE_NOW_BUTTON_CLICKED\"] = \"upgradeNowButtonClicked\";\n})(Events || (Events = {}));\nexport var EventTypes;\n(function (EventTypes) {\n EventTypes[\"PAGE\"] = \"page\";\n EventTypes[\"TRACK\"] = \"track\";\n})(EventTypes || (EventTypes = {}));\nexport var Vendors;\n(function (Vendors) {\n Vendors[Vendors[\"NEW_RELIC\"] = 0] = \"NEW_RELIC\";\n Vendors[Vendors[\"OPTIMIZELY\"] = 1] = \"OPTIMIZELY\";\n Vendors[Vendors[\"SEGMENT\"] = 2] = \"SEGMENT\";\n Vendors[Vendors[\"TEALIUM\"] = 3] = \"TEALIUM\";\n})(Vendors || (Vendors = {}));\nexport var ComscoreClientIds;\n(function (ComscoreClientIds) {\n ComscoreClientIds[\"FOX\"] = \"6042901\";\n ComscoreClientIds[\"NATION\"] = \"9013181\";\n})(ComscoreClientIds || (ComscoreClientIds = {}));\nexport var CookieValues;\n(function (CookieValues) {\n CookieValues[\"CCPA_DO_NOT_SELL_NOT_SEEN\"] = \"1---\";\n CookieValues[\"CCPA_DO_NOT_SELL_SEEN\"] = \"1YNN\";\n CookieValues[\"CCPA_DO_NOT_SELL_CHECKED\"] = \"1YYN\";\n})(CookieValues || (CookieValues = {}));\nexport var LocalStorage;\n(function (LocalStorage) {\n LocalStorage[\"PERCENT_WATCHING\"] = \"PERCENT_WATCHING\";\n LocalStorage[\"APP_VISITED\"] = \"APP_VISITED\";\n LocalStorage[\"FP_STATE\"] = \"FP_STATE\";\n LocalStorage[\"LOGGED_OUT_AUTH\"] = \"LOGGED_OUT_AUTH\";\n})(LocalStorage || (LocalStorage = {}));\nexport var FoxProfileEvents;\n(function (FoxProfileEvents) {\n FoxProfileEvents[\"FP_SIGNED_OUT\"] = \"signed out\";\n FoxProfileEvents[\"FP_SIGN_IN_ATTEMPTED\"] = \"sign in attempted\";\n FoxProfileEvents[\"FP_SIGN_IN_COMPLETED\"] = \"sign in completed\";\n FoxProfileEvents[\"FP_SIGN_OUT_ATTEMPTED\"] = \"sign out attempted\";\n FoxProfileEvents[\"FP_SIGN_UP_ATTEMPTED\"] = \"sign up attempted\";\n FoxProfileEvents[\"FP_SIGN_UP_COMPLETED\"] = \"sign up completed\";\n})(FoxProfileEvents || (FoxProfileEvents = {}));\nexport var NewRelicErrors;\n(function (NewRelicErrors) {\n NewRelicErrors[\"apiError\"] = \"API_ERROR\";\n NewRelicErrors[\"appInitializeError\"] = \"APP_INIT_ERROR\";\n NewRelicErrors[\"appScreenDrawError\"] = \"APP_SCREEN_DRAW_ERROR\";\n NewRelicErrors[\"generalError\"] = \"ERROR\";\n NewRelicErrors[\"videoStartError\"] = \"VIDEO_START_ERROR\";\n NewRelicErrors[\"videoStreamInterruptedError\"] = \"VIDEO_STREAM_INTERRUPTED_ERROR\";\n})(NewRelicErrors || (NewRelicErrors = {}));\nexport var NewRelicEvents;\n(function (NewRelicEvents) {\n NewRelicEvents[\"onAccountScreenFinished\"] = \"ACCOUNT_SCREEN_LOADING_FINISH\";\n NewRelicEvents[\"onAccountScreenStart\"] = \"ACCOUNT_SCREEN_LOADING_START\";\n NewRelicEvents[\"onAccountScreenView\"] = \"ACCOUNTPAGE_VIEW\";\n NewRelicEvents[\"onAppLoad\"] = \"LAUNCH\";\n NewRelicEvents[\"onEntertainmentScreenFinished\"] = \"ENTERTAINMENT_SCREEN_LOADING_FINISH\";\n NewRelicEvents[\"onEntertainmentScreenStart\"] = \"ENTERTAINMENT_SCREEN_LOADING_START\";\n NewRelicEvents[\"onEntertainmentScreenView\"] = \"ENTERTAINMENTPAGE_VIEW\";\n NewRelicEvents[\"onHomeScreenFinished\"] = \"HOME_SCREEN_LOADING_FINISH\";\n NewRelicEvents[\"onHomeScreenStart\"] = \"HOME_SCREEN_LOADING_START\";\n NewRelicEvents[\"onLiveScreenFinished\"] = \"LIVE_SCREEN_LOADING_FINISH\";\n NewRelicEvents[\"onLiveScreenStart\"] = \"LIVE_SCREEN_LOADING_START\";\n NewRelicEvents[\"onLiveScreenView\"] = \"LIVEPAGE_VIEW\";\n NewRelicEvents[\"onMVPDSignIn\"] = \"MVPD_SIGN_IN_EVENT\";\n NewRelicEvents[\"onNewsScreenFinished\"] = \"NEWS_SCREEN_LOADING_FINISH\";\n NewRelicEvents[\"onNewsScreenStart\"] = \"NEWS_SCREEN_LOADING_START\";\n NewRelicEvents[\"onNewsScreenView\"] = \"NEWSPAGE_VIEW\";\n NewRelicEvents[\"onProfileSignIn\"] = \"PROFILE_SIGN_IN_EVENT\";\n NewRelicEvents[\"onProfileSignUp\"] = \"PROFILE_SIGN_UP_EVENT\";\n NewRelicEvents[\"onSearchScreenFinished\"] = \"SEARCH_SCREEN_LOADING_FINISH\";\n NewRelicEvents[\"onSearchScreenStart\"] = \"SEARCH_SCREEN_LOADING_START\";\n NewRelicEvents[\"onSearchScreenView\"] = \"SEARCHPAGE_VIEW\";\n NewRelicEvents[\"onSportsScreenFinished\"] = \"SPORTS_SCREEN_LOADING_FINISH\";\n NewRelicEvents[\"onSportsScreenStart\"] = \"SPORTS_SCREEN_LOADING_START\";\n NewRelicEvents[\"onSportsScreenView\"] = \"SPORTSPAGE_VIEW\";\n NewRelicEvents[\"onVideoPlaybackStart\"] = \"VIDEO_PLAYBACK_START\";\n NewRelicEvents[\"onVideoPlayClick\"] = \"VIDEO_PLAY_CTA_CLICK_EVENT\";\n})(NewRelicEvents || (NewRelicEvents = {}));\nexport var OptimizelyPlayerTypes;\n(function (OptimizelyPlayerTypes) {\n OptimizelyPlayerTypes[\"FOX_MINI_PLAYER\"] = \"fox_mini_player\";\n OptimizelyPlayerTypes[\"MAIN_PLAYER\"] = \"main_player\";\n OptimizelyPlayerTypes[\"NATIVE_MINI_PLAYER\"] = \"os_mini_player\";\n})(OptimizelyPlayerTypes || (OptimizelyPlayerTypes = {}));\n/* multi-platform page events */\nexport var PageEvents;\n(function (PageEvents) {\n PageEvents[\"CCPA_PAGE_LANDING\"] = \"CCPA Page Landing\";\n PageEvents[\"CC_SERVICE_VIEWED\"] = \"ccServiceViewed\";\n PageEvents[\"CHANGE_PASSWORD_PAGE_VIEW\"] = \"changePasswordPageEvent\";\n PageEvents[\"COLLECTION_CTA_PAGE_VIEW\"] = \"collectionCTAPageViewEvent\";\n PageEvents[\"KNOWN_PROFILE_PAGE_VIEW\"] = \"knownProfilePageEvent\";\n PageEvents[\"LIVE_LOC_REQ_PAGE_VIEW\"] = \"liveLocationRequiredPageView\";\n PageEvents[\"PARENTAL_CONTROLS_SETTINGS_PAGE_VIEW\"] = \"parentalControlsSettingsPageEvent\";\n PageEvents[\"PRIVACY_POLICY_PAGE_VIEW\"] = \"privacyPolicyPageView\";\n PageEvents[\"TV_PROVIDER_SIGN_OUT_PAGE_VIEW\"] = \"tvProviderSignOutPageEvent\";\n})(PageEvents || (PageEvents = {}));\n// TODO refactor to be included in handleAnalytics logic\nexport var PageNames;\n(function (PageNames) {\n PageNames[\"ALL_COLLECTIONS\"] = \"PAGE_NAME_ALL_COLLECTIONS\";\n PageNames[\"ARTICLE\"] = \"PAGE_NAME_ARTICLE\";\n PageNames[\"CHANNEL\"] = \"CHANNEL_PAGE_LANDING\";\n PageNames[\"COLLECTION\"] = \"PAGE_NAME_COLLECTION\";\n PageNames[\"COLLECTION_ENTERTAINMENT\"] = \"PAGE_NAME_COLLECTION_ENTERTAINMENT\";\n PageNames[\"COLLECTION_HOME\"] = \"PAGE_NAME_COLLECTION_HOME\";\n PageNames[\"COLLECTION_LISTEN\"] = \"PAGE_NAME_COLLECTION_LISTEN\";\n PageNames[\"COLLECTION_LIVE_TV\"] = \"PAGE_NAME_COLLECTION_LIVE_TV\";\n PageNames[\"COLLECTION_LOCAL\"] = \"PAGE_NAME_COLLECTION_LOCAL\";\n PageNames[\"COLLECTION_MOVIES\"] = \"PAGE_NAME_COLLECTION_MOVIES\";\n PageNames[\"COLLECTION_NEWS\"] = \"PAGE_NAME_COLLECTION_NEWS\";\n PageNames[\"COLLECTION_PERSONALITIES\"] = \"PAGE_NAME_COLLECTION_PERSONALITIES\";\n PageNames[\"COLLECTION_PRIMETIME\"] = \"PAGE_NAME_COLLECTION_PRIMETIME\";\n PageNames[\"COLLECTION_SHOWS\"] = \"PAGE_NAME_COLLECTION_SHOWS\";\n PageNames[\"COLLECTION_SPORTS\"] = \"PAGE_NAME_COLLECTION_SPORTS\";\n PageNames[\"CONTINUOUS_PLAY\"] = \"PAGE_NAME_CONTINUOUS_PLAY\";\n PageNames[\"DEEPLINK\"] = \"PAGE_NAME_DEEPLINK\";\n PageNames[\"DETAIL\"] = \"PAGE_NAME_DETAIL\";\n PageNames[\"ENDCARD\"] = \"PAGE_NAME_ENDCARD\";\n PageNames[\"FAVORITES_DETAIL\"] = \"FAVORITES_PAGE_NAME_DETAIL\";\n PageNames[\"FAVORITES_LIVE\"] = \"FAVORITES_PAGE_NAME_LIVE\";\n PageNames[\"FIND\"] = \"PAGE_NAME_FIND\";\n PageNames[\"FOOTER\"] = \"PAGE_NAME_FOOTER\";\n PageNames[\"FX_CONFIRM_SUB\"] = \"PAGE_NAME_FX_CONFIRM_SUB\";\n PageNames[\"FX_MARKETING\"] = \"PAGE_NAME_FX_MARKETING\";\n PageNames[\"FX_MVPD_NO_SUPPORT\"] = \"PAGE_NAME_FX_MVPD_NO_SUPPORT\";\n PageNames[\"HOME\"] = \"PAGE_NAME_HOME\";\n PageNames[\"HOME_COLLECTIONS\"] = \"PAGE_NAME_HOME_COLLECTIONS\";\n PageNames[\"LIVE\"] = \"PAGE_NAME_LIVE\";\n PageNames[\"LIVE_SCHEDULE\"] = \"PAGE_NAME_LIVE_SCHEDULE\";\n PageNames[\"MOVIE_DETAIL\"] = \"PAGE_NAME_MOVIE_DETAIL\";\n PageNames[\"MOVIES\"] = \"PAGE_NAME_MOVIES\";\n PageNames[\"NETWORK_DETAIL\"] = \"PAGE_NAME_NETWORK_DETAIL\";\n PageNames[\"NEWS\"] = \"PAGE_NAME_NEWS\";\n PageNames[\"PLAYER\"] = \"PAGE_NAME_PLAYER\";\n PageNames[\"PLAYER_COLLECTION\"] = \"PAGE_NAME_PLAYER_COLLECTION\";\n PageNames[\"PLAYER_DETAIL\"] = \"PAGE_NAME_PLAYER_DETAIL\";\n PageNames[\"PLAYER_GENERAL\"] = \"PAGE_NAME_PLAYER_GENERAL\";\n PageNames[\"PROFILE_SIGN_IN\"] = \"PAGE_NAME_PROFILE_SIGN_IN\";\n PageNames[\"PROFILE_SIGN_UP\"] = \"PAGE_NAME_PROFILE_SIGN_UP\";\n PageNames[\"PROMO_LIST\"] = \"PAGE_NAME_PROMO_LIST\";\n PageNames[\"SEARCH\"] = \"PAGE_NAME_SEARCH\";\n PageNames[\"SERIES_DETAIL\"] = \"PAGE_NAME_SERIES_DETAIL\";\n PageNames[\"SETTINGS\"] = \"PAGE_NAME_SETTINGS\";\n PageNames[\"SHOWS\"] = \"PAGE_NAME_SHOWS\";\n PageNames[\"SIGN_IN\"] = \"PAGE_NAME_SIGN_IN\";\n PageNames[\"VOD_SECTION\"] = \"PAGE_NAME_VOD_SECTION\";\n})(PageNames || (PageNames = {}));\nexport var SegmentActionLocations;\n(function (SegmentActionLocations) {\n SegmentActionLocations[\"DETAIL\"] = \"Detail\";\n SegmentActionLocations[\"PLAYER\"] = \"Player\";\n})(SegmentActionLocations || (SegmentActionLocations = {}));\nexport var SegmentBannerTypes;\n(function (SegmentBannerTypes) {\n SegmentBannerTypes[\"FAT\"] = \"fat banner\";\n SegmentBannerTypes[\"SKINNY\"] = \"skinny banner\";\n SegmentBannerTypes[\"MARKETING_VIDEO\"] = \"marketing video banner\";\n})(SegmentBannerTypes || (SegmentBannerTypes = {}));\nexport var SegmentEventTypes;\n(function (SegmentEventTypes) {\n SegmentEventTypes[\"PAGE_EVENT\"] = \"page\";\n SegmentEventTypes[\"TRACK_EVENT\"] = \"track\";\n})(SegmentEventTypes || (SegmentEventTypes = {}));\nexport var SegmentPageActionTypes;\n(function (SegmentPageActionTypes) {\n SegmentPageActionTypes[\"MORE_EPISODES\"] = \"More Episodes\";\n SegmentPageActionTypes[\"SEARCH\"] = \"Search\";\n SegmentPageActionTypes[\"WATCH\"] = \"Watch\";\n SegmentPageActionTypes[\"WATCHLIST\"] = \"Watchlist\";\n})(SegmentPageActionTypes || (SegmentPageActionTypes = {}));\nexport var SegmentPageProfileTypes;\n(function (SegmentPageProfileTypes) {\n SegmentPageProfileTypes[\"FACEBOOK\"] = \"facebook\";\n SegmentPageProfileTypes[\"APPLE\"] = \"apple\";\n SegmentPageProfileTypes[\"GOOGLE\"] = \"google\";\n SegmentPageProfileTypes[\"GENERAL\"] = \"general\";\n})(SegmentPageProfileTypes || (SegmentPageProfileTypes = {}));\nexport var SegmentPageStartSources;\n(function (SegmentPageStartSources) {\n SegmentPageStartSources[\"GENERAL\"] = \"general\";\n SegmentPageStartSources[\"MVPDINCOMPLETE\"] = \"mvpd incomplete\";\n SegmentPageStartSources[\"ONBOARDING\"] = \"oboarding\";\n SegmentPageStartSources[\"PP_EXPIRATION\"] = \"preview pass:expiration\";\n SegmentPageStartSources[\"PP_SIGNIN\"] = \"upsell\";\n SegmentPageStartSources[\"SETTINGS\"] = \"settings\";\n})(SegmentPageStartSources || (SegmentPageStartSources = {}));\nexport var SegmentPlayerContextStrings;\n(function (SegmentPlayerContextStrings) {\n SegmentPlayerContextStrings[\"RESUMED_PLAYBACK\"] = \"context.segment.player.resumedPlayback\";\n SegmentPlayerContextStrings[\"RESTARTED_PLAYBACK\"] = \"context.segment.player.restartedPlayback\";\n})(SegmentPlayerContextStrings || (SegmentPlayerContextStrings = {}));\nexport var SegmentPlayerStates;\n(function (SegmentPlayerStates) {\n SegmentPlayerStates[\"BUFFER\"] = \"buffer\";\n SegmentPlayerStates[\"END\"] = \"end\";\n SegmentPlayerStates[\"PAUSE\"] = \"pause\";\n SegmentPlayerStates[\"PLAY\"] = \"play\";\n SegmentPlayerStates[\"RESUME\"] = \"resume\";\n SegmentPlayerStates[\"SEEK\"] = \"seek\";\n SegmentPlayerStates[\"START\"] = \"start\";\n})(SegmentPlayerStates || (SegmentPlayerStates = {}));\nexport var SegmentProfileIdCookies;\n(function (SegmentProfileIdCookies) {\n SegmentProfileIdCookies[\"LAST_KNOWN\"] = \"lastKnownProfileId\";\n SegmentProfileIdCookies[\"LAST_KNOWN_ANONYMOUS\"] = \"lastKnownAnonymousProfileId\";\n})(SegmentProfileIdCookies || (SegmentProfileIdCookies = {}));\nexport var SegmentReferrerProps;\n(function (SegmentReferrerProps) {\n SegmentReferrerProps[\"TYPE\"] = \"Referrer Type\";\n SegmentReferrerProps[\"NAME\"] = \"Referrer Name\";\n SegmentReferrerProps[\"POSITION\"] = \"Referrer Position\";\n SegmentReferrerProps[\"NONE\"] = \"None\";\n})(SegmentReferrerProps || (SegmentReferrerProps = {}));\nexport var SegmentSources;\n(function (SegmentSources) {\n SegmentSources[\"HOME\"] = \"Collection\";\n SegmentSources[\"DETAIL\"] = \"Detail Page\";\n SegmentSources[\"LIVE\"] = \"Live TV\";\n SegmentSources[\"AUTOPLAY\"] = \"Continuous Play\";\n SegmentSources[\"DEEPLINK\"] = \"Deeplink\";\n SegmentSources[\"END_SLATE\"] = \"End Slate\";\n SegmentSources[\"MY_ACCOUNT\"] = \"My Account\";\n SegmentSources[\"VOD\"] = \"Video Player\";\n SegmentSources[\"VOD_SECTION\"] = \"VOD Player\";\n})(SegmentSources || (SegmentSources = {}));\nexport var SegmentUiElements;\n(function (SegmentUiElements) {\n SegmentUiElements[\"INFO\"] = \"info_icon\";\n SegmentUiElements[\"MORE_EPISODES\"] = \"more_episodes_link\";\n SegmentUiElements[\"PLAY\"] = \"play_icon\";\n SegmentUiElements[\"PLUS\"] = \"plus_icon\";\n SegmentUiElements[\"SERIES_EPISODE\"] = \"series_episode_link\";\n SegmentUiElements[\"SERIES_TITLE\"] = \"series_title_link\";\n})(SegmentUiElements || (SegmentUiElements = {}));\n// TODO refactor to SegmentEventStrings\nexport var SegmentVideoEventStrings;\n(function (SegmentVideoEventStrings) {\n SegmentVideoEventStrings[\"videoStart\"] = \"Video Started\";\n SegmentVideoEventStrings[\"videoViewed\"] = \"Video Viewed\";\n SegmentVideoEventStrings[\"videoPlaybackStart\"] = \"Video Playback Started\";\n SegmentVideoEventStrings[\"videoPlaybackComplete\"] = \"Video Playback Completed\";\n SegmentVideoEventStrings[\"videoPlaybackBufferStarted\"] = \"Video Playback Buffer Started\";\n SegmentVideoEventStrings[\"videoPlaybackInterrupted\"] = \"Video Playback Interrupted\";\n SegmentVideoEventStrings[\"videoContentStart\"] = \"Video Content Started\";\n SegmentVideoEventStrings[\"videoContentComplete\"] = \"Video Content Completed\";\n SegmentVideoEventStrings[\"videoContentPlaying\"] = \"Video Content Playing\";\n SegmentVideoEventStrings[\"videoPlaybackBufferComplete\"] = \"Video Playback Buffer Completed\";\n SegmentVideoEventStrings[\"videoPlaybackSeekStarted\"] = \"Video Playback Seek Started\";\n SegmentVideoEventStrings[\"videoPlaybackSeekCompleted\"] = \"Video Playback Seek Completed\";\n SegmentVideoEventStrings[\"videoPlaybackPaused\"] = \"Video Playback Paused\";\n SegmentVideoEventStrings[\"videoPlaybackResumed\"] = \"Video Playback Resumed\";\n SegmentVideoEventStrings[\"videoAdPlaying\"] = \"Video Ad Playing\";\n SegmentVideoEventStrings[\"videoAdSkipped\"] = \"Video Ad Skipped\";\n SegmentVideoEventStrings[\"videoAdStarted\"] = \"Video Ad Started\";\n SegmentVideoEventStrings[\"videoAdCompleted\"] = \"Video Ad Completed\";\n SegmentVideoEventStrings[\"videoAdPodStarted\"] = \"Video Ad Break Started\";\n SegmentVideoEventStrings[\"videoAdPodCompleted\"] = \"Video Ad Break Completed\";\n SegmentVideoEventStrings[\"videoAdResumed\"] = \"Video Ad Resumed\";\n SegmentVideoEventStrings[\"videoAdBufferStarted\"] = \"Video Ad Buffer Started\";\n SegmentVideoEventStrings[\"videoSlateStarted\"] = \"Video Slate Started\";\n SegmentVideoEventStrings[\"videoSlatePlaying\"] = \"Video Slate Playing\";\n SegmentVideoEventStrings[\"videoSlateCompleted\"] = \"Video Slate Completed\";\n SegmentVideoEventStrings[\"videoNielsenTagDetected\"] = \"Nielsen ID3 Tag Detected\";\n})(SegmentVideoEventStrings || (SegmentVideoEventStrings = {}));\nexport var TealiumEventPrefixes;\n(function (TealiumEventPrefixes) {\n TealiumEventPrefixes[\"PAGE\"] = \"analytics_pv_\";\n TealiumEventPrefixes[\"TRACK\"] = \"analytics_ev_\";\n})(TealiumEventPrefixes || (TealiumEventPrefixes = {}));\nexport var TealiumOnboardingActions;\n(function (TealiumOnboardingActions) {\n TealiumOnboardingActions[\"SKIP\"] = \"skip\";\n TealiumOnboardingActions[\"COMPLETE\"] = \"complete\";\n})(TealiumOnboardingActions || (TealiumOnboardingActions = {}));\nexport var TealiumRedesignEvents;\n(function (TealiumRedesignEvents) {\n TealiumRedesignEvents[\"COLLECTION_IMPRESSION\"] = \"collectionImpression\";\n TealiumRedesignEvents[\"COLLECTION_ITEM_SELECT\"] = \"collectionItemSelect\";\n TealiumRedesignEvents[\"HERO_ITEM_SELECT\"] = \"heroItemSelect\";\n})(TealiumRedesignEvents || (TealiumRedesignEvents = {}));\nexport var OptimizelyNotificationTypes;\n(function (OptimizelyNotificationTypes) {\n OptimizelyNotificationTypes[\"ACTIVATE\"] = \"ACTIVATE:experiment, user_id,attributes, variation, event\";\n OptimizelyNotificationTypes[\"DECISION\"] = \"DECISION:type, userId, attributes, decisionInfo\";\n OptimizelyNotificationTypes[\"OPTIMIZELY_CONFIG_UPDATE\"] = \"OPTIMIZELY_CONFIG_UPDATE\";\n OptimizelyNotificationTypes[\"TRACK\"] = \"TRACK:event_key, user_id, attributes, event_tags, event\";\n})(OptimizelyNotificationTypes || (OptimizelyNotificationTypes = {}));\nexport var OptimizelyUserAttributes;\n(function (OptimizelyUserAttributes) {\n OptimizelyUserAttributes[\"APP_SECTION_VISITED\"] = \"app_section_visited\";\n OptimizelyUserAttributes[\"COLLECTION_VISITED\"] = \"collection_visited\";\n OptimizelyUserAttributes[\"CURRENT_PAGE_URL\"] = \"current_page_url\";\n OptimizelyUserAttributes[\"AUTH_STATE\"] = \"authentication_state\";\n OptimizelyUserAttributes[\"FOX_PROFILE_STATE\"] = \"fox_profile_state\";\n OptimizelyUserAttributes[\"FIRST_SITE_VISIT\"] = \"is_first_visit\";\n OptimizelyUserAttributes[\"NUM_VISITS\"] = \"num_visits\";\n OptimizelyUserAttributes[\"VIDEO_50_PERCENT_WATCHING\"] = \"50_percent_watching\";\n})(OptimizelyUserAttributes || (OptimizelyUserAttributes = {}));\nexport var OptimizelyAuthState;\n(function (OptimizelyAuthState) {\n OptimizelyAuthState[\"NOT_AUTHED\"] = \"never attempted\";\n OptimizelyAuthState[\"ATTEMPTED_AUTH\"] = \"authentication attempted\";\n OptimizelyAuthState[\"SUCCESS_AUTH\"] = \"authentication successful\";\n OptimizelyAuthState[\"SIGN_OUT_ATTEMPTED_AUTH\"] = \"sign out attempted\";\n OptimizelyAuthState[\"SIGN_OUT_SUCCESS_AUTH\"] = \"manually signed out\";\n OptimizelyAuthState[\"AUTH_EXPIRED\"] = \"automatically signed out\";\n})(OptimizelyAuthState || (OptimizelyAuthState = {}));\n/* multi-platform track events */\nexport var TrackEvents;\n(function (TrackEvents) {\n TrackEvents[\"AUTHENTICATION_STARTED\"] = \"authenticationStarted\";\n TrackEvents[\"AUTH_SUCCESS_EVENT\"] = \"authSuccess\";\n TrackEvents[\"FB_LINKING_COMPLETED\"] = \"fbLinkingCompleted\";\n TrackEvents[\"FB_LINKING_STARTED\"] = \"fbLinkingStarted\";\n TrackEvents[\"FB_PASSWORD_CREATION_COMPLETED\"] = \"fbPasswordCreationCompleted\";\n TrackEvents[\"FB_PASSWORD_CREATION_STARTED\"] = \"fbPasswordCreationStarted\";\n TrackEvents[\"FB_SIGN_IN_COMPLETED\"] = \"fbSignInCompleted\";\n TrackEvents[\"FB_SIGN_IN_STARTED\"] = \"fbSignInStarted\";\n TrackEvents[\"FB_SIGN_UP_COMPLETED\"] = \"fbSignUpCompleted\";\n TrackEvents[\"FB_SIGN_UP_STARTED\"] = \"fbSignUpStarted\";\n TrackEvents[\"FXPL_PROFILE_SIGN_OUT_COMPLETED\"] = \"fxplProfileSignOutCompleted\";\n TrackEvents[\"FXPL_PROFILE_SIGN_OUT_SOURCE\"] = \"fxplProfileSignOutSource\";\n TrackEvents[\"ONBOARDING_START\"] = \"onboardingStart\";\n TrackEvents[\"ON_FAVORITE\"] = \"onFavorite\";\n TrackEvents[\"ON_UNFAVORITE\"] = \"onUnfavorite\";\n TrackEvents[\"PERKS_PRESENTED\"] = \"perksPresented\";\n TrackEvents[\"PLAYER_IDLE_PROMPT\"] = \"playerIdlePrompt\";\n TrackEvents[\"PLAYER_IDLE_PROMPT_CONFIRM\"] = \"playerIdlePromptConfirm\";\n TrackEvents[\"PREVIEW_PASS_EXPIRED\"] = \"previewPassExpired\";\n TrackEvents[\"PREVIEW_PASS_STARTED\"] = \"previewPassStarted\";\n TrackEvents[\"PROFILE_MARKETING_OPT_IN_CHANGED\"] = \"marketingOptInChangedEvent\";\n TrackEvents[\"PROFILE_SCREEN_BACKED_OUT\"] = \"profileScreenBackedOut\";\n TrackEvents[\"PROFILE_UPSELL_PRESENTED\"] = \"profileUpsellPresented\";\n TrackEvents[\"SCHEDULE_RESTART\"] = \"scheduleRestart\";\n TrackEvents[\"SCHEDULE_WATCH_LIVE\"] = \"scheduleWatchLive\";\n TrackEvents[\"SIGN_IN_COMPLETED\"] = \"signInCompleted\";\n TrackEvents[\"SIGN_IN_ERROR\"] = \"signInError\";\n TrackEvents[\"SIGN_IN_FORGOT_PASSWORD_STARTED\"] = \"signInForgotPasswordStarted\";\n TrackEvents[\"SIGN_IN_INCOMPLETE\"] = \"signInIncomplete\";\n TrackEvents[\"SIGN_IN_STARTED\"] = \"signInStarted\";\n TrackEvents[\"SIGN_OUT_COMPLETED\"] = \"signOutCompleted\";\n TrackEvents[\"SIGN_OUT_STARTED\"] = \"signOutStarted\";\n TrackEvents[\"SIGN_UP_COMPLETED\"] = \"signUpCompleted\";\n TrackEvents[\"SIGN_UP_ERROR\"] = \"signUpError\";\n TrackEvents[\"SIGN_UP_INCOMPLETE\"] = \"signUpIncomplete\";\n TrackEvents[\"SIGN_UP_STARTED\"] = \"signUpStarted\";\n TrackEvents[\"TV_PROVIDER_FEAT_LIST\"] = \"tvProviderFeatListViewed\";\n})(TrackEvents || (TrackEvents = {}));\nexport var EventVendorMap = (_a = {},\n _a[Events.ACCOUNT_UPDATE_PASSWORD_LANDING] = [Vendors.SEGMENT],\n _a[Events.ADDED_FAVORITES] = [Vendors.SEGMENT],\n _a[Events.AUTHENTICATION_COMPLETED] = [Vendors.SEGMENT],\n _a[Events.AUTHENTICATION_STARTED] = [Vendors.SEGMENT],\n _a[Events.AUTHENTICATON_SELECT_PROVIDER_COMPLETED] = [Vendors.SEGMENT],\n _a[Events.AUTHENTICATON_SELECT_PROVIDER_ERROR] = [Vendors.SEGMENT],\n _a[Events.AUTHENTICATON_SELECT_PROVIDER_STARTED] = [Vendors.SEGMENT],\n _a[Events.AUTHETNTICATION_LOGGED_OUT] = [Vendors.SEGMENT],\n _a[Events.BANNER_CLICKED] = [Vendors.SEGMENT],\n _a[Events.BANNER_NOTIFICATION_ACTION] = [Vendors.SEGMENT],\n _a[Events.BANNER_NOTIFICATION_IMPRESSION] = [Vendors.SEGMENT],\n _a[Events.BROWSE_ITEM_SELECTED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.BUTTON_LINK_SELECTED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.CAST_LANDING] = [Vendors.SEGMENT],\n _a[Events.CCPA_PAGE_LANDING] = [Vendors.SEGMENT],\n _a[Events.CHANNEL_PAGE_LANDING] = [Vendors.SEGMENT],\n _a[Events.COLLECTION_ITEMS_AVAILABLE] = [Vendors.SEGMENT],\n _a[Events.COLLECTION_ITEMS_RENDERED] = [Vendors.SEGMENT],\n _a[Events.CONTINUE_WATCHING_WIDGET] = [Vendors.SEGMENT],\n _a[Events.DETAILS_PAGE_PLAYLIST_LANDING] = [Vendors.SEGMENT],\n _a[Events.DETAIL_PAGE_DEFAULT_STATE] = [Vendors.SEGMENT],\n _a[Events.DETAIL_PAGE_MENU_ITEM_VIEW] = [Vendors.SEGMENT],\n _a[Events.EMAIL_ROADBLOCK_IMPRESSION] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.EMAIL_ROADBLOCK_SUBMIT] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.EMAIL_ROADBLOCK_BYPASS] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.EMAIL_ROADBLOCK_ABANDON] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.END_CARD_ITEM_SELECTED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.EVENT_END_CARD_IMPRESSION] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.EXPERIMENT_VIEWED] = [Vendors.SEGMENT],\n _a[Events.EXPOSURE] = [Vendors.SEGMENT],\n _a[Events.FB_LINKING_COMPLETED] = [Vendors.SEGMENT],\n _a[Events.FB_LINKING_STARTED] = [Vendors.SEGMENT],\n _a[Events.FB_PASSWORD_CREATION_COMPLETED] = [Vendors.SEGMENT],\n _a[Events.FB_PASSWORD_CREATION_STARTED] = [Vendors.SEGMENT],\n _a[Events.FB_SIGN_IN_COMPLETED] = [Vendors.SEGMENT],\n _a[Events.FB_SIGN_IN_STARTED] = [Vendors.SEGMENT],\n _a[Events.FB_SIGN_UP_COMPLETED] = [Vendors.SEGMENT],\n _a[Events.FB_SIGN_UP_STARTED] = [Vendors.SEGMENT],\n _a[Events.FIND_SECTION_SEARCH] = [Vendors.SEGMENT],\n _a[Events.FOOTER_LINK_CLICKED] = [Vendors.SEGMENT],\n _a[Events.GLOBAL_NAV_CLICKED] = [Vendors.SEGMENT],\n _a[Events.HEADER_LINK_CLICKED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.HERO_ITEM_SELECT_ACTION] = [Vendors.SEGMENT],\n _a[Events.IDLE_PROMPT] = [Vendors.SEGMENT],\n _a[Events.IDLE_PROMPT_ACTION] = [Vendors.SEGMENT],\n _a[Events.LIVE_TV_BUTTON_ACTION] = [Vendors.SEGMENT],\n _a[Events.LIVE_TV_EPG_CELL_TAPPED] = [Vendors.SEGMENT],\n _a[Events.LIVE_TV_EPG_DETAIL_EXPAND] = [Vendors.SEGMENT],\n _a[Events.LOCAL_SECTION_LANDING] = [Vendors.SEGMENT],\n _a[Events.MENU_ITEM_SELECTED] = [Vendors.SEGMENT],\n _a[Events.MODAL_CLOSED] = [Vendors.SEGMENT],\n _a[Events.PLAYER_LANDING] = [Vendors.SEGMENT],\n _a[Events.PLAYER_SCREEN_LAYOUT_CHANGED] = [Vendors.OPTIMIZELY],\n _a[Events.PLAYLIST_BUTTON_ACTION] = [Vendors.SEGMENT],\n _a[Events.PREVIEW_PASS_EXPIRED] = [Vendors.SEGMENT],\n _a[Events.PRIVACY_POLICY_PAGE_VIEW] = [Vendors.SEGMENT],\n _a[Events.PRIVIEW_PASS_STARTED] = [Vendors.SEGMENT],\n _a[Events.PROFILE_APPLE_ID_LINK_COMPLETED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.PROFILE_APPLE_ID_LINK_STARTED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.PROFILE_APPLE_ID_SIGNUP_COMPLETED] = [\n Vendors.SEGMENT,\n Vendors.TEALIUM,\n ],\n _a[Events.PROFILE_APPLE_ID_SIGNUP_STARTED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.PROFILE_GOOGLE_LINK_COMPLETED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.PROFILE_GOOGLE_LINK_STARTED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.PROFILE_INITIATED] = [Vendors.SEGMENT],\n _a[Events.PROFILE_LOGGED_OUT] = [Vendors.SEGMENT],\n _a[Events.PROFILE_PROMPT] = [Vendors.SEGMENT],\n _a[Events.PROFILE_PROMPT_LANDING] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SCREEN_BACKED_OUT] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGNIN_COMPLETED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.PROFILE_SIGNUP_COMPLETED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.PROFILE_SIGNUP_STATRED] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGN_IN_ERROR] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGN_IN_FORGOT_PASSWORD] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGN_IN_LANDING] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGN_IN_STARTED] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGN_OUT] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGN_OUT_STARTED] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGN_UP_ERROR] = [Vendors.SEGMENT],\n _a[Events.PROFILE_SIGN_UP_LANDING] = [Vendors.SEGMENT],\n _a[Events.PROFILE_UPSELL_PRESENTED] = [Vendors.SEGMENT],\n _a[Events.PURCHASE_CTA_CLICKED] = [Vendors.SEGMENT],\n _a[Events.REMOVED_FAVORITES] = [Vendors.SEGMENT],\n _a[Events.ROADBLOCK_LANDING] = [Vendors.SEGMENT],\n _a[Events.SEARCH_APPLIED_FILTER] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.SEARCH_COMPLETED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.SEARCH_RESULT_SELECTED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.SEARCH_STARTED] = [Vendors.SEGMENT, Vendors.TEALIUM],\n _a[Events.SETTINGS_SECTION_LANDING] = [Vendors.SEGMENT],\n _a[Events.SHOP_NOW_BUTTON_CLICKED] = [Vendors.SEGMENT],\n _a[Events.TOP_LEVEL_SECTION_LANDING] = [Vendors.SEGMENT],\n _a[Events.UPGRADE_NOW_BUTTON_CLICKED] = [Vendors.SEGMENT],\n _a);\nexport var EventTypeMap = (_b = {},\n _b[Events.ACCOUNT_UPDATE_PASSWORD_LANDING] = EventTypes.PAGE,\n _b[Events.ADDED_FAVORITES] = EventTypes.TRACK,\n _b[Events.AUTHENTICATION_COMPLETED] = EventTypes.TRACK,\n _b[Events.AUTHENTICATION_STARTED] = EventTypes.TRACK,\n _b[Events.AUTHENTICATON_SELECT_PROVIDER_COMPLETED] = EventTypes.TRACK,\n _b[Events.AUTHENTICATON_SELECT_PROVIDER_ERROR] = EventTypes.TRACK,\n _b[Events.AUTHENTICATON_SELECT_PROVIDER_STARTED] = EventTypes.TRACK,\n _b[Events.AUTHETNTICATION_LOGGED_OUT] = EventTypes.TRACK,\n _b[Events.BANNER_CLICKED] = EventTypes.TRACK,\n _b[Events.BANNER_NOTIFICATION_ACTION] = EventTypes.TRACK,\n _b[Events.BANNER_NOTIFICATION_IMPRESSION] = EventTypes.TRACK,\n _b[Events.BROWSE_ITEM_SELECTED] = EventTypes.TRACK,\n _b[Events.BUTTON_LINK_SELECTED] = EventTypes.TRACK,\n _b[Events.CAST_LANDING] = EventTypes.PAGE,\n _b[Events.CCPA_PAGE_LANDING] = EventTypes.PAGE,\n _b[Events.CHANNEL_PAGE_LANDING] = EventTypes.PAGE,\n _b[Events.COLLECTION_ITEMS_AVAILABLE] = EventTypes.TRACK,\n _b[Events.COLLECTION_ITEMS_RENDERED] = EventTypes.TRACK,\n _b[Events.CONTINUE_WATCHING_WIDGET] = EventTypes.TRACK,\n _b[Events.DETAILS_PAGE_PLAYLIST_LANDING] = EventTypes.PAGE,\n _b[Events.DETAIL_PAGE_DEFAULT_STATE] = EventTypes.PAGE,\n _b[Events.DETAIL_PAGE_MENU_ITEM_VIEW] = EventTypes.PAGE,\n _b[Events.EMAIL_ROADBLOCK_IMPRESSION] = EventTypes.TRACK,\n _b[Events.EMAIL_ROADBLOCK_SUBMIT] = EventTypes.TRACK,\n _b[Events.EMAIL_ROADBLOCK_BYPASS] = EventTypes.TRACK,\n _b[Events.EMAIL_ROADBLOCK_ABANDON] = EventTypes.TRACK,\n _b[Events.END_CARD_ITEM_SELECTED] = EventTypes.TRACK,\n _b[Events.EVENT_END_CARD_IMPRESSION] = EventTypes.TRACK,\n _b[Events.EXPERIMENT_VIEWED] = EventTypes.TRACK,\n _b[Events.EXPOSURE] = EventTypes.TRACK,\n _b[Events.FB_LINKING_COMPLETED] = EventTypes.TRACK,\n _b[Events.FB_LINKING_STARTED] = EventTypes.TRACK,\n _b[Events.FB_PASSWORD_CREATION_COMPLETED] = EventTypes.TRACK,\n _b[Events.FB_PASSWORD_CREATION_STARTED] = EventTypes.TRACK,\n _b[Events.FB_SIGN_IN_COMPLETED] = EventTypes.TRACK,\n _b[Events.FB_SIGN_IN_STARTED] = EventTypes.TRACK,\n _b[Events.FB_SIGN_UP_COMPLETED] = EventTypes.TRACK,\n _b[Events.FB_SIGN_UP_STARTED] = EventTypes.TRACK,\n _b[Events.FIND_SECTION_SEARCH] = EventTypes.PAGE,\n _b[Events.FOOTER_LINK_CLICKED] = EventTypes.TRACK,\n _b[Events.GLOBAL_NAV_CLICKED] = EventTypes.TRACK,\n _b[Events.HEADER_LINK_CLICKED] = EventTypes.TRACK,\n _b[Events.HERO_ITEM_SELECT_ACTION] = EventTypes.TRACK,\n _b[Events.IDLE_PROMPT] = EventTypes.TRACK,\n _b[Events.IDLE_PROMPT_ACTION] = EventTypes.TRACK,\n _b[Events.LIVE_TV_BUTTON_ACTION] = EventTypes.TRACK,\n _b[Events.LIVE_TV_EPG_CELL_TAPPED] = EventTypes.TRACK,\n _b[Events.LIVE_TV_EPG_DETAIL_EXPAND] = EventTypes.TRACK,\n _b[Events.LOCAL_SECTION_LANDING] = EventTypes.PAGE,\n _b[Events.MENU_ITEM_SELECTED] = EventTypes.TRACK,\n _b[Events.MODAL_CLOSED] = EventTypes.TRACK,\n _b[Events.PLAYER_LANDING] = EventTypes.PAGE,\n _b[Events.PLAYER_SCREEN_LAYOUT_CHANGED] = EventTypes.TRACK,\n _b[Events.PLAYLIST_BUTTON_ACTION] = EventTypes.TRACK,\n _b[Events.PREVIEW_PASS_EXPIRED] = EventTypes.TRACK,\n _b[Events.PRIVACY_POLICY_PAGE_VIEW] = EventTypes.TRACK,\n _b[Events.PRIVIEW_PASS_STARTED] = EventTypes.TRACK,\n _b[Events.PROFILE_APPLE_ID_LINK_COMPLETED] = EventTypes.TRACK,\n _b[Events.PROFILE_APPLE_ID_LINK_STARTED] = EventTypes.TRACK,\n _b[Events.PROFILE_APPLE_ID_SIGNUP_COMPLETED] = EventTypes.TRACK,\n _b[Events.PROFILE_APPLE_ID_SIGNUP_STARTED] = EventTypes.TRACK,\n _b[Events.PROFILE_GOOGLE_LINK_COMPLETED] = EventTypes.TRACK,\n _b[Events.PROFILE_GOOGLE_LINK_STARTED] = EventTypes.TRACK,\n _b[Events.PROFILE_INITIATED] = EventTypes.TRACK,\n _b[Events.PROFILE_LOGGED_OUT] = EventTypes.TRACK,\n _b[Events.PROFILE_PROMPT] = EventTypes.TRACK,\n _b[Events.PROFILE_PROMPT_LANDING] = EventTypes.PAGE,\n _b[Events.PROFILE_SCREEN_BACKED_OUT] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGNIN_COMPLETED] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGNUP_COMPLETED] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGNUP_STATRED] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGN_IN_ERROR] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGN_IN_FORGOT_PASSWORD] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGN_IN_LANDING] = EventTypes.PAGE,\n _b[Events.PROFILE_SIGN_IN_STARTED] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGN_OUT] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGN_OUT_STARTED] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGN_UP_ERROR] = EventTypes.TRACK,\n _b[Events.PROFILE_SIGN_UP_LANDING] = EventTypes.PAGE,\n _b[Events.PROFILE_UPSELL_PRESENTED] = EventTypes.TRACK,\n _b[Events.PURCHASE_CTA_CLICKED] = EventTypes.TRACK,\n _b[Events.REMOVED_FAVORITES] = EventTypes.TRACK,\n _b[Events.ROADBLOCK_LANDING] = EventTypes.TRACK,\n _b[Events.SEARCH_APPLIED_FILTER] = EventTypes.TRACK,\n _b[Events.SEARCH_COMPLETED] = EventTypes.TRACK,\n _b[Events.SEARCH_RESULT_SELECTED] = EventTypes.TRACK,\n _b[Events.SEARCH_STARTED] = EventTypes.TRACK,\n _b[Events.SETTINGS_SECTION_LANDING] = EventTypes.PAGE,\n _b[Events.SETTINGS_SECTION_LANDING] = EventTypes.PAGE,\n _b[Events.SHOP_NOW_BUTTON_CLICKED] = EventTypes.TRACK,\n _b[Events.TOP_LEVEL_SECTION_LANDING] = EventTypes.PAGE,\n _b[Events.UPGRADE_NOW_BUTTON_CLICKED] = EventTypes.TRACK,\n _b);\n// TODO: add logic that can build these strings for\n// both Segment and Tealium from a generic set of strings\nexport var SegmentEventStrings = (_c = {},\n _c[Events.ACCOUNT_UPDATE_PASSWORD_LANDING] = \"Account Update Password Landing\",\n _c[Events.ADDED_FAVORITES] = \"Added Favorites\",\n _c[Events.AUTHENTICATION_COMPLETED] = \"Authentication Completed\",\n _c[Events.AUTHENTICATION_STARTED] = \"Authentication Started\",\n _c[Events.AUTHENTICATON_SELECT_PROVIDER_COMPLETED] = \"Authentication Select Provider Completed\",\n _c[Events.AUTHENTICATON_SELECT_PROVIDER_ERROR] = \"Authentication Select Provider Error\",\n _c[Events.AUTHENTICATON_SELECT_PROVIDER_STARTED] = \"Authentication Select Provider Started\",\n _c[Events.AUTHETNTICATION_LOGGED_OUT] = \"Authentication Logged Out\",\n _c[Events.BANNER_CLICKED] = \"Banner Clicked\",\n _c[Events.BANNER_NOTIFICATION_ACTION] = \"Banner Notification Action\",\n _c[Events.BANNER_NOTIFICATION_IMPRESSION] = \"Banner Notification Impression\",\n _c[Events.BROWSE_ITEM_SELECTED] = \"Browse Item Selected\",\n _c[Events.BUTTON_LINK_SELECTED] = \"Button Link Selected\",\n _c[Events.CAST_LANDING] = \"Cast Landing\",\n _c[Events.CCPA_PAGE_LANDING] = \"CCPA Page Landing\",\n _c[Events.CHANNEL_PAGE_LANDING] = \"Channel Page Landing\",\n _c[Events.COLLECTION_ITEMS_AVAILABLE] = \"Collection Items Available\",\n _c[Events.COLLECTION_ITEMS_RENDERED] = \"Collection Items Rendered\",\n _c[Events.CONTINUE_WATCHING_WIDGET] = \"Continue Watching Widget\",\n _c[Events.DETAILS_PAGE_PLAYLIST_LANDING] = \"Playlist Landing\",\n _c[Events.DETAIL_PAGE_DEFAULT_STATE] = \"Details Page Default State\",\n _c[Events.DETAIL_PAGE_MENU_ITEM_VIEW] = \"Detail Page Menu Item\",\n _c[Events.EMAIL_ROADBLOCK_IMPRESSION] = \"Email Roadblock Impression\",\n _c[Events.EMAIL_ROADBLOCK_SUBMIT] = \"Email Roadblock Successful Email Submission\",\n _c[Events.EMAIL_ROADBLOCK_BYPASS] = \"Email Roadblock Bypass\",\n _c[Events.EMAIL_ROADBLOCK_ABANDON] = \"Email Roadblock Abandon\",\n _c[Events.END_CARD_ITEM_SELECTED] = \"End Card Item Selected\",\n _c[Events.EVENT_END_CARD_IMPRESSION] = \"End Card Impression\",\n _c[Events.EXPERIMENT_VIEWED] = \"Experiment Viewed\",\n _c[Events.EXPOSURE] = \"$exposure\",\n _c[Events.FB_LINKING_COMPLETED] = \"FB Profile Linked\",\n _c[Events.FB_LINKING_STARTED] = \"FB Profile Linking Started\",\n _c[Events.FB_PASSWORD_CREATION_COMPLETED] = \"FB Profile Password Created\",\n _c[Events.FB_PASSWORD_CREATION_STARTED] = \"FB Profile Password Creation Started\",\n _c[Events.FB_SIGN_IN_COMPLETED] = \"FB Profile Signed In\",\n _c[Events.FB_SIGN_IN_STARTED] = \"FB Profile Sign In Started\",\n _c[Events.FB_SIGN_UP_COMPLETED] = \"FB Profile Signed Up\",\n _c[Events.FB_SIGN_UP_STARTED] = \"FB Profile Sign Up Started\",\n _c[Events.FIND_SECTION_SEARCH] = \"Find Section Search\",\n _c[Events.FOOTER_LINK_CLICKED] = \"Footer Link Clicked\",\n _c[Events.GLOBAL_NAV_CLICKED] = \"Global Nav Clicked\",\n _c[Events.HEADER_LINK_CLICKED] = \"Header Link Clicked\",\n _c[Events.HERO_ITEM_SELECT_ACTION] = \"Hero Item Select Action\",\n _c[Events.IDLE_PROMPT] = \"Idle Prompt\",\n _c[Events.IDLE_PROMPT_ACTION] = \"Idle Prompt Action\",\n _c[Events.LIVE_TV_BUTTON_ACTION] = \"Live TV Button Action\",\n _c[Events.LIVE_TV_EPG_CELL_TAPPED] = \"Live TV EPG Cell Tapped\",\n _c[Events.LIVE_TV_EPG_DETAIL_EXPAND] = \"Live TV EPG Detail Expand\",\n _c[Events.LOCAL_SECTION_LANDING] = \"Local Section Landing\",\n _c[Events.MENU_ITEM_SELECTED] = \"Menu Item Selected\",\n _c[Events.MODAL_CLOSED] = \"Modal Closed\",\n _c[Events.PLAYER_LANDING] = \"Player Landing\",\n _c[Events.PLAYLIST_BUTTON_ACTION] = \"Playlist Button Action\",\n _c[Events.PREVIEW_PASS_EXPIRED] = \"Preview Pass Expired\",\n _c[Events.PRIVACY_POLICY_PAGE_VIEW] = \"Privacy Policy Viewed\",\n _c[Events.PRIVIEW_PASS_STARTED] = \"Preview Pass Started\",\n _c[Events.PROFILE_APPLE_ID_LINK_COMPLETED] = \"Profile Apple Id Link Completed\",\n _c[Events.PROFILE_APPLE_ID_LINK_STARTED] = \"Profile Apple Id Link Started\",\n _c[Events.PROFILE_APPLE_ID_SIGNUP_COMPLETED] = \"Profile Apple Id Sign Up Completed\",\n _c[Events.PROFILE_APPLE_ID_SIGNUP_STARTED] = \"Profile Apple Id Sign Up Started\",\n _c[Events.PROFILE_GOOGLE_LINK_COMPLETED] = \"Profile Google Link Completed\",\n _c[Events.PROFILE_GOOGLE_LINK_STARTED] = \"Profile Google Link Started\",\n _c[Events.PROFILE_INITIATED] = \"Profile Initiated\",\n _c[Events.PROFILE_LOGGED_OUT] = \"Profile Logged Out\",\n _c[Events.PROFILE_PROMPT] = \"Profile Prompt\",\n _c[Events.PROFILE_PROMPT_LANDING] = \"Profile Prompt Landing\",\n _c[Events.PROFILE_SCREEN_BACKED_OUT] = \"Profile Screen Backed Out\",\n _c[Events.PROFILE_SIGNIN_COMPLETED] = \"Profile Sign In Completed\",\n _c[Events.PROFILE_SIGNUP_COMPLETED] = \"Profile Sign Up Completed\",\n _c[Events.PROFILE_SIGNUP_STATRED] = \"Profile Sign Up Started\",\n _c[Events.PROFILE_SIGN_IN_ERROR] = \"Profile Sign In Error\",\n _c[Events.PROFILE_SIGN_IN_FORGOT_PASSWORD] = \"Profile Sign In Forgot Password\",\n _c[Events.PROFILE_SIGN_IN_LANDING] = \"Profile Sign In Landing\",\n _c[Events.PROFILE_SIGN_IN_STARTED] = \"Profile Sign In Started\",\n _c[Events.PROFILE_SIGN_OUT] = \"Profile Signed Out\",\n _c[Events.PROFILE_SIGN_OUT_STARTED] = \"Profile Sign Out Started\",\n _c[Events.PROFILE_SIGN_UP_ERROR] = \"Profile Sign Up Error\",\n _c[Events.PROFILE_SIGN_UP_LANDING] = \"Profile Sign Up Landing\",\n _c[Events.PROFILE_UPSELL_PRESENTED] = \"Profile Upsell Presented\",\n _c[Events.PURCHASE_CTA_CLICKED] = \"Purchase CTA Clicked\",\n _c[Events.REMOVED_FAVORITES] = \"Removed Favorites\",\n _c[Events.ROADBLOCK_LANDING] = \"Roadblock Landing\",\n _c[Events.SEARCH_APPLIED_FILTER] = \"Search Applied Filter\",\n _c[Events.SEARCH_COMPLETED] = \"Search Completed\",\n _c[Events.SEARCH_RESULT_SELECTED] = \"Search Result Selected\",\n _c[Events.SEARCH_STARTED] = \"Search Started\",\n _c[Events.SETTINGS_SECTION_LANDING] = \"Settings Section Landing\",\n _c[Events.SHOP_NOW_BUTTON_CLICKED] = \"Shop Now Button Clicked\",\n _c[Events.TOP_LEVEL_SECTION_LANDING] = \"Top Level Section Landing\",\n _c[Events.UPGRADE_NOW_BUTTON_CLICKED] = \"Upgrade Now Button Clicked\",\n _c);\n// TODO: add logic that can build these strings for\n// both Segment and Tealium from a generic set of strings\nexport var TealiumEventStrings = (_d = {},\n _d[Events.BROWSE_ITEM_SELECTED] = \"browse_item_selected\",\n _d[Events.BUTTON_LINK_SELECTED] = \"button_link_selected\",\n _d[Events.EMAIL_ROADBLOCK_IMPRESSION] = \"email_roadblock_impression\",\n _d[Events.EMAIL_ROADBLOCK_SUBMIT] = \"email_roadblock_submit\",\n _d[Events.EMAIL_ROADBLOCK_BYPASS] = \"email_roadblock_bypass\",\n _d[Events.EMAIL_ROADBLOCK_ABANDON] = \"email_roadblock_abandon\",\n _d[Events.END_CARD_ITEM_SELECTED] = \"end_card_item_selected\",\n _d[Events.EVENT_END_CARD_IMPRESSION] = \"end_card_impression\",\n _d[Events.HEADER_LINK_CLICKED] = \"header_link_click\",\n _d[Events.SEARCH_APPLIED_FILTER] = \"search_applied_filter\",\n _d[Events.SEARCH_RESULT_SELECTED] = \"search_result_selected\",\n _d[Events.SEARCH_STARTED] = \"search_started\",\n _d[Events.SEARCH_COMPLETED] = \"search_completed\",\n _d[Events.PROFILE_APPLE_ID_LINK_STARTED] = \"profile_apple_id_link_start\",\n _d[Events.PROFILE_APPLE_ID_LINK_COMPLETED] = \"profile_apple_id_link_complete\",\n _d[Events.PROFILE_APPLE_ID_SIGNUP_STARTED] = \"profile_apple_id_sign_up_start\",\n _d[Events.PROFILE_APPLE_ID_SIGNUP_COMPLETED] = \"profile_apple_id_sign_up_complete\",\n _d[Events.PROFILE_GOOGLE_LINK_STARTED] = \"google_link_start\",\n _d[Events.PROFILE_GOOGLE_LINK_COMPLETED] = \"google_link_complete\",\n _d[Events.PROFILE_SIGNUP_COMPLETED] = \"profile_signup_complete\",\n _d[Events.PROFILE_SIGNIN_COMPLETED] = \"profile_login_complete\",\n _d);\n/* miscellaneous */\nexport var APP_VERSION = \"web\";\nexport var FAVORITES_TYPE_PERSONALITY = \"personality\";\nexport var NATION = \"foxnation\";\nexport var PAGE_NAME_PREFIX = \"delta:web\";\nexport var LABEL_COLLECTION_CTA_PAGE_VIEW = \"Collections Section\";\nexport var LABEL_LIVE_LOC_REQ_PAGE_VIEW = \"Live TV - Location Required\";\nexport var LABEL_PAGE_NAME_MOVIES = \"Movies Section\";\nexport var LABEL_TV_PROVIDER_SIGN_OUT_PAGE_VIEW = \"TV Provider Sign Out\";\nexport var LOGGED_IN = \"logged in\";\nexport var LOGGED_OUT = \"logged out\";\nexport var MAX_REFERRER_LENGTH = 2;\nexport var OPTIMIZELY_COLLECTION_VIEWED = \"Collection Viewed\";\nexport var OPTIMIZELY_COLLECTION_VIEWED_SESSION_STORAGE = \"COLLECTIONS_VIEWED\";\nexport var OPTIMIZELY_SEGMENT_LOCAL_STORAGE = \"optimizelyExperiments\";\nexport var PAGE_PROPS_STORAGE = \"PAGE_PROPS_STORAGE\";\nexport var SEARCH_INPUT_TRIGGER_INTERVAL_MS = 5000;\nexport var SECOND_SCREEN_ANONYMOUS_ID = \"lastAnonymousProfileId\";\nexport var SECOND_SCREEN_PROFILE_ID = \"secondScreenProfileId\";\nexport var SEGMENT_CATEGORY_TYPE_LOCAL = \"ftsLocal\";\nexport var SEGMENT_CONTENT_PLAYING_INTERVAL_SEC = 10;\nexport var SEGMENT_DEVICE_ID_COOKIE = \"segment-device-id\";\nexport var SEGMENT_HERO_COLLECTION_TITLE = \"showcase\";\nexport var SEGMENT_PAGE_TYPE_CCPA = \"ccpa\";\nexport var SEGMENT_PAGE_TYPE_PLAYER = \"player\";\nexport var SESSION_STORAGE_REFERRER_TRACKING = \"referrerTracking\";\n// todo: deprecate in favor of TealiumEventPrefixes\nexport var TEALIUM_EVENT_PREFIX = \"analytics_ev_\";\nexport var FP_NEVER_ATTEMPTED = \"never attempted\";\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar _a;\nimport { BUILD_VERSION, BUSINESS_UNIT, cleanObject, deeplySetProperty, executeEvent, getFavoritesProps, hasEntitlementOverride, recursiveMerge, } from \"./CommonHelper\";\nimport { PAGE_NAME_PREFIX, PageNames, TEALIUM_EVENT_PREFIX, TealiumOnboardingActions, PAGE_PROPS_STORAGE, TealiumEventStrings, TealiumRedesignEvents, TrackEvents, } from \"./Enums\";\nimport { getLastAnonymousProfileId, setSegmentOptimizelyData, } from \"./SegmentHelper\";\nvar ALL_COLLECTIONS = PageNames.ALL_COLLECTIONS, CHANNEL = PageNames.CHANNEL, COLLECTION_ENTERTAINMENT = PageNames.COLLECTION_ENTERTAINMENT, COLLECTION_HOME = PageNames.COLLECTION_HOME, COLLECTION_LISTEN = PageNames.COLLECTION_LISTEN, COLLECTION_LIVE_TV = PageNames.COLLECTION_LIVE_TV, COLLECTION_LOCAL = PageNames.COLLECTION_LOCAL, COLLECTION_MOVIES = PageNames.COLLECTION_MOVIES, COLLECTION_NEWS = PageNames.COLLECTION_NEWS, COLLECTION_PERSONALITIES = PageNames.COLLECTION_PERSONALITIES, COLLECTION_SHOWS = PageNames.COLLECTION_SHOWS, COLLECTION_SPORTS = PageNames.COLLECTION_SPORTS, DETAIL = PageNames.DETAIL, FAVORITES_DETAIL = PageNames.FAVORITES_DETAIL, FAVORITES_LIVE = PageNames.FAVORITES_LIVE, FOOTER = PageNames.FOOTER, FX_CONFIRM_SUB = PageNames.FX_CONFIRM_SUB, FX_MARKETING = PageNames.FX_MARKETING, FX_MVPD_NO_SUPPORT = PageNames.FX_MVPD_NO_SUPPORT, HOME = PageNames.HOME, HOME_COLLECTIONS = PageNames.HOME_COLLECTIONS, LIVE = PageNames.LIVE, LIVE_SCHEDULE = PageNames.LIVE_SCHEDULE, MOVIES = PageNames.MOVIES, NETWORK_DETAIL = PageNames.NETWORK_DETAIL, NEWS = PageNames.NEWS, PLAYER = PageNames.PLAYER, PLAYER_COLLECTION = PageNames.PLAYER_COLLECTION, PLAYER_DETAIL = PageNames.PLAYER_DETAIL, PLAYER_GENERAL = PageNames.PLAYER_GENERAL, PROFILE_SIGN_IN = PageNames.PROFILE_SIGN_IN, PROFILE_SIGN_UP = PageNames.PROFILE_SIGN_UP, SEARCH = PageNames.SEARCH, SETTINGS = PageNames.SETTINGS, SIGN_IN = PageNames.SIGN_IN, SHOWS = PageNames.SHOWS;\nvar COLLECTION_IMPRESSION = TealiumRedesignEvents.COLLECTION_IMPRESSION, COLLECTION_ITEM_SELECT = TealiumRedesignEvents.COLLECTION_ITEM_SELECT, HERO_ITEM_SELECT = TealiumRedesignEvents.HERO_ITEM_SELECT;\nvar AUTHENTICATION_STARTED = TrackEvents.AUTHENTICATION_STARTED, ONBOARDING_START = TrackEvents.ONBOARDING_START, ON_FAVORITE = TrackEvents.ON_FAVORITE, ON_UNFAVORITE = TrackEvents.ON_UNFAVORITE, PERKS_PRESENTED = TrackEvents.PERKS_PRESENTED, PLAYER_IDLE_PROMPT = TrackEvents.PLAYER_IDLE_PROMPT, PLAYER_IDLE_PROMPT_CONFIRM = TrackEvents.PLAYER_IDLE_PROMPT_CONFIRM, PREVIEW_PASS_EXPIRED = TrackEvents.PREVIEW_PASS_EXPIRED, PREVIEW_PASS_STARTED = TrackEvents.PREVIEW_PASS_STARTED, SCHEDULE_RESTART = TrackEvents.SCHEDULE_RESTART, SCHEDULE_WATCH_LIVE = TrackEvents.SCHEDULE_WATCH_LIVE, SIGN_IN_COMPLETED = TrackEvents.SIGN_IN_COMPLETED, SIGN_IN_ERROR = TrackEvents.SIGN_IN_ERROR, SIGN_IN_FORGOT_PASSWORD_STARTED = TrackEvents.SIGN_IN_FORGOT_PASSWORD_STARTED, SIGN_IN_INCOMPLETE = TrackEvents.SIGN_IN_INCOMPLETE, SIGN_IN_STARTED = TrackEvents.SIGN_IN_STARTED, SIGN_OUT_COMPLETED = TrackEvents.SIGN_OUT_COMPLETED, SIGN_UP_COMPLETED = TrackEvents.SIGN_UP_COMPLETED, SIGN_UP_ERROR = TrackEvents.SIGN_UP_ERROR, SIGN_UP_INCOMPLETE = TrackEvents.SIGN_UP_INCOMPLETE, SIGN_UP_STARTED = TrackEvents.SIGN_UP_STARTED;\nexport var eventPageTypes = (_a = {},\n _a[ALL_COLLECTIONS] = \"all collections\",\n _a[CHANNEL] = \"channel\",\n _a[COLLECTION_ENTERTAINMENT] = \"entertainment\",\n _a[COLLECTION_HOME] = \"home\",\n _a[COLLECTION_LISTEN] = \"listen\",\n _a[COLLECTION_LIVE_TV] = \"live tv\",\n _a[COLLECTION_LOCAL] = \"local\",\n _a[COLLECTION_MOVIES] = \"movies\",\n _a[COLLECTION_NEWS] = \"news\",\n _a[COLLECTION_PERSONALITIES] = \"personalities\",\n _a[COLLECTION_SHOWS] = \"shows\",\n _a[COLLECTION_SPORTS] = \"sports\",\n _a[DETAIL] = \"detail\",\n _a[FAVORITES_DETAIL] = \"detail page\",\n _a[FAVORITES_LIVE] = \"live page\",\n _a[FOOTER] = \"footer page\",\n _a[FX_CONFIRM_SUB] = \"fxpl confirm subscription\",\n _a[FX_MARKETING] = \"fxpl landing\",\n _a[FX_MVPD_NO_SUPPORT] = \"fxpl confirm subscription\",\n _a[HOME] = \"home\",\n _a[HOME_COLLECTIONS] = \"collections\",\n _a[LIVE] = \"live tv\",\n _a[LIVE_SCHEDULE] = \"livetv:schedule\",\n _a[MOVIES] = \"movies\",\n _a[NETWORK_DETAIL] = \"network\",\n _a[NEWS] = \"news\",\n _a[PLAYER] = \"player\",\n _a[PLAYER_COLLECTION] = \"collection:player\",\n _a[PLAYER_DETAIL] = \"detail:player\",\n _a[PLAYER_GENERAL] = \"general:player\",\n _a[PROFILE_SIGN_IN] = \"account:profile sign in\",\n _a[PROFILE_SIGN_UP] = \"account:profile sign up\",\n _a[SETTINGS] = \"settings\",\n _a[SIGN_IN] = \"sign-in\",\n _a[SHOWS] = \"shows\",\n _a);\nvar PATH_GLOBAL = \"context.tealium\";\nvar SOURCE_COLLECTION = PATH_GLOBAL + \".source.collection\";\nexport var SOURCE_COLLECTION_TYPE = SOURCE_COLLECTION + \".type\";\nexport var SOURCE_COLLECTION_TITLE = SOURCE_COLLECTION + \".title\";\nexport var SOURCE_COLLECTION_ITEMS = SOURCE_COLLECTION + \".items\";\nexport var SOURCE_COLLECTION_SELECTED_ITEM = SOURCE_COLLECTION + \".selectedItem\";\nexport var SOURCE_IS_SHOW = PATH_GLOBAL + \".source.isShow\";\nexport var SOURCE_AUTH = PATH_GLOBAL + \".source.auth\";\nexport var SOURCE_PROFILE_START = PATH_GLOBAL + \".source.profileStart\";\nexport var callContextEvent = function (action, network) {\n var _a, _b, _c;\n var sFallback = window.s_analytics;\n var s = (_a = window.s) !== null && _a !== void 0 ? _a : sFallback;\n if (s && network) {\n var networkMappingConfig = (_b = window.ExternalConfig) === null || _b === void 0 ? void 0 : _b.epgNetworkLogoMapping;\n var livestreamNetwork = (_c = networkMappingConfig === null || networkMappingConfig === void 0 ? void 0 : networkMappingConfig.network) === null || _c === void 0 ? void 0 : _c.toLowerCase();\n var linkTrackLocationArr = [\n \"contextData.page.action\",\n \"contextData.page.livestream_network\",\n ];\n s.contextData = {\n \"page.action\": action,\n \"page.livestream_network\": livestreamNetwork,\n };\n s.linkTrackVars = linkTrackLocationArr.join(\",\");\n s.tl(true, \"o\", action);\n }\n};\nfunction IEcustomEventPolyfill(lclEvent, params) {\n var lclParams = {\n bubbles: false,\n cancelable: false,\n detail: params.detail,\n };\n var evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(lclEvent, lclParams.bubbles, lclParams.cancelable, lclParams.detail);\n return evt;\n}\nexport var callEvent = function (name, data) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n if (data === void 0) { data = {}; }\n var isTrackingEnabled = isTrackingEnabledForEvent(name);\n var user_xid = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getLocalStorage({ key: \"xid\" });\n if (!name || !isTrackingEnabled)\n return null;\n var defaultProps = {\n last_anonymous_profile_id: getLastAnonymousProfileId(),\n user_xid: user_xid,\n app_build: BuildNumber,\n app_name: (_d = (_c = (_b = window.ExternalConfig) === null || _b === void 0 ? void 0 : _b.analytics) === null || _c === void 0 ? void 0 : _c.app_name) !== null && _d !== void 0 ? _d : \"foxnow\",\n app_platform: (_g = (_f = (_e = window.ExternalConfig) === null || _e === void 0 ? void 0 : _e.analytics) === null || _f === void 0 ? void 0 : _f.app_platform) !== null && _g !== void 0 ? _g : \"web\",\n app_version: Version,\n primary_business_unit: (_k = (_j = (_h = window.ExternalConfig) === null || _h === void 0 ? void 0 : _h.analytics) === null || _j === void 0 ? void 0 : _j.primary_business_unit) !== null && _k !== void 0 ? _k : \"fng\",\n secondary_business_unit: (_o = (_m = (_l = window.ExternalConfig) === null || _l === void 0 ? void 0 : _l.brand) === null || _m === void 0 ? void 0 : _m.businessUnit) !== null && _o !== void 0 ? _o : \"fox\",\n };\n var eventPayload = __assign(__assign({}, data), defaultProps);\n if (typeof window.CustomEvent !== \"function\") {\n IEcustomEventPolyfill.prototype = window.Event.prototype;\n window.CustomEvent =\n IEcustomEventPolyfill;\n }\n // TODO: remove and refactore the file and fix tests once we got confirmation from Michael DeLa Cruz for Adobe/Tealium cut off\n var ev = new window.CustomEvent(name, { detail: eventPayload });\n var silenceLogOutput = (_p = window.DataLayer) === null || _p === void 0 ? void 0 : _p.isTestEnvironment();\n if (!silenceLogOutput)\n console.debug(\"Dispatching tealium events\", name, { detail: eventPayload });\n return document.dispatchEvent(ev);\n};\n// TODO: split this function up\nexport var callPageView = function (_a) {\n var account = _a.account, cb = _a.cb, collection = _a.collection, domain = _a.domain, footerType = _a.footerType, isFounders = _a.isFounders, isFreemium = _a.isFreemium, networkEntitlementList = _a.networkEntitlementList, pageName = _a.pageName, pageTitle = _a.pageTitle, detailType = _a.pageType, panelExperimentData = _a.panelExperimentData, provider = _a.provider, seriesType = _a.seriesType, useUtagGlobal = _a.useUtagGlobal;\n return __awaiter(void 0, void 0, void 0, function () {\n var providerCookie, cookieProviderName, collectionType, collectionTitleFallback, collectionTitle, pTitle, cLength, eventPageType, cType, pageType, videoIdx, video, videoSeriesType, sport, matchup, homeTeam, awayTeam, sportsData, cTitleOriginal, cTitle, eventPageName, favData, defaultProviderName, providerName, mvpd, isAuthenticated, authenticatedText, profileId, optimizelyExperimentData, experimentData, preauthorizedResources, validEntitlements, entitlements, formattedEntitlements, noEntitlementsString, userEntitlements, entitlementOverride, name, storagePageName, storagePageType, localStoragePageProps, page_name, page_type, last_anonymous_profile_id, data, utagData, scriptLoaded, pageName_1, callSign, favData_1, eventData;\n var _b;\n var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26;\n return __generator(this, function (_27) {\n switch (_27.label) {\n case 0:\n providerCookie = (_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.getCookie({\n name: (_e = (_d = window.DataLayer.enums) === null || _d === void 0 ? void 0 : _d.MVPD_COOKIE) !== null && _e !== void 0 ? _e : \"\",\n });\n cookieProviderName = (_f = window.DataLayer) === null || _f === void 0 ? void 0 : _f.getMVPD();\n collectionType = collection === null || collection === void 0 ? void 0 : collection.collectionType;\n collectionTitleFallback = collection === null || collection === void 0 ? void 0 : collection.name;\n collectionTitle = (_g = collection === null || collection === void 0 ? void 0 : collection.headline) !== null && _g !== void 0 ? _g : collectionTitleFallback;\n pTitle = (_h = collection === null || collection === void 0 ? void 0 : collection.pageTitle) !== null && _h !== void 0 ? _h : pageTitle;\n cLength = (_o = (_m = (_j = collection === null || collection === void 0 ? void 0 : collection.collectionLength) !== null && _j !== void 0 ? _j : (_l = (_k = collection === null || collection === void 0 ? void 0 : collection.items) === null || _k === void 0 ? void 0 : _k.member) === null || _l === void 0 ? void 0 : _l.length) !== null && _m !== void 0 ? _m : collection === null || collection === void 0 ? void 0 : collection.totalItems) !== null && _o !== void 0 ? _o : 0;\n eventPageType = (_p = eventPageTypes[pageName]) !== null && _p !== void 0 ? _p : \"default\";\n cType = collectionType || \"no collection type\";\n if (cType === \"network\")\n cType = collectionType + \"-\" + BUSINESS_UNIT;\n videoIdx = (_q = collection === null || collection === void 0 ? void 0 : collection.selectedItem) !== null && _q !== void 0 ? _q : 0;\n video = (_t = (_s = (_r = collection === null || collection === void 0 ? void 0 : collection.items) === null || _r === void 0 ? void 0 : _r.member) === null || _s === void 0 ? void 0 : _s[videoIdx]) !== null && _t !== void 0 ? _t : null;\n videoSeriesType = (_u = video === null || video === void 0 ? void 0 : video.seriesType) !== null && _u !== void 0 ? _u : null;\n sport = \"none\";\n matchup = \"none\";\n if (videoSeriesType === \"sportingEvent\") {\n sport = (_v = video === null || video === void 0 ? void 0 : video.sportTag) !== null && _v !== void 0 ? _v : sport;\n matchup = (_w = video === null || video === void 0 ? void 0 : video.name) !== null && _w !== void 0 ? _w : \"none\";\n }\n homeTeam = (_x = video === null || video === void 0 ? void 0 : video.home_team) !== null && _x !== void 0 ? _x : \"none\";\n awayTeam = (_y = video === null || video === void 0 ? void 0 : video.away_team) !== null && _y !== void 0 ? _y : \"none\";\n sportsData = ((_z = window.DataLayer) === null || _z === void 0 ? void 0 : _z.getSportsFeatures())\n ? { sport: sport, matchup: matchup, homeTeam: homeTeam, awayTeam: awayTeam }\n : {};\n cTitleOriginal = collectionTitle || null;\n cTitle = (cTitleOriginal || \"\").toLowerCase();\n eventPageName = getEventPageName({\n pageName: pageName,\n collectionType: cType,\n collectionTitle: cTitle,\n pageType: eventPageType,\n pageTitle: pTitle,\n seriesType: seriesType,\n footerType: footerType,\n });\n favData = getFavoritesData();\n defaultProviderName = provider === null || provider === void 0 ? void 0 : provider.adobePassId;\n providerName = defaultProviderName || cookieProviderName;\n mvpd = providerName || \"no mvpd\";\n isAuthenticated = providerName && !((_0 = window.DataLayer) === null || _0 === void 0 ? void 0 : _0.isPreviewPass(providerName));\n authenticatedText = isAuthenticated\n ? \"authenticated\"\n : \"not authenticated\";\n profileId = account === null || account === void 0 ? void 0 : account.profileId;\n optimizelyExperimentData = getOptimizelyExperimentData();\n experimentData = function () {\n var experiments = [];\n if (optimizelyExperimentData)\n experiments.push(optimizelyExperimentData);\n if (panelExperimentData)\n experiments.push(panelExperimentData);\n if (experiments.length > 0) {\n var experimentString = experiments.join(\",\");\n // Set utag to avoid null values for nested objects\n deeplySetProperty(window, \"utag_data.user.testname\", experimentString);\n return experimentString;\n }\n return null;\n };\n preauthorizedResources = defaultProviderName\n ? networkEntitlementList\n : providerCookie === null || providerCookie === void 0 ? void 0 : providerCookie.preauthorizedResources;\n validEntitlements = preauthorizedResources && isAuthenticated;\n entitlements = EnableAnalyticsEntitlementFix\n ? validEntitlements\n : preauthorizedResources;\n formattedEntitlements = entitlements\n ? preauthorizedResources.sort().join()\n : \"\";\n noEntitlementsString = ((_2 = (_1 = window.ExternalConfig) === null || _1 === void 0 ? void 0 : _1.analytics) === null || _2 === void 0 ? void 0 : _2.app_name) === \"foxnation\"\n ? \"foxnation\"\n : \"no entitlements\";\n userEntitlements = formattedEntitlements.length > 0\n ? formattedEntitlements\n : noEntitlementsString;\n entitlementOverride = hasEntitlementOverride();\n if (entitlementOverride)\n userEntitlements = entitlementOverride;\n switch (pageName) {\n case ALL_COLLECTIONS:\n case HOME:\n case MOVIES:\n case NEWS:\n case SHOWS:\n pageType = eventPageTypes[pageName];\n break;\n case COLLECTION_ENTERTAINMENT:\n case COLLECTION_HOME:\n case COLLECTION_LIVE_TV:\n case COLLECTION_LISTEN:\n case COLLECTION_LOCAL:\n case COLLECTION_MOVIES:\n case COLLECTION_NEWS:\n case COLLECTION_PERSONALITIES:\n case COLLECTION_SHOWS:\n case COLLECTION_SPORTS:\n pageType = eventPageTypes[pageName];\n eventPageType = \"section_landing\";\n break;\n case PLAYER_COLLECTION:\n pageType = \"player:collection\";\n break;\n case PLAYER_DETAIL:\n pageType = \"player:detail\";\n break;\n case PLAYER:\n case PLAYER_GENERAL:\n pageType = \"player\";\n break;\n case PROFILE_SIGN_IN:\n pageType = \"profile sign in\";\n break;\n case PROFILE_SIGN_UP:\n pageType = \"profile sign up\";\n break;\n case SEARCH:\n pageType = \"find:section-front\";\n break;\n case SETTINGS:\n pageType = \"settings:section-front\";\n break;\n case CHANNEL:\n pageType = \"channel\";\n eventPageType = \"channel_page_landing\";\n break;\n case DETAIL:\n pageType = \"detail\";\n if ((_3 = window.DataLayer) === null || _3 === void 0 ? void 0 : _3.isNation())\n eventPageType = \"detail_menu\";\n break;\n case LIVE:\n pageType = \"live tv\";\n break;\n case FX_MARKETING:\n pageType = \"fxpl landing\";\n break;\n case FX_CONFIRM_SUB:\n pageType = \"fxpl confirm subscription\";\n break;\n case FX_MVPD_NO_SUPPORT:\n pageType = \"fxpl mvpd no support\";\n break;\n case FOOTER:\n pageType = \"footer page\";\n break;\n default:\n pageType = \"collection:\" + cType;\n break;\n }\n name = \"analytics_pv_\" + eventPageType;\n if (detailType)\n pageType = detailType;\n if (pageName === PLAYER) {\n localStoragePageProps = (_4 = window.DataLayer) === null || _4 === void 0 ? void 0 : _4.getLocalStorage({\n key: PAGE_PROPS_STORAGE,\n });\n if (localStoragePageProps && (document === null || document === void 0 ? void 0 : document.referrer.includes(domain)))\n _b = __read(localStoragePageProps.split(\"/\"), 2), storagePageName = _b[0], storagePageType = _b[1];\n }\n else {\n (_5 = window.DataLayer) === null || _5 === void 0 ? void 0 : _5.setLocalStorage({\n key: PAGE_PROPS_STORAGE,\n value: eventPageName + \"/\" + pageType,\n });\n }\n page_name = storagePageName || eventPageName;\n page_type = storagePageType || pageType;\n last_anonymous_profile_id = getLastAnonymousProfileId();\n data = cleanObject(__assign({ app_build: BuildNumber, app_name: (_8 = (_7 = (_6 = window.ExternalConfig) === null || _6 === void 0 ? void 0 : _6.analytics) === null || _7 === void 0 ? void 0 : _7.app_name) !== null && _8 !== void 0 ? _8 : \"foxnow\", app_platform: (_11 = (_10 = (_9 = window.ExternalConfig) === null || _9 === void 0 ? void 0 : _9.analytics) === null || _10 === void 0 ? void 0 : _10.app_platform) !== null && _11 !== void 0 ? _11 : \"web\", app_version: Version, authentication_state: authenticatedText, business_unit: \"\" + BUSINESS_UNIT, collection_length: cLength, collection_title: cTitle, collection_type: cType, dcg_profile_id: profileId, favorites_content_length: favData.count, favorites_content_list: favData.list, isFreemium: isFreemium,\n last_anonymous_profile_id: last_anonymous_profile_id,\n mvpd: mvpd, network_entitlement_list: userEntitlements, page_name: page_name,\n page_type: page_type, primary_business_unit: (_14 = (_13 = (_12 = window.ExternalConfig) === null || _12 === void 0 ? void 0 : _12.analytics) === null || _13 === void 0 ? void 0 : _13.primary_business_unit) !== null && _14 !== void 0 ? _14 : \"fng\", platform_version: BUILD_VERSION, secondary_business_unit: (_17 = (_16 = (_15 = window.ExternalConfig) === null || _15 === void 0 ? void 0 : _15.brand) === null || _16 === void 0 ? void 0 : _16.businessUnit) !== null && _17 !== void 0 ? _17 : \"fox\", user: {\n last_anonymous_profile_id: last_anonymous_profile_id,\n testname: (_21 = (_18 = experimentData()) !== null && _18 !== void 0 ? _18 : (_20 = (_19 = window.context) === null || _19 === void 0 ? void 0 : _19.optimizely) === null || _20 === void 0 ? void 0 : _20.pageTestName) !== null && _21 !== void 0 ? _21 : null,\n network_entitlement_list: userEntitlements,\n entitlement_list: userEntitlements,\n } }, sportsData));\n // Nation Specific Vars\n // Default is_founders to false\n if ((_22 = window.DataLayer) === null || _22 === void 0 ? void 0 : _22.isNation())\n data.is_founders = isFounders || \"false\";\n utagData = (_23 = window.utag_data) !== null && _23 !== void 0 ? _23 : {};\n if (!useUtagGlobal) return [3 /*break*/, 2];\n // set utag_data early so it can be accessed before isTealiumLoaded finishes\n deeplySetProperty(window, \"utag_data\", recursiveMerge(utagData, data));\n scriptLoaded = function () { return __awaiter(void 0, void 0, void 0, function () {\n var utag, firstEvent, initEvent, params, error_1;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n return [4 /*yield*/, isTealiumLoaded()];\n case 1:\n _b.sent();\n utag = window.utag;\n firstEvent = (_a = window.utag) === null || _a === void 0 ? void 0 : _a.view;\n initEvent = firstEvent.bind(utag);\n params = __assign({ tealium_event: name }, data);\n // TODO: remove and refactore the file and fix tests once we got confirmation from Michael DeLa Cruz for Adobe/Tealium cut off\n initEvent(params, cb);\n return [3 /*break*/, 3];\n case 2:\n error_1 = _b.sent();\n console.error(\"Tealium Error:\", error_1);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n }); };\n return [4 /*yield*/, scriptLoaded()];\n case 1:\n _27.sent();\n return [3 /*break*/, 3];\n case 2:\n if (eventPageType !== \"default\") {\n pageName_1 = page_name;\n callSign = (_25 = (_24 = window.utag_data) === null || _24 === void 0 ? void 0 : _24.call_sign) !== null && _25 !== void 0 ? _25 : null;\n if (callSign) {\n pageName_1 = pageName_1 + \":\" + callSign;\n if (!pageName_1.includes(eventPageTypes[LIVE]))\n deeplySetProperty(window, \"utag_data.call_sign\", null);\n }\n favData_1 = getFavoritesData();\n deeplySetProperty(window, \"utag_data\", recursiveMerge(utagData, {\n favorites_content_length: favData_1.count,\n favorites_content_list: favData_1.list,\n page_name: pageName_1,\n page_type: page_type,\n }));\n }\n eventData = data;\n if (pageName === PLAYER) {\n eventData = __assign(__assign({}, data), ((_26 = window.utag_data) !== null && _26 !== void 0 ? _26 : {}));\n }\n callEvent(name, eventData);\n Promise.resolve(eventData);\n _27.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n};\nexport var fireRedesignEvent = function (_a) {\n var _b, _c, _d;\n var account = _a.account, params = _a.params, action = _a.action;\n var path = (_b = window === null || window === void 0 ? void 0 : window.location) === null || _b === void 0 ? void 0 : _b.pathname;\n var profileId = account === null || account === void 0 ? void 0 : account.profileId;\n var data = setProfileId(profileId, __assign({ page_name: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_name, page_type: (_d = window === null || window === void 0 ? void 0 : window.utag_data) === null || _d === void 0 ? void 0 : _d.page_type }, params));\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n};\nexport var getAccountEvents = function (_a) {\n var _b;\n var profileId = _a.profileId;\n return (_b = {},\n _b[AUTHENTICATION_STARTED] = function (props) {\n var _a, _b;\n var action = \"authentication_start\";\n var data = setProfileId(profileId, __assign({ page_name: (_a = window === null || window === void 0 ? void 0 : window.utag_data) === null || _a === void 0 ? void 0 : _a.page_name, page_type: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_type }, props));\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[PERKS_PRESENTED] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource;\n var action = \"profile_prompt\";\n var data = setProfileId(profileId, {\n action: action,\n profile_start_source: utagAccountSource,\n onboarding_start_source: utagAccountSource,\n platform_version: BUILD_VERSION,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[ONBOARDING_START] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource;\n var action = \"onboarding_start\";\n var data = setProfileId(profileId, {\n action: action,\n platform_version: BUILD_VERSION,\n onboarding_start_source: utagAccountSource,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[ON_FAVORITE] = function (_a) {\n var _b, _c;\n var location = _a.location;\n var action = \"added_favorites\";\n var favData = getFavoritesData();\n var data = setProfileId(profileId, {\n action: action,\n platform_version: BUILD_VERSION,\n favorites_content_length: favData.count,\n favorites_content_list: favData.list,\n favorites_location: location,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[ON_UNFAVORITE] = function (_a) {\n var _b, _c;\n var location = _a.location;\n var action = \"removed_favorites\";\n var favData = getFavoritesData();\n var data = setProfileId(profileId, {\n action: action,\n platform_version: BUILD_VERSION,\n favorites_content_length: favData.count,\n favorites_content_list: favData.list,\n favorites_location: location,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_IN_COMPLETED] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource;\n var action = \"profile_login_complete\";\n var data = setProfileId(profileId, {\n action: action,\n platform_version: BUILD_VERSION,\n profile_start_source: utagAccountSource,\n profile_type: \"general\",\n onboarding_start_source: utagAccountSource,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_IN_ERROR] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource;\n var action = \"profile_login_error\";\n var data = setProfileId(profileId, {\n action: action,\n profile_start_source: utagAccountSource,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_IN_FORGOT_PASSWORD_STARTED] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource;\n var action = \"profile_login_forgot_pw\";\n var data = setProfileId(profileId, {\n action: action,\n profile_start_source: utagAccountSource,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_IN_INCOMPLETE] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource;\n var action = \"profile_login_incomplete\";\n var data = setProfileId(profileId, {\n action: action,\n profile_start_source: utagAccountSource,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_IN_STARTED] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource, onboardingAction = _a.onboardingAction;\n var action = \"profile_login_start\";\n var data = setProfileId(profileId, {\n action: action,\n platform_version: BUILD_VERSION,\n profile_start_source: utagAccountSource,\n onboarding_start_source: utagAccountSource,\n onboarding_action: onboardingAction,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_OUT_COMPLETED] = function () {\n var _a, _b;\n var action = \"profile_logout\";\n var data = setProfileId(profileId, {\n action: action,\n page_name: (_a = window === null || window === void 0 ? void 0 : window.utag_data) === null || _a === void 0 ? void 0 : _a.page_name,\n page_type: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_UP_COMPLETED] = function (_a) {\n var _b, _c;\n var newsLetter = _a.newsLetter, utagAccountSource = _a.utagAccountSource;\n var action = \"profile_signup_complete\";\n var data = setProfileId(profileId, {\n action: action,\n platform_version: BUILD_VERSION,\n profile_start_source: utagAccountSource,\n profile_type: \"general\",\n newsletter_opt_in: newsLetter,\n onboarding_start_source: utagAccountSource,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_UP_ERROR] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource;\n var action = \"profile_signup_error\";\n var data = setProfileId(profileId, {\n action: action,\n profile_start_source: utagAccountSource,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_UP_INCOMPLETE] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource;\n var action = \"profile_signup_incomplete\";\n var data = setProfileId(profileId, {\n action: action,\n profile_start_source: utagAccountSource,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[SIGN_UP_STARTED] = function (_a) {\n var _b, _c;\n var utagAccountSource = _a.utagAccountSource, onboardingAction = _a.onboardingAction;\n var action = \"profile_signup_start\";\n var data = setProfileId(profileId, {\n action: action,\n platform_version: BUILD_VERSION,\n profile_start_source: utagAccountSource,\n onboarding_start_source: utagAccountSource,\n onboarding_action: onboardingAction,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b);\n};\nexport var getAuthStartSource = function (_a) {\n var networkUpsellPage = _a.networkUpsellPage, pathname = _a.pathname;\n if (pathname.replace(/\\//g, \"\") === networkUpsellPage.replace(/\\//g, \"\")) {\n return \"marketing_page\";\n }\n if (pathname === \"/\") {\n return \"home\";\n }\n return \"series_detail_page\";\n};\n// FXBT Helper: Get name of current brand logo\nexport var getCurrentBrand = function () {\n var _a;\n var headerLogo = ((_a = window.ExternalConfig) === null || _a === void 0 ? void 0 : _a.brand).headerLogo;\n if (headerLogo === \"fxpl-beta\" || headerLogo === \"fxpl\")\n return \"fx+\";\n return headerLogo;\n};\nexport var getDetailTabData = function (_a) {\n var _b, _c;\n var seriesData = _a.seriesData, tab = _a.tab;\n var seriesType = seriesData === null || seriesData === void 0 ? void 0 : seriesData.seriesType;\n var pageTitle = seriesData === null || seriesData === void 0 ? void 0 : seriesData.name;\n var collectionLength;\n var name;\n if (tab) {\n collectionLength = (_b = tab === null || tab === void 0 ? void 0 : tab.hasParts) === null || _b === void 0 ? void 0 : _b.length;\n name = (_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.getDetailTabName({ tab: tab, seriesType: seriesType });\n }\n return {\n name: name,\n selectedMenuItem: name,\n collectionType: seriesType,\n collectionLength: collectionLength,\n pageTitle: pageTitle,\n };\n};\nexport var getEventPageName = function (_a) {\n var pageName = _a.pageName, pageType = _a.pageType, collectionType = _a.collectionType, collectionTitle = _a.collectionTitle, pageTitle = _a.pageTitle, seriesType = _a.seriesType, footerType = _a.footerType;\n switch (pageName) {\n case COLLECTION_ENTERTAINMENT:\n case COLLECTION_HOME:\n case COLLECTION_LISTEN:\n case COLLECTION_LIVE_TV:\n case COLLECTION_LOCAL:\n case COLLECTION_MOVIES:\n case COLLECTION_NEWS:\n case COLLECTION_PERSONALITIES:\n case COLLECTION_SHOWS:\n case COLLECTION_SPORTS:\n case HOME_COLLECTIONS:\n return PAGE_NAME_PREFIX + \":\" + pageType + \":landing\";\n case CHANNEL:\n return PAGE_NAME_PREFIX + \":\" + pageType + \":\" + pageTitle;\n case HOME:\n case LIVE:\n case NEWS:\n return PAGE_NAME_PREFIX + \":\" + pageType + \":landing\";\n case ALL_COLLECTIONS:\n case FX_MARKETING:\n case FX_CONFIRM_SUB:\n case MOVIES:\n case SHOWS:\n case SIGN_IN:\n return PAGE_NAME_PREFIX + \":\" + eventPageTypes[pageName];\n case FX_MVPD_NO_SUPPORT:\n return PAGE_NAME_PREFIX + \":fxpl mvpd no support\";\n case DETAIL:\n case NETWORK_DETAIL:\n return PAGE_NAME_PREFIX + \":\" + pageType + \":\" + seriesType + \":\" + pageTitle;\n case FOOTER:\n return PAGE_NAME_PREFIX + \":\" + pageType + \":\" + footerType;\n case SEARCH:\n return PAGE_NAME_PREFIX + \":find:landing\";\n default:\n return PAGE_NAME_PREFIX + \":\" + pageType;\n }\n};\nexport var getFavoritesData = function () {\n var _a;\n var _b = getFavoritesProps((_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getFavorites()), _c = _b.favorites_content_length, favorites_content_length = _c === void 0 ? \"no favorites\" : _c, _d = _b.favorites_content_list, favorites_content_list = _d === void 0 ? \"no favorites\" : _d;\n return {\n list: favorites_content_list,\n count: favorites_content_length,\n };\n};\nexport var getFooterPageData = function (articleName, isNation) {\n if (articleName && isNation) {\n var TERMS_OF_USE_PAGE = \"terms of use\";\n var PRIVACY_POLICY_PAGE = \"privacy policy\";\n var CLOSED_CAPTIONING_PAGE = \"closed captioning\";\n var name_1 = articleName.toLowerCase();\n var footerType = void 0;\n if (name_1.includes(TERMS_OF_USE_PAGE))\n footerType = TERMS_OF_USE_PAGE;\n if (name_1.includes(PRIVACY_POLICY_PAGE))\n footerType = PRIVACY_POLICY_PAGE;\n if (name_1.includes(CLOSED_CAPTIONING_PAGE))\n footerType = \"cc\";\n if (footerType) {\n return { pageName: FOOTER, footerType: footerType, useUtagGlobal: true };\n }\n }\n return false;\n};\n// TODO: look into combining getLiveEvents & getLiveAnalyticsEvents\nexport var getLiveEvents = function () {\n var _a;\n return (_a = {},\n _a[SCHEDULE_RESTART] = function (_a) {\n var network = _a.network;\n var action = \"livestream_start_over\";\n callContextEvent(action, network);\n },\n _a[SCHEDULE_WATCH_LIVE] = function (_a) {\n var network = _a.network;\n var action = \"livestream_start\";\n callContextEvent(action, network);\n },\n _a);\n};\nexport var getLiveAnalyticsEvents = function () {\n var _a;\n var tealiumEvents = getLiveEvents();\n return _a = {},\n _a[SCHEDULE_RESTART] = function (_a) {\n var network = _a.network;\n executeEvent({\n eventObj: tealiumEvents,\n event: SCHEDULE_RESTART,\n params: { network: network },\n });\n },\n _a[SCHEDULE_WATCH_LIVE] = function (_a) {\n var network = _a.network;\n executeEvent({\n eventObj: tealiumEvents,\n event: SCHEDULE_WATCH_LIVE,\n params: { network: network },\n });\n },\n _a;\n};\nexport var getOptimizelyActiveCampaigns = function () {\n var state = getOptimizelyState();\n if (state) {\n return __assign({}, state.getExperimentStates({ isActive: true }));\n }\n};\nexport var getOptimizelyExperimentData = function () {\n var activeCampaigns = getOptimizelyActiveCampaigns();\n if (!activeCampaigns)\n return undefined;\n var campaigns = Object.values(activeCampaigns).filter(function (campaign) { return campaign.isInExperimentHoldback !== true; });\n if (campaigns.length === 0)\n return undefined;\n var data = [];\n var segmentCampaignData = {};\n campaigns.forEach(function (campaign) {\n var _a;\n var experimentName = campaign === null || campaign === void 0 ? void 0 : campaign.experimentName;\n var variationName = (_a = campaign === null || campaign === void 0 ? void 0 : campaign.variation) === null || _a === void 0 ? void 0 : _a.name;\n var testName = experimentName + \":\" + variationName;\n segmentCampaignData[experimentName] = { experimentName: experimentName, variationName: variationName };\n data.push(testName);\n });\n setSegmentOptimizelyData({ segmentCampaignData: segmentCampaignData });\n return data.join(\",\");\n};\nexport var getOptimizelyState = function () { var _a, _b, _c; return (_c = (_b = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getOptimizely()) === null || _b === void 0 ? void 0 : _b.get) === null || _c === void 0 ? void 0 : _c.call(_b, \"state\"); };\n// TODO: look into combining getPlayerEvents & getPlayerAnalyticsEvents\nexport var getPlayerEvents = function (_a) {\n var _b;\n var profileId = _a.profileId;\n return (_b = {},\n _b[PLAYER_IDLE_PROMPT] = function () {\n var _a, _b;\n var action = \"idle_prompt\";\n var data = setProfileId(profileId, {\n action: action,\n page_name: (_a = window === null || window === void 0 ? void 0 : window.utag_data) === null || _a === void 0 ? void 0 : _a.page_name,\n page_type: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[PLAYER_IDLE_PROMPT_CONFIRM] = function () {\n var _a, _b;\n var action = \"idle_prompt_select\";\n var data = setProfileId(profileId, {\n action: action,\n page_name: (_a = window === null || window === void 0 ? void 0 : window.utag_data) === null || _a === void 0 ? void 0 : _a.page_name,\n page_type: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b);\n};\nexport var getPlayerAnalyticsEvents = function (_a) {\n var _b;\n var profileId = _a.profileId;\n var tealiumEvents = getPlayerEvents({ profileId: profileId });\n return _b = {},\n _b[PLAYER_IDLE_PROMPT] = function () {\n return executeEvent({ eventObj: tealiumEvents, event: PLAYER_IDLE_PROMPT });\n },\n _b[PLAYER_IDLE_PROMPT_CONFIRM] = function () {\n return executeEvent({\n eventObj: tealiumEvents,\n event: PLAYER_IDLE_PROMPT_CONFIRM,\n });\n },\n _b;\n};\nexport var getPreviewPassEvents = function (_a) {\n var _b;\n var profileId = _a.profileId;\n return (_b = {},\n _b[PREVIEW_PASS_EXPIRED] = function (_a) {\n var _b, _c;\n var previewPassLength = _a.previewPassLength;\n var action = \"preview_pass_expired\";\n var data = setProfileId(profileId, {\n action: action,\n buildVersion: BUILD_VERSION,\n preview_pass_length: previewPassLength,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b[PREVIEW_PASS_STARTED] = function (_a) {\n var _b, _c;\n var previewPassLength = _a.previewPassLength;\n var action = \"preview_pass_start\";\n var data = setProfileId(profileId, {\n action: action,\n buildVersion: BUILD_VERSION,\n preview_pass_length: previewPassLength,\n preview_pass_start_source: \"general\",\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n },\n _b);\n};\nexport var getProfileStartSource = function () { return window[SOURCE_PROFILE_START]; };\nexport var getRedesignCollectionTileType = function (data) {\n var _a, _b, _c, _d;\n var item = data === null || data === void 0 ? void 0 : data.item;\n var type = (_a = data === null || data === void 0 ? void 0 : data.item) === null || _a === void 0 ? void 0 : _a[\"@type\"];\n var isUpcoming = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.isUpcomingContent(item);\n if (!isUpcoming && ((_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.isContentLive(type)))\n return \"live tile\";\n if ((_d = window.DataLayer) === null || _d === void 0 ? void 0 : _d.isVideoTile(type))\n return \"video tile\";\n return \"show tile\";\n};\nexport var getRedesignHomeItemParams = function (_a) {\n var _b, _c, _d, _e, _f, _g;\n var cc = _a.cc, collectionCount = _a.collectionCount, collectionTitle = _a.collectionTitle, collectionType = _a.collectionType, containerTitle = _a.containerTitle, horizontalPosition = _a.horizontalPosition, item = _a.item, playlistLength = _a.playlistLength, state = _a.state, subtitle = _a.subtitle, title = _a.title, type = _a.type, verticalPosition = _a.verticalPosition, volume = _a.volume;\n // Sports Features\n var videoSeriesType = (_b = item === null || item === void 0 ? void 0 : item.seriesType) !== null && _b !== void 0 ? _b : null;\n var sport = \"none\";\n var matchup = \"none\";\n if (videoSeriesType === \"sportingEvent\") {\n sport = (_c = item === null || item === void 0 ? void 0 : item.sportTag) !== null && _c !== void 0 ? _c : sport;\n matchup = (_d = item === null || item === void 0 ? void 0 : item.name) !== null && _d !== void 0 ? _d : \"none\";\n }\n var homeTeam = (_e = item === null || item === void 0 ? void 0 : item.homeTeam) !== null && _e !== void 0 ? _e : \"none\";\n var awayTeam = (_f = item === null || item === void 0 ? void 0 : item.awayTeam) !== null && _f !== void 0 ? _f : \"none\";\n var sportsData = ((_g = window.DataLayer) === null || _g === void 0 ? void 0 : _g.getSportsFeatures())\n ? {\n sport: sport,\n matchup: matchup,\n home_team: homeTeam,\n away_team: awayTeam,\n }\n : {};\n return __assign({ item_type: type, item_state: state, item_container_title: containerTitle, item_vertical_position: verticalPosition, item_horizontal_position: horizontalPosition, item_title: title, item_subtitle: subtitle || \"no subtitle\", item_cc: cc || \"cc off\", item_volume: volume || \"volume off\", collection_title: collectionTitle || \"no collection title\", collection_type: collectionType || \"no collection type\", playlist_length: playlistLength, collection_count: collectionCount }, sportsData);\n};\nexport var getRedesignEvents = function (_a) {\n var _b;\n var account = _a.account;\n var defaultData = { platform_version: BUILD_VERSION };\n return _b = {},\n _b[COLLECTION_IMPRESSION] = function (_a) {\n var visibleCollections = _a.visibleCollections;\n // Don't fire event without collections\n if (!Object.keys(visibleCollections !== null && visibleCollections !== void 0 ? visibleCollections : {}).length)\n return null;\n var action = \"collection_item_impression\";\n var data = { list3: getRedesignListVarString(visibleCollections) };\n var params = __assign(__assign({}, defaultData), data);\n return fireRedesignEvent({ action: action, account: account, params: params });\n },\n _b[COLLECTION_ITEM_SELECT] = function (data) {\n var _a;\n var action = \"collection_item_select_action\";\n var collectionData = getRedesignHomeItemParams(data);\n var tealiumTileType = getRedesignCollectionTileType(data);\n var list3 = (_a = data === null || data === void 0 ? void 0 : data.list3) !== null && _a !== void 0 ? _a : null;\n var params = __assign(__assign(__assign({}, defaultData), collectionData), { item_type: tealiumTileType, list3: list3 ||\n getRedesignIndividualListVar(__assign(__assign({}, data), { tileType: tealiumTileType.replace(\" tile\", \"\") })) });\n return fireRedesignEvent({ action: action, account: account, params: params });\n },\n _b[HERO_ITEM_SELECT] = function (data) {\n var action = \"hero_item_select_action\";\n var collectionData = getRedesignHomeItemParams(data);\n var params = __assign(__assign({}, defaultData), collectionData);\n return fireRedesignEvent({ action: action, account: account, params: params });\n },\n _b;\n};\nexport var getRedesignIndividualListVar = function (_a) {\n var collectionTitle = _a.collectionTitle, horizontalPosition = _a.horizontalPosition, title = _a.title, tileType = _a.tileType, verticalPosition = _a.verticalPosition;\n return \"cp=\" + verticalPosition + \"|ip=\" + horizontalPosition + \"|ct=\" + (collectionTitle || \"no collection title\") + \"|tt=\" + tileType + \"|it=\" + title;\n};\nexport var getRedesignListVarString = function (visibleCollections) {\n if (visibleCollections === void 0) { visibleCollections = {}; }\n var visibleCollectionItems = [];\n var listVar = [];\n var formatNames = function (name) { return name && name.replace(/,/g, \" \"); };\n var tileType = function (item) {\n var _a, _b, _c, _d;\n var type = (_a = item === null || item === void 0 ? void 0 : item[\"@type\"]) !== null && _a !== void 0 ? _a : null;\n var isUpcoming = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.isUpcomingContent(item);\n if (!isUpcoming && ((_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.isContentLive(type)))\n return \"live\";\n if ((_d = window.DataLayer) === null || _d === void 0 ? void 0 : _d.isVideoTile(type))\n return \"video\";\n return \"show\";\n };\n var currentActiveCollections = Object.entries(visibleCollections).reduce(function (result, _a) {\n var _b;\n var _c = __read(_a, 2), key = _c[0], value = _c[1];\n if (value.active)\n return __assign(__assign({}, result), (_b = {}, _b[key] = value, _b));\n return result;\n }, {});\n Object.values(currentActiveCollections).forEach(function (value) {\n var _a;\n (_a = value === null || value === void 0 ? void 0 : value.items) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {\n var _a, _b;\n var collectionTitle = (_a = value === null || value === void 0 ? void 0 : value.headline) !== null && _a !== void 0 ? _a : \"no collection title\";\n var tileTitle = (_b = item === null || item === void 0 ? void 0 : item.seriesName) !== null && _b !== void 0 ? _b : item === null || item === void 0 ? void 0 : item.name;\n var visibleCollectionItem = {\n collectionPosition: value === null || value === void 0 ? void 0 : value.verticalPosition,\n collectionTitle: formatNames(collectionTitle),\n itemPosition: item === null || item === void 0 ? void 0 : item.slideIndex,\n itemTitle: formatNames(tileTitle),\n tileItemType: tileType(item),\n };\n visibleCollectionItems.push(visibleCollectionItem);\n });\n });\n visibleCollectionItems.forEach(function (item) {\n listVar.push(\"cp=\" + item.collectionPosition + \"|ip=\" + item.itemPosition + \"|ct=\" + item.collectionTitle + \"|tt=\" + item.tileItemType + \"|it=\" + item.itemTitle);\n });\n return listVar.join(\",\");\n};\nexport var getSourceAuth = function () { return window[SOURCE_AUTH]; };\nexport var getSourceCollectionGlobal = function () {\n var name = window[SOURCE_COLLECTION_TITLE];\n var collectionType = window[SOURCE_COLLECTION_TYPE];\n var items = window[SOURCE_COLLECTION_ITEMS];\n var selectedItem = window[SOURCE_COLLECTION_SELECTED_ITEM];\n if (name || collectionType || items) {\n deeplySetProperty(window, SOURCE_COLLECTION_TITLE, null);\n deeplySetProperty(window, SOURCE_COLLECTION_TYPE, null);\n deeplySetProperty(window, SOURCE_COLLECTION_ITEMS, null);\n deeplySetProperty(window, SOURCE_COLLECTION_SELECTED_ITEM, null);\n return {\n name: name,\n collectionType: collectionType,\n items: items,\n selectedItem: selectedItem,\n };\n }\n return null;\n};\nexport var getSearchResultString = function (_a) {\n var genreFilterName = _a.genreFilterName, isNation = _a.isNation, itemIsLive = _a.itemIsLive, originalItem = _a.originalItem, selectedTabName = _a.selectedTabName, titleText = _a.titleText;\n var title = titleText || (originalItem === null || originalItem === void 0 ? void 0 : originalItem.name);\n if (isNation) {\n // Replace <item type> with the type of search result selected as shown:\n // ***Currently unable to implement - \"live-show-video\" for LIVE show search results.\n // \"show-video\" for VOD show search results.\n // ***Currently unable to implement - \"live-show-audio\" for LIVE audio show search results.\n // ***Currently unable to implement - \"show-audio\" for other audio show search results.\n // \"personality\" for Personality search results.\n // \"video\" for other video search results.\n var itemType = function () {\n var isAudio = false; // currently cannot determine if an item is an audio stream\n var isPersonality = (originalItem === null || originalItem === void 0 ? void 0 : originalItem.categoryType) === \"personality\";\n if (itemIsLive) {\n var liveShow = \"live-show-\"; // ignoring this line because isAudio will never be true\n /* istanbul ignore next */ return isAudio\n ? liveShow + \"audio\"\n : liveShow + \"video\";\n }\n if (isPersonality)\n return \"personality\";\n return \"show-video\";\n };\n return selectedTabName + \":\" + genreFilterName + \":\" + itemType() + \":\" + title;\n }\n return \"network-\" + selectedTabName + \":genre-\" + genreFilterName + \":\" + title;\n};\nexport var getSourceShow = function () {\n var isSourceShow = window[SOURCE_IS_SHOW];\n deeplySetProperty(window, SOURCE_IS_SHOW, null);\n return isSourceShow;\n};\nexport var handleButtonAction = function (_a) {\n var _b, _c;\n var text = _a.text, title = _a.title, subtitle = _a.subtitle, account = _a.account;\n var action = \"button_action\";\n var profileId = account === null || account === void 0 ? void 0 : account.profileId;\n var program = (title || \"no program title\") + \":\" + (subtitle || \"no program subtitle\");\n var data = setProfileId(profileId, {\n action: action,\n action_type: text,\n program_info: program,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n });\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n};\nexport var handleSeriesButtonAction = function (_a) {\n var _b, _c;\n var text = _a.text, series = _a.series, account = _a.account, collectionTitle = _a.collectionTitle;\n var profileId = account === null || account === void 0 ? void 0 : account.profileId;\n var action = \"seriespromo_button_action\";\n var data = setProfileId(profileId, cleanObject({\n action: action,\n action_type: text,\n platform_version: BUILD_VERSION,\n collection_title: collectionTitle || null,\n collection_type: \"no collection type\",\n series: series,\n page_name: (_b = window === null || window === void 0 ? void 0 : window.utag_data) === null || _b === void 0 ? void 0 : _b.page_name,\n page_type: (_c = window === null || window === void 0 ? void 0 : window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type,\n }));\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + action, data);\n};\nexport var isTealiumLoaded = function () {\n return new Promise(function (resolve, reject) {\n var checkForUtagData = setInterval(function () {\n var _a;\n var tealiumEventsReady = (_a = window.utag) === null || _a === void 0 ? void 0 : _a.view;\n if (tealiumEventsReady) {\n clearInterval(checkForUtagData);\n checkForUtagData = null;\n resolve();\n }\n }, 500);\n setTimeout(function () {\n if (checkForUtagData) {\n clearInterval(checkForUtagData);\n checkForUtagData = null;\n }\n reject(Error(\"Tealium Failed To Load\"));\n }, 5000);\n });\n};\nexport function handleTealiumAnalytics(_a) {\n var event = _a.event, payload = _a.payload;\n callEvent(\"\" + TEALIUM_EVENT_PREFIX + TealiumEventStrings[event], payload);\n}\nexport var isTrackingEnabledForEvent = function (name) {\n var _a;\n if (!name)\n return false;\n var withTveEventsToDisable = [];\n var withoutTveEventsToDisable = [\n TEALIUM_EVENT_PREFIX + \"button_click_funnels\",\n TEALIUM_EVENT_PREFIX + \"authentication_start\",\n TEALIUM_EVENT_PREFIX + \"authentication_select_provider\",\n TEALIUM_EVENT_PREFIX + \"authentication_incomplete\",\n TEALIUM_EVENT_PREFIX + \"authentication_complete\",\n ];\n var disabledEvents = ((_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.isTveEnabled())\n ? withTveEventsToDisable\n : withoutTveEventsToDisable;\n var isEventEnabled = disabledEvents.indexOf(name) === -1;\n return isEventEnabled;\n};\nexport var setProfileId = function (id, data) {\n if (id)\n return Object.assign({ \"Customer ID\": id }, data);\n return data;\n};\nexport var setProfileStartSource = function (value) {\n return deeplySetProperty(window, SOURCE_PROFILE_START, value);\n};\nexport var setSourceAuth = function (value) {\n return deeplySetProperty(window, SOURCE_AUTH, value);\n};\nexport var setSourceCollectionGlobal = function (_a) {\n var title = _a.title, collectionType = _a.collectionType, items = _a.items, selectedItem = _a.selectedItem;\n deeplySetProperty(window, SOURCE_COLLECTION_TITLE, title);\n deeplySetProperty(window, SOURCE_COLLECTION_TYPE, collectionType);\n deeplySetProperty(window, SOURCE_COLLECTION_ITEMS, items);\n deeplySetProperty(window, SOURCE_COLLECTION_SELECTED_ITEM, selectedItem);\n};\nexport var setSourceShow = function (value) {\n return deeplySetProperty(window, SOURCE_IS_SHOW, value);\n};\nexport function setUtagPagePropsCallback(pageName, pageType) {\n return function () {\n if (!pageName || !pageType)\n return;\n var _a = window.utag_data, utag_data = _a === void 0 ? {} : _a;\n if (utag_data.page_name !== pageName)\n window.utag_data.page_name = pageName;\n if (utag_data.page_type !== pageType)\n window.utag_data.page_type = pageType;\n };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar _a;\nvar _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\nimport { cleanObject, deeplySetProperty, getActivationProps, getFavoritesProps, getPageLoginState, getTimePartingInfo, handleAnalytics, hasEntitlementOverride, isCollection, isContinuousPlay, isDeeplink, isEndcard, isFind, isHome, isLive, isMovieDetail, isSearch, isSeriesDetail, isVodSection, noop, omitProperties, pushProfileIdsToGoogleDataLayer, recursiveMerge, } from \"./CommonHelper\";\nimport { APP_VERSION, Events, EventTypeMap, EventTypes, LABEL_TV_PROVIDER_SIGN_OUT_PAGE_VIEW, OPTIMIZELY_SEGMENT_LOCAL_STORAGE, PageEvents, PageNames, PAGE_NAME_PREFIX, SECOND_SCREEN_ANONYMOUS_ID, SECOND_SCREEN_PROFILE_ID, SegmentBannerTypes, SegmentEventStrings, SegmentEventTypes, SegmentPageStartSources, SegmentPlayerContextStrings, SegmentProfileIdCookies, SegmentReferrerProps, SegmentSources, SEGMENT_DEVICE_ID_COOKIE, SEGMENT_PAGE_TYPE_CCPA, SESSION_STORAGE_REFERRER_TRACKING, TrackEvents, } from \"./Enums\";\nimport { setUtagPagePropsCallback } from \"./TealiumHelper\";\nvar COLLECTION_CTA_PAGE_VIEW = PageEvents.COLLECTION_CTA_PAGE_VIEW, LIVE_LOC_REQ_PAGE_VIEW = PageEvents.LIVE_LOC_REQ_PAGE_VIEW, TV_PROVIDER_SIGN_OUT_PAGE_VIEW = PageEvents.TV_PROVIDER_SIGN_OUT_PAGE_VIEW;\nvar COLLECTION = PageNames.COLLECTION, COLLECTION_HOME = PageNames.COLLECTION_HOME, COLLECTION_LIVE_TV = PageNames.COLLECTION_LIVE_TV, COLLECTION_LOCAL = PageNames.COLLECTION_LOCAL, COLLECTION_NEWS = PageNames.COLLECTION_NEWS, CONTINUOUS_PLAY = PageNames.CONTINUOUS_PLAY, DEEPLINK = PageNames.DEEPLINK, DETAIL = PageNames.DETAIL, ENDCARD = PageNames.ENDCARD, FIND = PageNames.FIND, HOME = PageNames.HOME, LIVE = PageNames.LIVE, MOVIE_DETAIL = PageNames.MOVIE_DETAIL, MOVIES = PageNames.MOVIES, NETWORK_DETAIL = PageNames.NETWORK_DETAIL, PLAYER = PageNames.PLAYER, SEARCH = PageNames.SEARCH, SERIES_DETAIL = PageNames.SERIES_DETAIL, SHOWS = PageNames.SHOWS, VOD_SECTION = PageNames.VOD_SECTION;\nvar FAT = SegmentBannerTypes.FAT, MARKETING_VIDEO = SegmentBannerTypes.MARKETING_VIDEO, SKINNY = SegmentBannerTypes.SKINNY;\nvar NAME = SegmentReferrerProps.NAME, NONE = SegmentReferrerProps.NONE, POSITION = SegmentReferrerProps.POSITION, TYPE = SegmentReferrerProps.TYPE;\nvar MVPDINCOMPLETE = SegmentPageStartSources.MVPDINCOMPLETE, PP_EXPIRATION = SegmentPageStartSources.PP_EXPIRATION, PP_SIGNIN = SegmentPageStartSources.PP_SIGNIN, SETTINGS = SegmentPageStartSources.SETTINGS;\nvar AUTH_SUCCESS_EVENT = TrackEvents.AUTH_SUCCESS_EVENT, TV_PROVIDER_FEAT_LIST = TrackEvents.TV_PROVIDER_FEAT_LIST;\nvar appVersion = Version !== null && Version !== void 0 ? Version : \"\";\nvar appBuild = BuildNumber !== null && BuildNumber !== void 0 ? BuildNumber : \"\";\nvar businessUnit = (_d = (_c = (_b = window.ExternalConfig) === null || _b === void 0 ? void 0 : _b.analytics) === null || _c === void 0 ? void 0 : _c.primary_business_unit) !== null && _d !== void 0 ? _d : \"fng\";\nvar secondaryBusinessUnit = (_g = (_f = (_e = window.ExternalConfig) === null || _e === void 0 ? void 0 : _e.brand) === null || _f === void 0 ? void 0 : _f.businessUnit) !== null && _g !== void 0 ? _g : \"fox\";\nvar appName = (_k = (_j = (_h = window.ExternalConfig) === null || _h === void 0 ? void 0 : _h.analytics) === null || _j === void 0 ? void 0 : _j.app_name) !== null && _k !== void 0 ? _k : \"foxnow\";\nvar appPlatform = (_o = (_m = (_l = window.ExternalConfig) === null || _l === void 0 ? void 0 : _l.analytics) === null || _m === void 0 ? void 0 : _m.app_platform) !== null && _o !== void 0 ? _o : \"web\";\nexport var defaultCampaignValues = {\n campaign_tracking_code: undefined,\n campaign_organization: undefined,\n campaign_marketing_channel: undefined,\n campaign_source: undefined,\n campaign_name: undefined,\n campaign_additional: undefined,\n campaign_agency: undefined,\n};\nexport var defaultGlobalPageProperties = {\n primary_business_unit: businessUnit,\n secondary_business_unit: secondaryBusinessUnit,\n app_name: appName,\n app_platform: appPlatform,\n app_version: appVersion,\n app_build: appBuild || undefined,\n page_name: undefined,\n page_type: undefined,\n page_login_state: undefined,\n};\nexport var defaultVideoProperties = {\n session_id: undefined,\n position: undefined,\n total_length: undefined,\n livestream: undefined,\n method: undefined,\n asset_id: undefined,\n pod_id: undefined,\n title: undefined,\n season: undefined,\n episode: undefined,\n program: undefined,\n content_asset_id: undefined,\n content_pod_id: undefined,\n content_pod_ids: undefined,\n video_asset_title: undefined,\n video_external_id: undefined,\n video_genre: undefined,\n video_is_livestream: undefined,\n video_player_state: undefined,\n video_player_content_type: undefined,\n video_asset_id: undefined,\n video_primary_business_unit: businessUnit,\n video_secondary_business_unit: secondaryBusinessUnit,\n video_fox_profile: undefined,\n video_content_length: undefined,\n video_content_type: undefined,\n video_content_length_format: undefined,\n video_station_id: undefined,\n video_network: undefined,\n video_sports_type: undefined,\n video_seconds_viewed: undefined,\n};\nexport var referrerPageMap = (_a = {},\n _a[COLLECTION] = \"Collection\",\n _a[DETAIL] = \"Detail Page\",\n _a[FIND] = \"Find\",\n _a[LIVE] = \"Live Section\",\n _a[MOVIE_DETAIL] = \"Detail Page\",\n _a[SEARCH] = \"Search\",\n _a[SERIES_DETAIL] = \"Detail Page\",\n _a.PAGE_NAME_CONTINUOUS_PLAY = CONTINUOUS_PLAY,\n _a.PAGE_NAME_DEEPLINK = DEEPLINK,\n _a.PAGE_NAME_ENDCARD = ENDCARD,\n _a.PAGE_NAME_HOME = HOME,\n _a.PAGE_NAME_MOVIES = MOVIES,\n _a.PAGE_NAME_NETWORK_DETAIL = NETWORK_DETAIL,\n _a.PAGE_NAME_PLAYER = PLAYER,\n _a.PAGE_NAME_SHOWS = SHOWS,\n _a.PAGE_NAME_VOD_SECTION = VOD_SECTION,\n _a);\nexport var callIdentifyEvent = function (_a) {\n var _b;\n var userId = _a.userId, segCompProps = _a.segCompProps;\n var segmentCampaignCodes = getDataLayerCampaignCodes();\n var contextData = getContextTraits();\n var contextTraits = (_b = contextData.traits) !== null && _b !== void 0 ? _b : {};\n var props = __assign(__assign(__assign({}, contextTraits), segCompProps), segmentCampaignCodes);\n var cleanedProps = cleanObject(props);\n var cb = function () {\n return deeplySetProperty(window, \"context.segment.identified\", true);\n };\n fireEvent({ eventType: \"identify\", userId: userId, props: props, cb: cb });\n};\n// TODO: refactor callPageEvent\nexport var callPageEvent = function (_a) {\n var _b, _c, _d, _e;\n var eventName = _a.eventName, props = _a.props, pageName = _a.pageName, _f = _a.featureFlag, featureFlag = _f === void 0 ? false : _f;\n var featureFlagValue = featureFlag || LeapfrogPageEventsEnabled;\n if (isEventEnabled(featureFlagValue))\n return;\n var pageTestName = (_b = window === null || window === void 0 ? void 0 : window.amplitude) === null || _b === void 0 ? void 0 : _b.pageTestName;\n var callSign = props.callSign, favoritesContentList = props.favoritesContentList, favoritesContentLength = props.favoritesContentLength, pageCollectionLength = props.pageCollectionLength, pageCollectionTitle = props.pageCollectionTitle, pageCollectionType = props.pageCollectionType, pageTitle = props.pageTitle, pageType = props.pageType;\n // todo - move this to its own function\n // update tealium utag_data for use across app and player\n if (callSign) {\n deeplySetProperty(window, \"utag_data.call_sign\", callSign);\n var currentPageName = (_d = (_c = window.utag_data) === null || _c === void 0 ? void 0 : _c.page_name) !== null && _d !== void 0 ? _d : null;\n if (currentPageName === null || currentPageName === void 0 ? void 0 : currentPageName.includes(\"local\"))\n deeplySetProperty(window, \"utag_data.page_name\", currentPageName + \":\" + callSign);\n }\n else if ((_e = window.utag_data) === null || _e === void 0 ? void 0 : _e.call_sign) {\n deeplySetProperty(window, \"utag_data.call_sign\", null);\n deeplySetProperty(window, \"utag_data.page_name\", PAGE_NAME_PREFIX + \":\" + pageName);\n }\n var customProps = cleanObject({\n page_name: generatePageName({ pageName: pageName }),\n page_content_title: pageTitle,\n page_type: pageType,\n page_test_name: pageTestName,\n favorites_content_list: favoritesContentList,\n favorites_content_length: favoritesContentLength,\n page_collection_length: pageCollectionLength,\n page_collection_title: pageCollectionTitle,\n page_collection_type: pageCollectionType,\n });\n fireEvent({\n cb: setUtagPagePropsCallback(customProps.page_name, customProps.page_type),\n eventType: SegmentEventTypes.PAGE_EVENT,\n eventName: eventName,\n props: customProps,\n });\n};\nexport var callPlayerEvent = function (_a) {\n var eventName = _a.eventName, props = _a.props;\n var trackingProps = getDefaultEventProps({ props: props });\n var campaignTraits = getCampaignValues();\n var mergedProps = recursiveMerge(defaultVideoProperties, defaultGlobalPageProperties, campaignTraits, trackingProps);\n fireEvent({\n eventType: SegmentEventTypes.TRACK_EVENT,\n eventName: eventName,\n props: mergedProps,\n });\n};\nexport var checkIfAnalyticsLoaded = function () { var _a, _b, _c; return (_c = (_b = (_a = window.context) === null || _a === void 0 ? void 0 : _a.segment) === null || _b === void 0 ? void 0 : _b.loaded) !== null && _c !== void 0 ? _c : false; };\nexport var concatSourceNameData = function (_a) {\n var _b, _c, _d, _e;\n var data = _a.data;\n // this will eventually be used for end slate as well\n var seriesName = (_b = data === null || data === void 0 ? void 0 : data.seriesName) !== null && _b !== void 0 ? _b : \"no series name\";\n var seasonNumber = (_c = data === null || data === void 0 ? void 0 : data.seasonNumber) !== null && _c !== void 0 ? _c : \"no season\";\n var episodeNumber = (_d = data === null || data === void 0 ? void 0 : data.episodeNumber) !== null && _d !== void 0 ? _d : \"no episode\";\n var name = (_e = data === null || data === void 0 ? void 0 : data.name) !== null && _e !== void 0 ? _e : \"no name\";\n return seriesName + \"|\" + seasonNumber + \"|\" + episodeNumber + \"|\" + name;\n};\nexport var fireCallbackWhenReady = function (cb) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n // Check if Segment loaded and identify event fired\n var analyticsLoaded = checkIfAnalyticsLoaded();\n var ajs_anonymous_id = (_e = (_c = (_b = (_a = window.utag) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[\"cp.ajs_anonymous_id\"]) !== null && _c !== void 0 ? _c : (_d = window.utag_data) === null || _d === void 0 ? void 0 : _d.ajs_anonymous_id) !== null && _e !== void 0 ? _e : null;\n var identified = (_l = (_j = (_h = (_g = (_f = window.context) === null || _f === void 0 ? void 0 : _f.segment) === null || _g === void 0 ? void 0 : _g.identified) !== null && _h !== void 0 ? _h : window.secondScreenFlow) !== null && _j !== void 0 ? _j : (_k = window.utag_data) === null || _k === void 0 ? void 0 : _k.isFreemium) !== null && _l !== void 0 ? _l : ajs_anonymous_id;\n if (analyticsLoaded && identified) {\n // If analytics loaded & identify has fired, fire segment event after\n cb();\n }\n else {\n setTimeout(function () { return fireCallbackWhenReady(cb); });\n }\n};\nexport var fireEvent = function (_a) {\n var _b, _c, _d;\n var cb = _a.cb, _e = _a.context, context = _e === void 0 ? {} : _e, eventName = _a.eventName, eventType = _a.eventType, _f = _a.props, props = _f === void 0 ? {} : _f;\n var contextData = __assign(__assign({}, getContextTraits()), context);\n var featureFlag = LeapfrogProfileEventsEnabled;\n var _g = props.page_collection_title, page_collection_title = _g === void 0 ? \"\" : _g;\n var activationProps = {};\n if (page_collection_title)\n deeplySetProperty(window, \"utag_data.collection_title\", page_collection_title);\n // featureFlag might be enabled for mvpd events only\n if (isEventEnabled(featureFlag))\n return;\n // pageActivationCode truthy only during second screen activation flow\n var pageActivationCode = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getQueryParameter(\"code\");\n if (pageActivationCode) {\n activationProps = getActivationProps();\n setSecondsScreenProfileCookie();\n }\n if (eventName === Events.AUTHETNTICATION_LOGGED_OUT) {\n deeplySetProperty(contextData, \"traits.mvpd\", \"\");\n }\n if (eventName === Events.GLOBAL_NAV_CLICKED && ((_c = window.utag_data) === null || _c === void 0 ? void 0 : _c.call_sign))\n deeplySetProperty(window, \"utag_data.call_sign\", null);\n var trackingProps = omitProperties(getDefaultEventProps({\n props: __assign(__assign({}, props), activationProps),\n }), [\"account\"]);\n var cleanedProps = cleanObject(trackingProps);\n var fireEvent = function () {\n var _a, _b;\n return ((_b = (_a = window.analytics) === null || _a === void 0 ? void 0 : _a[eventType]) !== null && _b !== void 0 ? _b : noop)(eventName, cleanedProps, contextData, cb);\n };\n if (typeof eventName === \"string\" &&\n eventName.length &&\n eventType !== \"identify\" &&\n eventName !== Events.PURCHASE_CTA_CLICKED) {\n var silenceLogOutput = (_d = window.DataLayer) === null || _d === void 0 ? void 0 : _d.isTestEnvironment();\n if (!silenceLogOutput)\n console.debug(\"Dispatching Segment event\", eventName, {\n props: props,\n contextData: contextData,\n });\n fireCallbackWhenReady(fireEvent);\n return;\n }\n fireEvent();\n};\nexport var formatBannerList = function (bannerData) {\n return bannerData.reduce(function (acc, banner, i) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n var lastItem = i === bannerData.length - 1;\n var bannerType = getBannerType((_b = (_a = banner.items) === null || _a === void 0 ? void 0 : _a.member) === null || _b === void 0 ? void 0 : _b[0]);\n var bannerHeadline = (_f = (_e = (_d = (_c = banner.items) === null || _c === void 0 ? void 0 : _c.member) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.headline) !== null && _f !== void 0 ? _f : \"\";\n var bannerName = (_k = (_j = (_h = (_g = banner.items) === null || _g === void 0 ? void 0 : _g.member) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.name) !== null && _k !== void 0 ? _k : \"\";\n var bannerTitle = (bannerHeadline || bannerName).toLowerCase();\n var ctaText = ((_p = (_o = (_m = (_l = banner.items) === null || _l === void 0 ? void 0 : _l.member) === null || _m === void 0 ? void 0 : _m[0]) === null || _o === void 0 ? void 0 : _o.ctaText) !== null && _p !== void 0 ? _p : \"\").toLowerCase();\n return \"\" + acc + bannerType + \":\" + bannerTitle + \":\" + ctaText + (lastItem ? \"\" : \", \");\n }, \"\");\n};\nexport var formatProps = function (props) {\n var e_1, _a;\n var invalidValues = [null, NaN];\n var newProps = props;\n try {\n for (var _b = __values(Object.entries(newProps)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n if (invalidValues.includes(value)) {\n newProps[key] = undefined;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return newProps;\n};\nexport var generatePageName = function (_a) {\n var pageName = _a.pageName;\n return PAGE_NAME_PREFIX + \":\" + pageName;\n};\nexport var getAnonymousId = function () {\n var _a;\n var user = (_a = window.analytics) === null || _a === void 0 ? void 0 : _a.user;\n return user ? user().anonymousId() : null;\n};\nexport var getAuthTrackEvents = function () {\n var _a;\n var MVPDEvents = getMVPDEvents();\n var trackEvents = (_a = {},\n _a[AUTH_SUCCESS_EVENT] = function () {\n MVPDEvents.authenticationSelectProviderCompleted({});\n MVPDEvents.authenticationCompleted({});\n },\n _a[TV_PROVIDER_FEAT_LIST] = function () {\n getMVPDEvents(); // TODO: look into whether this block is needed\n },\n _a);\n return trackEvents;\n};\nexport var getBannerDimensions = function (bannerType, isMobile) {\n if (bannerType === void 0) { bannerType = \"\"; }\n if (isMobile === void 0) { isMobile = false; }\n if (!bannerType)\n return \"\";\n if (isMobile)\n return \"768x270\";\n return bannerType === SKINNY ? \"2080x210\" : \"1342x451\";\n};\nexport var getEndcardContentList = function (_a) {\n var _b = _a.endcardItems, endcardItems = _b === void 0 ? [] : _b, _c = _a.headerRecommended, headerRecommended = _c === void 0 ? \"\" : _c, _d = _a.headerUpNext, headerUpNext = _d === void 0 ? \"\" : _d;\n var firstEndcardDetails = getEndcardDetails(endcardItems[0] || {});\n var secondEndcardDetails = getEndcardDetails(endcardItems[1] || {});\n return headerUpNext + \":\" + firstEndcardDetails + \"||\" + headerRecommended + \":\" + secondEndcardDetails;\n};\nexport var getEndCardPageEventProps = function (_a) {\n var _b = _a.endcardItems, endcardItems = _b === void 0 ? [] : _b, _c = _a.contentLength, contentLength = _c === void 0 ? 2 : _c;\n return __assign(__assign({}, getVideoPageRecs({ endcardItems: endcardItems, contentLength: contentLength })), { page_video_uid: getJoinedPageUId({ endcardItems: endcardItems, contentLength: contentLength }) });\n};\nexport var getJoinedPageUId = function (_a) {\n var _b = _a.endcardItems, endcardItems = _b === void 0 ? [] : _b, _c = _a.contentLength, contentLength = _c === void 0 ? 2 : _c;\n var result = \"\";\n for (var i = 0; i < contentLength; i++) {\n if (i != 0) {\n result += \"||\";\n }\n var endCardItem = endcardItems === null || endcardItems === void 0 ? void 0 : endcardItems[i];\n result += endCardItem === null || endCardItem === void 0 ? void 0 : endCardItem.uID;\n }\n return result;\n};\nexport var getVideoPageRecs = function (_a) {\n var _b, _c;\n var _d = _a.endcardItems, endcardItems = _d === void 0 ? [] : _d, _e = _a.contentLength, contentLength = _e === void 0 ? 2 : _e;\n var result = {\n end_card_page_recs_request_id: \"\",\n end_card_page_recs_source_id: \"\",\n end_card_page_recs_model_id: \"\",\n end_card_page_recs_result_set_id: \"\",\n };\n for (var i = 0; i < contentLength; i++) {\n var endCardItem = endcardItems === null || endcardItems === void 0 ? void 0 : endcardItems[i];\n var modelMetaData = (_c = (_b = endCardItem === null || endCardItem === void 0 ? void 0 : endCardItem.trackingData) === null || _b === void 0 ? void 0 : _b.properties) === null || _c === void 0 ? void 0 : _c.modelMetaData;\n if (modelMetaData) {\n if (i != 0) {\n for (var pageRecs in result) {\n if (result.hasOwnProperty(pageRecs)) {\n result[pageRecs] += \"||\";\n }\n }\n }\n result[\"end_card_page_recs_request_id\"] += modelMetaData.requestId;\n result[\"end_card_page_recs_source_id\"] += modelMetaData.sourceId;\n result[\"end_card_page_recs_model_id\"] += modelMetaData.modelId;\n result[\"end_card_page_recs_result_set_id\"] += modelMetaData.resultSetId;\n }\n }\n return result;\n};\nexport var getEndcardDetails = function (_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.seriesName, seriesName = _c === void 0 ? \"\" : _c, _d = _b.name, name = _d === void 0 ? \"\" : _d, _e = _b.seasonNumber, seasonNumber = _e === void 0 ? \"\" : _e, _f = _b.episodeNumber, episodeNumber = _f === void 0 ? \"\" : _f, _g = _b.headline, headline = _g === void 0 ? \"\" : _g;\n var seasonNumFormat = seasonNumber ? \"S\" + seasonNumber : \"\";\n var episodeNumFormat = episodeNumber ? \" E\" + episodeNumber : \"\";\n var seasonEpisodeNum = seasonNumFormat\n ? \"\" + seasonNumFormat + episodeNumFormat + \" \"\n : \"\";\n var subtitle = \"\" + seasonEpisodeNum + (name || headline || \"\") || \"\";\n var title = seriesName;\n return title + \":\" + subtitle;\n};\nexport var getBannerType = function (panel, ref) {\n var _a, _b, _c, _d, _e, _f;\n if (ref === void 0) { ref = {}; }\n if (((_a = panel === null || panel === void 0 ? void 0 : panel.promoType) !== null && _a !== void 0 ? _a : \"\") ===\n ((_c = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.enums) === null || _c === void 0 ? void 0 : _c.PROMO_TYPE_MARKETING_VIDEO))\n return MARKETING_VIDEO;\n var imageName = (_e = (_d = panel === null || panel === void 0 ? void 0 : panel.images) === null || _d === void 0 ? void 0 : _d[\"desktop-promo\"]) !== null && _e !== void 0 ? _e : \"\";\n var _g = __read([\"skinny\", \"fat\"].filter(function (bannerType) {\n return imageName.toLowerCase().includes(bannerType);\n }), 1), _h = _g[0], bannerType = _h === void 0 ? \"\" : _h;\n if (!bannerType) {\n // find 3 or 4 numbers followed by x, ×, or encoding %C3%97 followed by 3 or 4 numbers\n var _j = __read((_f = imageName.match(/\\d{3,4}(x|×|%C3%97)\\d{3,4}/)) !== null && _f !== void 0 ? _f : [], 1), dimensions = _j[0];\n if (dimensions) {\n var width = Number(dimensions.match(/^\\d{3,4}/)[0]);\n var height = Number(dimensions.match(/\\d{3,4}$/)[0]);\n return width / height > 5 ? SKINNY : FAT;\n }\n return getBannerTypeByRef(ref);\n }\n return bannerType === \"skinny\" ? SKINNY : FAT;\n};\nexport var getBannerTypeByRef = function (_a) {\n var _b = _a.clientWidth, clientWidth = _b === void 0 ? 0 : _b, _c = _a.clientHeight, clientHeight = _c === void 0 ? 0 : _c;\n return (clientWidth / clientHeight > 5 ? SKINNY : FAT);\n};\nexport var getCampaignCookieInfo = function () {\n var _a, _b;\n var preProdCookie = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getCookie({\n name: \"campaignTraitInfo_preprod\",\n });\n var prodCookie = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getCookie({\n name: \"campaignTraitInfo\",\n });\n return preProdCookie || prodCookie;\n};\nexport var getCampaignValues = function () {\n var campaignTraits = getDataLayerCampaignCodes();\n return recursiveMerge(defaultCampaignValues, campaignTraits);\n};\nexport var getSegmentContentUidString = function (collection) {\n var _a, _b;\n if (collection === void 0) { collection = {}; }\n return (_b = (_a = collection.items) === null || _a === void 0 ? void 0 : _a.member) === null || _b === void 0 ? void 0 : _b.reduce(function (str, item) {\n var _a = item.showCode, showCode = _a === void 0 ? \"\" : _a, _b = item.uID, uID = _b === void 0 ? \"\" : _b;\n var id = uID || showCode;\n return str ? str + \":\" + id : id;\n }, \"\");\n};\nexport var getContextBanners = function () { var _a, _b, _c; return Object.values((_c = (_b = (_a = window.context) === null || _a === void 0 ? void 0 : _a.segment) === null || _b === void 0 ? void 0 : _b.banners) !== null && _c !== void 0 ? _c : {}); };\n// TODO: Refactor or combine with getContextTraits\nexport var getDataLayerCampaignCodes = function () {\n var _a;\n var campaignCodes = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.campaignCodes;\n return Object.keys(campaignCodes !== null && campaignCodes !== void 0 ? campaignCodes : {}).length\n ? campaignCodes\n : parseQueryUrl();\n};\nexport var getContextTraits = function () {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var mvpd = (_b = (_a = window.context) === null || _a === void 0 ? void 0 : _a.segment) === null || _b === void 0 ? void 0 : _b.mvpd;\n var anonymousId = getAnonymousId();\n if (!mvpd)\n mvpd = (_d = (_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.getMVPD()) !== null && _d !== void 0 ? _d : \"\";\n var validMvpd = (_e = !(mvpd === null || mvpd === void 0 ? void 0 : mvpd.includes(\"TempPass\"))) !== null && _e !== void 0 ? _e : false;\n var _j = getCampaignValues(), campaign_tracking_code = _j.campaign_tracking_code, campaignTraits = __rest(_j, [\"campaign_tracking_code\"]);\n var lastAnonymousProfileId = getLastAnonymousProfileId();\n var lastKnownProfileId = getLastKnownProfileId();\n var dcgAccountData = (_f = window.DataLayer) === null || _f === void 0 ? void 0 : _f.getAccount();\n var dcgProfileId = dcgAccountData === null || dcgAccountData === void 0 ? void 0 : dcgAccountData.profileId;\n var privacyCookie = (_g = window.DataLayer) === null || _g === void 0 ? void 0 : _g.getCookie({\n name: \"us_privacy\",\n });\n var props = __assign(__assign({ appsflyer_id: \"\", mvpd: validMvpd ? mvpd : \"\", entitlements: getEntitlements({ excludePreviewPass: true }), lastKnownProfileId: lastKnownProfileId, isSignedIntoProfile: !!dcgAccountData, lastAnonymousProfileId: lastAnonymousProfileId, dcg_profile_id: dcgProfileId || \"\", us_privacy: privacyCookie !== null && privacyCookie !== void 0 ? privacyCookie : \"\", campaign_tracking_code: campaign_tracking_code || \"\" }, campaignTraits), { network_entitlement_list: getEntitlements({ excludePreviewPass: true }) });\n if ((_h = window.DataLayer) === null || _h === void 0 ? void 0 : _h.isNation()) {\n props.purchase_source = window.DataLayer.getPurchaseSource() || \"\";\n }\n return {\n traits: props,\n device: {\n id: getDeviceIdCookie(),\n },\n page: {\n url: window.location.href.split(\"?\")[0],\n },\n Optimizely: {\n userId: anonymousId !== null && anonymousId !== void 0 ? anonymousId : \"\",\n },\n };\n};\n// TODO: cleanup\nexport var getDefaultEventProps = function (_a) {\n var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;\n var props = _a.props;\n var argsPageType = (_b = props === null || props === void 0 ? void 0 : props.page_type) !== null && _b !== void 0 ? _b : null;\n var currentPageType = (_d = (_c = window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type) !== null && _d !== void 0 ? _d : null;\n var windowPropsPageType = (_f = (_e = window.props) === null || _e === void 0 ? void 0 : _e.page_type) !== null && _f !== void 0 ? _f : null;\n var pageType = argsPageType ||\n currentPageType ||\n windowPropsPageType ||\n defaultGlobalPageProperties.page_type;\n var argsPageName = (_g = props === null || props === void 0 ? void 0 : props.page_name) !== null && _g !== void 0 ? _g : null;\n var currentPageName = (_j = (_h = window.utag_data) === null || _h === void 0 ? void 0 : _h.page_name) !== null && _j !== void 0 ? _j : null;\n var pageName = argsPageName || currentPageName;\n var campaignTraits = getCampaignValues();\n var pageTitle = (_l = (_k = window.utag_data) === null || _k === void 0 ? void 0 : _k.page_content_title) !== null && _l !== void 0 ? _l : null;\n var pageLoginState = getPageLoginState();\n var pageTestName = (_m = window === null || window === void 0 ? void 0 : window.amplitude) === null || _m === void 0 ? void 0 : _m.pageTestName;\n var pageContentPersonality = ((_o = window.DataLayer) === null || _o === void 0 ? void 0 : _o.isNation()) &&\n ((_r = (_q = (_p = window.context) === null || _p === void 0 ? void 0 : _p.segment) === null || _q === void 0 ? void 0 : _q.contentPersonality) !== null && _r !== void 0 ? _r : null);\n var pageBannerCount = getContextBanners().length;\n var pageBannerList = formatBannerList(getContextBanners());\n var favoritesData = (_s = window.DataLayer) === null || _s === void 0 ? void 0 : _s.getFavorites();\n var cleanedProps = cleanObject(__assign(__assign(__assign(__assign({}, getPageContentLevels(props)), getTimePartingInfo()), (argsPageType !== SEGMENT_PAGE_TYPE_CCPA &&\n getFavoritesProps(favoritesData))), { page_test_name: pageTestName, page_content_title: pageTitle, page_content_personality: pageContentPersonality, page_banner_count: pageBannerCount, page_banner_list: pageBannerList, page_name: pageName, page_type: pageType }));\n var mergedProps = recursiveMerge({\n page_is_dark_mode: false,\n page_login_state: pageLoginState,\n }, defaultCampaignValues, defaultGlobalPageProperties, campaignTraits, props, cleanedProps);\n return mergedProps;\n};\nexport var getDeviceIdCookie = function () { var _a; return (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getCookie({ name: SEGMENT_DEVICE_ID_COOKIE }); };\nexport var isDetail = function (data, index) {\n return isSeriesDetail(data, index) || isMovieDetail(data, index);\n};\nexport var getDetailFindReferrer = function (data) {\n return isDetail(data, 0) && isFind(data, 1);\n};\nexport var getDetailSearchReferrer = function (data) {\n return isDetail(data, 0) && isSearch(data, 1);\n};\nexport var getDetailCollectionReferrer = function (data) {\n return isDetail(data, 0) && isCollection(data, 1);\n};\nexport var getDetailDetailReferrer = function (data) {\n return isDetail(data, 0) && isDetail(data, 1);\n};\nexport var getDetailLiveReferrer = function (data) {\n return isDetail(data, 0) && isLive(data, 1);\n};\nexport var getContinuousPlayReferrer = function (data) {\n return isContinuousPlay(data, 0);\n};\nexport var getDeeplinkReferrer = function (data) {\n return isDeeplink(data, 0);\n};\nexport var getEndcardReferrer = function (data) {\n return isEndcard(data, 0);\n};\nexport var getHomeReferrer = function (data) { return isHome(data, 0); };\nexport var getVodSectionReferrer = function (data) {\n return isVodSection(data, 0);\n};\nexport var getEntitlements = function (_a) {\n var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n var excludePreviewPass = _a.excludePreviewPass;\n var entitlementOverride = hasEntitlementOverride();\n var entitlements = (_d = (_c = (_b = window.context) === null || _b === void 0 ? void 0 : _b.segment) === null || _c === void 0 ? void 0 : _c.entitlements) !== null && _d !== void 0 ? _d : \"\";\n if (!entitlements) {\n var authCookie = (_e = window.DataLayer) === null || _e === void 0 ? void 0 : _e.getCookie({\n name: (_g = (_f = window.DataLayer.enums) === null || _f === void 0 ? void 0 : _f.MVPD_COOKIE) !== null && _g !== void 0 ? _g : \"\",\n });\n var preauthorizedResources = (_h = authCookie === null || authCookie === void 0 ? void 0 : authCookie.preauthorizedResources) !== null && _h !== void 0 ? _h : [];\n preauthorizedResources.sort(sortEntitlements);\n entitlements = preauthorizedResources.join(\",\");\n }\n if (entitlementOverride)\n return entitlementOverride;\n if (excludePreviewPass) {\n var mvpd = (_k = (_j = window.context) === null || _j === void 0 ? void 0 : _j.segment) === null || _k === void 0 ? void 0 : _k.mvpd;\n if (!mvpd)\n mvpd = (_m = (_l = window.DataLayer) === null || _l === void 0 ? void 0 : _l.getMVPD()) !== null && _m !== void 0 ? _m : \"\";\n var validMvpd = !((_o = window.DataLayer) === null || _o === void 0 ? void 0 : _o.isPreviewPass(mvpd));\n return validMvpd ? entitlements : \"\";\n }\n return entitlements;\n};\nexport var getFavoritesEvents = function () {\n var generateFavoriteProps = function (data) {\n var actionLocation = data.actionLocation, _a = data.seriesName, seriesName = _a === void 0 ? \"\" : _a, favoritesProps = data.favoritesProps, _b = data.showID, showID = _b === void 0 ? \"\" : _b;\n var itemTitle = seriesName.toLowerCase();\n var isPersonality = /^meet-/.test(showID);\n return __assign(__assign({}, favoritesProps), { page_action_location: actionLocation, page_item_title: itemTitle, page_favorite_type: isPersonality ? \"personality\" : \"series\", page_favorite_update: seriesName });\n };\n return {\n addFavorite: function (props) {\n var page_item_title = props.page_item_title;\n handleAnalytics({\n event: Events.ADDED_FAVORITES,\n payload: __assign(__assign({}, generateFavoriteProps(props)), { page_item_title: page_item_title }),\n });\n },\n removeFavorite: function (props) {\n var page_item_title = props.page_item_title;\n handleAnalytics({\n event: Events.REMOVED_FAVORITES,\n payload: __assign(__assign({}, generateFavoriteProps(props)), { page_item_title: page_item_title }),\n });\n },\n };\n};\nexport var getLastAnonymousProfileId = function () {\n var _a, _b, _c;\n var pageActivationCode = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getQueryParameter(\"code\");\n var secondScreenAnonId = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getCookie({\n name: SECOND_SCREEN_ANONYMOUS_ID,\n });\n return pageActivationCode\n ? secondScreenAnonId\n : (_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.getCookie({\n name: SegmentProfileIdCookies.LAST_KNOWN_ANONYMOUS,\n });\n};\nexport var getLastKnownProfileId = function () {\n var _a, _b;\n var accountCookie = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getAccount();\n var dcgProfileId = accountCookie === null || accountCookie === void 0 ? void 0 : accountCookie.profileId;\n var lastKnownProfileId = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getCookie({\n name: SegmentProfileIdCookies.LAST_KNOWN,\n });\n return lastKnownProfileId || dcgProfileId || \"\";\n};\nexport var getLivePageName = function (_a) {\n var location = _a.location, previousPath = _a.previousPath;\n var referrerPath = location === null || location === void 0 ? void 0 : location.pathname;\n var pageName = \"\";\n if (!referrerPath.includes(\"channel\")) {\n pageName = COLLECTION_LIVE_TV;\n }\n else if (previousPath === \"/\") {\n pageName = COLLECTION_HOME;\n }\n else if (previousPath.match(/^\\/(news)(\\/)?(.*)$/)) {\n pageName = COLLECTION_NEWS;\n }\n else if (previousPath.match(/^\\/(local)(\\/)?(.*)$/)) {\n pageName = COLLECTION_LOCAL;\n }\n return pageName;\n};\nexport var getLiveViewedVideo = function (_a) {\n var video = _a.video, prevVideo = _a.prevVideo, segmentSourceType = _a.segmentSourceType;\n if (segmentSourceType === SegmentSources.AUTOPLAY)\n return prevVideo;\n return video;\n};\nexport var getMVPDEvents = function () {\n var _a, _b;\n var currentPageName = (_b = (_a = window.utag) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.page_name;\n var pageName = currentPageName || defaultGlobalPageProperties.page_name;\n return {\n authenticationStarted: function (props) {\n var mvpdProps = __assign(__assign(__assign({}, props), getActivationProps()), { page_name: pageName });\n handleAnalytics({\n event: Events.AUTHENTICATION_STARTED,\n payload: mvpdProps,\n });\n },\n authenticationCompleted: function (props) {\n var mvpdProps = __assign(__assign(__assign({}, props), getActivationProps()), { page_name: pageName });\n handleAnalytics({\n event: Events.AUTHENTICATION_COMPLETED,\n payload: mvpdProps,\n });\n },\n previewPassStarted: function (props) {\n var mvpdProps = __assign(__assign({}, props), { page_name: pageName });\n handleAnalytics({\n event: Events.PRIVIEW_PASS_STARTED,\n payload: mvpdProps,\n });\n },\n mvpdPreviewPassExpired: function (props) {\n var mvpdProps = __assign(__assign({}, props), { page_name: pageName });\n handleAnalytics({\n event: Events.PREVIEW_PASS_EXPIRED,\n payload: mvpdProps,\n });\n },\n authenticationSelectProviderStarted: function (props) {\n var mvpdProps = __assign(__assign(__assign({}, props), getActivationProps()), { page_name: pageName });\n handleAnalytics({\n event: Events.AUTHENTICATON_SELECT_PROVIDER_STARTED,\n payload: mvpdProps,\n });\n },\n authenticationSelectProviderError: function (props) {\n var mvpdProps = __assign(__assign({}, getActivationProps()), { page_name: pageName, page_error_description: props === null || props === void 0 ? void 0 : props.description, page_error_type: props === null || props === void 0 ? void 0 : props.type });\n handleAnalytics({\n event: Events.AUTHENTICATON_SELECT_PROVIDER_ERROR,\n payload: mvpdProps,\n });\n },\n authenticationSelectProviderCompleted: function (props) {\n var mvpdProps = __assign(__assign(__assign({}, props), getActivationProps()), { page_name: pageName, page_action_type: props === null || props === void 0 ? void 0 : props.actionType });\n handleAnalytics({\n event: Events.AUTHENTICATON_SELECT_PROVIDER_COMPLETED,\n payload: mvpdProps,\n });\n },\n authenticationLoggedOut: function (props) {\n var mvpdProps = __assign(__assign({}, props), { page_name: pageName });\n handleAnalytics({\n event: Events.AUTHETNTICATION_LOGGED_OUT,\n payload: mvpdProps,\n });\n },\n };\n};\nexport var getPageContentLevels = function (props) {\n var _a;\n var pageName = (props === null || props === void 0 ? void 0 : props.page_name) || ((_a = window.utag_data) === null || _a === void 0 ? void 0 : _a.page_name);\n if (pageName) {\n var splitPageLevels = pageName.split(\":\");\n return {\n page_content_level_1: splitPageLevels.slice(0, 3).join(\":\"),\n page_content_level_2: splitPageLevels.slice(0, 4).join(\":\"),\n page_content_level_3: splitPageLevels.slice(0, 5).join(\":\"),\n page_content_level_4: splitPageLevels.slice(0, 6).join(\":\"),\n };\n }\n return {};\n};\nexport var getPageReferrerDataFromStorage = function () {\n var _a;\n var defaultValue = [];\n var pageReferrerData = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getSessionStorage({\n key: SESSION_STORAGE_REFERRER_TRACKING,\n });\n return pageReferrerData ? JSON.parse(pageReferrerData) : defaultValue;\n};\nexport var getPageStartSource = function () { var _a, _b, _c; return (_c = (_b = (_a = window.context) === null || _a === void 0 ? void 0 : _a.segment) === null || _b === void 0 ? void 0 : _b.authStartSource) !== null && _c !== void 0 ? _c : SegmentPageStartSources.GENERAL; };\nexport var getPageViewProps = function (data) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n // Use utag window data for data when tracking page account events from overlays\n // otherwise use existing data stored in the window.utag_data\n var utagData = data !== null && data !== void 0 ? data : window.utag_data;\n return {\n name: (_a = utagData === null || utagData === void 0 ? void 0 : utagData.page_name) !== null && _a !== void 0 ? _a : \"\",\n primary_business_unit: (_b = utagData === null || utagData === void 0 ? void 0 : utagData.primary_bu) !== null && _b !== void 0 ? _b : \"\",\n secondary_business_unit: (_c = utagData === null || utagData === void 0 ? void 0 : utagData.secondary_bu) !== null && _c !== void 0 ? _c : \"\",\n app_name: (_d = utagData === null || utagData === void 0 ? void 0 : utagData.app_name) !== null && _d !== void 0 ? _d : \"\",\n app_platform: (_e = utagData === null || utagData === void 0 ? void 0 : utagData.app_platform) !== null && _e !== void 0 ? _e : \"\",\n app_version: APP_VERSION,\n page_content_level_1: (_f = utagData === null || utagData === void 0 ? void 0 : utagData.sc_content_1) !== null && _f !== void 0 ? _f : \"\",\n page_content_level_2: (_g = utagData === null || utagData === void 0 ? void 0 : utagData.sc_content_2) !== null && _g !== void 0 ? _g : \"\",\n page_content_level_3: (_h = utagData === null || utagData === void 0 ? void 0 : utagData.sc_content_3) !== null && _h !== void 0 ? _h : \"\",\n page_content_level_4: (_j = utagData === null || utagData === void 0 ? void 0 : utagData.sc_content_4) !== null && _j !== void 0 ? _j : \"\",\n };\n};\nexport var getReferrer = function (_a) {\n var _b;\n var prevSegmentReferrer = _a.prevSegmentReferrer;\n var noneReferrer = (_b = {},\n _b[NAME] = NONE,\n _b[TYPE] = NONE,\n _b[POSITION] = NONE,\n _b);\n var referrerDataFromStorage = getReferrerDataFromStorage();\n var referrerType = referrerDataFromStorage === null || referrerDataFromStorage === void 0 ? void 0 : referrerDataFromStorage[TYPE];\n switch (referrerType) {\n case CONTINUOUS_PLAY:\n case ENDCARD:\n case VOD_SECTION:\n return prevSegmentReferrer;\n case DEEPLINK:\n case HOME:\n return noneReferrer;\n default:\n return referrerDataFromStorage;\n }\n};\nexport var getPodId = function (data) { var _a, _b; return (((_b = (_a = data === null || data === void 0 ? void 0 : data.chapter) === null || _a === void 0 ? void 0 : _a.index) !== null && _b !== void 0 ? _b : 0) + 1).toString(); };\nexport var getReferrerDataFromStorage = function () {\n var _a;\n var _b, _c;\n var referrerData = getPageReferrerDataFromStorage();\n var isDetailFindReferrer = getDetailFindReferrer(referrerData);\n var isDetailSearchReferrer = getDetailSearchReferrer(referrerData);\n var isDetailCollectionReferrer = getDetailCollectionReferrer(referrerData);\n var isDetailDetailReferrer = getDetailDetailReferrer(referrerData);\n var isDetailLiveReferrer = getDetailLiveReferrer(referrerData);\n var isContinuousPlayReferrer = getContinuousPlayReferrer(referrerData);\n var isDeeplinkReferrer = getDeeplinkReferrer(referrerData);\n var isEndcardReferrer = getEndcardReferrer(referrerData);\n var isHomeReferrer = getHomeReferrer(referrerData);\n var isVodSectionReferrer = getVodSectionReferrer(referrerData);\n var isReferrerFirstIndex = isDetailFindReferrer ||\n isDetailSearchReferrer ||\n isDetailCollectionReferrer ||\n isDetailDetailReferrer ||\n isDetailLiveReferrer\n ? 1\n : null;\n var isReferrerZeroIndex = isContinuousPlayReferrer ||\n isDeeplinkReferrer ||\n isEndcardReferrer ||\n isHomeReferrer ||\n isVodSectionReferrer\n ? 0\n : null;\n var referrerDataLocation = isReferrerFirstIndex || isReferrerZeroIndex;\n if (referrerDataLocation !== null) {\n var id = (_b = referrerData === null || referrerData === void 0 ? void 0 : referrerData[referrerDataLocation]) === null || _b === void 0 ? void 0 : _b.name;\n var data = (_c = referrerData === null || referrerData === void 0 ? void 0 : referrerData[referrerDataLocation]) === null || _c === void 0 ? void 0 : _c.data;\n var referrerName = referrerPageMap[id];\n return __assign((_a = {}, _a[TYPE] = referrerName || id, _a), data);\n }\n return null;\n};\nexport function getSegmentLiveCollectionCount(panels) {\n var _a, _b;\n return (_b = (_a = panels === null || panels === void 0 ? void 0 : panels.member) === null || _a === void 0 ? void 0 : _a.filter(function (panel) { return (panel === null || panel === void 0 ? void 0 : panel.panelType) !== \"listing\"; })) === null || _b === void 0 ? void 0 : _b.length;\n}\nexport var getSegmentModelMetadata = function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n return ({\n page_recs_configuration_id: (_d = (_c = (_b = (_a = window.context) === null || _a === void 0 ? void 0 : _a.segment) === null || _b === void 0 ? void 0 : _b.modelMetadata) === null || _c === void 0 ? void 0 : _c.configurationId) !== null && _d !== void 0 ? _d : \"\",\n page_recs_result_set_id: (_h = (_g = (_f = (_e = window.context) === null || _e === void 0 ? void 0 : _e.segment) === null || _f === void 0 ? void 0 : _f.modelMetadata) === null || _g === void 0 ? void 0 : _g.resultSetId) !== null && _h !== void 0 ? _h : \"\",\n page_recs_source_id: (_m = (_l = (_k = (_j = window.context) === null || _j === void 0 ? void 0 : _j.segment) === null || _k === void 0 ? void 0 : _k.modelMetadata) === null || _l === void 0 ? void 0 : _l.sourceId) !== null && _m !== void 0 ? _m : \"\",\n });\n};\nexport var getSegmentPageCollectionIdList = function (collections, event) {\n if (event === Events.COLLECTION_ITEMS_AVAILABLE) {\n return collections.reduce(function (str, item) { return \"\" + str + (str ? \",\" : \"\") + item.id; }, \"\");\n }\n return collections.reduce(function (str, item) {\n var _a;\n var contentUids = (_a = item === null || item === void 0 ? void 0 : item.contentUids) !== null && _a !== void 0 ? _a : getSegmentContentUidString(item);\n var _b = item.id, id = _b === void 0 ? \"\" : _b;\n var itemStr = id ? id + \":\" + contentUids : \"\";\n return str ? str + \",\" + itemStr : \"\" + itemStr;\n }, \"\");\n};\nexport var getSegmentOptimizelyData = function () {\n var _a;\n var optimizelySegmentStorage = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getLocalStorage({\n key: OPTIMIZELY_SEGMENT_LOCAL_STORAGE,\n });\n return optimizelySegmentStorage ? JSON.parse(optimizelySegmentStorage) : {};\n};\nexport var getSignOutStartSource = function (_a) {\n var networkUpsellPage = _a.networkUpsellPage, pathname = _a.pathname, routeParams = _a.routeParams;\n var path = pathname || \"\";\n if (path.replace(/\\//g, \"\") === networkUpsellPage.replace(/\\//g, \"\")) {\n return \"Marketing Page\";\n }\n if (path === \"/\")\n return \"Home Page\";\n if (routeParams === null || routeParams === void 0 ? void 0 : routeParams.showId)\n return \"Series Detail Page\";\n if (routeParams === null || routeParams === void 0 ? void 0 : routeParams.movieId)\n return \"Movie Detail Page\";\n if (routeParams === null || routeParams === void 0 ? void 0 : routeParams.articleId)\n return \"Article Page\";\n if (path.includes(\"/shows\"))\n return \"Shows Page\";\n if (path.includes(\"/movies\"))\n return \"Movies Page\";\n if (path.includes(\"/watch\"))\n return \"Watch Page\";\n if (path.includes(\"/live/\"))\n return \"Live Page\";\n return false;\n};\nexport var getSourceName = function (_a) {\n var _b, _c;\n var data = _a.data, type = _a.type;\n switch (type) {\n case SegmentSources.HOME: {\n var contextHomeLocation = \"context.segment.home\";\n var contextHome = (_c = (_b = window.context) === null || _b === void 0 ? void 0 : _b.segment) === null || _c === void 0 ? void 0 : _c.home;\n var sourceName = contextHome === null || contextHome === void 0 ? void 0 : contextHome.sourceName;\n var sourceHome = (contextHome === null || contextHome === void 0 ? void 0 : contextHome.isLive) ? SegmentSources.HOME : null;\n var homeData = sourceName || sourceHome || null;\n if (homeData)\n deeplySetProperty(window, contextHomeLocation, null);\n return homeData;\n }\n case SegmentSources.DETAIL:\n return data === null || data === void 0 ? void 0 : data.showCode;\n case SegmentSources.LIVE:\n return SegmentSources.LIVE;\n case SegmentSources.VOD_SECTION:\n case SegmentSources.AUTOPLAY:\n case SegmentSources.END_SLATE: {\n return concatSourceNameData({ data: data });\n }\n default: {\n return window.location.href;\n }\n }\n};\nexport var getSourceType = function (_a) {\n var autoplay = _a.autoplay, epg = _a.epg, endslate = _a.endslate, homeUrl = _a.homeUrl, path = _a.path, vodThumbnails = _a.vodThumbnails;\n var isHome = path === homeUrl;\n var isLive = epg || (path !== null && path !== void 0 ? path : \"\").includes(\"/live\");\n var isDeeplink = window.location.pathname === path;\n if (isHome)\n return SegmentSources.HOME;\n if (vodThumbnails)\n return SegmentSources.VOD_SECTION;\n if (endslate)\n return SegmentSources.END_SLATE;\n if (autoplay)\n return SegmentSources.AUTOPLAY;\n if (isLive)\n return SegmentSources.LIVE;\n if (isDeeplink)\n return SegmentSources.DEEPLINK;\n return SegmentSources.DETAIL;\n};\n/**\n * ### handleSegmentAnalytics\n * accepts payloads for specified Segment events, as well as callbacks for these dispatched events.\n * @param {() => void} callback - a callback that will be invoked after the event is dispatched.\n * @param {string} event - the name of the event.\n * @param {Object} payload - AnyObject containing a payload of properties.\n */\nexport function handleSegmentAnalytics(_a) {\n var callback = _a.callback, event = _a.event, payload = _a.payload;\n switch (EventTypeMap[event]) {\n case EventTypes.PAGE: {\n var _b = payload.pageName, pageName = _b === void 0 ? \"\" : _b, pageType = payload.pageType;\n // Todo: refactor callPageEvent\n callPageEvent({\n eventName: SegmentEventStrings[event],\n pageName: pageName,\n props: __assign(__assign({}, payload), { pageType: pageType }),\n featureFlag: true,\n });\n break;\n }\n case EventTypes.TRACK: {\n fireEvent({\n eventType: SegmentEventTypes.TRACK_EVENT,\n eventName: SegmentEventStrings[event],\n props: payload,\n cb: callback,\n });\n break;\n }\n default:\n }\n}\nexport var initDeviceIdCookie = function (_a) {\n var deviceId = _a.deviceId, expires = _a.expires, generateCookie = _a.generateCookie;\n var deviceIdCookie = getDeviceIdCookie();\n if (!deviceIdCookie) {\n deeplySetProperty(window, \"utag_data.ajs_anonymous_id\", deviceId);\n generateCookie(SEGMENT_DEVICE_ID_COOKIE, deviceId, expires);\n }\n};\n// TODO: refactor/combine isEventEnabled and isTrackingEnabledForEvent\nexport var isEventEnabled = function (featureFlag) {\n return typeof featureFlag !== \"undefined\" && !featureFlag;\n};\n// TODO: refactor/combine isEventEnabled and isTrackingEnabledForEvent\nexport var isTrackingEnabledForEvent = function (name) {\n var _a;\n if (!name)\n return false;\n var withTveEventsToDisable = [];\n var withoutTveEventsToDisable = [LABEL_TV_PROVIDER_SIGN_OUT_PAGE_VIEW];\n var disabledEvents = ((_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.isTveEnabled())\n ? withTveEventsToDisable\n : withoutTveEventsToDisable;\n var isEventEnabled = disabledEvents.indexOf(name) === -1;\n return isEventEnabled;\n};\nexport var setContentPersonality = function (personality) {\n if (personality) {\n var contentPersonality = personality.toString().replace(/-/g, \" \");\n deeplySetProperty(window, \"context.segment.contentPersonality\", contentPersonality);\n }\n else {\n deeplySetProperty(window, \"context.segment.contentPersonality\", undefined);\n }\n};\nexport var setLoaded = function () {\n // Check to see if analytics.js has been loaded\n var checkIfLoaded = setInterval(function () {\n var _a;\n var analyticsReady = (_a = window.analytics) !== null && _a !== void 0 ? _a : false;\n if (analyticsReady) {\n deeplySetProperty(window, \"context.segment.loaded\", true);\n clearInterval(checkIfLoaded);\n }\n }, 500);\n};\nexport var setPageStartSource = function (_a) {\n var previewPassExpired = _a.previewPassExpired, previewPassSignIn = _a.previewPassSignIn, MVPDIncomplete = _a.MVPDIncomplete, isHeader = _a.isHeader;\n var setPageStartSource = function (value) {\n return deeplySetProperty(window, \"context.segment.authStartSource\", value);\n };\n if (previewPassSignIn)\n setPageStartSource(PP_SIGNIN);\n if (previewPassExpired)\n setPageStartSource(PP_EXPIRATION);\n if (isHeader)\n setPageStartSource(SETTINGS);\n if (MVPDIncomplete)\n setPageStartSource(MVPDINCOMPLETE);\n};\nexport var setEntitlements = function (entitlementsList) {\n return deeplySetProperty(window, \"context.segment.entitlements\", entitlementsList);\n};\nexport var setSegmentOptimizelyData = function (_a) {\n var _b;\n var segmentCampaignData = _a.segmentCampaignData;\n var testData = __assign(__assign({}, getSegmentOptimizelyData()), segmentCampaignData);\n (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.setLocalStorage({\n key: OPTIMIZELY_SEGMENT_LOCAL_STORAGE,\n value: JSON.stringify(testData),\n });\n};\nexport var getSegmentOptimizelyString = function () {\n var _a, _b, _c;\n var experiments = getSegmentOptimizelyData();\n var removeUndefinedString = function (str) {\n return str.includes(\"undefined\") || str.length <= 1 ? \"\" : str;\n };\n if (Object.keys(experiments !== null && experiments !== void 0 ? experiments : {}).length) {\n return Object.keys(experiments)\n .map(function (key) {\n var _a = experiments[key], _b = _a.experimentName, experimentName = _b === void 0 ? \"\" : _b, _c = _a.variationName, variationName = _c === void 0 ? \"\" : _c, _d = _a.campaignName, campaignName = _d === void 0 ? \"\" : _d;\n return removeUndefinedString(experimentName.trim() + \":\" + variationName.trim());\n })\n .filter(Boolean)\n .join(\",\");\n }\n return removeUndefinedString((_c = (_b = (_a = window.context) === null || _a === void 0 ? void 0 : _a.optimizely) === null || _b === void 0 ? void 0 : _b.pageTestName) !== null && _c !== void 0 ? _c : \"\");\n};\n/**\n * ### parseQueryUrl\n * checks the url for marketing campaign-related query params.\n */\nexport var parseQueryUrl = function () {\n var _a;\n var _b, _c;\n var queryString = window.location.search;\n var campaignCookie = getCampaignCookieInfo();\n var segmentCampaign = \"cmpid\";\n var intPrefix = queryString.includes(\"int_\") ? \"int_\" : \"\";\n var propertyNames = (_a = {\n cmpid: \"campaign_\" + intPrefix + \"tracking_code\"\n },\n _a[intPrefix + \"org\"] = \"campaign_\" + intPrefix + \"organization\",\n _a[intPrefix + \"ag\"] = \"campaign_\" + intPrefix + \"agency\",\n _a[intPrefix + \"mc\"] = \"campaign_\" + intPrefix + \"marketing_channel\",\n _a[intPrefix + \"src\"] = \"campaign_\" + intPrefix + \"source\",\n _a[intPrefix + \"cmp\"] = \"campaign_\" + intPrefix + \"name\",\n _a[intPrefix + \"add\"] = \"campaign_\" + intPrefix + \"additional\",\n _a);\n var params = {};\n var fullQuery = queryString.substring(1);\n var includesCmpid = fullQuery.includes(segmentCampaign + \"=\");\n var sessionStorage = window.sessionStorage;\n if (includesCmpid) {\n // valid campaign codes\n var _d = __read(fullQuery.match(/cmpid(.*)/), 1), campaignString = _d[0];\n params[propertyNames[segmentCampaign]] = campaignString;\n var campaignCodes = campaignString.split(\"::\");\n if (campaignCodes.length > 1) {\n campaignCodes.forEach(function (codes) {\n var keyValuesPair = codes.split(\"=\");\n if (keyValuesPair.length === 2) {\n var _a = __read(keyValuesPair, 2), key = _a[0], value = _a[1];\n params[propertyNames[key]] = value;\n }\n });\n }\n if (sessionStorage) {\n (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.setSessionStorage({\n key: \"campaignInfo\",\n value: JSON.stringify(params),\n });\n }\n }\n else if (sessionStorage) {\n var campaignInfo = (_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.getSessionStorage({\n key: \"campaignInfo\",\n });\n if (campaignInfo)\n return setDataLayerCampaignCodes(JSON.parse(campaignInfo));\n }\n else if (campaignCookie) {\n removeCampaignCookieInfo();\n return setDataLayerCampaignCodes(campaignCookie);\n }\n return setDataLayerCampaignCodes(params);\n};\nexport var removeCampaignCookieInfo = function () {\n var _a, _b;\n (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.removeCookie({ key: \"campaignTraitInfo_preprod\" });\n (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.removeCookie({ key: \"campaignTraitInfo\" });\n};\nexport var removeUserIdCookie = function () { var _a; return (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.removeCookie({ key: \"ajs_user_id\" }); };\nexport function segmentReadyCallback() {\n pushProfileIdsToGoogleDataLayer();\n}\nexport var setDataLayerCampaignCodes = function (codes) {\n if (window.DataLayer)\n window.DataLayer.campaignCodes = codes;\n return codes;\n};\nexport var setContextMVPD = function (mvpd) {\n return deeplySetProperty(window, \"context.segment.mvpd\", mvpd);\n};\nexport var setContextSourceLive = function (isLive) {\n return deeplySetProperty(window, \"context.segment.home.isLive\", isLive);\n};\nexport var setRestartedPlaybackGlobal = function (val) {\n return deeplySetProperty(window, SegmentPlayerContextStrings.RESTARTED_PLAYBACK, val);\n};\nexport var setResumedPlaybackGlobal = function (val) {\n return deeplySetProperty(window, SegmentPlayerContextStrings.RESUMED_PLAYBACK, val);\n};\nexport var setSegmentModelMetadata = function (data) {\n return deeplySetProperty(window, \"context.segment.modelMetadata\", data);\n};\nexport var setSecondsScreenProfileCookie = function () {\n var lastKnownProfileId = getLastKnownProfileId();\n var network = window.DataLayer.isNation() ? \"foxnews\" : \"fox\";\n var dateToIncrement = new Date();\n window.DataLayer.setCookie({\n name: SECOND_SCREEN_PROFILE_ID,\n value: lastKnownProfileId,\n options: {\n domain: \".\" + network + \".com\",\n expires: new Date(dateToIncrement.setSeconds(dateToIncrement.getSeconds() + 100)),\n path: \"/\",\n sameSite: \"lax\",\n },\n });\n};\nexport var sortEntitlements = function (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n};\nexport var updateBannerData = function (panels) {\n var banners = panels.filter(function (panel) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n var promoType = (_c = (_b = (_a = panel === null || panel === void 0 ? void 0 : panel.items) === null || _a === void 0 ? void 0 : _a.member) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.promoType;\n return (promoType === ((_e = (_d = window.DataLayer) === null || _d === void 0 ? void 0 : _d.enums) === null || _e === void 0 ? void 0 : _e.PROMO_TYPE_MARKETING_VIDEO) ||\n promoType === ((_g = (_f = window.DataLayer) === null || _f === void 0 ? void 0 : _f.enums) === null || _g === void 0 ? void 0 : _g.PROMO_TYPE_INSET) ||\n promoType === ((_j = (_h = window.DataLayer) === null || _h === void 0 ? void 0 : _h.enums) === null || _j === void 0 ? void 0 : _j.PROMO_TYPE_LEAD));\n });\n deeplySetProperty(window, \"context.segment.banners\", banners.map(function (panel) { return panel; }));\n};\nvar testCommit = {};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar _a, _b, _c, _d;\n/* miscellaneous & multi-platform helpers go here */\nimport { APP_VERSION, EventVendorMap, FAVORITES_TYPE_PERSONALITY, FoxProfileEvents, LOGGED_IN, LOGGED_OUT, MAX_REFERRER_LENGTH, NATION, OPTIMIZELY_COLLECTION_VIEWED, OPTIMIZELY_COLLECTION_VIEWED_SESSION_STORAGE, PageEvents, PageNames, PAGE_PROPS_STORAGE, SECOND_SCREEN_ANONYMOUS_ID, SegmentPlayerStates, SegmentVideoEventStrings, SESSION_STORAGE_REFERRER_TRACKING, TrackEvents, Vendors, } from \"./Enums\";\nimport { callPlayerEvent as callSegmentPlayerEvent, getLastAnonymousProfileId, getLastKnownProfileId, getPageStartSource as getSegmentPageStartSource, getPageReferrerDataFromStorage, handleSegmentAnalytics, } from \"./SegmentHelper\";\nimport { getAccountEvents as getTealiumAccountEvents, getPreviewPassEvents as getTealiumPreviewPassEvents, handleTealiumAnalytics, } from \"./TealiumHelper\";\nimport createFunctionContext from \"./utils/CreateFunctionContext\";\nvar FP_SIGNED_OUT = FoxProfileEvents.FP_SIGNED_OUT, FP_SIGN_IN_ATTEMPTED = FoxProfileEvents.FP_SIGN_IN_ATTEMPTED, FP_SIGN_IN_COMPLETED = FoxProfileEvents.FP_SIGN_IN_COMPLETED, FP_SIGN_OUT_ATTEMPTED = FoxProfileEvents.FP_SIGN_OUT_ATTEMPTED, FP_SIGN_UP_ATTEMPTED = FoxProfileEvents.FP_SIGN_UP_ATTEMPTED, FP_SIGN_UP_COMPLETED = FoxProfileEvents.FP_SIGN_UP_COMPLETED;\nvar CHANGE_PASSWORD_PAGE_VIEW = PageEvents.CHANGE_PASSWORD_PAGE_VIEW, KNOWN_PROFILE_PAGE_VIEW = PageEvents.KNOWN_PROFILE_PAGE_VIEW, PARENTAL_CONTROLS_SETTINGS_PAGE_VIEW = PageEvents.PARENTAL_CONTROLS_SETTINGS_PAGE_VIEW;\nvar COLLECTION = PageNames.COLLECTION, COLLECTION_ENTERTAINMENT = PageNames.COLLECTION_ENTERTAINMENT, COLLECTION_HOME = PageNames.COLLECTION_HOME, COLLECTION_LISTEN = PageNames.COLLECTION_LISTEN, COLLECTION_LOCAL = PageNames.COLLECTION_LOCAL, COLLECTION_MOVIES = PageNames.COLLECTION_MOVIES, COLLECTION_NEWS = PageNames.COLLECTION_NEWS, COLLECTION_PERSONALITIES = PageNames.COLLECTION_PERSONALITIES, COLLECTION_PRIMETIME = PageNames.COLLECTION_PRIMETIME, COLLECTION_SHOWS = PageNames.COLLECTION_SHOWS, COLLECTION_SPORTS = PageNames.COLLECTION_SPORTS, CONTINUOUS_PLAY = PageNames.CONTINUOUS_PLAY, DEEPLINK = PageNames.DEEPLINK, ENDCARD = PageNames.ENDCARD, FIND = PageNames.FIND, HOME = PageNames.HOME, LIVE = PageNames.LIVE, MOVIE_DETAIL = PageNames.MOVIE_DETAIL, SEARCH = PageNames.SEARCH, SERIES_DETAIL = PageNames.SERIES_DETAIL, VOD_SECTION = PageNames.VOD_SECTION;\nvar AUTHENTICATION_STARTED = TrackEvents.AUTHENTICATION_STARTED, FB_LINKING_COMPLETED = TrackEvents.FB_LINKING_COMPLETED, FB_LINKING_STARTED = TrackEvents.FB_LINKING_STARTED, FB_PASSWORD_CREATION_COMPLETED = TrackEvents.FB_PASSWORD_CREATION_COMPLETED, FB_PASSWORD_CREATION_STARTED = TrackEvents.FB_PASSWORD_CREATION_STARTED, FB_SIGN_IN_COMPLETED = TrackEvents.FB_SIGN_IN_COMPLETED, FB_SIGN_IN_STARTED = TrackEvents.FB_SIGN_IN_STARTED, FB_SIGN_UP_COMPLETED = TrackEvents.FB_SIGN_UP_COMPLETED, FB_SIGN_UP_STARTED = TrackEvents.FB_SIGN_UP_STARTED, ONBOARDING_START = TrackEvents.ONBOARDING_START, ON_FAVORITE = TrackEvents.ON_FAVORITE, ON_UNFAVORITE = TrackEvents.ON_UNFAVORITE, PERKS_PRESENTED = TrackEvents.PERKS_PRESENTED, PREVIEW_PASS_EXPIRED = TrackEvents.PREVIEW_PASS_EXPIRED, PREVIEW_PASS_STARTED = TrackEvents.PREVIEW_PASS_STARTED, PROFILE_MARKETING_OPT_IN_CHANGED = TrackEvents.PROFILE_MARKETING_OPT_IN_CHANGED, PROFILE_SCREEN_BACKED_OUT = TrackEvents.PROFILE_SCREEN_BACKED_OUT, PROFILE_UPSELL_PRESENTED = TrackEvents.PROFILE_UPSELL_PRESENTED, SIGN_IN_COMPLETED = TrackEvents.SIGN_IN_COMPLETED, SIGN_IN_ERROR = TrackEvents.SIGN_IN_ERROR, SIGN_IN_FORGOT_PASSWORD_STARTED = TrackEvents.SIGN_IN_FORGOT_PASSWORD_STARTED, SIGN_IN_INCOMPLETE = TrackEvents.SIGN_IN_INCOMPLETE, SIGN_IN_STARTED = TrackEvents.SIGN_IN_STARTED, SIGN_OUT_COMPLETED = TrackEvents.SIGN_OUT_COMPLETED, SIGN_OUT_STARTED = TrackEvents.SIGN_OUT_STARTED, SIGN_UP_COMPLETED = TrackEvents.SIGN_UP_COMPLETED, SIGN_UP_ERROR = TrackEvents.SIGN_UP_ERROR, SIGN_UP_INCOMPLETE = TrackEvents.SIGN_UP_INCOMPLETE, SIGN_UP_STARTED = TrackEvents.SIGN_UP_STARTED;\nexport var BUSINESS_UNIT = (_c = (_b = (_a = window.ExternalConfig) === null || _a === void 0 ? void 0 : _a.brand) === null || _b === void 0 ? void 0 : _b.businessUnit) !== null && _c !== void 0 ? _c : \"fox\";\nexport var BUILD_VERSION_UNIT = ((_d = window.DataLayer) === null || _d === void 0 ? void 0 : _d.isNation())\n ? \"foxnation\"\n : BUSINESS_UNIT;\nexport var BUILD_VERSION = BUILD_VERSION_UNIT + \" delta web|v\" + Version + \" (\" + BuildNumber + \")\";\nexport var homeTabPageNames = {\n entertainment: COLLECTION_ENTERTAINMENT,\n featured: COLLECTION_HOME,\n home: COLLECTION_HOME,\n listen: COLLECTION_LISTEN,\n local: COLLECTION_LOCAL,\n movies: COLLECTION_MOVIES,\n news: COLLECTION_NEWS,\n personalities: COLLECTION_PERSONALITIES,\n primetime: COLLECTION_PRIMETIME,\n shows: COLLECTION_SHOWS,\n sports: COLLECTION_SPORTS,\n};\n/**\n * ### noop\n * local implementation of lodash's _.noop\n */\nexport function noop() { }\n/**\n * ### callDelightedSurvey\n * calls the survey() function on the window.delighted.survey object\n * @param anonymousId - Segment anonymous ID needed for the payload passed to survey()\n */\nexport function callDelightedSurvey(anonymousId) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (anonymousId === void 0) { anonymousId = \"\"; }\n (_a = window.delighted) === null || _a === void 0 ? void 0 : _a.survey({\n anonymousId: anonymousId,\n app_name: (_d = (_c = (_b = window.ExternalConfig) === null || _b === void 0 ? void 0 : _b.analytics) === null || _c === void 0 ? void 0 : _c.app_name) !== null && _d !== void 0 ? _d : null,\n app_platform: (_g = (_f = (_e = window.ExternalConfig) === null || _e === void 0 ? void 0 : _e.analytics) === null || _f === void 0 ? void 0 : _f.app_platform) !== null && _g !== void 0 ? _g : null,\n app_version: APP_VERSION,\n });\n}\n/**\n * ### checkRecommendationIdOnClick\n * calls setRecommendationId with the nextRecIdData if the next video has a different\n * recommendation id and is not empty (ex: '')\n * @param currentRecIdData\n * @param nextRecIdData\n * @param setRecommendationId\n */\nexport function checkRecommendationIdOnClick(currentRecIdData, nextRecIdData, setRecommendationId) {\n var _a, _b;\n if (!setRecommendationId)\n return null;\n var currentRecId = (_a = currentRecIdData === null || currentRecIdData === void 0 ? void 0 : currentRecIdData.recommendationId) !== null && _a !== void 0 ? _a : null;\n var nextRecId = (_b = nextRecIdData === null || nextRecIdData === void 0 ? void 0 : nextRecIdData.recommendationId) !== null && _b !== void 0 ? _b : null;\n // If the next video has a different recommendation id and is not empty (ex: \"\")\n // Set the state of recomId to the new video\n if (currentRecId !== nextRecId && !!nextRecId) {\n setRecommendationId(nextRecIdData);\n }\n return null;\n}\n/**\n * ### cleanObject\n * recursively removes most falsy values from an object except 0 and false. This meets the\n * requirements for certain analytics platforms like Segment.\n * @param obj - the object to be cleaned\n */\nexport var cleanObject = function (obj) {\n if (obj === void 0) { obj = {}; }\n return Object.entries(obj).reduce(function (newObj, _a) {\n var _b, _c;\n var _d;\n var _e = __read(_a, 2), key = _e[0], _f = _e[1], value = _f === void 0 ? null : _f;\n if (typeof value !== \"string\" &&\n !Array.isArray(value) &&\n Object.keys((_d = value) !== null && _d !== void 0 ? _d : {}).length) {\n return __assign(__assign({}, newObj), (_b = {}, _b[key] = cleanObject(value), _b));\n }\n if ([0, false].includes(value) || value) {\n return __assign(__assign({}, newObj), (_c = {}, _c[key] = value, _c));\n }\n return newObj;\n }, {});\n};\nvar _e = __read(createFunctionContext({\n href: \"\",\n documentTitle: \"\",\n search: \"\",\n pathName: \"\",\n}), 3), usePersistDataProvider = _e[0], usePersistDataSelector = _e[1], usePersistDataClear = _e[2];\nexport { usePersistDataSelector, usePersistDataProvider, usePersistDataClear };\n/**\n * ### defer\n * wraps the given function with requestIdleCallback. This delays the function from being called\n * until the browser is idle.\n * @param cb - the function to be deferred\n */\nexport function defer(cb) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // in case defer is used inside defer\n var persistedData = usePersistDataSelector();\n var dataToPersist = {\n href: (persistedData === null || persistedData === void 0 ? void 0 : persistedData.href) || window.location.href,\n documentTitle: (persistedData === null || persistedData === void 0 ? void 0 : persistedData.documentTitle) || document.title,\n search: (persistedData === null || persistedData === void 0 ? void 0 : persistedData.search) || window.location.search,\n pathName: (persistedData === null || persistedData === void 0 ? void 0 : persistedData.pathName) || window.location.pathname,\n };\n var _callback = function () {\n usePersistDataProvider(dataToPersist);\n var response = cb.apply(null, args);\n usePersistDataClear();\n return response;\n };\n if (typeof window.requestIdleCallback === \"function\")\n window.requestIdleCallback(_callback);\n else\n _callback();\n };\n}\n/**\n * ### executeEvent\n * wrapper function to fire a variety of generic functions in one go. This should eventually be\n * deprecated in favor of using handleAnalytics.\n *\n * TODO: deprecate in favor of using handleAnalytics()\n *\n * @param payload - object containing the event (event name), eventObj which is an object of\n * events which should contain the given event name as a key, and params which as an object of\n * parameters to be passed in to the event payload.\n */\nexport function executeEvent(_a) {\n var eventObj = _a.eventObj, event = _a.event, params = _a.params;\n if (eventObj === null || eventObj === void 0 ? void 0 : eventObj[event])\n eventObj[event](params);\n}\n/**\n * ### fireFacebookPixel\n * calls the appropriate Facebook Pixel analytics methods based on the length format of the given\n * video. This function should be called at the beginning of playback.\n * @param lengthFormat - the format length of the video.\n */\nexport var fireFacebookPixel = function (lengthFormat) {\n var _a;\n var privacyCookie = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getCookie({\n name: \"us_privacy\",\n });\n if ((privacyCookie === null || privacyCookie === void 0 ? void 0 : privacyCookie.charAt(2)) === \"y\")\n window.fbq(\"dataProcessingOptions\", [\"LDU\"]);\n window.fbq(\"trackSingleCustom\", \"516838862425328\", \"All Video Starts\");\n window.fbq(\"trackSingleCustom\", \"516838862425328\", lengthFormat === \"long-form\"\n ? \"Long-Form Video Starts\"\n : \"Short-Form Starts\");\n};\n/**\n * ### formatPathString\n * takes in a string containing bracket notation (ex: foo['bar']) to use dot notation\n * (ex: foo.bar). This is useful for functions that need to set or get a deeply nested property.\n * @param str - the string to be converted.\n */\nexport var formatPathString = function (str) {\n return str\n .replace(/\\[(\\w+)\\]/g, \".$1\") // convert indices to properties\n .replace(/^\\./, \"\");\n}; // strip a leading dot\n/**\n * ### getObjectPropertyByStringPath\n * safely returns the value of a property at a deeply-nested address. If the value doesn't exist,\n * undefined is returned.\n * @param obj - the object that contains the deeply nested property.\n * @param str - the path where the property is located within the object.\n */\nexport var getObjectPropertyByStringPath = function (obj, str) {\n var addresses = str.split(\".\");\n var node = obj;\n for (var i = 0, n = addresses.length; i < n; ++i) {\n var address = addresses[i];\n if (typeof node === \"object\" && node.hasOwnProperty(address))\n node = node[address];\n else\n return undefined;\n }\n return node;\n};\n/**\n * ### setPropertyAtStringPath\n * set the value of a property at a given property path.\n * @param obj - the object on which the path will be set.\n * @param pathString - the path where the value will be set.\n * @param value - the value that the path will be set to.\n */\nexport var setPropertyAtStringPath = function (obj, pathString, value) {\n var path = pathString.split(\".\");\n var i;\n for (i = 0; i < path.length - 1; i++)\n obj = obj[path[i]];\n obj[path[i]] = value;\n};\n/**\n * ### deeplySetProperty\n * local implementation of lodash's _.set method. Safely sets a property on a given object at a\n * given path with a given value. If the property path doesn't exist, it's created on the object.\n * @param obj - the object where the property will be set.\n * @param pathString - the path where the property is located.\n * @param value - the value that the property will be set to.\n */\nexport function deeplySetProperty(obj, pathString, value) {\n var e_1, _a;\n var addresses = formatPathString(pathString).split(\".\");\n var concatenatedAddress = \"\";\n try {\n for (var _b = __values(addresses.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), index = _d[0], address = _d[1];\n var isLastAddress = index === addresses.length - 1;\n var collectionType = typeof address === \"number\" ? [] : {};\n concatenatedAddress += concatenatedAddress.length ? \".\" + address : address;\n if (isLastAddress ||\n !getObjectPropertyByStringPath(obj, concatenatedAddress)) {\n setPropertyAtStringPath(obj, concatenatedAddress, isLastAddress ? value : collectionType);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n// TODO: remove once Tealium/Adobe analytics disabled\nexport var getAccountAnalyticsEvents = function (_a) {\n var _b;\n var _c = _a.foxProfileState, foxProfileState = _c === void 0 ? noop : _c, profileId = _a.profileId;\n var tealiumEvents = getTealiumAccountEvents({ profileId: profileId });\n return _b = {},\n _b[AUTHENTICATION_STARTED] = function () {\n var _a;\n var params = Object.entries((_a = window.utag_data) !== null && _a !== void 0 ? _a : {}).reduce(function (newObj, _a) {\n var _b;\n var _c = __read(_a, 2), key = _c[0], value = _c[1];\n return [\n \"page_activation_code\",\n \"page_profile_activation_method\",\n \"page_start_source\",\n ].includes(key)\n ? __assign(__assign({}, newObj), (_b = {}, _b[key] = value, _b)) : newObj;\n }, {});\n executeEvent({\n eventObj: tealiumEvents,\n params: params,\n event: AUTHENTICATION_STARTED,\n });\n },\n _b[ONBOARDING_START] = function (_a) {\n var utagAccountSource = _a.utagAccountSource;\n return executeEvent({\n eventObj: tealiumEvents,\n params: { utagAccountSource: utagAccountSource },\n event: ONBOARDING_START,\n });\n },\n _b[ON_FAVORITE] = function (_a) {\n var seriesId = _a.seriesId, location = _a.location;\n return executeEvent({\n eventObj: tealiumEvents,\n event: ON_FAVORITE,\n params: { seriesId: seriesId, location: location },\n });\n },\n _b[ON_UNFAVORITE] = function (_a) {\n var seriesId = _a.seriesId, location = _a.location;\n return executeEvent({\n eventObj: tealiumEvents,\n event: ON_UNFAVORITE,\n params: { seriesId: seriesId, location: location },\n });\n },\n _b[PERKS_PRESENTED] = function (_a) {\n var utagAccountSource = _a.utagAccountSource;\n return executeEvent({\n eventObj: tealiumEvents,\n event: PERKS_PRESENTED,\n params: { utagAccountSource: utagAccountSource },\n });\n },\n _b[SIGN_IN_COMPLETED] = function (_a) {\n var utagAccountSource = _a.utagAccountSource;\n executeEvent({\n eventObj: tealiumEvents,\n params: { utagAccountSource: utagAccountSource },\n event: SIGN_IN_COMPLETED,\n });\n foxProfileState(FP_SIGN_IN_COMPLETED);\n },\n _b[SIGN_IN_ERROR] = function (_a) {\n var utagAccountSource = _a.utagAccountSource;\n return executeEvent({\n eventObj: tealiumEvents,\n event: SIGN_IN_ERROR,\n params: { utagAccountSource: utagAccountSource },\n });\n },\n _b[SIGN_IN_FORGOT_PASSWORD_STARTED] = function (_a) {\n var utagAccountSource = _a.utagAccountSource;\n return executeEvent({\n eventObj: tealiumEvents,\n event: SIGN_IN_FORGOT_PASSWORD_STARTED,\n params: { utagAccountSource: utagAccountSource },\n });\n },\n _b[SIGN_IN_INCOMPLETE] = function (_a) {\n var utagAccountSource = _a.utagAccountSource;\n return executeEvent({\n eventObj: tealiumEvents,\n event: SIGN_IN_INCOMPLETE,\n params: { utagAccountSource: utagAccountSource },\n });\n },\n _b[SIGN_IN_STARTED] = function (_a) {\n var utagAccountSource = _a.utagAccountSource, onboardingAction = _a.onboardingAction;\n var event = SIGN_IN_STARTED;\n executeEvent({\n eventObj: tealiumEvents,\n params: { utagAccountSource: utagAccountSource, onboardingAction: onboardingAction },\n event: event,\n });\n foxProfileState(FP_SIGN_IN_ATTEMPTED);\n },\n _b[SIGN_OUT_COMPLETED] = function (_a) {\n var cb = _a.cb;\n var event = SIGN_OUT_COMPLETED;\n executeEvent({ eventObj: tealiumEvents, event: event });\n foxProfileState(FP_SIGNED_OUT);\n },\n _b[SIGN_OUT_STARTED] = function () {\n var event = SIGN_OUT_STARTED;\n executeEvent({ eventObj: tealiumEvents, event: event });\n foxProfileState(FP_SIGN_OUT_ATTEMPTED);\n },\n _b[SIGN_UP_COMPLETED] = function (_a) {\n var newsLetter = _a.newsLetter, utagAccountSource = _a.utagAccountSource;\n executeEvent({\n eventObj: tealiumEvents,\n event: SIGN_UP_COMPLETED,\n params: { newsLetter: newsLetter, utagAccountSource: utagAccountSource },\n });\n foxProfileState(FP_SIGN_UP_COMPLETED);\n },\n _b[SIGN_UP_ERROR] = function (_a) {\n var utagAccountSource = _a.utagAccountSource;\n return executeEvent({\n eventObj: tealiumEvents,\n event: SIGN_UP_ERROR,\n params: { utagAccountSource: utagAccountSource },\n });\n },\n _b[SIGN_UP_INCOMPLETE] = function (_a) {\n var utagAccountSource = _a.utagAccountSource;\n return executeEvent({\n eventObj: tealiumEvents,\n event: SIGN_UP_INCOMPLETE,\n params: { utagAccountSource: utagAccountSource },\n });\n },\n _b[SIGN_UP_STARTED] = function (_a) {\n var utagAccountSource = _a.utagAccountSource, onboardingAction = _a.onboardingAction;\n var event = SIGN_UP_STARTED;\n executeEvent({\n eventObj: tealiumEvents,\n params: { utagAccountSource: utagAccountSource, onboardingAction: onboardingAction },\n event: event,\n });\n foxProfileState(FP_SIGN_UP_ATTEMPTED);\n },\n _b;\n};\n/**\n * ### recursiveMerge\n * takes in any number of objects as arguments and recursively merges them, similar to lodash's\n * _.merge\n * @param objects - any number of objects\n */\nexport function recursiveMerge() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n function coerceToNumber(key) {\n return isNaN(+key) ? key : +key;\n }\n function byMerger(newObj, obj) {\n if (obj === void 0) { obj = {}; }\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var value = obj[key];\n var typeSafeKey = coerceToNumber(key);\n if (newObj[typeSafeKey] !== null || newObj[typeSafeKey] !== undefined) {\n if (typeof newObj[typeSafeKey] === \"object\" &&\n typeof value === \"object\" &&\n Object.keys(newObj[typeSafeKey]).length) {\n newObj[typeSafeKey] = byMerger(Array.isArray(newObj[typeSafeKey])\n ? __spreadArray([], __read(newObj[typeSafeKey])) : __assign({}, newObj[typeSafeKey]), Array.isArray(value) ? __spreadArray([], __read(value)) : __assign({}, value));\n }\n else {\n newObj[typeSafeKey] = value;\n }\n }\n else {\n newObj[typeSafeKey] = value;\n }\n }\n }\n return newObj;\n }\n /**\n * It should have returned Object rather than AnyObject.\n */\n return objects.reduce(byMerger, {});\n}\n// TODO: possibly refactor so that this only gets used during second screen activation flow\nexport var getActivationProps = function () {\n var _a, _b, _c;\n var pageActivationCode = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getQueryParameter(\"code\");\n var anonymousId = pageActivationCode\n ? window.DataLayer.getCookie({ name: SECOND_SCREEN_ANONYMOUS_ID })\n : \"\";\n var activationProps = cleanObject({\n page_profile_activation_method: pageActivationCode && \"2nd screen\",\n page_activation_code: pageActivationCode,\n page_start_source: getSegmentPageStartSource(),\n });\n if (pageActivationCode && !((_b = window.utag_data) === null || _b === void 0 ? void 0 : _b.page_activation_code))\n deeplySetProperty(window, \"utag_data\", recursiveMerge((_c = window.utag_data) !== null && _c !== void 0 ? _c : {}, {\n page_profile_activation_method: \"no activation method\",\n page_activation_code: \"no activation code\",\n page_start_source: \"no start source\",\n }, activationProps, { last_anonymous_profile_id: anonymousId }));\n return activationProps;\n};\n/**\n * ### getAdjacentCollectionAbove\n * gets the heading of the collection above the currently activated collection.\n * @param panels - all collections\n * @param index - vertical index (starting from 1) of the currently activated collection\n */\nexport var getAdjacentCollectionAbove = function (panels, index) { var _a, _b, _c; return (_c = (_b = (_a = panels.member) === null || _a === void 0 ? void 0 : _a[index - 1]) === null || _b === void 0 ? void 0 : _b.headline) !== null && _c !== void 0 ? _c : \"\"; };\n/**\n * ### getCollectionCount\n * return a number representing the total collections on the screen that the user will be able to\n * see.\n * @param panels - all collections\n * @param hiddenPanels - array of panel IDs that were programmatically hidden in the frontend.\n */\nexport var getCollectionCount = function (panels, hiddenPanels) {\n if (panels === void 0) { panels = {}; }\n if (hiddenPanels === void 0) { hiddenPanels = []; }\n return getVisibleCollections(panels, hiddenPanels).length;\n};\n/**\n * ### getCollectionPosition\n * determines the index of a collection based on its headline\n * @param panels - all collections\n * @param index - the map index of the collection. This may or may not be the index we need since\n * there may be hidden collections that we need to take into account.\n * @param headline - the headline of the collection for which we need to find the index.\n * @param hiddenPanels - an array of panel Ids that were programmatically hidden in the frontend.\n */\nexport var getCollectionPosition = function (panels, index, headline, hiddenPanels) {\n if (panels === void 0) { panels = {}; }\n if (index === void 0) { index = 0; }\n if (headline === void 0) { headline = \"\"; }\n if (hiddenPanels === void 0) { hiddenPanels = []; }\n var collections = getVisibleCollections(panels, hiddenPanels);\n return collections.length\n ? collections.findIndex(function (panel) { return panel.headline === headline; }) + 1\n : index + 1;\n};\n/**\n * ### getFavoritesListString\n * returns a concatenated string of all favorites added by the user.\n * @param favorites - an array of favorites object data.\n */\nexport var getFavoritesListString = function (favorites) {\n if (favorites === void 0) { favorites = []; }\n if (favorites.length) {\n return favorites.reduce(function (str, favorite, idx) {\n var _a = favorite.favoriteID, favoriteID = _a === void 0 ? \"\" : _a, _b = favorite.favoriteType, favoriteType = _b === void 0 ? \"\" : _b;\n return \"\" + str + (idx > 0 ? \",\" : \"\") + (favoriteType ? favoriteType.toLowerCase() + \":\" : \"\") + favoriteID.split(\"-\").join(\" \");\n }, \"\");\n }\n return \"\";\n};\n/**\n * ### getFavoritesProps\n * returns an array with two items: favorites props (index 0), and personalities props (index 1)\n * @param favorites - array of favorites objects\n */\nexport var getFavoritesProps = function (favorites) {\n var _a;\n if (favorites === void 0) { favorites = []; }\n function byPartition(favorites, favorite) {\n var _a = __read(favorites, 2), favs = _a[0], personalities = _a[1];\n var favoriteType = favorite.favoriteType;\n if (favoriteType === FAVORITES_TYPE_PERSONALITY)\n return [favs, __spreadArray(__spreadArray([], __read(personalities)), [favorite])];\n return [__spreadArray(__spreadArray([], __read(favs)), [favorite]), personalities];\n }\n var _b = __read((_a = favorites === null || favorites === void 0 ? void 0 : favorites.reduce(byPartition, [[], []])) !== null && _a !== void 0 ? _a : [\n [],\n [],\n ], 2), favs = _b[0], personalities = _b[1];\n return cleanObject({\n favorites_personalities_list: getPersonalitiesListString(personalities),\n favorites_personalities_length: personalities.length,\n favorites_content_list: getFavoritesListString(favs),\n favorites_content_length: favs.length,\n });\n};\nexport function getPageLoginState(account) {\n var _a;\n return (account !== null && account !== void 0 ? account : (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getAccount()) ? LOGGED_IN : LOGGED_OUT;\n}\nexport var getPersonalitiesListString = function (favorites) {\n if (favorites === void 0) { favorites = []; }\n return favorites.reduce(function (str, fav, idx) { return \"\" + str + (idx > 0 ? \",\" : \"\") + fav.favoriteID; }, \"\");\n};\nexport var getPreviewPassAnalyticsEvents = function (_a) {\n var _b;\n var profileId = _a.profileId, previewPassLength = _a.previewPassLength;\n var tealiumEvents = getTealiumPreviewPassEvents({ profileId: profileId });\n return _b = {},\n _b[PREVIEW_PASS_EXPIRED] = function () {\n var props = {\n method: \"preview pass expiration\",\n video_player_state: SegmentPlayerStates.PAUSE,\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEventStrings.videoPlaybackInterrupted,\n props: props,\n });\n executeEvent({\n eventObj: tealiumEvents,\n event: PREVIEW_PASS_EXPIRED,\n params: { previewPassLength: previewPassLength },\n });\n },\n _b[PREVIEW_PASS_STARTED] = function () {\n executeEvent({\n eventObj: tealiumEvents,\n event: PREVIEW_PASS_STARTED,\n params: { previewPassLength: previewPassLength },\n });\n },\n _b;\n};\nexport var getRecommendationId = function (recIdData) { var _a; return (_a = recIdData === null || recIdData === void 0 ? void 0 : recIdData.recommendationId) !== null && _a !== void 0 ? _a : null; };\nexport var getRecommendationIdDataForItem = function (videoObject, index) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n if (index === void 0) { index = null; }\n if (index !== null) {\n return {\n showCode: (_c = (_b = (_a = videoObject.member) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b.showCode) !== null && _c !== void 0 ? _c : null,\n recommendationId: (_h = (_g = (_f = (_e = (_d = videoObject.member) === null || _d === void 0 ? void 0 : _d[index]) === null || _e === void 0 ? void 0 : _e.trackingData) === null || _f === void 0 ? void 0 : _f.properties) === null || _g === void 0 ? void 0 : _g.recommendationId) !== null && _h !== void 0 ? _h : null,\n };\n }\n return {\n showCode: (_j = videoObject.showCode) !== null && _j !== void 0 ? _j : null,\n recommendationId: (_m = (_l = (_k = videoObject.trackingData) === null || _k === void 0 ? void 0 : _k.properties) === null || _l === void 0 ? void 0 : _l.recommendationId) !== null && _m !== void 0 ? _m : null,\n };\n};\nexport var getTimePartingInfo = function () {\n var date = new Date();\n var days = [\n \"sunday\",\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n ];\n var hour = date.getUTCHours();\n var minute = date.getUTCMinutes();\n return {\n page_timePartingDay: days[date.getUTCDay()],\n page_timePartingHour: hour + (minute >= 30 ? \":30\" : \":00\"),\n };\n};\nexport var getVisibleCollections = function (panels, hiddenPanels) {\n if (panels === void 0) { panels = {}; }\n if (hiddenPanels === void 0) { hiddenPanels = []; }\n var panelTypes = [\n \"categorylist\",\n \"content\",\n \"playerBanner\",\n \"shows\",\n \"videos\",\n \"trending\",\n ];\n var hiddenPanelsArr = Array.from(hiddenPanels);\n if (!panels.member)\n return [];\n return panels.member.filter(function (item) {\n if (!Object.keys(item !== null && item !== void 0 ? item : {}).length)\n return false;\n var _a = item.id, id = _a === void 0 ? \"\" : _a, _b = item.collectionCTA, collectionCTA = _b === void 0 ? \"\" : _b, _c = item.collectionType, collectionType = _c === void 0 ? \"\" : _c, _d = item.panelType, panelType = _d === void 0 ? \"\" : _d;\n return ((hiddenPanelsArr.indexOf(id) === -1 &&\n panelTypes.indexOf(panelType) !== -1) ||\n collectionCTA ||\n collectionType === \"genre\");\n });\n};\n// TODO: move to OptimizelyHelper if it gets ported to delta-web-analytics\nfunction handleOptimizelyAnalytics(_a) {\n var _b;\n var event = _a.event, payload = _a.payload;\n var Optimizely = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getOptimizely();\n if (Optimizely)\n Optimizely.push({\n type: \"event\",\n eventName: event,\n tags: payload,\n });\n}\n/**\n * ### handleVendorAnalytics\n * handles any analytics-related event emissions for the given vendor. This function is called\n * internally within handleAnalytics.\n * @param callback - mainly used by segment to execute code after the event is processed.\n * @param event - string name of the event.\n * @param payload - object of properties for the event.\n * @param tealiumPayload - object of properties for the Tealium event.\n * @param vendor - string name of the analytics vendor the event belongs to.\n */\nfunction handleVendorAnalytics(_a) {\n var _b = _a.callback, callback = _b === void 0 ? noop : _b, event = _a.event, payload = _a.payload, tealiumPayload = _a.tealiumPayload, vendor = _a.vendor;\n switch (vendor) {\n case Vendors.OPTIMIZELY: {\n handleOptimizelyAnalytics({ event: event, payload: payload });\n break;\n }\n case Vendors.SEGMENT: {\n handleSegmentAnalytics({ callback: callback, event: event, payload: payload });\n break;\n }\n case Vendors.TEALIUM: {\n handleTealiumAnalytics({\n event: event,\n payload: tealiumPayload || payload || {},\n });\n break;\n }\n default:\n break;\n }\n}\n/**\n * ### handleAnalytics\n * handles any analytics-related event emissions.\n * @param events - a comma-separated list of AnalyticsEvent objects { callback, event, payload }.\n */\nexport var handleAnalytics = function () {\n var e_2, _a;\n var events = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n events[_i] = arguments[_i];\n }\n var _loop_1 = function (callback, event_1, payload, tealiumPayload) {\n EventVendorMap[event_1].forEach(function (vendor) {\n return handleVendorAnalytics({\n callback: callback,\n event: event_1,\n payload: payload,\n tealiumPayload: tealiumPayload,\n vendor: vendor,\n });\n });\n };\n try {\n for (var events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {\n var _b = events_1_1.value, callback = _b.callback, event_1 = _b.event, payload = _b.payload, tealiumPayload = _b.tealiumPayload;\n _loop_1(callback, event_1, payload, tealiumPayload);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n};\nexport var hasEntitlementOverride = function () {\n var _a, _b, _c, _d, _e;\n var entitlementCookieName = (_b = (_a = window.ExternalConfig) === null || _a === void 0 ? void 0 : _a.entitlementCookieName) !== null && _b !== void 0 ? _b : \"\";\n var entitlementCookie = (_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.getCookie({\n name: entitlementCookieName,\n });\n if (entitlementCookie) {\n var isNation = ((_e = (_d = window.ExternalConfig) === null || _d === void 0 ? void 0 : _d.analytics) === null || _e === void 0 ? void 0 : _e.app_name) === NATION;\n if (isNation)\n return \"foxnation\";\n }\n return false;\n};\nexport var isCollection = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === COLLECTION; };\nexport var isContinuousPlay = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === CONTINUOUS_PLAY; };\nexport var isDeeplink = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === DEEPLINK; };\nexport var isEndcard = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === ENDCARD; };\nexport var isFind = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === FIND; };\nexport var isHome = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === HOME; };\nexport var isLive = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === LIVE; };\nexport var isMovieDetail = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === MOVIE_DETAIL; };\nexport var isSearch = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === SEARCH; };\nexport var isSeriesDetail = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === SERIES_DETAIL; };\nexport var isVodSection = function (data, index) { var _a; return ((_a = data[index]) === null || _a === void 0 ? void 0 : _a.name) === VOD_SECTION; };\nexport var mountSessionCam = function () {\n if (!document.getElementById(\"sessioncam\")) {\n var code = \"\\n <!-- SessionCam Client Integration v6.0 -->\\n //<![CDATA[\\n var scRec=document.createElement('SCRIPT');\\n scRec.type='text/javascript';\\n scRec.src=\\\"//d2oh4tlt9mrke9.cloudfront.net/Record/js/sessioncam.recorder.js\\\"\\n document.getElementsByTagName('head')[0].appendChild(scRec);\\n //]]>\\n <!-- End SessionCam -->\\n \";\n var script = document.createElement(\"script\");\n script.id = \"sessioncam\";\n script.setAttribute(\"type\", \"text/javascript\");\n script.appendChild(document.createTextNode(code));\n document.body.appendChild(script);\n }\n};\nexport function omitProperties(obj, props) {\n function byOmission(acc, _a) {\n var _b;\n var _c = __read(_a, 2), key = _c[0], value = _c[1];\n if (props.includes(key))\n return acc;\n return __assign(__assign({}, acc), (_b = {}, _b[key] = value, _b));\n }\n return Object.entries(obj).reduce(byOmission, {});\n}\nexport function pushProfileIdsToGoogleDataLayer() {\n var _a, _b, _c;\n // TODO: maybe rename delta-web-analytics DataLayer to avoid confusion with google's dataLayer\n (_a = window.dataLayer) === null || _a === void 0 ? void 0 : _a.push({\n dcg_profile_id: (_c = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getAccount()) === null || _c === void 0 ? void 0 : _c.profileId,\n lastAnonymousProfileId: getLastAnonymousProfileId(),\n lastKnownProfileId: getLastKnownProfileId(),\n });\n}\nexport var resetPageReferrerData = function () { return setPageReferrerToStorage([]); };\nexport var setPageReferrerToStorage = function (data) {\n var _a;\n return (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.setSessionStorage({\n key: SESSION_STORAGE_REFERRER_TRACKING,\n value: JSON.stringify(data),\n });\n};\nexport var setPageReferrerData = function (_a) {\n var _b;\n var name = _a.name, data = _a.data;\n var sessionStorage = (_b = window.sessionStorage) === null || _b === void 0 ? void 0 : _b.length;\n if (sessionStorage) {\n var newValue = {\n name: name,\n data: data,\n };\n var values = getPageReferrerDataFromStorage();\n values.unshift(newValue);\n values.length = MAX_REFERRER_LENGTH;\n setPageReferrerToStorage(values);\n }\n};\n/* only for React class components */\nexport function setBlockReferrerAnalyticsTracking(value) {\n this.setState({ blockReferrerAnalyticsTracking: value });\n}\nexport function setDataLayerPageProps() {\n var _a, _b;\n if (((_a = window.utag_data) === null || _a === void 0 ? void 0 : _a.page_name) && window.utag_data.page_type)\n return;\n var storagePageProps = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getLocalStorage({\n key: PAGE_PROPS_STORAGE,\n });\n if (storagePageProps && window.utag_data) {\n var _c = __read(storagePageProps.split(\"/\"), 2), storagePageName = _c[0], storagePageType = _c[1];\n deeplySetProperty(window, \"utag_data.page_name\", storagePageName);\n deeplySetProperty(window, \"utag_data.page_type\", storagePageType);\n }\n}\n// TODO: look into moving into handleAnalytics\nexport var setOptimizelyCollectionViewedEvent = function (_a) {\n var anonymousId = _a.anonymousId, featuredTitle = _a.featuredTitle, panelId = _a.panelId, position = _a.position;\n if (!window.DataLayer)\n return;\n // string concat of the collection viewed at the given vertical position on the given url\n var viewId = window.location.href + \" \" + panelId + \" \" + position;\n if (!window.DataLayer.collectionsViewed) {\n var sessionStorage_1 = window.DataLayer.getSessionStorage({\n key: OPTIMIZELY_COLLECTION_VIEWED_SESSION_STORAGE,\n });\n window.DataLayer.collectionsViewed = new Set((sessionStorage_1 === null || sessionStorage_1 === void 0 ? void 0 : sessionStorage_1.split(\"::\")) || []);\n }\n if (window.DataLayer.collectionsViewed.has(viewId))\n return;\n window.DataLayer.collectionsViewed.add(viewId);\n window.DataLayer.setSessionStorage({\n key: OPTIMIZELY_COLLECTION_VIEWED_SESSION_STORAGE,\n value: __spreadArray([], __read(window.DataLayer.collectionsViewed)).join(\"::\"),\n });\n var tags = {\n page_collection_title: featuredTitle,\n page_collection_vertical_position: position,\n page_url: window.location.href,\n segment_anonymousId: anonymousId,\n };\n var Optimizely = window.DataLayer.getOptimizely();\n if (Object.keys(Optimizely !== null && Optimizely !== void 0 ? Optimizely : {}).length) {\n Optimizely.push({\n type: \"event\",\n eventName: OPTIMIZELY_COLLECTION_VIEWED,\n tags: tags,\n });\n Optimizely.push({\n type: \"page\",\n pageName: \"collection_viewed_\" + position,\n tags: __assign(__assign({}, tags), { page_title: document.title }),\n });\n }\n};\nexport function setPagePropsStorage() {\n var _a, _b, _c, _d, _e;\n var pageName = (_b = (_a = window.utag_data) === null || _a === void 0 ? void 0 : _a.page_name) !== null && _b !== void 0 ? _b : \"\";\n var pageType = (_d = (_c = window.utag_data) === null || _c === void 0 ? void 0 : _c.page_type) !== null && _d !== void 0 ? _d : \"\";\n (_e = window.DataLayer) === null || _e === void 0 ? void 0 : _e.setLocalStorage({\n key: PAGE_PROPS_STORAGE,\n value: pageName || pageType ? pageName + \"/\" + pageType : \"\",\n });\n}\n/* only for React class components */\nexport function trackPageReferrerAnalytics(_a) {\n var name = _a.name, data = _a.data, cancelSetTrackedAnalyticsReferrer = _a.cancelSetTrackedAnalyticsReferrer, ignoreTrackedAnalyticsReferrer = _a.ignoreTrackedAnalyticsReferrer;\n var trackedAnalyticsReferrer = this.state.trackedAnalyticsReferrer;\n var blockReferrerAnalyticsTracking = this.props.blockReferrerAnalyticsTracking;\n var isTracked = !ignoreTrackedAnalyticsReferrer && trackedAnalyticsReferrer;\n if (name && !isTracked && !blockReferrerAnalyticsTracking) {\n if (!cancelSetTrackedAnalyticsReferrer)\n this.setState({ trackedAnalyticsReferrer: true });\n setPageReferrerData({ name: name, data: data });\n }\n}\nexport function trackPageReferrerAnalyticsHook(_a) {\n var name = _a.name, data = _a.data, trackedAnalyticsReferrer = _a.trackedAnalyticsReferrer, blockReferrerAnalyticsTracking = _a.blockReferrerAnalyticsTracking, setTrackedAnalyticsReferrer = _a.setTrackedAnalyticsReferrer, cancelSetTrackedAnalyticsReferrer = _a.cancelSetTrackedAnalyticsReferrer, ignoreTrackedAnalyticsReferrer = _a.ignoreTrackedAnalyticsReferrer;\n var isTracked = !ignoreTrackedAnalyticsReferrer && trackedAnalyticsReferrer;\n if (setTrackedAnalyticsReferrer) {\n if (name && !isTracked && !blockReferrerAnalyticsTracking) {\n if (!cancelSetTrackedAnalyticsReferrer) {\n setTrackedAnalyticsReferrer(true);\n }\n setPageReferrerData({ name: name, data: data });\n }\n }\n}\nexport var updateNielsenOTTStatus = function (start, castData) {\n var _a, _b;\n if (castData === void 0) { castData = {}; }\n var OTTEnv = (_b = (_a = window.NOLBUNDLE) === null || _a === void 0 ? void 0 : _a[NielsenOTTEnv]) !== null && _b !== void 0 ? _b : null;\n if (!OTTEnv)\n return;\n var data = {};\n if (start) {\n var displayName = castData.displayName, sessionId = castData.sessionId, status_1 = castData.status;\n data = {\n ottStatus: \"1\",\n ottType: status_1,\n ottDevice: \"ottchromecast\",\n ottDeviceName: displayName,\n ottDeviceID: sessionId,\n ottDeviceManufacturer: \"google\",\n ottDeviceModel: \"ottChromeCast\",\n ottDeviceVersion: \"1.0.0\",\n };\n }\n else {\n data = { ottStatus: \"0\" };\n }\n OTTEnv.ggPM(\"updateOTT\", data);\n};\n","export default function createFunctionContext(initialValue) {\n var context = {\n value: initialValue,\n };\n var useProvider = createProviderHook(context);\n var useSelector = createSelectorHook(context);\n var useClear = createClearHook(context);\n return [useProvider, useSelector, useClear];\n}\nfunction createClearHook(context) {\n return function () {\n context.value = undefined;\n };\n}\nfunction createProviderHook(context) {\n return function (value) {\n context.value = value;\n };\n}\nfunction createSelectorHook(context) {\n return function (select) {\n if (select === void 0) { select = function (value) { return value; }; }\n return select(context.value);\n };\n}\n","var DataLayer = /** @class */ (function () {\n function DataLayer(options) {\n this.cookies = {};\n var cookieFactory = options.cookieFactory;\n Object.assign(this, options, this.getCookieFactoryLabels(cookieFactory));\n }\n DataLayer.prototype.setCookieFactory = function (name) {\n this.cookies[name] = this.cookieFactory(name);\n };\n DataLayer.prototype.getCookieFactoryLabels = function (cookieFactory) {\n var _this = this;\n if (!cookieFactory)\n return {};\n return {\n getCookie: function (_a) {\n var name = _a.name;\n if (!_this.cookies[name])\n _this.setCookieFactory(name);\n return _this.cookies[name].getValue();\n },\n removeCookie: function (_a) {\n var name = _a.key, options = _a.options;\n if (!_this.cookies[name])\n return;\n _this.cookies[name].removeValue({ options: options });\n },\n setCookie: function (_a) {\n var name = _a.name, value = _a.value, options = _a.options;\n if (!_this.cookies[name])\n _this.setCookieFactory(name);\n _this.cookies[name].setValue({ name: name, value: value, options: options });\n },\n };\n };\n return DataLayer;\n}());\nexport { DataLayer };\nvar mountDataLayer = function (options) { return new DataLayer(options); };\nexport default mountDataLayer;\n","import { Brands } from \"./Enums\";\nexport var getTags = function (params) {\n var _a;\n var livestream = params.livestream, longForm = params.longForm, network = params.network, podId = params.podId, seriesName = params.seriesName, video_content_length_format = params.video_content_length_format, releaseType = params.releaseType, videoId = params.videoId, sport = params.sport;\n var type = \"Video\"; // cannot determine if content is audio only or video right now\n return _a = {},\n _a[Brands.FOX] = {\n LONGFORM: {\n allow_custom_scripts: true,\n u8: network,\n u9: sport,\n u10: seriesName,\n u11: releaseType,\n u12: livestream,\n u13: video_content_length_format,\n u14: podId,\n send_to: GoogleAnalyticsId + \"/allvi0/alllo001+standard\",\n },\n LONGFORM_UNIQUE: {\n allow_custom_scripts: true,\n u8: network,\n u9: sport,\n u10: seriesName,\n u11: releaseType,\n u12: livestream,\n u13: video_content_length_format,\n u14: podId,\n send_to: GoogleAnalyticsId + \"/allvi0/alllo000+unique\",\n },\n SHORTFORM: {\n allow_custom_scripts: true,\n u8: network,\n u9: sport,\n u10: seriesName,\n u11: releaseType,\n u12: livestream,\n u13: video_content_length_format,\n u14: podId,\n send_to: GoogleAnalyticsId + \"/allvi0/allsh00+standard\",\n },\n VIDEO: {\n allow_custom_scripts: true,\n u8: network,\n u9: sport,\n u10: seriesName,\n u11: releaseType,\n u12: livestream,\n u13: video_content_length_format,\n u14: podId,\n send_to: GoogleAnalyticsId + \"/allvi0/allvi000+standard\",\n },\n VIDEO_UNIQUE: {\n allow_custom_scripts: true,\n u8: network,\n u9: sport,\n u10: seriesName,\n u11: releaseType,\n u12: livestream,\n u13: video_content_length_format,\n u14: podId,\n send_to: GoogleAnalyticsId + \"/allvi0/allvi001+unique\",\n },\n },\n _a[Brands.NATION] = {\n LONGFORM: {\n allow_custom_scripts: true,\n u2: document.title,\n u3: document.URL,\n u7: longForm,\n u8: videoId,\n u9: type,\n send_to: GoogleAnalyticsId + \"/cntst/conte002+standard\",\n },\n SHORTFORM: {\n allow_custom_scripts: true,\n u2: document.title,\n u3: document.URL,\n u7: longForm,\n u8: videoId,\n u9: type,\n send_to: GoogleAnalyticsId + \"/cntst/conte003+standard\",\n },\n VIDEO: {\n allow_custom_scripts: true,\n u2: document.title,\n u3: document.URL,\n u7: longForm,\n u8: videoId,\n u9: type,\n send_to: GoogleAnalyticsId + \"/cntst/conte001+standard\",\n },\n },\n _a[Brands.FOXNEWS] = {\n LONGFORM: {\n allow_custom_scripts: true,\n u2: document.title,\n u3: document.URL,\n u7: longForm,\n u8: videoId,\n u9: type,\n send_to: GoogleAnalyticsId + \"/cntst/conte002+standard\",\n },\n SHORTFORM: {\n allow_custom_scripts: true,\n u2: document.title,\n u3: document.URL,\n u7: longForm,\n u8: videoId,\n u9: type,\n send_to: GoogleAnalyticsId + \"/cntst/conte003+standard\",\n },\n VIDEO: {\n allow_custom_scripts: true,\n u2: document.title,\n u3: document.URL,\n u7: longForm,\n u8: videoId,\n u9: type,\n send_to: GoogleAnalyticsId + \"/cntst/conte001+standard\",\n },\n },\n _a;\n};\nexport var fireTag = function (data) {\n var gtag = window.gtag;\n if (gtag) {\n console.debug(\"Fire Floodlight Tag\", data);\n gtag(\"event\", \"conversion\", data);\n }\n};\nvar fireFloodlightEvent = function (params, isLongForm) {\n var _a, _b, _c, _d, _e;\n if (!FloodlightEnabled)\n return;\n var mediaInfo = params.mediaInfo, podId = params.podId;\n var _f = mediaInfo.id, id = _f === void 0 ? null : _f, _g = mediaInfo.network, network = _g === void 0 ? \"\" : _g, _h = mediaInfo.seriesName, seriesName = _h === void 0 ? \"\" : _h, _j = mediaInfo.sportTag, sportTag = _j === void 0 ? \"\" : _j, _k = mediaInfo.releaseType, releaseType = _k === void 0 ? \"\" : _k, trackingData = mediaInfo.trackingData;\n var programType = (_b = (_a = trackingData === null || trackingData === void 0 ? void 0 : trackingData.properties) === null || _a === void 0 ? void 0 : _a.programType) !== null && _b !== void 0 ? _b : \"\";\n var data = {\n livestream: releaseType === \"VOD\" ? \"false\" : \"true\",\n podId: podId,\n network: network,\n releaseType: releaseType,\n videoId: id,\n video_content_length_format: isLongForm ? \"long-form\" : \"short-form\",\n longForm: isLongForm ? \"yes\" : \"no\",\n seriesName: seriesName,\n sport: sportTag || programType,\n };\n var brand = (_e = (_d = (_c = window.ExternalConfig) === null || _c === void 0 ? void 0 : _c.brand) === null || _d === void 0 ? void 0 : _d.businessUnit) !== null && _e !== void 0 ? _e : \"fox\";\n var brandTags = getTags(data)[brand];\n switch (brand) {\n case Brands.FOX: {\n fireTag(brandTags.VIDEO);\n fireTag(brandTags.VIDEO_UNIQUE);\n if (isLongForm) {\n fireTag(brandTags.LONGFORM);\n fireTag(brandTags.LONGFORM_UNIQUE);\n }\n else {\n fireTag(brandTags.SHORTFORM);\n }\n break;\n }\n case Brands.NATION:\n case Brands.FOXNEWS: {\n fireTag(brandTags.VIDEO);\n if (isLongForm)\n fireTag(brandTags.LONGFORM);\n else\n fireTag(brandTags.SHORTFORM);\n break;\n }\n }\n};\nexport default fireFloodlightEvent;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { defaultGlobalPageProperties, defaultVideoProperties, } from \"./SegmentHelper\";\nimport { getPageLoginState, recursiveMerge } from \"./CommonHelper\";\nimport { NewRelicEvents } from \"./Enums\";\nexport var getDefaultEventProps = function () {\n var _a, _b, _c, _d, _e;\n var account = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getAccount();\n var anonymousAccount = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getAnonymousAccount();\n var pageLoginState = getPageLoginState(account);\n var mergedProps = recursiveMerge(defaultGlobalPageProperties, {\n authentication_status: !!account,\n dma: (account === null || account === void 0 ? void 0 : account.dma) || (anonymousAccount === null || anonymousAccount === void 0 ? void 0 : anonymousAccount.dma),\n event_type: \"app\",\n mvpd: (_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.getMVPD(),\n page_type: (_e = (_d = window.utag) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.page_type,\n page_login_state: pageLoginState,\n profile_id: (account === null || account === void 0 ? void 0 : account.profileId) || (anonymousAccount === null || anonymousAccount === void 0 ? void 0 : anonymousAccount.profileId),\n });\n return mergedProps;\n};\nvar LogReport = /** @class */ (function () {\n function LogReport(_a) {\n var datadogRum = _a.datadogRum;\n var trackingProps = getDefaultEventProps();\n datadogRum.setGlobalContext(trackingProps);\n this.datadogRum = datadogRum;\n }\n LogReport.prototype.reportError = function (error, props) {\n if (error === void 0) { error = {}; }\n if (props === void 0) { props = {}; }\n var customAttributes = __assign({ errorServerResponse: error.status }, props);\n this.datadogRum.addError(error, customAttributes);\n };\n LogReport.prototype.reportErrorInPlayer = function (error, props) {\n if (error === void 0) { error = {}; }\n if (props === void 0) { props = {}; }\n this.reportError(error, __assign(__assign({}, defaultVideoProperties), props));\n };\n LogReport.prototype.logEvent = function (event, props) {\n if (props === void 0) { props = {}; }\n var eventName = NewRelicEvents[event];\n this.datadogRum.addAction(eventName, props);\n };\n LogReport.prototype.logPlayerEvent = function (event, props) {\n if (props === void 0) { props = {}; }\n var playerProps = recursiveMerge(defaultVideoProperties, props);\n this.logEvent(event, playerProps);\n };\n return LogReport;\n}());\nexport default LogReport;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { getPageLoginState, getTimePartingInfo, omitProperties, recursiveMerge, } from \"./CommonHelper\";\nimport { defaultGlobalPageProperties as defaultSegmentGlobalPageProperties, defaultVideoProperties as defaultSegmentVideoProperties, getDeviceIdCookie as getSegmentDeviceIdCookie, getPageContentLevels as getSegmentPageContentLevels, } from \"./SegmentHelper\";\nimport { NewRelicErrors, NewRelicEvents } from \"./Enums\";\n/**\n * ### getDefaultEventProps\n * returns default props for New Relic events\n * @param {AnyObject} props - an object that will be recursively merged in with other default\n * properties\n */\nexport var getDefaultEventProps = function (props) {\n var _a, _b, _c, _d, _e;\n var account = (_a = window.DataLayer) === null || _a === void 0 ? void 0 : _a.getAccount();\n var anonymousAccount = (_b = window.DataLayer) === null || _b === void 0 ? void 0 : _b.getAnonymousAccount();\n var pageLoginState = getPageLoginState(account);\n var mergedProps = recursiveMerge(defaultSegmentGlobalPageProperties, props, __assign(__assign(__assign({}, getSegmentPageContentLevels(props)), getTimePartingInfo()), { authentication_status: !!account, device_id: getSegmentDeviceIdCookie(), dma: (account === null || account === void 0 ? void 0 : account.dma) || (anonymousAccount === null || anonymousAccount === void 0 ? void 0 : anonymousAccount.dma), event_type: \"app\", mvpd: (_c = window.DataLayer) === null || _c === void 0 ? void 0 : _c.getMVPD(), page_type: (_e = (_d = window.utag) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.page_type, page_login_state: pageLoginState, profile_id: (account === null || account === void 0 ? void 0 : account.profileId) || (anonymousAccount === null || anonymousAccount === void 0 ? void 0 : anonymousAccount.profileId) }));\n return mergedProps;\n};\n/**\n * ### getNewRelicPageName\n * returns a string representing the page name that the New Relic event occurred on\n * @param {Nullable<string>} pathname - nullable string representing the path name\n * @param {{\n showId: string,\n movieId: string,\n articleId: string,\n }} routeParams - object containing parameters that help indicate the current route\n */\nexport var getNewRelicPageName = function (pathname, routeParams) {\n var _a, _b;\n var path = pathname !== null && pathname !== void 0 ? pathname : \"\";\n if (path === \"/\" || path === \"/featured\")\n return \"Main - Home\";\n if (routeParams === null || routeParams === void 0 ? void 0 : routeParams.showId)\n return \"Detail\";\n if (routeParams === null || routeParams === void 0 ? void 0 : routeParams.movieId)\n return \"Detail\";\n if (routeParams === null || routeParams === void 0 ? void 0 : routeParams.articleId)\n return \"Article\";\n if (path.includes(\"/news/\"))\n return \"Main - News\";\n if (path.includes(\"/sports/\"))\n return \"Main - Sports\";\n if (path.includes(\"/entertainment/\"))\n return \"Main - Entertainment\";\n if (path.includes(\"/account/\"))\n return \"Main - Account\";\n if (path.includes(\"/live/\"))\n return \"EPG\";\n if (path.includes(\"/watch/\"))\n return \"VOD\";\n if (path.includes(\"/local/\"))\n return \"Main - Local\";\n if (path.includes(\"/shows/\"))\n return \"Main - Shows\";\n if (path.includes(\"/personalities/\"))\n return \"Main - Personalities\";\n if (path.includes(\"/listen/\"))\n return \"Main - Listen\";\n if (path.includes(\"/live-news/\"))\n return \"Main - Live News\";\n if (path.includes(\"/find/\"))\n return \"Search\";\n if (path.includes(\"/channel/tucker-carlson-channel/\"))\n return \"Main - Tucker Carlson\";\n if (path.includes(\"/channel/\")) {\n var channelName = ((_a = path === null || path === void 0 ? void 0 : path.split(\"/\")) === null || _a === void 0 ? void 0 : _a.filter(function (s) { return s; })[1]) || \"\";\n return \"Main - \" + ((_b = channelName === null || channelName === void 0 ? void 0 : channelName.charAt(0)) === null || _b === void 0 ? void 0 : _b.toUpperCase) + channelName.slice(1);\n }\n return \"Unknown Path\";\n};\n/**\n * ### newRelicError\n * sends a New Relic error using newrelic.addPageAction()\n * @param {Error} error - error object representing the error that occurred\n * @param {AnyObject} props - payload of properties to be sent to New Relic\n */\nexport var newRelicError = function (error, props) {\n if (error === void 0) { error = {}; }\n if (props === void 0) { props = {}; }\n var message = error.message, name = error.name, response = error.response, stack = error.stack, type = error.type;\n var pageName = props.pageName;\n var newrelic = window.newrelic;\n if (!newrelic)\n return;\n var errorName = NewRelicErrors[type || \"generalError\"];\n var trackingProps = omitProperties(getDefaultEventProps(props), [\n \"account\",\n ]);\n newrelic.addPageAction(errorName, __assign(__assign({}, trackingProps), { errorMessage: message || \"Unknown Error\", errorServerResponse: response || \"\", errorStack: stack || \"\", errorTitle: name || \"\", pageName: pageName }));\n};\n/**\n * ### newRelicEvent\n * sends a New Relic event using newrelic.addPageAction()\n * @param {string} event - name of the event\n * @param props - payload of properties to be sent to New Relic\n */\nexport var newRelicEvent = function (event, props) {\n if (props === void 0) { props = {}; }\n var newrelic = window.newrelic;\n if (!newrelic)\n return;\n var eventName = NewRelicEvents[event];\n var trackingProps = omitProperties(getDefaultEventProps(props), [\n \"account\",\n ]);\n newrelic.addPageAction(eventName, trackingProps);\n};\n/**\n * ### playerNewRelicError\n * sends a New Relic player error using newrelic.addPageAction()\n * @param {Error} error - error object representing the error that occurred\n * @param {AnyObject} props - payload of properties to be sent to New Relic\n */\nexport var playerNewRelicError = function (error, props) {\n if (props === void 0) { props = {}; }\n var playerProps = recursiveMerge(defaultSegmentVideoProperties, props);\n newRelicError(error, playerProps);\n};\n/**\n * ### playerNewRelicEvent\n * sends a New Relic player event using newrelic.addPageAction()\n * @param {string} event - name of the event\n * @param props - payload of properties to be sent to New Relic\n */\nexport var playerNewRelicEvent = function (event, props) {\n if (props === void 0) { props = {}; }\n var playerProps = recursiveMerge(defaultSegmentVideoProperties, props);\n newRelicEvent(event, playerProps);\n};\n","import {\n isAfter as _isAfter,\n isBefore as _isBefore,\n addDays as _addDays,\n addSeconds as _addSeconds,\n addMinutes as _addMinutes,\n addHours as _addHours,\n addYears as _addYears,\n isSameSecond as _isSameSecond,\n isSameDay as _isSameDay,\n isWithinRange as _isWithinRange,\n differenceInDays as _differenceInDays,\n differenceInMilliseconds as _differenceInMilliseconds,\n endOfDay as _endOfDay,\n format as _format,\n distanceInWordsStrict as _distanceInWordsStrict,\n getTime as _getTime,\n getMinutes as _getMinutes,\n getHours as _getHours,\n getDayOfYear as _getDayOfYear,\n parse as _parse,\n startOfHour as _startOfHour,\n startOfDay as _startOfDay,\n setMinutes as _setMinutes,\n setHours as _setHours,\n subMinutes as _subMinutes,\n subHours as _subHours,\n} from 'date-fns';\n\nexport const MILLISECONDS = 1000;\nexport const TIMEZONE_LA = 'America/Los_Angeles';\nexport const FORMAT_DISTANCE = 'FORMAT_DISTANCE';\nexport const FORMAT_ISO = 'ISO';\nexport const FORMAT_UNIX = 'UNIX';\nexport const FORMAT_UNIX_MS = 'UNIX_MS';\nexport const FORMAT_ISO_8601 = 'YYYY-MM-DDTHH:mm:ss.SSSZ';\nexport const FORMAT_ISO_8601_WITHOUT_MS = 'YYYY-MM-DDTHH:mm:ssZ';\nexport const FORMAT_TIME = 'h:mm A';\nexport const FORMAT_HOUR = 'hA';\nexport const FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const FORMAT_YEAR_MONTH_DAY_SHORT = 'YY/M/D';\nexport const FORMAT_WEEKDAY_MONTH_DAY = 'ddd, MMM D';\nexport const FORMAT_MONTH_DAY = 'MMM D';\nexport const FORMAT_MONTH_DAY_LONG = 'MMMM D';\nexport const FORMAT_DAY_OF_WEEK = 'dddd';\nexport const FORMAT_MINUTES_SECONDS = 'mm:ss';\nexport const FORMAT_MONTH_DAY_YEAR = 'M-D-YY';\nexport const FORMAT_MONTH_SLASH_DAY = 'M/D';\n\nexport const now = () => new Date();\n\nexport const midNightTonightTime = new Date(new Date().setHours(23, 59, 59)).getTime();\n\nexport const SEVEN_PM = '19:00:00';\nconst EIGHT_30_PM = '20:30:00';\n\nexport const msToDate = msValue => {\n const date = new Date(msValue);\n if (!isDate(date)) {\n console.log(`DatetimeHelper.msToDate not able to generate a date.`);\n return null;\n }\n return date;\n};\n\nconst isDate = value => value instanceof Date;\n\nexport const stringToDate = value => {\n const name = 'DateTimeHelper.stringToDate';\n if (!value) return null;\n if (isDate(value)) return value;\n\n // eslint-disable-next-line no-underscore-dangle\n if (value._isAMomentObject) {\n console.log(`${name} moment object sent.`);\n return value.toDate();\n }\n\n if (typeof value !== 'string') {\n const invalidType = `${name} value is not a string or a date, it's a ${typeof value}`;\n console.log(invalidType);\n }\n\n const date = parse(value);\n if (!isDate(date)) {\n console.log(`${name} not able to generate a date.`);\n return null;\n }\n\n return date;\n};\n\nexport const addDays = (date, days) => _addDays(date, days);\nexport const addSeconds = (date, seconds) => _addSeconds(date, seconds);\nexport const addMinutes = (date, minutes) => _addMinutes(date, minutes);\nexport const addHours = (date, hours) => _addHours(date, hours);\nexport const addYears = (date, years) => _addYears(date, years);\n\nexport const isSameSecond = (dateOne, dateTwo) => _isSameSecond(dateOne, dateTwo);\nexport const isSameDay = (dateOne, dateTwo) => _isSameDay(dateOne, dateTwo);\nexport const isBefore = (dateOne, dateTwo) => _isBefore(dateOne, dateTwo);\nexport const isAfter = (dateOne, dateTwo) => _isAfter(dateOne, dateTwo);\n\nexport const isBetween = (date, start, end) => start < end && _isWithinRange(date, start, end);\n\nexport const differenceInDays = (dateOne, dateTwo) => _differenceInDays(dateOne, dateTwo);\n\nexport const differenceInMilliseconds = (dateOne, dateTwo) =>\n _differenceInMilliseconds(dateOne, dateTwo);\n\nexport const differenceInMinutes = (dateOne, dateTwo) => {\n // note: we're not using date-fns's differenceInMinutes.\n // to get the same result as moment's.toMinutes(), we need to get the ms and manually calculate it.\n const diff = differenceInMilliseconds(dateOne, dateTwo);\n return Math.ceil(diff / 60 / 1000);\n};\n\nexport const differenceInSeconds = (dateOne, dateTwo) => {\n // note: we're not using date-fns's differenceInSeconds.\n // to get the same result as moment's.toMinutes(), we need to get the ms and manually calculate it.\n const diff = differenceInMilliseconds(dateOne, dateTwo);\n return Math.ceil(diff / 1000);\n};\n\nexport const endOfDay = date => _endOfDay(date);\n\nexport const getTimestamp = date => _getTime(date);\nexport const getDayOfYear = date => _getDayOfYear(date);\nexport const getMinutes = date => _getMinutes(date);\nexport const getHours = date => _getHours(date);\n\nexport const guessTZ = () => Intl.DateTimeFormat().resolvedOptions().timeZone;\n\nexport const parse = (date, format) => _parse(date, format);\n\nexport const parseTime = time => {\n if (!time || typeof time !== 'string' || time.indexOf(':') === -1) return 0;\n\n const [h, m, s] = time.split(':');\n const hours = h ? parseInt(h, 10) : 0;\n const minutes = m ? parseInt(m, 10) : 0;\n const seconds = s ? parseInt(s, 10) : 0;\n\n return { hours, minutes, seconds };\n};\n\nexport const parseTimeToSeconds = time => {\n const { hours, minutes, seconds } = parseTime(time);\n return hours * 60 * 60 + minutes * 60 + seconds;\n};\nexport const parseTimeToHours = time => parseTimeToSeconds(time) / 60 / 60;\n\nexport const startOfHour = date => _startOfHour(date);\nexport const startOfDay = date => _startOfDay(date);\n\nexport const setMinutes = (date, minutes) => _setMinutes(date, minutes);\nexport const setHours = (date, hours) => _setHours(date, hours);\n\nexport const setTime = (date, time) => {\n const year = date.getFullYear();\n const month = formatToTwoDigitsString(date.getMonth() + 1);\n const day = formatToTwoDigitsString(date.getDate());\n\n const { hours, minutes, seconds } = parseTime(time);\n const h = formatToTwoDigitsString(hours);\n const m = formatToTwoDigitsString(minutes);\n const s = formatToTwoDigitsString(seconds);\n\n const dateString = `${year}-${month}-${day}T${h}:${m}:${s}Z`;\n\n const result = new Date(dateString);\n return result;\n};\n\nexport const setDateAndTime = (date, time) => {\n const year = date.getFullYear();\n const month = formatToTwoDigitsString(date.getMonth() + 1);\n const day = formatToTwoDigitsString(date.getDate());\n const dateString = `${month}/${day}/${year} ${time}`;\n\n return new Date(dateString);\n};\n\nexport const getMonthAndDay = date => format(date, FORMAT_MONTH_DAY);\n\nexport const tonight7PMTime = selectedDate =>\n new Date(`${setDateAndTime(selectedDate, SEVEN_PM)}`).getTime();\n\nexport const tonight830PMTime = selectedDate =>\n new Date(`${setDateAndTime(selectedDate, EIGHT_30_PM)}`).getTime();\n\nconst calculateTimeDistance = date => {\n const dateDiff = _distanceInWordsStrict(new Date(), date, { addSuffix: true });\n\n const days =\n dateDiff.includes('day') && parseInt(dateDiff.match(/[1-9]|[12]\\d|3[01]/g).join(''), 10);\n\n if (dateDiff.includes('month') || dateDiff.includes('year') || (days && days > 7)) {\n return format(date, 'M/D/YY');\n }\n\n const mapObj = {\n seconds: 's',\n second: 's',\n minute: 'm',\n minutes: 'm',\n day: 'd',\n days: 'd',\n hours: 'h',\n hour: 'h',\n };\n const diff = dateDiff.replace(\n /seconds|second|minutes|minute|hours|hour|days|day|month|year/gi,\n matched => mapObj[matched],\n );\n return diff.replace(/\\s/, '');\n};\n\nexport const subMinutes = (date, minutes) => _subMinutes(date, minutes);\nexport const subHours = (date, hours) => _subHours(date, hours);\n\nexport const format = (date, format) => {\n if (format === FORMAT_ISO) return date.toISOString();\n if (format === FORMAT_UNIX) return Math.floor(date.getTime() / 1000);\n if (format === FORMAT_UNIX_MS) return date.getTime();\n if (format === FORMAT_DISTANCE) return calculateTimeDistance(date);\n return _format(date, format);\n};\n\nexport const secondsToHoursMinutesSeconds = durationInSeconds => {\n const hours = Math.floor(Number(durationInSeconds) / 3600);\n const minutes = Math.floor((Number(durationInSeconds) % 3600) / 60);\n const seconds = Math.floor((Number(durationInSeconds) % 3600) % 60);\n return { hours, minutes, seconds };\n};\n\n// https://philna.sh/blog/2021/02/22/display-dates-in-your-users-time-zone/\nexport const getTimeZoneAbbr = () => {\n const { locale, timeZone } = Intl.DateTimeFormat().resolvedOptions();\n return Intl.DateTimeFormat(locale, { timeZoneName: 'short', timeZone })\n .formatToParts()\n .find(part => part.type === 'timeZoneName')\n .value.replace(/[^a-zA-Z]+/g, '');\n};\n\nexport const formatToAPIRange = (dateOne, dateTwo) => {\n const start = format(dateOne, FORMAT_ISO);\n const end = format(dateTwo, FORMAT_ISO);\n const range = `${start}..${end}`;\n return range;\n};\nexport const formatToTwoDigitsString = string => `0${string}`.substr(-2);\nexport const formatToTwoDigitsTimezone = tz => {\n // this is to format the 3 or 4 digit abbreviation into\n // 2 or 3 digits as we want to display it.\n // http://www.timetemperature.com/abbreviations/united_states_time_zone_abbreviations.shtml\n const abbrs = {\n AST: 'AT', // ATLANTIC STANDARD TIME\n EST: 'ET', // EASTERN STANDARD TIME\n EDT: 'ET', // EASTERN DAYLIGHT TIME\n CST: 'CT', // CENTRAL STANDARD TIME\n CDT: 'CT', // CENTRAL DAYLIGHT TIME\n MST: 'MT', // MOUNTAIN STANDARD TIME\n MDT: 'MT', // MOUNTAIN DAYLIGHT TIME\n PST: 'PT', // PACIFIC STANDARD TIME\n PDT: 'PT', // PACIFIC DAYLIGHT TIME\n AKST: 'AKT', // ALASKA TIME\n AKDT: 'AKT', // ALASKA DAYLIGHT TIME\n HST: 'HT', // HAWAII STANDARD TIME\n HAST: 'HT', // HAWAII-ALEUTIAN STANDARD TIME\n HADT: 'HT', // HAWAII-ALEUTIAN DAYLIGHT TIME\n SST: 'ST', // SAMOA STANDARD TIME\n SDT: 'ST', // SAMOA DAYLIGHT TIME\n CHST: 'CHT', // CHAMORRO STANDARD TIME\n };\n\n // eslint-disable-next-line no-restricted-globals\n const fallback = !abbrs[tz] && isNaN(tz) ? tz : null;\n return abbrs[tz] || fallback;\n};\n\nexport const getPrimetimeDateRange = () => {\n const daysToAdd = 7;\n const start = startOfDay(now());\n const end = startOfDay(addDays(now(), daysToAdd));\n return formatToAPIRange(start, end);\n};\n\nexport const setTimeForDateAtATimezone = (date, time, timezone) => {\n if (!isDate(date)) {\n console.log('DateTimeHelper.setTimeForDateAtATimezone date is not a valid date.');\n return null;\n }\n\n const offsetInHours = date.getTimezoneOffset() / 60;\n const newDate = setTime(date, time);\n\n return new Date(newDate.setHours(newDate.getHours() + offsetInHours * -1));\n};\n","import axios from 'axios';\nimport _ from 'lodash';\nimport { FAVORITES_TYPE_PERSONALITY } from '@foxcorp/delta-web-analytics';\nimport isEmail from 'validator/lib/isEmail';\nimport cookie from 'react-cookie';\nimport { v1Override } from 'helpers/ContentHelper';\nimport { getCookie, removeCookie } from 'helpers/Storage';\nimport { format, FORMAT_ISO, stringToDate, startOfDay } from 'helpers/DateTimeHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\n\nconst COOKIE_NAME = '__Secure-FOXACCT';\nconst ANONYMOUS_COOKIE_NAME = 'FOXANONACCT';\nconst DEFAULT_SIGNUP_BIRTHDATE_PLACEHOLDER = 'Birthdate';\nexport const DEFAULT_SIGNUP_STATE = {\n signupFirstName: '',\n signupLastName: '',\n signupEmail: '',\n signupPassword: '',\n signupFirstNameError: null,\n signupLastNameError: null,\n signupFullNameError: null,\n signupPasswordError: null,\n signupTermsError: null,\n signupEmailError: null,\n signupEmailExistsError: null,\n signupSocialEmailExistsError: null,\n signupGenericError: null,\n facebookGenericError: null,\n signupBirthdate: null,\n signupBirthdateIsoFormat: null,\n signupGenderDropdownOpen: false,\n signupGender: null,\n signupGenderVisualName: null,\n signupGenderError: null,\n signupBirthdateError: null,\n signupBirthdatePlaceholder: DEFAULT_SIGNUP_BIRTHDATE_PLACEHOLDER,\n signupAgeError: null,\n signupBirthdateInvalidError: null,\n};\nexport const DEFAULT_SIGNIN_STATE = {\n signinEmail: '',\n signinPassword: '',\n signinGenericError: null,\n signinEmailError: null,\n signinPasswordError: null,\n signinMigrationDropdownOpen: false,\n};\nconst DEFAULT_LOGOUT_STATE = {\n logoutInProcess: false,\n logoutTimedOut: false,\n};\nconst DEFAULT_EDIT_STATE = {\n editEmail: '',\n editEmailError: null,\n editFirstName: '',\n editFirstNameError: false,\n editGenericError: null,\n editLastName: '',\n editLastNameError: false,\n};\nexport const DEFAULT_CHANGE_PASSWORD_STATE = {\n changePasswordPassword: '',\n changePasswordNewPassword: '',\n changePasswordShowPassword: false,\n changePasswordShowNewPassword: false,\n changePasswordGenericError: null,\n changePasswordPasswordError: null,\n changePasswordNewPasswordError: null,\n};\n\nexport const DEFAULT_CREATE_PASSWORD_STATE = {\n createPasswordNewPassword: '',\n createPasswordShowNewPassword: false,\n createPasswordGenericError: null,\n createPasswordNewPasswordError: null,\n};\n\nexport const DEFAULT_LINK_ACCOUNT_STATE = {\n createPasswordNewPassword: '',\n createPasswordShowNewPassword: false,\n createPasswordGenericError: null,\n createPasswordNewPasswordError: null,\n};\n\nconst DEFAULT_MANAGE_FAVORITES_STATE = {};\nconst DEFAULT_FORGOT_PASSWORD_STATE = {\n forgotPasswordError: null,\n genericForgotPasswordError: null,\n};\nconst DEFAULT_FACEBOOK_LINKING_STATE = {\n facebookLinkingGenericError: null,\n facebookLinkingPasswordError: null,\n facebookLinkingEmailError: null,\n facebookLinkingEmail: '',\n facebookLinkingPassword: '',\n facebookLinkingShowPassword: false,\n};\nexport const DEFAULT_FACEBOOK_PASSWORD_LINKING_STATE = {\n facebookPasswordLinkShowPassword: false,\n facebookPasswordLinkPassword: '',\n facebookPasswordLinkGenericError: null,\n facebookPasswordLinkPasswordError: null,\n};\nexport const DEFAULT_PARENTAL_CONTROLS_STATE = {\n parentalControlsPasswordVerified: false,\n parentalControlsPassword: '',\n parentalControlsShowPassword: false,\n parentalControlsPasswordError: null,\n parentalControlsNewTvRatingIndex: null,\n parentalControlsNewMovieRatingIndex: null,\n};\nexport const DEFAULT_OVERLAY_STATE = {\n showPerks: false,\n showSignin: false,\n showSignup: false,\n showSignupSuccess: false,\n showAccountMain: false,\n showForgotPassword: false,\n showForgotPasswordSuccess: false,\n showSignOut: false,\n showDeleteAccount: false,\n showEditProfile: false,\n showEditAccount: false,\n showChangePassword: false,\n showCreatePassword: false,\n showManageFavorites: false,\n showResetPassword: false,\n showResetPasswordSuccess: false,\n showForgotPasswordLanding: false,\n showFacebookLinking: false,\n showFacebookPasswordLink: false,\n showFacebookLoginPasswordLink: false,\n showLinkAccount: false,\n showParentalControls: false,\n entryOverlay: null,\n showFXPlus: false,\n};\nexport const DEFAULT_STATE = {\n ...DEFAULT_SIGNUP_STATE,\n ...DEFAULT_SIGNIN_STATE,\n ...DEFAULT_LOGOUT_STATE,\n ...DEFAULT_EDIT_STATE,\n ...DEFAULT_OVERLAY_STATE,\n ...DEFAULT_CHANGE_PASSWORD_STATE,\n ...DEFAULT_MANAGE_FAVORITES_STATE,\n ...DEFAULT_FORGOT_PASSWORD_STATE,\n ...DEFAULT_FACEBOOK_LINKING_STATE,\n ...DEFAULT_FACEBOOK_PASSWORD_LINKING_STATE,\n onCloseResetToBasePath: false,\n};\n\nconst getGenderOptions = language => {\n const {\n profileCreate_genderOptionFemale: optionFemale,\n profileCreate_genderOptionMale: optionMale,\n profileCreate_genderOptionOther: optionOther,\n } = language;\n return [\n {\n name: optionMale,\n value: 'm',\n },\n {\n name: optionFemale,\n value: 'f',\n },\n {\n name: optionOther,\n value: 'o',\n },\n ];\n};\n\nconst DEFAULT_ERROR_MESSAGE = 'An error has occurred';\nexport const passwordErrors = value => {\n if (!value) return 'You must provide a valid password';\n if (value.length < 6) return 'Password needs to be 6 or more characters long';\n return null;\n};\nexport const isValidPassword = value => !passwordErrors(value);\nexport const isValidEmail = value => !!(value && isEmail(value));\nexport const onEnterKeyPress = (e, action) => {\n if (e.key === 'Enter' && action) {\n action();\n }\n};\n\nexport function convertTimestamp(unixTimestamp) {\n if (!unixTimestamp) return null;\n return new Date(unixTimestamp);\n}\n\nfunction saveCookie(data, cookieName, secure) {\n const expires = convertTimestamp(_.get(data, 'tokenExpiration'));\n if (expires && !secure) return cookie.save(cookieName, data, { path: '/', expires });\n if (expires && secure)\n return cookie.save(cookieName, data, { path: '/', expires, secure: true, sameSite: true });\n return false;\n}\nexport function getAccountCookie() {\n return getCookie({ name: COOKIE_NAME });\n}\nexport function getAnonymousAccountCookie() {\n return getCookie({ name: ANONYMOUS_COOKIE_NAME });\n}\nexport function setAnonymousAccountCookie(data) {\n return saveCookie(data, ANONYMOUS_COOKIE_NAME);\n}\nexport function setAccountCookie(data) {\n return saveCookie(data, COOKIE_NAME, true);\n}\nexport function removeAccountCookie() {\n return removeCookie({\n key: COOKIE_NAME,\n options: { path: '/', secure: true, sameSite: true },\n });\n}\n\nexport function removeAnonymousAccountCookie() {\n return removeCookie({\n key: ANONYMOUS_COOKIE_NAME,\n options: { path: '/' },\n });\n}\nexport function handleError(error, req, routeRequired = true) {\n const { route } = req;\n const message =\n error?.response?.data?.errorMessage ||\n _.get(error, 'response.data.message') ||\n error?.message ||\n _.get(error, 'request.data.message');\n const errorCode = _.get(error, 'response.data.errorCode', null);\n const statusCode = _.get(error, 'response.data.statusCode', null);\n const is404Error = errorCode === 404 || statusCode === 404;\n const detail = _.get(error, 'response.data.detail') || _.get(error, 'detail');\n const errorType = error?.response?.data?.errorType;\n if ((routeRequired && !route) || !message)\n return { error: { message: 'Sorry, we have encountered a problem!', errorCode } };\n console.error(`Could not get data for route ${route}`, message);\n return { error: { message, errorCode, errorType, detail, is404Error } };\n}\n\nexport async function register(req, body, cb) {\n const { profile } = req;\n const {\n password,\n email,\n facebookToken,\n appleToken,\n googleToken,\n isGoogleSignIn,\n isGoogleOneTap,\n link,\n } = body;\n const googleBody = {\n googleToken,\n email,\n password,\n additionalHeaders: v1Override,\n };\n const isGoogle = isGoogleOneTap || isGoogleSignIn;\n\n if (!facebookToken && !appleToken && !googleToken) {\n const missingRequiredData = !password || !email;\n const invalidPassword = !isValidPassword(password);\n const invalidEmail = !isEmail(email || '');\n\n if (missingRequiredData) return cb({ error: { message: 'missing required data' } });\n if (invalidPassword) return cb({ error: { message: 'invalid password' } });\n if (invalidEmail) return cb({ error: { message: 'invalid email' } });\n }\n\n const profileBody = {\n ...body,\n additionalHeaders: v1Override,\n };\n\n try {\n let data;\n if (facebookToken) {\n data = await profile.facebookRegister(profileBody);\n } else if (appleToken && !link) {\n data = await profile.appleRegister(profileBody);\n } else if (appleToken && link) {\n data = await profile.appleLink(profileBody);\n } else if (isGoogle) {\n data = await profile.googleLink(googleBody);\n } else {\n data = await profile.register(profileBody);\n }\n return this.setState({ account: data, anonymousAccount: null }, () => {\n setAccountCookie(data);\n removeAnonymousAccountCookie();\n return cb({ success: true, account: data });\n });\n } catch (error) {\n const { errorCode, message } = error;\n if (errorCode !== 200) return cb({ error: { errorCode, message } });\n cb(handleError(error, req));\n }\n return null;\n}\n\n// TODO remove this! This IE is temporary til IE is sunset\nexport async function registerIE(req, body, cb) {\n const { route, headers } = req;\n const { password, email } = body;\n const missingRequiredData = !route || !headers || !password || !email;\n const invalidPassword = !isValidPassword(password);\n const invalidEmail = !isEmail(email);\n if (missingRequiredData) return cb({ error: { message: 'missing required data' } });\n if (invalidPassword) return cb({ error: { message: 'invalid password' } });\n if (invalidEmail) return cb({ error: { message: 'invalid email' } });\n try {\n const response = await axios.post(route, body, headers);\n const data = _.get(response, 'data');\n const status = _.get(response, 'status');\n const errorCode = _.get(data, 'errorCode', null);\n const message = _.get(data, 'message', DEFAULT_ERROR_MESSAGE);\n if (!data || status !== 200) return cb({ error: { errorCode, message } });\n return this.setState({ account: data, anonymousAccount: null }, () => {\n setAccountCookie(data);\n removeAnonymousAccountCookie();\n return cb({ success: true, account: data });\n });\n } catch (error) {\n cb(handleError(error, req));\n }\n return null;\n}\n\nexport async function verify(req, body, cb) {\n const { route, headers } = req;\n const { requestId, headerAuthorization } = body;\n if (headerAuthorization) {\n headers.headers.Authorization = headerAuthorization;\n }\n\n const isMissingRequestId = !!requestId;\n if (!isMissingRequestId)\n return cb({\n success: false,\n error: {\n message: 'missing request id',\n },\n });\n try {\n const response = await axios.post(route, body, headers);\n return cb && cb({ success: true, data: response.data });\n } catch (error) {\n return cb && cb(handleError(error, req));\n }\n}\n\nexport async function noVerify(req, body, cb) {\n const { route, headers } = req;\n try {\n const response = await axios.post(route, body, headers);\n return cb && cb({ success: true, data: response.data });\n } catch (error) {\n return cb && cb(handleError(error, req));\n }\n}\n\nexport async function checkStatus(profile, body) {\n let response = null;\n if (!isBrowserIE()) {\n response = await profile.status({ email: body?.userEmail });\n }\n return response;\n}\n\nexport async function login(req, profile, body, cb) {\n const { route, headers } = req;\n const { email, password, facebookToken, appleToken } = body;\n const missingAccountData = !email && !password;\n const missingRequiredData =\n !route || !headers || (missingAccountData && !facebookToken && !appleToken);\n if (missingRequiredData) return cb({ error: { message: 'missing required data' } });\n\n const invalidPassword = password && !isValidPassword(password);\n const invalidEmail = email && !isEmail(email);\n if (invalidPassword) return cb({ error: { message: 'invalid password' } });\n if (invalidEmail) return cb({ error: { message: 'invalid email' } });\n // TODO remove this! This IE is temporary til IE is sunset\n if (isBrowserIE() || appleToken || facebookToken) {\n try {\n const response = await axios.post(route, body, headers);\n const data = _.get(response, 'data');\n const status = _.get(response, 'status');\n const dataStatus = _.get(data, 'status', status);\n const errorCode = _.get(data, 'errorCode', dataStatus);\n const message = _.get(data, 'message', DEFAULT_ERROR_MESSAGE);\n const authorizationToken = _.get(data, 'accessToken', null);\n if (!data || dataStatus !== 200) return cb({ error: { errorCode, message } });\n return this.setState(\n {\n account: data,\n anonymousAccount: null,\n authorizationToken,\n },\n () => {\n setAccountCookie(data);\n removeAnonymousAccountCookie();\n return cb({ success: true, account: data });\n },\n );\n } catch (error) {\n return cb(handleError(error, req));\n }\n } else {\n try {\n let response = null;\n if (facebookToken) {\n response = await profile.facebookLogin({\n facebookToken,\n additionalHeaders: v1Override,\n });\n } else {\n response = await profile.login({\n email,\n password,\n additionalHeaders: v1Override,\n });\n }\n const authorizationToken = response?.accessToken || null;\n return this.setState(\n {\n account: response,\n anonymousAccount: null,\n authorizationToken,\n },\n () => {\n setAccountCookie(response);\n removeAnonymousAccountCookie();\n return cb({ success: true, account: response });\n },\n );\n } catch (error) {\n const {\n status,\n dataStatus = status,\n errorCode = dataStatus,\n message = DEFAULT_ERROR_MESSAGE,\n } = error;\n if (dataStatus !== 200) return cb({ error: { errorCode, message } });\n return cb(handleError(error, req));\n }\n }\n}\n\nexport function anonymousLogin(req, body, profile) {\n // TODO remove this! This IE is temporary til IE is sunset\n if (isBrowserIE()) {\n return new Promise(async (resolve, reject) => {\n const { route, headers, setUserAuthData } = req;\n const { deviceId } = body;\n if (!route || !headers || !body || !deviceId) reject();\n try {\n const response = await axios.post(route, body, headers);\n const data = _.get(response, 'data');\n const status = _.get(response, 'status');\n const dataStatus = _.get(data, 'status', status);\n const authorizationToken = _.get(data, 'accessToken', null);\n if (data && dataStatus === 200) {\n setUserAuthData({\n anonymousAccount: data,\n authorizationToken,\n });\n saveCookie(data, ANONYMOUS_COOKIE_NAME);\n resolve({ data });\n }\n } catch (error) {\n reject(new Error(error));\n }\n });\n }\n return new Promise(async (resolve, reject) => {\n const { route, headers, setUserAuthData } = req;\n const { deviceId } = body;\n if (!route || !headers || !body || !deviceId) reject();\n try {\n const response = await profile?.loginAnonymously({\n deviceId,\n additionalHeaders: v1Override,\n });\n const authorizationToken = response?.accessToken || null;\n if (response) {\n setUserAuthData({\n anonymousAccount: response,\n authorizationToken,\n });\n saveCookie(response, ANONYMOUS_COOKIE_NAME);\n resolve({ data: response });\n }\n } catch (error) {\n reject(new Error(error));\n }\n });\n}\n\nexport const getFavorites = ({ route, headers }) => {\n const nonCacheableRouteForIE11 = `${route}?timestamp=${new Date().getTime()}`;\n return new Promise((resolve, reject) => {\n axios\n .get(nonCacheableRouteForIE11, headers)\n .then(response => {\n resolve(response.data);\n })\n .catch(reject);\n });\n};\n\nexport const getV1Favorites = options => {\n const { account, route, headers } = options;\n const { profileId } = account;\n const favoritesV1Route = route.replace('/favorites', `/profiles/${profileId}/favorites`);\n return new Promise((resolve, reject) => {\n axios\n .get(favoritesV1Route, headers)\n .then(response => {\n resolve(response.data);\n })\n .catch(reject);\n });\n};\n\nexport const setFavorites = ({ favoritableItems, profileFavorites }, isPersonality = false) =>\n new Promise((resolve, reject) => {\n favoritableItems.forEach(async item => {\n try {\n const response = await profileFavorites.create({\n favoriteType: isPersonality ? FAVORITES_TYPE_PERSONALITY : item['@type'],\n favoriteID: item.id,\n });\n resolve(response);\n } catch (error) {\n reject(error);\n }\n });\n });\n\n// TODO remove this! This IE is temporary til IE is sunset\nexport const setFavoritesIE = ({ route, headers, favoritableItems }, isPersonality = false) =>\n new Promise((resolve, reject) => {\n const favorites = [];\n favoritableItems.forEach(item => {\n favorites.push({\n favoriteType: isPersonality ? FAVORITES_TYPE_PERSONALITY : item['@type'],\n favoriteID: item.id,\n });\n });\n\n const body = [...favorites];\n axios\n .post(route, body, headers)\n .then(response => {\n const data = _.get(response, 'data', null);\n const status = _.get(response, 'status', null);\n if (data && status === 200) {\n resolve(data);\n }\n reject(new Error('Unable to set Favorite'));\n })\n .catch(reject);\n });\n\nexport const deleteFavorites = ({ favoritableItems, profileFavorites }) =>\n new Promise((resolve, reject) => {\n favoritableItems.forEach(async item => {\n try {\n await profileFavorites.remove({ favoriteID: item.id });\n resolve(true);\n } catch (error) {\n reject(error);\n }\n });\n });\n\n// TODO remove this! This IE is temporary til IE is sunset\nexport const deleteFavoritesIE = ({ route, headers, favoritableItems }) =>\n new Promise((resolve, reject) => {\n const favorites = [];\n favoritableItems.forEach(item => {\n favorites.push({ favoriteID: item.id });\n });\n const body = [...favorites];\n const axiosOptions = {\n url: route,\n method: 'delete',\n data: body,\n headers: headers.headers,\n };\n axios(axiosOptions)\n .then(response => {\n const status = _.get(response, 'data.statusCode', null);\n if (status >= 200 && status <= 299) resolve(true);\n reject(new Error('Error deleting favorite'));\n })\n .catch(reject);\n });\n\nexport function logoutClientless({ profile }) {\n return new Promise(async (resolve, reject) => {\n try {\n const response = await profile.logout();\n resolve(response);\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function logoutClientlessIE({ headers, route }) {\n const axiosData = {\n method: 'get',\n url: route,\n headers,\n };\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axios(axiosData);\n resolve(_.get(response, 'data'));\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function toggleAccountExpired() {\n const accountExpired = this.state;\n this.setState({ accountExpired: !accountExpired }, () => true);\n return false;\n}\n\nexport async function reset(req, body, cb) {\n const { profile } = req;\n if (body) {\n const { email } = body;\n\n if (!isEmail(email)) return cb({ error: { message: 'Invalid Email' } });\n try {\n await profile.resetPassword({\n additionalHeaders: v1Override,\n email,\n });\n return cb({ success: true });\n } catch (error) {\n const { errorMessage } = error;\n if (errorMessage) {\n return cb({\n error: {\n message: 'No profile found for this email address. Please try again.',\n },\n });\n }\n cb(handleError(error, req));\n }\n }\n return cb({ error: {} });\n}\n\n// TODO remove this! This IE is temporary til IE is sunset\nexport function resetIE(req, body, cb) {\n const { route, headers } = req;\n if (route && headers && body) {\n const { email } = body;\n\n if (!isEmail(email)) return cb({ error: { message: 'Invalid Email' } });\n\n return axios\n .post(route, body, headers)\n .then(res => {\n const data = _.get(res, 'data', null);\n const status = _.get(res, 'status', null);\n\n if (data && status === 200) {\n const errorCode = _.get(data, 'errorCode');\n if (errorCode) {\n return cb({\n error: {\n message: 'No profile found for this email address. Please try again.',\n },\n });\n }\n\n return cb({ success: true });\n }\n return null;\n })\n .catch(error => cb(handleError(error, req)));\n }\n return cb({ error: {} });\n}\n\nexport function resetConfirm(req, body, cb) {\n const { route, headers } = req;\n if (route && headers && body) {\n const { email, password, confirmPassword, code } = body;\n\n if (!code) return cb({ error: { message: 'invalid code' } });\n if (!isValidPassword(password)) return cb({ error: { message: 'invalid password' } });\n if (password !== confirmPassword) return cb({ error: { message: 'Passwords do not match' } });\n const bodyParams = email ? { email, password, code } : { password, code };\n\n return axios\n .post(route, bodyParams, headers)\n .then(res => {\n const status = _.get(res, 'status', null);\n if (status === 200) {\n return cb({ success: true });\n }\n const message = _.get(res, 'detail');\n return cb({ error: { message } });\n })\n .catch(error => {\n cb(handleError(JSON.parse(JSON.stringify(error)), req));\n });\n }\n return cb({ error: {} });\n}\n\nexport function deleteAccount(req, body, cb) {\n const { route, headers } = req;\n if (route && headers && body) {\n const { profileId } = body;\n if (!profileId) return cb({ error: { message: 'A profileId is required.' } });\n\n return axios({\n url: route,\n method: 'delete',\n data: {},\n headers: headers.headers,\n })\n .then(res => {\n const status = _.get(res, 'status', null);\n if (status >= 200 && status <= 299) {\n return cb({ success: true });\n }\n return null;\n })\n .catch(error => cb(handleError(error, { route, body, headers })));\n }\n return cb({ error: {} });\n}\n\nexport async function editAccount(req, body, cb) {\n const { profile } = req;\n if (body) {\n try {\n const data = await profile.update(body);\n return cb({ success: true, data });\n } catch (error) {\n return cb(handleError(error, req, false));\n }\n }\n return cb({ error: {} });\n}\n\n// TODO remove this! This IE is temporary til IE is sunset\nexport function editAccountIE(req, body, cb) {\n const { route, headers } = req;\n if (route && headers && body) {\n return axios\n .put(route, body, headers)\n .then(res => {\n const { status, data } = res;\n if (status === 200) {\n return cb({ success: true, data });\n }\n return null;\n })\n .catch(error => cb(handleError(error, req)));\n }\n return cb({ error: {} });\n}\n\nexport function getAccount(req, body, cb) {\n const { route, headers } = req;\n if (route && headers && body) {\n return axios\n .get(route, body, headers)\n .then(res => {\n const status = res.status || null;\n const data = res.data || null;\n if (status === 200) {\n setAccountCookie(data);\n return cb({ success: true, data });\n }\n return null;\n })\n .catch(error => cb(handleError(error, req)));\n }\n return cb({ error: {} });\n}\n\nexport function getAccountGender({ account, language }) {\n const genderOptions = getGenderOptions(language);\n const validGenders = _.map(genderOptions, 'value');\n const accountGender = _.get(account, 'gender', null);\n return _.includes(validGenders, accountGender) ? accountGender : null;\n}\n\nexport function getBirthdateIsoFormat(date) {\n const monthStr = date.substring(0, 2);\n const dayStr = date.substring(2, 4);\n const yearStr = date.substring(4);\n const isoFormat = `${yearStr}-${monthStr}-${dayStr}`;\n const isFullDate = isoFormat.length === 10;\n return isFullDate ? isoFormat : null;\n}\n\nexport function getBirthdateIso8106UTCFormat(date) {\n if (date.length !== 8) return null;\n\n const monthStr = date.substring(0, 2);\n const dayStr = date.substring(2, 4);\n const yearStr = date.substring(4);\n const parsedDate = `${yearStr}-${monthStr}-${dayStr}`;\n\n const iso8106UTC = format(startOfDay(stringToDate(parsedDate)), FORMAT_ISO);\n\n return iso8106UTC;\n}\n","import React, { Component } from 'react';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { onEnterKeyPress } from 'helpers/Account';\nimport { mergeStyles } from 'helpers/GlobalHelper';\nimport {\n Events,\n getFavoritesProps,\n getSegmentFavoritesEvents,\n getSegmentModelMetadata,\n handleAnalytics,\n SegmentPageActionTypes,\n SegmentUiElements,\n} from '@foxcorp/delta-web-analytics';\n\nimport Style from './Favorite.module.scss';\n\nconst TYPE_BUTTON = 'TYPE_BUTTON';\nconst TYPE_LINK = 'TYPE_LINK';\nconst TYPE_ICON = 'TYPE_ICON';\nconst TYPE_WATCHLIST = 'TYPE_WATCHLIST';\nconst TEXT_POSITION_RIGHT = 'TEXT_POSITION_RIGHT';\nconst TEXT_POSITION_LEFT = 'TEXT_POSITION_LEFT';\n\nconst FAVORITE_ICON = 'favorite';\nconst FAVORITE_ICON_FILLED = 'favorite-filled';\nconst FAVORITE_ICON_PLUS = 'add';\nconst FAVORITE_ICON_CHECKMARK = 'checkmark-thin';\nconst FAVORITE_ICON_PLUS_CIRCLE = 'circle-plus';\nconst FAVORITE_ICON_PLUS_CHECKED = 'circle-plus-checked';\n\nconst WATCHLIST_ICON_PLUS_HOVERSTATE_V2 = 'circle-plus-hover';\nconst WATCHLIST_ICON_PLUS_CHECKED_HOVERSTATE_V2 = 'circle-plus-checked-hover';\n\nconst HEART = 'heart';\nconst PLUS_CIRCLE = 'plus-circle';\nconst PLUS_HOVER = 'plus-hover';\nexport const PLUS = 'plus';\n\nexport const FAVORITE_TYPE_BUTTON = TYPE_BUTTON;\nexport const FAVORITE_TYPE_LINK = TYPE_LINK;\nexport const FAVORITE_TYPE_ICON = TYPE_ICON;\nexport const FAVORITE_TYPE_WATCHLIST = TYPE_WATCHLIST;\nexport const FAVORITE_TEXT_POSITION_RIGHT = TEXT_POSITION_RIGHT;\nexport const FAVORITE_TEXT_POSITION_LEFT = TEXT_POSITION_LEFT;\nexport const FAVORITE_PLUS = PLUS;\nexport const FAVORITE_PLUS_CIRCLE = PLUS_CIRCLE;\nexport const FAVORITE_HEART = HEART;\nexport const FAVORITE_PLUS_HOVER = PLUS_HOVER;\n\nconst PAGE_ITEM_TITLES = {\n ADD: 'add to watchlist',\n REMOVE: 'remove from watchlist',\n};\n\nclass Favorite extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: false,\n localFavorites: props?.manager?.favorites || [],\n };\n this.setFavorites = this.setFavorites.bind(this);\n this.deleteFavorites = this.deleteFavorites.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { manuallySetFavorite } = this.props;\n // Fire setFavorites w/o click action from user\n if (!manuallySetFavorite && nextProps.manuallySetFavorite) {\n this.setFavorites();\n }\n }\n\n componentDidUpdate(prevProps) {\n const { manager } = this.props;\n const { manager: prevManager } = prevProps;\n const { localFavorites } = this.state;\n if (!_.isEqual(manager?.favorites, prevManager?.favorites)) {\n this.setState({ localFavorites: manager?.favorites || localFavorites });\n }\n }\n\n trackHeroItemSelectAction = ({ item, isAddingFavorite = false }) => {\n handleAnalytics({\n event: Events.HERO_ITEM_SELECT_ACTION,\n payload: {\n page_action_type: `${isAddingFavorite ? 'add to' : 'remove from'} favorites`,\n page_collection_count: 1,\n page_item_type: 'hero',\n page_item_state: 'static image',\n page_item_container_title: item.name,\n page_item_vertical_position: '1',\n page_item_horizontal_position: '1',\n page_item_title: item.name,\n page_item_subtitle: item.description,\n page_item_cc: 'cc off',\n page_item_volume: 'volume off',\n page_playlist_length: 1,\n page_video_uid: item.latestEpisode?.uID,\n ...getSegmentModelMetadata(),\n },\n });\n };\n\n setFavorites(e) {\n const { isLoading } = this.state;\n const {\n data,\n isHeroItem,\n item,\n manager,\n setFavorite = _.noop,\n stopNavigationOnClick,\n } = this.props;\n const { localFavorites } = this.state;\n if (stopNavigationOnClick) e.preventDefault();\n if (isLoading) return;\n this.setState({\n isLoading: true,\n localFavorites: [\n ...localFavorites,\n {\n favoriteID: data?.favoritableItems[0]?.id,\n favoriteType: _.get('@type', data?.favoritableItems[0]),\n },\n ],\n });\n manager.setFavorites(data).then(() => {\n getSegmentFavoritesEvents().addFavorite({\n ...data,\n ...(manager.favorites && { favoritesProps: getFavoritesProps(manager.favorites) }),\n page_item_title: PAGE_ITEM_TITLES.ADD,\n });\n if (isHeroItem) this.trackHeroItemSelectAction({ item, isAddingFavorite: true });\n this.setState({ isLoading: false });\n setFavorite(true);\n });\n }\n\n getTypeClass() {\n const { theme, type, isEpgFavorite } = this.props;\n const { isLoading } = this.state;\n\n const style = mergeStyles(_.cloneDeep(Style), theme);\n const loadingClass = isLoading ? style.loading : null;\n if (isEpgFavorite) return classNames(style.epgFavorite, loadingClass);\n if (type === TYPE_BUTTON) return classNames(style.button, loadingClass);\n if (type === TYPE_ICON) return classNames(style.icon, loadingClass);\n if (type === TYPE_LINK) return classNames(style.link, loadingClass);\n if (type === TYPE_WATCHLIST) return classNames(style.watchList, loadingClass);\n return null;\n }\n\n isFavorite() {\n const { data, manager } = this.props;\n const { localFavorites } = this.state;\n if (!localFavorites) return false;\n const favoritableItems = _.get(data, 'favoritableItems');\n\n let results = [];\n\n favoritableItems.forEach(item => {\n const matches = localFavorites.filter(favorite => item.id === favorite.favoriteID);\n results = [...matches, ...results];\n });\n\n if (manager?.favorites) {\n const matches = localFavorites.filter(favorite => data.showID === favorite.favoriteID);\n results = matches;\n }\n\n return results.length > 0;\n }\n\n deleteFavorites(e) {\n const { isLoading } = this.state;\n const {\n data,\n isHeroItem,\n item,\n manager,\n stopNavigationOnClick,\n setFavorite = _.noop,\n } = this.props;\n const { localFavorites } = this.state;\n\n if (stopNavigationOnClick) e.preventDefault();\n if (isLoading) return;\n this.setState({\n isLoading: true,\n localFavorites: _.filter(localFavorites, favorite => {\n const favoriteId = _.get(favorite, 'favoriteID', null);\n return favoriteId !== data?.favoritableItems[0]?.id;\n }),\n });\n manager.deleteFavorites(data).then(() => {\n getSegmentFavoritesEvents().removeFavorite({\n ...data,\n ...(manager.favorites && { favoritesProps: getFavoritesProps(manager.favorites) }),\n page_item_title: PAGE_ITEM_TITLES.REMOVE,\n });\n if (isHeroItem) this.trackHeroItemSelectAction({ item });\n this.setState({ isLoading: false });\n setFavorite(false);\n });\n }\n\n renderInterior() {\n const { data, defaultText, favoritedText, iconType, textPosition, type, theme } = this.props;\n const { seriesName } = data;\n const isFavorite = this.isFavorite();\n let onIcon = '';\n let offIcon = '';\n let viewBox = '';\n switch (iconType) {\n case PLUS:\n onIcon = FAVORITE_ICON_CHECKMARK;\n offIcon = FAVORITE_ICON_PLUS;\n viewBox = '0 0 26 26';\n break;\n case PLUS_HOVER:\n onIcon = WATCHLIST_ICON_PLUS_CHECKED_HOVERSTATE_V2;\n offIcon = WATCHLIST_ICON_PLUS_HOVERSTATE_V2;\n viewBox = isFavorite ? '0 0 26 26' : '0 0 28 28';\n break;\n case PLUS_CIRCLE:\n onIcon = FAVORITE_ICON_PLUS_CHECKED;\n offIcon = FAVORITE_ICON_PLUS_CIRCLE;\n viewBox = '0 0 26 26';\n break;\n default:\n onIcon = FAVORITE_ICON_FILLED;\n offIcon = FAVORITE_ICON;\n viewBox = '0 0 24 24';\n break;\n }\n const style = mergeStyles(_.cloneDeep(Style), theme);\n const text = isFavorite ? favoritedText : defaultText;\n const icon = isFavorite ? onIcon : offIcon;\n const optionalClass = type === TYPE_LINK ? style.optionalText : style.optional;\n const iconClasses = classNames(\n style.favoriteIcon,\n isFavorite ? style.favoriteIconFilled : '',\n style[icon],\n );\n\n const textElement = (\n <span className={optionalClass} data-test={`favorite-text-${textPosition}`}>\n {text}\n </span>\n );\n\n const textTag = type === TYPE_ICON || type === TYPE_WATCHLIST ? null : textElement;\n const beforeText = textPosition === TEXT_POSITION_LEFT ? textTag : null;\n const afterText = textPosition === TEXT_POSITION_RIGHT ? textTag : null;\n const ariaLabel = `${text} ${seriesName}`;\n\n return (\n <div className={iconClasses}>\n {beforeText}\n <Icon\n icon={icon}\n color=\"white\"\n data-test=\"favorite-icon\"\n ariaLabel={ariaLabel}\n viewBox={viewBox}\n role=\"button\"\n />\n {afterText}\n </div>\n );\n }\n\n render() {\n const { data, segmentPlaylistButtonAction, clickHandler, theme } = this.props;\n const favoritableItems = _.get(data, 'favoritableItems');\n if (!favoritableItems) return null;\n const isFavorite = this.isFavorite();\n\n const clickEvent = e => {\n segmentPlaylistButtonAction({\n actionType: SegmentPageActionTypes.WATCHLIST,\n uiElement: SegmentUiElements.PLUS,\n });\n if (isFavorite) {\n this.deleteFavorites(e);\n } else {\n this.setFavorites(e);\n }\n\n clickHandler();\n };\n const style = mergeStyles(_.cloneDeep(Style), theme);\n const favoritedClass = isFavorite ? style.topButtonFavorites : '';\n const divClasses = classNames(this.getTypeClass(), favoritedClass);\n return (\n <button\n className={divClasses}\n onClick={clickEvent}\n onKeyPress={e => {\n onEnterKeyPress(e, clickEvent);\n }}\n data-testid=\"favorite-button\"\n >\n {this.renderInterior()}\n </button>\n );\n }\n}\n\nFavorite.defaultProps = {\n clickHandler: () => {},\n data: {},\n defaultText: window.Language.global_favoriteButton,\n favoritedText: window.Language.global_favoriteSetButton,\n isEpgFavorite: false,\n isHeroItem: false,\n item: {},\n manuallySetFavorite: false,\n segmentPlaylistButtonAction: () => {},\n stopNavigationOnClick: false,\n textPosition: TEXT_POSITION_RIGHT,\n type: TYPE_BUTTON,\n iconType: HEART,\n theme: {},\n};\n\nFavorite.propTypes = {\n clickHandler: PropTypes.func,\n data: PropTypes.shape({}),\n defaultText: PropTypes.string,\n favoritedText: PropTypes.string,\n isEpgFavorite: PropTypes.bool,\n isHeroItem: PropTypes.bool,\n item: PropTypes.shape({}),\n manager: PropTypes.shape({\n deleteFavorites: PropTypes.func,\n favorites: PropTypes.arrayOf(PropTypes.shape({})),\n setFavorites: PropTypes.func,\n }).isRequired,\n manuallySetFavorite: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n segmentPlaylistButtonAction: PropTypes.func,\n setFavorite: PropTypes.func,\n stopNavigationOnClick: PropTypes.bool,\n textPosition: PropTypes.oneOf([TEXT_POSITION_RIGHT, TEXT_POSITION_LEFT]),\n type: PropTypes.oneOf([TYPE_BUTTON, TYPE_LINK, TYPE_ICON, TYPE_WATCHLIST]),\n iconType: PropTypes.oneOf([HEART, PLUS, PLUS_CIRCLE, PLUS_HOVER]),\n theme: PropTypes.shape({}),\n};\n\nexport default Favorite;\n","import { getBadgeConfig } from 'helpers/ConfigHelper';\n\nexport const SHOW_STATE_AUDIO = 'AUDIO';\nexport const SHOW_STATE_LIVE = 'LIVE';\nexport const SHOW_STATE_UPNEXT = 'UP NEXT';\nexport const SHOW_STATE_REPLAY = 'REPLAY';\nexport const SHOW_STATE_UPCOMING = 'UPCOMING';\nexport const SHOW_STATE_CLIP = 'CLIP';\nexport const SHOW_STATE_INFO = 'INFO';\n\nexport const formatDurationClipFormat = duration => {\n const getTimeWithPrefix = time => (time < 10 ? `0${time}` : `${time}`);\n const seconds = Math.round(duration % 60);\n const minutes = Math.floor(duration / 60);\n const hours = Math.floor(minutes / 60);\n\n const hoursText = hours ? `${hours}:` : '';\n const minutesText = hours ? `${getTimeWithPrefix(minutes)}:` : `${minutes}:`;\n\n return `${hoursText}${minutesText}${getTimeWithPrefix(seconds)}`;\n};\n\n/**\n * Get the user friendly string for a specific contentLabel\n *\n * @param contentLabel\n * @returns {*}\n */\nexport const getLiveStatusBadge = contentLabel => {\n if (!contentLabel) return null;\n\n let status = contentLabel;\n if (Array.isArray(contentLabel)) [status] = contentLabel;\n\n if (status.toLowerCase() === 'live') return SHOW_STATE_LIVE;\n if (status.toLowerCase().replace(' ', '') === 'upnext') return SHOW_STATE_UPNEXT;\n if (status.toLowerCase() === 'replay') return SHOW_STATE_REPLAY;\n\n return null;\n};\n\nexport const getBadgeLabel = badge => {\n const badgeConfig = getBadgeConfig();\n if (!badgeConfig || !badge) return null;\n\n const badgeType = badge.toLowerCase().replace(/ /g, '');\n const badgeConfigKeys = Object.keys(badgeConfig);\n const item = badgeConfigKeys.find(item => item === badgeType);\n const label = item ? badgeConfig[item].label : null;\n return `${label || badge.toUpperCase()}`;\n};\n\nexport const getBadgeClass = (badge, theme) => {\n if (!badge || !theme) return null;\n\n const slug = text => text && text.toLowerCase().replace(/ /g, '');\n const badgeConfig = getBadgeConfig();\n const badgeType = slug(badge);\n const badgeConfigKeys = Object.keys(badgeConfig);\n const item = badgeConfigKeys.find(item => {\n const slugLabel = slug(badgeConfig[item].label);\n return item === badgeType || slugLabel === badgeType;\n });\n const colorKey = item ? `${badgeConfig[item].color}Badge` : null;\n const fallbackColor = `${badgeType}Badge`;\n return theme[colorKey] || theme[fallbackColor] || theme.defaultBadge;\n};\n","import _ from 'lodash';\nimport { getBadgeClass as helperGetBadgeClass } from 'helpers/BadgeHelper';\nimport { getLanguageObject } from 'helpers/GlobalHelper';\nimport { stringToDate, format, isAfter, now } from 'helpers/DateTimeHelper';\n\n/**\n * Format Video Footer Info\n * @param {Number} season - Season Number\n * @param {Number} episode - Episode Number\n * @returns {String} - Formatted data as S<number>E<number>\n */\nexport function formatEpisodeInfo(season, episode) {\n return season && episode ? `S${season}-E${episode}` : '';\n}\n\n/**\n * Format Aired Date\n * @param {String} originalAirDate - Original Air Date Timestamp\n * @param {String} prefix - prefix string\n * @returns {String} - Formatted data as 'Aired month-day-year'\n */\nexport function formatAiredDate(originalAirDate = null, prefix = 'Aired ', dateFormat = 'M-D-YY') {\n if (!originalAirDate) return '';\n const formatedDate = format(stringToDate(originalAirDate), dateFormat);\n return `${prefix}${formatedDate}`;\n}\n\n/**\n * Format Video Rating\n * @param {String} contentRating - Content Rating\n * @return {String} - Upper cased content rating\n */\nexport function formatRating(contentRating) {\n return contentRating ? contentRating.toUpperCase() : '';\n}\n\n/**\n * Format Video Sub Ratings\n * @param {Array} subRatings - Content Sub Ratings\n * @return {String} - Upper cased content rating\n */\nexport function formatSubRatings(subRatings) {\n return _.upperCase(_.join(subRatings, ''));\n}\n\n/**\n * Format Video Duration\n * @param {String} duration - Duration as 'T10M00S'\n * @return {String} - Formated duration as '10m'\n */\nexport function formatDuration(duration) {\n const map = { T: '', M: 'm' };\n\n if (!duration) return null;\n\n const newDuration = duration.replace(/T|M|[0-9]{1,2}S/gi, m => {\n if (m.match(/[0-9]{1,2}S/gi)) {\n return '';\n }\n if (typeof map[m] !== 'undefined') {\n return map[m];\n }\n return m;\n });\n return newDuration;\n}\n\n/**\n * Format Seconds to Hour and Minutes\n * @param {Number} duration - Duration as '6783.644'\n * @param {String} [mSuffix=m] - Minutes Suffix (default 'm')\n * @param {String} [hSuffix=h] - Hours Suffix (default 'h')\n * @param {String} [sSuffix=s] - Seconds Suffix (default 's')\n * @return {String} - Formated duration as '1h 53m'\n */\nexport function formatDurationInSeconds(\n duration,\n continuesStreamCheck = false,\n hSuffix = 'h',\n mSuffix = 'm',\n sSuffix = 's',\n) {\n if (!duration) return null;\n const seconds = Math.round(duration % 60);\n const minutes = Math.round(duration / 60);\n const hours = Math.floor(minutes / 60);\n const hoursAvailable = hours > 0;\n const minutesAvailable = minutes > 0;\n const secondsAvailable = seconds > 0;\n const secondsOnly = !hoursAvailable && !minutesAvailable && secondsAvailable;\n const minutesOnly = !hoursAvailable && minutesAvailable;\n if (secondsOnly) return `${seconds}${sSuffix}`;\n if (minutesOnly) return `${minutes}${mSuffix}`;\n if (hoursAvailable) {\n const continuousStream = continuesStreamCheck && hours > 5;\n const hoursText = continuousStream ? 'Ongoing' : `${hours}${hSuffix}`;\n if (minutesAvailable && !continuousStream) {\n const minutesWithoutHours = minutes - hours * 60;\n const hoursAndMinutesAvailable = minutesWithoutHours > 0;\n if (hoursAndMinutesAvailable) return `${hoursText} ${minutesWithoutHours}${mSuffix}`;\n }\n return hoursText;\n }\n return null;\n}\n\nexport function formatSeasonEpisode(seasonNumber, episodeNumber, isDotted) {\n let season = seasonNumber ? `S${seasonNumber} ` : '';\n const episode = episodeNumber ? `E${episodeNumber} ` : '';\n if (isDotted && episode) season = `${season}• `;\n return `${season}${episode}`;\n}\n\nexport function formatSeasonEpisodeExtended(seasonCount, currentSeason, fullEpisodeCount) {\n const {\n global_episodeLabel: globalEpisodeLabel,\n global_episodesLabel: globalEpisodesLabel,\n global_seasonLabel: globalSeasonLabel,\n global_seasonsLabel: globalSeasonsLabel,\n } = getLanguageObject();\n\n const hasEpisodeLabels = globalEpisodeLabel !== undefined && globalEpisodesLabel !== undefined;\n const hasSeasonsLabels = globalSeasonLabel !== undefined && globalSeasonsLabel !== undefined;\n if (!hasEpisodeLabels || !hasSeasonsLabels) return '';\n\n const currentSeasonText = globalSeasonLabel;\n const seasonCountText = seasonCount === 1 ? globalSeasonLabel : globalSeasonsLabel;\n const episodeText = fullEpisodeCount === 1 ? globalEpisodeLabel : globalEpisodesLabel;\n\n if (!seasonCount && !currentSeason && !fullEpisodeCount) return '';\n if (seasonCount && !currentSeason && !fullEpisodeCount) return '';\n if (!seasonCount && !currentSeason && fullEpisodeCount)\n return `${fullEpisodeCount} ${episodeText}`;\n if (!seasonCount && currentSeason && !fullEpisodeCount)\n return `${currentSeasonText} ${currentSeason}`;\n if (seasonCount && !currentSeason && fullEpisodeCount)\n return `${fullEpisodeCount} ${episodeText}`;\n if (seasonCount === 1 && currentSeason && !fullEpisodeCount)\n return `${seasonCountText} ${currentSeason}`;\n if (seasonCount === 1 && currentSeason && fullEpisodeCount)\n return `${seasonCountText} ${currentSeason}, ${fullEpisodeCount} ${episodeText}`;\n if (seasonCount && currentSeason && !fullEpisodeCount) return `${seasonCount} ${seasonCountText}`;\n if (!seasonCount)\n return `${currentSeasonText} ${currentSeason}, ${fullEpisodeCount} ${episodeText}`;\n\n return `${seasonCount} ${seasonCountText}, ${fullEpisodeCount} ${episodeText}`;\n}\nexport function formatMetadata(meta) {\n return _.compact(meta).join(' • ');\n}\n\nexport function formatMovieMetadata({\n releaseYear,\n contentRating,\n subRatings,\n durationInSeconds,\n continuesStreamCheck,\n}) {\n const meta = [\n releaseYear ? `${releaseYear}` : null,\n contentRating ? `${formatRating(contentRating)} ${formatSubRatings(subRatings)}` : null,\n durationInSeconds\n ? `${formatDurationInSeconds(durationInSeconds, continuesStreamCheck)}`\n : null,\n ];\n return formatMetadata(meta);\n}\n\nexport function formatUpcomingMetadata({\n startDate,\n contentRating,\n subRatings,\n durationInSeconds,\n}) {\n const airDate = formatAiredDate(startDate, '');\n const meta = [\n airDate ? `${airDate}` : null,\n contentRating ? `${formatRating(contentRating)} ${formatSubRatings(subRatings)}` : null,\n durationInSeconds ? `${formatDurationInSeconds(durationInSeconds)}` : null,\n ];\n return formatMetadata(meta);\n}\n\nexport function formatUpcomingTime({ startDate }) {\n if (!startDate) return '';\n const date = new Date(startDate);\n const hours = date.getHours();\n const hoursText = hours % 12 === 0 ? '12' : `${hours % 12}`;\n const minutes = date.getMinutes();\n const minutesText = minutes < 10 ? `0${minutes}` : `${minutes}`;\n const ampm = hours > 12 ? 'PM' : 'AM';\n return `${hoursText}:${minutesText} ${ampm}`;\n}\n\nexport function getDurationText(durationInSeconds = 0) {\n if (!durationInSeconds) return '';\n let minutes = Math.ceil(durationInSeconds / 60);\n const hours = Math.floor(minutes / 60);\n minutes %= 60;\n const timeSeparator = hours ? ' ' : '';\n let durationText = hours ? `${hours}h` : '';\n if (minutes) durationText = `${durationText}${timeSeparator}${minutes}m`;\n return durationText;\n}\n\n/**\n * Get Item Badge\n * @param {Object} item - Video item\n * @param {Boolean} [isHoverStateV2=false]\n * @param {Boolean} [isPosters=false]\n * @returns {String} badge - Valid badge string or null if there's no valid badge.\n */\nexport function getItemBadge(item, isHoverStateV2 = false, isPosters = false) {\n if (!item) return null;\n const flags = item.contentFlags && item.contentFlags instanceof Array ? item.contentFlags : [];\n if ((isHoverStateV2 && !isPosters && item.videoType === 'clip') || item.videoType === 'CLIP')\n flags.push('CLIP');\n const labels = item.contentLabel && item.contentLabel instanceof Array ? item.contentLabel : [];\n const isContinueWatching =\n item.contentLabel && _.toLower(item.contentLabel[0]) === 'continue watching';\n const options = labels.concat(flags);\n if (isHoverStateV2 && isContinueWatching && !isPosters) return 'INFO';\n return options.shift();\n}\n\nexport const getBadgeClass = ({ theme, badge }) => helperGetBadgeClass(badge, theme);\n\nexport const isUpcomingContent = item => {\n if (!item) return false;\n\n const { '@type': type, startDate } = item;\n const isEpgListing = type === 'EPGListing';\n const isInFuture = isAfter(stringToDate(startDate), now());\n const isUpcoming = isEpgListing && isInFuture;\n return isUpcoming;\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport {\n formatDurationClipFormat,\n getBadgeClass,\n getBadgeLabel,\n SHOW_STATE_CLIP,\n SHOW_STATE_INFO,\n SHOW_STATE_UPCOMING,\n} from 'helpers/BadgeHelper';\nimport { formatDurationInSeconds } from 'helpers/VideoHelper';\n\nconst FIVE_MINUTES = 300000;\n\nconst Badge = ({\n badge = null,\n bookmarkSeconds = 0,\n durationInSeconds = 0,\n isHoverStateV2 = false,\n isMetadata = false,\n isPoster = false,\n isSeasons = false,\n liveIndicator = false,\n startDate = null,\n tabIndex = 0,\n theme,\n title = '',\n}) => {\n const getTimeTillStart = () => (startDate ? new Date(startDate) - new Date() : null);\n const calculateTimeLeft = () => {\n let timeLeft = { minutes: '00', seconds: '00' };\n if (!startDate) return timeLeft;\n timeTillStart = getTimeTillStart();\n if (timeTillStart > 0) {\n timeLeft = {\n minutes: `0${Math.floor((timeTillStart / 1000 / 60) % 60)}`.slice(-2),\n seconds: `0${Math.floor((timeTillStart / 1000) % 60)}`.slice(-2),\n };\n }\n if (timeTillStart < 0) clearInterval(timerInterval);\n return timeLeft;\n };\n\n const [timeLeft, setTimeLeft] = useState(calculateTimeLeft());\n\n let timerInterval;\n let timeTillStart = getTimeTillStart();\n let badgeLabel = getBadgeLabel(badge);\n\n useEffect(() => {\n if (startDate && badgeLabel === SHOW_STATE_UPCOMING && !timerInterval) {\n timerInterval = setInterval(() => {\n setTimeLeft(calculateTimeLeft());\n }, 1000);\n }\n return () => {\n if (timerInterval) clearInterval(timerInterval);\n };\n }, []);\n if (!badge) return null;\n\n if (isHoverStateV2) {\n if (badge === SHOW_STATE_CLIP) badgeLabel = formatDurationClipFormat(durationInSeconds);\n if (isPoster && badge === SHOW_STATE_INFO) {\n return null;\n }\n if (badge === SHOW_STATE_INFO) {\n badgeLabel =\n durationInSeconds === bookmarkSeconds\n ? 'WATCHED'\n : `${formatDurationInSeconds(\n durationInSeconds - bookmarkSeconds,\n false,\n ' HOUR',\n ' MIN',\n ' SEC',\n )} LEFT`;\n }\n if (badge === SHOW_STATE_UPCOMING) return null;\n }\n\n const timerComponent = (\n <span>\n {timeLeft.minutes}:{timeLeft.seconds}\n </span>\n );\n const hasTimeLeft = timeLeft.minutes !== '00' && timeLeft.seconds !== '00';\n const badgeClasses = liveIndicator\n ? [(isHoverStateV2 || isSeasons) && theme.hoverStateBadgeV2]\n : [theme.badge, (isHoverStateV2 || isSeasons) && theme.hoverStateBadgeV2];\n const badgeClass = getBadgeClass(badge, theme);\n const isLiveHoverStateV2 = isHoverStateV2 && badge.toLowerCase().replace(/ /g, '') === 'live';\n if (badgeClass) badgeClasses.push(badgeClass);\n if (liveIndicator) badgeClasses.push(theme.liveIndicator);\n if (isLiveHoverStateV2) badgeClasses.push(theme.liveHoverV2Badge);\n if (isMetadata) badgeClasses.push(theme.metadataBadge);\n if (hasTimeLeft && badgeLabel === SHOW_STATE_UPCOMING && timeTillStart < FIVE_MINUTES) {\n return <a className={classNames(badgeClasses, theme.countdown)}>Starts in {timerComponent}</a>;\n }\n\n return (\n <a\n className={classNames(badgeClasses)}\n tabIndex={tabIndex}\n role=\"link\"\n aria-label={`${badgeLabel.toLowerCase()} ${title}`}\n >\n {badgeLabel}\n </a>\n );\n};\n\nBadge.propTypes = {\n badge: PropTypes.string,\n bookmarkSeconds: PropTypes.number,\n durationInSeconds: PropTypes.number,\n isHoverStateV2: PropTypes.bool,\n isMetadata: PropTypes.bool,\n isPoster: PropTypes.bool,\n isSeasons: PropTypes.bool,\n liveIndicator: PropTypes.bool,\n startDate: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n tabIndex: PropTypes.number,\n theme: PropTypes.shape({}).isRequired,\n title: PropTypes.string,\n};\nexport default Badge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst HoverStateToolTip = ({ isFavorited, isRightJustified, theme }) => {\n const label = `Add${isFavorited ? 'ed' : ''} to Watchlist`;\n return (\n <div\n className={classNames([\n theme.hoverStateToolTip,\n theme.watchListToolTip,\n isRightJustified && theme.hoverStateToolTipRight,\n ])}\n >\n <div className={theme.hoverStateToolTipLabel}>{label}</div>\n <div className={theme.hoverStateToolTipTip} />\n </div>\n );\n};\n\nexport default HoverStateToolTip;\n\nHoverStateToolTip.propTypes = {\n isFavorited: PropTypes.bool,\n theme: PropTypes.shape({}),\n isRightJustified: PropTypes.bool,\n};\n\nHoverStateToolTip.defaultProps = {\n isFavorited: false,\n theme: {},\n isRightJustified: false,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Overlay = ({ children, render, theme }) =>\n render && <div className={theme.overlay}>{children}</div>;\n\nexport default Overlay;\n\nOverlay.defaultProps = {\n children: null,\n render: true,\n theme: {},\n};\n\nOverlay.propTypes = {\n children: PropTypes.node,\n render: PropTypes.bool,\n theme: PropTypes.shape({}),\n};\n","import React, { useState, useRef, useCallback, useEffect, memo, forwardRef } from 'react';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar observerErr = \"💡react-cool-img: the browser doesn't support Intersection Observer, please install polyfill to enable lazy loading: https://github.com/wellyshen/react-cool-img#intersection-observer-polyfill\";\nvar thresholdWarn = \"💡react-cool-img: the threshold of observerOptions must be a number. Use 0 as fallback.\";\nvar useObserver = (function (debounce, _ref) {\n var root = _ref.root,\n _ref$rootMargin = _ref.rootMargin,\n rootMargin = _ref$rootMargin === void 0 ? \"50px\" : _ref$rootMargin,\n _ref$threshold = _ref.threshold,\n threshold = _ref$threshold === void 0 ? 0.01 : _ref$threshold;\n\n var _useState = useState(false),\n startLoad = _useState[0],\n setStartLoad = _useState[1];\n\n var _useState2 = useState(null),\n el = _useState2[0],\n setEl = _useState2[1];\n\n var observerRef = useRef(null);\n var timeoutRef = useRef(null);\n var erroredRef = useRef(false);\n var numThreshold = threshold;\n\n if (typeof threshold !== \"number\") {\n console.warn(thresholdWarn);\n numThreshold = 0;\n }\n\n var resetTimeout = useCallback(function () {\n if (!timeoutRef.current) return;\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }, []);\n useEffect(function () {\n if (!(\"IntersectionObserver\" in window) || !(\"IntersectionObserverEntry\" in window)) {\n if (!erroredRef.current) {\n console.error(observerErr);\n erroredRef.current = true;\n }\n\n setStartLoad(true);\n return function () {\n return null;\n };\n } // eslint-disable-next-line compat/compat\n\n\n observerRef.current = new IntersectionObserver(function (_ref2) {\n var _ref2$ = _ref2[0],\n isIntersecting = _ref2$.isIntersecting,\n intersectionRatio = _ref2$.intersectionRatio;\n var inView = isIntersecting !== undefined ? isIntersecting : intersectionRatio > 0;\n\n if (inView && !startLoad) {\n timeoutRef.current = setTimeout(function () {\n setStartLoad(true);\n }, debounce);\n } else {\n resetTimeout();\n }\n }, {\n root: root,\n rootMargin: rootMargin,\n threshold: numThreshold\n });\n var observer = observerRef.current;\n if (el) observer.observe(el);\n return function () {\n observer.disconnect();\n resetTimeout();\n };\n }, [el, startLoad, root, rootMargin, numThreshold, debounce, resetTimeout]);\n return [setEl, startLoad];\n});\n\nvar key = \"REACT_COOL_IMG\";\nvar set = function set(src) {\n try {\n var data = JSON.parse(sessionStorage.getItem(key) || \"{}\");\n data[src] = new Date();\n sessionStorage.setItem(key, JSON.stringify(data));\n } catch (error) {\n /* istanbul ignore next */\n console.error(\"\\uD83D\\uDCA1 react-cool-img: \" + error);\n }\n};\nvar get = function get(src) {\n try {\n var data = JSON.parse(sessionStorage.getItem(key) || \"{}\");\n return !!data[src];\n } catch (error) {\n /* istanbul ignore next */\n console.error(\"\\uD83D\\uDCA1 react-cool-img: \" + error);\n /* istanbul ignore next */\n\n return false;\n }\n};\n\n/* eslint-disable lines-between-class-members */\nvar Imager = /*#__PURE__*/function () {\n function Imager() {\n _defineProperty(this, \"img\", null);\n\n _defineProperty(this, \"timeout\", null);\n\n _defineProperty(this, \"retries\", 1);\n }\n\n var _proto = Imager.prototype;\n\n _proto.load = function load(src, decode, _ref, onError, onLoad, crossOrigin) {\n var _this = this;\n\n var _ref$count = _ref.count,\n count = _ref$count === void 0 ? 3 : _ref$count,\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? 2 : _ref$delay,\n _ref$acc = _ref.acc,\n acc = _ref$acc === void 0 ? \"*\" : _ref$acc;\n this.img = new Image();\n this.img.src = src;\n if (crossOrigin) this.img.crossOrigin = crossOrigin;\n if (decode && this.img.decode) this.img.decode()[\"catch\"](function () {// Ignore decoding error\n }); // @ts-expect-error\n\n this.img.onerror = function (event) {\n if (!count || _this.retries > count) {\n onError(event);\n return;\n }\n\n var time = acc === \"*\" ? Math.pow(delay, _this.retries) : delay * _this.retries;\n time = acc === false ? delay : time;\n _this.timeout = setTimeout(function () {\n _this.clearImgSrc();\n\n _this.img.src = src;\n }, time * 1000);\n _this.retries += 1;\n };\n\n this.img.onload = function (event) {\n return onLoad(event);\n };\n };\n\n _proto.unload = function unload() {\n if (this.img) {\n this.img.onerror = null;\n this.img.onload = null;\n this.clearImgSrc();\n this.img = null;\n }\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n\n this.retries = 1;\n };\n\n _proto.clearImgSrc = function clearImgSrc() {\n /* istanbul ignore next */\n this.img.src = \"\";\n /* istanbul ignore next */\n\n try {\n /* istanbul ignore next */\n // @ts-ignore\n delete this.img.src;\n } catch (error) {// Ignore the error of deleting object properties in Safari strict mode\n }\n };\n\n return Imager;\n}();\n\nvar useLatest = (function (val) {\n var ref = useRef(val);\n ref.current = val;\n return ref;\n});\n\nvar _excluded = [\"className\", \"placeholder\", \"src\", \"error\", \"crossOrigin\", \"decode\", \"lazy\", \"cache\", \"debounce\", \"observerOptions\", \"retry\", \"srcSet\", \"sizes\", \"onError\", \"onLoad\"];\nvar DEFAULT_SRC = \"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==\";\nvar Img = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _ref$className = _ref.className,\n className = _ref$className === void 0 ? \"\" : _ref$className,\n placeholder = _ref.placeholder,\n src = _ref.src,\n error = _ref.error,\n crossOrigin = _ref.crossOrigin,\n _ref$decode = _ref.decode,\n decode = _ref$decode === void 0 ? true : _ref$decode,\n _ref$lazy = _ref.lazy,\n lazy = _ref$lazy === void 0 ? true : _ref$lazy,\n _ref$cache = _ref.cache,\n cache = _ref$cache === void 0 ? true : _ref$cache,\n _ref$debounce = _ref.debounce,\n debounce = _ref$debounce === void 0 ? 300 : _ref$debounce,\n _ref$observerOptions = _ref.observerOptions,\n observerOptions = _ref$observerOptions === void 0 ? {} : _ref$observerOptions,\n _ref$retry = _ref.retry,\n retry = _ref$retry === void 0 ? {} : _ref$retry,\n srcSet = _ref.srcSet,\n sizes = _ref.sizes,\n onError = _ref.onError,\n onLoad = _ref.onLoad,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useObserver = useObserver(debounce, observerOptions),\n setImg = _useObserver[0],\n startLoad = _useObserver[1];\n\n var _useState = useState(placeholder || DEFAULT_SRC),\n source = _useState[0],\n setSource = _useState[1];\n\n var imagerRef = useRef(new Imager());\n var onErrorRef = useLatest(onError);\n var onLoadRef = useLatest(onLoad);\n var isSrc = source === src;\n var filename = src ? src.replace(/^.*[\\\\/]/, \"\").split(\".\")[0] : \"\";\n\n var setRef = function setRef(el) {\n if (!el) return;\n setImg(el); // eslint-disable-next-line no-param-reassign\n\n if (ref) ref.current = el;\n };\n\n useEffect(function () {\n if (!src) {\n setSource(placeholder || DEFAULT_SRC);\n return function () {\n return null;\n };\n }\n\n var imager = imagerRef.current;\n if (!lazy || cache && get(src) || startLoad) imager.load(src, decode, retry, function (e) {\n setSource(function (prevSrc) {\n return error || placeholder || prevSrc;\n });\n if (onErrorRef.current) onErrorRef.current(e);\n }, function (e) {\n setSource(src);\n if (cache) set(src);\n if (onLoadRef.current) onLoadRef.current(e);\n }, crossOrigin);\n return function () {\n return imager.unload();\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cache, crossOrigin, decode, error, lazy, onErrorRef, onLoadRef, placeholder, src, startLoad]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"img\", _extends({\n className: className + \" no-js-\" + filename,\n src: source,\n crossOrigin: isSrc ? crossOrigin : undefined,\n srcSet: isSrc ? srcSet : undefined,\n sizes: isSrc ? sizes : undefined\n }, rest, {\n ref: setRef\n })), /*#__PURE__*/React.createElement(\"noscript\", null, /*#__PURE__*/React.createElement(\"style\", null, \".no-js-\" + filename + \" { display: none !important; }\"), /*#__PURE__*/React.createElement(\"img\", _extends({\n className: className,\n src: src,\n crossOrigin: crossOrigin,\n srcSet: srcSet,\n sizes: sizes\n }, rest))));\n});\nvar index = /*#__PURE__*/memo(Img);\n\nexport default index;\n","const times = (n, func = i => i) => Array.from({ length: n }).map((_, i) => func(i));\n\nexport default times;\n\nexport const getDeviceProps = () => {\n if (navigator.userAgent === 'node.js')\n return {\n model: '',\n osName: '',\n deviceType: '',\n };\n\n let deviceType = 'desktop';\n let model = 'Desktop';\n let osName = 'Other';\n const ua = navigator.userAgent;\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua.toLowerCase())) {\n model = 'Tablet';\n deviceType = 'tablet';\n } else if (\n /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(\n ua,\n )\n ) {\n model = 'Mobile phone';\n deviceType = 'mobile';\n }\n\n if (navigator.appVersion.indexOf('Win') !== -1) osName = 'Windows';\n if (navigator.appVersion.indexOf('iPhone') !== -1) osName = 'iOS';\n if (navigator.appVersion.indexOf('Android') !== -1) osName = 'Android';\n\n return { model, osName, deviceType };\n};\n","import _ from 'lodash';\nimport { getDeviceProps } from './utils';\nimport { variables } from '../themes/_variablesFox';\n\nconst {\n layout: { breakpoint },\n} = variables;\nconst desktopLargeMinBreakpoint = parseInt(breakpoint.desktopLargeMin.replace('px', ''), 10);\nconst desktopMinBreakpoint = parseInt(breakpoint.desktopMin.replace('px', ''), 10);\nconst tabletMinBreakpoint = parseInt(breakpoint.tabletMin.replace('px', ''), 10);\nconst tabletV2MaxBreakpoint = parseInt(breakpoint.tabletV2Max.replace('px', ''), 10);\nexport const DEBOUNCE_TIME = 1000;\n\nconst siteBreakpoints = _.get(window.ExternalConfig, 'breakpoints.site');\n\nexport const TABLET_LANDSCAPE_BREAKPOINT = 1024;\nexport const DESKTOP_BREAKPOINT = 1440;\n\nexport const SITE_PLATFORM_WEB = _.get(siteBreakpoints, 'web');\nexport const SITE_PLATFORM_TABLET = _.get(siteBreakpoints, 'tablet');\nexport const SITE_PLATFORM_MOBILE = _.get(siteBreakpoints, 'mobile');\nexport const SITE_PLATFORM_WEB_LARGE = _.get(siteBreakpoints, 'webLarge');\nconst SITE_PLATFORM_BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: desktopLargeMinBreakpoint,\n [SITE_PLATFORM_WEB]: desktopMinBreakpoint,\n [SITE_PLATFORM_TABLET]: tabletMinBreakpoint,\n [SITE_PLATFORM_MOBILE]: 0,\n};\n\nconst playerBreakpoints = _.get(window.ExternalConfig, 'breakpoints.player');\n\nexport const PLAYER_PLATFORM_WEB = _.get(playerBreakpoints, 'web');\nexport const PLAYER_PLATFORM_TABLET = _.get(playerBreakpoints, 'tablet');\nexport const PLAYER_PLATFORM_MOBILE = _.get(playerBreakpoints, 'mobile');\nconst PLAYER_BREAKPOINTS = {\n [PLAYER_PLATFORM_WEB]: desktopMinBreakpoint,\n [PLAYER_PLATFORM_TABLET]: tabletMinBreakpoint,\n [PLAYER_PLATFORM_MOBILE]: 0,\n};\n\nexport const isMobileBreakpoint = breakpoint => breakpoint === SITE_PLATFORM_MOBILE;\nexport const isTabletBreakpoint = breakpoint => breakpoint === SITE_PLATFORM_TABLET;\nexport const isDesktopBreakpoint = breakpoint => breakpoint === SITE_PLATFORM_WEB;\nexport const isLargeDesktopBreakpoint = breakpoint => breakpoint === SITE_PLATFORM_WEB_LARGE;\n\n// JS version of \"screen and (min-width: 768px) and (max-width: 1024px) and (max-height: 767px) and (orientation:landscape)\"\nexport const isMobileLandscape = (\n windowWidth = window.innerWidth,\n windowHeight = window.innerHeight,\n) =>\n windowWidth >= tabletMinBreakpoint &&\n windowWidth <= tabletV2MaxBreakpoint &&\n windowHeight < tabletMinBreakpoint;\n\n/**\n * Return the site breakpoint for the specific platform size\n * @param {Number} windowWidth - Width of the current browser window\n * @return {String} - Breakpoint ID\n */\nexport const getSitePlatform = (windowWidth = window.innerWidth) => {\n\n const webLargeBreakpoint = windowWidth >= SITE_PLATFORM_BREAKPOINTS[SITE_PLATFORM_WEB_LARGE];\n if (webLargeBreakpoint) return SITE_PLATFORM_WEB_LARGE;\n if (windowWidth >= SITE_PLATFORM_BREAKPOINTS[SITE_PLATFORM_WEB]) return SITE_PLATFORM_WEB;\n if (windowWidth >= SITE_PLATFORM_BREAKPOINTS[SITE_PLATFORM_TABLET]) return SITE_PLATFORM_TABLET;\n return SITE_PLATFORM_MOBILE;\n};\n\n/**\n * Return the player breakpoint for the specific platform size\n * @param {Number} windowWidth - Width of the current browser window\n * @return {String} - Breakpoint ID\n */\nexport const getPlayerPlatform = (windowWidth = window.innerWidth) => {\n if (windowWidth > PLAYER_BREAKPOINTS[PLAYER_PLATFORM_WEB]) {\n return PLAYER_PLATFORM_WEB;\n }\n if (windowWidth > PLAYER_BREAKPOINTS[PLAYER_PLATFORM_TABLET]) {\n return PLAYER_PLATFORM_TABLET;\n }\n return PLAYER_PLATFORM_MOBILE;\n};\n\nexport const getUserDevice = () => getDeviceProps().deviceType.toLowerCase();\n\nexport const isAMobileDevice = () => getUserDevice() === 'mobile';\nexport const isATabletDevice = () => getUserDevice() === 'tablet';\n\nexport const largeTabletView = breakpointView =>\n breakpointView === SITE_PLATFORM_WEB && isATabletDevice();\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport _ from 'lodash';\nimport Img from 'react-cool-img';\nimport {\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_WEB_LARGE,\n} from 'helpers/BreakpointHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport {\n COLLECTION_TYPE_FTSLOCAL,\n COLLECTION_TYPE_SHOWCASE_CAROUSEL,\n COLLECTION_TYPE_SHOWCASE,\n isClip,\n} from 'helpers/ContentHelper';\n\nconst HIGH_DENSITY_IMAGE_MULTIPLIER = 1.25;\n\nexport const BRANDING_LOGO_IMAGE = 'BRANDING_LOGO_IMAGE';\nexport const COLLECTION_HERO_IMAGE = 'COLLECTION_HERO_IMAGE';\nexport const COLLECTION_HERO_LOGO_IMAGE = 'COLLECTION_HERO_LOGO_IMAGE';\nexport const COLLECTION_THUMBNAIL_IMAGE = 'COLLECTION_THUMBNAIL_IMAGE';\nexport const COLLECTION_THUMBNAIL_LIVE_IMAGE = 'COLLECTION_THUMBNAIL_LIVE_IMAGE';\nexport const COLLECTION_VIDEO_BANNER_IMAGE = 'COLLECTION_VIDEO_BANNER_IMAGE';\nexport const EPG_LIVE_IMAGE = 'EPG_LIVE_IMAGE';\nexport const FOOTER_PROMO = 'FOOTER_PROMO';\nexport const FUTURE_EPG_MODAL_IMAGE = 'FUTURE_EPG_MODAL_IMAGE';\nconst HOME_HERO_IMAGE = 'HOME_HERO_IMAGE';\nconst HOME_SMALL_PROMO_IMAGE = 'HOME_SMALL_PROMO_IMAGE';\nconst HOME_THUMBNAIL_IMAGE = 'HOME_THUMBNAIL_IMAGE';\nexport const HOW_TO_WATCH_IMAGE = 'HOW_TO_WATCH_IMAGE';\nexport const LIVE_EPG_THUMBNAIL_IMAGE = 'LIVE_EPG_THUMBNAIL_IMAGE';\nexport const LIVE_PLAYER_BACKGROUND_IMAGE = 'LIVE_PLAYER_BACKGROUND_IMAGE';\nexport const MARKET_VIDEO_IMAGE = 'MARKET_VIDEO_IMAGE';\nexport const NETWORK_LOGO_IMAGE = 'NETWORK_LOGO_IMAGE';\nexport const NFT_PROMO = 'NFT_PROMO';\nexport const NFT_THUMBNAIL_LEFT = 'NFT_THUMBNAIL_LEFT';\nexport const NFT_THUMBNAIL_RIGHT = 'NFT_THUMBNAIL_RIGHT';\nexport const PERK_ICON_IMAGE = 'PERK_ICON_IMAGE';\nexport const POSTER_IMAGE = 'POSTER_IMAGE';\nexport const POSTER_OVERLAY_IMAGE = 'POSTER_OVERLAY_IMAGE';\nexport const POSTER_OVERLAY_LOGO_IMAGE = 'POSTER_OVERLAY_LOGO_IMAGE';\nexport const SEARCH_THUMBNAIL_IMAGE = 'SEARCH_THUMBNAIL_IMAGE';\nexport const SERIES_DETAIL_HERO_IMAGE = 'SERIES_DETAIL_HERO_IMAGE';\nexport const SERIES_DETAIL_LOGO_IMAGE = 'SERIES_DETAIL_LOGO_IMAGE';\nexport const SHOW_DETAIL_CAST_DETAIL_IMAGE = 'SHOW_DETAIL_CAST_DETAIL_IMAGE';\nexport const SHOW_DETAIL_CAST_ROUND_THUMBNAIL_IMAGE = 'SHOW_DETAIL_CAST_ROUND_THUMBNAIL_IMAGE';\nexport const SHOW_DETAIL_CAST_THUMBNAIL_LIST_IMAGE = 'SHOW_DETAIL_CAST_THUMBNAIL_LIST_IMAGE';\nexport const SHOW_DETAIL_FIRST_THUMBNAIL_IMAGE = 'SHOW_DETAIL_FIRST_THUMBNAIL_IMAGE';\nexport const SHOW_DETAIL_HERO_IMAGE = 'SHOW_DETAIL_HERO_IMAGE';\nexport const SHOW_DETAIL_RELATED_THUMBNAIL_IMAGE = 'SHOW_DETAIL_RELATED_THUMBNAIL_IMAGE';\nexport const SHOW_DETAIL_THUMBNAIL_IMAGE = 'SHOW_DETAIL_THUMBNAIL_IMAGE';\nexport const SHOW_THUMBNAIL_IMAGE = 'SHOW_THUMBNAIL_IMAGE';\nexport const SMALL_PROMO_IMAGE = 'SMALL_PROMO_IMAGE';\nconst SPORT_THUMBNAIL_IMAGE = 'SPORT_THUMBNAIL_IMAGE';\nexport const WATCH_PLAYER_BACKGROUND_IMAGE = 'WATCH_PLAYER_BACKGROUND_IMAGE';\nexport const WATCH_RELATED_THUMBNAIL_IMAGE = 'WATCH_RELATED_THUMBNAIL_IMAGE';\nexport const FOX_FALLBACK_IMAGE = '/static/images/FallBack-FOX.jpg';\nexport const NFT_HERO_BACKGROUND = '/static/images/NFT-hero-background.png';\n\nconst getImageSize = ({ context }) => {\n switch (context) {\n case BRANDING_LOGO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 59 },\n [SITE_PLATFORM_TABLET]: { height: 59 },\n [SITE_PLATFORM_WEB]: { height: 120 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 120 },\n };\n }\n case COLLECTION_HERO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 568 },\n [SITE_PLATFORM_TABLET]: { width: 768, height: 432 },\n [SITE_PLATFORM_WEB]: { width: 1920, height: 1080 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 1920, height: 1080 },\n };\n }\n case COLLECTION_HERO_LOGO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 80 },\n [SITE_PLATFORM_TABLET]: { height: 100 },\n [SITE_PLATFORM_WEB]: { height: 100 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 132 },\n };\n }\n case COLLECTION_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 278, height: 156 },\n [SITE_PLATFORM_TABLET]: { width: 356, height: 200 },\n [SITE_PLATFORM_WEB]: { width: 480, height: 270 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 462, height: 260 },\n hover: {\n [SITE_PLATFORM_MOBILE]: { width: 490, height: 276 },\n [SITE_PLATFORM_TABLET]: { width: 490, height: 276 },\n [SITE_PLATFORM_WEB]: { width: 490, height: 276 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 490, height: 276 },\n },\n };\n }\n\n case COLLECTION_THUMBNAIL_LIVE_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 278, height: 156 },\n [SITE_PLATFORM_TABLET]: { width: 356, height: 200 },\n [SITE_PLATFORM_WEB]: { width: 480, height: 270 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 794, height: 507 },\n hover: {\n [SITE_PLATFORM_MOBILE]: { width: 490, height: 276 },\n [SITE_PLATFORM_TABLET]: { width: 490, height: 276 },\n [SITE_PLATFORM_WEB]: { width: 490, height: 276 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 794, height: 507 },\n },\n };\n }\n case COLLECTION_VIDEO_BANNER_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 540, height: 303 },\n [SITE_PLATFORM_TABLET]: { width: 540, height: 303 },\n [SITE_PLATFORM_WEB]: { width: 540, height: 303 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 540, height: 303 },\n };\n }\n case EPG_LIVE_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 231, height: 130 },\n [SITE_PLATFORM_TABLET]: { width: 231, height: 130 },\n [SITE_PLATFORM_WEB]: { width: 231, height: 130 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 231, height: 130 },\n };\n }\n case FOOTER_PROMO: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 370, height: 208 },\n [SITE_PLATFORM_TABLET]: { width: 1035, height: 582 },\n [SITE_PLATFORM_WEB]: { width: 270, height: 150 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 270, height: 150 },\n };\n }\n case FUTURE_EPG_MODAL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 536, height: 302 },\n [SITE_PLATFORM_TABLET]: { width: 536, height: 302 },\n [SITE_PLATFORM_WEB]: { width: 536, height: 302 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 536, height: 302 },\n };\n }\n case HOW_TO_WATCH_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 741 },\n [SITE_PLATFORM_TABLET]: { width: 579 },\n [SITE_PLATFORM_WEB]: { width: 741 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 1024 },\n };\n }\n case HOME_HERO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 375, height: 500 },\n [SITE_PLATFORM_TABLET]: { width: 768, height: 1098 },\n [SITE_PLATFORM_WEB]: { width: 768, height: 1098 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 768, height: 1098 },\n };\n }\n case HOME_SMALL_PROMO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 375, height: 132 },\n [SITE_PLATFORM_TABLET]: { width: 375, height: 132 },\n [SITE_PLATFORM_WEB]: { width: 1071, height: 359 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 1071, height: 359 },\n };\n }\n case HOME_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 336, height: 189 },\n [SITE_PLATFORM_TABLET]: { width: 349, height: 196 },\n [SITE_PLATFORM_WEB]: { width: 349, height: 196 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 349, height: 196 },\n };\n }\n case LIVE_EPG_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 325, height: 182 },\n [SITE_PLATFORM_TABLET]: { width: 325, height: 182 },\n [SITE_PLATFORM_WEB]: { width: 325, height: 182 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 325, height: 182 },\n };\n }\n case LIVE_PLAYER_BACKGROUND_IMAGE:\n case WATCH_PLAYER_BACKGROUND_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 375, height: 211 },\n [SITE_PLATFORM_TABLET]: { width: 768, height: 432 },\n [SITE_PLATFORM_WEB]: { width: 1135, height: 638 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 1135, height: 638 },\n };\n }\n case MARKET_VIDEO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 290, height: 163 },\n [SITE_PLATFORM_TABLET]: { width: 463, height: 260 },\n [SITE_PLATFORM_WEB]: { width: 618, height: 347 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 868, height: 488 },\n };\n }\n case NFT_PROMO: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 705, height: 336 },\n [SITE_PLATFORM_TABLET]: { width: 1099, height: 525 },\n [SITE_PLATFORM_WEB]: { width: 1099, height: 525 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 1287, height: 615 },\n };\n }\n case NFT_THUMBNAIL_LEFT: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 200, height: 200 },\n [SITE_PLATFORM_TABLET]: { width: 400, height: 400 },\n [SITE_PLATFORM_WEB]: { width: 768, height: 768 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 768, height: 768 },\n };\n }\n case NFT_THUMBNAIL_RIGHT: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 768, height: 500 },\n [SITE_PLATFORM_TABLET]: { width: 1024, height: 768 },\n [SITE_PLATFORM_WEB]: { width: 1440, height: 1024 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 1440, height: 1024 },\n };\n }\n case SHOW_DETAIL_HERO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 375, height: 211 },\n [SITE_PLATFORM_TABLET]: { width: 768, height: 432 },\n [SITE_PLATFORM_WEB]: { width: 1920, height: 1080 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 1920, height: 1080 },\n };\n }\n case SHOW_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 222, height: 125 },\n [SITE_PLATFORM_TABLET]: { width: 222, height: 125 },\n [SITE_PLATFORM_WEB]: { width: 245, height: 137 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 245, height: 137 },\n };\n }\n case NETWORK_LOGO_IMAGE:\n case PERK_ICON_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 50 },\n [SITE_PLATFORM_TABLET]: { height: 50 },\n [SITE_PLATFORM_WEB]: { height: 80 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 80 },\n };\n }\n case POSTER_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 174 },\n [SITE_PLATFORM_TABLET]: { height: 287 },\n [SITE_PLATFORM_WEB]: { height: 362 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 597 },\n };\n }\n case POSTER_OVERLAY_LOGO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 62 },\n [SITE_PLATFORM_TABLET]: { height: 75 },\n [SITE_PLATFORM_WEB]: { height: 85 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 120 },\n };\n }\n case POSTER_OVERLAY_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 132 },\n [SITE_PLATFORM_TABLET]: { height: 132 },\n [SITE_PLATFORM_WEB]: { height: 170 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 219 },\n };\n }\n case SEARCH_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 222, height: 125 },\n [SITE_PLATFORM_TABLET]: { width: 222, height: 125 },\n [SITE_PLATFORM_WEB]: { width: 240, height: 135 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 240, height: 135 },\n };\n }\n case SERIES_DETAIL_HERO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 575 },\n [SITE_PLATFORM_TABLET]: { height: 620 },\n [SITE_PLATFORM_WEB]: { height: 1250 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 1600 },\n };\n }\n case SERIES_DETAIL_LOGO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 69 },\n [SITE_PLATFORM_TABLET]: { height: 102 },\n [SITE_PLATFORM_WEB]: { height: 129 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 129 },\n };\n }\n case SHOW_DETAIL_CAST_DETAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 250, height: 250 },\n [SITE_PLATFORM_TABLET]: { width: 250, height: 250 },\n [SITE_PLATFORM_WEB]: { width: 250, height: 250 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 250, height: 250 },\n };\n }\n case SHOW_DETAIL_CAST_ROUND_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { height: 278 },\n [SITE_PLATFORM_TABLET]: { height: 180 },\n [SITE_PLATFORM_WEB]: { height: 312 },\n [SITE_PLATFORM_WEB_LARGE]: { height: 312 },\n };\n }\n case SHOW_DETAIL_CAST_THUMBNAIL_LIST_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 150, height: 150 },\n [SITE_PLATFORM_TABLET]: { width: 150, height: 150 },\n [SITE_PLATFORM_WEB]: { width: 150, height: 150 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 150, height: 150 },\n };\n }\n case SHOW_DETAIL_FIRST_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 335, height: 189 },\n [SITE_PLATFORM_TABLET]: { width: 728, height: 410 },\n [SITE_PLATFORM_WEB]: { width: 728, height: 410 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 728, height: 410 },\n };\n }\n case SHOW_DETAIL_RELATED_THUMBNAIL_IMAGE:\n case SHOW_DETAIL_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 335, height: 189 },\n [SITE_PLATFORM_TABLET]: { width: 728, height: 410 },\n [SITE_PLATFORM_WEB]: { width: 342, height: 192 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 342, height: 192 },\n };\n }\n case SMALL_PROMO_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 733 },\n [SITE_PLATFORM_TABLET]: { width: 1071 },\n [SITE_PLATFORM_WEB]: { width: 1920 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 1920 },\n };\n }\n case SPORT_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 257, height: 145 },\n [SITE_PLATFORM_TABLET]: { width: 257, height: 145 },\n [SITE_PLATFORM_WEB]: { width: 257, height: 145 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 257, height: 145 },\n };\n }\n case WATCH_RELATED_THUMBNAIL_IMAGE: {\n return {\n [SITE_PLATFORM_MOBILE]: { width: 351, height: 198 },\n [SITE_PLATFORM_TABLET]: { width: 351, height: 198 },\n [SITE_PLATFORM_WEB]: { width: 261, height: 147 },\n [SITE_PLATFORM_WEB_LARGE]: { width: 261, height: 147 },\n };\n }\n\n default: {\n console.warn('image size does not exist', context);\n return {};\n }\n }\n};\n\nconst generateImageUrl = ({ url, width, height }) => {\n if (!url) return null;\n const defaultSize = '*';\n const imageUrlSuffix = '?fit=inside%7C';\n const imageUrlSize = `${width || defaultSize}:${height || defaultSize}`;\n if (_.includes(url, imageUrlSuffix)) {\n const imageUrl = url.split('?')[0];\n return `${imageUrl}${imageUrlSuffix}${imageUrlSize}`;\n }\n return `${url}${imageUrlSuffix}${imageUrlSize}`.replace(/ /g, '%20');\n};\n\n/**\n * @param breakpoint\n * @param context\n * @param url\n * @param isHover\n * @returns {string|null}\n */\nexport const getDynamicImage = ({\n breakpoint = SITE_PLATFORM_WEB,\n context,\n url,\n isHover = false,\n}) => {\n const imageSize = getImageSize({ context });\n const currentImageSize = isHover ? imageSize.hover[breakpoint] : imageSize[breakpoint];\n const { width, height } = currentImageSize;\n const imageUrl = generateImageUrl({ url, width, height });\n return imageUrl || null;\n};\n\nconst getHighDensityImageUrl = ({ url, width, height }) => {\n if (!url) return null;\n return generateImageUrl({\n url,\n width: Math.round(width * HIGH_DENSITY_IMAGE_MULTIPLIER),\n height: Math.round(height * HIGH_DENSITY_IMAGE_MULTIPLIER),\n });\n};\n\nexport const getStillBackgroundImage = ({ item, breakpoint }) => {\n if (!item) return null;\n const isMobile = breakpoint === SITE_PLATFORM_MOBILE;\n const collectionType = item?.collectionType;\n const isCollectionShowcase =\n collectionType === COLLECTION_TYPE_SHOWCASE ||\n collectionType === COLLECTION_TYPE_SHOWCASE_CAROUSEL;\n const isCategoryTypeLocal = item?.categoryType === COLLECTION_TYPE_FTSLOCAL;\n const images = _.get(item, 'images', {});\n const autoPlayStill = item?.autoPlayStill;\n const autoPlayStillImage = autoPlayStill?.default?.url ?? null;\n const seriesDetailImage = _.get(item, 'images.seriesDetail.raw', null);\n const stillBackgroundImage = _.get(item, 'images.videoList.raw', null);\n const videoDetailImage = item?.images?.videoDetail?.raw ?? null;\n const mobileImage = item?.images?.keyart_tablet_landscape?.raw ?? null;\n if (isCategoryTypeLocal && isCollectionShowcase && isClip(item?.videoType)) {\n return videoDetailImage || stillBackgroundImage || autoPlayStillImage || seriesDetailImage;\n }\n\n if (isCollectionShowcase && isMobile && mobileImage) {\n return mobileImage;\n }\n if (stillBackgroundImage) return stillBackgroundImage;\n\n const { still, seriesList, seriesDetail } = images || {};\n const image = still || seriesDetail || seriesList;\n return _.get(image, 'raw', image);\n};\n\nexport const renderImage = ({\n alt,\n breakpoint,\n className,\n dataTest,\n lazyLoad = true,\n preventLazyLoad,\n isHover,\n imageType,\n src,\n ...rest\n}) => {\n let widthDimn;\n let heightDimn;\n let dynamicImageUrl;\n let highDensityImageUrl;\n const hasDimension = !!imageType && !!breakpoint;\n if (hasDimension) {\n dynamicImageUrl = getDynamicImage({ url: src, breakpoint, context: imageType, isHover });\n const imageSize = getImageSize({ context: imageType });\n const { width, height } = isHover ? imageSize.hover[breakpoint] : imageSize[breakpoint];\n widthDimn = width;\n heightDimn = height;\n highDensityImageUrl = getHighDensityImageUrl({ url: src, width, height });\n }\n const isIE = isBrowserIE();\n\n const imageProps = {\n alt: alt || '',\n 'data-test': dataTest,\n className,\n width: hasDimension ? widthDimn : null,\n height: hasDimension ? heightDimn : null,\n debounce: 300,\n decode: null,\n src: dynamicImageUrl || src,\n srcSet: highDensityImageUrl ? `${highDensityImageUrl} 2x` : highDensityImageUrl,\n };\n\n if (!lazyLoad) return <img alt={imageProps.alt} {...imageProps} {...rest} />;\n if (isIE) imageProps.decode = false;\n imageProps.lazy = !(preventLazyLoad === true);\n return <Img {...imageProps} {...rest} />;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Badge from 'components/Badge';\nimport { noop } from 'helpers/GlobalHelper';\nimport { renderImage as renderDynamicImage, POSTER_IMAGE } from 'helpers/ImageHelper';\nimport { urlIsExternal } from 'helpers/ContentHelper';\n\nconst SimplifiedImage = ({\n badge,\n breakpoint,\n image,\n item,\n onPosterClick,\n posterAltText,\n preventLazyLoad,\n route,\n theme,\n}) => {\n const renderImage = image => {\n if (!image) return null;\n const dynamicImage = renderDynamicImage({\n alt: posterAltText,\n breakpoint,\n className: theme.carouselPosterImage,\n imageType: POSTER_IMAGE,\n preventLazyLoad,\n src: image,\n });\n if (route) {\n const redirect = urlIsExternal(route) ? { href: route } : { to: route };\n const ariaLabel = `${item.seriesName || item.name}, new`;\n return (\n <Link key={route} {...redirect} onClick={onPosterClick} aria-label={ariaLabel}>\n {dynamicImage}\n <Badge badge={badge} theme={theme} title={item?.seriesName} />\n </Link>\n );\n }\n return dynamicImage;\n };\n const posterImage = renderImage(image);\n return <div className={theme.simplifiedHover}>{posterImage}</div>;\n};\n\nexport default SimplifiedImage;\n\nSimplifiedImage.defaultProps = {\n badge: null,\n breakpoint: null,\n image: null,\n item: {},\n onPosterClick: noop,\n posterAltText: '',\n preventLazyLoad: false,\n route: null,\n};\n\nSimplifiedImage.propTypes = {\n badge: PropTypes.string,\n breakpoint: PropTypes.string,\n image: PropTypes.string,\n item: PropTypes.shape({}),\n onPosterClick: PropTypes.func,\n posterAltText: PropTypes.string,\n preventLazyLoad: PropTypes.bool,\n route: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport WatchList, { FAVORITE_PLUS_HOVER, FAVORITE_TYPE_WATCHLIST } from 'components/Favorite';\nimport Badge from 'components/Badge';\nimport { noop } from 'helpers/GlobalHelper';\nimport { isSeries, isTypeSeries, isHomePage } from 'helpers/ContentHelper';\nimport { HoverStateToolTip, Overlay, SimplifiedImage } from '../../components';\n\nimport Style from '../../styles/Simplified.module.scss';\n\nconst Simplified = ({\n badge,\n breakpoint,\n favoritesManager,\n item,\n itemIndex,\n link: route,\n maxItems,\n onPosterClick,\n overlayProps,\n posterAltText,\n posterGenres,\n posterImage,\n posterItemBadge,\n posterMetaData,\n posterTitle,\n preventLazyLoad,\n scaleFromLeft,\n scaleFromRight,\n segmentPlaylistButtonAction,\n}) => {\n const [isFavorite, setFavorite] = useState(false);\n const { description = '', isSeriesDetailAvailable, seriesType } = item;\n const isCollectionSeries = isTypeSeries(_.get(item, '@type', ''));\n const isVideoSeries = isSeries(seriesType);\n const favoriteData = _.get(overlayProps, 'favoriteData', {});\n const favorites = _.get(favoritesManager, 'favorites');\n const isOnlyWatchList = isVideoSeries || isSeriesDetailAvailable === false;\n const name = isVideoSeries && !isCollectionSeries ? _.get(item, 'name') : null;\n const getCarouselPosterClasses = [];\n\n if (itemIndex === 0 || scaleFromLeft) {\n getCarouselPosterClasses.push(Style.carouselPosterFirst);\n } else if (itemIndex === maxItems - 1 || scaleFromRight) {\n getCarouselPosterClasses.push(Style.carouselPosterEnd);\n if (item.id === 'seeMore') {\n getCarouselPosterClasses.push(Style.invisible);\n }\n } else {\n getCarouselPosterClasses.push(Style.carouselPoster);\n }\n\n const posterImageProps = {\n badge,\n breakpoint,\n image: posterImage,\n item,\n onPosterClick,\n posterAltText,\n preventLazyLoad,\n route,\n theme: Style,\n };\n\n return (\n <div className={Style.posterContainer}>\n <div\n className={classNames(getCarouselPosterClasses, isHomePage() && Style.hideOverlayOnMobile)}\n >\n <SimplifiedImage {...posterImageProps} />\n <Overlay theme={Style}>\n <span className={Style.watchList}>\n <span className={Style.watchListButtonContainer}>\n <WatchList\n type={FAVORITE_TYPE_WATCHLIST}\n stopNavigationOnClick\n manager={favoritesManager}\n iconType={FAVORITE_PLUS_HOVER}\n setFavorite={setFavorite}\n favorites={favorites}\n data={{ ...favoriteData, titleText: name, subtitleText: description }}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n />\n </span>\n <HoverStateToolTip\n theme={Style}\n isFavorited={isFavorite}\n isRightJustified={isOnlyWatchList}\n />\n </span>\n </Overlay>\n </div>\n {posterTitle && (\n <div className={Style.metaDataContainer}>\n <div className={Style.posterTitle}>{posterTitle}</div>\n <div className={Style.posterInfo}>\n <div className={Style.posterMetaData}>{posterMetaData}</div>\n <Badge theme={Style} badge={posterItemBadge} isMetadata />\n </div>\n <div className={Style.posterGenres}>{posterGenres}</div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Simplified;\n\nSimplified.defaultProps = {\n badge: null,\n breakpoint: null,\n favoritesManager: {},\n item: {},\n itemIndex: 0,\n link: null,\n maxItems: 0,\n onPosterClick: noop,\n overlayProps: {},\n posterAltText: '',\n posterImage: null,\n preventLazyLoad: false,\n scaleFromLeft: false,\n scaleFromRight: false,\n segmentPlaylistButtonAction: noop,\n};\n\nSimplified.propTypes = {\n badge: PropTypes.string,\n breakpoint: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n item: PropTypes.shape({}),\n itemIndex: PropTypes.number,\n link: PropTypes.string,\n maxItems: PropTypes.number,\n onPosterClick: PropTypes.func,\n overlayProps: PropTypes.shape({}),\n posterAltText: PropTypes.string,\n posterGenres: PropTypes.string,\n posterImage: PropTypes.string,\n posterItemBadge: PropTypes.string,\n posterMetaData: PropTypes.string,\n posterTitle: PropTypes.string,\n preventLazyLoad: PropTypes.bool,\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n segmentPlaylistButtonAction: PropTypes.func,\n};\n","/* global FavoritesEnabled */\n\nimport _ from 'lodash';\nimport { PageNames, SegmentSources, tealiumEventPageTypes } from '@foxcorp/delta-web-analytics';\nimport { getShowType } from 'helpers/ContentHelper';\n\nconst getFavoriteData = ({ item }) => {\n const {\n categoryType,\n favoritableItems,\n name,\n network,\n seriesName,\n seriesType,\n showCode,\n trackingData,\n videoType,\n } = item;\n let favoriteData;\n if (FavoritesEnabled) {\n const showType = getShowType({ videoType, seriesType });\n const isPersonality = categoryType && categoryType === 'personality';\n const recommendationId = _.get(trackingData, 'properties.recommendationId', '');\n favoriteData = {\n actionLocation: 'playlist',\n favoritableItems,\n favoriteType: isPersonality ? 'personality' : showType,\n location: _.get(tealiumEventPageTypes, PageNames.HOME),\n networkId: network,\n recommendationId,\n seriesName: seriesName || name,\n showID: showCode,\n showType,\n source: SegmentSources.DETAIL,\n };\n }\n return favoriteData;\n};\n\nexport default getFavoriteData;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport WatchList, { FAVORITE_PLUS_HOVER, FAVORITE_TYPE_WATCHLIST } from 'components/Favorite';\nimport { noop } from 'helpers/GlobalHelper';\nimport { isSeries, isTypeSeries } from 'helpers/ContentHelper';\nimport { getItemBadge } from 'helpers/VideoHelper';\nimport { SITE_PLATFORM_MOBILE } from 'helpers/BreakpointHelper';\nimport getFavoriteData from '../../helpers/processor';\nimport { HoverStateToolTip, Overlay, SimplifiedImage } from '../../components';\n\nimport Style from '../../styles/MoreLike.module.scss';\n\nconst MoreLike = ({\n breakpoint,\n collectionLength,\n favoritesManager,\n item,\n itemIndex,\n link: route,\n maxItems,\n onPosterClick,\n posterAltText,\n posterImage,\n preventLazyLoad,\n scaleFromLeft,\n scaleFromRight,\n segmentPlaylistButtonAction,\n}) => {\n const badge = getItemBadge(item, false, true);\n const [isFavorite, setFavorite] = useState(false);\n const isMobile = breakpoint === SITE_PLATFORM_MOBILE;\n const { description = '', isSeriesDetailAvailable, seriesType } = item;\n const isCollectionSeries = isTypeSeries(_.get(item, '@type', ''));\n const isVideoSeries = isSeries(seriesType);\n const favoriteData = getFavoriteData({ item });\n const favorites = _.get(favoritesManager, 'favorites');\n const isOnlyWatchList = isVideoSeries || isSeriesDetailAvailable === false;\n const name = isVideoSeries && !isCollectionSeries ? _.get(item, 'name') : null;\n const getCarouselPosterClasses = [];\n\n if (itemIndex === 0 || scaleFromLeft) {\n getCarouselPosterClasses.push(Style.carouselPosterFirst);\n } else if (\n (!isMobile && (itemIndex === maxItems - 1 || scaleFromRight)) ||\n (isMobile && itemIndex === collectionLength - 1)\n ) {\n getCarouselPosterClasses.push(Style.carouselPosterEnd);\n if (item.id === 'seeMore') {\n getCarouselPosterClasses.push(Style.invisible);\n }\n } else {\n getCarouselPosterClasses.push(Style.carouselPoster);\n }\n\n const posterImageProps = {\n badge,\n breakpoint,\n image: posterImage,\n item,\n onPosterClick,\n posterAltText,\n preventLazyLoad,\n route,\n theme: Style,\n };\n\n return (\n <div className={classNames(getCarouselPosterClasses)}>\n <SimplifiedImage {...posterImageProps} />\n <Overlay theme={Style}>\n <span className={Style.watchList}>\n <span className={Style.watchListButtonContainer}>\n <WatchList\n type={FAVORITE_TYPE_WATCHLIST}\n stopNavigationOnClick\n manager={favoritesManager}\n iconType={FAVORITE_PLUS_HOVER}\n setFavorite={setFavorite}\n favorites={favorites}\n data={{ ...favoriteData, titleText: name, subtitleText: description }}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n />\n </span>\n <HoverStateToolTip\n theme={Style}\n isFavorited={isFavorite}\n isRightJustified={isOnlyWatchList}\n />\n </span>\n </Overlay>\n </div>\n );\n};\n\nexport default MoreLike;\n\nMoreLike.defaultProps = {\n breakpoint: null,\n collectionLength: 0,\n favoritesManager: {},\n item: {},\n itemIndex: 0,\n link: null,\n maxItems: 0,\n onPosterClick: noop,\n overlayProps: {},\n posterAltText: '',\n posterImage: null,\n preventLazyLoad: false,\n scaleFromLeft: false,\n scaleFromRight: false,\n segmentPlaylistButtonAction: noop,\n};\n\nMoreLike.propTypes = {\n breakpoint: PropTypes.string,\n collectionLength: PropTypes.number,\n favoritesManager: PropTypes.shape({}),\n item: PropTypes.shape({}),\n itemIndex: PropTypes.number,\n link: PropTypes.string,\n maxItems: PropTypes.number,\n onPosterClick: PropTypes.func,\n overlayProps: PropTypes.shape({}),\n posterAltText: PropTypes.string,\n posterImage: PropTypes.string,\n preventLazyLoad: PropTypes.bool,\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n segmentPlaylistButtonAction: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Simplified from './views/Simplified';\nimport MoreLike from './views/MoreLike';\n\nconst MORE_LIKE_POSTER = 'moreLike';\nconst SIMPLIFIED_POSTER = 'simplified';\n\nconst PosterV2 = ({ type, ...rest }) => {\n const components = {\n // latestEpisode: LatestEpisode,\n // poster: Poster,\n [SIMPLIFIED_POSTER]: Simplified,\n [MORE_LIKE_POSTER]: MoreLike,\n };\n if (!type) return null;\n const Component = components[type];\n if (!Component) return null;\n return <Component {...rest} />;\n};\n\nPosterV2.propTypes = { type: PropTypes.string.isRequired };\n\nexport { PosterV2, MORE_LIKE_POSTER, SIMPLIFIED_POSTER };\n","import {\n DEBUG_PANEL_CITY_LAT,\n DEBUG_PANEL_CITY_LONG,\n getLatitude,\n setLatitude,\n getLongitude,\n setLongitude,\n getCookieTimestamp,\n setCookieTimeStamp,\n setCookieModalTimeStamp,\n} from 'helpers/ContentHelper';\nimport { getLocationCookieDuration } from 'helpers/ConfigHelper';\nimport { getCookie } from 'helpers/Storage';\nimport _ from 'lodash';\n\nconst GEO_LOCATION_STATUS_GRANTED = 'granted';\nexport const GEO_LOCATION_STATUS_DENIED = 'denied';\n\nconst hasGeolocationAPI = () => _.get(navigator, 'geolocation.getCurrentPosition', false);\n\nconst hasPermissionsAPI = () => _.get(navigator, 'permissions.query', false);\n\nconst GEO_LOCATION_OPTIONS = {\n enableHighAccuracy: true,\n timeout: 20000,\n maximumAge: 10 * 60 * 1000, // 10 minutes\n};\n\nconst COOKIE_EXPIRES_MS = 3600 * 24 * 365 * 1000; // one year.\n\nconst emptyCallback = () => {};\n\nconst getCurrentTimestampMS = () => new Date().getTime();\n\nconst getSimulatedLocation = () => {\n const latitude = getCookie({ name: DEBUG_PANEL_CITY_LAT });\n const longitude = getCookie({ name: DEBUG_PANEL_CITY_LONG });\n const timestamp = parseInt(getCurrentTimestampMS(), 10);\n if (!latitude || !longitude) return null;\n return { latitude, longitude, timestamp };\n};\n\nconst setLocationCookies = ({ latitude, longitude }) => {\n if (!latitude || !longitude) return;\n\n const todayTimestamp = getCurrentTimestampMS();\n const expiresMS = todayTimestamp + COOKIE_EXPIRES_MS;\n const options = {\n expires: new Date(expiresMS),\n path: '/',\n };\n\n setLatitude({ value: latitude, options });\n setLongitude({ value: longitude, options });\n setCookieTimeStamp({ value: todayTimestamp, options });\n setCookieModalTimeStamp({ value: todayTimestamp, options });\n};\n\nexport const getLocationCookies = () => {\n const latitude = getLatitude();\n const longitude = getLongitude();\n const cookieTimestamp = getCookieTimestamp();\n if (!latitude || !longitude || !cookieTimestamp) return null;\n return {\n latitude: parseFloat(latitude),\n longitude: parseFloat(longitude),\n timestamp: parseInt(cookieTimestamp, 10),\n };\n};\n\nexport const getSpoofedLocationCookies = () => {\n const latitude = getCookie({ name: DEBUG_PANEL_CITY_LAT });\n const longitude = getCookie({ name: DEBUG_PANEL_CITY_LONG });\n if (!latitude || !longitude) return null;\n return {\n latitude: parseFloat(latitude),\n longitude: parseFloat(longitude),\n };\n};\n\nconst hasLocationCookieExpired = () => {\n const locationCookies = getLocationCookies();\n if (!locationCookies) return true;\n\n const cookieTimestamp = locationCookies.timestamp;\n const cookieExpireTimestamp = cookieTimestamp + getLocationCookieDuration();\n const todayTimestamp = getCurrentTimestampMS();\n const expired = cookieExpireTimestamp < todayTimestamp;\n return expired;\n};\n\nexport const hasLocationCookies = () => {\n const locationCookies = getLocationCookies();\n if (locationCookies) {\n const latitude = locationCookies.latitude || null;\n const longitude = locationCookies.longitude || null;\n return !!(latitude && longitude);\n }\n return false;\n};\n\nconst getLocationFromBrowserCoordinates = coordinates => {\n const latitude = _.get(coordinates, 'coords.latitude');\n const longitude = _.get(coordinates, 'coords.longitude');\n const timestamp = getCurrentTimestampMS();\n const location = { latitude, longitude, timestamp };\n return location;\n};\n\nconst getLocationFromBrowser = cb => {\n const locationResolve = coordinates => {\n const location = getLocationFromBrowserCoordinates(coordinates);\n setLocationCookies(location);\n cb(null, location);\n };\n\n const locationReject = error => {\n // fallbacks to cookie location if available.\n if (hasLocationCookies()) {\n cb(null, getLocationCookies());\n return;\n }\n const errorResponse = error;\n cb(errorResponse, null);\n };\n\n return navigator.geolocation.getCurrentPosition(\n locationResolve,\n locationReject,\n GEO_LOCATION_OPTIONS,\n );\n};\n\nexport const getCachedLocation = ({ shouldFetchLocation, cb }) => {\n const debugCookies = getSimulatedLocation();\n if (debugCookies) {\n return {\n ...debugCookies,\n debug: true,\n };\n }\n\n const hasCookies = hasLocationCookies();\n const hasLocationExpired = hasLocationCookieExpired();\n const locationCookies = getLocationCookies() || null;\n const shouldCheckLocation = shouldFetchLocation || (hasCookies && hasLocationExpired);\n if (!hasGeolocationAPI() || !shouldCheckLocation) return locationCookies;\n\n const callback = cb || emptyCallback;\n getLocationFromBrowser(callback);\n return locationCookies;\n};\n\nexport const getLocation = (cb = emptyCallback) => {\n const cachedLocation = getCachedLocation({ shouldFetchLocation: true, cb });\n if (cachedLocation) {\n if (cachedLocation.debug) setLocationCookies(cachedLocation);\n cb(null, cachedLocation);\n }\n};\n\nexport const getLocationPermission = (cb = emptyCallback) => {\n const debugCookies = getSimulatedLocation();\n const { geolocation_permissionsUnavailable: permissionsUnavailableErrorText } = window.Language;\n if (debugCookies) {\n cb(null, GEO_LOCATION_STATUS_GRANTED);\n return;\n }\n\n if (!hasPermissionsAPI()) {\n cb(permissionsUnavailableErrorText, null);\n return;\n }\n\n navigator.permissions\n .query({ name: 'geolocation' })\n .then(permissionStatus => {\n cb(null, permissionStatus.state);\n })\n .catch(error => {\n cb(error, null);\n });\n};\n","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport var globalConsole = console;\nexport var originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach(function (name) {\n originalConsoleMethods[name] = globalConsole[name];\n});\nvar PREFIX = 'Datadog Browser SDK:';\nexport var display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport var DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport var DOCS_TROUBLESHOOTING = \"\".concat(DOCS_ORIGIN, \"/real_user_monitoring/browser/troubleshooting\");\nexport var MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n return fn.apply(void 0, args);\n }\n catch (err) {\n display.error(errorMsg, err);\n }\n };\n}\n//# sourceMappingURL=catchUserErrors.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n }\n }\n }\n}\nexport function displayIfDebugEnabled() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (debugMode) {\n display.error.apply(display, __spreadArray(['[MONITOR]'], args, false));\n }\n}\n//# sourceMappingURL=monitor.js.map","export function includes(candidate, search) {\n return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n if (Array.from) {\n return Array.from(arrayLike);\n }\n var array = [];\n if (arrayLike instanceof Set) {\n arrayLike.forEach(function (item) { return array.push(item); });\n }\n else {\n for (var i = 0; i < arrayLike.length; i++) {\n array.push(arrayLike[i]);\n }\n }\n return array;\n}\nexport function find(array, predicate) {\n for (var i = 0; i < array.length; i += 1) {\n var item = array[i];\n if (predicate(item, i)) {\n return item;\n }\n }\n return undefined;\n}\nexport function findLast(array, predicate) {\n for (var i = array.length - 1; i >= 0; i -= 1) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\nexport function forEach(list, callback) {\n Array.prototype.forEach.call(list, callback);\n}\nexport function objectValues(object) {\n return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectEntries(object) {\n return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function startsWith(candidate, search) {\n return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n return candidate.slice(-search.length) === search;\n}\nexport function assign(target) {\n var toAssign = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n toAssign[_i - 1] = arguments[_i];\n }\n toAssign.forEach(function (source) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n });\n return target;\n}\n//# sourceMappingURL=polyfills.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get: function () {\n return this;\n },\n configurable: true,\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n var globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self;\n }\n else if (typeof window === 'object') {\n globalObject = window;\n }\n else {\n globalObject = {};\n }\n }\n return globalObject;\n}\n//# sourceMappingURL=getGlobalObject.js.map","export var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n var length = buffers.reduce(function (total, buffer) { return total + buffer.length; }, 0);\n var result = new Uint8Array(length);\n var offset = 0;\n for (var _i = 0, buffers_1 = buffers; _i < buffers_1.length; _i++) {\n var buffer = buffers_1[_i];\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}\n//# sourceMappingURL=byteUtils.js.map","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n var browserWindow = getGlobalObject();\n var original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n var inWaitPeriod = false;\n var pendingExecutionWithParameters;\n var pendingTimeoutId;\n return {\n throttled: function () {\n var parameters = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn.apply(void 0, parameters);\n }\n else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(function () {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn.apply(void 0, pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: function () {\n clearTimeout(pendingTimeoutId);\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n },\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n var restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n }\n catch (_a) {\n return '<error: unable to serialize object>';\n }\n finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n var object = value;\n var objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return function () {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { assign } from './polyfills';\nexport function shallowClone(object) {\n return assign({}, object);\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n var newObject = {};\n for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n var key = _a[_i];\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../../tools/display';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport var CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\n// We observed that the compression ratio is around 8 in general, but we also want to keep a margin\n// because some data might not be compressed (ex: last view update on page exit). We chose 16KiB\n// because it is also the limit of the 'batchBytesCount' that we use for RUM and Logs data, but this\n// is a bit arbitrary.\nexport var CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createCustomerDataTrackerManager(compressionStatus) {\n if (compressionStatus === void 0) { compressionStatus = 2 /* CustomerDataCompressionStatus.Disabled */; }\n var customerDataTrackers = new Map();\n var alreadyWarned = false;\n function checkCustomerDataLimit(initialBytesCount) {\n if (initialBytesCount === void 0) { initialBytesCount = 0; }\n if (alreadyWarned || compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n return;\n }\n var bytesCountLimit = compressionStatus === 2 /* CustomerDataCompressionStatus.Disabled */\n ? CUSTOMER_DATA_BYTES_LIMIT\n : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT;\n var bytesCount = initialBytesCount;\n customerDataTrackers.forEach(function (tracker) {\n bytesCount += tracker.getBytesCount();\n });\n if (bytesCount > bytesCountLimit) {\n displayCustomerDataLimitReachedWarning(bytesCountLimit);\n alreadyWarned = true;\n }\n }\n return {\n /**\n * Creates a detached tracker. The manager will not store a reference to that tracker, and the\n * bytes count will be counted independently from other detached trackers.\n *\n * This is particularly useful when we don't know when the tracker will be unused, so we don't\n * leak memory (ex: when used in Logger instances).\n */\n createDetachedTracker: function () {\n var tracker = createCustomerDataTracker(function () { return checkCustomerDataLimit(tracker.getBytesCount()); });\n return tracker;\n },\n /**\n * Creates a tracker if it doesn't exist, and returns it.\n */\n getOrCreateTracker: function (type) {\n if (!customerDataTrackers.has(type)) {\n customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit));\n }\n return customerDataTrackers.get(type);\n },\n setCompressionStatus: function (newCompressionStatus) {\n if (compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n compressionStatus = newCompressionStatus;\n checkCustomerDataLimit();\n }\n },\n getCompressionStatus: function () { return compressionStatus; },\n stop: function () {\n customerDataTrackers.forEach(function (tracker) { return tracker.stop(); });\n customerDataTrackers.clear();\n },\n };\n}\nexport function createCustomerDataTracker(checkCustomerDataLimit) {\n var bytesCountCache = 0;\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call context APIs synchronously multiple times in a row\n var _a = throttle(function (context) {\n bytesCountCache = computeBytesCount(jsonStringify(context));\n checkCustomerDataLimit();\n }, BYTES_COMPUTATION_THROTTLING_DELAY), computeBytesCountThrottled = _a.throttled, cancelComputeBytesCount = _a.cancel;\n var resetBytesCount = function () {\n cancelComputeBytesCount();\n bytesCountCache = 0;\n };\n return {\n updateCustomerData: function (context) {\n if (isEmptyObject(context)) {\n resetBytesCount();\n }\n else {\n computeBytesCountThrottled(context);\n }\n },\n resetCustomerData: resetBytesCount,\n getBytesCount: function () { return bytesCountCache; },\n stop: function () {\n cancelComputeBytesCount();\n },\n };\n}\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit) {\n display.warn(\"Customer data exceeds the recommended \".concat(bytesCountLimit / ONE_KIBI_BYTE, \"KiB threshold. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#customer-data-exceeds-the-recommended-threshold-warning\"));\n}\n//# sourceMappingURL=customerDataTracker.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination;\n }\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source;\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof RegExp) {\n var flags = source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('');\n return new RegExp(source.source, flags);\n }\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined;\n }\n else if (Array.isArray(source)) {\n var merged_1 = Array.isArray(destination) ? destination : [];\n for (var i = 0; i < source.length; ++i) {\n merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n }\n return merged_1;\n }\n var merged = getType(destination) === 'object' ? destination : {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n }\n }\n return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n return mergeInto(undefined, value);\n}\nexport function combine() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var destination;\n for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n var source = sources_1[_a];\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue;\n }\n destination = mergeInto(destination, source);\n }\n return destination;\n}\nfunction createCircularReferenceChecker() {\n if (typeof WeakSet !== 'undefined') {\n var set_1 = new WeakSet();\n return {\n hasAlreadyBeenSeen: function (value) {\n var has = set_1.has(value);\n if (!has) {\n set_1.add(value);\n }\n return has;\n },\n };\n }\n var array = [];\n return {\n hasAlreadyBeenSeen: function (value) {\n var has = array.indexOf(value) >= 0;\n if (!has) {\n array.push(value);\n }\n return has;\n },\n };\n}\n//# sourceMappingURL=mergeInto.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount) {\n if (maxCharacterCount === void 0) { maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT; }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = [];\n var visitedObjectsWithPath = new WeakMap();\n var sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n var serializedSanitizedData = JSON.stringify(sanitizedData);\n var accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n var containerToProcess = containerQueue.shift();\n var separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n }\n else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4;\n }\n accumulatedCharacterCount += separatorLength;\n separatorLength = 1;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n else {\n for (var key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n var sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return \"[Reference seen at \".concat(visitedObjectsWithPath.get(sourceAsObject), \"]\");\n }\n // Add processed source to queue\n var currentPath = key !== undefined ? \"\".concat(parentPath, \".\").concat(key) : parentPath;\n var target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({ source: sourceToSanitize, target: target, path: currentPath });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return \"[BigInt] \".concat(value.toString());\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return \"[Function] \".concat(value.name || 'unknown');\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n return \"[Symbol] \".concat(value.description || value.toString());\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted,\n };\n }\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value);\n var match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return \"[\".concat(match[1], \"]\");\n }\n }\n catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n }\n catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\"The data provided has been \".concat(changeType, \" as it is over the limit of \").concat(maxCharacterCount, \" characters:\"), source);\n}\n//# sourceMappingURL=sanitize.js.map","// eslint-disable-next-line no-restricted-syntax\nvar Observable = /** @class */ (function () {\n function Observable(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n Observable.prototype.subscribe = function (f) {\n var _this = this;\n this.observers.push(f);\n if (this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n }\n return {\n unsubscribe: function () {\n _this.observers = _this.observers.filter(function (other) { return f !== other; });\n if (!_this.observers.length && _this.onLastUnsubscribe) {\n _this.onLastUnsubscribe();\n }\n },\n };\n };\n Observable.prototype.notify = function (data) {\n this.observers.forEach(function (observer) { return observer(data); });\n };\n return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return new Observable(function (globalObservable) {\n var subscriptions = observables.map(function (observable) {\n return observable.subscribe(function (data) { return globalObservable.notify(data); });\n });\n return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n });\n}\n//# sourceMappingURL=observable.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nexport function createContextManager(customerDataTracker) {\n var context = {};\n var changeObservable = new Observable();\n var contextManager = {\n getContext: function () { return deepClone(context); },\n setContext: function (newContext) {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext);\n customerDataTracker && customerDataTracker.updateCustomerData(context);\n }\n else {\n contextManager.clearContext();\n }\n changeObservable.notify();\n },\n setContextProperty: function (key, property) {\n context[key] = sanitize(property);\n customerDataTracker && customerDataTracker.updateCustomerData(context);\n changeObservable.notify();\n },\n removeContextProperty: function (key) {\n delete context[key];\n customerDataTracker && customerDataTracker.updateCustomerData(context);\n changeObservable.notify();\n },\n clearContext: function () {\n context = {};\n customerDataTracker && customerDataTracker.resetCustomerData();\n changeObservable.notify();\n },\n changeObservable: changeObservable,\n };\n return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { Observable } from '../tools/observable';\nexport var TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n var observable = new Observable();\n return {\n tryToInit: function (trackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent;\n }\n },\n update: function (trackingConsent) {\n currentConsent = trackingConsent;\n observable.notify();\n },\n isGranted: function () {\n return currentConsent === TrackingConsent.GRANTED;\n },\n observable: observable,\n };\n}\n//# sourceMappingURL=trackingConsent.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, _a) {\n var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n var listenerWithMonitor = monitor(function (event) {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return;\n }\n if (once) {\n stop();\n }\n listener(event);\n });\n var options = passive ? { capture: capture, passive: passive } : capture;\n var add = getZoneJsOriginalValue(eventTarget, 'addEventListener');\n eventNames.forEach(function (eventName) { return add.call(eventTarget, eventName, listenerWithMonitor, options); });\n function stop() {\n var remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener');\n eventNames.forEach(function (eventName) { return remove.call(eventTarget, eventName, listenerWithMonitor, options); });\n }\n return {\n stop: stop,\n };\n}\n//# sourceMappingURL=addEventListener.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nvar CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nvar storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n var storageKey = buildStorageKey(productKey, customerDataType);\n storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, function (_a) {\n var key = _a.key;\n if (storageKey === key) {\n synchronizeWithStorage();\n }\n }));\n contextManager.changeObservable.subscribe(dumpToStorage);\n contextManager.setContext(combine(getFromStorage(), contextManager.getContext()));\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage());\n }\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n }\n function getFromStorage() {\n var rawContext = localStorage.getItem(storageKey);\n return rawContext !== null ? JSON.parse(rawContext) : {};\n }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n return \"\".concat(CONTEXT_STORE_KEY_PREFIX, \"_\").concat(productKey, \"_\").concat(customerDataType);\n}\nexport function removeStorageListeners() {\n storageListeners.map(function (listener) { return listener.stop(); });\n}\n//# sourceMappingURL=storeContextManager.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n var output = '';\n var outputBytesCount = 0;\n return {\n isAsync: false,\n get isEmpty() {\n return !output;\n },\n write: function (data, callback) {\n var additionalEncodedBytesCount = computeBytesCount(data);\n outputBytesCount += additionalEncodedBytesCount;\n output += data;\n if (callback) {\n callback(additionalEncodedBytesCount);\n }\n },\n finish: function (callback) {\n callback(this.finishSync());\n },\n finishSync: function () {\n var result = {\n output: output,\n outputBytesCount: outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: '',\n };\n output = '';\n outputBytesCount = 0;\n return result;\n },\n estimateEncodedBytesCount: function (data) {\n return data.length;\n },\n };\n}\n//# sourceMappingURL=encoder.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nimport { startsWith } from '../utils/polyfills';\nvar UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n var stack = [];\n var stackProperty = tryToGetString(ex, 'stack');\n var exString = String(ex);\n if (stackProperty && startsWith(stackProperty, exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach(function (line) {\n var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack,\n };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n var parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n };\n}\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n var value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n var stack = [{ url: url, column: column, line: line }];\n var _a = tryToParseMessage(messageObj), name = _a.name, message = _a.message;\n return {\n name: name,\n message: message,\n stack: stack,\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n var _a;\n var name;\n var message;\n if ({}.toString.call(messageObj) === '[object String]') {\n ;\n _a = ERROR_TYPES_RE.exec(messageObj), name = _a[1], message = _a[2];\n }\n return { name: name, message: message };\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { noop } from '../utils/functionUtils';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n var internalFramesToSkip = 2;\n var error = new Error();\n var formattedStack;\n // IE needs to throw the error to fill in the stack trace\n if (!error.stack) {\n try {\n throw error;\n }\n catch (e) {\n noop();\n }\n }\n callMonitored(function () {\n var stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\nexport function toStackTraceString(stack) {\n var result = formatErrorMessage(stack);\n stack.stack.forEach(function (frame) {\n var func = frame.func === '?' ? '<anonymous>' : frame.func;\n var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n var line = frame.line ? \":\".concat(frame.line) : '';\n var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n result += \"\\n at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n });\n return result;\n}\nexport function formatErrorMessage(stack) {\n return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n//# sourceMappingURL=handlingStack.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport var NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError(_a) {\n var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n var isErrorInstance = originalError instanceof Error;\n var message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n var stack = hasUsableStack(isErrorInstance, stackTrace)\n ? toStackTraceString(stackTrace)\n : NO_ERROR_STACK_PRESENT_MESSAGE;\n var causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n var type = stackTrace ? stackTrace.name : undefined;\n var fingerprint = tryToGetFingerprint(originalError);\n return {\n startClocks: startClocks,\n source: source,\n handling: handling,\n handlingStack: handlingStack,\n originalError: originalError,\n type: type,\n message: message,\n stack: stack,\n causes: causes,\n fingerprint: fingerprint,\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n ? stackTrace.message\n : !isErrorInstance\n ? \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(sanitize(originalError)))\n : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n if (stackTrace === undefined) {\n return false;\n }\n if (isErrorInstance) {\n return true;\n }\n // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n // TODO rework tracekit integration to avoid generating those unusable stack\n return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n return originalError instanceof Error && 'dd_fingerprint' in originalError\n ? String(originalError.dd_fingerprint)\n : undefined;\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function flattenErrorCauses(error, parentSource) {\n var currentError = error;\n var causes = [];\n while ((currentError === null || currentError === void 0 ? void 0 : currentError.cause) instanceof Error && causes.length < 10) {\n var stackTrace = computeStackTrace(currentError.cause);\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n });\n currentError = currentError.cause;\n }\n return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\nimport { objectHasValue } from './utils/objectUtils';\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n ExperimentalFeature[\"WRITABLE_RESOURCE_GRAPHQL\"] = \"writable_resource_graphql\";\n ExperimentalFeature[\"REMOTE_CONFIGURATION\"] = \"remote_configuration\";\n ExperimentalFeature[\"UPDATE_VIEW_NAME\"] = \"update_view_name\";\n ExperimentalFeature[\"LONG_ANIMATION_FRAME\"] = \"long_animation_frame\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nvar enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(enableExperimentalFeatures.filter(function (flag) {\n return objectHasValue(ExperimentalFeature, flag);\n }));\n }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach(function (flag) {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","import { isNumber, round } from './numberUtils';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n return { relative: getRelativeTime(timeStamp), timeStamp: timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n var correctedOrigin = (dateNow() - performance.now());\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n return (end - start);\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart;\n }\n return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","export function sendToExtension(type, payload) {\n var callback = window.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({ type: type, payload: payload });\n }\n}\n//# sourceMappingURL=sendToExtension.js.map","export function getConnectivity() {\n var _a;\n var navigator = window.navigator;\n return {\n status: navigator.onLine ? 'connected' : 'not_connected',\n interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,\n };\n}\n//# sourceMappingURL=connectivity.js.map","import { arrayFrom } from './polyfills';\nexport function removeDuplicates(array) {\n var set = new Set();\n array.forEach(function (item) { return set.add(item); });\n return arrayFrom(set);\n}\nexport function removeItem(array, item) {\n var index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrayUtils.js.map","import { removeItem } from './utils/arrayUtils';\nvar BUFFER_LIMIT = 500;\nexport function createBoundedBuffer() {\n var buffer = [];\n var add = function (callback) {\n var length = buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n buffer.splice(0, 1);\n }\n };\n var remove = function (callback) {\n removeItem(buffer, callback);\n };\n var drain = function (arg) {\n buffer.forEach(function (callback) { return callback(arg); });\n buffer.length = 0;\n };\n return {\n add: add,\n remove: remove,\n drain: drain,\n };\n}\n//# sourceMappingURL=boundedBuffer.js.map","export var TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n usage: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { createBoundedBuffer } from '../../tools/boundedBuffer';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '<anonymous>',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\n// eslint-disable-next-line local-rules/disallow-side-effects\nvar preStartTelemetryBuffer = createBoundedBuffer();\nvar onRawTelemetryEventCollected = function (event) {\n preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n};\nexport function startTelemetry(telemetryService, configuration) {\n var _a;\n var contextProvider;\n var observable = new Observable();\n var alreadySentEvents = new Set();\n var telemetryEnabled = !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate);\n var telemetryEnabledPerType = (_a = {},\n _a[TelemetryType.log] = telemetryEnabled,\n _a[TelemetryType.configuration] = telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n _a[TelemetryType.usage] = telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n _a);\n var runtimeEnvInfo = getRuntimeEnvInfo();\n onRawTelemetryEventCollected = function (rawEvent) {\n var stringifiedEvent = jsonStringify(rawEvent);\n if (telemetryEnabledPerType[rawEvent.type] &&\n alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n !alreadySentEvents.has(stringifiedEvent)) {\n var event_1 = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n observable.notify(event_1);\n sendToExtension('telemetry', event_1);\n alreadySentEvents.add(stringifiedEvent);\n }\n };\n startMonitorErrorCollection(addTelemetryError);\n function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n return combine({\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: \"5.29.1\",\n source: 'browser',\n _dd: {\n format_version: 2,\n },\n telemetry: combine(event, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity(),\n sdk_setup: \"npm\",\n }),\n experimental_features: arrayFrom(getExperimentalFeatures()),\n }, contextProvider !== undefined ? contextProvider() : {});\n }\n return {\n setContextProvider: function (provider) {\n contextProvider = provider;\n },\n observable: observable,\n enabled: telemetryEnabled,\n };\n}\nfunction getRuntimeEnvInfo() {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self,\n };\n}\nexport function startFakeTelemetry() {\n var events = [];\n onRawTelemetryEventCollected = function (event) {\n events.push(event);\n };\n return events;\n}\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n preStartTelemetryBuffer.drain();\n}\nexport function resetTelemetry() {\n preStartTelemetryBuffer = createBoundedBuffer();\n onRawTelemetryEventCollected = function (event) {\n preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n };\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n onRawTelemetryEventCollected(assign({\n type: TelemetryType.log,\n message: message,\n status: \"debug\" /* StatusType.debug */,\n }, context));\n}\nexport function addTelemetryError(e, context) {\n onRawTelemetryEventCollected(assign({\n type: TelemetryType.log,\n status: \"error\" /* StatusType.error */,\n }, formatError(e), context));\n}\nexport function addTelemetryConfiguration(configuration) {\n onRawTelemetryEventCollected({\n type: TelemetryType.configuration,\n configuration: configuration,\n });\n}\nexport function addTelemetryUsage(usage) {\n onRawTelemetryEventCollected({\n type: TelemetryType.usage,\n usage: usage,\n });\n}\nexport function formatError(e) {\n if (e instanceof Error) {\n var stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message,\n };\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: \"\".concat(\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */, \" \").concat(jsonStringify(e)),\n };\n}\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport var PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\n//# sourceMappingURL=intakeSites.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { assign } from '../../tools/utils/polyfills';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n // We shallow clone only to prevent mutation of user data.\n var user = assign({}, newUser);\n var keys = ['id', 'name', 'email'];\n keys.forEach(function (key) {\n if (key in user) {\n user[key] = String(user[key]);\n }\n });\n return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n var isValid = getType(newUser) === 'object';\n if (!isValid) {\n display.error('Unsupported user:', newUser);\n }\n return isValid;\n}\n//# sourceMappingURL=user.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(\"\".concat(sdkName, \" is already initialized.\"));\n }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\nvar COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n if (match[1] === name) {\n return match[2];\n }\n }\n else {\n break;\n }\n }\n}\nexport function findCommaSeparatedValues(rawString) {\n var result = new Map();\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n result.set(match[1], match[2]);\n }\n else {\n break;\n }\n }\n return result;\n}\nexport function safeTruncate(candidate, length, suffix) {\n if (suffix === void 0) { suffix = ''; }\n var lastChar = candidate.charCodeAt(length - 1);\n var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength) {\n return candidate;\n }\n return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n//# sourceMappingURL=stringUtils.js.map","import { clocksNow, combine, elapsed, generateUUID, toServerDuration } from '@datadog/browser-core';\nexport function createCustomVitalsState() {\n var vitalsByName = new Map();\n var vitalsByReference = new WeakMap();\n return { vitalsByName: vitalsByName, vitalsByReference: vitalsByReference };\n}\nexport function startVitalCollection(lifeCycle, pageStateHistory, customVitalsState) {\n function isValid(vital) {\n return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, vital.startClocks.relative, vital.duration);\n }\n function addDurationVital(vital) {\n if (isValid(vital)) {\n lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processVital(vital, true));\n }\n }\n return {\n addDurationVital: addDurationVital,\n startDurationVital: function (name, options) {\n if (options === void 0) { options = {}; }\n return startDurationVital(customVitalsState, name, options);\n },\n stopDurationVital: function (nameOrRef, options) {\n if (options === void 0) { options = {}; }\n stopDurationVital(addDurationVital, customVitalsState, nameOrRef, options);\n },\n };\n}\nexport function startDurationVital(_a, name, options) {\n var vitalsByName = _a.vitalsByName, vitalsByReference = _a.vitalsByReference;\n if (options === void 0) { options = {}; }\n var vital = {\n name: name,\n startClocks: clocksNow(),\n context: options.context,\n description: options.description,\n };\n // To avoid leaking implementation details of the vital, we return a reference to it.\n var reference = { __dd_vital_reference: true };\n vitalsByName.set(name, vital);\n // To avoid memory leaks caused by the creation of numerous references (e.g., from improper useEffect implementations), we use a WeakMap.\n vitalsByReference.set(reference, vital);\n return reference;\n}\nexport function stopDurationVital(stopCallback, _a, nameOrRef, options) {\n var vitalsByName = _a.vitalsByName, vitalsByReference = _a.vitalsByReference;\n if (options === void 0) { options = {}; }\n var vitalStart = typeof nameOrRef === 'string' ? vitalsByName.get(nameOrRef) : vitalsByReference.get(nameOrRef);\n if (!vitalStart) {\n return;\n }\n stopCallback(buildDurationVital(vitalStart, vitalStart.startClocks, options, clocksNow()));\n if (typeof nameOrRef === 'string') {\n vitalsByName.delete(nameOrRef);\n }\n else {\n vitalsByReference.delete(nameOrRef);\n }\n}\nfunction buildDurationVital(vitalStart, startClocks, stopOptions, stopClocks) {\n var _a;\n return {\n name: vitalStart.name,\n type: \"duration\" /* VitalType.DURATION */,\n startClocks: startClocks,\n duration: elapsed(startClocks.timeStamp, stopClocks.timeStamp),\n context: combine(vitalStart.context, stopOptions.context),\n description: (_a = stopOptions.description) !== null && _a !== void 0 ? _a : vitalStart.description,\n };\n}\nfunction processVital(vital, valueComputedBySdk) {\n var rawRumEvent = {\n date: vital.startClocks.timeStamp,\n vital: {\n id: generateUUID(),\n type: vital.type,\n name: vital.name,\n duration: toServerDuration(vital.duration),\n description: vital.description,\n },\n type: \"vital\" /* RumEventType.VITAL */,\n };\n if (valueComputedBySdk) {\n rawRumEvent._dd = {\n vital: {\n computed_value: true,\n },\n };\n }\n return {\n rawRumEvent: rawRumEvent,\n startTime: vital.startClocks.relative,\n customerContext: vital.context,\n domainContext: {},\n };\n}\n//# sourceMappingURL=vitalCollection.js.map","import { endsWith, includes } from '../tools/utils/polyfills';\nimport { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n var eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getCapabilities: function () {\n var _a;\n return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n },\n getPrivacyLevel: function () {\n var _a;\n return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n },\n getAllowedWebViewHosts: function () {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send: function (eventType, event, viewId) {\n var view = viewId ? { id: viewId } : undefined;\n eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event, view: view }));\n },\n };\n}\nexport function bridgeSupports(capability) {\n var bridge = getEventBridge();\n return !!bridge && includes(bridge.getCapabilities(), capability);\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n var bridge = getEventBridge();\n return (!!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { arrayFrom, startsWith } from './utils/polyfills';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, _a) {\n var _b = _a === void 0 ? {} : _a, computeHandlingStack = _b.computeHandlingStack;\n var original = targetPrototype[method];\n if (typeof original !== 'function') {\n if (method in targetPrototype && startsWith(method, 'on')) {\n original = noop;\n }\n else {\n return { stop: noop };\n }\n }\n var stopped = false;\n var instrumentation = function () {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments);\n }\n var parameters = arrayFrom(arguments);\n var postCallCallback;\n callMonitored(onPreCall, null, [\n {\n target: this,\n parameters: parameters,\n onPostCall: function (callback) {\n postCallCallback = callback;\n },\n handlingStack: computeHandlingStack ? createHandlingStack() : undefined,\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n var result = original.apply(this, parameters);\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n targetPrototype[method] = instrumentation;\n return {\n stop: function () {\n stopped = true;\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original;\n }\n },\n };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n var originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop };\n }\n var stoppedInstrumentation = noop;\n var instrumentation = function (target, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value);\n }\n }, 0);\n };\n var instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n });\n return {\n stop: function () {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor);\n }\n instrumentation = stoppedInstrumentation;\n },\n };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n }\n catch (_a) {\n return false;\n }\n}\nexport function getPathName(url) {\n var pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function buildUrl(url, base) {\n var supportedURL = getSupportedUrl();\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n }\n catch (error) {\n throw new Error(\"Failed to construct URL: \".concat(String(error), \" \").concat(jsonStringify({ url: url, base: base })));\n }\n }\n if (base === undefined && !/:/.test(url)) {\n throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n }\n var doc = document;\n var anchorElement = doc.createElement('a');\n if (base !== undefined) {\n doc = document.implementation.createHTMLDocument('');\n var baseElement = doc.createElement('base');\n baseElement.href = base;\n doc.head.appendChild(baseElement);\n doc.body.appendChild(anchorElement);\n }\n anchorElement.href = url;\n return anchorElement;\n}\nvar originalURL = URL;\nvar isURLSupported;\nfunction getSupportedUrl() {\n if (isURLSupported === undefined) {\n try {\n var url = new originalURL('http://test/path');\n isURLSupported = url.href === 'http://test/path';\n }\n catch (_a) {\n isURLSupported = false;\n }\n }\n return isURLSupported ? originalURL : undefined;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { assign } from '../tools/utils/polyfills';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nexport function resetFetchObservable() {\n fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n return new Observable(function (observable) {\n if (!window.fetch) {\n return;\n }\n var stop = instrumentMethod(window, 'fetch', function (call) { return beforeSend(call, observable); }, {\n computeHandlingStack: true,\n }).stop;\n return stop;\n });\n}\nfunction beforeSend(_a, observable) {\n var parameters = _a.parameters, onPostCall = _a.onPostCall, handlingStack = _a.handlingStack;\n var input = parameters[0], init = parameters[1];\n var methodFromParams = init && init.method;\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method;\n }\n var method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n var url = input instanceof Request ? input.url : normalizeUrl(String(input));\n var startClocks = clocksNow();\n var context = {\n state: 'start',\n init: init,\n input: input,\n method: method,\n startClocks: startClocks,\n url: url,\n handlingStack: handlingStack,\n };\n observable.notify(context);\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input;\n parameters[1] = context.init;\n onPostCall(function (responsePromise) { return afterSend(observable, responsePromise, context); });\n}\nfunction afterSend(observable, responsePromise, startContext) {\n var context = startContext;\n function reportFetch(partialContext) {\n context.state = 'resolve';\n assign(context, partialContext);\n observable.notify(context);\n }\n responsePromise.then(monitor(function (response) {\n reportFetch({\n response: response,\n responseType: response.type,\n status: response.status,\n isAborted: false,\n });\n }), monitor(function (error) {\n var _a, _b;\n reportFetch({\n status: 0,\n isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n error: error,\n });\n }));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay, options) {\n var date = new Date();\n date.setTime(date.getTime() + expireDelay);\n var expires = \"expires=\".concat(date.toUTCString());\n var sameSite = options && options.crossSite ? 'none' : 'strict';\n var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n var secure = options && options.secure ? ';secure' : '';\n var partitioned = options && options.partitioned ? ';partitioned' : '';\n document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure).concat(partitioned);\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nvar initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie);\n }\n return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n }\n catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n if (getCurrentSiteCache === undefined) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_site_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n var domainLevels = window.location.hostname.split('.');\n var candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n }\n deleteCookie(testCookieName, { domain: candidateDomain });\n getCurrentSiteCache = candidateDomain;\n }\n return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","import { getInitCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n var value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","export function isIE() {\n return detectBrowserCached() === 0 /* Browser.IE */;\n}\nexport function isChromium() {\n return detectBrowserCached() === 1 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n return detectBrowserCached() === 2 /* Browser.SAFARI */;\n}\nvar browserCache;\nfunction detectBrowserCached() {\n return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow) {\n var _a;\n if (browserWindow === void 0) { browserWindow = window; }\n var userAgent = browserWindow.navigator.userAgent;\n if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n return 1 /* Browser.CHROMIUM */;\n }\n if (\n // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n // useragent test as a semi-working fallback.\n ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n return 2 /* Browser.SAFARI */;\n }\n if (browserWindow.document.documentMode) {\n return 0 /* Browser.IE */;\n }\n return 3 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","export var SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nvar SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nvar SESSION_ENTRY_SEPARATOR = '&';\nexport var EXPIRED = '1';\nexport function getExpiredSessionState() {\n return {\n isExpired: EXPIRED,\n };\n}\nexport function isSessionInNotStartedState(session) {\n return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n return objectEntries(session)\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value);\n })\n .join(SESSION_ENTRY_SEPARATOR);\n}\nexport function toSessionState(sessionString) {\n var session = {};\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n var matches = SESSION_ENTRY_REGEXP.exec(entry);\n if (matches !== null) {\n var key = matches[1], value = matches[2];\n session[key] = value;\n }\n });\n }\n return session;\n}\nfunction isValidSessionString(sessionString) {\n return (!!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionState.js.map","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils/timeUtils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\n//# sourceMappingURL=sessionConstants.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n var cookieOptions = buildCookieOptions(initConfiguration);\n return areCookiesAuthorized(cookieOptions) ? { type: 'Cookie', cookieOptions: cookieOptions } : undefined;\n}\nexport function initCookieStrategy(cookieOptions) {\n var cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: persistSessionCookie(cookieOptions),\n retrieveSession: retrieveSessionCookie,\n expireSession: function () { return expireSessionCookie(cookieOptions); },\n };\n tryOldCookiesMigration(cookieStore);\n return cookieStore;\n}\nfunction persistSessionCookie(options) {\n return function (session) {\n setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n };\n}\nfunction expireSessionCookie(options) {\n setCookie(SESSION_STORE_KEY, toSessionString(getExpiredSessionState()), SESSION_TIME_OUT_DELAY, options);\n}\nfunction retrieveSessionCookie() {\n var sessionString = getCookie(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nexport function buildCookieOptions(initConfiguration) {\n var cookieOptions = {};\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie ||\n !!initConfiguration.usePartitionedCrossSiteSessionCookie ||\n !!initConfiguration.useCrossSiteSessionCookie;\n cookieOptions.crossSite =\n !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite();\n }\n return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n var sessionString = getInitCookie(SESSION_STORE_KEY);\n if (!sessionString) {\n var oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n var oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n var oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n var session = {};\n if (oldSessionId) {\n session.id = oldSessionId;\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType;\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType;\n }\n if (isSessionStarted(session)) {\n expandSessionState(session);\n cookieStoreStrategy.persistSession(session);\n }\n }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nvar LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n try {\n var id = generateUUID();\n var testKey = \"\".concat(LOCAL_STORAGE_TEST_KEY).concat(id);\n localStorage.setItem(testKey, id);\n var retrievedId = localStorage.getItem(testKey);\n localStorage.removeItem(testKey);\n return id === retrievedId ? { type: 'LocalStorage' } : undefined;\n }\n catch (e) {\n return undefined;\n }\n}\nexport function initLocalStorageStrategy() {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: expireSessionFromLocalStorage,\n };\n}\nfunction persistInLocalStorage(sessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n var sessionString = localStorage.getItem(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage() {\n persistInLocalStorage(getExpiredSessionState());\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport var LOCK_RETRY_DELAY = 10;\nexport var LOCK_MAX_TRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries) {\n var _a;\n if (numberOfRetries === void 0) { numberOfRetries = 0; }\n var isLockEnabled = sessionStoreStrategy.isLockEnabled, persistSession = sessionStoreStrategy.persistSession, expireSession = sessionStoreStrategy.expireSession;\n var persistWithLock = function (session) { return persistSession(assign({}, session, { lock: currentLock })); };\n var retrieveStore = function () {\n var session = sessionStoreStrategy.retrieveSession();\n var lock = session.lock;\n if (session.lock) {\n delete session.lock;\n }\n return {\n session: session,\n lock: lock,\n };\n };\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy);\n return;\n }\n var currentLock;\n var currentStore = retrieveStore();\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentStore.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = generateUUID();\n persistWithLock(currentStore.session);\n // if lock is not acquired, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n var processedSession = operations.process(currentStore.session);\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n expireSession();\n }\n else {\n expandSessionState(processedSession);\n isLockEnabled ? persistWithLock(processedSession) : persistSession(processedSession);\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n persistSession(currentStore.session);\n processedSession = currentStore.session;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n setTimeout(function () {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n ongoingOperations = undefined;\n var nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore);\n }\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport var STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n var sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy();\n }\n return sessionStoreStrategyType;\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, productKey, computeSessionState) {\n var renewObservable = new Observable();\n var expireObservable = new Observable();\n var sessionStateUpdateObservable = new Observable();\n var sessionStoreStrategy = sessionStoreStrategyType.type === 'Cookie'\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy();\n var expireSession = sessionStoreStrategy.expireSession;\n var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n var sessionCache;\n startSession();\n var _a = throttle(function () {\n processSessionStoreOperations({\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return;\n }\n var synchronizedSession = synchronizeSession(sessionState);\n expandOrRenewSessionState(synchronizedSession);\n return synchronizedSession;\n },\n after: function (sessionState) {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState);\n }\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }, STORAGE_POLL_DELAY), throttledExpandOrRenewSession = _a.throttled, cancelExpandOrRenewSession = _a.cancel;\n function expandSession() {\n processSessionStoreOperations({\n process: function (sessionState) { return (hasSessionInCache() ? synchronizeSession(sessionState) : undefined); },\n }, sessionStoreStrategy);\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations({\n process: function (sessionState) { return (isSessionInExpiredState(sessionState) ? getExpiredSessionState() : undefined); },\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState();\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache();\n }\n else {\n sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n sessionCache = sessionState;\n }\n }\n return sessionState;\n }\n function startSession() {\n processSessionStoreOperations({\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState();\n }\n },\n after: function (sessionState) {\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false;\n }\n var _a = computeSessionState(sessionState[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n sessionState[productKey] = trackingType;\n delete sessionState.isExpired;\n if (isTracked && !sessionState.id) {\n sessionState.id = generateUUID();\n sessionState.created = String(dateNow());\n }\n }\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined;\n }\n function isSessionInCacheOutdated(sessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n }\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState();\n expireObservable.notify();\n }\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState;\n renewObservable.notify();\n }\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations({\n process: function (sessionState) { return assign({}, sessionState, partialSessionState); },\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession: expandSession,\n getSession: function () { return sessionCache; },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n sessionStateUpdateObservable: sessionStateUpdateObservable,\n restartSession: startSession,\n expire: function () {\n cancelExpandOrRenewSession();\n expireSession();\n synchronizeSession(getExpiredSessionState());\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId);\n },\n updateSessionState: updateSessionState,\n };\n}\n//# sourceMappingURL=sessionStore.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, configurationTags) {\n var buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n return {\n build: function (api, payload) {\n var parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload);\n return buildUrlWithParameters(parameters);\n },\n urlPrefix: buildUrlWithParameters(''),\n trackType: trackType,\n };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n var path = \"/api/v2/\".concat(trackType);\n var proxy = initConfiguration.proxy;\n if (typeof proxy === 'string') {\n var normalizedProxyUrl_1 = normalizeUrl(proxy);\n return function (parameters) { return \"\".concat(normalizedProxyUrl_1, \"?ddforward=\").concat(encodeURIComponent(\"\".concat(path, \"?\").concat(parameters))); };\n }\n if (typeof proxy === 'function') {\n return function (parameters) { return proxy({ path: path, parameters: parameters }); };\n }\n var host = buildEndpointHost(trackType, initConfiguration);\n return function (parameters) { return \"https://\".concat(host).concat(path, \"?\").concat(parameters); };\n}\nfunction buildEndpointHost(trackType, initConfiguration) {\n var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US1 : _a, internalAnalyticsSubdomain = initConfiguration.internalAnalyticsSubdomain;\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1;\n }\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return \"\".concat(internalAnalyticsSubdomain, \".\").concat(INTAKE_SITE_US1);\n }\n if (site === INTAKE_SITE_FED_STAGING) {\n return \"http-intake.logs.\".concat(site);\n }\n var domainParts = site.split('.');\n var extension = domainParts.pop();\n return \"browser-intake-\".concat(domainParts.join('-'), \".\").concat(extension);\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(_a, trackType, configurationTags, api, _b) {\n var clientToken = _a.clientToken, internalAnalyticsSubdomain = _a.internalAnalyticsSubdomain;\n var retry = _b.retry, encoding = _b.encoding;\n var tags = [\"sdk_version:\".concat(\"5.29.1\"), \"api:\".concat(api)].concat(configurationTags);\n if (retry) {\n tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n }\n var parameters = [\n 'ddsource=browser',\n \"ddtags=\".concat(encodeURIComponent(tags.join(','))),\n \"dd-api-key=\".concat(clientToken),\n \"dd-evp-origin-version=\".concat(encodeURIComponent(\"5.29.1\")),\n 'dd-evp-origin=browser',\n \"dd-request-id=\".concat(generateUUID()),\n ];\n if (encoding) {\n parameters.push(\"dd-evp-encoding=\".concat(encoding));\n }\n if (trackType === 'rum') {\n parameters.push(\"batch_time=\".concat(timeStampNow()));\n }\n if (internalAnalyticsSubdomain) {\n parameters.reverse();\n }\n return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n var env = configuration.env, service = configuration.service, version = configuration.version, datacenter = configuration.datacenter;\n var tags = [];\n if (env) {\n tags.push(buildTag('env', env));\n }\n if (service) {\n tags.push(buildTag('service', service));\n }\n if (version) {\n tags.push(buildTag('version', version));\n }\n if (datacenter) {\n tags.push(buildTag('datacenter', datacenter));\n }\n return tags;\n}\nexport function buildTag(key, rawValue) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n if (rawValue.length > valueSizeLimit || hasForbiddenCharacters(rawValue)) {\n display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized. \").concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/tagging/#defining-tags\"));\n }\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n var sanitizedValue = rawValue.replace(/,/g, '_');\n return \"\".concat(key, \":\").concat(sanitizedValue);\n}\nfunction hasForbiddenCharacters(rawValue) {\n // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n // Todo: Remove the try/catch when dropping IE11.\n if (!supportUnicodePropertyEscapes()) {\n return false;\n }\n // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n // p{Ll} matches a lowercase letter.\n // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n try {\n new RegExp('[\\\\p{Ll}]', 'u');\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n//# sourceMappingURL=tags.js.map","import { objectValues, assign } from '../../tools/utils/polyfills';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n var site = initConfiguration.site || INTAKE_SITE_US1;\n var tags = buildTags(initConfiguration);\n var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n var intakeUrlPrefixes = computeIntakeUrlPrefixes(endpointBuilders, site);\n var replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags);\n return assign({\n isIntakeUrl: function (url) { return intakeUrlPrefixes.some(function (intakeEndpoint) { return url.indexOf(intakeEndpoint) === 0; }); },\n replica: replicaConfiguration,\n site: site,\n }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n };\n}\nfunction computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags) {\n if (!initConfiguration.replica) {\n return;\n }\n var replicaConfiguration = assign({}, initConfiguration, {\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n });\n var replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n };\n intakeUrlPrefixes.push.apply(intakeUrlPrefixes, objectValues(replicaEndpointBuilders).map(function (builder) { return builder.urlPrefix; }));\n return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\nfunction computeIntakeUrlPrefixes(endpointBuilders, site) {\n var intakeUrlPrefixes = objectValues(endpointBuilders).map(function (builder) { return builder.urlPrefix; });\n if (site === INTAKE_SITE_US1) {\n intakeUrlPrefixes.push(\"https://\".concat(PCI_INTAKE_HOST_US1, \"/\"));\n }\n return intakeUrlPrefixes;\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n};\nexport var TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n display.error(\"\".concat(tagName, \" must be defined as a string\"));\n return false;\n }\n return true;\n}\nfunction isDatadogSite(site) {\n if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n display.error(\"Site should be a valid Datadog site. \".concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/site/.\"));\n return false;\n }\n return true;\n}\nexport function isSampleRate(sampleRate, name) {\n if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n display.error(\"\".concat(name, \" Sample Rate should be a number between 0 and 100\"));\n return false;\n }\n return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration) {\n var _a, _b, _c, _d, _e;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n if (!isDatadogSite(initConfiguration.site) ||\n !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n !isString(initConfiguration.version, 'Version') ||\n !isString(initConfiguration.env, 'Env') ||\n !isString(initConfiguration.service, 'Service')) {\n return;\n }\n if (initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n return;\n }\n return assign({\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n service: initConfiguration.service || undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: (_e = initConfiguration.trackingConsent) !== null && _e !== void 0 ? _e : TrackingConsent.GRANTED,\n storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND),\n /**\n * Logs intake limit\n */\n batchMessagesLimit: 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n }, computeTransportConfiguration(initConfiguration));\n}\nexport function serializeConfiguration(initConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent,\n };\n}\n//# sourceMappingURL=configuration.js.map","import { startsWith } from './utils/polyfills';\nimport { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n var itemType = getType(item);\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith) {\n if (useStartsWith === void 0) { useStartsWith = false; }\n return list.some(function (item) {\n try {\n if (typeof item === 'function') {\n return item(value);\n }\n else if (item instanceof RegExp) {\n return item.test(value);\n }\n else if (typeof item === 'string') {\n return useStartsWith ? startsWith(value, item) : item === value;\n }\n }\n catch (e) {\n display.error(e);\n }\n return false;\n });\n}\n//# sourceMappingURL=matchOption.js.map","import { objectEntries, shallowClone, performDraw, isNumber, assign, find, getType, isMatchOption, matchList, TraceContextInjection, } from '@datadog/browser-core';\nexport function isTracingOption(item) {\n var expectedItem = item;\n return (getType(expectedItem) === 'object' &&\n isMatchOption(expectedItem.match) &&\n Array.isArray(expectedItem.propagatorTypes));\n}\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined;\n context.spanId = undefined;\n context.traceSampled = undefined;\n }\n}\nexport function startTracer(configuration, sessionManager) {\n return {\n clearTracingIfNeeded: clearTracingIfNeeded,\n traceFetch: function (context) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n var _a;\n if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n context.input = new Request(context.input);\n Object.keys(tracingHeaders).forEach(function (key) {\n ;\n context.input.headers.append(key, tracingHeaders[key]);\n });\n }\n else {\n context.init = shallowClone(context.init);\n var headers_1 = [];\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach(function (value, key) {\n headers_1.push([key, value]);\n });\n }\n else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach(function (header) {\n headers_1.push(header);\n });\n }\n else if (context.init.headers) {\n Object.keys(context.init.headers).forEach(function (key) {\n headers_1.push([key, context.init.headers[key]]);\n });\n }\n context.init.headers = headers_1.concat(objectEntries(tracingHeaders));\n }\n });\n },\n traceXhr: function (context, xhr) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n Object.keys(tracingHeaders).forEach(function (name) {\n xhr.setRequestHeader(name, tracingHeaders[name]);\n });\n });\n },\n };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n return;\n }\n var tracingOption = find(configuration.allowedTracingUrls, function (tracingOption) {\n return matchList([tracingOption.match], context.url, true);\n });\n if (!tracingOption) {\n return;\n }\n context.traceSampled = !isNumber(configuration.traceSampleRate) || performDraw(configuration.traceSampleRate);\n if (!context.traceSampled && configuration.traceContextInjection !== TraceContextInjection.ALL) {\n return;\n }\n context.traceId = createTraceIdentifier();\n context.spanId = createTraceIdentifier();\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes));\n}\nexport function isTracingSupported() {\n return getCrypto() !== undefined;\n}\nexport function getCrypto() {\n return window.crypto || window.msCrypto;\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled, propagatorTypes) {\n var tracingHeaders = {};\n propagatorTypes.forEach(function (propagatorType) {\n switch (propagatorType) {\n case 'datadog': {\n assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toDecimalString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toDecimalString(),\n });\n break;\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext': {\n assign(tracingHeaders, {\n traceparent: \"00-0000000000000000\".concat(traceId.toPaddedHexadecimalString(), \"-\").concat(spanId.toPaddedHexadecimalString(), \"-0\").concat(traceSampled ? '1' : '0'),\n });\n break;\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3': {\n assign(tracingHeaders, {\n b3: \"\".concat(traceId.toPaddedHexadecimalString(), \"-\").concat(spanId.toPaddedHexadecimalString(), \"-\").concat(traceSampled ? '1' : '0'),\n });\n break;\n }\n case 'b3multi': {\n assign(tracingHeaders, {\n 'X-B3-TraceId': traceId.toPaddedHexadecimalString(),\n 'X-B3-SpanId': spanId.toPaddedHexadecimalString(),\n 'X-B3-Sampled': traceSampled ? '1' : '0',\n });\n break;\n }\n }\n });\n return tracingHeaders;\n}\nexport function createTraceIdentifier() {\n var buffer = new Uint8Array(8);\n getCrypto().getRandomValues(buffer);\n buffer[0] = buffer[0] & 0x7f; // force 63-bit\n function readInt32(offset) {\n return buffer[offset] * 16777216 + (buffer[offset + 1] << 16) + (buffer[offset + 2] << 8) + buffer[offset + 3];\n }\n function toString(radix) {\n var high = readInt32(0);\n var low = readInt32(4);\n var str = '';\n do {\n var mod = (high % radix) * 4294967296 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n } while (high || low);\n return str;\n }\n /**\n * Format used everywhere except the trace intake\n */\n function toDecimalString() {\n return toString(10);\n }\n /**\n * Format used by OTel headers\n */\n function toPaddedHexadecimalString() {\n var traceId = toString(16);\n return Array(17 - traceId.length).join('0') + traceId;\n }\n return {\n toDecimalString: toDecimalString,\n toPaddedHexadecimalString: toPaddedHexadecimalString,\n };\n}\n/* eslint-enable no-bitwise */\n//# sourceMappingURL=tracer.js.map","import { getType, arrayFrom, isMatchOption, serializeConfiguration, assign, DefaultPrivacyLevel, TraceContextInjection, display, objectHasValue, validateAndBuildConfiguration, isSampleRate, } from '@datadog/browser-core';\nimport { isTracingOption } from '../tracing/tracer';\nexport var DEFAULT_PROPAGATOR_TYPES = ['tracecontext', 'datadog'];\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n var _a, _b;\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.');\n return;\n }\n if (!isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||\n !isSampleRate(initConfiguration.traceSampleRate, 'Trace')) {\n return;\n }\n if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n display.error('Excluded Activity Urls should be an array');\n return;\n }\n var allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n if (!allowedTracingUrls) {\n return;\n }\n var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n if (!baseConfiguration) {\n return;\n }\n return assign({\n applicationId: initConfiguration.applicationId,\n version: initConfiguration.version || undefined,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate: (_a = initConfiguration.sessionReplaySampleRate) !== null && _a !== void 0 ? _a : 0,\n startSessionReplayRecordingManually: !!initConfiguration.startSessionReplayRecordingManually,\n traceSampleRate: initConfiguration.traceSampleRate,\n allowedTracingUrls: allowedTracingUrls,\n excludedActivityUrls: (_b = initConfiguration.excludedActivityUrls) !== null && _b !== void 0 ? _b : [],\n workerUrl: initConfiguration.workerUrl,\n compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n trackUserInteractions: !!initConfiguration.trackUserInteractions,\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: !!initConfiguration.trackResources,\n trackLongTasks: !!initConfiguration.trackLongTasks,\n subdomain: initConfiguration.subdomain,\n defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n ? initConfiguration.defaultPrivacyLevel\n : DefaultPrivacyLevel.MASK,\n enablePrivacyForActionName: !!initConfiguration.enablePrivacyForActionName,\n customerDataTelemetrySampleRate: 1,\n traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection)\n ? initConfiguration.traceContextInjection\n : TraceContextInjection.ALL,\n plugins: initConfiguration.betaPlugins || [],\n }, baseConfiguration);\n}\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n if (initConfiguration.allowedTracingUrls === undefined) {\n return [];\n }\n if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n display.error('Allowed Tracing URLs should be an array');\n return;\n }\n if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled');\n return;\n }\n // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n var tracingOptions = [];\n initConfiguration.allowedTracingUrls.forEach(function (option) {\n if (isMatchOption(option)) {\n tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES });\n }\n else if (isTracingOption(option)) {\n tracingOptions.push(option);\n }\n else {\n display.warn('Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter', option);\n }\n });\n return tracingOptions;\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration) {\n var usedTracingPropagators = new Set();\n if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n configuration.allowedTracingUrls.forEach(function (option) {\n if (isMatchOption(option)) {\n DEFAULT_PROPAGATOR_TYPES.forEach(function (propagatorType) { return usedTracingPropagators.add(propagatorType); });\n }\n else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n option.propagatorTypes.forEach(function (propagatorType) { return usedTracingPropagators.add(propagatorType); });\n }\n });\n }\n return arrayFrom(usedTracingPropagators);\n}\nexport function serializeRumConfiguration(configuration) {\n var _a;\n var baseSerializedConfiguration = serializeConfiguration(configuration);\n return assign({\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n trace_sample_rate: configuration.traceSampleRate,\n trace_context_injection: configuration.traceContextInjection,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_urls: Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n enable_privacy_for_action_name: configuration.enablePrivacyForActionName,\n use_excluded_activity_urls: Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n use_worker_url: !!configuration.workerUrl,\n compress_intake_requests: configuration.compressIntakeRequests,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: configuration.trackUserInteractions,\n track_resources: configuration.trackResources,\n track_long_task: configuration.trackLongTasks,\n plugins: (_a = configuration.betaPlugins) === null || _a === void 0 ? void 0 : _a.map(function (plugin) { var _a; return assign({ name: plugin.name }, (_a = plugin.getConfigurationTelemetry) === null || _a === void 0 ? void 0 : _a.call(plugin)); }),\n }, baseSerializedConfiguration);\n}\n//# sourceMappingURL=configuration.js.map","import { display, addEventListener, assign } from '@datadog/browser-core';\nexport var REMOTE_CONFIGURATION_URL = 'https://d3uc069fcn7uxw.cloudfront.net/configuration';\nexport function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {\n fetchRemoteConfiguration(initConfiguration, function (remoteInitConfiguration) {\n callback(applyRemoteConfiguration(initConfiguration, remoteInitConfiguration));\n });\n}\nexport function applyRemoteConfiguration(initConfiguration, remoteInitConfiguration) {\n return assign({}, initConfiguration, remoteInitConfiguration);\n}\nexport function fetchRemoteConfiguration(configuration, callback) {\n var xhr = new XMLHttpRequest();\n addEventListener(configuration, xhr, 'load', function () {\n if (xhr.status === 200) {\n callback(JSON.parse(xhr.responseText));\n }\n else {\n displayRemoteConfigurationFetchingError();\n }\n });\n addEventListener(configuration, xhr, 'error', function () {\n displayRemoteConfigurationFetchingError();\n });\n xhr.open('GET', \"\".concat(REMOTE_CONFIGURATION_URL, \"/\").concat(encodeURIComponent(configuration.remoteConfigurationId), \".json\"));\n xhr.send();\n}\nfunction displayRemoteConfigurationFetchingError() {\n display.error('Error fetching the remote configuration.');\n}\n//# sourceMappingURL=remoteConfiguration.js.map","import { createBoundedBuffer, display, canUseEventBridge, displayAlreadyInitializedError, willSyntheticsInjectRum, noop, timeStampNow, clocksNow, assign, getEventBridge, ExperimentalFeature, isExperimentalFeatureEnabled, initFeatureFlags, addTelemetryConfiguration, initFetchObservable, } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration, } from '../domain/configuration';\nimport { startDurationVital, stopDurationVital } from '../domain/vital/vitalCollection';\nimport { fetchAndApplyRemoteConfiguration, serializeRumConfiguration } from '../domain/configuration';\nimport { callPluginsMethod } from '../domain/plugins';\nexport function createPreStartStrategy(_a, getCommonContext, trackingConsentState, customVitalsState, doStartRum) {\n var ignoreInitIfSyntheticsWillInjectRum = _a.ignoreInitIfSyntheticsWillInjectRum, startDeflateWorker = _a.startDeflateWorker;\n var bufferApiCalls = createBoundedBuffer();\n var firstStartViewCall;\n var deflateWorker;\n var cachedInitConfiguration;\n var cachedConfiguration;\n var trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum);\n function tryStartRum() {\n if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n return;\n }\n trackingConsentStateSubscription.unsubscribe();\n var initialViewOptions;\n if (cachedConfiguration.trackViewsManually) {\n if (!firstStartViewCall) {\n return;\n }\n // An initial view is always created when starting RUM.\n // When tracking views automatically, any startView call before RUM start creates an extra\n // view.\n // When tracking views manually, we use the ViewOptions from the first startView call as the\n // initial view options, and we remove the actual startView call so we don't create an extra\n // view.\n bufferApiCalls.remove(firstStartViewCall.callback);\n initialViewOptions = firstStartViewCall.options;\n }\n var startRumResult = doStartRum(cachedConfiguration, deflateWorker, initialViewOptions);\n bufferApiCalls.drain(startRumResult);\n }\n function doInit(initConfiguration) {\n var eventBridgeAvailable = canUseEventBridge();\n if (eventBridgeAvailable) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n }\n // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n cachedInitConfiguration = initConfiguration;\n addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_RUM', initConfiguration);\n return;\n }\n var configuration = validateAndBuildRumConfiguration(initConfiguration);\n if (!configuration) {\n return;\n }\n if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n display.warn('No storage available for session. We will not send any data.');\n return;\n }\n if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n deflateWorker = startDeflateWorker(configuration, 'Datadog RUM', \n // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n // issues are reported asynchronously. For now, the SDK will continue its execution even if\n // data won't be sent to Datadog. We could improve this behavior in the future.\n noop);\n if (!deflateWorker) {\n // `startDeflateWorker` should have logged an error message explaining the issue\n return;\n }\n }\n cachedConfiguration = configuration;\n // Instrumuent fetch to track network requests\n // This is needed in case the consent is not granted and some cutsomer\n // library (Apollo Client) is storing uninstrumented fetch to be used later\n // The subscrption is needed so that the instrumentation process is completed\n initFetchObservable().subscribe(noop);\n trackingConsentState.tryToInit(configuration.trackingConsent);\n tryStartRum();\n }\n var addDurationVital = function (vital) {\n bufferApiCalls.add(function (startRumResult) { return startRumResult.addDurationVital(vital); });\n };\n return {\n init: function (initConfiguration, publicApi) {\n if (!initConfiguration) {\n display.error('Missing configuration');\n return;\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration;\n // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n // to completely discard the customer application RUM instance by ignoring their init() call.\n // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n return;\n }\n callPluginsMethod(initConfiguration.betaPlugins, 'onInit', { initConfiguration: initConfiguration, publicApi: publicApi });\n if (initConfiguration.remoteConfigurationId &&\n isExperimentalFeatureEnabled(ExperimentalFeature.REMOTE_CONFIGURATION)) {\n fetchAndApplyRemoteConfiguration(initConfiguration, doInit);\n }\n else {\n doInit(initConfiguration);\n }\n },\n get initConfiguration() {\n return cachedInitConfiguration;\n },\n getInternalContext: noop,\n stopSession: noop,\n addTiming: function (name, time) {\n if (time === void 0) { time = timeStampNow(); }\n bufferApiCalls.add(function (startRumResult) { return startRumResult.addTiming(name, time); });\n },\n startView: function (options, startClocks) {\n if (startClocks === void 0) { startClocks = clocksNow(); }\n var callback = function (startRumResult) {\n startRumResult.startView(options, startClocks);\n };\n bufferApiCalls.add(callback);\n if (!firstStartViewCall) {\n firstStartViewCall = { options: options, callback: callback };\n tryStartRum();\n }\n },\n updateViewName: function (name) {\n bufferApiCalls.add(function (startRumResult) { return startRumResult.updateViewName(name); });\n },\n setViewContext: function (context) {\n bufferApiCalls.add(function (startRumResult) { return startRumResult.setViewContext(context); });\n },\n setViewContextProperty: function (key, value) {\n bufferApiCalls.add(function (startRumResult) { return startRumResult.setViewContextProperty(key, value); });\n },\n addAction: function (action, commonContext) {\n if (commonContext === void 0) { commonContext = getCommonContext(); }\n bufferApiCalls.add(function (startRumResult) { return startRumResult.addAction(action, commonContext); });\n },\n addError: function (providedError, commonContext) {\n if (commonContext === void 0) { commonContext = getCommonContext(); }\n bufferApiCalls.add(function (startRumResult) { return startRumResult.addError(providedError, commonContext); });\n },\n addFeatureFlagEvaluation: function (key, value) {\n bufferApiCalls.add(function (startRumResult) { return startRumResult.addFeatureFlagEvaluation(key, value); });\n },\n startDurationVital: function (name, options) {\n return startDurationVital(customVitalsState, name, options);\n },\n stopDurationVital: function (name, options) {\n stopDurationVital(addDurationVital, customVitalsState, name, options);\n },\n addDurationVital: addDurationVital,\n };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n var _a, _b;\n return assign({}, initConfiguration, {\n applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n clientToken: 'empty',\n sessionSampleRate: 100,\n defaultPrivacyLevel: (_a = initConfiguration.defaultPrivacyLevel) !== null && _a !== void 0 ? _a : (_b = getEventBridge()) === null || _b === void 0 ? void 0 : _b.getPrivacyLevel(),\n });\n}\n//# sourceMappingURL=preStartRum.js.map","export function callPluginsMethod(plugins, methodName, parameter) {\n if (!plugins) {\n return;\n }\n for (var _i = 0, plugins_1 = plugins; _i < plugins_1.length; _i++) {\n var plugin = plugins_1[_i];\n var method = plugin[methodName];\n if (method) {\n method(parameter);\n }\n }\n}\n//# sourceMappingURL=plugins.js.map","import { Observable } from '../tools/observable';\nimport { objectValues, includes } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport var PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n};\nexport function createPageExitObservable(configuration) {\n return new Observable(function (observable) {\n var stopListeners = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], function (event) {\n if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN });\n }\n else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN });\n }\n }, { capture: true }).stop;\n var stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, function () {\n observable.notify({ reason: PageExitReason.UNLOADING });\n }).stop;\n return function () {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n}\nexport function isPageExitReason(reason) {\n return includes(objectValues(PageExitReason), reason);\n}\n//# sourceMappingURL=pageExitObservable.js.map","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n var MutationObserver = getMutationObserverConstructor();\n return new Observable(function (observable) {\n if (!MutationObserver) {\n return;\n }\n var observer = new MutationObserver(monitor(function () { return observable.notify(); }));\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n return function () { return observer.disconnect(); };\n });\n}\nexport function getMutationObserverConstructor() {\n var constructor;\n var browserWindow = window;\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we try to get the original MutationObserver constructor stored by\n // Zone.js.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n //\n // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver');\n if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n // instance in its properties[4]. Let's get the original MutationObserver constructor from\n // there.\n //\n // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n var patchedInstance = new browserWindow.MutationObserver(noop);\n var originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n constructor = originalInstance && originalInstance.constructor;\n }\n }\n if (!constructor) {\n constructor = browserWindow.MutationObserver;\n }\n return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","export var ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n var eventCount = 0;\n var allowNextEvent = false;\n return {\n isLimitReached: function () {\n if (eventCount === 0) {\n setTimeout(function () {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n }\n finally {\n allowNextEvent = false;\n }\n }\n return true;\n },\n };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function getSyntheticsContext() {\n var testId = getSyntheticsTestId();\n var resultId = getSyntheticsResultId();\n if (testId && resultId) {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum(),\n };\n }\n}\n//# sourceMappingURL=syntheticsContext.js.map","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n var clone = deepClone(object);\n var result = modifier(clone);\n objectEntries(modifiableFieldPaths).forEach(function (_a) {\n var fieldPath = _a[0], fieldType = _a[1];\n var newValue = get(clone, fieldPath);\n var newType = getType(newValue);\n if (newType === fieldType) {\n set(object, fieldPath, sanitize(newValue));\n }\n else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, fieldPath, {});\n }\n });\n return result;\n}\nfunction get(object, path) {\n var current = object;\n for (var _i = 0, _a = path.split('.'); _i < _a.length; _i++) {\n var field = _a[_i];\n if (!isValidObjectContaining(current, field)) {\n return;\n }\n current = current[field];\n }\n return current;\n}\nfunction set(object, path, value) {\n var current = object;\n var fields = path.split('.');\n for (var i = 0; i < fields.length; i += 1) {\n var field = fields[i];\n if (!isValidObject(current)) {\n return;\n }\n if (i !== fields.length - 1) {\n current = current[field];\n }\n else {\n current[field] = value;\n }\n }\n}\nfunction isValidObject(object) {\n return getType(object) === 'object';\n}\nfunction isValidObjectContaining(object, field) {\n return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field);\n}\n//# sourceMappingURL=limitModification.js.map","import { combine, isEmptyObject, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, assign, round, isExperimentalFeatureEnabled, ExperimentalFeature, getConnectivity, } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './contexts/syntheticsContext';\nimport { limitModification } from './limitModification';\nvar VIEW_MODIFIABLE_FIELD_PATHS = {\n 'view.name': 'string',\n 'view.url': 'string',\n 'view.referrer': 'string',\n};\nvar USER_CUSTOMIZABLE_FIELD_PATHS = {\n context: 'object',\n};\nvar ROOT_MODIFIABLE_FIELD_PATHS = {\n service: 'string',\n version: 'string',\n};\nvar modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewHistory, urlContexts, actionContexts, displayContext, ciVisibilityContext, getCommonContext, reportError) {\n var _a, _b;\n modifiableFieldPathsByEvent = (_a = {},\n _a[\"view\" /* RumEventType.VIEW */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n _a[\"error\" /* RumEventType.ERROR */] = assign({\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string',\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n _a[\"resource\" /* RumEventType.RESOURCE */] = assign({\n 'resource.url': 'string',\n }, isExperimentalFeatureEnabled(ExperimentalFeature.WRITABLE_RESOURCE_GRAPHQL)\n ? {\n 'resource.graphql': 'object',\n }\n : {}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n _a[\"action\" /* RumEventType.ACTION */] = assign({\n 'action.target.name': 'string',\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS, ROOT_MODIFIABLE_FIELD_PATHS),\n _a[\"long_task\" /* RumEventType.LONG_TASK */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n _a[\"vital\" /* RumEventType.VITAL */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n _a);\n var eventRateLimiters = (_b = {},\n _b[\"error\" /* RumEventType.ERROR */] = createEventRateLimiter(\"error\" /* RumEventType.ERROR */, configuration.eventRateLimiterThreshold, reportError),\n _b[\"action\" /* RumEventType.ACTION */] = createEventRateLimiter(\"action\" /* RumEventType.ACTION */, configuration.eventRateLimiterThreshold, reportError),\n _b[\"vital\" /* RumEventType.VITAL */] = createEventRateLimiter(\"vital\" /* RumEventType.VITAL */, configuration.eventRateLimiterThreshold, reportError),\n _b);\n var syntheticsContext = getSyntheticsContext();\n lifeCycle.subscribe(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (_a) {\n var startTime = _a.startTime, rawRumEvent = _a.rawRumEvent, domainContext = _a.domainContext, savedCommonContext = _a.savedCommonContext, customerContext = _a.customerContext;\n var viewHistoryEntry = viewHistory.findView(startTime);\n var urlContext = urlContexts.findUrl(startTime);\n var session = sessionManager.findTrackedSession(startTime);\n if (session && viewHistoryEntry && urlContext) {\n var commonContext = savedCommonContext || getCommonContext();\n var actionId = actionContexts.findActionId(startTime);\n var rumContext = {\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n configuration: {\n session_sample_rate: round(configuration.sessionSampleRate, 3),\n session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n },\n browser_sdk_version: canUseEventBridge() ? \"5.29.1\" : undefined,\n },\n application: {\n id: configuration.applicationId,\n },\n date: timeStampNow(),\n service: viewHistoryEntry.service || configuration.service,\n version: viewHistoryEntry.version || configuration.version,\n source: 'browser',\n session: {\n id: session.id,\n type: syntheticsContext\n ? \"synthetics\" /* SessionType.SYNTHETICS */\n : ciVisibilityContext.get()\n ? \"ci_test\" /* SessionType.CI_TEST */\n : \"user\" /* SessionType.USER */,\n },\n view: {\n id: viewHistoryEntry.id,\n name: viewHistoryEntry.name,\n url: urlContext.url,\n referrer: urlContext.referrer,\n },\n action: needToAssembleWithAction(rawRumEvent) && actionId ? { id: actionId } : undefined,\n synthetics: syntheticsContext,\n ci_test: ciVisibilityContext.get(),\n display: displayContext.get(),\n connectivity: getConnectivity(),\n };\n var serverRumEvent = combine(rumContext, rawRumEvent);\n serverRumEvent.context = combine(commonContext.context, viewHistoryEntry.context, customerContext);\n if (!('has_replay' in serverRumEvent.session)) {\n ;\n serverRumEvent.session.has_replay = commonContext.hasReplay;\n }\n if (serverRumEvent.type === 'view') {\n ;\n serverRumEvent.session.sampled_for_replay =\n session.sessionReplay === 1 /* SessionReplayState.SAMPLED */;\n }\n if (!isEmptyObject(commonContext.user)) {\n ;\n serverRumEvent.usr = commonContext.user;\n }\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context;\n }\n lifeCycle.notify(12 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n }\n }\n });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n var _a;\n if (beforeSend) {\n var result = limitModification(event, modifiableFieldPathsByEvent[event.type], function (event) {\n return beforeSend(event, domainContext);\n });\n if (result === false && event.type !== \"view\" /* RumEventType.VIEW */) {\n return false;\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\");\n }\n }\n var rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n return [\"error\" /* RumEventType.ERROR */, \"resource\" /* RumEventType.RESOURCE */, \"long_task\" /* RumEventType.LONG_TASK */].indexOf(event.type) !== -1;\n}\n//# sourceMappingURL=assembly.js.map","// eslint-disable-next-line no-restricted-syntax\nvar AbstractLifeCycle = /** @class */ (function () {\n function AbstractLifeCycle() {\n this.callbacks = {};\n }\n AbstractLifeCycle.prototype.notify = function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach(function (callback) { return callback(data); });\n }\n };\n AbstractLifeCycle.prototype.subscribe = function (eventType, callback) {\n var _this = this;\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: function () {\n _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) { return callback !== other; });\n },\n };\n };\n return AbstractLifeCycle;\n}());\nexport { AbstractLifeCycle };\n//# sourceMappingURL=abstractLifeCycle.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport var LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nexport function createValueHistory(_a) {\n var expireDelay = _a.expireDelay, maxEntries = _a.maxEntries;\n var entries = [];\n var clearOldValuesInterval = setInterval(function () { return clearOldValues(); }, CLEAR_OLD_VALUES_INTERVAL);\n function clearOldValues() {\n var oldTimeThreshold = relativeNow() - expireDelay;\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n entries.pop();\n }\n }\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n function add(value, startTime) {\n var entry = {\n value: value,\n startTime: startTime,\n endTime: END_OF_TIMES,\n remove: function () {\n removeItem(entries, entry);\n },\n close: function (endTime) {\n entry.endTime = endTime;\n },\n };\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop();\n }\n entries.unshift(entry);\n return entry;\n }\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n *\n * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n */\n function find(startTime, options) {\n if (startTime === void 0) { startTime = END_OF_TIMES; }\n if (options === void 0) { options = { returnInactive: false }; }\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.startTime <= startTime) {\n if (options.returnInactive || startTime <= entry.endTime) {\n return entry.value;\n }\n break;\n }\n }\n }\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n function closeActive(endTime) {\n var latestEntry = entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n }\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n function findAll(startTime, duration) {\n if (startTime === void 0) { startTime = END_OF_TIMES; }\n if (duration === void 0) { duration = 0; }\n var endTime = addDuration(startTime, duration);\n return entries\n .filter(function (entry) { return entry.startTime <= endTime && startTime <= entry.endTime; })\n .map(function (entry) { return entry.value; });\n }\n /**\n * Remove all entries from this collection.\n */\n function reset() {\n entries = [];\n }\n /**\n * Stop internal garbage collection of past entries.\n */\n function stop() {\n clearInterval(clearOldValuesInterval);\n }\n return { add: add, find: find, closeActive: closeActive, findAll: findAll, reset: reset, stop: stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport var VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewHistory(lifeCycle) {\n var viewValueHistory = createValueHistory({ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY });\n lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (view) {\n viewValueHistory.add(buildViewHistoryEntry(view), view.startClocks.relative);\n });\n lifeCycle.subscribe(5 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n viewValueHistory.closeActive(endClocks.relative);\n });\n lifeCycle.subscribe(3 /* LifeCycleEventType.VIEW_UPDATED */, function (viewUpdate) {\n var currentView = viewValueHistory.find(viewUpdate.startClocks.relative);\n if (currentView && viewUpdate.name) {\n currentView.name = viewUpdate.name;\n }\n if (currentView && viewUpdate.context) {\n currentView.context = viewUpdate.context;\n }\n });\n lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n viewValueHistory.reset();\n });\n function buildViewHistoryEntry(view) {\n return {\n service: view.service,\n version: view.version,\n context: view.context,\n id: view.id,\n name: view.name,\n startClocks: view.startClocks,\n };\n }\n return {\n findView: function (startTime) { return viewValueHistory.find(startTime); },\n stop: function () {\n viewValueHistory.stop();\n },\n };\n}\n//# sourceMappingURL=viewHistory.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n return new Observable(function (observable) {\n var stopInstrumentingStart = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr).stop;\n var stopInstrumentingSend = instrumentMethod(XMLHttpRequest.prototype, 'send', function (call) {\n sendXhr(call, configuration, observable);\n }, { computeHandlingStack: true }).stop;\n var stopInstrumentingAbort = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr).stop;\n return function () {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n}\nfunction openXhr(_a) {\n var xhr = _a.target, _b = _a.parameters, method = _b[0], url = _b[1];\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url)),\n });\n}\nfunction sendXhr(_a, configuration, observable) {\n var xhr = _a.target, handlingStack = _a.handlingStack;\n var context = xhrContexts.get(xhr);\n if (!context) {\n return;\n }\n var startContext = context;\n startContext.state = 'start';\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = xhr;\n startContext.handlingStack = handlingStack;\n var hasBeenReported = false;\n var stopInstrumentingOnReadyStateChange = instrumentMethod(xhr, 'onreadystatechange', function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during an onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n }).stop;\n var onEnd = function () {\n unsubscribeLoadEndListener();\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n var completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = xhr.status;\n observable.notify(shallowClone(completeContext));\n };\n var unsubscribeLoadEndListener = addEventListener(configuration, xhr, 'loadend', onEnd).stop;\n observable.notify(startContext);\n}\nfunction abortXhr(_a) {\n var xhr = _a.target;\n var context = xhrContexts.get(xhr);\n if (context) {\n context.isAborted = true;\n }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { addTelemetryDebug, elapsed, getPathName, includes, isValidUrl, toServerDuration, } from '@datadog/browser-core';\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document';\nvar RESOURCE_TYPES = [\n [\"document\" /* ResourceType.DOCUMENT */, function (initiatorType) { return FAKE_INITIAL_DOCUMENT === initiatorType; }],\n [\"xhr\" /* ResourceType.XHR */, function (initiatorType) { return 'xmlhttprequest' === initiatorType; }],\n [\"fetch\" /* ResourceType.FETCH */, function (initiatorType) { return 'fetch' === initiatorType; }],\n [\"beacon\" /* ResourceType.BEACON */, function (initiatorType) { return 'beacon' === initiatorType; }],\n [\"css\" /* ResourceType.CSS */, function (_, path) { return /\\.css$/i.test(path); }],\n [\"js\" /* ResourceType.JS */, function (_, path) { return /\\.js$/i.test(path); }],\n [\n \"image\" /* ResourceType.IMAGE */,\n function (initiatorType, path) {\n return includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null;\n },\n ],\n [\"font\" /* ResourceType.FONT */, function (_, path) { return /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null; }],\n [\n \"media\" /* ResourceType.MEDIA */,\n function (initiatorType, path) {\n return includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null;\n },\n ],\n];\nexport function computeResourceEntryType(entry) {\n var url = entry.name;\n if (!isValidUrl(url)) {\n addTelemetryDebug(\"Failed to construct URL for \\\"\".concat(entry.name, \"\\\"\"));\n return \"other\" /* ResourceType.OTHER */;\n }\n var path = getPathName(url);\n for (var _i = 0, RESOURCE_TYPES_1 = RESOURCE_TYPES; _i < RESOURCE_TYPES_1.length; _i++) {\n var _a = RESOURCE_TYPES_1[_i], type = _a[0], isType = _a[1];\n if (isType(entry.initiatorType, path)) {\n return type;\n }\n }\n return \"other\" /* ResourceType.OTHER */;\n}\nfunction areInOrder() {\n var numbers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n numbers[_i] = arguments[_i];\n }\n for (var i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false;\n }\n }\n return true;\n}\nexport function isResourceEntryRequestType(entry) {\n return entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch';\n}\nexport function computeResourceEntryDuration(entry) {\n var duration = entry.duration, startTime = entry.startTime, responseEnd = entry.responseEnd;\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return toServerDuration(elapsed(startTime, responseEnd));\n }\n return toServerDuration(duration);\n}\nexport function computeResourceEntryDetails(entry) {\n if (!hasValidResourceEntryTimings(entry)) {\n return undefined;\n }\n var startTime = entry.startTime, fetchStart = entry.fetchStart, redirectStart = entry.redirectStart, redirectEnd = entry.redirectEnd, domainLookupStart = entry.domainLookupStart, domainLookupEnd = entry.domainLookupEnd, connectStart = entry.connectStart, secureConnectionStart = entry.secureConnectionStart, connectEnd = entry.connectEnd, requestStart = entry.requestStart, responseStart = entry.responseStart, responseEnd = entry.responseEnd;\n var details = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart),\n };\n // Make sure a connection occurred\n if (fetchStart < connectEnd) {\n details.connect = formatTiming(startTime, connectStart, connectEnd);\n // Make sure a secure connection occurred\n if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n }\n }\n // Make sure a domain lookup occurred\n if (fetchStart < domainLookupEnd) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n }\n // Make sure a redirection occurred\n if (startTime < redirectEnd) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n }\n return details;\n}\n/**\n * Entries with negative duration are unexpected and should be dismissed. The intake will ignore RUM\n * Resource events with negative durations anyway.\n * Since Chromium 128, more entries have unexpected negative durations, see\n * https://issues.chromium.org/issues/363031537\n */\nexport function hasValidResourceEntryDuration(entry) {\n return entry.duration >= 0;\n}\nexport function hasValidResourceEntryTimings(entry) {\n // Ensure timings are in the right order. On top of filtering out potential invalid\n // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n // it.\n var areCommonTimingsInOrder = areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd);\n var areRedirectionTimingsInOrder = hasRedirection(entry)\n ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart)\n : true;\n return areCommonTimingsInOrder && areRedirectionTimingsInOrder;\n}\nfunction hasRedirection(entry) {\n return entry.redirectEnd > entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n if (origin <= start && start <= end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start)),\n };\n }\n}\nexport function computeResourceEntrySize(entry) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n var encodedBodySize = entry.encodedBodySize, decodedBodySize = entry.decodedBodySize, transferSize = entry.transferSize;\n return {\n size: decodedBodySize,\n encoded_body_size: encodedBodySize,\n decoded_body_size: decodedBodySize,\n transfer_size: transferSize,\n };\n }\n return {\n size: undefined,\n encoded_body_size: undefined,\n decoded_body_size: undefined,\n transfer_size: undefined,\n };\n}\nexport function isAllowedRequestUrl(configuration, url) {\n return url && !configuration.isIntakeUrl(url);\n}\nvar DATA_URL_REGEX = /data:(.+)?(;base64)?,/g;\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24000;\nexport function isLongDataUrl(url) {\n if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n return false;\n }\n else if (url.substring(0, 5) === 'data:') {\n // Avoid String.match RangeError: Maximum call stack size exceeded\n url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);\n return true;\n }\n return false;\n}\nexport function sanitizeDataUrl(url) {\n return \"\".concat(url.match(DATA_URL_REGEX)[0], \"[...]\");\n}\n//# sourceMappingURL=resourceUtils.js.map","import { initFetchObservable, initXhrObservable, readBytesFromStream, elapsed, timeStampNow, tryToClone, } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nvar nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n var tracer = startTracer(configuration, sessionManager);\n trackXhr(lifeCycle, configuration, tracer);\n trackFetch(lifeCycle, configuration, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n var subscription = initXhrObservable(configuration).subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(6 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url,\n });\n break;\n case 'complete':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: context.duration,\n method: context.method,\n requestIndex: context.requestIndex,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"xhr\" /* RequestType.XHR */,\n url: context.url,\n xhr: context.xhr,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n });\n break;\n }\n });\n return { stop: function () { return subscription.unsubscribe(); } };\n}\nexport function trackFetch(lifeCycle, configuration, tracer) {\n var subscription = initFetchObservable().subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(6 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url,\n });\n break;\n case 'resolve':\n waitForResponseToComplete(context, function (duration) {\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: duration,\n method: context.method,\n requestIndex: context.requestIndex,\n responseType: context.responseType,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"fetch\" /* RequestType.FETCH */,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n });\n });\n break;\n }\n });\n return { stop: function () { return subscription.unsubscribe(); } };\n}\nfunction getNextRequestIndex() {\n var result = nextRequestIndex;\n nextRequestIndex += 1;\n return result;\n}\nfunction waitForResponseToComplete(context, callback) {\n var clonedResponse = context.response && tryToClone(context.response);\n if (!clonedResponse || !clonedResponse.body) {\n // do not try to wait for the response if the clone failed, fetch error or null body\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n }\n else {\n readBytesFromStream(clonedResponse.body, function () {\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n }, {\n bytesLimit: Number.POSITIVE_INFINITY,\n collectStreamBody: false,\n });\n }\n}\n//# sourceMappingURL=requestCollection.js.map","import { addEventListener, Observable, setTimeout, clearTimeout, monitor, includes } from '@datadog/browser-core';\nimport { hasValidResourceEntryDuration, isAllowedRequestUrl } from '../domain/resource/resourceUtils';\nimport { retrieveFirstInputTiming } from './firstInputPolyfill';\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport var RumPerformanceEntryType;\n(function (RumPerformanceEntryType) {\n RumPerformanceEntryType[\"EVENT\"] = \"event\";\n RumPerformanceEntryType[\"FIRST_INPUT\"] = \"first-input\";\n RumPerformanceEntryType[\"LARGEST_CONTENTFUL_PAINT\"] = \"largest-contentful-paint\";\n RumPerformanceEntryType[\"LAYOUT_SHIFT\"] = \"layout-shift\";\n RumPerformanceEntryType[\"LONG_TASK\"] = \"longtask\";\n RumPerformanceEntryType[\"LONG_ANIMATION_FRAME\"] = \"long-animation-frame\";\n RumPerformanceEntryType[\"NAVIGATION\"] = \"navigation\";\n RumPerformanceEntryType[\"PAINT\"] = \"paint\";\n RumPerformanceEntryType[\"RESOURCE\"] = \"resource\";\n})(RumPerformanceEntryType || (RumPerformanceEntryType = {}));\nexport function createPerformanceObservable(configuration, options) {\n return new Observable(function (observable) {\n if (!window.PerformanceObserver) {\n return;\n }\n var handlePerformanceEntries = function (entries) {\n var rumPerformanceEntries = filterRumPerformanceEntries(configuration, entries);\n if (rumPerformanceEntries.length > 0) {\n observable.notify(rumPerformanceEntries);\n }\n };\n var timeoutId;\n var isObserverInitializing = true;\n var observer = new PerformanceObserver(monitor(function (entries) {\n // In Safari the performance observer callback is synchronous.\n // Because the buffered performance entry list can be quite large we delay the computation to prevent the SDK from blocking the main thread on init\n if (isObserverInitializing) {\n timeoutId = setTimeout(function () { return handlePerformanceEntries(entries.getEntries()); });\n }\n else {\n handlePerformanceEntries(entries.getEntries());\n }\n }));\n try {\n observer.observe(options);\n }\n catch (_a) {\n // Some old browser versions (<= chrome 74 ) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to getEntriesByType and PerformanceObserver with entryTypes\n // TODO: remove this fallback in the next major version\n var fallbackSupportedEntryTypes = [\n RumPerformanceEntryType.RESOURCE,\n RumPerformanceEntryType.NAVIGATION,\n RumPerformanceEntryType.LONG_TASK,\n RumPerformanceEntryType.PAINT,\n ];\n if (includes(fallbackSupportedEntryTypes, options.type)) {\n if (options.buffered) {\n timeoutId = setTimeout(function () { return handlePerformanceEntries(performance.getEntriesByType(options.type)); });\n }\n try {\n observer.observe({ entryTypes: [options.type] });\n }\n catch (_b) {\n // Old versions of Safari are throwing \"entryTypes contained only unsupported types\"\n // errors when observing only unsupported entry types.\n //\n // We could use `supportPerformanceTimingEvent` to make sure we don't invoke\n // `observer.observe` with an unsupported entry type, but Safari 11 and 12 don't support\n // `Performance.supportedEntryTypes`, so doing so would lose support for these versions\n // even if they do support the entry type.\n return;\n }\n }\n }\n isObserverInitializing = false;\n manageResourceTimingBufferFull(configuration);\n var stopFirstInputTiming;\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT) &&\n options.type === RumPerformanceEntryType.FIRST_INPUT) {\n ;\n (stopFirstInputTiming = retrieveFirstInputTiming(configuration, function (timing) {\n handlePerformanceEntries([timing]);\n }).stop);\n }\n return function () {\n observer.disconnect();\n if (stopFirstInputTiming) {\n stopFirstInputTiming();\n }\n clearTimeout(timeoutId);\n };\n });\n}\nvar resourceTimingBufferFullListener;\nfunction manageResourceTimingBufferFull(configuration) {\n if (!resourceTimingBufferFullListener && supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n resourceTimingBufferFullListener = addEventListener(configuration, performance, 'resourcetimingbufferfull', function () {\n performance.clearResourceTimings();\n });\n }\n return function () {\n resourceTimingBufferFullListener === null || resourceTimingBufferFullListener === void 0 ? void 0 : resourceTimingBufferFullListener.stop();\n };\n}\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n return (window.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes !== undefined &&\n PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nfunction filterRumPerformanceEntries(configuration, entries) {\n return entries.filter(function (entry) { return !isForbiddenResource(configuration, entry); });\n}\nfunction isForbiddenResource(configuration, entry) {\n return (entry.entryType === RumPerformanceEntryType.RESOURCE &&\n (!isAllowedRequestUrl(configuration, entry.name) || !hasValidResourceEntryDuration(entry)));\n}\n//# sourceMappingURL=performanceObservable.js.map","export function isServerError(status) {\n return status >= 500;\n}\nexport function tryToClone(response) {\n try {\n return response.clone();\n }\n catch (e) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return;\n }\n}\n//# sourceMappingURL=responseUtils.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n var reader = stream.getReader();\n var chunks = [];\n var readBytesCount = 0;\n readMore();\n function readMore() {\n reader.read().then(monitor(function (result) {\n if (result.done) {\n onDone();\n return;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n readBytesCount += result.value.length;\n if (readBytesCount > options.bytesLimit) {\n onDone();\n }\n else {\n readMore();\n }\n }), monitor(function (error) { return callback(error); }));\n }\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop);\n var bytes;\n var limitExceeded;\n if (options.collectStreamBody) {\n var completeBuffer_1;\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer_1 = chunks[0];\n }\n else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer_1 = new Uint8Array(readBytesCount);\n var offset_1 = 0;\n chunks.forEach(function (chunk) {\n completeBuffer_1.set(chunk, offset_1);\n offset_1 += chunk.length;\n });\n }\n bytes = completeBuffer_1.slice(0, options.bytesLimit);\n limitExceeded = completeBuffer_1.length > options.bytesLimit;\n }\n callback(undefined, bytes, limitExceeded);\n }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { isNumber } from '@datadog/browser-core';\nexport function discardNegativeDuration(duration) {\n return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=discardNegativeDuration.js.map","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts(_a) {\n var lifeCycle = _a.lifeCycle, isChildEvent = _a.isChildEvent, _b = _a.onChange, callback = _b === void 0 ? noop : _b;\n var eventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0,\n };\n var subscription = lifeCycle.subscribe(12 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n var _a;\n if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n return;\n }\n switch (event.type) {\n case \"error\" /* RumEventType.ERROR */:\n eventCounts.errorCount += 1;\n callback();\n break;\n case \"action\" /* RumEventType.ACTION */:\n eventCounts.actionCount += 1;\n if (event.action.frustration) {\n eventCounts.frustrationCount += event.action.frustration.type.length;\n }\n callback();\n break;\n case \"long_task\" /* RumEventType.LONG_TASK */:\n eventCounts.longTaskCount += 1;\n callback();\n break;\n case \"resource\" /* RumEventType.RESOURCE */:\n if (!((_a = event._dd) === null || _a === void 0 ? void 0 : _a.discarded)) {\n eventCounts.resourceCount += 1;\n callback();\n }\n break;\n }\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n eventCounts: eventCounts,\n };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { addEventListeners, dateNow, relativeNow } from '@datadog/browser-core';\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nexport function retrieveFirstInputTiming(configuration, callback) {\n var startTimeStamp = dateNow();\n var timingSent = false;\n var removeEventListeners = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"mousedown\" /* DOM_EVENT.MOUSE_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */], function (evt) {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return;\n }\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n var timing = {\n entryType: 'first-input',\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp,\n duration: 0, // arbitrary value to avoid nullable duration and simplify INP logic\n name: '',\n cancelable: false,\n target: null,\n toJSON: function () { return ({}); },\n };\n if (evt.type === \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */) {\n sendTimingIfPointerIsNotCancelled(configuration, timing);\n }\n else {\n sendTiming(timing);\n }\n }, { passive: true, capture: true }).stop;\n return { stop: removeEventListeners };\n /**\n * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n * We differentiate these cases based on whether or not we see a pointercancel event, which are\n * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n * scrolling and pinch/zooming.\n */\n function sendTimingIfPointerIsNotCancelled(configuration, timing) {\n addEventListeners(configuration, window, [\"pointerup\" /* DOM_EVENT.POINTER_UP */, \"pointercancel\" /* DOM_EVENT.POINTER_CANCEL */], function (event) {\n if (event.type === \"pointerup\" /* DOM_EVENT.POINTER_UP */) {\n sendTiming(timing);\n }\n }, { once: true });\n }\n function sendTiming(timing) {\n if (!timingSent) {\n timingSent = true;\n removeEventListeners();\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n var delay = timing.processingStart - timing.startTime;\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing);\n }\n }\n }\n}\n//# sourceMappingURL=firstInputPolyfill.js.map","import { instrumentMethod, matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout, } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../browser/performanceObservable';\n// Delay to wait for a page activity to validate the tracking process\nexport var PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport var PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n * Wait page activity end\n * .-------------------'--------------------.\n * v v\n * [Wait for a page activity ] [Wait for a maximum duration]\n * [timeout: VALIDATION_DELAY] [ timeout: maxDuration ]\n * / \\ |\n * v v |\n * [No page activity] [Page activity] |\n * | |,----------------------. |\n * v v | |\n * (Discard) [Wait for a page activity] | |\n * [ timeout: END_DELAY ] | |\n * / \\ | |\n * v v | |\n * [No page activity] [Page activity] | |\n * | | | |\n * | '------------' |\n * '-----------. ,--------------------'\n * v\n * (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, pageActivityEndCallback, maxDuration) {\n var pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, configuration);\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n var pageActivityEndTimeoutId;\n var hasCompleted = false;\n var validationTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: false }); }), PAGE_ACTIVITY_VALIDATION_DELAY);\n var maxDurationTimeoutId = maxDuration !== undefined\n ? setTimeout(monitor(function () { return complete({ hadActivity: true, end: timeStampNow() }); }), maxDuration)\n : undefined;\n var pageActivitySubscription = pageActivityObservable.subscribe(function (_a) {\n var isBusy = _a.isBusy;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n var lastChangeTime = timeStampNow();\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: true, end: lastChangeTime }); }), PAGE_ACTIVITY_END_DELAY);\n }\n });\n var stop = function () {\n hasCompleted = true;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n clearTimeout(maxDurationTimeoutId);\n pageActivitySubscription.unsubscribe();\n };\n function complete(event) {\n if (hasCompleted) {\n return;\n }\n stop();\n pageActivityEndCallback(event);\n }\n return { stop: stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, configuration) {\n return new Observable(function (observable) {\n var subscriptions = [];\n var firstRequestIndex;\n var pendingRequestsCount = 0;\n subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), createPerformanceObservable(configuration, { type: RumPerformanceEntryType.RESOURCE }).subscribe(function (entries) {\n if (entries.some(function (entry) { return !isExcludedUrl(configuration, entry.name); })) {\n notifyPageActivity();\n }\n }), lifeCycle.subscribe(6 /* LifeCycleEventType.REQUEST_STARTED */, function (startEvent) {\n if (isExcludedUrl(configuration, startEvent.url)) {\n return;\n }\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex;\n }\n pendingRequestsCount += 1;\n notifyPageActivity();\n }), lifeCycle.subscribe(7 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n if (isExcludedUrl(configuration, request.url) ||\n firstRequestIndex === undefined ||\n // If the request started before the tracking start, ignore it\n request.requestIndex < firstRequestIndex) {\n return;\n }\n pendingRequestsCount -= 1;\n notifyPageActivity();\n }));\n var stopTrackingWindowOpen = trackWindowOpen(notifyPageActivity).stop;\n return function () {\n stopTrackingWindowOpen();\n subscriptions.forEach(function (s) { return s.unsubscribe(); });\n };\n function notifyPageActivity() {\n observable.notify({ isBusy: pendingRequestsCount > 0 });\n }\n });\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n return matchList(configuration.excludedActivityUrls, requestUrl);\n}\nfunction trackWindowOpen(callback) {\n return instrumentMethod(window, 'open', callback);\n}\n//# sourceMappingURL=waitPageActivityEnd.js.map","// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n if (window.CSS && window.CSS.escape) {\n return window.CSS.escape(str);\n }\n // eslint-disable-next-line no-control-regex\n return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === '\\0') {\n return '\\uFFFD';\n }\n // Control characters and (dependent upon position) numbers get escaped as code points\n return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n }\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\".concat(ch);\n });\n}\nexport function elementMatches(element, selector) {\n if (element.matches) {\n return element.matches(selector);\n }\n // IE11 support\n if (element.msMatchesSelector) {\n return element.msMatchesSelector(selector);\n }\n return false;\n}\n/**\n * Return the parentElement of an node\n *\n * In cases where parentElement is not supported, such as in IE11 for SVG nodes, we fallback to parentNode\n */\nexport function getParentElement(node) {\n if (node.parentElement) {\n return node.parentElement;\n }\n while (node.parentNode) {\n if (node.parentNode.nodeType === Node.ELEMENT_NODE) {\n return node.parentNode;\n }\n node = node.parentNode;\n }\n return null;\n}\n/**\n * Return the classList of an element or an array of classes if classList is not supported\n *\n * In cases where classList is not supported, such as in IE11 for SVG and MathML elements,\n * we fallback to using element.getAttribute('class').\n * We opt for element.getAttribute('class') over element.className because className returns an SVGAnimatedString for SVG elements.\n */\nexport function getClassList(element) {\n if (element.classList) {\n return element.classList;\n }\n var classes = (element.getAttribute('class') || '').trim();\n return classes ? classes.split(/\\s+/) : [];\n}\n// ie11 supports WeakMap but not WeakSet\nvar PLACEHOLDER = 1;\n// eslint-disable-next-line no-restricted-syntax\nvar WeakSet = /** @class */ (function () {\n function WeakSet(initialValues) {\n var _this = this;\n this.map = new WeakMap();\n if (initialValues) {\n initialValues.forEach(function (value) { return _this.map.set(value, PLACEHOLDER); });\n }\n }\n WeakSet.prototype.add = function (value) {\n this.map.set(value, PLACEHOLDER);\n return this;\n };\n WeakSet.prototype.delete = function (value) {\n return this.map.delete(value);\n };\n WeakSet.prototype.has = function (value) {\n return this.map.has(value);\n };\n return WeakSet;\n}());\nexport { WeakSet };\n//# sourceMappingURL=polyfills.js.map","export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n}\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot);\n}\nexport function isNodeShadowRoot(node) {\n var shadowRoot = node;\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node);\n}\nexport function forEachChildNodes(node, callback) {\n var child = node.firstChild;\n while (child) {\n callback(child);\n child = child.nextSibling;\n }\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot);\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}\n//# sourceMappingURL=htmlDomUtils.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nimport { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils';\nimport { elementMatches } from '../browser/polyfills';\nexport var NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n};\nexport var PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport var PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport var PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport var PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport var PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport var PRIVACY_CLASS_PREFIX = 'dd-privacy-';\n// Private Replacement Templates\nexport var CENSORED_STRING_MARK = '***';\nexport var CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport var FORM_PRIVATE_TAG_NAMES = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true,\n};\nvar TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel, cache) {\n if (cache && cache.has(node)) {\n return cache.get(node);\n }\n var parentNode = getParentNode(node);\n var parentNodePrivacyLevel = parentNode\n ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)\n : defaultPrivacyLevel;\n var selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n var nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n if (cache) {\n cache.set(node, nodePrivacyLevel);\n }\n return nodePrivacyLevel;\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel;\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel;\n default:\n return parentNodePrivacyLevel;\n }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return;\n }\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW;\n }\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n var inputElement = node;\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK;\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK;\n }\n var autocomplete = inputElement.getAttribute('autocomplete');\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year]\n if (autocomplete && autocomplete.indexOf('cc-') === 0) {\n return NodePrivacyLevel.MASK;\n }\n }\n // Check HTML privacy attributes and classes\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n return NodePrivacyLevel.HIDDEN;\n }\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK))) {\n return NodePrivacyLevel.MASK;\n }\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n return NodePrivacyLevel.MASK_USER_INPUT;\n }\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.ALLOW))) {\n return NodePrivacyLevel.ALLOW;\n }\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE;\n }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true;\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n default:\n return false;\n }\n}\nfunction isFormElement(node) {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false;\n }\n var element = node;\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false;\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport var censorText = function (text) { return text.replace(/\\S/g, TEXT_MASKING_CHAR); };\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n var _a;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n var textContent = textNode.textContent || '';\n if (ignoreWhiteSpace && !textContent.trim()) {\n return;\n }\n var nodePrivacyLevel = parentNodePrivacyLevel;\n var isScript = parentTagName === 'SCRIPT';\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK;\n }\n else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK;\n }\n else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' ||\n parentTagName === 'SELECT' ||\n parentTagName === 'OPTGROUP') {\n if (!textContent.trim()) {\n return;\n }\n }\n else if (parentTagName === 'OPTION') {\n // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n textContent = CENSORED_STRING_MARK;\n }\n else {\n textContent = censorText(textContent);\n }\n }\n return textContent;\n}\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element) {\n if (element.nodeName === 'SCRIPT') {\n return true;\n }\n if (element.nodeName === 'LINK') {\n var relAttribute = getLowerCaseAttribute('rel');\n return (\n // Link as script - Ignore only when rel=preload, modulepreload or prefetch\n (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||\n // Favicons\n relAttribute === 'shortcut icon' ||\n relAttribute === 'icon');\n }\n if (element.nodeName === 'META') {\n var nameAttribute = getLowerCaseAttribute('name');\n var relAttribute = getLowerCaseAttribute('rel');\n var propertyAttribute = getLowerCaseAttribute('property');\n return (\n // Favicons\n /^msapplication-tile(image|color)$/.test(nameAttribute) ||\n nameAttribute === 'application-name' ||\n relAttribute === 'icon' ||\n relAttribute === 'apple-touch-icon' ||\n relAttribute === 'shortcut icon' ||\n // Description\n nameAttribute === 'keywords' ||\n nameAttribute === 'description' ||\n // Social\n /^(og|twitter|fb):/.test(propertyAttribute) ||\n /^(og|twitter):/.test(nameAttribute) ||\n nameAttribute === 'pinterest' ||\n // Robots\n nameAttribute === 'robots' ||\n nameAttribute === 'googlebot' ||\n nameAttribute === 'bingbot' ||\n // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n // X-Translated-By\n element.hasAttribute('http-equiv') ||\n // Authorship\n nameAttribute === 'author' ||\n nameAttribute === 'generator' ||\n nameAttribute === 'framework' ||\n nameAttribute === 'publisher' ||\n nameAttribute === 'progid' ||\n /^article:/.test(propertyAttribute) ||\n /^product:/.test(propertyAttribute) ||\n // Verification\n nameAttribute === 'google-site-verification' ||\n nameAttribute === 'yandex-verification' ||\n nameAttribute === 'csrf-token' ||\n nameAttribute === 'p:domain_verify' ||\n nameAttribute === 'verify-v1' ||\n nameAttribute === 'verification' ||\n nameAttribute === 'shopify-checkout-api-token');\n }\n function getLowerCaseAttribute(name) {\n return (element.getAttribute(name) || '').toLowerCase();\n }\n return false;\n}\nexport function getPrivacySelector(privacyLevel) {\n return \"[\".concat(PRIVACY_ATTR_NAME, \"=\\\"\").concat(privacyLevel, \"\\\"], .\").concat(PRIVACY_CLASS_PREFIX).concat(privacyLevel);\n}\n//# sourceMappingURL=privacy.js.map","import { safeTruncate, isIE, find } from '@datadog/browser-core';\nimport { getParentElement } from '../../browser/polyfills';\nimport { NodePrivacyLevel, getPrivacySelector } from '../privacy';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport var DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport var ACTION_NAME_PLACEHOLDER = 'Masked Element';\nexport function getActionNameFromElement(element, _a, nodePrivacyLevel) {\n var enablePrivacyForActionName = _a.enablePrivacyForActionName, userProgrammaticAttribute = _a.actionNameAttribute;\n // Proceed to get the action name in two steps:\n // * first, get the name programmatically, explicitly defined by the user.\n // * then, use strategies that are known to return good results. Those strategies will be used on\n // the element and a few parents, but it's likely that they won't succeed at all.\n // * if no name is found this way, use strategies returning less accurate names as a fallback.\n // Those are much likely to succeed.\n var defaultActionName = getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute));\n if (nodePrivacyLevel === NodePrivacyLevel.MASK) {\n return defaultActionName || ACTION_NAME_PLACEHOLDER;\n }\n return (defaultActionName ||\n getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies, enablePrivacyForActionName) ||\n getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies, enablePrivacyForActionName) ||\n '');\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n var elementWithAttribute;\n // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n // without limit. It is up to the user to declare a relevant naming strategy.\n // If available, use element.closest() to match get the attribute from the element or any of its\n // parent. Else fallback to a more traditional implementation.\n if (supportsElementClosest()) {\n elementWithAttribute = targetElement.closest(\"[\".concat(programmaticAttribute, \"]\"));\n }\n else {\n var element = targetElement;\n while (element) {\n if (element.hasAttribute(programmaticAttribute)) {\n elementWithAttribute = element;\n break;\n }\n element = getParentElement(element);\n }\n }\n if (!elementWithAttribute) {\n return;\n }\n var name = elementWithAttribute.getAttribute(programmaticAttribute);\n return truncate(normalizeWhitespace(name.trim()));\n}\nvar priorityStrategies = [\n // associated LABEL text\n function (element, userProgrammaticAttribute, privacy) {\n // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n // instead\n if (supportsLabelProperty()) {\n if ('labels' in element && element.labels && element.labels.length > 0) {\n return getTextualContent(element.labels[0], userProgrammaticAttribute);\n }\n }\n else if (element.id) {\n var label = element.ownerDocument &&\n find(element.ownerDocument.querySelectorAll('label'), function (label) { return label.htmlFor === element.id; });\n return label && getTextualContent(label, userProgrammaticAttribute, privacy);\n }\n },\n // INPUT button (and associated) value\n function (element) {\n if (element.nodeName === 'INPUT') {\n var input = element;\n var type = input.getAttribute('type');\n if (type === 'button' || type === 'submit' || type === 'reset') {\n return input.value;\n }\n }\n },\n // BUTTON, LABEL or button-like element text\n function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n return getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName);\n }\n },\n function (element) { return element.getAttribute('aria-label'); },\n // associated element text designated by the aria-labelledby attribute\n function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n var labelledByAttribute = element.getAttribute('aria-labelledby');\n if (labelledByAttribute) {\n return labelledByAttribute\n .split(/\\s+/)\n .map(function (id) { return getElementById(element, id); })\n .filter(function (label) { return Boolean(label); })\n .map(function (element) { return getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName); })\n .join(' ');\n }\n },\n function (element) { return element.getAttribute('alt'); },\n function (element) { return element.getAttribute('name'); },\n function (element) { return element.getAttribute('title'); },\n function (element) { return element.getAttribute('placeholder'); },\n // SELECT first OPTION text\n function (element, userProgrammaticAttribute) {\n if ('options' in element && element.options.length > 0) {\n return getTextualContent(element.options[0], userProgrammaticAttribute);\n }\n },\n];\nvar fallbackStrategies = [\n function (element, userProgrammaticAttribute, privacyEnabledActionName) {\n return getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName);\n },\n];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nvar MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies, privacyEnabledActionName) {\n var element = targetElement;\n var recursionCounter = 0;\n while (recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n element &&\n element.nodeName !== 'BODY' &&\n element.nodeName !== 'HTML' &&\n element.nodeName !== 'HEAD') {\n for (var _i = 0, strategies_1 = strategies; _i < strategies_1.length; _i++) {\n var strategy = strategies_1[_i];\n var name_1 = strategy(element, userProgrammaticAttribute, privacyEnabledActionName);\n if (typeof name_1 === 'string') {\n var trimmedName = name_1.trim();\n if (trimmedName) {\n return truncate(normalizeWhitespace(trimmedName));\n }\n }\n }\n // Consider a FORM as a contextual limit to get the action name. This is experimental and may\n // be reconsidered in the future.\n if (element.nodeName === 'FORM') {\n break;\n }\n element = getParentElement(element);\n recursionCounter += 1;\n }\n}\nfunction normalizeWhitespace(s) {\n return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n return s.length > 100 ? \"\".concat(safeTruncate(s, 100), \" [...]\") : s;\n}\nfunction getElementById(refElement, id) {\n // Use the element ownerDocument here, because tests are executed in an iframe, so\n // document.getElementById won't work.\n return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) {\n if (element.isContentEditable) {\n return;\n }\n if ('innerText' in element) {\n var text_1 = element.innerText;\n var removeTextFromElements = function (query) {\n var list = element.querySelectorAll(query);\n for (var index = 0; index < list.length; index += 1) {\n var element_1 = list[index];\n if ('innerText' in element_1) {\n var textToReplace = element_1.innerText;\n if (textToReplace && textToReplace.trim().length > 0) {\n text_1 = text_1.replace(textToReplace, '');\n }\n }\n }\n };\n if (!supportsInnerTextScriptAndStyleRemoval()) {\n // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n // be relatively fast and work in most cases.\n removeTextFromElements('script, style');\n }\n // remove the text of elements with programmatic attribute value\n removeTextFromElements(\"[\".concat(DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE, \"]\"));\n if (userProgrammaticAttribute) {\n removeTextFromElements(\"[\".concat(userProgrammaticAttribute, \"]\"));\n }\n if (privacyEnabledActionName) {\n // remove the text of elements with privacy override\n removeTextFromElements(\"\".concat(getPrivacySelector(NodePrivacyLevel.HIDDEN), \", \").concat(getPrivacySelector(NodePrivacyLevel.MASK)));\n }\n return text_1;\n }\n return element.textContent;\n}\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n return !isIE();\n}\n/**\n * Returns true if the browser supports the element.labels property. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsLabelPropertyResult;\nfunction supportsLabelProperty() {\n if (supportsLabelPropertyResult === undefined) {\n supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype;\n }\n return supportsLabelPropertyResult;\n}\n/**\n * Returns true if the browser supports the element.closest method. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsElementClosestResult;\nfunction supportsElementClosest() {\n if (supportsElementClosestResult === undefined) {\n supportsElementClosestResult = 'closest' in HTMLElement.prototype;\n }\n return supportsElementClosestResult;\n}\n//# sourceMappingURL=getActionNameFromElement.js.map","import { cssEscape, elementMatches, getClassList, getParentElement } from '../browser/polyfills';\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/getActionNameFromElement';\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport var STABLE_ATTRIBUTES = [\n DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n // Common test attributes (list provided by google recorder)\n 'data-testid',\n 'data-test',\n 'data-qa',\n 'data-cy',\n 'data-test-id',\n 'data-qa-id',\n 'data-testing',\n // FullStory decorator attributes:\n 'data-component',\n 'data-element',\n 'data-source-file',\n];\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nvar GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nvar UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [\n getStableAttributeSelector,\n getClassSelector,\n getTagNameSelector,\n];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n if (!isConnected(targetElement)) {\n // We cannot compute a selector for a detached element, as we don't have access to all of its\n // parents, and we cannot determine if it's unique in the document.\n return;\n }\n var targetElementSelector;\n var currentElement = targetElement;\n while (currentElement && currentElement.nodeName !== 'HTML') {\n var globallyUniqueSelector = findSelector(currentElement, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n if (globallyUniqueSelector) {\n return globallyUniqueSelector;\n }\n var uniqueSelectorAmongChildren = findSelector(currentElement, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n targetElementSelector =\n uniqueSelectorAmongChildren || combineSelector(getPositionSelector(currentElement), targetElementSelector);\n currentElement = getParentElement(currentElement);\n }\n return targetElementSelector;\n}\nfunction isGeneratedValue(value) {\n // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n // present.\n //\n // Here, we use the same strategy: if the value contains a digit, we consider it generated. This\n // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n // CSS selectors so it should be fine most of the time.\n return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n if (element.id && !isGeneratedValue(element.id)) {\n return \"#\".concat(cssEscape(element.id));\n }\n}\nfunction getClassSelector(element) {\n if (element.tagName === 'BODY') {\n return;\n }\n var classList = getClassList(element);\n for (var i = 0; i < classList.length; i += 1) {\n var className = classList[i];\n if (isGeneratedValue(className)) {\n continue;\n }\n return \"\".concat(cssEscape(element.tagName), \".\").concat(cssEscape(className));\n }\n}\nfunction getTagNameSelector(element) {\n return cssEscape(element.tagName);\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n if (actionNameAttribute) {\n var selector = getAttributeSelector(actionNameAttribute);\n if (selector) {\n return selector;\n }\n }\n for (var _i = 0, STABLE_ATTRIBUTES_1 = STABLE_ATTRIBUTES; _i < STABLE_ATTRIBUTES_1.length; _i++) {\n var attributeName = STABLE_ATTRIBUTES_1[_i];\n var selector = getAttributeSelector(attributeName);\n if (selector) {\n return selector;\n }\n }\n function getAttributeSelector(attributeName) {\n if (element.hasAttribute(attributeName)) {\n return \"\".concat(cssEscape(element.tagName), \"[\").concat(attributeName, \"=\\\"\").concat(cssEscape(element.getAttribute(attributeName)), \"\\\"]\");\n }\n }\n}\nfunction getPositionSelector(element) {\n var sibling = getParentElement(element).firstElementChild;\n var elementIndex = 1;\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n elementIndex += 1;\n }\n sibling = sibling.nextElementSibling;\n }\n return \"\".concat(cssEscape(element.tagName), \":nth-of-type(\").concat(elementIndex, \")\");\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n for (var _i = 0, selectorGetters_1 = selectorGetters; _i < selectorGetters_1.length; _i++) {\n var selectorGetter = selectorGetters_1[_i];\n var elementSelector = selectorGetter(element, actionNameAttribute);\n if (!elementSelector) {\n continue;\n }\n if (predicate(element, elementSelector, childSelector)) {\n return combineSelector(elementSelector, childSelector);\n }\n }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, elementSelector, childSelector) {\n return element.ownerDocument.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1;\n}\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > CHILD_SELECTOR\" returns a single element.\n *\n * @param {Element} currentElement - the element being considered while iterating over the target\n * element ancestors.\n *\n * @param {string} currentElementSelector - a selector that matches the current element. That\n * selector is not a composed selector (i.e. it might be a single tag name, class name...).\n *\n * @param {string|undefined} childSelector - child selector is a selector that targets a descendant\n * of the current element. When undefined, the current element is the target element.\n *\n * # Scope selector usage\n *\n * When composed together, the final selector will be joined with `>` operators to make sure we\n * target direct descendants at each level. In this function, we'll use `querySelector` to check if\n * a selector matches descendants of the current element. But by default, the query selector match\n * elements at any level. Example:\n *\n * ```html\n * <main>\n * <div>\n * <span></span>\n * </div>\n * <marquee>\n * <div>\n * <span></span>\n * </div>\n * </marquee>\n * </main>\n * ```\n *\n * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the\n * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`\n * operator (`MAIN > DIV > SPAN`).\n *\n * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current\n * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT CHILD_SELECTOR\" returns a single element), regardless of whether the selector is\n * a direct descendant of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n *\n * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope\n *\n * # Performance considerations\n *\n * We compute selectors in performance-critical operations (ex: during a click), so we need to make\n * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to\n * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.\n *\n * Because we are iterating the DOM upward and we use that function at every level, we know the\n * child selector is already unique among the current element children, so we don't need to check\n * for the current element subtree.\n *\n * Instead, we can focus on the current element siblings. If we find a single element matching the\n * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`\n * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.\n */\nexport function isSelectorUniqueAmongSiblings(currentElement, currentElementSelector, childSelector) {\n var isSiblingMatching;\n if (childSelector === undefined) {\n // If the child selector is undefined (meaning `currentElement` is the target element, not one\n // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,\n // as `querySelector` only returns a descendant of the element.\n isSiblingMatching = function (sibling) { return elementMatches(sibling, currentElementSelector); };\n }\n else {\n var scopedSelector_1 = supportScopeSelector()\n ? combineSelector(\"\".concat(currentElementSelector, \":scope\"), childSelector)\n : combineSelector(currentElementSelector, childSelector);\n isSiblingMatching = function (sibling) { return sibling.querySelector(scopedSelector_1) !== null; };\n }\n var parent = getParentElement(currentElement);\n var sibling = parent.firstElementChild;\n while (sibling) {\n if (sibling !== currentElement && isSiblingMatching(sibling)) {\n return false;\n }\n sibling = sibling.nextElementSibling;\n }\n return true;\n}\nfunction combineSelector(parent, child) {\n return child ? \"\".concat(parent, \">\").concat(child) : parent;\n}\nvar supportScopeSelectorCache;\nexport function supportScopeSelector() {\n if (supportScopeSelectorCache === undefined) {\n try {\n document.querySelector(':scope');\n supportScopeSelectorCache = true;\n }\n catch (_a) {\n supportScopeSelectorCache = false;\n }\n }\n return supportScopeSelectorCache;\n}\n/**\n * Polyfill-utility for the `isConnected` property not supported in IE11\n */\nfunction isConnected(element) {\n if ('isConnected' in\n // cast is to make sure `element` is not inferred as `never` after the check\n element) {\n return element.isConnected;\n }\n return element.ownerDocument.documentElement.contains(element);\n}\n//# sourceMappingURL=getSelectorFromElement.js.map","import { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nexport var MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport var MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n var bufferedClicks = [];\n var status = 0 /* ClickChainStatus.WaitingForMoreClicks */;\n var maxDurationBetweenClicksTimeoutId;\n appendClick(firstClick);\n function appendClick(click) {\n click.stopObservable.subscribe(tryFinalize);\n bufferedClicks.push(click);\n clearTimeout(maxDurationBetweenClicksTimeoutId);\n maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS);\n }\n function tryFinalize() {\n if (status === 1 /* ClickChainStatus.WaitingForClicksToStop */ && bufferedClicks.every(function (click) { return click.isStopped(); })) {\n status = 2 /* ClickChainStatus.Finalized */;\n onFinalize(bufferedClicks);\n }\n }\n function dontAcceptMoreClick() {\n clearTimeout(maxDurationBetweenClicksTimeoutId);\n if (status === 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n status = 1 /* ClickChainStatus.WaitingForClicksToStop */;\n tryFinalize();\n }\n }\n return {\n tryAppend: function (click) {\n if (status !== 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n return false;\n }\n if (bufferedClicks.length > 0 &&\n !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n dontAcceptMoreClick();\n return false;\n }\n appendClick(click);\n return true;\n },\n stop: function () {\n dontAcceptMoreClick();\n },\n };\n}\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first, second) {\n return (first.target === second.target &&\n mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS);\n}\nfunction mouseEventDistance(origin, other) {\n return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2));\n}\n//# sourceMappingURL=clickChain.js.map","import { addEventListener } from '@datadog/browser-core';\nexport function listenActionEvents(configuration, _a) {\n var onPointerDown = _a.onPointerDown, onPointerUp = _a.onPointerUp;\n var selectionEmptyAtPointerDown;\n var userActivity = {\n selection: false,\n input: false,\n scroll: false,\n };\n var clickContext;\n var listeners = [\n addEventListener(configuration, window, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, function (event) {\n if (isValidPointerEvent(event)) {\n selectionEmptyAtPointerDown = isSelectionEmpty();\n userActivity = {\n selection: false,\n input: false,\n scroll: false,\n };\n clickContext = onPointerDown(event);\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"selectionchange\" /* DOM_EVENT.SELECTION_CHANGE */, function () {\n if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n userActivity.selection = true;\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, function () {\n userActivity.scroll = true;\n }, { capture: true, passive: true }),\n addEventListener(configuration, window, \"pointerup\" /* DOM_EVENT.POINTER_UP */, function (event) {\n if (isValidPointerEvent(event) && clickContext) {\n // Use a scoped variable to make sure the value is not changed by other clicks\n var localUserActivity_1 = userActivity;\n onPointerUp(clickContext, event, function () { return localUserActivity_1; });\n clickContext = undefined;\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"input\" /* DOM_EVENT.INPUT */, function () {\n userActivity.input = true;\n }, { capture: true }),\n ];\n return {\n stop: function () {\n listeners.forEach(function (listener) { return listener.stop(); });\n },\n };\n}\nfunction isSelectionEmpty() {\n var selection = window.getSelection();\n return !selection || selection.isCollapsed;\n}\nfunction isValidPointerEvent(event) {\n return (event.target instanceof Element &&\n // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n // the future.\n event.isPrimary !== false);\n}\n//# sourceMappingURL=listenActionEvents.js.map","import { ONE_SECOND } from '@datadog/browser-core';\nimport { elementMatches } from '../../browser/polyfills';\nvar MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n if (isRage(clicks)) {\n rageClick.addFrustration(\"rage_click\" /* FrustrationType.RAGE_CLICK */);\n if (clicks.some(isDead)) {\n rageClick.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n }\n if (rageClick.hasError) {\n rageClick.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n }\n return { isRage: true };\n }\n var hasSelectionChanged = clicks.some(function (click) { return click.getUserActivity().selection; });\n clicks.forEach(function (click) {\n if (click.hasError) {\n click.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n }\n if (isDead(click) &&\n // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n !hasSelectionChanged) {\n click.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n }\n });\n return { isRage: false };\n}\nexport function isRage(clicks) {\n if (clicks.some(function (click) { return click.getUserActivity().selection || click.getUserActivity().scroll; })) {\n return false;\n }\n for (var i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n if (clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <=\n ONE_SECOND) {\n return true;\n }\n }\n return false;\n}\nvar DEAD_CLICK_EXCLUDE_SELECTOR = \n// inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n// inputs (using a negative selector is shorter here)\n'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' +\n 'textarea,' +\n 'select,' +\n // contenteditable and their descendants don't always trigger meaningful changes when manipulated\n '[contenteditable],' +\n '[contenteditable] *,' +\n // canvas, as there is no good way to detect activity occurring on them\n 'canvas,' +\n // links that are interactive (have an href attribute) or any of their descendants, as they can\n // open a new tab or navigate to a hash without triggering a meaningful event\n 'a[href],' +\n 'a[href] *';\nexport function isDead(click) {\n if (click.hasPageActivity || click.getUserActivity().input || click.getUserActivity().scroll) {\n return false;\n }\n return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR);\n}\n//# sourceMappingURL=computeFrustration.js.map","import { elapsed, ONE_SECOND, relativeNow } from '@datadog/browser-core';\n// Maximum duration for click actions\nexport var CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport var interactionSelectorCache = new Map();\nexport function getInteractionSelector(relativeTimestamp) {\n var selector = interactionSelectorCache.get(relativeTimestamp);\n interactionSelectorCache.delete(relativeTimestamp);\n return selector;\n}\nexport function updateInteractionSelector(relativeTimestamp, selector) {\n interactionSelectorCache.set(relativeTimestamp, selector);\n interactionSelectorCache.forEach(function (_, relativeTimestamp) {\n if (elapsed(relativeTimestamp, relativeNow()) > CLICK_ACTION_MAX_DURATION) {\n interactionSelectorCache.delete(relativeTimestamp);\n }\n });\n}\n//# sourceMappingURL=interactionSelectorCache.js.map","import { includes, timeStampNow, Observable, assign, getRelativeTime, ONE_MINUTE, generateUUID, clocksNow, elapsed, createValueHistory, } from '@datadog/browser-core';\nimport { trackEventCounts } from '../trackEventCounts';\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd';\nimport { getSelectorFromElement } from '../getSelectorFromElement';\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '../privacy';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\nimport { CLICK_ACTION_MAX_DURATION, updateInteractionSelector } from './interactionSelectorCache';\nexport var ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, configuration) {\n var history = createValueHistory({ expireDelay: ACTION_CONTEXT_TIME_OUT_DELAY });\n var stopObservable = new Observable();\n var currentClickChain;\n lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n history.reset();\n });\n lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, stopClickChain);\n var stopActionEventsListener = listenActionEvents(configuration, {\n onPointerDown: function (pointerDownEvent) {\n return processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent);\n },\n onPointerUp: function (_a, startEvent, getUserActivity) {\n var clickActionBase = _a.clickActionBase, hadActivityOnPointerDown = _a.hadActivityOnPointerDown;\n startClickAction(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown);\n },\n }).stop;\n var actionContexts = {\n findActionId: function (startTime) { return history.findAll(startTime); },\n };\n return {\n stop: function () {\n stopClickChain();\n stopObservable.notify();\n stopActionEventsListener();\n },\n actionContexts: actionContexts,\n };\n function appendClickToClickChain(click) {\n if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n var rageClick_1 = click.clone();\n currentClickChain = createClickChain(click, function (clicks) {\n finalizeClicks(clicks, rageClick_1);\n });\n }\n }\n function stopClickChain() {\n if (currentClickChain) {\n currentClickChain.stop();\n }\n }\n}\nfunction processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent) {\n var nodePrivacyLevel = configuration.enablePrivacyForActionName\n ? getNodePrivacyLevel(pointerDownEvent.target, configuration.defaultPrivacyLevel)\n : NodePrivacyLevel.ALLOW;\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return undefined;\n }\n var clickActionBase = computeClickActionBase(pointerDownEvent, nodePrivacyLevel, configuration);\n var hadActivityOnPointerDown = false;\n waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n hadActivityOnPointerDown = pageActivityEndEvent.hadActivity;\n }, \n // We don't care about the activity duration, we just want to know whether an activity did happen\n // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n PAGE_ACTIVITY_VALIDATION_DELAY);\n return { clickActionBase: clickActionBase, hadActivityOnPointerDown: function () { return hadActivityOnPointerDown; } };\n}\nfunction startClickAction(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown) {\n var _a;\n var click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n appendClickToClickChain(click);\n var selector = (_a = clickActionBase === null || clickActionBase === void 0 ? void 0 : clickActionBase.target) === null || _a === void 0 ? void 0 : _a.selector;\n if (selector) {\n updateInteractionSelector(startEvent.timeStamp, selector);\n }\n var stopWaitPageActivityEnd = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n // If the clock is looking weird, just discard the click\n click.discard();\n }\n else {\n if (pageActivityEndEvent.hadActivity) {\n click.stop(pageActivityEndEvent.end);\n }\n else if (hadActivityOnPointerDown()) {\n click.stop(\n // using the click start as activity end, so the click will have some activity but its\n // duration will be 0 (as the activity started before the click start)\n click.startClocks.timeStamp);\n }\n else {\n click.stop();\n }\n }\n }, CLICK_ACTION_MAX_DURATION).stop;\n var viewEndedSubscription = lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n click.stop(endClocks.timeStamp);\n });\n var stopSubscription = stopObservable.subscribe(function () {\n click.stop();\n });\n click.stopObservable.subscribe(function () {\n viewEndedSubscription.unsubscribe();\n stopWaitPageActivityEnd();\n stopSubscription.unsubscribe();\n });\n}\nfunction computeClickActionBase(event, nodePrivacyLevel, configuration) {\n var rect = event.target.getBoundingClientRect();\n var selector = getSelectorFromElement(event.target, configuration.actionNameAttribute);\n if (selector) {\n updateInteractionSelector(event.timeStamp, selector);\n }\n return {\n type: \"click\" /* ActionType.CLICK */,\n target: {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n selector: selector,\n },\n position: {\n // Use clientX and Y because for SVG element offsetX and Y are relatives to the <svg> element\n x: Math.round(event.clientX - rect.left),\n y: Math.round(event.clientY - rect.top),\n },\n name: getActionNameFromElement(event.target, configuration, nodePrivacyLevel),\n };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent) {\n var id = generateUUID();\n var startClocks = clocksNow();\n var historyEntry = history.add(id, startClocks.relative);\n var eventCountsSubscription = trackEventCounts({\n lifeCycle: lifeCycle,\n isChildEvent: function (event) {\n return event.action !== undefined &&\n (Array.isArray(event.action.id) ? includes(event.action.id, id) : event.action.id === id);\n },\n });\n var status = 0 /* ClickStatus.ONGOING */;\n var activityEndTime;\n var frustrationTypes = [];\n var stopObservable = new Observable();\n function stop(newActivityEndTime) {\n if (status !== 0 /* ClickStatus.ONGOING */) {\n return;\n }\n activityEndTime = newActivityEndTime;\n status = 1 /* ClickStatus.STOPPED */;\n if (activityEndTime) {\n historyEntry.close(getRelativeTime(activityEndTime));\n }\n else {\n historyEntry.remove();\n }\n eventCountsSubscription.stop();\n stopObservable.notify();\n }\n return {\n event: startEvent,\n stop: stop,\n stopObservable: stopObservable,\n get hasError() {\n return eventCountsSubscription.eventCounts.errorCount > 0;\n },\n get hasPageActivity() {\n return activityEndTime !== undefined;\n },\n getUserActivity: getUserActivity,\n addFrustration: function (frustrationType) {\n frustrationTypes.push(frustrationType);\n },\n startClocks: startClocks,\n isStopped: function () { return status === 1 /* ClickStatus.STOPPED */ || status === 2 /* ClickStatus.FINALIZED */; },\n clone: function () { return newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent); },\n validate: function (domEvents) {\n stop();\n if (status !== 1 /* ClickStatus.STOPPED */) {\n return;\n }\n var _a = eventCountsSubscription.eventCounts, resourceCount = _a.resourceCount, errorCount = _a.errorCount, longTaskCount = _a.longTaskCount;\n var clickAction = assign({\n type: \"click\" /* ActionType.CLICK */,\n duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n startClocks: startClocks,\n id: id,\n frustrationTypes: frustrationTypes,\n counts: {\n resourceCount: resourceCount,\n errorCount: errorCount,\n longTaskCount: longTaskCount,\n },\n events: domEvents !== null && domEvents !== void 0 ? domEvents : [startEvent],\n event: startEvent,\n }, clickActionBase);\n lifeCycle.notify(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, clickAction);\n status = 2 /* ClickStatus.FINALIZED */;\n },\n discard: function () {\n stop();\n status = 2 /* ClickStatus.FINALIZED */;\n },\n };\n}\nexport function finalizeClicks(clicks, rageClick) {\n var isRage = computeFrustration(clicks, rageClick).isRage;\n if (isRage) {\n clicks.forEach(function (click) { return click.discard(); });\n rageClick.stop(timeStampNow());\n rageClick.validate(clicks.map(function (click) { return click.event; }));\n }\n else {\n rageClick.discard();\n clicks.forEach(function (click) { return click.validate(); });\n }\n}\n//# sourceMappingURL=trackClickActions.js.map","import { noop, assign, combine, toServerDuration, generateUUID } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { trackClickActions } from './trackClickActions';\nexport function startActionCollection(lifeCycle, domMutationObservable, configuration, pageStateHistory) {\n lifeCycle.subscribe(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, function (action) {\n return lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action, pageStateHistory));\n });\n var actionContexts = { findActionId: noop };\n if (configuration.trackUserInteractions) {\n actionContexts = trackClickActions(lifeCycle, domMutationObservable, configuration).actionContexts;\n }\n return {\n addAction: function (action, savedCommonContext) {\n lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n savedCommonContext: savedCommonContext,\n }, processAction(action, pageStateHistory)));\n },\n actionContexts: actionContexts,\n };\n}\nfunction processAction(action, pageStateHistory) {\n var autoActionProperties = isAutoAction(action)\n ? {\n action: {\n id: action.id,\n loading_time: discardNegativeDuration(toServerDuration(action.duration)),\n frustration: {\n type: action.frustrationTypes,\n },\n error: {\n count: action.counts.errorCount,\n },\n long_task: {\n count: action.counts.longTaskCount,\n },\n resource: {\n count: action.counts.resourceCount,\n },\n },\n _dd: {\n action: {\n target: action.target,\n position: action.position,\n },\n },\n }\n : undefined;\n var customerContext = !isAutoAction(action) ? action.context : undefined;\n var actionEvent = combine({\n action: {\n id: generateUUID(),\n target: {\n name: action.name,\n },\n type: action.type,\n },\n date: action.startClocks.timeStamp,\n type: \"action\" /* RumEventType.ACTION */,\n view: { in_foreground: pageStateHistory.wasInPageStateAt(\"active\" /* PageState.ACTIVE */, action.startClocks.relative) },\n }, autoActionProperties);\n var domainContext = isAutoAction(action) ? { events: action.events } : {};\n if (!isAutoAction(action) && action.handlingStack) {\n domainContext.handlingStack = action.handlingStack;\n }\n return {\n customerContext: customerContext,\n rawRumEvent: actionEvent,\n startTime: action.startClocks.relative,\n domainContext: domainContext,\n };\n}\nfunction isAutoAction(action) {\n return action.type !== \"custom\" /* ActionType.CUSTOM */;\n}\n//# sourceMappingURL=actionCollection.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTrace, computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { computeRawError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError(errorObservable) {\n var handleRuntimeError = function (stackTrace, originalError) {\n var rawError = computeRawError({\n stackTrace: stackTrace,\n originalError: originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n source: ErrorSource.SOURCE,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n });\n errorObservable.notify(rawError);\n };\n var stopInstrumentingOnError = instrumentOnError(handleRuntimeError).stop;\n var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(handleRuntimeError).stop;\n return {\n stop: function () {\n stopInstrumentingOnError();\n stopInstrumentingOnUnhandledRejection();\n },\n };\n}\nexport function instrumentOnError(callback) {\n return instrumentMethod(window, 'onerror', function (_a) {\n var _b = _a.parameters, messageObj = _b[0], url = _b[1], line = _b[2], column = _b[3], errorObj = _b[4];\n var stackTrace;\n if (errorObj instanceof Error) {\n stackTrace = computeStackTrace(errorObj);\n }\n else {\n stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n }\n callback(stackTrace, errorObj !== null && errorObj !== void 0 ? errorObj : messageObj);\n });\n}\nexport function instrumentUnhandledRejection(callback) {\n return instrumentMethod(window, 'onunhandledrejection', function (_a) {\n var e = _a.parameters[0];\n var reason = e.reason || 'Empty reason';\n var stack = computeStackTrace(reason);\n callback(stack, reason);\n });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { flattenErrorCauses, tryToGetFingerprint } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { find } from '../../tools/utils/polyfills';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, toStackTraceString, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n var consoleObservables = apis.map(function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api); // we are sure that the observable created for this api will yield the expected ConsoleLog type\n }\n return consoleObservablesByApi[api];\n });\n return mergeObservables.apply(void 0, consoleObservables);\n}\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n return new Observable(function (observable) {\n var originalConsoleApi = globalConsole[api];\n globalConsole[api] = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n originalConsoleApi.apply(console, params);\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack));\n });\n };\n return function () {\n globalConsole[api] = originalConsoleApi;\n };\n });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n var error;\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) { return param instanceof Error; });\n error = {\n stack: firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined,\n fingerprint: tryToGetFingerprint(firstErrorParam),\n causes: firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined,\n startClocks: clocksNow(),\n message: message,\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n handlingStack: handlingStack,\n };\n }\n return {\n api: api,\n message: message,\n error: error,\n handlingStack: handlingStack,\n };\n}\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return sanitize(param);\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param));\n }\n return jsonStringify(sanitize(param), undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { assign, includes } from '../../tools/utils/polyfills';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n var observables = [];\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration));\n }\n var reportTypes = apis.filter(function (api) { return api !== RawReportType.cspViolation; });\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes));\n }\n return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n return new Observable(function (observable) {\n if (!window.ReportingObserver) {\n return;\n }\n var handleReports = monitor(function (reports, _) {\n return reports.forEach(function (report) { return observable.notify(buildRawReportErrorFromReport(report)); });\n });\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n });\n observer.observe();\n return function () {\n observer.disconnect();\n };\n });\n}\nfunction createCspViolationReportObservable(configuration) {\n return new Observable(function (observable) {\n var stop = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, function (event) {\n observable.notify(buildRawReportErrorFromCspViolation(event));\n }).stop;\n return stop;\n });\n}\nfunction buildRawReportErrorFromReport(report) {\n var type = report.type, body = report.body;\n return buildRawReportError({\n type: body.id,\n message: \"\".concat(type, \": \").concat(body.message),\n originalError: report,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n return buildRawReportError({\n type: event.effectiveDirective,\n message: \"\".concat(RawReportType.cspViolation, \": \").concat(message),\n originalError: event,\n csp: {\n disposition: event.disposition,\n },\n stack: buildStack(event.effectiveDirective, event.originalPolicy\n ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\")\n : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n });\n}\nfunction buildRawReportError(partial) {\n return assign({\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n }, partial);\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return sourceFile\n ? toStackTraceString({\n name: name,\n message: message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber !== null && lineNumber !== void 0 ? lineNumber : undefined,\n column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined,\n },\n ],\n })\n : undefined;\n}\n//# sourceMappingURL=reportObservable.js.map","import { isEmptyObject, assign, ErrorSource, generateUUID, computeRawError, computeStackTrace, Observable, trackRuntimeError, } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts) {\n var errorObservable = new Observable();\n trackConsoleError(errorObservable);\n trackRuntimeError(errorObservable);\n trackReportError(configuration, errorObservable);\n errorObservable.subscribe(function (error) { return lifeCycle.notify(13 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error }); });\n return doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts);\n}\nexport function doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts) {\n lifeCycle.subscribe(13 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, function (_a) {\n var error = _a.error, customerContext = _a.customerContext, savedCommonContext = _a.savedCommonContext;\n lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n customerContext: customerContext,\n savedCommonContext: savedCommonContext,\n }, processError(error, pageStateHistory, featureFlagContexts)));\n });\n return {\n addError: function (_a, savedCommonContext) {\n var error = _a.error, handlingStack = _a.handlingStack, startClocks = _a.startClocks, customerContext = _a.context;\n var stackTrace = error instanceof Error ? computeStackTrace(error) : undefined;\n var rawError = computeRawError({\n stackTrace: stackTrace,\n originalError: error,\n handlingStack: handlingStack,\n startClocks: startClocks,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n source: ErrorSource.CUSTOM,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n });\n lifeCycle.notify(13 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n customerContext: customerContext,\n savedCommonContext: savedCommonContext,\n error: rawError,\n });\n },\n };\n}\nfunction processError(error, pageStateHistory, featureFlagContexts) {\n var rawRumEvent = {\n date: error.startClocks.timeStamp,\n error: {\n id: generateUUID(),\n message: error.message,\n source: error.source,\n stack: error.stack,\n handling_stack: error.handlingStack,\n type: error.type,\n handling: error.handling,\n causes: error.causes,\n source_type: 'browser',\n fingerprint: error.fingerprint,\n csp: error.csp,\n },\n type: \"error\" /* RumEventType.ERROR */,\n view: { in_foreground: pageStateHistory.wasInPageStateAt(\"active\" /* PageState.ACTIVE */, error.startClocks.relative) },\n };\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(error.startClocks.relative);\n if (featureFlagContext && !isEmptyObject(featureFlagContext)) {\n rawRumEvent.feature_flags = featureFlagContext;\n }\n var domainContext = {\n error: error.originalError,\n handlingStack: error.handlingStack,\n };\n return {\n rawRumEvent: rawRumEvent,\n startTime: error.startClocks.relative,\n domainContext: domainContext,\n };\n}\n//# sourceMappingURL=errorCollection.js.map","import { initConsoleObservable, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n var subscription = initConsoleObservable([ConsoleApiName.error]).subscribe(function (consoleLog) {\n return errorObservable.notify(consoleLog.error);\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackConsoleError.js.map","import { initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(configuration, errorObservable) {\n var subscription = initReportObservable(configuration, [\n RawReportType.cspViolation,\n RawReportType.intervention,\n ]).subscribe(function (rawError) { return errorObservable.notify(rawError); });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackReportError.js.map","import { addDuration } from '@datadog/browser-core';\nimport { WeakSet } from '../../browser/polyfills';\nimport { hasValidResourceEntryDuration, hasValidResourceEntryTimings } from './resourceUtils';\nvar alreadyMatchedEntries = new WeakSet();\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - filter out timing that were already matched to a request\n * - then, if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestResourceEntry(request) {\n if (!performance || !('getEntriesByName' in performance)) {\n return;\n }\n var sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n return;\n }\n var candidates = sameNameEntries\n .filter(function (entry) { return !alreadyMatchedEntries.has(entry); })\n .filter(function (entry) { return hasValidResourceEntryDuration(entry) && hasValidResourceEntryTimings(entry); })\n .filter(function (entry) {\n return isBetween(entry, request.startClocks.relative, endTime({ startTime: request.startClocks.relative, duration: request.duration }));\n });\n if (candidates.length === 1) {\n alreadyMatchedEntries.add(candidates[0]);\n return candidates[0].toJSON();\n }\n return;\n}\nfunction endTime(timing) {\n return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n var errorMargin = 1;\n return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}\n//# sourceMappingURL=matchRequestResourceEntry.js.map","import { noop } from '../tools/utils/functionUtils';\nimport { addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback();\n return { stop: noop };\n }\n var eventName = expectedReadyState === 'complete' ? \"load\" /* DOM_EVENT.LOAD */ : \"DOMContentLoaded\" /* DOM_EVENT.DOM_CONTENT_LOADED */;\n return addEventListener(configuration, window, eventName, callback, { once: true });\n}\n//# sourceMappingURL=runOnReadyState.js.map","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils';\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n return undefined;\n }\n return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n var traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n var traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n var comment = findTraceComment(document);\n if (!comment) {\n return undefined;\n }\n return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n var traceTime = rawTraceTime && Number(rawTraceTime);\n if (!traceId || !traceTime) {\n return undefined;\n }\n return {\n traceId: traceId,\n traceTime: traceTime,\n };\n}\nexport function findTraceComment(document) {\n // 1. Try to find the comment as a direct child of the document\n // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n // value is not an array or string (here, a NodeList).\n for (var i = 0; i < document.childNodes.length; i += 1) {\n var comment = getTraceCommentFromNode(document.childNodes[i]);\n if (comment) {\n return comment;\n }\n }\n // 2. If the comment is placed after the </html> tag, but have some space or new lines before or\n // after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.\n // Try to look for the comment at the end of the <body> by by iterating over its child nodes in\n // reverse order, stopping if we come across a non-text node.\n if (document.body) {\n for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n var node = document.body.childNodes[i];\n var comment = getTraceCommentFromNode(node);\n if (comment) {\n return comment;\n }\n if (!isTextNode(node)) {\n break;\n }\n }\n }\n}\nfunction getTraceCommentFromNode(node) {\n if (node && isCommentNode(node)) {\n var match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n if (match) {\n return match[1];\n }\n }\n}\n//# sourceMappingURL=getDocumentTraceId.js.map","import { assign, getRelativeTime, isNumber } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent, } from './performanceObservable';\nexport function getNavigationEntry() {\n if (supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n var navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0];\n if (navigationEntry) {\n return navigationEntry;\n }\n }\n var timings = computeTimingsFromDeprecatedPerformanceTiming();\n var entry = assign({\n entryType: RumPerformanceEntryType.NAVIGATION,\n initiatorType: 'navigation',\n name: window.location.href,\n startTime: 0,\n duration: timings.responseEnd,\n decodedBodySize: 0,\n encodedBodySize: 0,\n transferSize: 0,\n toJSON: function () { return assign({}, entry, { toJSON: undefined }); },\n }, timings);\n return entry;\n}\nexport function computeTimingsFromDeprecatedPerformanceTiming() {\n var result = {};\n var timing = performance.timing;\n for (var key in timing) {\n if (isNumber(timing[key])) {\n var numberKey = key;\n var timingElement = timing[numberKey];\n result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n }\n }\n return result;\n}\n//# sourceMappingURL=performanceUtils.js.map","import { assign, runOnReadyState } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../browser/performanceObservable';\nimport { getDocumentTraceId } from '../tracing/getDocumentTraceId';\nimport { getNavigationEntry } from '../../browser/performanceUtils';\nimport { FAKE_INITIAL_DOCUMENT } from './resourceUtils';\nexport function retrieveInitialDocumentResourceTiming(configuration, callback) {\n runOnReadyState(configuration, 'interactive', function () {\n var entry = assign(getNavigationEntry().toJSON(), {\n entryType: RumPerformanceEntryType.RESOURCE,\n initiatorType: FAKE_INITIAL_DOCUMENT,\n traceId: getDocumentTraceId(document),\n toJSON: function () { return assign({}, entry, { toJSON: undefined }); },\n });\n callback(entry);\n });\n}\n//# sourceMappingURL=retrieveInitialDocumentResourceTiming.js.map","import { combine, generateUUID, toServerDuration, relativeToClocks, assign, isNumber, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, createPerformanceObservable, } from '../../browser/performanceObservable';\nimport { createTraceIdentifier } from '../tracing/tracer';\nimport { matchRequestResourceEntry } from './matchRequestResourceEntry';\nimport { computeResourceEntryDetails, computeResourceEntryDuration, computeResourceEntryType, computeResourceEntrySize, isResourceEntryRequestType, isLongDataUrl, sanitizeDataUrl, } from './resourceUtils';\nimport { retrieveInitialDocumentResourceTiming } from './retrieveInitialDocumentResourceTiming';\nexport function startResourceCollection(lifeCycle, configuration, pageStateHistory, retrieveInitialDocumentResourceTimingImpl) {\n if (retrieveInitialDocumentResourceTimingImpl === void 0) { retrieveInitialDocumentResourceTimingImpl = retrieveInitialDocumentResourceTiming; }\n lifeCycle.subscribe(7 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n var rawEvent = processRequest(request, configuration, pageStateHistory);\n if (rawEvent) {\n lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n }\n });\n var performanceResourceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.RESOURCE,\n buffered: true,\n }).subscribe(function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (!isResourceEntryRequestType(entry)) {\n var rawEvent = processResourceEntry(entry, configuration);\n if (rawEvent) {\n lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n }\n }\n }\n });\n retrieveInitialDocumentResourceTimingImpl(configuration, function (timing) {\n var rawEvent = processResourceEntry(timing, configuration);\n if (rawEvent) {\n lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n }\n });\n return {\n stop: function () {\n performanceResourceSubscription.unsubscribe();\n },\n };\n}\nfunction processRequest(request, configuration, pageStateHistory) {\n var matchingTiming = matchRequestResourceEntry(request);\n var startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n var tracingInfo = computeRequestTracingInfo(request, configuration);\n if (!configuration.trackResources && !tracingInfo) {\n return;\n }\n var type = request.type === \"xhr\" /* RequestType.XHR */ ? \"xhr\" /* ResourceType.XHR */ : \"fetch\" /* ResourceType.FETCH */;\n var correspondingTimingOverrides = matchingTiming ? computeResourceEntryMetrics(matchingTiming) : undefined;\n var duration = computeRequestDuration(pageStateHistory, startClocks, request.duration);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n duration: duration,\n method: request.method,\n status_code: request.status,\n url: isLongDataUrl(request.url) ? sanitizeDataUrl(request.url) : request.url,\n },\n type: \"resource\" /* RumEventType.RESOURCE */,\n _dd: {\n discarded: !configuration.trackResources,\n },\n }, tracingInfo, correspondingTimingOverrides);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: matchingTiming,\n xhr: request.xhr,\n response: request.response,\n requestInput: request.input,\n requestInit: request.init,\n error: request.error,\n isAborted: request.isAborted,\n handlingStack: request.handlingStack,\n },\n };\n}\nfunction processResourceEntry(entry, configuration) {\n var startClocks = relativeToClocks(entry.startTime);\n var tracingInfo = computeResourceEntryTracingInfo(entry, configuration);\n if (!configuration.trackResources && !tracingInfo) {\n return;\n }\n var type = computeResourceEntryType(entry);\n var entryMetrics = computeResourceEntryMetrics(entry);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n url: entry.name,\n status_code: discardZeroStatus(entry.responseStatus),\n },\n type: \"resource\" /* RumEventType.RESOURCE */,\n _dd: {\n discarded: !configuration.trackResources,\n },\n }, tracingInfo, entryMetrics);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: entry,\n },\n };\n}\nfunction computeResourceEntryMetrics(entry) {\n var renderBlockingStatus = entry.renderBlockingStatus;\n return {\n resource: assign({\n duration: computeResourceEntryDuration(entry),\n render_blocking_status: renderBlockingStatus,\n }, computeResourceEntrySize(entry), computeResourceEntryDetails(entry)),\n };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n span_id: request.spanId.toDecimalString(),\n trace_id: request.traceId.toDecimalString(),\n rule_psr: getRulePsr(configuration),\n },\n };\n}\nfunction computeResourceEntryTracingInfo(entry, configuration) {\n var hasBeenTraced = entry.traceId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n trace_id: entry.traceId,\n span_id: createTraceIdentifier().toDecimalString(),\n rule_psr: getRulePsr(configuration),\n },\n };\n}\n/**\n * @returns number between 0 and 1 which represents trace sample rate\n */\nfunction getRulePsr(configuration) {\n return isNumber(configuration.traceSampleRate) ? configuration.traceSampleRate / 100 : undefined;\n}\nfunction computeRequestDuration(pageStateHistory, startClocks, duration) {\n return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, startClocks.relative, duration)\n ? toServerDuration(duration)\n : undefined;\n}\n/**\n * The status is 0 for cross-origin resources without CORS headers, so the status is meaningless, and we shouldn't report it\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus#cross-origin_response_status_codes\n */\nfunction discardZeroStatus(statusCode) {\n return statusCode === 0 ? undefined : statusCode;\n}\n//# sourceMappingURL=resourceCollection.js.map","import { setTimeout, relativeNow, runOnReadyState, clearTimeout } from '@datadog/browser-core';\nimport { getNavigationEntry } from '../../../browser/performanceUtils';\nexport function trackNavigationTimings(configuration, callback, getNavigationEntryImpl) {\n if (getNavigationEntryImpl === void 0) { getNavigationEntryImpl = getNavigationEntry; }\n return waitAfterLoadEvent(configuration, function () {\n var entry = getNavigationEntryImpl();\n if (!isIncompleteNavigation(entry)) {\n callback(processNavigationEntry(entry));\n }\n });\n}\nfunction processNavigationEntry(entry) {\n return {\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined,\n };\n}\nfunction isIncompleteNavigation(entry) {\n return entry.loadEventEnd <= 0;\n}\nfunction waitAfterLoadEvent(configuration, callback) {\n var timeoutId;\n var stopOnReadyState = runOnReadyState(configuration, 'complete', function () {\n // Invoke the callback a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n timeoutId = setTimeout(function () { return callback(); });\n }).stop;\n return {\n stop: function () {\n stopOnReadyState();\n clearTimeout(timeoutId);\n },\n };\n}\n//# sourceMappingURL=trackNavigationTimings.js.map","import { addEventListeners } from '@datadog/browser-core';\nexport function trackFirstHidden(configuration, eventTarget) {\n if (eventTarget === void 0) { eventTarget = window; }\n var timeStamp;\n var stopListeners;\n if (document.visibilityState === 'hidden') {\n timeStamp = 0;\n }\n else {\n timeStamp = Infinity;\n (stopListeners = addEventListeners(configuration, eventTarget, [\"pagehide\" /* DOM_EVENT.PAGE_HIDE */, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */], function (event) {\n if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */ || document.visibilityState === 'hidden') {\n timeStamp = event.timeStamp;\n stopListeners();\n }\n }, { capture: true }).stop);\n }\n return {\n get timeStamp() {\n return timeStamp;\n },\n stop: function () {\n stopListeners === null || stopListeners === void 0 ? void 0 : stopListeners();\n },\n };\n}\n//# sourceMappingURL=trackFirstHidden.js.map","import { trackFirstContentfulPaint } from './trackFirstContentfulPaint';\nimport { trackFirstInput } from './trackFirstInput';\nimport { trackNavigationTimings } from './trackNavigationTimings';\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackInitialViewMetrics(configuration, setLoadEvent, scheduleViewUpdate) {\n var initialViewMetrics = {};\n var stopNavigationTracking = trackNavigationTimings(configuration, function (navigationTimings) {\n setLoadEvent(navigationTimings.loadEvent);\n initialViewMetrics.navigationTimings = navigationTimings;\n scheduleViewUpdate();\n }).stop;\n var firstHidden = trackFirstHidden(configuration);\n var stopFCPTracking = trackFirstContentfulPaint(configuration, firstHidden, function (firstContentfulPaint) {\n initialViewMetrics.firstContentfulPaint = firstContentfulPaint;\n scheduleViewUpdate();\n }).stop;\n var stopLCPTracking = trackLargestContentfulPaint(configuration, firstHidden, window, function (largestContentfulPaint) {\n initialViewMetrics.largestContentfulPaint = largestContentfulPaint;\n scheduleViewUpdate();\n }).stop;\n var stopFIDTracking = trackFirstInput(configuration, firstHidden, function (firstInput) {\n initialViewMetrics.firstInput = firstInput;\n scheduleViewUpdate();\n }).stop;\n function stop() {\n stopNavigationTracking();\n stopFCPTracking();\n stopLCPTracking();\n stopFIDTracking();\n firstHidden.stop();\n }\n return {\n stop: stop,\n initialViewMetrics: initialViewMetrics,\n };\n}\n//# sourceMappingURL=trackInitialViewMetrics.js.map","import { ONE_MINUTE, find } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackFirstContentfulPaint(configuration, firstHidden, callback) {\n var performanceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.PAINT,\n buffered: true,\n }).subscribe(function (entries) {\n var fcpEntry = find(entries, function (entry) {\n return entry.name === 'first-contentful-paint' &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < FCP_MAXIMUM_DELAY;\n });\n if (fcpEntry) {\n callback(fcpEntry.startTime);\n }\n });\n return {\n stop: performanceSubscription.unsubscribe,\n };\n}\n//# sourceMappingURL=trackFirstContentfulPaint.js.map","import { ONE_MINUTE, addEventListeners, findLast } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(configuration, firstHidden, eventTarget, callback) {\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n var firstInteractionTimestamp = Infinity;\n var stopEventListener = addEventListeners(configuration, eventTarget, [\"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */], function (event) {\n firstInteractionTimestamp = event.timeStamp;\n }, { capture: true, once: true }).stop;\n var biggestLcpSize = 0;\n var performanceLcpSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n buffered: true,\n }).subscribe(function (entries) {\n var lcpEntry = findLast(entries, function (entry) {\n return entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n entry.startTime < firstInteractionTimestamp &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < LCP_MAXIMUM_DELAY &&\n // Ensure to get the LCP entry with the biggest size, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n entry.size > biggestLcpSize;\n });\n if (lcpEntry) {\n var lcpTargetSelector = void 0;\n if (lcpEntry.element) {\n lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute);\n }\n callback({\n value: lcpEntry.startTime,\n targetSelector: lcpTargetSelector,\n });\n biggestLcpSize = lcpEntry.size;\n }\n });\n return {\n stop: function () {\n stopEventListener();\n performanceLcpSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackLargestContentfulPaint.js.map","import { elapsed, find } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(configuration, firstHidden, callback) {\n var performanceFirstInputSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.FIRST_INPUT,\n buffered: true,\n }).subscribe(function (entries) {\n var firstInputEntry = find(entries, function (entry) { return entry.startTime < firstHidden.timeStamp; });\n if (firstInputEntry) {\n var firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n var firstInputTargetSelector = void 0;\n if (firstInputEntry.target && isElementNode(firstInputEntry.target)) {\n firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute);\n }\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n delay: firstInputDelay >= 0 ? firstInputDelay : 0,\n time: firstInputEntry.startTime,\n targetSelector: firstInputTargetSelector,\n });\n }\n });\n return {\n stop: function () {\n performanceFirstInputSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackFirstInput.js.map","import { round, find, ONE_SECOND, noop, elapsed } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType, createPerformanceObservable, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(configuration, viewStart, callback) {\n if (!isLayoutShiftSupported()) {\n return {\n stop: noop,\n };\n }\n var maxClsValue = 0;\n var maxClsTarget;\n var maxClsStartTime;\n // if no layout shift happen the value should be reported as 0\n callback({\n value: 0,\n });\n var window = slidingSessionWindow();\n var performanceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.LAYOUT_SHIFT,\n buffered: true,\n }).subscribe(function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.hadRecentInput || entry.startTime < viewStart) {\n continue;\n }\n var _a = window.update(entry), cumulatedValue = _a.cumulatedValue, isMaxValue = _a.isMaxValue;\n if (isMaxValue) {\n var target = getTargetFromSource(entry.sources);\n maxClsTarget = target ? new WeakRef(target) : undefined;\n maxClsStartTime = elapsed(viewStart, entry.startTime);\n }\n if (cumulatedValue > maxClsValue) {\n maxClsValue = cumulatedValue;\n var target = maxClsTarget === null || maxClsTarget === void 0 ? void 0 : maxClsTarget.deref();\n callback({\n value: round(maxClsValue, 4),\n targetSelector: target && getSelectorFromElement(target, configuration.actionNameAttribute),\n time: maxClsStartTime,\n });\n }\n }\n });\n return {\n stop: function () {\n performanceSubscription.unsubscribe();\n },\n };\n}\nfunction getTargetFromSource(sources) {\n var _a;\n if (!sources) {\n return;\n }\n return (_a = find(sources, function (source) { return !!source.node && isElementNode(source.node); })) === null || _a === void 0 ? void 0 : _a.node;\n}\nexport var MAX_WINDOW_DURATION = 5 * ONE_SECOND;\nvar MAX_UPDATE_GAP = ONE_SECOND;\nfunction slidingSessionWindow() {\n var cumulatedValue = 0;\n var startTime;\n var endTime;\n var maxValue = 0;\n return {\n update: function (entry) {\n var shouldCreateNewWindow = startTime === undefined ||\n entry.startTime - endTime >= MAX_UPDATE_GAP ||\n entry.startTime - startTime >= MAX_WINDOW_DURATION;\n var isMaxValue;\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime;\n maxValue = cumulatedValue = entry.value;\n isMaxValue = true;\n }\n else {\n cumulatedValue += entry.value;\n endTime = entry.startTime;\n isMaxValue = entry.value > maxValue;\n if (isMaxValue) {\n maxValue = entry.value;\n }\n }\n return {\n cumulatedValue: cumulatedValue,\n isMaxValue: isMaxValue,\n };\n },\n };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT) && 'WeakRef' in window;\n}\n//# sourceMappingURL=trackCumulativeLayoutShift.js.map","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\nimport { monitor } from '@datadog/browser-core';\nvar observer;\nvar interactionCountEstimate = 0;\nvar minKnownInteractionId = Infinity;\nvar maxKnownInteractionId = 0;\nexport function initInteractionCountPolyfill() {\n if ('interactionCount' in performance || observer) {\n return;\n }\n observer = new window.PerformanceObserver(monitor(function (entries) {\n entries.getEntries().forEach(function (e) {\n var entry = e;\n if (entry.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId);\n interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1;\n }\n });\n }));\n observer.observe({ type: 'event', buffered: true, durationThreshold: 0 });\n}\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport var getInteractionCount = function () {\n return observer ? interactionCountEstimate : window.performance.interactionCount || 0;\n};\n//# sourceMappingURL=interactionCountPolyfill.js.map","import { Observable, throttle, addEventListener } from '@datadog/browser-core';\nvar viewportObservable;\nexport function initViewportObservable(configuration) {\n if (!viewportObservable) {\n viewportObservable = createViewportObservable(configuration);\n }\n return viewportObservable;\n}\nexport function createViewportObservable(configuration) {\n return new Observable(function (observable) {\n var updateDimension = throttle(function () {\n observable.notify(getViewportDimension());\n }, 200).throttled;\n return addEventListener(configuration, window, \"resize\" /* DOM_EVENT.RESIZE */, updateDimension, { capture: true, passive: true })\n .stop;\n });\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n var visual = window.visualViewport;\n if (visual) {\n return {\n width: Number(visual.width * visual.scale),\n height: Number(visual.height * visual.scale),\n };\n }\n return {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0),\n };\n}\n//# sourceMappingURL=viewportObservable.js.map","import { elapsed, noop, ONE_MINUTE } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType, supportPerformanceTimingEvent, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { getInteractionSelector } from '../../action/interactionSelectorCache';\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill';\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nvar MAX_INTERACTION_ENTRIES = 10;\n// Arbitrary value to cap INP outliers\nexport var MAX_INP_VALUE = (1 * ONE_MINUTE);\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(configuration, viewStart, viewLoadingType) {\n if (!isInteractionToNextPaintSupported()) {\n return {\n getInteractionToNextPaint: function () { return undefined; },\n setViewEnd: noop,\n stop: noop,\n };\n }\n var _a = trackViewInteractionCount(viewLoadingType), getViewInteractionCount = _a.getViewInteractionCount, stopViewInteractionCount = _a.stopViewInteractionCount;\n var viewEnd = Infinity;\n var longestInteractions = trackLongestInteractions(getViewInteractionCount);\n var interactionToNextPaint = -1;\n var interactionToNextPaintTargetSelector;\n var interactionToNextPaintStartTime;\n function handleEntries(entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.interactionId &&\n // Check the entry start time is inside the view bounds because some view interactions can be reported after the view end (if long duration).\n entry.startTime >= viewStart &&\n entry.startTime <= viewEnd) {\n longestInteractions.process(entry);\n }\n }\n var newInteraction = longestInteractions.estimateP98Interaction();\n if (newInteraction && newInteraction.duration !== interactionToNextPaint) {\n interactionToNextPaint = newInteraction.duration;\n interactionToNextPaintStartTime = elapsed(viewStart, newInteraction.startTime);\n interactionToNextPaintTargetSelector = getInteractionSelector(newInteraction.startTime);\n if (!interactionToNextPaintTargetSelector && newInteraction.target && isElementNode(newInteraction.target)) {\n interactionToNextPaintTargetSelector = getSelectorFromElement(newInteraction.target, configuration.actionNameAttribute);\n }\n }\n }\n var firstInputSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.FIRST_INPUT,\n buffered: true,\n }).subscribe(handleEntries);\n var eventSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.EVENT,\n // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L202-L210\n durationThreshold: 40,\n buffered: true,\n }).subscribe(handleEntries);\n return {\n getInteractionToNextPaint: function () {\n // If no INP duration where captured because of the performanceObserver 40ms threshold\n // but the view interaction count > 0 then report 0\n if (interactionToNextPaint >= 0) {\n return {\n value: Math.min(interactionToNextPaint, MAX_INP_VALUE),\n targetSelector: interactionToNextPaintTargetSelector,\n time: interactionToNextPaintStartTime,\n };\n }\n else if (getViewInteractionCount()) {\n return {\n value: 0,\n };\n }\n },\n setViewEnd: function (viewEndTime) {\n viewEnd = viewEndTime;\n stopViewInteractionCount();\n },\n stop: function () {\n eventSubscription.unsubscribe();\n firstInputSubscription.unsubscribe();\n },\n };\n}\nfunction trackLongestInteractions(getViewInteractionCount) {\n var longestInteractions = [];\n function sortAndTrimLongestInteractions() {\n longestInteractions.sort(function (a, b) { return b.duration - a.duration; }).splice(MAX_INTERACTION_ENTRIES);\n }\n return {\n /**\n * Process the performance entry:\n * - if its duration is long enough, add the performance entry to the list of worst interactions\n * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n */\n process: function (entry) {\n var interactionIndex = longestInteractions.findIndex(function (interaction) { return entry.interactionId === interaction.interactionId; });\n var minLongestInteraction = longestInteractions[longestInteractions.length - 1];\n if (interactionIndex !== -1) {\n if (entry.duration > longestInteractions[interactionIndex].duration) {\n longestInteractions[interactionIndex] = entry;\n sortAndTrimLongestInteractions();\n }\n }\n else if (longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n entry.duration > minLongestInteraction.duration) {\n longestInteractions.push(entry);\n sortAndTrimLongestInteractions();\n }\n },\n /**\n * Compute the p98 longest interaction.\n * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n */\n estimateP98Interaction: function () {\n var interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50));\n return longestInteractions[interactionIndex];\n },\n };\n}\nexport function trackViewInteractionCount(viewLoadingType) {\n initInteractionCountPolyfill();\n var previousInteractionCount = viewLoadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */ ? 0 : getInteractionCount();\n var state = { stopped: false };\n function computeViewInteractionCount() {\n return getInteractionCount() - previousInteractionCount;\n }\n return {\n getViewInteractionCount: function () {\n if (state.stopped) {\n return state.interactionCount;\n }\n return computeViewInteractionCount();\n },\n stopViewInteractionCount: function () {\n state = { stopped: true, interactionCount: computeViewInteractionCount() };\n },\n };\n}\nexport function isInteractionToNextPaintSupported() {\n return (supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n window.PerformanceEventTiming &&\n 'interactionId' in PerformanceEventTiming.prototype);\n}\n//# sourceMappingURL=trackInteractionToNextPaint.js.map","export function getScrollX() {\n var scrollX;\n var visual = window.visualViewport;\n if (visual) {\n scrollX = visual.pageLeft - visual.offsetLeft;\n }\n else if (window.scrollX !== undefined) {\n scrollX = window.scrollX;\n }\n else {\n scrollX = window.pageXOffset || 0;\n }\n return Math.round(scrollX);\n}\nexport function getScrollY() {\n var scrollY;\n var visual = window.visualViewport;\n if (visual) {\n scrollY = visual.pageTop - visual.offsetTop;\n }\n else if (window.scrollY !== undefined) {\n scrollY = window.scrollY;\n }\n else {\n scrollY = window.pageYOffset || 0;\n }\n return Math.round(scrollY);\n}\n//# sourceMappingURL=scroll.js.map","import { Observable, ONE_SECOND, elapsed, relativeNow, throttle, addEventListener, monitor, } from '@datadog/browser-core';\nimport { getScrollY } from '../../../browser/scroll';\nimport { getViewportDimension } from '../../../browser/viewportObservable';\n/** Arbitrary scroll throttle duration */\nexport var THROTTLE_SCROLL_DURATION = ONE_SECOND;\nexport function trackScrollMetrics(configuration, viewStart, callback, scrollValues) {\n if (scrollValues === void 0) { scrollValues = createScrollValuesObservable(configuration); }\n var maxScrollDepth = 0;\n var maxScrollHeight = 0;\n var maxScrollHeightTime = 0;\n var subscription = scrollValues.subscribe(function (_a) {\n var scrollDepth = _a.scrollDepth, scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight;\n var shouldUpdate = false;\n if (scrollDepth > maxScrollDepth) {\n maxScrollDepth = scrollDepth;\n shouldUpdate = true;\n }\n if (scrollHeight > maxScrollHeight) {\n maxScrollHeight = scrollHeight;\n var now = relativeNow();\n maxScrollHeightTime = elapsed(viewStart.relative, now);\n shouldUpdate = true;\n }\n if (shouldUpdate) {\n callback({\n maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n maxDepthScrollTop: scrollTop,\n maxScrollHeight: maxScrollHeight,\n maxScrollHeightTime: maxScrollHeightTime,\n });\n }\n });\n return {\n stop: function () { return subscription.unsubscribe(); },\n };\n}\nexport function computeScrollValues() {\n var scrollTop = getScrollY();\n var height = getViewportDimension().height;\n var scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight);\n var scrollDepth = Math.round(height + scrollTop);\n return {\n scrollHeight: scrollHeight,\n scrollDepth: scrollDepth,\n scrollTop: scrollTop,\n };\n}\nexport function createScrollValuesObservable(configuration, throttleDuration) {\n if (throttleDuration === void 0) { throttleDuration = THROTTLE_SCROLL_DURATION; }\n return new Observable(function (observable) {\n function notify() {\n observable.notify(computeScrollValues());\n }\n if (window.ResizeObserver) {\n var throttledNotify_1 = throttle(notify, throttleDuration, {\n leading: false,\n trailing: true,\n });\n var observerTarget_1 = document.scrollingElement || document.documentElement;\n var resizeObserver_1 = new ResizeObserver(monitor(throttledNotify_1.throttled));\n resizeObserver_1.observe(observerTarget_1);\n var eventListener_1 = addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, throttledNotify_1.throttled, {\n passive: true,\n });\n return function () {\n throttledNotify_1.cancel();\n resizeObserver_1.unobserve(observerTarget_1);\n eventListener_1.stop();\n };\n }\n });\n}\n//# sourceMappingURL=trackScrollMetrics.js.map","import { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift';\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint';\nimport { trackLoadingTime } from './trackLoadingTime';\nimport { trackScrollMetrics } from './trackScrollMetrics';\nexport function trackCommonViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {\n var commonViewMetrics = {};\n var _a = trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadingType, viewStart, function (newLoadingTime) {\n commonViewMetrics.loadingTime = newLoadingTime;\n scheduleViewUpdate();\n }), stopLoadingTimeTracking = _a.stop, setLoadEvent = _a.setLoadEvent;\n var stopScrollMetricsTracking = trackScrollMetrics(configuration, viewStart, function (newScrollMetrics) {\n commonViewMetrics.scroll = newScrollMetrics;\n }).stop;\n var stopCLSTracking = trackCumulativeLayoutShift(configuration, viewStart.relative, function (cumulativeLayoutShift) {\n commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n scheduleViewUpdate();\n }).stop;\n var _b = trackInteractionToNextPaint(configuration, viewStart.relative, loadingType), stopINPTracking = _b.stop, getInteractionToNextPaint = _b.getInteractionToNextPaint, setViewEnd = _b.setViewEnd;\n return {\n stop: function () {\n stopLoadingTimeTracking();\n stopCLSTracking();\n stopScrollMetricsTracking();\n },\n stopINPTracking: stopINPTracking,\n setLoadEvent: setLoadEvent,\n setViewEnd: setViewEnd,\n getCommonViewMetrics: function () {\n commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint();\n return commonViewMetrics;\n },\n };\n}\n//# sourceMappingURL=trackCommonViewMetrics.js.map","import { elapsed } from '@datadog/browser-core';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadType, viewStart, callback) {\n var isWaitingForLoadEvent = loadType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */;\n var isWaitingForActivityLoadingTime = true;\n var loadingTimeCandidates = [];\n var firstHidden = trackFirstHidden(configuration);\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n var loadingTime = Math.max.apply(Math, loadingTimeCandidates);\n if (loadingTime < firstHidden.timeStamp) {\n callback(loadingTime);\n }\n }\n }\n var stop = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (event) {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false;\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n }\n invokeCallbackIfAllCandidatesAreReceived();\n }\n }).stop;\n return {\n stop: function () {\n stop();\n firstHidden.stop();\n },\n setLoadEvent: function (loadEvent) {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false;\n loadingTimeCandidates.push(loadEvent);\n invokeCallbackIfAllCandidatesAreReceived();\n }\n },\n };\n}\n//# sourceMappingURL=trackLoadingTime.js.map","import { noop, PageExitReason, shallowClone, elapsed, generateUUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, setInterval, clearInterval, setTimeout, Observable, isExperimentalFeatureEnabled, ExperimentalFeature, createContextManager, } from '@datadog/browser-core';\nimport { trackViewEventCounts } from './trackViewEventCounts';\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics';\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics';\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport var KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n var activeViews = new Set();\n var currentView = startNewView(\"initial_load\" /* ViewLoadingType.INITIAL_LOAD */, clocksOrigin(), initialViewOptions);\n startViewLifeCycle();\n var locationChangeSubscription;\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n }\n function startNewView(loadingType, startClocks, viewOptions) {\n var newlyCreatedView = newView(lifeCycle, domMutationObservable, configuration, location, loadingType, startClocks, viewOptions);\n activeViews.add(newlyCreatedView);\n newlyCreatedView.stopObservable.subscribe(function () {\n activeViews.delete(newlyCreatedView);\n });\n return newlyCreatedView;\n }\n function startViewLifeCycle() {\n lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n // Renew view on session renewal\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version,\n context: currentView.contextManager.getContext(),\n });\n });\n lifeCycle.subscribe(8 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n currentView.end({ sessionIsActive: false });\n });\n // End the current view on page unload\n lifeCycle.subscribe(10 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n currentView.end();\n }\n });\n }\n function renewViewOnLocationChange(locationChangeObservable) {\n return locationChangeObservable.subscribe(function (_a) {\n var oldLocation = _a.oldLocation, newLocation = _a.newLocation;\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end();\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */);\n }\n });\n }\n return {\n addTiming: function (name, time) {\n if (time === void 0) { time = timeStampNow(); }\n currentView.addTiming(name, time);\n },\n startView: function (options, startClocks) {\n currentView.end({ endClocks: startClocks });\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, startClocks, options);\n },\n setViewContext: function (context) {\n currentView.contextManager.setContext(context);\n },\n setViewContextProperty: function (key, value) {\n currentView.contextManager.setContextProperty(key, value);\n },\n updateViewName: function (name) {\n currentView.updateViewName(name);\n },\n stop: function () {\n if (locationChangeSubscription) {\n locationChangeSubscription.unsubscribe();\n }\n currentView.end();\n activeViews.forEach(function (view) { return view.stop(); });\n },\n };\n}\nfunction newView(lifeCycle, domMutationObservable, configuration, initialLocation, loadingType, startClocks, viewOptions) {\n if (startClocks === void 0) { startClocks = clocksNow(); }\n // Setup initial values\n var id = generateUUID();\n var stopObservable = new Observable();\n var customTimings = {};\n var documentVersion = 0;\n var endClocks;\n var location = shallowClone(initialLocation);\n var contextManager = createContextManager();\n var sessionIsActive = true;\n var name;\n var service;\n var version;\n var context;\n if (viewOptions) {\n name = viewOptions.name;\n service = viewOptions.service || undefined;\n version = viewOptions.version || undefined;\n if (viewOptions.context) {\n context = viewOptions.context;\n // use ContextManager to update the context so we always sanitize it\n contextManager.setContext(context);\n }\n }\n var viewCreatedEvent = {\n id: id,\n name: name,\n startClocks: startClocks,\n service: service,\n version: version,\n context: context,\n };\n lifeCycle.notify(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, viewCreatedEvent);\n lifeCycle.notify(2 /* LifeCycleEventType.VIEW_CREATED */, viewCreatedEvent);\n // Update the view every time the measures are changing\n var _a = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {\n leading: false,\n }), scheduleViewUpdate = _a.throttled, cancelScheduleViewUpdate = _a.cancel;\n var _b = trackCommonViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, startClocks), setLoadEvent = _b.setLoadEvent, setViewEnd = _b.setViewEnd, stopCommonViewMetricsTracking = _b.stop, stopINPTracking = _b.stopINPTracking, getCommonViewMetrics = _b.getCommonViewMetrics;\n var _c = loadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */\n ? trackInitialViewMetrics(configuration, setLoadEvent, scheduleViewUpdate)\n : { stop: noop, initialViewMetrics: {} }, stopInitialViewMetricsTracking = _c.stop, initialViewMetrics = _c.initialViewMetrics;\n var _d = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate), stopEventCountsTracking = _d.stop, eventCounts = _d.eventCounts;\n // Session keep alive\n var keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);\n // Initial view update\n triggerViewUpdate();\n contextManager.changeObservable.subscribe(triggerViewUpdate);\n function triggerViewUpdate() {\n cancelScheduleViewUpdate();\n documentVersion += 1;\n var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n lifeCycle.notify(3 /* LifeCycleEventType.VIEW_UPDATED */, {\n customTimings: customTimings,\n documentVersion: documentVersion,\n id: id,\n name: name,\n service: service,\n version: version,\n context: contextManager.getContext(),\n loadingType: loadingType,\n location: location,\n startClocks: startClocks,\n commonViewMetrics: getCommonViewMetrics(),\n initialViewMetrics: initialViewMetrics,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n sessionIsActive: sessionIsActive,\n eventCounts: eventCounts,\n });\n }\n return {\n get name() {\n return name;\n },\n service: service,\n version: version,\n contextManager: contextManager,\n stopObservable: stopObservable,\n end: function (options) {\n var _this = this;\n var _a, _b;\n if (options === void 0) { options = {}; }\n if (endClocks) {\n // view already ended\n return;\n }\n endClocks = (_a = options.endClocks) !== null && _a !== void 0 ? _a : clocksNow();\n sessionIsActive = (_b = options.sessionIsActive) !== null && _b !== void 0 ? _b : true;\n lifeCycle.notify(4 /* LifeCycleEventType.VIEW_ENDED */, { endClocks: endClocks });\n lifeCycle.notify(5 /* LifeCycleEventType.AFTER_VIEW_ENDED */, { endClocks: endClocks });\n clearInterval(keepAliveIntervalId);\n setViewEnd(endClocks.relative);\n stopCommonViewMetricsTracking();\n triggerViewUpdate();\n setTimeout(function () {\n _this.stop();\n }, KEEP_TRACKING_AFTER_VIEW_DELAY);\n },\n stop: function () {\n stopInitialViewMetricsTracking();\n stopEventCountsTracking();\n stopINPTracking();\n stopObservable.notify();\n },\n addTiming: function (name, time) {\n if (endClocks) {\n return;\n }\n var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n customTimings[sanitizeTiming(name)] = relativeTime;\n scheduleViewUpdate();\n },\n updateViewName: function (updatedName) {\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.UPDATE_VIEW_NAME)) {\n return;\n }\n name = updatedName;\n triggerViewUpdate();\n },\n };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n if (sanitized !== name) {\n display.warn(\"Invalid timing name: \".concat(name, \", sanitized to: \").concat(sanitized));\n }\n return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n return (currentLocation.pathname !== otherLocation.pathname ||\n (!isHashAnAnchor(otherLocation.hash) &&\n getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash)));\n}\nfunction isHashAnAnchor(hash) {\n var correspondingId = hash.substring(1);\n // check if the correspondingId is empty because on Firefox an empty string passed to getElementById() prints a consol warning\n return correspondingId !== '' && !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n var index = hash.indexOf('?');\n return index < 0 ? hash : hash.slice(0, index);\n}\n//# sourceMappingURL=trackViews.js.map","import { trackEventCounts } from '../trackEventCounts';\nexport function trackViewEventCounts(lifeCycle, viewId, onChange) {\n var _a = trackEventCounts({\n lifeCycle: lifeCycle,\n isChildEvent: function (event) { return event.view.id === viewId; },\n onChange: onChange,\n }), stop = _a.stop, eventCounts = _a.eventCounts;\n return {\n stop: stop,\n eventCounts: eventCounts,\n };\n}\n//# sourceMappingURL=trackViewEventCounts.js.map","import { isEmptyObject, mapValues, toServerDuration } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions) {\n lifeCycle.subscribe(3 /* LifeCycleEventType.VIEW_UPDATED */, function (view) {\n return lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory));\n });\n return trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n var replayStats = recorderApi.getReplayStats(view.id);\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(view.startClocks.relative);\n var pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration);\n var viewEvent = {\n _dd: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n page_states: pageStates,\n configuration: {\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n },\n },\n date: view.startClocks.timeStamp,\n type: \"view\" /* RumEventType.VIEW */,\n view: {\n action: {\n count: view.eventCounts.actionCount,\n },\n frustration: {\n count: view.eventCounts.frustrationCount,\n },\n cumulative_layout_shift: (_a = view.commonViewMetrics.cumulativeLayoutShift) === null || _a === void 0 ? void 0 : _a.value,\n cumulative_layout_shift_time: toServerDuration((_b = view.commonViewMetrics.cumulativeLayoutShift) === null || _b === void 0 ? void 0 : _b.time),\n cumulative_layout_shift_target_selector: (_c = view.commonViewMetrics.cumulativeLayoutShift) === null || _c === void 0 ? void 0 : _c.targetSelector,\n first_byte: toServerDuration((_d = view.initialViewMetrics.navigationTimings) === null || _d === void 0 ? void 0 : _d.firstByte),\n dom_complete: toServerDuration((_e = view.initialViewMetrics.navigationTimings) === null || _e === void 0 ? void 0 : _e.domComplete),\n dom_content_loaded: toServerDuration((_f = view.initialViewMetrics.navigationTimings) === null || _f === void 0 ? void 0 : _f.domContentLoaded),\n dom_interactive: toServerDuration((_g = view.initialViewMetrics.navigationTimings) === null || _g === void 0 ? void 0 : _g.domInteractive),\n error: {\n count: view.eventCounts.errorCount,\n },\n first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n first_input_delay: toServerDuration((_h = view.initialViewMetrics.firstInput) === null || _h === void 0 ? void 0 : _h.delay),\n first_input_time: toServerDuration((_j = view.initialViewMetrics.firstInput) === null || _j === void 0 ? void 0 : _j.time),\n first_input_target_selector: (_k = view.initialViewMetrics.firstInput) === null || _k === void 0 ? void 0 : _k.targetSelector,\n interaction_to_next_paint: toServerDuration((_l = view.commonViewMetrics.interactionToNextPaint) === null || _l === void 0 ? void 0 : _l.value),\n interaction_to_next_paint_time: toServerDuration((_m = view.commonViewMetrics.interactionToNextPaint) === null || _m === void 0 ? void 0 : _m.time),\n interaction_to_next_paint_target_selector: (_o = view.commonViewMetrics.interactionToNextPaint) === null || _o === void 0 ? void 0 : _o.targetSelector,\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration((_p = view.initialViewMetrics.largestContentfulPaint) === null || _p === void 0 ? void 0 : _p.value),\n largest_contentful_paint_target_selector: (_q = view.initialViewMetrics.largestContentfulPaint) === null || _q === void 0 ? void 0 : _q.targetSelector,\n load_event: toServerDuration((_r = view.initialViewMetrics.navigationTimings) === null || _r === void 0 ? void 0 : _r.loadEvent),\n loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount,\n },\n resource: {\n count: view.eventCounts.resourceCount,\n },\n time_spent: toServerDuration(view.duration),\n },\n feature_flags: featureFlagContext && !isEmptyObject(featureFlagContext) ? featureFlagContext : undefined,\n display: view.commonViewMetrics.scroll\n ? {\n scroll: {\n max_depth: view.commonViewMetrics.scroll.maxDepth,\n max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime),\n },\n }\n : undefined,\n session: {\n has_replay: replayStats ? true : undefined,\n is_active: view.sessionIsActive ? undefined : false,\n },\n privacy: {\n replay_level: configuration.defaultPrivacyLevel,\n },\n };\n if (!isEmptyObject(view.customTimings)) {\n viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n }\n return {\n rawRumEvent: viewEvent,\n startTime: view.startClocks.relative,\n domainContext: {\n location: view.location,\n },\n };\n}\n//# sourceMappingURL=viewCollection.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {\n var renewObservable = new Observable();\n var expireObservable = new Observable();\n // TODO - Improve configuration type and remove assertion\n var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);\n stopCallbacks.push(function () { return sessionStore.stop(); });\n var sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n });\n stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n renewObservable.notify();\n });\n sessionStore.expireObservable.subscribe(function () {\n expireObservable.notify();\n sessionContextHistory.closeActive(relativeNow());\n });\n // We expand/renew session unconditionally as tracking consent is always granted when the session\n // manager is started.\n sessionStore.expandOrRenewSession();\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n trackingConsentState.observable.subscribe(function () {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n else {\n sessionStore.expire();\n }\n });\n trackActivity(configuration, function () {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n });\n trackVisibility(configuration, function () { return sessionStore.expandSession(); });\n trackResume(configuration, function () { return sessionStore.restartSession(); });\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey],\n isReplayForced: !!sessionStore.getSession().forcedReplay,\n };\n }\n return {\n findSession: function (startTime, options) { return sessionContextHistory.find(startTime, options); },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState,\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) { return e(); });\n stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n var stop = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n };\n var stop = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n stopCallbacks.push(stop);\n var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval);\n });\n}\nfunction trackResume(configuration, cb) {\n var stop = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true }).stop;\n stopCallbacks.push(stop);\n}\n//# sourceMappingURL=sessionManager.js.map","import { Observable, bridgeSupports, noop, performDraw, startSessionManager, } from '@datadog/browser-core';\nexport var RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle, trackingConsentState) {\n var sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, function (rawTrackingType) { return computeSessionState(configuration, rawTrackingType); }, trackingConsentState);\n sessionManager.expireObservable.subscribe(function () {\n lifeCycle.notify(8 /* LifeCycleEventType.SESSION_EXPIRED */);\n });\n sessionManager.renewObservable.subscribe(function () {\n lifeCycle.notify(9 /* LifeCycleEventType.SESSION_RENEWED */);\n });\n sessionManager.sessionStateUpdateObservable.subscribe(function (_a) {\n var previousState = _a.previousState, newState = _a.newState;\n if (!previousState.forcedReplay && newState.forcedReplay) {\n var sessionEntity = sessionManager.findSession();\n if (sessionEntity) {\n sessionEntity.isReplayForced = true;\n }\n }\n });\n return {\n findTrackedSession: function (startTime) {\n var session = sessionManager.findSession(startTime);\n if (!session || !isTypeTracked(session.trackingType)) {\n return;\n }\n return {\n id: session.id,\n sessionReplay: session.trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */\n ? 1 /* SessionReplayState.SAMPLED */\n : session.isReplayForced\n ? 2 /* SessionReplayState.FORCED */\n : 0 /* SessionReplayState.OFF */,\n };\n },\n expire: sessionManager.expire,\n expireObservable: sessionManager.expireObservable,\n setForcedReplay: function () { return sessionManager.updateSessionState({ forcedReplay: '1' }); },\n };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n var session = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n sessionReplay: bridgeSupports(\"records\" /* BridgeCapability.RECORDS */) ? 1 /* SessionReplayState.SAMPLED */ : 0 /* SessionReplayState.OFF */,\n };\n return {\n findTrackedSession: function () { return session; },\n expire: noop,\n expireObservable: new Observable(),\n setForcedReplay: noop,\n };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n var trackingType;\n if (hasValidRumSession(rawTrackingType)) {\n trackingType = rawTrackingType;\n }\n else if (!performDraw(configuration.sessionSampleRate)) {\n trackingType = \"0\" /* RumTrackingType.NOT_TRACKED */;\n }\n else if (!performDraw(configuration.sessionReplaySampleRate)) {\n trackingType = \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n }\n else {\n trackingType = \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n }\n return {\n trackingType: trackingType,\n isTracked: isTypeTracked(trackingType),\n };\n}\nfunction hasValidRumSession(trackingType) {\n return (trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */ ||\n trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ ||\n trackingType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */);\n}\nfunction isTypeTracked(rumSessionType) {\n return (rumSessionType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */ ||\n rumSessionType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */);\n}\n//# sourceMappingURL=rumSessionManager.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nexport function createBatch(_a) {\n var encoder = _a.encoder, request = _a.request, flushController = _a.flushController, messageBytesLimit = _a.messageBytesLimit;\n var upsertBuffer = {};\n var flushSubscription = flushController.flushObservable.subscribe(function (event) { return flush(event); });\n function push(serializedMessage, estimatedMessageBytesCount, key) {\n flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);\n if (key !== undefined) {\n upsertBuffer[key] = serializedMessage;\n flushController.notifyAfterAddMessage();\n }\n else {\n encoder.write(encoder.isEmpty ? serializedMessage : \"\\n\".concat(serializedMessage), function (realMessageBytesCount) {\n flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);\n });\n }\n }\n function hasMessageFor(key) {\n return key !== undefined && upsertBuffer[key] !== undefined;\n }\n function remove(key) {\n var removedMessage = upsertBuffer[key];\n delete upsertBuffer[key];\n var messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n flushController.notifyAfterRemoveMessage(messageBytesCount);\n }\n function addOrUpdate(message, key) {\n var serializedMessage = jsonStringify(message);\n var estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n if (estimatedMessageBytesCount >= messageBytesLimit) {\n display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(messageBytesLimit, \"KB. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#technical-limitations\"));\n return;\n }\n if (hasMessageFor(key)) {\n remove(key);\n }\n push(serializedMessage, estimatedMessageBytesCount, key);\n }\n function flush(event) {\n var upsertMessages = objectValues(upsertBuffer).join('\\n');\n upsertBuffer = {};\n var isPageExit = isPageExitReason(event.reason);\n var send = isPageExit ? request.sendOnExit : request.send;\n if (isPageExit &&\n // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n // if the encoder is async we need to send two requests in some cases (one for encoded data\n // and the other for non-encoded data). But if it's not async, we don't have to worry about\n // it and always send a single request.\n encoder.isAsync) {\n var encoderResult = encoder.finishSync();\n // Send encoded messages\n if (encoderResult.outputBytesCount) {\n send(formatPayloadFromEncoder(encoderResult));\n }\n // Send messages that are not yet encoded at this point\n var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n');\n if (pendingMessages) {\n send({\n data: pendingMessages,\n bytesCount: computeBytesCount(pendingMessages),\n });\n }\n }\n else {\n if (upsertMessages) {\n encoder.write(encoder.isEmpty ? upsertMessages : \"\\n\".concat(upsertMessages));\n }\n encoder.finish(function (encoderResult) {\n send(formatPayloadFromEncoder(encoderResult));\n });\n }\n }\n return {\n flushController: flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe,\n };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n var data;\n if (typeof encoderResult.output === 'string') {\n data = encoderResult.output;\n }\n else {\n data = new Blob([encoderResult.output], {\n // This will set the 'Content-Type: text/plain' header. Reasoning:\n // * The intake rejects the request if there is no content type.\n // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n // could induce higher intake load (and maybe has other impacts).\n // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n // new lines.\n type: 'text/plain',\n });\n }\n return {\n data: data,\n bytesCount: encoderResult.outputBytesCount,\n encoding: encoderResult.encoding,\n };\n}\n//# sourceMappingURL=batch.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, {\n onSuccess: function () { return retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError); },\n onFailure: function () {\n state.queuedPayloads.enqueue(payload);\n scheduleRetry(state, sendStrategy, trackType, reportError);\n },\n });\n }\n else {\n state.queuedPayloads.enqueue(payload);\n }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(function () {\n var payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError);\n },\n onFailure: function () {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, trackType, reportError);\n },\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, function (response) {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n onSuccess();\n }\n else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n };\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: \"Reached max \".concat(trackType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n state.queueFullReported = true;\n }\n var previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError);\n }\n}\nfunction shouldRetryRequest(response) {\n return (response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status)));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n };\n}\nfunction newPayloadQueue() {\n var queue = [];\n return {\n bytesCount: 0,\n enqueue: function (payload) {\n if (this.isFull()) {\n return;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n },\n first: function () {\n return queue[0];\n },\n dequeue: function () {\n var payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size: function () {\n return queue.length;\n },\n isFull: function () {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n },\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle: function (payload) {\n return (this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n },\n add: function (payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove: function (payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n },\n };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(configuration, endpointBuilder, bytesLimit, reportError) {\n var retryState = newRetryState();\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse);\n };\n return {\n send: function (payload) {\n sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError);\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload);\n },\n };\n}\nfunction sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload) {\n var canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n var beaconUrl = endpointBuilder.build('beacon', payload);\n var isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n if (isQueued) {\n return;\n }\n }\n catch (e) {\n reportBeaconError(e);\n }\n }\n var xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(configuration, xhrUrl, payload.data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n addTelemetryError(e);\n }\n}\nexport function fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse) {\n var canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n var fetchUrl = endpointBuilder.build('fetch', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type }); }), monitor(function () {\n var xhrUrl = endpointBuilder.build('xhr', payload);\n // failed to queue the request\n sendXHR(configuration, xhrUrl, payload.data, onResponse);\n }));\n }\n else {\n var xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(configuration, xhrUrl, payload.data, onResponse);\n }\n}\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a');\n }\n catch (_a) {\n return false;\n }\n}\nexport function sendXHR(configuration, url, data, onResponse) {\n var request = new XMLHttpRequest();\n request.open('POST', url, true);\n if (data instanceof Blob) {\n // When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header\n // automatically, so the intake request ends up being rejected with an HTTP status 415\n // Defining the header manually fixes this issue.\n request.setRequestHeader('Content-Type', data.type);\n }\n addEventListener(configuration, request, 'loadend', function () {\n onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n }, {\n // prevent multiple onResponse callbacks\n // if the xhr instance is reused by a third party\n once: true,\n });\n request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController(_a) {\n var messagesLimit = _a.messagesLimit, bytesLimit = _a.bytesLimit, durationLimit = _a.durationLimit, pageExitObservable = _a.pageExitObservable, sessionExpireObservable = _a.sessionExpireObservable;\n var pageExitSubscription = pageExitObservable.subscribe(function (event) { return flush(event.reason); });\n var sessionExpireSubscription = sessionExpireObservable.subscribe(function () { return flush('session_expire'); });\n var flushObservable = new Observable(function () { return function () {\n pageExitSubscription.unsubscribe();\n sessionExpireSubscription.unsubscribe();\n }; });\n var currentBytesCount = 0;\n var currentMessagesCount = 0;\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return;\n }\n var messagesCount = currentMessagesCount;\n var bytesCount = currentBytesCount;\n currentMessagesCount = 0;\n currentBytesCount = 0;\n cancelDurationLimitTimeout();\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount,\n });\n }\n var durationLimitTimeoutId;\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit');\n }, durationLimit);\n }\n }\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId);\n durationLimitTimeoutId = undefined;\n }\n return {\n flushObservable: flushObservable,\n get messagesCount() {\n return currentMessagesCount;\n },\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n *\n * @param estimatedMessageBytesCount: an estimation of the message bytes count once it is\n * actually added.\n */\n notifyBeforeAddMessage: function (estimatedMessageBytesCount) {\n if (currentBytesCount + estimatedMessageBytesCount >= bytesLimit) {\n flush('bytes_limit');\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1;\n currentBytesCount += estimatedMessageBytesCount;\n scheduleDurationLimitTimeout();\n },\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n *\n * @param messageBytesCountDiff: the difference between the estimated message bytes count and\n * its actual bytes count once added to the pool.\n */\n notifyAfterAddMessage: function (messageBytesCountDiff) {\n if (messageBytesCountDiff === void 0) { messageBytesCountDiff = 0; }\n currentBytesCount += messageBytesCountDiff;\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit');\n }\n else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit');\n }\n },\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n *\n * @param messageBytesCount: the message bytes count that was added to the pool. Should\n * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n * `notifyAfterAddMessage`.\n */\n notifyAfterRemoveMessage: function (messageBytesCount) {\n currentBytesCount -= messageBytesCount;\n currentMessagesCount -= 1;\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout();\n }\n },\n };\n}\n//# sourceMappingURL=flushController.js.map","import { combine, isTelemetryReplicationAllowed, startBatchWithReplica, } from '@datadog/browser-core';\nexport function startRumBatch(configuration, lifeCycle, telemetryEventObservable, reportError, pageExitObservable, sessionExpireObservable, createEncoder) {\n var replica = configuration.replica;\n var batch = startBatchWithReplica(configuration, {\n endpoint: configuration.rumEndpointBuilder,\n encoder: createEncoder(2 /* DeflateEncoderStreamId.RUM */),\n }, replica && {\n endpoint: replica.rumEndpointBuilder,\n transformMessage: function (message) { return combine(message, { application: { id: replica.applicationId } }); },\n encoder: createEncoder(3 /* DeflateEncoderStreamId.RUM_REPLICA */),\n }, reportError, pageExitObservable, sessionExpireObservable);\n lifeCycle.subscribe(12 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n if (serverRumEvent.type === \"view\" /* RumEventType.VIEW */) {\n batch.upsert(serverRumEvent, serverRumEvent.view.id);\n }\n else {\n batch.add(serverRumEvent);\n }\n });\n telemetryEventObservable.subscribe(function (event) { return batch.add(event, isTelemetryReplicationAllowed(configuration)); });\n return batch;\n}\n//# sourceMappingURL=startRumBatch.js.map","import { createBatch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nimport { createFlushController } from './flushController';\nexport function startBatchWithReplica(configuration, primary, replica, reportError, pageExitObservable, sessionExpireObservable, batchFactoryImp) {\n if (batchFactoryImp === void 0) { batchFactoryImp = createBatch; }\n var primaryBatch = createBatchFromConfig(configuration, primary);\n var replicaBatch = replica && createBatchFromConfig(configuration, replica);\n function createBatchFromConfig(configuration, _a) {\n var endpoint = _a.endpoint, encoder = _a.encoder;\n return batchFactoryImp({\n encoder: encoder,\n request: createHttpRequest(configuration, endpoint, configuration.batchBytesLimit, reportError),\n flushController: createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable: pageExitObservable,\n sessionExpireObservable: sessionExpireObservable,\n }),\n messageBytesLimit: configuration.messageBytesLimit,\n });\n }\n return {\n flushObservable: primaryBatch.flushController.flushObservable,\n add: function (message, replicated) {\n if (replicated === void 0) { replicated = true; }\n primaryBatch.add(message);\n if (replicaBatch && replicated) {\n replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message);\n }\n },\n upsert: function (message, key) {\n primaryBatch.upsert(message, key);\n if (replicaBatch) {\n replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key);\n }\n },\n stop: function () {\n primaryBatch.stop();\n if (replicaBatch) {\n replicaBatch.stop();\n }\n },\n };\n}\n//# sourceMappingURL=startBatchWithReplica.js.map","import { addEventListener, instrumentMethod, Observable, shallowClone } from '@datadog/browser-core';\nexport function createLocationChangeObservable(configuration, location) {\n var currentLocation = shallowClone(location);\n return new Observable(function (observable) {\n var stopHistoryTracking = trackHistory(configuration, onLocationChange).stop;\n var stopHashTracking = trackHash(configuration, onLocationChange).stop;\n function onLocationChange() {\n if (currentLocation.href === location.href) {\n return;\n }\n var newLocation = shallowClone(location);\n observable.notify({\n newLocation: newLocation,\n oldLocation: currentLocation,\n });\n currentLocation = newLocation;\n }\n return function () {\n stopHistoryTracking();\n stopHashTracking();\n };\n });\n}\nfunction trackHistory(configuration, onHistoryChange) {\n var stopInstrumentingPushState = instrumentMethod(getHistoryInstrumentationTarget('pushState'), 'pushState', function (_a) {\n var onPostCall = _a.onPostCall;\n onPostCall(onHistoryChange);\n }).stop;\n var stopInstrumentingReplaceState = instrumentMethod(getHistoryInstrumentationTarget('replaceState'), 'replaceState', function (_a) {\n var onPostCall = _a.onPostCall;\n onPostCall(onHistoryChange);\n }).stop;\n var removeListener = addEventListener(configuration, window, \"popstate\" /* DOM_EVENT.POP_STATE */, onHistoryChange).stop;\n return {\n stop: function () {\n stopInstrumentingPushState();\n stopInstrumentingReplaceState();\n removeListener();\n },\n };\n}\nfunction trackHash(configuration, onHashChange) {\n return addEventListener(configuration, window, \"hashchange\" /* DOM_EVENT.HASH_CHANGE */, onHashChange);\n}\nfunction getHistoryInstrumentationTarget(methodName) {\n // Ideally we should always instument the method on the prototype, however some frameworks (e.g [Next.js](https://github.com/vercel/next.js/blob/d3f5532065f3e3bb84fb54bd2dfd1a16d0f03a21/packages/next/src/client/components/app-router.tsx#L429))\n // are wrapping the instance method. In that case we should also wrap the instance method.\n return Object.prototype.hasOwnProperty.call(history, methodName) ? history : History.prototype;\n}\n//# sourceMappingURL=locationChangeObservable.js.map","import { includes, performDraw, ONE_SECOND, addTelemetryDebug, setInterval, } from '@datadog/browser-core';\nexport var MEASURES_PERIOD_DURATION = 10 * ONE_SECOND;\nvar currentPeriodMeasures;\nvar currentBatchMeasures;\nvar batchHasRumEvent;\nexport function startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batchFlushObservable) {\n var customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate);\n if (!customerDataTelemetryEnabled) {\n return;\n }\n initCurrentPeriodMeasures();\n initCurrentBatchMeasures();\n // We measure the data of every view updates even if there could only be one per batch due to the upsert\n // It means that contexts bytes count sums can be higher than it really is\n lifeCycle.subscribe(12 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n batchHasRumEvent = true;\n updateMeasure(currentBatchMeasures.globalContextBytes, customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */).getBytesCount());\n updateMeasure(currentBatchMeasures.userContextBytes, customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */).getBytesCount());\n updateMeasure(currentBatchMeasures.featureFlagBytes, includes([\"view\" /* RumEventType.VIEW */, \"error\" /* RumEventType.ERROR */], event.type)\n ? customerDataTrackerManager.getOrCreateTracker(0 /* CustomerDataType.FeatureFlag */).getBytesCount()\n : 0);\n });\n batchFlushObservable.subscribe(function (_a) {\n var bytesCount = _a.bytesCount, messagesCount = _a.messagesCount;\n // Don't measure batch that only contains telemetry events to avoid batch sending loop\n // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n if (!batchHasRumEvent) {\n return;\n }\n currentPeriodMeasures.batchCount += 1;\n updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount);\n updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount);\n mergeMeasure(currentPeriodMeasures.globalContextBytes, currentBatchMeasures.globalContextBytes);\n mergeMeasure(currentPeriodMeasures.userContextBytes, currentBatchMeasures.userContextBytes);\n mergeMeasure(currentPeriodMeasures.featureFlagBytes, currentBatchMeasures.featureFlagBytes);\n initCurrentBatchMeasures();\n });\n setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION);\n}\nfunction sendCurrentPeriodMeasures() {\n if (currentPeriodMeasures.batchCount === 0) {\n return;\n }\n addTelemetryDebug('Customer data measures', currentPeriodMeasures);\n initCurrentPeriodMeasures();\n}\nfunction createMeasure() {\n return { min: Infinity, max: 0, sum: 0 };\n}\nfunction updateMeasure(measure, value) {\n measure.sum += value;\n measure.min = Math.min(measure.min, value);\n measure.max = Math.max(measure.max, value);\n}\nfunction mergeMeasure(target, source) {\n target.sum += source.sum;\n target.min = Math.min(target.min, source.min);\n target.max = Math.max(target.max, source.max);\n}\nfunction initCurrentPeriodMeasures() {\n currentPeriodMeasures = {\n batchCount: 0,\n batchBytesCount: createMeasure(),\n batchMessagesCount: createMeasure(),\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure(),\n };\n}\nfunction initCurrentBatchMeasures() {\n batchHasRumEvent = false;\n currentBatchMeasures = {\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure(),\n };\n}\n//# sourceMappingURL=startCustomerDataTelemetry.js.map","import { elapsed, createValueHistory, SESSION_TIME_OUT_DELAY, toServerDuration, addEventListeners, relativeNow, } from '@datadog/browser-core';\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport var MAX_PAGE_STATE_ENTRIES = 4000;\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport var MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;\nexport var PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startPageStateHistory(configuration, maxPageStateEntriesSelectable) {\n if (maxPageStateEntriesSelectable === void 0) { maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE; }\n var pageStateEntryHistory = createValueHistory({\n expireDelay: PAGE_STATE_CONTEXT_TIME_OUT_DELAY,\n maxEntries: MAX_PAGE_STATE_ENTRIES,\n });\n var currentPageState;\n addPageState(getPageState(), relativeNow());\n var stopEventListeners = addEventListeners(configuration, window, [\n \"pageshow\" /* DOM_EVENT.PAGE_SHOW */,\n \"focus\" /* DOM_EVENT.FOCUS */,\n \"blur\" /* DOM_EVENT.BLUR */,\n \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */,\n \"resume\" /* DOM_EVENT.RESUME */,\n \"freeze\" /* DOM_EVENT.FREEZE */,\n \"pagehide\" /* DOM_EVENT.PAGE_HIDE */,\n ], function (event) {\n addPageState(computePageState(event), event.timeStamp);\n }, { capture: true }).stop;\n function addPageState(nextPageState, startTime) {\n if (startTime === void 0) { startTime = relativeNow(); }\n if (nextPageState === currentPageState) {\n return;\n }\n currentPageState = nextPageState;\n pageStateEntryHistory.closeActive(startTime);\n pageStateEntryHistory.add({ state: currentPageState, startTime: startTime }, startTime);\n }\n var pageStateHistory = {\n findAll: function (eventStartTime, duration) {\n var pageStateEntries = pageStateEntryHistory.findAll(eventStartTime, duration);\n if (pageStateEntries.length === 0) {\n return;\n }\n var pageStateServerEntries = [];\n // limit the number of entries to return\n var limit = Math.max(0, pageStateEntries.length - maxPageStateEntriesSelectable);\n // loop page state entries backward to return the selected ones in desc order\n for (var index = pageStateEntries.length - 1; index >= limit; index--) {\n var pageState = pageStateEntries[index];\n // compute the start time relative to the event start time (ex: to be relative to the view start time)\n var relativeStartTime = elapsed(eventStartTime, pageState.startTime);\n pageStateServerEntries.push({\n state: pageState.state,\n start: toServerDuration(relativeStartTime),\n });\n }\n return pageStateServerEntries;\n },\n wasInPageStateAt: function (state, startTime) {\n return pageStateHistory.wasInPageStateDuringPeriod(state, startTime, 0);\n },\n wasInPageStateDuringPeriod: function (state, startTime, duration) {\n return pageStateEntryHistory.findAll(startTime, duration).some(function (pageState) { return pageState.state === state; });\n },\n addPageState: addPageState,\n stop: function () {\n stopEventListeners();\n pageStateEntryHistory.stop();\n },\n };\n return pageStateHistory;\n}\nfunction computePageState(event) {\n if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n return \"frozen\" /* PageState.FROZEN */;\n }\n else if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */) {\n return event.persisted ? \"frozen\" /* PageState.FROZEN */ : \"terminated\" /* PageState.TERMINATED */;\n }\n return getPageState();\n}\nfunction getPageState() {\n if (document.visibilityState === 'hidden') {\n return \"hidden\" /* PageState.HIDDEN */;\n }\n if (document.hasFocus()) {\n return \"active\" /* PageState.ACTIVE */;\n }\n return \"passive\" /* PageState.PASSIVE */;\n}\n//# sourceMappingURL=pageStateHistory.js.map","import { setInterval, clearInterval, Observable, addEventListener, ONE_SECOND, findCommaSeparatedValue, find, } from '@datadog/browser-core';\nexport function createCookieObservable(configuration, cookieName) {\n var detectCookieChangeStrategy = window.cookieStore\n ? listenToCookieStoreChange(configuration)\n : watchCookieFallback;\n return new Observable(function (observable) {\n return detectCookieChangeStrategy(cookieName, function (event) { return observable.notify(event); });\n });\n}\nfunction listenToCookieStoreChange(configuration) {\n return function (cookieName, callback) {\n var listener = addEventListener(configuration, window.cookieStore, \"change\" /* DOM_EVENT.CHANGE */, function (event) {\n // Based on our experimentation, we're assuming that entries for the same cookie cannot be in both the 'changed' and 'deleted' arrays.\n // However, due to ambiguity in the specification, we asked for clarification: https://github.com/WICG/cookie-store/issues/226\n var changeEvent = find(event.changed, function (event) { return event.name === cookieName; }) ||\n find(event.deleted, function (event) { return event.name === cookieName; });\n if (changeEvent) {\n callback(changeEvent.value);\n }\n });\n return listener.stop;\n };\n}\nexport var WATCH_COOKIE_INTERVAL_DELAY = ONE_SECOND;\nfunction watchCookieFallback(cookieName, callback) {\n var previousCookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n var watchCookieIntervalId = setInterval(function () {\n var cookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n if (cookieValue !== previousCookieValue) {\n callback(cookieValue);\n }\n }, WATCH_COOKIE_INTERVAL_DELAY);\n return function () {\n clearInterval(watchCookieIntervalId);\n };\n}\n//# sourceMappingURL=cookieObservable.js.map","import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_EU1 } from '@datadog/browser-core';\nexport function getSessionReplayUrl(configuration, _a) {\n var session = _a.session, viewContext = _a.viewContext, errorType = _a.errorType;\n var sessionId = session ? session.id : 'no-session-id';\n var parameters = [];\n if (errorType !== undefined) {\n parameters.push(\"error-type=\".concat(errorType));\n }\n if (viewContext) {\n parameters.push(\"seed=\".concat(viewContext.id));\n parameters.push(\"from=\".concat(viewContext.startClocks.timeStamp));\n }\n var origin = getDatadogSiteUrl(configuration);\n var path = \"/rum/replay/sessions/\".concat(sessionId);\n return \"\".concat(origin).concat(path, \"?\").concat(parameters.join('&'));\n}\nexport function getDatadogSiteUrl(rumConfiguration) {\n var site = rumConfiguration.site;\n var subdomain = rumConfiguration.subdomain || getSiteDefaultSubdomain(rumConfiguration);\n return \"https://\".concat(subdomain ? \"\".concat(subdomain, \".\") : '').concat(site);\n}\nfunction getSiteDefaultSubdomain(configuration) {\n switch (configuration.site) {\n case INTAKE_SITE_US1:\n case INTAKE_SITE_EU1:\n return 'app';\n case INTAKE_SITE_STAGING:\n return 'dd';\n default:\n return undefined;\n }\n}\n//# sourceMappingURL=getSessionReplayUrl.js.map","export var MAX_STATS_HISTORY = 10;\nvar statsPerView;\nexport function getSegmentsCount(viewId) {\n return getOrCreateReplayStats(viewId).segments_count;\n}\nexport function addSegment(viewId) {\n getOrCreateReplayStats(viewId).segments_count += 1;\n}\nexport function addRecord(viewId) {\n getOrCreateReplayStats(viewId).records_count += 1;\n}\nexport function addWroteData(viewId, additionalBytesCount) {\n getOrCreateReplayStats(viewId).segments_total_raw_size += additionalBytesCount;\n}\nexport function getReplayStats(viewId) {\n return statsPerView === null || statsPerView === void 0 ? void 0 : statsPerView.get(viewId);\n}\nexport function resetReplayStats() {\n statsPerView = undefined;\n}\nfunction getOrCreateReplayStats(viewId) {\n if (!statsPerView) {\n statsPerView = new Map();\n }\n var replayStats;\n if (statsPerView.has(viewId)) {\n replayStats = statsPerView.get(viewId);\n }\n else {\n replayStats = {\n records_count: 0,\n segments_count: 0,\n segments_total_raw_size: 0,\n };\n statsPerView.set(viewId, replayStats);\n if (statsPerView.size > MAX_STATS_HISTORY) {\n deleteOldestStats();\n }\n }\n return replayStats;\n}\nfunction deleteOldestStats() {\n if (!statsPerView) {\n return;\n }\n if (statsPerView.keys) {\n var toDelete = statsPerView.keys().next().value;\n if (toDelete) {\n statsPerView.delete(toDelete);\n }\n }\n else {\n // IE11 doesn't support map.keys\n var isFirst_1 = true;\n statsPerView.forEach(function (_value, key) {\n if (isFirst_1) {\n statsPerView.delete(key);\n isFirst_1 = false;\n }\n });\n }\n}\n//# sourceMappingURL=replayStats.js.map","import { buildUrl } from '@datadog/browser-core';\nimport { getParentNode, isNodeShadowRoot, CENSORED_STRING_MARK, shouldMaskNode } from '@datadog/browser-rum-core';\nvar serializedNodeIds = new WeakMap();\nexport function hasSerializedNode(node) {\n return serializedNodeIds.has(node);\n}\nexport function nodeAndAncestorsHaveSerializedNode(node) {\n var current = node;\n while (current) {\n if (!hasSerializedNode(current) && !isNodeShadowRoot(current)) {\n return false;\n }\n current = getParentNode(current);\n }\n return true;\n}\nexport function getSerializedNodeId(node) {\n return serializedNodeIds.get(node);\n}\nexport function setSerializedNodeId(node, serializeNodeId) {\n serializedNodeIds.set(node, serializeNodeId);\n}\n/**\n * Get the element \"value\" to be serialized as an attribute or an input update record. It respects\n * the input privacy mode of the element.\n * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.\n */\nexport function getElementInputValue(element, nodePrivacyLevel) {\n /*\n BROWSER SPEC NOTE: <input>, <select>\n For some <input> elements, the `value` is an exceptional property/attribute that has the\n value synced between el.value and el.getAttribute()\n input[type=button,checkbox,hidden,image,radio,reset,submit]\n */\n var tagName = element.tagName;\n var value = element.value;\n if (shouldMaskNode(element, nodePrivacyLevel)) {\n var type = element.type;\n if (tagName === 'INPUT' && (type === 'button' || type === 'submit' || type === 'reset')) {\n // Overrule `MASK` privacy level for button-like element values, as they are used during replay\n // to display their label. They can still be hidden via the \"hidden\" privacy attribute or class name.\n return value;\n }\n else if (!value || tagName === 'OPTION') {\n // <Option> value provides no benefit\n return;\n }\n return CENSORED_STRING_MARK;\n }\n if (tagName === 'OPTION' || tagName === 'SELECT') {\n return element.value;\n }\n if (tagName !== 'INPUT' && tagName !== 'TEXTAREA') {\n return;\n }\n return value;\n}\nexport var URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")([^\"]*)\"|([^)]*))\\)/gm;\nexport var ABSOLUTE_URL = /^[A-Za-z]+:|^\\/\\//;\nexport var DATA_URI = /^data:.*,/i;\nexport function switchToAbsoluteUrl(cssText, cssHref) {\n return cssText.replace(URL_IN_CSS_REF, function (matchingSubstring, singleQuote, urlWrappedInSingleQuotes, doubleQuote, urlWrappedInDoubleQuotes, urlNotWrappedInQuotes) {\n var url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes;\n if (!cssHref || !url || ABSOLUTE_URL.test(url) || DATA_URI.test(url)) {\n return matchingSubstring;\n }\n var quote = singleQuote || doubleQuote || '';\n return \"url(\".concat(quote).concat(makeUrlAbsolute(url, cssHref)).concat(quote, \")\");\n });\n}\nexport function makeUrlAbsolute(url, baseUrl) {\n try {\n return buildUrl(url, baseUrl).href;\n }\n catch (_) {\n return url;\n }\n}\nvar TAG_NAME_REGEX = /[^a-z1-6-_]/;\nexport function getValidTagName(tagName) {\n var processedTagName = tagName.toLowerCase().trim();\n if (TAG_NAME_REGEX.test(processedTagName)) {\n // if the tag name is odd and we cannot extract\n // anything from the string, then we return a\n // generic div\n return 'div';\n }\n return processedTagName;\n}\nexport function censoredImageForSize(width, height) {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\".concat(width, \"' height='\").concat(height, \"' style='background-color:silver'%3E%3C/svg%3E\");\n}\n//# sourceMappingURL=serializationUtils.js.map","export var RecordType = {\n FullSnapshot: 2,\n IncrementalSnapshot: 3,\n Meta: 4,\n Focus: 6,\n ViewEnd: 7,\n VisualViewport: 8,\n FrustrationRecord: 9,\n};\nexport var NodeType = {\n Document: 0,\n DocumentType: 1,\n Element: 2,\n Text: 3,\n CDATA: 4,\n DocumentFragment: 11,\n};\nexport var IncrementalSource = {\n Mutation: 0,\n MouseMove: 1,\n MouseInteraction: 2,\n Scroll: 3,\n ViewportResize: 4,\n Input: 5,\n TouchMove: 6,\n MediaInteraction: 7,\n StyleSheetRule: 8,\n // CanvasMutation : 9,\n // Font : 10,\n};\nexport var MouseInteractionType = {\n MouseUp: 0,\n MouseDown: 1,\n Click: 2,\n ContextMenu: 3,\n DblClick: 4,\n Focus: 5,\n Blur: 6,\n TouchStart: 7,\n TouchEnd: 9,\n};\nexport var MediaInteractionType = {\n Play: 0,\n Pause: 1,\n};\n//# sourceMappingURL=sessionReplayConstants.js.map","export function serializeStyleSheets(cssStyleSheets) {\n if (cssStyleSheets === undefined || cssStyleSheets.length === 0) {\n return undefined;\n }\n return cssStyleSheets.map(function (cssStyleSheet) {\n var rules = cssStyleSheet.cssRules || cssStyleSheet.rules;\n var cssRules = Array.from(rules, function (cssRule) { return cssRule.cssText; });\n var styleSheet = {\n cssRules: cssRules,\n disabled: cssStyleSheet.disabled || undefined,\n media: cssStyleSheet.media.length > 0 ? Array.from(cssStyleSheet.media) : undefined,\n };\n return styleSheet;\n });\n}\n//# sourceMappingURL=serializeStyleSheets.js.map","import { startsWith } from '@datadog/browser-core';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, CENSORED_STRING_MARK, CENSORED_IMG_MARK, STABLE_ATTRIBUTES, isLongDataUrl, sanitizeDataUrl, } from '@datadog/browser-rum-core';\nimport { censoredImageForSize } from './serializationUtils';\nexport function serializeAttribute(element, nodePrivacyLevel, attributeName, configuration) {\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // dup condition for direct access case\n return null;\n }\n var attributeValue = element.getAttribute(attributeName);\n if (nodePrivacyLevel === NodePrivacyLevel.MASK &&\n attributeName !== PRIVACY_ATTR_NAME &&\n !STABLE_ATTRIBUTES.includes(attributeName) &&\n attributeName !== configuration.actionNameAttribute) {\n var tagName = element.tagName;\n switch (attributeName) {\n // Mask Attribute text content\n case 'title':\n case 'alt':\n case 'placeholder':\n return CENSORED_STRING_MARK;\n }\n // mask image URLs\n if (tagName === 'IMG' && (attributeName === 'src' || attributeName === 'srcset')) {\n // generate image with similar dimension than the original to have the same rendering behaviour\n var image = element;\n if (image.naturalWidth > 0) {\n return censoredImageForSize(image.naturalWidth, image.naturalHeight);\n }\n var _a = element.getBoundingClientRect(), width = _a.width, height = _a.height;\n if (width > 0 || height > 0) {\n return censoredImageForSize(width, height);\n }\n // if we can't get the image size, fallback to the censored image\n return CENSORED_IMG_MARK;\n }\n // mask source URLs\n if (tagName === 'SOURCE' && (attributeName === 'src' || attributeName === 'srcset')) {\n return CENSORED_IMG_MARK;\n }\n // mask <a> URLs\n if (tagName === 'A' && attributeName === 'href') {\n return CENSORED_STRING_MARK;\n }\n // mask data-* attributes\n if (attributeValue && startsWith(attributeName, 'data-')) {\n // Exception: it's safe to reveal the `${PRIVACY_ATTR_NAME}` attr\n return CENSORED_STRING_MARK;\n }\n // mask iframe srcdoc\n if (tagName === 'IFRAME' && attributeName === 'srcdoc') {\n return CENSORED_STRING_MARK;\n }\n }\n if (!attributeValue || typeof attributeValue !== 'string') {\n return attributeValue;\n }\n // Minimum Fix for customer.\n if (isLongDataUrl(attributeValue)) {\n return sanitizeDataUrl(attributeValue);\n }\n return attributeValue;\n}\n//# sourceMappingURL=serializeAttribute.js.map","import { NodePrivacyLevel, shouldMaskNode } from '@datadog/browser-rum-core';\nimport { isSafari } from '@datadog/browser-core';\nimport { getElementInputValue, switchToAbsoluteUrl, getValidTagName } from './serializationUtils';\nimport { serializeAttribute } from './serializeAttribute';\nexport function serializeAttributes(element, nodePrivacyLevel, options) {\n var _a;\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return {};\n }\n var safeAttrs = {};\n var tagName = getValidTagName(element.tagName);\n var doc = element.ownerDocument;\n for (var i = 0; i < element.attributes.length; i += 1) {\n var attribute = element.attributes.item(i);\n var attributeName = attribute.name;\n var attributeValue = serializeAttribute(element, nodePrivacyLevel, attributeName, options.configuration);\n if (attributeValue !== null) {\n safeAttrs[attributeName] = attributeValue;\n }\n }\n if (element.value &&\n (tagName === 'textarea' || tagName === 'select' || tagName === 'option' || tagName === 'input')) {\n var formValue = getElementInputValue(element, nodePrivacyLevel);\n if (formValue !== undefined) {\n safeAttrs.value = formValue;\n }\n }\n /**\n * <Option> can be selected, which occurs if its `value` matches ancestor `<Select>.value`\n */\n if (tagName === 'option' && nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n // For privacy=`MASK`, all the values would be the same, so skip.\n var optionElement = element;\n if (optionElement.selected) {\n safeAttrs.selected = optionElement.selected;\n }\n }\n // remote css\n if (tagName === 'link') {\n var stylesheet = Array.from(doc.styleSheets).find(function (s) { return s.href === element.href; });\n var cssText = getCssRulesString(stylesheet);\n if (cssText && stylesheet) {\n safeAttrs._cssText = cssText;\n }\n }\n // dynamic stylesheet\n if (tagName === 'style' && element.sheet) {\n var cssText = getCssRulesString(element.sheet);\n if (cssText) {\n safeAttrs._cssText = cssText;\n }\n }\n /**\n * Forms: input[type=checkbox,radio]\n * The `checked` property for <input> is a little bit special:\n * 1. el.checked is a setter that returns if truthy.\n * 2. getAttribute returns the string value\n * getAttribute('checked') does not sync with `Element.checked`, so use JS property\n * NOTE: `checked` property exists on `HTMLInputElement`. For serializer assumptions, we check for type=radio|check.\n */\n var inputElement = element;\n if (tagName === 'input' && (inputElement.type === 'radio' || inputElement.type === 'checkbox')) {\n if (nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n safeAttrs.checked = !!inputElement.checked;\n }\n else if (shouldMaskNode(inputElement, nodePrivacyLevel)) {\n delete safeAttrs.checked;\n }\n }\n /**\n * Serialize the media playback state\n */\n if (tagName === 'audio' || tagName === 'video') {\n var mediaElement = element;\n safeAttrs.rr_mediaState = mediaElement.paused ? 'paused' : 'played';\n }\n /**\n * Serialize the scroll state for each element only for full snapshot\n */\n var scrollTop;\n var scrollLeft;\n var serializationContext = options.serializationContext;\n switch (serializationContext.status) {\n case 0 /* SerializationContextStatus.INITIAL_FULL_SNAPSHOT */:\n scrollTop = Math.round(element.scrollTop);\n scrollLeft = Math.round(element.scrollLeft);\n if (scrollTop || scrollLeft) {\n serializationContext.elementsScrollPositions.set(element, { scrollTop: scrollTop, scrollLeft: scrollLeft });\n }\n break;\n case 1 /* SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT */:\n if (serializationContext.elementsScrollPositions.has(element)) {\n ;\n (_a = serializationContext.elementsScrollPositions.get(element), scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft);\n }\n break;\n }\n if (scrollLeft) {\n safeAttrs.rr_scrollLeft = scrollLeft;\n }\n if (scrollTop) {\n safeAttrs.rr_scrollTop = scrollTop;\n }\n return safeAttrs;\n}\nexport function getCssRulesString(cssStyleSheet) {\n if (!cssStyleSheet) {\n return null;\n }\n var rules;\n try {\n rules = cssStyleSheet.rules || cssStyleSheet.cssRules;\n }\n catch (_a) {\n // if css is protected by CORS we cannot access cssRules see: https://www.w3.org/TR/cssom-1/#the-cssstylesheet-interface\n }\n if (!rules) {\n return null;\n }\n var styleSheetCssText = Array.from(rules, isSafari() ? getCssRuleStringForSafari : getCssRuleString).join('');\n return switchToAbsoluteUrl(styleSheetCssText, cssStyleSheet.href);\n}\nfunction getCssRuleStringForSafari(rule) {\n // Safari does not escape attribute selectors containing : properly\n // https://bugs.webkit.org/show_bug.cgi?id=184604\n if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n // This regex replaces [foo:bar] by [foo\\\\:bar]\n var escapeColon = /(\\[[\\w-]+[^\\\\])(:[^\\]]+\\])/g;\n return rule.cssText.replace(escapeColon, '$1\\\\$2');\n }\n return getCssRuleString(rule);\n}\nfunction getCssRuleString(rule) {\n // If it's an @import rule, try to inline sub-rules recursively with `getCssRulesString`. This\n // operation can fail if the imported stylesheet is protected by CORS, in which case we fallback\n // to the @import rule CSS text.\n return (isCSSImportRule(rule) && getCssRulesString(rule.styleSheet)) || rule.cssText;\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction isCSSStyleRule(rule) {\n return 'selectorText' in rule;\n}\n//# sourceMappingURL=serializeAttributes.js.map","import { reducePrivacyLevel, getNodeSelfPrivacyLevel, getTextContent, isNodeShadowRoot, hasChildNodes, forEachChildNodes, NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_HIDDEN, } from '@datadog/browser-rum-core';\nimport { assign } from '@datadog/browser-core';\nimport { NodeType } from '../../../types';\nimport { getSerializedNodeId, getValidTagName, setSerializedNodeId } from './serializationUtils';\nimport { serializeStyleSheets } from './serializeStyleSheets';\nimport { serializeAttributes } from './serializeAttributes';\nexport function serializeNodeWithId(node, options) {\n var serializedNode = serializeNode(node, options);\n if (!serializedNode) {\n return null;\n }\n // Try to reuse the previous id\n var id = getSerializedNodeId(node) || generateNextId();\n var serializedNodeWithId = serializedNode;\n serializedNodeWithId.id = id;\n setSerializedNodeId(node, id);\n if (options.serializedNodeIds) {\n options.serializedNodeIds.add(id);\n }\n return serializedNodeWithId;\n}\nvar _nextId = 1;\nexport function generateNextId() {\n return _nextId++;\n}\nexport function serializeChildNodes(node, options) {\n var result = [];\n forEachChildNodes(node, function (childNode) {\n var serializedChildNode = serializeNodeWithId(childNode, options);\n if (serializedChildNode) {\n result.push(serializedChildNode);\n }\n });\n return result;\n}\nfunction serializeNode(node, options) {\n switch (node.nodeType) {\n case node.DOCUMENT_NODE:\n return serializeDocumentNode(node, options);\n case node.DOCUMENT_FRAGMENT_NODE:\n return serializeDocumentFragmentNode(node, options);\n case node.DOCUMENT_TYPE_NODE:\n return serializeDocumentTypeNode(node);\n case node.ELEMENT_NODE:\n return serializeElementNode(node, options);\n case node.TEXT_NODE:\n return serializeTextNode(node, options);\n case node.CDATA_SECTION_NODE:\n return serializeCDataNode();\n }\n}\nexport function serializeDocumentNode(document, options) {\n return {\n type: NodeType.Document,\n childNodes: serializeChildNodes(document, options),\n adoptedStyleSheets: serializeStyleSheets(document.adoptedStyleSheets),\n };\n}\nfunction serializeDocumentFragmentNode(element, options) {\n var isShadowRoot = isNodeShadowRoot(element);\n if (isShadowRoot) {\n options.serializationContext.shadowRootsController.addShadowRoot(element);\n }\n return {\n type: NodeType.DocumentFragment,\n childNodes: serializeChildNodes(element, options),\n isShadowRoot: isShadowRoot,\n adoptedStyleSheets: isShadowRoot ? serializeStyleSheets(element.adoptedStyleSheets) : undefined,\n };\n}\nfunction serializeDocumentTypeNode(documentType) {\n return {\n type: NodeType.DocumentType,\n name: documentType.name,\n publicId: documentType.publicId,\n systemId: documentType.systemId,\n };\n}\n/**\n * Serializing Element nodes involves capturing:\n * 1. HTML ATTRIBUTES:\n * 2. JS STATE:\n * - scroll offsets\n * - Form fields (input value, checkbox checked, option selection, range)\n * - Canvas state,\n * - Media (video/audio) play mode + currentTime\n * - iframe contents\n * - webcomponents\n * 3. CUSTOM PROPERTIES:\n * - height+width for when `hidden` to cover the element\n * 4. EXCLUDED INTERACTION STATE:\n * - focus (possible, but not worth perf impact)\n * - hover (tracked only via mouse activity)\n * - fullscreen mode\n */\nfunction serializeElementNode(element, options) {\n var _a;\n var tagName = getValidTagName(element.tagName);\n var isSVG = isSVGElement(element) || undefined;\n // For performance reason, we don't use getNodePrivacyLevel directly: we leverage the\n // parentNodePrivacyLevel option to avoid iterating over all parents\n var nodePrivacyLevel = reducePrivacyLevel(getNodeSelfPrivacyLevel(element), options.parentNodePrivacyLevel);\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n var _b = element.getBoundingClientRect(), width = _b.width, height = _b.height;\n return {\n type: NodeType.Element,\n tagName: tagName,\n attributes: (_a = {\n rr_width: \"\".concat(width, \"px\"),\n rr_height: \"\".concat(height, \"px\")\n },\n _a[PRIVACY_ATTR_NAME] = PRIVACY_ATTR_VALUE_HIDDEN,\n _a),\n childNodes: [],\n isSVG: isSVG,\n };\n }\n // Ignore Elements like Script and some Link, Metas\n if (nodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n return;\n }\n var attributes = serializeAttributes(element, nodePrivacyLevel, options);\n var childNodes = [];\n if (hasChildNodes(element) &&\n // Do not serialize style children as the css rules are already in the _cssText attribute\n tagName !== 'style') {\n // OBJECT POOLING OPTIMIZATION:\n // We should not create a new object systematically as it could impact performances. Try to reuse\n // the same object as much as possible, and clone it only if we need to.\n var childNodesSerializationOptions = void 0;\n if (options.parentNodePrivacyLevel === nodePrivacyLevel && options.ignoreWhiteSpace === (tagName === 'head')) {\n childNodesSerializationOptions = options;\n }\n else {\n childNodesSerializationOptions = assign({}, options, {\n parentNodePrivacyLevel: nodePrivacyLevel,\n ignoreWhiteSpace: tagName === 'head',\n });\n }\n childNodes = serializeChildNodes(element, childNodesSerializationOptions);\n }\n return {\n type: NodeType.Element,\n tagName: tagName,\n attributes: attributes,\n childNodes: childNodes,\n isSVG: isSVG,\n };\n}\nfunction isSVGElement(el) {\n return el.tagName === 'svg' || el instanceof SVGElement;\n}\n/**\n * Text Nodes are dependant on Element nodes\n * Privacy levels are set on elements so we check the parentElement of a text node\n * for privacy level.\n */\nfunction serializeTextNode(textNode, options) {\n var textContent = getTextContent(textNode, options.ignoreWhiteSpace || false, options.parentNodePrivacyLevel);\n if (textContent === undefined) {\n return;\n }\n return {\n type: NodeType.Text,\n textContent: textContent,\n };\n}\nfunction serializeCDataNode() {\n return {\n type: NodeType.CDATA,\n textContent: '',\n };\n}\n//# sourceMappingURL=serializeNode.js.map","import { serializeNodeWithId } from './serializeNode';\nexport function serializeDocument(document, configuration, serializationContext) {\n // We are sure that Documents are never ignored, so this function never returns null\n return serializeNodeWithId(document, {\n serializationContext: serializationContext,\n parentNodePrivacyLevel: configuration.defaultPrivacyLevel,\n configuration: configuration,\n });\n}\n//# sourceMappingURL=serializeDocument.js.map","import { isNodeShadowHost } from '@datadog/browser-rum-core';\nexport function isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nexport function getEventTarget(event) {\n if (event.composed === true && isNodeShadowHost(event.target)) {\n return event.composedPath()[0];\n }\n return event.target;\n}\n//# sourceMappingURL=eventsUtils.js.map","/**\n * Browsers have not standardized various dimension properties. Mobile devices typically report\n * dimensions in reference to the visual viewport, while desktop uses the layout viewport. For example,\n * Mobile Chrome will change innerWidth when a pinch zoom takes place, while Chrome Desktop (mac) will not.\n *\n * With the new Viewport API, we now calculate and normalize dimension properties to the layout viewport.\n * If the VisualViewport API is not supported by a browser, it isn't reasonably possible to detect or normalize\n * which viewport is being measured. Therefore these exported functions will fallback to assuming that the layout\n * viewport is being measured by the browser\n */\n// Scrollbar widths vary across properties on different devices and browsers\nvar TOLERANCE = 25;\n/**\n * Use the Visual Viewport API's properties to measure scrollX/Y in reference to the layout viewport\n * in order to determine if window.scrollX/Y is measuring the layout or visual viewport.\n * This finding corresponds to which viewport mouseEvent.clientX/Y and window.innerWidth/Height measures.\n */\nfunction isVisualViewportFactoredIn(visualViewport) {\n return (Math.abs(visualViewport.pageTop - visualViewport.offsetTop - window.scrollY) > TOLERANCE ||\n Math.abs(visualViewport.pageLeft - visualViewport.offsetLeft - window.scrollX) > TOLERANCE);\n}\nexport var convertMouseEventToLayoutCoordinates = function (clientX, clientY) {\n var visualViewport = window.visualViewport;\n var normalized = {\n layoutViewportX: clientX,\n layoutViewportY: clientY,\n visualViewportX: clientX,\n visualViewportY: clientY,\n };\n if (!visualViewport) {\n // On old browsers, we cannot normalize, so fallback to clientX/Y\n return normalized;\n }\n else if (isVisualViewportFactoredIn(visualViewport)) {\n // Typically Mobile Devices\n normalized.layoutViewportX = Math.round(clientX + visualViewport.offsetLeft);\n normalized.layoutViewportY = Math.round(clientY + visualViewport.offsetTop);\n }\n else {\n // Typically Desktop Devices\n normalized.visualViewportX = Math.round(clientX - visualViewport.offsetLeft);\n normalized.visualViewportY = Math.round(clientY - visualViewport.offsetTop);\n }\n return normalized;\n};\nexport var getVisualViewport = function (visualViewport) { return ({\n scale: visualViewport.scale,\n offsetLeft: visualViewport.offsetLeft,\n offsetTop: visualViewport.offsetTop,\n pageLeft: visualViewport.pageLeft,\n pageTop: visualViewport.pageTop,\n height: visualViewport.height,\n width: visualViewport.width,\n}); };\n//# sourceMappingURL=viewports.js.map","import { assign, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nexport function assembleIncrementalSnapshot(source, data) {\n return {\n data: assign({\n source: source,\n }, data),\n type: RecordType.IncrementalSnapshot,\n timestamp: timeStampNow(),\n };\n}\n//# sourceMappingURL=assembly.js.map","import { addEventListeners, addTelemetryDebug, throttle } from '@datadog/browser-core';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { IncrementalSource } from '../../../types';\nimport { getEventTarget, isTouchEvent } from '../eventsUtils';\nimport { convertMouseEventToLayoutCoordinates } from '../viewports';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar MOUSE_MOVE_OBSERVER_THRESHOLD = 50;\nexport function trackMove(configuration, moveCb) {\n var _a = throttle(function (event) {\n var target = getEventTarget(event);\n if (hasSerializedNode(target)) {\n var coordinates = tryToComputeCoordinates(event);\n if (!coordinates) {\n return;\n }\n var position = {\n id: getSerializedNodeId(target),\n timeOffset: 0,\n x: coordinates.x,\n y: coordinates.y,\n };\n moveCb(assembleIncrementalSnapshot(isTouchEvent(event) ? IncrementalSource.TouchMove : IncrementalSource.MouseMove, { positions: [position] }));\n }\n }, MOUSE_MOVE_OBSERVER_THRESHOLD, {\n trailing: false,\n }), updatePosition = _a.throttled, cancelThrottle = _a.cancel;\n var removeListener = addEventListeners(configuration, document, [\"mousemove\" /* DOM_EVENT.MOUSE_MOVE */, \"touchmove\" /* DOM_EVENT.TOUCH_MOVE */], updatePosition, {\n capture: true,\n passive: true,\n }).stop;\n return {\n stop: function () {\n removeListener();\n cancelThrottle();\n },\n };\n}\nexport function tryToComputeCoordinates(event) {\n var _a = isTouchEvent(event) ? event.changedTouches[0] : event, x = _a.clientX, y = _a.clientY;\n if (window.visualViewport) {\n var _b = convertMouseEventToLayoutCoordinates(x, y), visualViewportX = _b.visualViewportX, visualViewportY = _b.visualViewportY;\n x = visualViewportX;\n y = visualViewportY;\n }\n if (!Number.isFinite(x) || !Number.isFinite(y)) {\n if (event.isTrusted) {\n addTelemetryDebug('mouse/touch event without x/y');\n }\n return undefined;\n }\n return { x: x, y: y };\n}\n//# sourceMappingURL=trackMove.js.map","var _a;\nimport { assign, addEventListeners } from '@datadog/browser-core';\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { IncrementalSource, MouseInteractionType } from '../../../types';\nimport { assembleIncrementalSnapshot } from '../assembly';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { tryToComputeCoordinates } from './trackMove';\nvar eventTypeToMouseInteraction = (_a = {},\n // Listen for pointerup DOM events instead of mouseup for MouseInteraction/MouseUp records. This\n // allows to reference such records from Frustration records.\n //\n // In the context of supporting Mobile Session Replay, we introduced `PointerInteraction` records\n // used by the Mobile SDKs in place of `MouseInteraction`. In the future, we should replace\n // `MouseInteraction` by `PointerInteraction` in the Browser SDK so we have an uniform way to\n // convey such interaction. This would cleanly solve the issue since we would have\n // `PointerInteraction/Up` records that we could reference from `Frustration` records.\n _a[\"pointerup\" /* DOM_EVENT.POINTER_UP */] = MouseInteractionType.MouseUp,\n _a[\"mousedown\" /* DOM_EVENT.MOUSE_DOWN */] = MouseInteractionType.MouseDown,\n _a[\"click\" /* DOM_EVENT.CLICK */] = MouseInteractionType.Click,\n _a[\"contextmenu\" /* DOM_EVENT.CONTEXT_MENU */] = MouseInteractionType.ContextMenu,\n _a[\"dblclick\" /* DOM_EVENT.DBL_CLICK */] = MouseInteractionType.DblClick,\n _a[\"focus\" /* DOM_EVENT.FOCUS */] = MouseInteractionType.Focus,\n _a[\"blur\" /* DOM_EVENT.BLUR */] = MouseInteractionType.Blur,\n _a[\"touchstart\" /* DOM_EVENT.TOUCH_START */] = MouseInteractionType.TouchStart,\n _a[\"touchend\" /* DOM_EVENT.TOUCH_END */] = MouseInteractionType.TouchEnd,\n _a);\nexport function trackMouseInteraction(configuration, mouseInteractionCb, recordIds) {\n var handler = function (event) {\n var target = getEventTarget(event);\n if (getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n !hasSerializedNode(target)) {\n return;\n }\n var id = getSerializedNodeId(target);\n var type = eventTypeToMouseInteraction[event.type];\n var interaction;\n if (type !== MouseInteractionType.Blur && type !== MouseInteractionType.Focus) {\n var coordinates = tryToComputeCoordinates(event);\n if (!coordinates) {\n return;\n }\n interaction = { id: id, type: type, x: coordinates.x, y: coordinates.y };\n }\n else {\n interaction = { id: id, type: type };\n }\n var record = assign({ id: recordIds.getIdForEvent(event) }, assembleIncrementalSnapshot(IncrementalSource.MouseInteraction, interaction));\n mouseInteractionCb(record);\n };\n return addEventListeners(configuration, document, Object.keys(eventTypeToMouseInteraction), handler, {\n capture: true,\n passive: true,\n });\n}\n//# sourceMappingURL=trackMouseInteraction.js.map","import { throttle, addEventListener } from '@datadog/browser-core';\nimport { getScrollX, getScrollY, getNodePrivacyLevel, NodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { IncrementalSource } from '../../../types';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar SCROLL_OBSERVER_THRESHOLD = 100;\nexport function trackScroll(configuration, scrollCb, elementsScrollPositions, target) {\n if (target === void 0) { target = document; }\n var _a = throttle(function (event) {\n var target = getEventTarget(event);\n if (!target ||\n getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n !hasSerializedNode(target)) {\n return;\n }\n var id = getSerializedNodeId(target);\n var scrollPositions = target === document\n ? {\n scrollTop: getScrollY(),\n scrollLeft: getScrollX(),\n }\n : {\n scrollTop: Math.round(target.scrollTop),\n scrollLeft: Math.round(target.scrollLeft),\n };\n elementsScrollPositions.set(target, scrollPositions);\n scrollCb(assembleIncrementalSnapshot(IncrementalSource.Scroll, {\n id: id,\n x: scrollPositions.scrollLeft,\n y: scrollPositions.scrollTop,\n }));\n }, SCROLL_OBSERVER_THRESHOLD), updatePosition = _a.throttled, cancelThrottle = _a.cancel;\n var removeListener = addEventListener(configuration, target, \"scroll\" /* DOM_EVENT.SCROLL */, updatePosition, {\n capture: true,\n passive: true,\n }).stop;\n return {\n stop: function () {\n removeListener();\n cancelThrottle();\n },\n };\n}\n//# sourceMappingURL=trackScroll.js.map","import { throttle, addEventListeners, timeStampNow, noop } from '@datadog/browser-core';\nimport { initViewportObservable } from '@datadog/browser-rum-core';\nimport { IncrementalSource, RecordType } from '../../../types';\nimport { getVisualViewport } from '../viewports';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar VISUAL_VIEWPORT_OBSERVER_THRESHOLD = 200;\nexport function trackViewportResize(configuration, viewportResizeCb) {\n var viewportResizeSubscription = initViewportObservable(configuration).subscribe(function (data) {\n viewportResizeCb(assembleIncrementalSnapshot(IncrementalSource.ViewportResize, data));\n });\n return {\n stop: function () {\n viewportResizeSubscription.unsubscribe();\n },\n };\n}\nexport function trackVisualViewportResize(configuration, visualViewportResizeCb) {\n var visualViewport = window.visualViewport;\n if (!visualViewport) {\n return { stop: noop };\n }\n var _a = throttle(function () {\n visualViewportResizeCb({\n data: getVisualViewport(visualViewport),\n type: RecordType.VisualViewport,\n timestamp: timeStampNow(),\n });\n }, VISUAL_VIEWPORT_OBSERVER_THRESHOLD, {\n trailing: false,\n }), updateDimension = _a.throttled, cancelThrottle = _a.cancel;\n var removeListener = addEventListeners(configuration, visualViewport, [\"resize\" /* DOM_EVENT.RESIZE */, \"scroll\" /* DOM_EVENT.SCROLL */], updateDimension, {\n capture: true,\n passive: true,\n }).stop;\n return {\n stop: function () {\n removeListener();\n cancelThrottle();\n },\n };\n}\n//# sourceMappingURL=trackViewportResize.js.map","import { addEventListeners } from '@datadog/browser-core';\nimport { NodePrivacyLevel, getNodePrivacyLevel } from '@datadog/browser-rum-core';\nimport { IncrementalSource, MediaInteractionType } from '../../../types';\nimport { getEventTarget } from '../eventsUtils';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackMediaInteraction(configuration, mediaInteractionCb) {\n return addEventListeners(configuration, document, [\"play\" /* DOM_EVENT.PLAY */, \"pause\" /* DOM_EVENT.PAUSE */], function (event) {\n var target = getEventTarget(event);\n if (!target ||\n getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n !hasSerializedNode(target)) {\n return;\n }\n mediaInteractionCb(assembleIncrementalSnapshot(IncrementalSource.MediaInteraction, {\n id: getSerializedNodeId(target),\n type: event.type === \"play\" /* DOM_EVENT.PLAY */ ? MediaInteractionType.Play : MediaInteractionType.Pause,\n }));\n }, {\n capture: true,\n passive: true,\n });\n}\n//# sourceMappingURL=trackMediaInteraction.js.map","import { instrumentMethod } from '@datadog/browser-core';\nimport { IncrementalSource } from '../../../types';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackStyleSheet(styleSheetCb) {\n function checkStyleSheetAndCallback(styleSheet, callback) {\n if (styleSheet && hasSerializedNode(styleSheet.ownerNode)) {\n callback(getSerializedNodeId(styleSheet.ownerNode));\n }\n }\n var instrumentationStoppers = [\n instrumentMethod(CSSStyleSheet.prototype, 'insertRule', function (_a) {\n var styleSheet = _a.target, _b = _a.parameters, rule = _b[0], index = _b[1];\n checkStyleSheetAndCallback(styleSheet, function (id) {\n return styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n id: id,\n adds: [{ rule: rule, index: index }],\n }));\n });\n }),\n instrumentMethod(CSSStyleSheet.prototype, 'deleteRule', function (_a) {\n var styleSheet = _a.target, index = _a.parameters[0];\n checkStyleSheetAndCallback(styleSheet, function (id) {\n return styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n id: id,\n removes: [{ index: index }],\n }));\n });\n }),\n ];\n if (typeof CSSGroupingRule !== 'undefined') {\n instrumentGroupingCSSRuleClass(CSSGroupingRule);\n }\n else {\n instrumentGroupingCSSRuleClass(CSSMediaRule);\n instrumentGroupingCSSRuleClass(CSSSupportsRule);\n }\n function instrumentGroupingCSSRuleClass(cls) {\n instrumentationStoppers.push(instrumentMethod(cls.prototype, 'insertRule', function (_a) {\n var styleSheet = _a.target, _b = _a.parameters, rule = _b[0], index = _b[1];\n checkStyleSheetAndCallback(styleSheet.parentStyleSheet, function (id) {\n var path = getPathToNestedCSSRule(styleSheet);\n if (path) {\n path.push(index || 0);\n styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n id: id,\n adds: [{ rule: rule, index: path }],\n }));\n }\n });\n }), instrumentMethod(cls.prototype, 'deleteRule', function (_a) {\n var styleSheet = _a.target, index = _a.parameters[0];\n checkStyleSheetAndCallback(styleSheet.parentStyleSheet, function (id) {\n var path = getPathToNestedCSSRule(styleSheet);\n if (path) {\n path.push(index);\n styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n id: id,\n removes: [{ index: path }],\n }));\n }\n });\n }));\n }\n return {\n stop: function () {\n instrumentationStoppers.forEach(function (stopper) { return stopper.stop(); });\n },\n };\n}\nexport function getPathToNestedCSSRule(rule) {\n var path = [];\n var currentRule = rule;\n while (currentRule.parentRule) {\n var rules_1 = Array.from(currentRule.parentRule.cssRules);\n var index_1 = rules_1.indexOf(currentRule);\n path.unshift(index_1);\n currentRule = currentRule.parentRule;\n }\n // A rule may not be attached to a stylesheet\n if (!currentRule.parentStyleSheet) {\n return;\n }\n var rules = Array.from(currentRule.parentStyleSheet.cssRules);\n var index = rules.indexOf(currentRule);\n path.unshift(index);\n return path;\n}\n//# sourceMappingURL=trackStyleSheet.js.map","import { addEventListeners, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../../types';\nexport function trackFocus(configuration, focusCb) {\n return addEventListeners(configuration, window, [\"focus\" /* DOM_EVENT.FOCUS */, \"blur\" /* DOM_EVENT.BLUR */], function () {\n focusCb({\n data: { has_focus: document.hasFocus() },\n type: RecordType.Focus,\n timestamp: timeStampNow(),\n });\n });\n}\n//# sourceMappingURL=trackFocus.js.map","import { RecordType } from '../../../types';\nexport function trackFrustration(lifeCycle, frustrationCb, recordIds) {\n var frustrationSubscription = lifeCycle.subscribe(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (data) {\n var _a, _b;\n if (data.rawRumEvent.type === \"action\" /* RumEventType.ACTION */ &&\n data.rawRumEvent.action.type === \"click\" /* ActionType.CLICK */ &&\n ((_b = (_a = data.rawRumEvent.action.frustration) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.length) &&\n 'events' in data.domainContext &&\n data.domainContext.events &&\n data.domainContext.events.length) {\n frustrationCb({\n timestamp: data.rawRumEvent.date,\n type: RecordType.FrustrationRecord,\n data: {\n frustrationTypes: data.rawRumEvent.action.frustration.type,\n recordIds: data.domainContext.events.map(function (e) { return recordIds.getIdForEvent(e); }),\n },\n });\n }\n });\n return {\n stop: function () {\n frustrationSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackFrustration.js.map","import { timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../../types';\nexport function trackViewEnd(lifeCycle, viewEndCb) {\n var viewEndSubscription = lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, function () {\n viewEndCb({\n timestamp: timeStampNow(),\n type: RecordType.ViewEnd,\n });\n });\n return {\n stop: function () {\n viewEndSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackViewEnd.js.map","import { instrumentSetter, assign, addEventListeners, forEach, noop } from '@datadog/browser-core';\nimport { NodePrivacyLevel, getNodePrivacyLevel, shouldMaskNode, cssEscape } from '@datadog/browser-rum-core';\nimport { IncrementalSource } from '../../../types';\nimport { getEventTarget } from '../eventsUtils';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackInput(configuration, inputCb, target) {\n if (target === void 0) { target = document; }\n var defaultPrivacyLevel = configuration.defaultPrivacyLevel;\n var lastInputStateMap = new WeakMap();\n var isShadowRoot = target !== document;\n var stopEventListeners = addEventListeners(configuration, target, \n // The 'input' event bubbles across shadow roots, so we don't have to listen for it on shadow\n // roots since it will be handled by the event listener that we did add to the document. Only\n // the 'change' event is blocked and needs to be handled on shadow roots.\n isShadowRoot ? [\"change\" /* DOM_EVENT.CHANGE */] : [\"input\" /* DOM_EVENT.INPUT */, \"change\" /* DOM_EVENT.CHANGE */], function (event) {\n var target = getEventTarget(event);\n if (target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement) {\n onElementChange(target);\n }\n }, {\n capture: true,\n passive: true,\n }).stop;\n var stopPropertySetterInstrumentation;\n if (!isShadowRoot) {\n var instrumentationStoppers_1 = [\n instrumentSetter(HTMLInputElement.prototype, 'value', onElementChange),\n instrumentSetter(HTMLInputElement.prototype, 'checked', onElementChange),\n instrumentSetter(HTMLSelectElement.prototype, 'value', onElementChange),\n instrumentSetter(HTMLTextAreaElement.prototype, 'value', onElementChange),\n instrumentSetter(HTMLSelectElement.prototype, 'selectedIndex', onElementChange),\n ];\n stopPropertySetterInstrumentation = function () {\n instrumentationStoppers_1.forEach(function (stopper) { return stopper.stop(); });\n };\n }\n else {\n stopPropertySetterInstrumentation = noop;\n }\n return {\n stop: function () {\n stopPropertySetterInstrumentation();\n stopEventListeners();\n },\n };\n function onElementChange(target) {\n var nodePrivacyLevel = getNodePrivacyLevel(target, defaultPrivacyLevel);\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return;\n }\n var type = target.type;\n var inputState;\n if (type === 'radio' || type === 'checkbox') {\n if (shouldMaskNode(target, nodePrivacyLevel)) {\n return;\n }\n inputState = { isChecked: target.checked };\n }\n else {\n var value = getElementInputValue(target, nodePrivacyLevel);\n if (value === undefined) {\n return;\n }\n inputState = { text: value };\n }\n // Can be multiple changes on the same node within the same batched mutation observation.\n cbWithDedup(target, inputState);\n // If a radio was checked, other radios with the same name attribute will be unchecked.\n var name = target.name;\n if (type === 'radio' && name && target.checked) {\n forEach(document.querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(cssEscape(name), \"\\\"]\")), function (el) {\n if (el !== target) {\n // TODO: Consider the privacy implications for various differing input privacy levels\n cbWithDedup(el, { isChecked: false });\n }\n });\n }\n }\n /**\n * There can be multiple changes on the same node within the same batched mutation observation.\n */\n function cbWithDedup(target, inputState) {\n if (!hasSerializedNode(target)) {\n return;\n }\n var lastInputState = lastInputStateMap.get(target);\n if (!lastInputState ||\n lastInputState.text !== inputState.text ||\n lastInputState.isChecked !== inputState.isChecked) {\n lastInputStateMap.set(target, inputState);\n inputCb(assembleIncrementalSnapshot(IncrementalSource.Input, assign({\n id: getSerializedNodeId(target),\n }, inputState)));\n }\n }\n}\n//# sourceMappingURL=trackInput.js.map","import { noop, monitor, throttle } from '@datadog/browser-core';\n/**\n * Maximum duration to wait before processing mutations. If the browser is idle, mutations will be\n * processed more quickly. If the browser is busy executing small tasks (ex: rendering frames), the\n * mutations will wait MUTATION_PROCESS_MAX_DELAY milliseconds before being processed. If the\n * browser is busy executing a longer task, mutations will be processed after this task.\n */\nvar MUTATION_PROCESS_MAX_DELAY = 100;\n/**\n * Minimum duration to wait before processing mutations. This is used to batch mutations together\n * and be able to deduplicate them to save processing time and bandwidth.\n * 16ms is the duration of a frame at 60fps that ensure fluid UI.\n */\nexport var MUTATION_PROCESS_MIN_DELAY = 16;\nexport function createMutationBatch(processMutationBatch) {\n var cancelScheduledFlush = noop;\n var pendingMutations = [];\n function flush() {\n cancelScheduledFlush();\n processMutationBatch(pendingMutations);\n pendingMutations = [];\n }\n var _a = throttle(flush, MUTATION_PROCESS_MIN_DELAY, {\n leading: false,\n }), throttledFlush = _a.throttled, cancelThrottle = _a.cancel;\n return {\n addMutations: function (mutations) {\n if (pendingMutations.length === 0) {\n cancelScheduledFlush = requestIdleCallback(throttledFlush, { timeout: MUTATION_PROCESS_MAX_DELAY });\n }\n pendingMutations.push.apply(pendingMutations, mutations);\n },\n flush: flush,\n stop: function () {\n cancelScheduledFlush();\n cancelThrottle();\n },\n };\n}\n/**\n * Use 'requestIdleCallback' when available: it will throttle the mutation processing if the\n * browser is busy rendering frames (ex: when frames are below 60fps). When not available, the\n * fallback on 'requestAnimationFrame' will still ensure the mutations are processed after any\n * browser rendering process (Layout, Recalculate Style, etc.), so we can serialize DOM nodes efficiently.\n *\n * Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n */\nfunction requestIdleCallback(callback, opts) {\n if (window.requestIdleCallback && window.cancelIdleCallback) {\n var id_1 = window.requestIdleCallback(monitor(callback), opts);\n return function () { return window.cancelIdleCallback(id_1); };\n }\n var id = window.requestAnimationFrame(monitor(callback));\n return function () { return window.cancelAnimationFrame(id); };\n}\n//# sourceMappingURL=mutationBatch.js.map","import { monitor, noop } from '@datadog/browser-core';\nimport { isNodeShadowHost, getMutationObserverConstructor, getParentNode, forEachChildNodes, getNodePrivacyLevel, getTextContent, NodePrivacyLevel, } from '@datadog/browser-rum-core';\nimport { IncrementalSource } from '../../../types';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode, nodeAndAncestorsHaveSerializedNode, serializeNodeWithId, serializeAttribute, } from '../serialization';\nimport { createMutationBatch } from '../mutationBatch';\nimport { assembleIncrementalSnapshot } from '../assembly';\n/**\n * Buffers and aggregate mutations generated by a MutationObserver into MutationPayload\n */\nexport function trackMutation(mutationCallback, configuration, shadowRootsController, target) {\n var MutationObserver = getMutationObserverConstructor();\n if (!MutationObserver) {\n return { stop: noop, flush: noop };\n }\n var mutationBatch = createMutationBatch(function (mutations) {\n processMutations(mutations.concat(observer.takeRecords()), mutationCallback, configuration, shadowRootsController);\n });\n var observer = new MutationObserver(monitor(mutationBatch.addMutations));\n observer.observe(target, {\n attributeOldValue: true,\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n });\n return {\n stop: function () {\n observer.disconnect();\n mutationBatch.stop();\n },\n flush: function () {\n mutationBatch.flush();\n },\n };\n}\nfunction processMutations(mutations, mutationCallback, configuration, shadowRootsController) {\n var nodePrivacyLevelCache = new Map();\n mutations\n .filter(function (mutation) { return mutation.type === 'childList'; })\n .forEach(function (mutation) {\n mutation.removedNodes.forEach(function (removedNode) {\n traverseRemovedShadowDom(removedNode, shadowRootsController.removeShadowRoot);\n });\n });\n // Discard any mutation with a 'target' node that:\n // * isn't injected in the current document or isn't known/serialized yet: those nodes are likely\n // part of a mutation occurring in a parent Node\n // * should be hidden or ignored\n var filteredMutations = mutations.filter(function (mutation) {\n return mutation.target.isConnected &&\n nodeAndAncestorsHaveSerializedNode(mutation.target) &&\n getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache) !==\n NodePrivacyLevel.HIDDEN;\n });\n var _a = processChildListMutations(filteredMutations.filter(function (mutation) { return mutation.type === 'childList'; }), configuration, shadowRootsController, nodePrivacyLevelCache), adds = _a.adds, removes = _a.removes, hasBeenSerialized = _a.hasBeenSerialized;\n var texts = processCharacterDataMutations(filteredMutations.filter(function (mutation) {\n return mutation.type === 'characterData' && !hasBeenSerialized(mutation.target);\n }), configuration, nodePrivacyLevelCache);\n var attributes = processAttributesMutations(filteredMutations.filter(function (mutation) {\n return mutation.type === 'attributes' && !hasBeenSerialized(mutation.target);\n }), configuration, nodePrivacyLevelCache);\n if (!texts.length && !attributes.length && !removes.length && !adds.length) {\n return;\n }\n mutationCallback(assembleIncrementalSnapshot(IncrementalSource.Mutation, { adds: adds, removes: removes, texts: texts, attributes: attributes }));\n}\nfunction processChildListMutations(mutations, configuration, shadowRootsController, nodePrivacyLevelCache) {\n // First, we iterate over mutations to collect:\n //\n // * nodes that have been added in the document and not removed by a subsequent mutation\n // * nodes that have been removed from the document but were not added in a previous mutation\n //\n // For this second category, we also collect their previous parent (mutation.target) because we'll\n // need it to emit a 'remove' mutation.\n //\n // Those two categories may overlap: if a node moved from a position to another, it is reported as\n // two mutation records, one with a \"removedNodes\" and the other with \"addedNodes\". In this case,\n // the node will be in both sets.\n var addedAndMovedNodes = new Set();\n var removedNodes = new Map();\n var _loop_1 = function (mutation) {\n mutation.addedNodes.forEach(function (node) {\n addedAndMovedNodes.add(node);\n });\n mutation.removedNodes.forEach(function (node) {\n if (!addedAndMovedNodes.has(node)) {\n removedNodes.set(node, mutation.target);\n }\n addedAndMovedNodes.delete(node);\n });\n };\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n _loop_1(mutation);\n }\n // Then, we sort nodes that are still in the document by topological order, for two reasons:\n //\n // * We will serialize each added nodes with their descendants. We don't want to serialize a node\n // twice, so we need to iterate over the parent nodes first and skip any node that is contained in\n // a precedent node.\n //\n // * To emit \"add\" mutations, we need references to the parent and potential next sibling of each\n // added node. So we need to iterate over the parent nodes first, and when multiple nodes are\n // siblings, we want to iterate from last to first. This will ensure that any \"next\" node is\n // already serialized and have an id.\n var sortedAddedAndMovedNodes = Array.from(addedAndMovedNodes);\n sortAddedAndMovedNodes(sortedAddedAndMovedNodes);\n // Then, we iterate over our sorted node sets to emit mutations. We collect the newly serialized\n // node ids in a set to be able to skip subsequent related mutations.\n var serializedNodeIds = new Set();\n var addedNodeMutations = [];\n for (var _a = 0, sortedAddedAndMovedNodes_1 = sortedAddedAndMovedNodes; _a < sortedAddedAndMovedNodes_1.length; _a++) {\n var node = sortedAddedAndMovedNodes_1[_a];\n if (hasBeenSerialized(node)) {\n continue;\n }\n var parentNodePrivacyLevel = getNodePrivacyLevel(node.parentNode, configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n continue;\n }\n var serializedNode = serializeNodeWithId(node, {\n serializedNodeIds: serializedNodeIds,\n parentNodePrivacyLevel: parentNodePrivacyLevel,\n serializationContext: { status: 2 /* SerializationContextStatus.MUTATION */, shadowRootsController: shadowRootsController },\n configuration: configuration,\n });\n if (!serializedNode) {\n continue;\n }\n var parentNode = getParentNode(node);\n addedNodeMutations.push({\n nextId: getNextSibling(node),\n parentId: getSerializedNodeId(parentNode),\n node: serializedNode,\n });\n }\n // Finally, we emit remove mutations.\n var removedNodeMutations = [];\n removedNodes.forEach(function (parent, node) {\n if (hasSerializedNode(node)) {\n removedNodeMutations.push({\n parentId: getSerializedNodeId(parent),\n id: getSerializedNodeId(node),\n });\n }\n });\n return { adds: addedNodeMutations, removes: removedNodeMutations, hasBeenSerialized: hasBeenSerialized };\n function hasBeenSerialized(node) {\n return hasSerializedNode(node) && serializedNodeIds.has(getSerializedNodeId(node));\n }\n function getNextSibling(node) {\n var nextSibling = node.nextSibling;\n while (nextSibling) {\n if (hasSerializedNode(nextSibling)) {\n return getSerializedNodeId(nextSibling);\n }\n nextSibling = nextSibling.nextSibling;\n }\n return null;\n }\n}\nfunction processCharacterDataMutations(mutations, configuration, nodePrivacyLevelCache) {\n var _a;\n var textMutations = [];\n // Deduplicate mutations based on their target node\n var handledNodes = new Set();\n var filteredMutations = mutations.filter(function (mutation) {\n if (handledNodes.has(mutation.target)) {\n return false;\n }\n handledNodes.add(mutation.target);\n return true;\n });\n // Emit mutations\n for (var _i = 0, filteredMutations_1 = filteredMutations; _i < filteredMutations_1.length; _i++) {\n var mutation = filteredMutations_1[_i];\n var value = mutation.target.textContent;\n if (value === mutation.oldValue) {\n continue;\n }\n var parentNodePrivacyLevel = getNodePrivacyLevel(getParentNode(mutation.target), configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n continue;\n }\n textMutations.push({\n id: getSerializedNodeId(mutation.target),\n // TODO: pass a valid \"ignoreWhiteSpace\" argument\n value: (_a = getTextContent(mutation.target, false, parentNodePrivacyLevel)) !== null && _a !== void 0 ? _a : null,\n });\n }\n return textMutations;\n}\nfunction processAttributesMutations(mutations, configuration, nodePrivacyLevelCache) {\n var attributeMutations = [];\n // Deduplicate mutations based on their target node and changed attribute\n var handledElements = new Map();\n var filteredMutations = mutations.filter(function (mutation) {\n var handledAttributes = handledElements.get(mutation.target);\n if (handledAttributes && handledAttributes.has(mutation.attributeName)) {\n return false;\n }\n if (!handledAttributes) {\n handledElements.set(mutation.target, new Set([mutation.attributeName]));\n }\n else {\n handledAttributes.add(mutation.attributeName);\n }\n return true;\n });\n // Emit mutations\n var emittedMutations = new Map();\n for (var _i = 0, filteredMutations_2 = filteredMutations; _i < filteredMutations_2.length; _i++) {\n var mutation = filteredMutations_2[_i];\n var uncensoredValue = mutation.target.getAttribute(mutation.attributeName);\n if (uncensoredValue === mutation.oldValue) {\n continue;\n }\n var privacyLevel = getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n var attributeValue = serializeAttribute(mutation.target, privacyLevel, mutation.attributeName, configuration);\n var transformedValue = void 0;\n if (mutation.attributeName === 'value') {\n var inputValue = getElementInputValue(mutation.target, privacyLevel);\n if (inputValue === undefined) {\n continue;\n }\n transformedValue = inputValue;\n }\n else if (typeof attributeValue === 'string') {\n transformedValue = attributeValue;\n }\n else {\n transformedValue = null;\n }\n var emittedMutation = emittedMutations.get(mutation.target);\n if (!emittedMutation) {\n emittedMutation = {\n id: getSerializedNodeId(mutation.target),\n attributes: {},\n };\n attributeMutations.push(emittedMutation);\n emittedMutations.set(mutation.target, emittedMutation);\n }\n emittedMutation.attributes[mutation.attributeName] = transformedValue;\n }\n return attributeMutations;\n}\nexport function sortAddedAndMovedNodes(nodes) {\n nodes.sort(function (a, b) {\n var position = a.compareDocumentPosition(b);\n /* eslint-disable no-bitwise */\n if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n else if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n else if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return -1;\n }\n /* eslint-enable no-bitwise */\n return 0;\n });\n}\nfunction traverseRemovedShadowDom(removedNode, shadowDomRemovedCallback) {\n if (isNodeShadowHost(removedNode)) {\n shadowDomRemovedCallback(removedNode.shadowRoot);\n }\n forEachChildNodes(removedNode, function (childNode) { return traverseRemovedShadowDom(childNode, shadowDomRemovedCallback); });\n}\n//# sourceMappingURL=trackMutation.js.map","import { sendToExtension } from '@datadog/browser-core';\nimport * as replayStats from '../replayStats';\nimport { trackFocus, trackFrustration, trackInput, trackMediaInteraction, trackMouseInteraction, trackMove, trackMutation, trackScroll, trackStyleSheet, trackViewEnd, trackViewportResize, trackVisualViewportResize, } from './trackers';\nimport { createElementsScrollPositions } from './elementsScrollPositions';\nimport { initShadowRootsController } from './shadowRootsController';\nimport { startFullSnapshots } from './startFullSnapshots';\nimport { initRecordIds } from './recordIds';\nexport function record(options) {\n var emit = options.emit, configuration = options.configuration, lifeCycle = options.lifeCycle;\n // runtime checks for user options\n if (!emit) {\n throw new Error('emit function is required');\n }\n var emitAndComputeStats = function (record) {\n emit(record);\n sendToExtension('record', { record: record });\n var view = options.viewHistory.findView();\n replayStats.addRecord(view.id);\n };\n var elementsScrollPositions = createElementsScrollPositions();\n var shadowRootsController = initShadowRootsController(configuration, emitAndComputeStats, elementsScrollPositions);\n var stopFullSnapshots = startFullSnapshots(elementsScrollPositions, shadowRootsController, lifeCycle, configuration, flushMutations, function (records) { return records.forEach(function (record) { return emitAndComputeStats(record); }); }).stop;\n function flushMutations() {\n shadowRootsController.flush();\n mutationTracker.flush();\n }\n var recordIds = initRecordIds();\n var mutationTracker = trackMutation(emitAndComputeStats, configuration, shadowRootsController, document);\n var trackers = [\n mutationTracker,\n trackMove(configuration, emitAndComputeStats),\n trackMouseInteraction(configuration, emitAndComputeStats, recordIds),\n trackScroll(configuration, emitAndComputeStats, elementsScrollPositions, document),\n trackViewportResize(configuration, emitAndComputeStats),\n trackInput(configuration, emitAndComputeStats),\n trackMediaInteraction(configuration, emitAndComputeStats),\n trackStyleSheet(emitAndComputeStats),\n trackFocus(configuration, emitAndComputeStats),\n trackVisualViewportResize(configuration, emitAndComputeStats),\n trackFrustration(lifeCycle, emitAndComputeStats, recordIds),\n trackViewEnd(lifeCycle, function (viewEndRecord) {\n flushMutations();\n emitAndComputeStats(viewEndRecord);\n }),\n ];\n return {\n stop: function () {\n shadowRootsController.stop();\n trackers.forEach(function (tracker) { return tracker.stop(); });\n stopFullSnapshots();\n },\n flushMutations: flushMutations,\n shadowRootsController: shadowRootsController,\n };\n}\n//# sourceMappingURL=record.js.map","export function createElementsScrollPositions() {\n var scrollPositionsByElement = new WeakMap();\n return {\n set: function (element, scrollPositions) {\n if (element === document && !document.scrollingElement) {\n // cf https://drafts.csswg.org/cssom-view/#dom-document-scrollingelement,\n // in some cases scrolling elements can not be defined, we don't support those for now\n return;\n }\n scrollPositionsByElement.set(element === document ? document.scrollingElement : element, scrollPositions);\n },\n get: function (element) {\n return scrollPositionsByElement.get(element);\n },\n has: function (element) {\n return scrollPositionsByElement.has(element);\n },\n };\n}\n//# sourceMappingURL=elementsScrollPositions.js.map","import { trackInput, trackMutation, trackScroll } from './trackers';\nexport var initShadowRootsController = function (configuration, callback, elementsScrollPositions) {\n var controllerByShadowRoot = new Map();\n var shadowRootsController = {\n addShadowRoot: function (shadowRoot) {\n if (controllerByShadowRoot.has(shadowRoot)) {\n return;\n }\n var mutationTracker = trackMutation(callback, configuration, shadowRootsController, shadowRoot);\n // The change event does not bubble up across the shadow root, we have to listen on the shadow root\n var inputTracker = trackInput(configuration, callback, shadowRoot);\n // The scroll event does not bubble up across the shadow root, we have to listen on the shadow root\n var scrollTracker = trackScroll(configuration, callback, elementsScrollPositions, shadowRoot);\n controllerByShadowRoot.set(shadowRoot, {\n flush: function () { return mutationTracker.flush(); },\n stop: function () {\n mutationTracker.stop();\n inputTracker.stop();\n scrollTracker.stop();\n },\n });\n },\n removeShadowRoot: function (shadowRoot) {\n var entry = controllerByShadowRoot.get(shadowRoot);\n if (!entry) {\n // unidentified root cause: observed in some cases with shadow DOM added by browser extensions\n return;\n }\n entry.stop();\n controllerByShadowRoot.delete(shadowRoot);\n },\n stop: function () {\n controllerByShadowRoot.forEach(function (_a) {\n var stop = _a.stop;\n return stop();\n });\n },\n flush: function () {\n controllerByShadowRoot.forEach(function (_a) {\n var flush = _a.flush;\n return flush();\n });\n },\n };\n return shadowRootsController;\n};\n//# sourceMappingURL=shadowRootsController.js.map","import { getScrollX, getScrollY, getViewportDimension } from '@datadog/browser-rum-core';\nimport { timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport { serializeDocument } from './serialization';\nimport { getVisualViewport } from './viewports';\nexport function startFullSnapshots(elementsScrollPositions, shadowRootsController, lifeCycle, configuration, flushMutations, fullSnapshotCallback) {\n var takeFullSnapshot = function (timestamp, serializationContext) {\n if (timestamp === void 0) { timestamp = timeStampNow(); }\n if (serializationContext === void 0) { serializationContext = {\n status: 0 /* SerializationContextStatus.INITIAL_FULL_SNAPSHOT */,\n elementsScrollPositions: elementsScrollPositions,\n shadowRootsController: shadowRootsController,\n }; }\n var _a = getViewportDimension(), width = _a.width, height = _a.height;\n var records = [\n {\n data: {\n height: height,\n href: window.location.href,\n width: width,\n },\n type: RecordType.Meta,\n timestamp: timestamp,\n },\n {\n data: {\n has_focus: document.hasFocus(),\n },\n type: RecordType.Focus,\n timestamp: timestamp,\n },\n {\n data: {\n node: serializeDocument(document, configuration, serializationContext),\n initialOffset: {\n left: getScrollX(),\n top: getScrollY(),\n },\n },\n type: RecordType.FullSnapshot,\n timestamp: timestamp,\n },\n ];\n if (window.visualViewport) {\n records.push({\n data: getVisualViewport(window.visualViewport),\n type: RecordType.VisualViewport,\n timestamp: timestamp,\n });\n }\n return records;\n };\n fullSnapshotCallback(takeFullSnapshot());\n var unsubscribe = lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function (view) {\n flushMutations();\n fullSnapshotCallback(takeFullSnapshot(view.startClocks.timeStamp, {\n shadowRootsController: shadowRootsController,\n status: 1 /* SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT */,\n elementsScrollPositions: elementsScrollPositions,\n }));\n }).unsubscribe;\n return {\n stop: unsubscribe,\n };\n}\n//# sourceMappingURL=startFullSnapshots.js.map","export function initRecordIds() {\n var recordIds = new WeakMap();\n var nextId = 1;\n return {\n getIdForEvent: function (event) {\n if (!recordIds.has(event)) {\n recordIds.set(event, nextId++);\n }\n return recordIds.get(event);\n },\n };\n}\n//# sourceMappingURL=recordIds.js.map","import { assign } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport * as replayStats from '../replayStats';\nexport function createSegment(_a) {\n var context = _a.context, creationReason = _a.creationReason, encoder = _a.encoder;\n var encodedBytesCount = 0;\n var viewId = context.view.id;\n var metadata = assign({\n start: Infinity,\n end: -Infinity,\n creation_reason: creationReason,\n records_count: 0,\n has_full_snapshot: false,\n index_in_view: replayStats.getSegmentsCount(viewId),\n source: 'browser',\n }, context);\n replayStats.addSegment(viewId);\n function addRecord(record, callback) {\n metadata.start = Math.min(metadata.start, record.timestamp);\n metadata.end = Math.max(metadata.end, record.timestamp);\n metadata.records_count += 1;\n metadata.has_full_snapshot || (metadata.has_full_snapshot = record.type === RecordType.FullSnapshot);\n var prefix = encoder.isEmpty ? '{\"records\":[' : ',';\n encoder.write(prefix + JSON.stringify(record), function (additionalEncodedBytesCount) {\n encodedBytesCount += additionalEncodedBytesCount;\n callback(encodedBytesCount);\n });\n }\n function flush(callback) {\n if (encoder.isEmpty) {\n throw new Error('Empty segment flushed');\n }\n encoder.write(\"],\".concat(JSON.stringify(metadata).slice(1), \"\\n\"));\n encoder.finish(function (encoderResult) {\n replayStats.addWroteData(metadata.view.id, encoderResult.rawBytesCount);\n callback(metadata, encoderResult);\n });\n }\n return { addRecord: addRecord, flush: flush };\n}\n//# sourceMappingURL=segment.js.map","import { isPageExitReason, ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nimport { buildReplayPayload } from './buildReplayPayload';\nimport { createSegment } from './segment';\nexport var SEGMENT_DURATION_LIMIT = 5 * ONE_SECOND;\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport var SEGMENT_BYTES_LIMIT = 60000;\n// Segments are the main data structure for session replays. They contain context information used\n// for indexing or UI needs, and a list of records (RRWeb 'events', renamed to avoid confusing\n// namings). They are stored without any processing from the intake, and fetched one after the\n// other while a session is being replayed. Their encoding (deflate) are carefully crafted to allow\n// concatenating multiple segments together. Segments have a size overhead (metadata), so our goal is to\n// build segments containing as many records as possible while complying with the various flush\n// strategies to guarantee a good replay quality.\n//\n// When the recording starts, a segment is initially created. The segment is flushed (finalized and\n// sent) based on various events (non-exhaustive list):\n//\n// * the page visibility change or becomes to unload\n// * the segment duration reaches a limit\n// * the encoded segment bytes count reaches a limit\n// * ...\n//\n// A segment cannot be created without its context. If the RUM session ends and no session id is\n// available when creating a new segment, records will be ignored, until the session is renewed and\n// a new session id is available.\n//\n// Empty segments (segments with no record) aren't useful and should be ignored.\n//\n// To help investigate session replays issues, each segment is created with a \"creation reason\",\n// indicating why the session has been created.\nexport function startSegmentCollection(lifeCycle, configuration, sessionManager, viewHistory, httpRequest, encoder) {\n return doStartSegmentCollection(lifeCycle, function () { return computeSegmentContext(configuration.applicationId, sessionManager, viewHistory); }, httpRequest, encoder);\n}\nexport function doStartSegmentCollection(lifeCycle, getSegmentContext, httpRequest, encoder) {\n var state = {\n status: 0 /* SegmentCollectionStatus.WaitingForInitialRecord */,\n nextSegmentCreationReason: 'init',\n };\n var unsubscribeViewCreated = lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function () {\n flushSegment('view_change');\n }).unsubscribe;\n var unsubscribePageExited = lifeCycle.subscribe(10 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n flushSegment(pageExitEvent.reason);\n }).unsubscribe;\n function flushSegment(flushReason) {\n if (state.status === 1 /* SegmentCollectionStatus.SegmentPending */) {\n state.segment.flush(function (metadata, encoderResult) {\n var payload = buildReplayPayload(encoderResult.output, metadata, encoderResult.rawBytesCount);\n if (isPageExitReason(flushReason)) {\n httpRequest.sendOnExit(payload);\n }\n else {\n httpRequest.send(payload);\n }\n });\n clearTimeout(state.expirationTimeoutId);\n }\n if (flushReason !== 'stop') {\n state = {\n status: 0 /* SegmentCollectionStatus.WaitingForInitialRecord */,\n nextSegmentCreationReason: flushReason,\n };\n }\n else {\n state = {\n status: 2 /* SegmentCollectionStatus.Stopped */,\n };\n }\n }\n return {\n addRecord: function (record) {\n if (state.status === 2 /* SegmentCollectionStatus.Stopped */) {\n return;\n }\n if (state.status === 0 /* SegmentCollectionStatus.WaitingForInitialRecord */) {\n var context = getSegmentContext();\n if (!context) {\n return;\n }\n state = {\n status: 1 /* SegmentCollectionStatus.SegmentPending */,\n segment: createSegment({ encoder: encoder, context: context, creationReason: state.nextSegmentCreationReason }),\n expirationTimeoutId: setTimeout(function () {\n flushSegment('segment_duration_limit');\n }, SEGMENT_DURATION_LIMIT),\n };\n }\n state.segment.addRecord(record, function (encodedBytesCount) {\n if (encodedBytesCount > SEGMENT_BYTES_LIMIT) {\n flushSegment('segment_bytes_limit');\n }\n });\n },\n stop: function () {\n flushSegment('stop');\n unsubscribeViewCreated();\n unsubscribePageExited();\n },\n };\n}\nexport function computeSegmentContext(applicationId, sessionManager, viewHistory) {\n var session = sessionManager.findTrackedSession();\n var viewContext = viewHistory.findView();\n if (!session || !viewContext) {\n return undefined;\n }\n return {\n application: {\n id: applicationId,\n },\n session: {\n id: session.id,\n },\n view: {\n id: viewContext.id,\n },\n };\n}\nexport function setSegmentBytesLimit(newSegmentBytesLimit) {\n if (newSegmentBytesLimit === void 0) { newSegmentBytesLimit = 60000; }\n SEGMENT_BYTES_LIMIT = newSegmentBytesLimit;\n}\n//# sourceMappingURL=segmentCollection.js.map","import { assign } from '@datadog/browser-core';\nexport function buildReplayPayload(data, metadata, rawSegmentBytesCount) {\n var formData = new FormData();\n formData.append('segment', new Blob([data], {\n type: 'application/octet-stream',\n }), \"\".concat(metadata.session.id, \"-\").concat(metadata.start));\n var metadataAndSegmentSizes = assign({\n raw_segment_size: rawSegmentBytesCount,\n compressed_segment_size: data.byteLength,\n }, metadata);\n var serializedMetadataAndSegmentSizes = JSON.stringify(metadataAndSegmentSizes);\n formData.append('event', new Blob([serializedMetadataAndSegmentSizes], { type: 'application/json' }));\n return { data: formData, bytesCount: data.byteLength };\n}\n//# sourceMappingURL=buildReplayPayload.js.map","/**\n * Test for Browser features used while recording\n */\nexport function isBrowserSupported() {\n return (\n // Array.from is a bit less supported by browsers than CSSSupportsRule, but has higher chances\n // to be polyfilled. Test for both to be more confident. We could add more things if we find out\n // this test is not sufficient.\n typeof Array.from === 'function' &&\n typeof CSSSupportsRule === 'function' &&\n typeof URL.createObjectURL === 'function' &&\n 'forEach' in NodeList.prototype);\n}\n//# sourceMappingURL=isBrowserSupported.js.map","import { getSessionReplayUrl } from '@datadog/browser-rum-core';\nimport { isBrowserSupported } from '../boot/isBrowserSupported';\nexport function getSessionReplayLink(configuration, sessionManager, viewHistory, isRecordingStarted) {\n var session = sessionManager.findTrackedSession();\n var errorType = getErrorType(session, isRecordingStarted);\n var viewContext = viewHistory.findView();\n return getSessionReplayUrl(configuration, {\n viewContext: viewContext,\n errorType: errorType,\n session: session,\n });\n}\nfunction getErrorType(session, isRecordingStarted) {\n if (!isBrowserSupported()) {\n return 'browser-not-supported';\n }\n if (!session) {\n // possibilities:\n // - rum sampled out\n // - session expired (edge case)\n return 'rum-not-tracked';\n }\n if (session.sessionReplay === 0 /* SessionReplayState.OFF */) {\n // possibilities\n // - replay sampled out\n return 'incorrect-session-plan';\n }\n if (!isRecordingStarted) {\n return 'replay-not-started';\n }\n}\n//# sourceMappingURL=getSessionReplayLink.js.map","import { addEventListener, addTelemetryDebug, assign, concatBuffers } from '@datadog/browser-core';\nexport function createDeflateEncoder(configuration, worker, streamId) {\n var rawBytesCount = 0;\n var compressedData = [];\n var compressedDataTrailer;\n var nextWriteActionId = 0;\n var pendingWriteActions = [];\n var removeMessageListener = addEventListener(configuration, worker, 'message', function (_a) {\n var workerResponse = _a.data;\n if (workerResponse.type !== 'wrote' || workerResponse.streamId !== streamId) {\n return;\n }\n rawBytesCount += workerResponse.additionalBytesCount;\n compressedData.push(workerResponse.result);\n compressedDataTrailer = workerResponse.trailer;\n var nextPendingAction = pendingWriteActions.shift();\n if (nextPendingAction && nextPendingAction.id === workerResponse.id) {\n if (nextPendingAction.writeCallback) {\n nextPendingAction.writeCallback(workerResponse.result.byteLength);\n }\n else if (nextPendingAction.finishCallback) {\n nextPendingAction.finishCallback();\n }\n }\n else {\n removeMessageListener();\n addTelemetryDebug('Worker responses received out of order.');\n }\n }).stop;\n function consumeResult() {\n var output = compressedData.length === 0 ? new Uint8Array(0) : concatBuffers(compressedData.concat(compressedDataTrailer));\n var result = {\n rawBytesCount: rawBytesCount,\n output: output,\n outputBytesCount: output.byteLength,\n encoding: 'deflate',\n };\n rawBytesCount = 0;\n compressedData = [];\n return result;\n }\n function sendResetIfNeeded() {\n if (nextWriteActionId > 0) {\n worker.postMessage({\n action: 'reset',\n streamId: streamId,\n });\n nextWriteActionId = 0;\n }\n }\n return {\n isAsync: true,\n get isEmpty() {\n return nextWriteActionId === 0;\n },\n write: function (data, callback) {\n worker.postMessage({\n action: 'write',\n id: nextWriteActionId,\n data: data,\n streamId: streamId,\n });\n pendingWriteActions.push({\n id: nextWriteActionId,\n writeCallback: callback,\n data: data,\n });\n nextWriteActionId += 1;\n },\n finish: function (callback) {\n sendResetIfNeeded();\n if (!pendingWriteActions.length) {\n callback(consumeResult());\n }\n else {\n // Make sure we do not call any write callback\n pendingWriteActions.forEach(function (pendingWriteAction) {\n delete pendingWriteAction.writeCallback;\n });\n // Wait for the last action to finish before calling the finish callback\n pendingWriteActions[pendingWriteActions.length - 1].finishCallback = function () { return callback(consumeResult()); };\n }\n },\n finishSync: function () {\n sendResetIfNeeded();\n var pendingData = pendingWriteActions\n .map(function (pendingWriteAction) {\n // Make sure we do not call any write or finish callback\n delete pendingWriteAction.writeCallback;\n delete pendingWriteAction.finishCallback;\n return pendingWriteAction.data;\n })\n .join('');\n return assign(consumeResult(), {\n pendingData: pendingData,\n });\n },\n estimateEncodedBytesCount: function (data) {\n // This is a rough estimation of the data size once it'll be encoded by deflate. We observed\n // that if it's the first chunk of data pushed to the stream, the ratio is lower (3-4), but\n // after that the ratio is greater (10+). We chose 8 here, which (on average) seems to produce\n // requests of the expected size.\n return data.length / 8;\n },\n stop: function () {\n removeMessageListener();\n },\n };\n}\n//# sourceMappingURL=deflateEncoder.js.map","import { addTelemetryError, display, includes, addEventListener, setTimeout, ONE_SECOND, DOCS_ORIGIN, } from '@datadog/browser-core';\nexport var INITIALIZATION_TIME_OUT_DELAY = 30 * ONE_SECOND;\nfunction createDeflateWorker(configuration) {\n return new Worker(configuration.workerUrl || URL.createObjectURL(new Blob([\"!function(){\\\"use strict\\\";function t(t){for(var e=t.reduce((function(t,e){return t+e.length}),0),a=new Uint8Array(e),n=0,r=0,i=t;r<i.length;r++){var s=i[r];a.set(s,n),n+=s.length}return a}function e(t){for(var e=t.length;--e>=0;)t[e]=0}var a=256,n=286,r=30,i=15,s=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),_=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),h=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),l=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=new Array(576);e(o);var d=new Array(60);e(d);var u=new Array(512);e(u);var f=new Array(256);e(f);var c=new Array(29);e(c);var p,g,w,v=new Array(r);function b(t,e,a,n,r){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=n,this.max_length=r,this.has_stree=t&&t.length}function m(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(v);var y=function(t){return t<256?u[t]:u[256+(t>>>7)]},k=function(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},z=function(t,e,a){t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,k(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},x=function(t,e,a){z(t,a[2*e],a[2*e+1])},A=function(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=function(t,e,a){var n,r,s=new Array(16),_=0;for(n=1;n<=i;n++)s[n]=_=_+a[n-1]<<1;for(r=0;r<=e;r++){var h=t[2*r+1];0!==h&&(t[2*r]=A(s[h]++,h))}},Z=function(t){var e;for(e=0;e<n;e++)t.dyn_ltree[2*e]=0;for(e=0;e<r;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},U=function(t){t.bi_valid>8?k(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},S=function(t,e,a,n){var r=2*e,i=2*a;return t[r]<t[i]||t[r]===t[i]&&n[e]<=n[a]},R=function(t,e,a){for(var n=t.heap[a],r=a<<1;r<=t.heap_len&&(r<t.heap_len&&S(e,t.heap[r+1],t.heap[r],t.depth)&&r++,!S(e,n,t.heap[r],t.depth));)t.heap[a]=t.heap[r],a=r,r<<=1;t.heap[a]=n},L=function(t,e,n){var r,i,h,l,o=0;if(0!==t.last_lit)do{r=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],i=t.pending_buf[t.l_buf+o],o++,0===r?x(t,i,e):(h=f[i],x(t,h+a+1,e),0!==(l=s[h])&&(i-=c[h],z(t,i,l)),r--,h=y(r),x(t,h,n),0!==(l=_[h])&&(r-=v[h],z(t,r,l)))}while(o<t.last_lit);x(t,256,e)},F=function(t,e){var a,n,r,s=e.dyn_tree,_=e.stat_desc.static_tree,h=e.stat_desc.has_stree,l=e.stat_desc.elems,o=-1;for(t.heap_len=0,t.heap_max=573,a=0;a<l;a++)0!==s[2*a]?(t.heap[++t.heap_len]=o=a,t.depth[a]=0):s[2*a+1]=0;for(;t.heap_len<2;)s[2*(r=t.heap[++t.heap_len]=o<2?++o:0)]=1,t.depth[r]=0,t.opt_len--,h&&(t.static_len-=_[2*r+1]);for(e.max_code=o,a=t.heap_len>>1;a>=1;a--)R(t,s,a);r=l;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],R(t,s,1),n=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=n,s[2*r]=s[2*a]+s[2*n],t.depth[r]=(t.depth[a]>=t.depth[n]?t.depth[a]:t.depth[n])+1,s[2*a+1]=s[2*n+1]=r,t.heap[1]=r++,R(t,s,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,n,r,s,_,h,l=e.dyn_tree,o=e.max_code,d=e.stat_desc.static_tree,u=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(s=0;s<=i;s++)t.bl_count[s]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<573;a++)(s=l[2*l[2*(n=t.heap[a])+1]+1]+1)>p&&(s=p,g++),l[2*n+1]=s,n>o||(t.bl_count[s]++,_=0,n>=c&&(_=f[n-c]),h=l[2*n],t.opt_len+=h*(s+_),u&&(t.static_len+=h*(d[2*n+1]+_)));if(0!==g){do{for(s=p-1;0===t.bl_count[s];)s--;t.bl_count[s]--,t.bl_count[s+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(s=p;0!==s;s--)for(n=t.bl_count[s];0!==n;)(r=t.heap[--a])>o||(l[2*r+1]!==s&&(t.opt_len+=(s-l[2*r+1])*l[2*r],l[2*r+1]=s),n--)}}(t,e),E(s,o,t.bl_count)},T=function(t,e,a){var n,r,i=-1,s=e[1],_=0,h=7,l=4;for(0===s&&(h=138,l=3),e[2*(a+1)+1]=65535,n=0;n<=a;n++)r=s,s=e[2*(n+1)+1],++_<h&&r===s||(_<l?t.bl_tree[2*r]+=_:0!==r?(r!==i&&t.bl_tree[2*r]++,t.bl_tree[32]++):_<=10?t.bl_tree[34]++:t.bl_tree[36]++,_=0,i=r,0===s?(h=138,l=3):r===s?(h=6,l=3):(h=7,l=4))},I=function(t,e,a){var n,r,i=-1,s=e[1],_=0,h=7,l=4;for(0===s&&(h=138,l=3),n=0;n<=a;n++)if(r=s,s=e[2*(n+1)+1],!(++_<h&&r===s)){if(_<l)do{x(t,r,t.bl_tree)}while(0!=--_);else 0!==r?(r!==i&&(x(t,r,t.bl_tree),_--),x(t,16,t.bl_tree),z(t,_-3,2)):_<=10?(x(t,17,t.bl_tree),z(t,_-3,3)):(x(t,18,t.bl_tree),z(t,_-11,7));_=0,i=r,0===s?(h=138,l=3):r===s?(h=6,l=3):(h=7,l=4)}},N=!1,O=function(t,e,a,n){z(t,0+(n?1:0),3),function(t,e,a,n){U(t),n&&(k(t,a),k(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a}(t,e,a,!0)},D=function(t,e,n,r){var i,s,_=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<a;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),F(t,t.l_desc),F(t,t.d_desc),_=function(t){var e;for(T(t,t.dyn_ltree,t.l_desc.max_code),T(t,t.dyn_dtree,t.d_desc.max_code),F(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*l[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),i=t.opt_len+3+7>>>3,(s=t.static_len+3+7>>>3)<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==e?O(t,e,n,r):4===t.strategy||s===i?(z(t,2+(r?1:0),3),L(t,o,d)):(z(t,4+(r?1:0),3),function(t,e,a,n){var r;for(z(t,e-257,5),z(t,a-1,5),z(t,n-4,4),r=0;r<n;r++)z(t,t.bl_tree[2*l[r]+1],3);I(t,t.dyn_ltree,e-1),I(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,_+1),L(t,t.dyn_ltree,t.dyn_dtree)),Z(t),r&&U(t)},B={_tr_init:function(t){N||(!function(){var t,e,a,l,m,y=new Array(16);for(a=0,l=0;l<28;l++)for(c[l]=a,t=0;t<1<<s[l];t++)f[a++]=l;for(f[a-1]=l,m=0,l=0;l<16;l++)for(v[l]=m,t=0;t<1<<_[l];t++)u[m++]=l;for(m>>=7;l<r;l++)for(v[l]=m<<7,t=0;t<1<<_[l]-7;t++)u[256+m++]=l;for(e=0;e<=i;e++)y[e]=0;for(t=0;t<=143;)o[2*t+1]=8,t++,y[8]++;for(;t<=255;)o[2*t+1]=9,t++,y[9]++;for(;t<=279;)o[2*t+1]=7,t++,y[7]++;for(;t<=287;)o[2*t+1]=8,t++,y[8]++;for(E(o,287,y),t=0;t<r;t++)d[2*t+1]=5,d[2*t]=A(t,5);p=new b(o,s,257,n,i),g=new b(d,_,0,r,i),w=new b(new Array(0),h,0,19,7)}(),N=!0),t.l_desc=new m(t.dyn_ltree,p),t.d_desc=new m(t.dyn_dtree,g),t.bl_desc=new m(t.bl_tree,w),t.bi_buf=0,t.bi_valid=0,Z(t)},_tr_stored_block:O,_tr_flush_block:D,_tr_tally:function(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(f[n]+a+1)]++,t.dyn_dtree[2*y(e)]++),t.last_lit===t.lit_bufsize-1},_tr_align:function(t){z(t,2,3),x(t,256,o),function(t){16===t.bi_valid?(k(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},C=function(t,e,a,n){for(var r=65535&t|0,i=t>>>16&65535|0,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{i=i+(r=r+e[n++]|0)|0}while(--s);r%=65521,i%=65521}return r|i<<16|0},H=new Uint32Array(function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}()),M=function(t,e,a,n){var r=H,i=n+a;t^=-1;for(var s=n;s<i;s++)t=t>>>8^r[255&(t^e[s])];return-1^t},Y={2:\\\"need dictionary\\\",1:\\\"stream end\\\",0:\\\"\\\",\\\"-1\\\":\\\"file error\\\",\\\"-2\\\":\\\"stream error\\\",\\\"-3\\\":\\\"data error\\\",\\\"-4\\\":\\\"insufficient memory\\\",\\\"-5\\\":\\\"buffer error\\\",\\\"-6\\\":\\\"incompatible version\\\"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},P=B._tr_init,j=B._tr_stored_block,G=B._tr_flush_block,X=B._tr_tally,W=B._tr_align,q=K.Z_NO_FLUSH,J=K.Z_PARTIAL_FLUSH,Q=K.Z_FULL_FLUSH,V=K.Z_FINISH,$=K.Z_BLOCK,tt=K.Z_OK,et=K.Z_STREAM_END,at=K.Z_STREAM_ERROR,nt=K.Z_DATA_ERROR,rt=K.Z_BUF_ERROR,it=K.Z_DEFAULT_COMPRESSION,st=K.Z_FILTERED,_t=K.Z_HUFFMAN_ONLY,ht=K.Z_RLE,lt=K.Z_FIXED,ot=K.Z_DEFAULT_STRATEGY,dt=K.Z_UNKNOWN,ut=K.Z_DEFLATED,ft=258,ct=262,pt=103,gt=113,wt=666,vt=function(t,e){return t.msg=Y[e],e},bt=function(t){return(t<<1)-(t>4?9:0)},mt=function(t){for(var e=t.length;--e>=0;)t[e]=0},yt=function(t,e,a){return(e<<t.hash_shift^a)&t.hash_mask},kt=function(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=function(t,e){G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,kt(t.strm)},xt=function(t,e){t.pending_buf[t.pending++]=e},At=function(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Et=function(t,e){var a,n,r=t.max_chain_length,i=t.strstart,s=t.prev_length,_=t.nice_match,h=t.strstart>t.w_size-ct?t.strstart-(t.w_size-ct):0,l=t.window,o=t.w_mask,d=t.prev,u=t.strstart+ft,f=l[i+s-1],c=l[i+s];t.prev_length>=t.good_match&&(r>>=2),_>t.lookahead&&(_=t.lookahead);do{if(l[(a=e)+s]===c&&l[a+s-1]===f&&l[a]===l[i]&&l[++a]===l[i+1]){i+=2,a++;do{}while(l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&i<u);if(n=ft-(u-i),i=u-ft,n>s){if(t.match_start=e,s=n,n>=_)break;f=l[i+s-1],c=l[i+s]}}}while((e=d[e&o])>h&&0!=--r);return s<=t.lookahead?s:t.lookahead},Zt=function(t){var e,a,n,r,i,s,_,h,l,o,d=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=d+(d-ct)){t.window.set(t.window.subarray(d,d+d),0),t.match_start-=d,t.strstart-=d,t.block_start-=d,e=a=t.hash_size;do{n=t.head[--e],t.head[e]=n>=d?n-d:0}while(--a);e=a=d;do{n=t.prev[--e],t.prev[e]=n>=d?n-d:0}while(--a);r+=d}if(0===t.strm.avail_in)break;if(s=t.strm,_=t.window,h=t.strstart+t.lookahead,l=r,o=void 0,(o=s.avail_in)>l&&(o=l),a=0===o?0:(s.avail_in-=o,_.set(s.input.subarray(s.next_in,s.next_in+o),h),1===s.state.wrap?s.adler=C(s.adler,_,o,h):2===s.state.wrap&&(s.adler=M(s.adler,_,o,h)),s.next_in+=o,s.total_in+=o,o),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=yt(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<ct&&0!==t.strm.avail_in)},Ut=function(t,e){for(var a,n;;){if(t.lookahead<ct){if(Zt(t),t.lookahead<ct&&e===q)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ct&&(t.match_length=Et(t,a)),t.match_length>=3)if(n=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else n=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(zt(t,!1),0===t.strm.avail_out)?1:2},St=function(t,e){for(var a,n,r;;){if(t.lookahead<ct){if(Zt(t),t.lookahead<ct&&e===q)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-ct&&(t.match_length=Et(t,a),t.match_length<=5&&(t.strategy===st||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-3,n=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((n=X(t,0,t.window[t.strstart-1]))&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Rt(t,e,a,n,r){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=n,this.func=r}var Lt=[new Rt(0,0,0,0,(function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Zt(t),0===t.lookahead&&e===q)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+a;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,zt(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-ct&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(zt(t,!1),t.strm.avail_out),1)})),new Rt(4,4,8,4,Ut),new Rt(4,5,16,8,Ut),new Rt(4,6,32,32,Ut),new Rt(4,4,16,16,St),new Rt(8,16,32,32,St),new Rt(8,16,128,128,St),new Rt(8,32,128,256,St),new Rt(32,128,258,1024,St),new Rt(32,258,258,4096,St)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ut,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),mt(this.dyn_ltree),mt(this.dyn_dtree),mt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),mt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),mt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Tt=function(t){if(!t||!t.state)return vt(t,at);t.total_in=t.total_out=0,t.data_type=dt;var e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:gt,t.adler=2===e.wrap?0:1,e.last_flush=q,P(e),tt},It=function(t){var e,a=Tt(t);return a===tt&&((e=t.state).window_size=2*e.w_size,mt(e.head),e.max_lazy_match=Lt[e.level].max_lazy,e.good_match=Lt[e.level].good_length,e.nice_match=Lt[e.level].nice_length,e.max_chain_length=Lt[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),a},Nt=function(t,e,a,n,r,i){if(!t)return at;var s=1;if(e===it&&(e=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),r<1||r>9||a!==ut||n<8||n>15||e<0||e>9||i<0||i>lt)return vt(t,at);8===n&&(n=9);var _=new Ft;return t.state=_,_.strm=t,_.wrap=s,_.gzhead=null,_.w_bits=n,_.w_size=1<<_.w_bits,_.w_mask=_.w_size-1,_.hash_bits=r+7,_.hash_size=1<<_.hash_bits,_.hash_mask=_.hash_size-1,_.hash_shift=~~((_.hash_bits+3-1)/3),_.window=new Uint8Array(2*_.w_size),_.head=new Uint16Array(_.hash_size),_.prev=new Uint16Array(_.w_size),_.lit_bufsize=1<<r+6,_.pending_buf_size=4*_.lit_bufsize,_.pending_buf=new Uint8Array(_.pending_buf_size),_.d_buf=1*_.lit_bufsize,_.l_buf=3*_.lit_bufsize,_.level=e,_.strategy=i,_.method=a,It(t)},Ot={deflateInit:function(t,e){return Nt(t,e,ut,15,8,ot)},deflateInit2:Nt,deflateReset:It,deflateResetKeep:Tt,deflateSetHeader:function(t,e){return t&&t.state?2!==t.state.wrap?at:(t.state.gzhead=e,tt):at},deflate:function(t,e){var a,n;if(!t||!t.state||e>$||e<0)return t?vt(t,at):at;var r=t.state;if(!t.output||!t.input&&0!==t.avail_in||r.status===wt&&e!==V)return vt(t,0===t.avail_out?rt:at);r.strm=t;var i=r.last_flush;if(r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,xt(r,31),xt(r,139),xt(r,8),r.gzhead?(xt(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),xt(r,255&r.gzhead.time),xt(r,r.gzhead.time>>8&255),xt(r,r.gzhead.time>>16&255),xt(r,r.gzhead.time>>24&255),xt(r,9===r.level?2:r.strategy>=_t||r.level<2?4:0),xt(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(xt(r,255&r.gzhead.extra.length),xt(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=M(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(xt(r,0),xt(r,0),xt(r,0),xt(r,0),xt(r,0),xt(r,9===r.level?2:r.strategy>=_t||r.level<2?4:0),xt(r,3),r.status=gt);else{var s=ut+(r.w_bits-8<<4)<<8;s|=(r.strategy>=_t||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(s|=32),s+=31-s%31,r.status=gt,At(r,s),0!==r.strstart&&(At(r,t.adler>>>16),At(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),kt(t),a=r.pending,r.pending!==r.pending_buf_size));)xt(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),kt(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.name.length?255&r.gzhead.name.charCodeAt(r.gzindex++):0,xt(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),kt(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.comment.length?255&r.gzhead.comment.charCodeAt(r.gzindex++):0,xt(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.status=pt)}else r.status=pt;if(r.status===pt&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&kt(t),r.pending+2<=r.pending_buf_size&&(xt(r,255&t.adler),xt(r,t.adler>>8&255),t.adler=0,r.status=gt)):r.status=gt),0!==r.pending){if(kt(t),0===t.avail_out)return r.last_flush=-1,tt}else if(0===t.avail_in&&bt(e)<=bt(i)&&e!==V)return vt(t,rt);if(r.status===wt&&0!==t.avail_in)return vt(t,rt);if(0!==t.avail_in||0!==r.lookahead||e!==q&&r.status!==wt){var _=r.strategy===_t?function(t,e){for(var a;;){if(0===t.lookahead&&(Zt(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(zt(t,!1),0===t.strm.avail_out)?1:2}(r,e):r.strategy===ht?function(t,e){for(var a,n,r,i,s=t.window;;){if(t.lookahead<=ft){if(Zt(t),t.lookahead<=ft&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=s[r=t.strstart-1])===s[++r]&&n===s[++r]&&n===s[++r]){i=t.strstart+ft;do{}while(n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&r<i);t.match_length=ft-(i-r),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(zt(t,!1),0===t.strm.avail_out)?1:2}(r,e):Lt[r.level].func(r,e);if(3!==_&&4!==_||(r.status=wt),1===_||3===_)return 0===t.avail_out&&(r.last_flush=-1),tt;if(2===_&&(e===J?W(r):e!==$&&(j(r,0,0,!1),e===Q&&(mt(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),kt(t),0===t.avail_out))return r.last_flush=-1,tt}return e!==V?tt:r.wrap<=0?et:(2===r.wrap?(xt(r,255&t.adler),xt(r,t.adler>>8&255),xt(r,t.adler>>16&255),xt(r,t.adler>>24&255),xt(r,255&t.total_in),xt(r,t.total_in>>8&255),xt(r,t.total_in>>16&255),xt(r,t.total_in>>24&255)):(At(r,t.adler>>>16),At(r,65535&t.adler)),kt(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?tt:et)},deflateEnd:function(t){if(!t||!t.state)return at;var e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==pt&&e!==gt&&e!==wt?vt(t,at):(t.state=null,e===gt?vt(t,nt):tt)},deflateSetDictionary:function(t,e){var a=e.length;if(!t||!t.state)return at;var n=t.state,r=n.wrap;if(2===r||1===r&&42!==n.status||n.lookahead)return at;if(1===r&&(t.adler=C(t.adler,e,a,0)),n.wrap=0,a>=n.w_size){0===r&&(mt(n.head),n.strstart=0,n.block_start=0,n.insert=0);var i=new Uint8Array(n.w_size);i.set(e.subarray(a-n.w_size,a),0),e=i,a=n.w_size}var s=t.avail_in,_=t.next_in,h=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Zt(n);n.lookahead>=3;){var l=n.strstart,o=n.lookahead-2;do{n.ins_h=yt(n,n.ins_h,n.window[l+3-1]),n.prev[l&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=l,l++}while(--o);n.strstart=l,n.lookahead=2,Zt(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=_,t.input=h,t.avail_in=s,n.wrap=r,tt},deflateInfo:\\\"pako deflate (from Nodeca project)\\\"};for(var Dt=new Uint8Array(256),Bt=0;Bt<256;Bt++)Dt[Bt]=Bt>=252?6:Bt>=248?5:Bt>=240?4:Bt>=224?3:Bt>=192?2:1;Dt[254]=Dt[254]=1;var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\\\"\\\",this.state=null,this.data_type=2,this.adler=0},Ht=Object.prototype.toString,Mt=K.Z_NO_FLUSH,Yt=K.Z_SYNC_FLUSH,Kt=K.Z_FULL_FLUSH,Pt=K.Z_FINISH,jt=K.Z_OK,Gt=K.Z_STREAM_END,Xt=K.Z_DEFAULT_COMPRESSION,Wt=K.Z_DEFAULT_STRATEGY,qt=K.Z_DEFLATED;function Jt(){this.options={level:Xt,method:qt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Wt};var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\\\"\\\",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;var e=Ot.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(e!==jt)throw new Error(Y[e]);if(t.header&&Ot.deflateSetHeader(this.strm,t.header),t.dictionary){var a;if(a=\\\"[object ArrayBuffer]\\\"===Ht.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(e=Ot.deflateSetDictionary(this.strm,a))!==jt)throw new Error(Y[e]);this._dict_set=!0}}function Qt(t,e,a){try{t.postMessage({type:\\\"errored\\\",error:e,streamId:a})}catch(n){t.postMessage({type:\\\"errored\\\",error:String(e),streamId:a})}}function Vt(t){var e=t.strm.adler;return new Uint8Array([3,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e])}Jt.prototype.push=function(t,e){var a,n,r=this.strm,i=this.options.chunkSize;if(this.ended)return!1;for(n=e===~~e?e:!0===e?Pt:Mt,\\\"[object ArrayBuffer]\\\"===Ht.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(i),r.next_out=0,r.avail_out=i),(n===Yt||n===Kt)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if((a=Ot.deflate(r,n))===Gt)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),a=Ot.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===jt;if(0!==r.avail_out){if(n>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},Jt.prototype.onData=function(t){this.chunks.push(t)},Jt.prototype.onEnd=function(t){t===jt&&(this.result=function(t){for(var e=0,a=0,n=t.length;a<n;a++)e+=t[a].length;for(var r=new Uint8Array(e),i=0,s=0,_=t.length;i<_;i++){var h=t[i];r.set(h,s),s+=h.length}return r}(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},function(e){void 0===e&&(e=self);try{var a=new Map;e.addEventListener(\\\"message\\\",(function(n){try{var r=function(e,a){switch(a.action){case\\\"init\\\":return{type:\\\"initialized\\\",version:\\\"5.29.1\\\"};case\\\"write\\\":var n=e.get(a.streamId);n||(n=new Jt,e.set(a.streamId,n));var r=n.chunks.length,i=function(t){if(\\\"function\\\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);var e,a,n,r,i,s=t.length,_=0;for(r=0;r<s;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<s&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),_+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(_),i=0,r=0;i<_;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<s&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),a<128?e[i++]=a:a<2048?(e[i++]=192|a>>>6,e[i++]=128|63&a):a<65536?(e[i++]=224|a>>>12,e[i++]=128|a>>>6&63,e[i++]=128|63&a):(e[i++]=240|a>>>18,e[i++]=128|a>>>12&63,e[i++]=128|a>>>6&63,e[i++]=128|63&a);return e}(a.data);return n.push(i,K.Z_SYNC_FLUSH),{type:\\\"wrote\\\",id:a.id,streamId:a.streamId,result:t(n.chunks.slice(r)),trailer:Vt(n),additionalBytesCount:i.length};case\\\"reset\\\":e.delete(a.streamId)}}(a,n.data);r&&e.postMessage(r)}catch(t){Qt(e,t,n.data&&\\\"streamId\\\"in n.data?n.data.streamId:void 0)}}))}catch(t){Qt(e,t)}}()}();\"])));\n}\nvar state = { status: 0 /* DeflateWorkerStatus.Nil */ };\nexport function startDeflateWorker(configuration, source, onInitializationFailure, createDeflateWorkerImpl) {\n if (createDeflateWorkerImpl === void 0) { createDeflateWorkerImpl = createDeflateWorker; }\n if (state.status === 0 /* DeflateWorkerStatus.Nil */) {\n // doStartDeflateWorker updates the state to \"loading\" or \"error\"\n doStartDeflateWorker(configuration, source, createDeflateWorkerImpl);\n }\n switch (state.status) {\n case 1 /* DeflateWorkerStatus.Loading */:\n state.initializationFailureCallbacks.push(onInitializationFailure);\n return state.worker;\n case 3 /* DeflateWorkerStatus.Initialized */:\n return state.worker;\n }\n}\nexport function resetDeflateWorkerState() {\n if (state.status === 3 /* DeflateWorkerStatus.Initialized */ || state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state.stop();\n }\n state = { status: 0 /* DeflateWorkerStatus.Nil */ };\n}\nexport function getDeflateWorkerStatus() {\n return state.status;\n}\n/**\n * Starts the deflate worker and handle messages and errors\n *\n * The spec allow browsers to handle worker errors differently:\n * - Chromium throws an exception\n * - Firefox fires an error event\n *\n * more details: https://bugzilla.mozilla.org/show_bug.cgi?id=1736865#c2\n */\nexport function doStartDeflateWorker(configuration, source, createDeflateWorkerImpl) {\n if (createDeflateWorkerImpl === void 0) { createDeflateWorkerImpl = createDeflateWorker; }\n try {\n var worker = createDeflateWorkerImpl(configuration);\n var removeErrorListener_1 = addEventListener(configuration, worker, 'error', function (error) {\n onError(configuration, source, error);\n }).stop;\n var removeMessageListener_1 = addEventListener(configuration, worker, 'message', function (_a) {\n var data = _a.data;\n if (data.type === 'errored') {\n onError(configuration, source, data.error, data.streamId);\n }\n else if (data.type === 'initialized') {\n onInitialized(data.version);\n }\n }).stop;\n worker.postMessage({ action: 'init' });\n setTimeout(function () { return onTimeout(source); }, INITIALIZATION_TIME_OUT_DELAY);\n var stop_1 = function () {\n removeErrorListener_1();\n removeMessageListener_1();\n };\n state = { status: 1 /* DeflateWorkerStatus.Loading */, worker: worker, stop: stop_1, initializationFailureCallbacks: [] };\n }\n catch (error) {\n onError(configuration, source, error);\n }\n}\nfunction onTimeout(source) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n display.error(\"\".concat(source, \" failed to start: a timeout occurred while initializing the Worker\"));\n state.initializationFailureCallbacks.forEach(function (callback) { return callback(); });\n state = { status: 2 /* DeflateWorkerStatus.Error */ };\n }\n}\nfunction onInitialized(version) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state = { status: 3 /* DeflateWorkerStatus.Initialized */, worker: state.worker, stop: state.stop, version: version };\n }\n}\nfunction onError(configuration, source, error, streamId) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */ || state.status === 0 /* DeflateWorkerStatus.Nil */) {\n display.error(\"\".concat(source, \" failed to start: an error occurred while creating the Worker:\"), error);\n if (error instanceof Event || (error instanceof Error && isMessageCspRelated(error.message))) {\n var baseMessage = void 0;\n if (configuration.workerUrl) {\n baseMessage = \"Please make sure the Worker URL \".concat(configuration.workerUrl, \" is correct and CSP is correctly configured.\");\n }\n else {\n baseMessage = 'Please make sure CSP is correctly configured.';\n }\n display.error(\"\".concat(baseMessage, \" See documentation at \").concat(DOCS_ORIGIN, \"/integrations/content_security_policy_logs/#use-csp-with-real-user-monitoring-and-session-replay\"));\n }\n else {\n addTelemetryError(error);\n }\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state.initializationFailureCallbacks.forEach(function (callback) { return callback(); });\n }\n state = { status: 2 /* DeflateWorkerStatus.Error */ };\n }\n else {\n addTelemetryError(error, {\n worker_version: state.status === 3 /* DeflateWorkerStatus.Initialized */ && state.version,\n stream_id: streamId,\n });\n }\n}\nfunction isMessageCspRelated(message) {\n return (includes(message, 'Content Security Policy') ||\n // Related to `require-trusted-types-for` CSP: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for\n includes(message, \"requires 'TrustedScriptURL'\"));\n}\n//# sourceMappingURL=deflateWorker.js.map","// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeRumPublicApi, startRum } from '@datadog/browser-rum-core';\nimport { startRecording } from '../boot/startRecording';\nimport { makeRecorderApi } from '../boot/recorderApi';\nimport { createDeflateEncoder, startDeflateWorker } from '../domain/deflate';\nexport { DefaultPrivacyLevel } from '@datadog/browser-core';\nvar recorderApi = makeRecorderApi(startRecording);\nexport var datadogRum = makeRumPublicApi(startRum, recorderApi, { startDeflateWorker: startDeflateWorker, createDeflateEncoder: createDeflateEncoder });\ndefineGlobal(getGlobalObject(), 'DD_RUM', datadogRum);\n//# sourceMappingURL=main.js.map","/*\n global DataDogService\n*/\nimport { datadogRum } from '@datadog/browser-rum';\nimport { LogReport, newRelicEvent, playerNewRelicEvent } from '@foxcorp/delta-web-analytics';\nimport { isStaticRender } from './ContentHelper';\n\nlet reportError;\n\nconst withDataDogEnableCheck = cb => {\n const { dataDog: dataDogConfig } = window.ExternalConfig;\n return (...args) => {\n if (!reportError) {\n reportError = new LogReport({ datadogRum });\n }\n if (!isStaticRender() && DataDogService && dataDogConfig) {\n cb(...args);\n }\n };\n};\n\nexport const logError = withDataDogEnableCheck((error, errProps) =>\n reportError.reportError(error, errProps),\n);\n\nexport const logPlayerError = withDataDogEnableCheck((error, errProps) =>\n reportError.reportErrorInPlayer(error, errProps),\n);\n\nexport const logEvent = (...args) => newRelicEvent(...args);\n\nexport const logPlayerEvent = (...args) => playerNewRelicEvent(...args);\n","import { addTelemetryUsage, isExperimentalFeatureEnabled, ExperimentalFeature, assign, createContextManager, deepClone, makePublicApi, monitor, clocksNow, callMonitored, createHandlingStack, checkUser, sanitizeUser, sanitize, createIdentityEncoder, createCustomerDataTrackerManager, storeContextManager, displayAlreadyInitializedError, createTrackingConsentState, timeStampToClocks, } from '@datadog/browser-core';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createCustomVitalsState } from '../domain/vital/vitalCollection';\nimport { createPreStartStrategy } from './preStartRum';\nvar RUM_STORAGE_KEY = 'rum';\nexport function makeRumPublicApi(startRumImpl, recorderApi, options) {\n if (options === void 0) { options = {}; }\n var customerDataTrackerManager = createCustomerDataTrackerManager(0 /* CustomerDataCompressionStatus.Unknown */);\n var globalContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */));\n var userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */));\n var trackingConsentState = createTrackingConsentState();\n var customVitalsState = createCustomVitalsState();\n function getCommonContext() {\n return buildCommonContext(globalContextManager, userContextManager, recorderApi);\n }\n var strategy = createPreStartStrategy(options, getCommonContext, trackingConsentState, customVitalsState, function (configuration, deflateWorker, initialViewOptions) {\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, RUM_STORAGE_KEY, 2 /* CustomerDataType.GlobalContext */);\n storeContextManager(configuration, userContextManager, RUM_STORAGE_KEY, 1 /* CustomerDataType.User */);\n }\n customerDataTrackerManager.setCompressionStatus(deflateWorker ? 1 /* CustomerDataCompressionStatus.Enabled */ : 2 /* CustomerDataCompressionStatus.Disabled */);\n var startRumResult = startRumImpl(configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, deflateWorker && options.createDeflateEncoder\n ? function (streamId) { return options.createDeflateEncoder(configuration, deflateWorker, streamId); }\n : createIdentityEncoder, trackingConsentState, customVitalsState);\n recorderApi.onRumStart(startRumResult.lifeCycle, configuration, startRumResult.session, startRumResult.viewHistory, deflateWorker);\n strategy = createPostStartStrategy(strategy, startRumResult);\n return startRumResult;\n });\n var startView = monitor(function (options) {\n var sanitizedOptions = typeof options === 'object' ? options : { name: options };\n if (sanitizedOptions.context) {\n customerDataTrackerManager.getOrCreateTracker(3 /* CustomerDataType.View */).updateCustomerData(sanitizedOptions.context);\n }\n strategy.startView(sanitizedOptions);\n addTelemetryUsage({ feature: 'start-view' });\n });\n var rumPublicApi = makePublicApi({\n init: monitor(function (initConfiguration) {\n strategy.init(initConfiguration, rumPublicApi);\n // Add experimental features here\n if (isExperimentalFeatureEnabled(ExperimentalFeature.UPDATE_VIEW_NAME)) {\n /**\n * Update View Name.\n *\n * Enable to manually change the name of the current view.\n * @param name name of the view\n * See [Override default RUM view names](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#override-default-rum-view-names) for further information.\n */\n ;\n rumPublicApi.updateViewName = monitor(function (name) {\n strategy.updateViewName(name);\n });\n }\n }),\n setTrackingConsent: monitor(function (trackingConsent) {\n trackingConsentState.update(trackingConsent);\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n }),\n setViewContext: monitor(function (context) {\n strategy.setViewContext(context);\n }),\n setViewContextProperty: monitor(function (key, value) {\n strategy.setViewContextProperty(key, value);\n }),\n setGlobalContext: monitor(function (context) {\n globalContextManager.setContext(context);\n addTelemetryUsage({ feature: 'set-global-context' });\n }),\n getGlobalContext: monitor(function () { return globalContextManager.getContext(); }),\n setGlobalContextProperty: monitor(function (key, value) {\n globalContextManager.setContextProperty(key, value);\n addTelemetryUsage({ feature: 'set-global-context' });\n }),\n removeGlobalContextProperty: monitor(function (key) { return globalContextManager.removeContextProperty(key); }),\n clearGlobalContext: monitor(function () { return globalContextManager.clearContext(); }),\n getInternalContext: monitor(function (startTime) { return strategy.getInternalContext(startTime); }),\n getInitConfiguration: monitor(function () { return deepClone(strategy.initConfiguration); }),\n addAction: function (name, context) {\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n strategy.addAction({\n name: sanitize(name),\n context: sanitize(context),\n startClocks: clocksNow(),\n type: \"custom\" /* ActionType.CUSTOM */,\n handlingStack: handlingStack,\n });\n addTelemetryUsage({ feature: 'add-action' });\n });\n },\n addError: function (error, context) {\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n strategy.addError({\n error: error, // Do not sanitize error here, it is needed unserialized by computeRawError()\n handlingStack: handlingStack,\n context: sanitize(context),\n startClocks: clocksNow(),\n });\n addTelemetryUsage({ feature: 'add-error' });\n });\n },\n addTiming: monitor(function (name, time) {\n // TODO: next major decide to drop relative time support or update its behaviour\n strategy.addTiming(sanitize(name), time);\n }),\n setUser: monitor(function (newUser) {\n if (checkUser(newUser)) {\n userContextManager.setContext(sanitizeUser(newUser));\n }\n addTelemetryUsage({ feature: 'set-user' });\n }),\n getUser: monitor(function () { return userContextManager.getContext(); }),\n setUserProperty: monitor(function (key, property) {\n var _a;\n var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n userContextManager.setContextProperty(key, sanitizedProperty);\n addTelemetryUsage({ feature: 'set-user' });\n }),\n removeUserProperty: monitor(function (key) { return userContextManager.removeContextProperty(key); }),\n clearUser: monitor(function () { return userContextManager.clearContext(); }),\n startView: startView,\n stopSession: monitor(function () {\n strategy.stopSession();\n addTelemetryUsage({ feature: 'stop-session' });\n }),\n addFeatureFlagEvaluation: monitor(function (key, value) {\n strategy.addFeatureFlagEvaluation(sanitize(key), sanitize(value));\n addTelemetryUsage({ feature: 'add-feature-flag-evaluation' });\n }),\n getSessionReplayLink: monitor(function () { return recorderApi.getSessionReplayLink(); }),\n startSessionReplayRecording: monitor(function (options) {\n recorderApi.start(options);\n addTelemetryUsage({ feature: 'start-session-replay-recording', force: options && options.force });\n }),\n stopSessionReplayRecording: monitor(function () { return recorderApi.stop(); }),\n addDurationVital: monitor(function (name, options) {\n addTelemetryUsage({ feature: 'add-duration-vital' });\n strategy.addDurationVital({\n name: sanitize(name),\n type: \"duration\" /* VitalType.DURATION */,\n startClocks: timeStampToClocks(options.startTime),\n duration: options.duration,\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n startDurationVital: monitor(function (name, options) {\n addTelemetryUsage({ feature: 'start-duration-vital' });\n return strategy.startDurationVital(sanitize(name), {\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n stopDurationVital: monitor(function (nameOrRef, options) {\n addTelemetryUsage({ feature: 'stop-duration-vital' });\n strategy.stopDurationVital(typeof nameOrRef === 'string' ? sanitize(nameOrRef) : nameOrRef, {\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n });\n return rumPublicApi;\n}\nfunction createPostStartStrategy(preStartStrategy, startRumResult) {\n return assign({\n init: function (initConfiguration) {\n displayAlreadyInitializedError('DD_RUM', initConfiguration);\n },\n initConfiguration: preStartStrategy.initConfiguration,\n }, startRumResult);\n}\n//# sourceMappingURL=rumPublicApi.js.map","export function buildCommonContext(globalContextManager, userContextManager, recorderApi) {\n return {\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n hasReplay: recorderApi.isRecording() ? true : undefined,\n };\n}\n//# sourceMappingURL=commonContext.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils/polyfills';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n var publicApi = assign({\n version: \"5.29.1\",\n // This API method is intentionally not monitored, since the only thing executed is the\n // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and\n // we don't want to interfere with the user uncaught exceptions.\n onReady: function (callback) {\n callback();\n },\n }, stub);\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get: function () {\n return setDebugMode;\n },\n enumerable: false,\n });\n return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n var existingGlobalVariable = global[name];\n if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n }\n global[name] = api;\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach(function (fn) { return catchUserErrors(fn, 'onReady callback threw an error:')(); });\n }\n}\n//# sourceMappingURL=init.js.map","import { sendToExtension, createPageExitObservable, startTelemetry, canUseEventBridge, getEventBridge, addTelemetryDebug, drainPreStartTelemetry, isExperimentalFeatureEnabled, ExperimentalFeature, } from '@datadog/browser-core';\nimport { createDOMMutationObservable } from '../browser/domMutationObservable';\nimport { startRumAssembly } from '../domain/assembly';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startViewHistory } from '../domain/contexts/viewHistory';\nimport { startRequestCollection } from '../domain/requestCollection';\nimport { startActionCollection } from '../domain/action/actionCollection';\nimport { startErrorCollection } from '../domain/error/errorCollection';\nimport { startLongTaskCollection } from '../domain/longTask/longTaskCollection';\nimport { startResourceCollection } from '../domain/resource/resourceCollection';\nimport { startViewCollection } from '../domain/view/viewCollection';\nimport { startRumSessionManager, startRumSessionManagerStub } from '../domain/rumSessionManager';\nimport { startRumBatch } from '../transport/startRumBatch';\nimport { startRumEventBridge } from '../transport/startRumEventBridge';\nimport { startUrlContexts } from '../domain/contexts/urlContexts';\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable';\nimport { startFeatureFlagContexts } from '../domain/contexts/featureFlagContext';\nimport { startCustomerDataTelemetry } from '../domain/startCustomerDataTelemetry';\nimport { startPageStateHistory } from '../domain/contexts/pageStateHistory';\nimport { startDisplayContext } from '../domain/contexts/displayContext';\nimport { startVitalCollection } from '../domain/vital/vitalCollection';\nimport { startCiVisibilityContext } from '../domain/contexts/ciVisibilityContext';\nimport { startLongAnimationFrameCollection } from '../domain/longAnimationFrame/longAnimationFrameCollection';\nexport function startRum(configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, createEncoder, \n// `startRum` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startRum` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState, customVitalsState) {\n var cleanupTasks = [];\n var lifeCycle = new LifeCycle();\n lifeCycle.subscribe(12 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) { return sendToExtension('rum', event); });\n var telemetry = startRumTelemetry(configuration);\n telemetry.setContextProvider(function () {\n var _a, _b;\n return ({\n application: {\n id: configuration.applicationId,\n },\n session: {\n id: (_a = session.findTrackedSession()) === null || _a === void 0 ? void 0 : _a.id,\n },\n view: {\n id: (_b = viewHistory.findView()) === null || _b === void 0 ? void 0 : _b.id,\n },\n action: {\n id: actionContexts.findActionId(),\n },\n });\n });\n var reportError = function (error) {\n lifeCycle.notify(13 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error });\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n };\n var featureFlagContexts = startFeatureFlagContexts(lifeCycle, customerDataTrackerManager.getOrCreateTracker(0 /* CustomerDataType.FeatureFlag */));\n var pageExitObservable = createPageExitObservable(configuration);\n var pageExitSubscription = pageExitObservable.subscribe(function (event) {\n lifeCycle.notify(10 /* LifeCycleEventType.PAGE_EXITED */, event);\n });\n cleanupTasks.push(function () { return pageExitSubscription.unsubscribe(); });\n var session = !canUseEventBridge()\n ? startRumSessionManager(configuration, lifeCycle, trackingConsentState)\n : startRumSessionManagerStub();\n if (!canUseEventBridge()) {\n var batch_1 = startRumBatch(configuration, lifeCycle, telemetry.observable, reportError, pageExitObservable, session.expireObservable, createEncoder);\n cleanupTasks.push(function () { return batch_1.stop(); });\n startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batch_1.flushObservable);\n }\n else {\n startRumEventBridge(lifeCycle);\n }\n var domMutationObservable = createDOMMutationObservable();\n var locationChangeObservable = createLocationChangeObservable(configuration, location);\n var pageStateHistory = startPageStateHistory(configuration);\n var _a = startRumEventCollection(lifeCycle, configuration, location, session, pageStateHistory, locationChangeObservable, domMutationObservable, getCommonContext, reportError), viewHistory = _a.viewHistory, urlContexts = _a.urlContexts, actionContexts = _a.actionContexts, addAction = _a.addAction, stopRumEventCollection = _a.stop;\n cleanupTasks.push(stopRumEventCollection);\n drainPreStartTelemetry();\n var _b = startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions), addTiming = _b.addTiming, startView = _b.startView, updateViewName = _b.updateViewName, setViewContext = _b.setViewContext, setViewContextProperty = _b.setViewContextProperty, stopViewCollection = _b.stop;\n cleanupTasks.push(stopViewCollection);\n var stopResourceCollection = startResourceCollection(lifeCycle, configuration, pageStateHistory).stop;\n cleanupTasks.push(stopResourceCollection);\n if (isExperimentalFeatureEnabled(ExperimentalFeature.LONG_ANIMATION_FRAME)) {\n if (configuration.trackLongTasks) {\n var stopLongAnimationFrameCollection = startLongAnimationFrameCollection(lifeCycle, configuration).stop;\n cleanupTasks.push(stopLongAnimationFrameCollection);\n }\n }\n else {\n startLongTaskCollection(lifeCycle, configuration);\n }\n var addError = startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts).addError;\n startRequestCollection(lifeCycle, configuration, session);\n var vitalCollection = startVitalCollection(lifeCycle, pageStateHistory, customVitalsState);\n var internalContext = startInternalContext(configuration.applicationId, session, viewHistory, actionContexts, urlContexts);\n return {\n addAction: addAction,\n addError: addError,\n addTiming: addTiming,\n addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,\n startView: startView,\n setViewContext: setViewContext,\n setViewContextProperty: setViewContextProperty,\n updateViewName: updateViewName,\n lifeCycle: lifeCycle,\n viewHistory: viewHistory,\n session: session,\n stopSession: function () { return session.expire(); },\n getInternalContext: internalContext.get,\n startDurationVital: vitalCollection.startDurationVital,\n stopDurationVital: vitalCollection.stopDurationVital,\n addDurationVital: vitalCollection.addDurationVital,\n stop: function () {\n cleanupTasks.forEach(function (task) { return task(); });\n },\n };\n}\nfunction startRumTelemetry(configuration) {\n var telemetry = startTelemetry(\"browser-rum-sdk\" /* TelemetryService.RUM */, configuration);\n if (canUseEventBridge()) {\n var bridge_1 = getEventBridge();\n telemetry.observable.subscribe(function (event) { return bridge_1.send('internal_telemetry', event); });\n }\n return telemetry;\n}\nexport function startRumEventCollection(lifeCycle, configuration, location, sessionManager, pageStateHistory, locationChangeObservable, domMutationObservable, getCommonContext, reportError) {\n var viewHistory = startViewHistory(lifeCycle);\n var urlContexts = startUrlContexts(lifeCycle, locationChangeObservable, location);\n var _a = startActionCollection(lifeCycle, domMutationObservable, configuration, pageStateHistory), addAction = _a.addAction, actionContexts = _a.actionContexts;\n var displayContext = startDisplayContext(configuration);\n var ciVisibilityContext = startCiVisibilityContext(configuration);\n startRumAssembly(configuration, lifeCycle, sessionManager, viewHistory, urlContexts, actionContexts, displayContext, ciVisibilityContext, getCommonContext, reportError);\n return {\n viewHistory: viewHistory,\n pageStateHistory: pageStateHistory,\n urlContexts: urlContexts,\n addAction: addAction,\n actionContexts: actionContexts,\n stop: function () {\n ciVisibilityContext.stop();\n displayContext.stop();\n urlContexts.stop();\n viewHistory.stop();\n pageStateHistory.stop();\n },\n };\n}\n//# sourceMappingURL=startRum.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport var FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\n/**\n * Start feature flag contexts\n *\n * Feature flag contexts follow the life of views.\n * A new context is added when a view is created and ended when the view is ended\n *\n * Note: we choose not to add a new context at each evaluation to save memory\n */\nexport function startFeatureFlagContexts(lifeCycle, customerDataTracker) {\n var featureFlagContexts = createValueHistory({\n expireDelay: FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY,\n });\n lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (_a) {\n var startClocks = _a.startClocks;\n featureFlagContexts.add({}, startClocks.relative);\n customerDataTracker.resetCustomerData();\n });\n lifeCycle.subscribe(5 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n featureFlagContexts.closeActive(endClocks.relative);\n });\n return {\n findFeatureFlagEvaluations: function (startTime) { return featureFlagContexts.find(startTime); },\n addFeatureFlagEvaluation: function (key, value) {\n var currentContext = featureFlagContexts.find();\n if (currentContext) {\n currentContext[key] = value;\n customerDataTracker.updateCustomerData(currentContext);\n }\n },\n stop: function () { return customerDataTracker.stop(); },\n };\n}\n//# sourceMappingURL=featureFlagContext.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRumEventBridge(lifeCycle) {\n var bridge = getEventBridge();\n lifeCycle.subscribe(12 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n bridge.send('rum', serverRumEvent);\n });\n}\n//# sourceMappingURL=startRumEventBridge.js.map","import { SESSION_TIME_OUT_DELAY, relativeNow, createValueHistory } from '@datadog/browser-core';\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\nexport var URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startUrlContexts(lifeCycle, locationChangeObservable, location) {\n var urlContextHistory = createValueHistory({ expireDelay: URL_CONTEXT_TIME_OUT_DELAY });\n var previousViewUrl;\n lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (_a) {\n var startClocks = _a.startClocks;\n var viewUrl = location.href;\n urlContextHistory.add(buildUrlContext({\n url: viewUrl,\n referrer: !previousViewUrl ? document.referrer : previousViewUrl,\n }), startClocks.relative);\n previousViewUrl = viewUrl;\n });\n lifeCycle.subscribe(5 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n urlContextHistory.closeActive(endClocks.relative);\n });\n var locationChangeSubscription = locationChangeObservable.subscribe(function (_a) {\n var newLocation = _a.newLocation;\n var current = urlContextHistory.find();\n if (current) {\n var changeTime = relativeNow();\n urlContextHistory.closeActive(changeTime);\n urlContextHistory.add(buildUrlContext({\n url: newLocation.href,\n referrer: current.referrer,\n }), changeTime);\n }\n });\n function buildUrlContext(_a) {\n var url = _a.url, referrer = _a.referrer;\n return {\n url: url,\n referrer: referrer,\n };\n }\n return {\n findUrl: function (startTime) { return urlContextHistory.find(startTime); },\n stop: function () {\n locationChangeSubscription.unsubscribe();\n urlContextHistory.stop();\n },\n };\n}\n//# sourceMappingURL=urlContexts.js.map","import { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable';\nexport function startDisplayContext(configuration) {\n var viewport = getViewportDimension();\n var unsubscribeViewport = initViewportObservable(configuration).subscribe(function (viewportDimension) {\n viewport = viewportDimension;\n }).unsubscribe;\n return {\n get: function () { return ({ viewport: viewport }); },\n stop: unsubscribeViewport,\n };\n}\n//# sourceMappingURL=displayContext.js.map","import { getInitCookie } from '@datadog/browser-core';\nimport { createCookieObservable } from '../../browser/cookieObservable';\nexport var CI_VISIBILITY_TEST_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id';\nexport function startCiVisibilityContext(configuration, cookieObservable) {\n var _a;\n if (cookieObservable === void 0) { cookieObservable = createCookieObservable(configuration, CI_VISIBILITY_TEST_ID_COOKIE_NAME); }\n var testExecutionId = getInitCookie(CI_VISIBILITY_TEST_ID_COOKIE_NAME) || ((_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId'));\n var cookieObservableSubscription = cookieObservable.subscribe(function (value) {\n testExecutionId = value;\n });\n return {\n get: function () {\n if (typeof testExecutionId === 'string') {\n return {\n test_execution_id: testExecutionId,\n };\n }\n },\n stop: function () { return cookieObservableSubscription.unsubscribe(); },\n };\n}\n//# sourceMappingURL=ciVisibilityContext.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../browser/performanceObservable';\nexport function startLongAnimationFrameCollection(lifeCycle, configuration) {\n var performanceResourceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.LONG_ANIMATION_FRAME,\n buffered: true,\n }).subscribe(function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n var startClocks = relativeToClocks(entry.startTime);\n var rawRumEvent = {\n date: startClocks.timeStamp,\n long_task: {\n id: generateUUID(),\n entry_type: \"long-animation-frame\" /* RumLongTaskEntryType.LONG_ANIMATION_FRAME */,\n duration: toServerDuration(entry.duration),\n blocking_duration: toServerDuration(entry.blockingDuration),\n first_ui_event_timestamp: toServerDuration(entry.firstUIEventTimestamp),\n render_start: toServerDuration(entry.renderStart),\n style_and_layout_start: toServerDuration(entry.styleAndLayoutStart),\n start_time: toServerDuration(entry.startTime),\n scripts: entry.scripts.map(function (script) { return ({\n duration: toServerDuration(script.duration),\n pause_duration: toServerDuration(script.pauseDuration),\n forced_style_and_layout_duration: toServerDuration(script.forcedStyleAndLayoutDuration),\n start_time: toServerDuration(script.startTime),\n execution_start: toServerDuration(script.executionStart),\n source_url: script.sourceURL,\n source_function_name: script.sourceFunctionName,\n source_char_position: script.sourceCharPosition,\n invoker: script.invoker,\n invoker_type: script.invokerType,\n window_attribution: script.windowAttribution,\n }); }),\n },\n type: \"long_task\" /* RumEventType.LONG_TASK */,\n _dd: {\n discarded: false,\n },\n };\n lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n rawRumEvent: rawRumEvent,\n startTime: startClocks.relative,\n domainContext: { performanceEntry: entry },\n });\n }\n });\n return {\n stop: function () { return performanceResourceSubscription.unsubscribe(); },\n };\n}\n//# sourceMappingURL=longAnimationFrameCollection.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../browser/performanceObservable';\nexport function startLongTaskCollection(lifeCycle, configuration) {\n var performanceLongTaskSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.LONG_TASK,\n buffered: true,\n }).subscribe(function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType !== RumPerformanceEntryType.LONG_TASK) {\n break;\n }\n if (!configuration.trackLongTasks) {\n break;\n }\n var startClocks = relativeToClocks(entry.startTime);\n var rawRumEvent = {\n date: startClocks.timeStamp,\n long_task: {\n id: generateUUID(),\n entry_type: \"long-task\" /* RumLongTaskEntryType.LONG_TASK */,\n duration: toServerDuration(entry.duration),\n },\n type: \"long_task\" /* RumEventType.LONG_TASK */,\n _dd: {\n discarded: false,\n },\n };\n lifeCycle.notify(11 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n rawRumEvent: rawRumEvent,\n startTime: startClocks.relative,\n domainContext: { performanceEntry: entry },\n });\n }\n });\n return {\n stop: function () {\n performanceLongTaskSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=longTaskCollection.js.map","/**\n * Internal context keep returning v1 format\n * to not break compatibility with logs data format\n */\nexport function startInternalContext(applicationId, sessionManager, viewHistory, actionContexts, urlContexts) {\n return {\n get: function (startTime) {\n var viewContext = viewHistory.findView(startTime);\n var urlContext = urlContexts.findUrl(startTime);\n var session = sessionManager.findTrackedSession(startTime);\n if (session && viewContext && urlContext) {\n var actionId = actionContexts.findActionId(startTime);\n return {\n application_id: applicationId,\n session_id: session.id,\n user_action: actionId ? { id: actionId } : undefined,\n view: { id: viewContext.id, name: viewContext.name, referrer: urlContext.referrer, url: urlContext.url },\n };\n }\n },\n };\n}\n//# sourceMappingURL=internalContext.js.map","import { canUseEventBridge, noop, runOnReadyState, PageExitReason, bridgeSupports, } from '@datadog/browser-core';\nimport { getReplayStats as getReplayStatsImpl } from '../domain/replayStats';\nimport { getSessionReplayLink } from '../domain/getSessionReplayLink';\nimport { createDeflateEncoder, startDeflateWorker, getDeflateWorkerStatus, } from '../domain/deflate';\nimport { isBrowserSupported } from './isBrowserSupported';\nexport function makeRecorderApi(startRecordingImpl, createDeflateWorkerImpl) {\n if ((canUseEventBridge() && !bridgeSupports(\"records\" /* BridgeCapability.RECORDS */)) || !isBrowserSupported()) {\n return {\n start: noop,\n stop: noop,\n getReplayStats: function () { return undefined; },\n onRumStart: noop,\n isRecording: function () { return false; },\n getSessionReplayLink: function () { return undefined; },\n };\n }\n var state = {\n status: 1 /* RecorderStatus.IntentToStart */,\n };\n var startStrategy = function () {\n state = { status: 1 /* RecorderStatus.IntentToStart */ };\n };\n var stopStrategy = function () {\n state = { status: 0 /* RecorderStatus.Stopped */ };\n };\n var getSessionReplayLinkStrategy = noop;\n return {\n start: function (options) { return startStrategy(options); },\n stop: function () { return stopStrategy(); },\n getSessionReplayLink: function () { return getSessionReplayLinkStrategy(); },\n onRumStart: function (lifeCycle, configuration, sessionManager, viewHistory, worker) {\n if (configuration.startSessionReplayRecordingManually) {\n state = { status: 0 /* RecorderStatus.Stopped */ };\n }\n lifeCycle.subscribe(8 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n if (state.status === 2 /* RecorderStatus.Starting */ || state.status === 3 /* RecorderStatus.Started */) {\n stopStrategy();\n state = { status: 1 /* RecorderStatus.IntentToStart */ };\n }\n });\n // Stop the recorder on page unload to avoid sending records after the page is ended.\n lifeCycle.subscribe(10 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n stopStrategy();\n }\n });\n lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n if (state.status === 1 /* RecorderStatus.IntentToStart */) {\n startStrategy();\n }\n });\n var cachedDeflateEncoder;\n function getOrCreateDeflateEncoder() {\n if (!cachedDeflateEncoder) {\n if (!worker) {\n worker = startDeflateWorker(configuration, 'Datadog Session Replay', function () {\n stopStrategy();\n }, createDeflateWorkerImpl);\n }\n if (worker) {\n cachedDeflateEncoder = createDeflateEncoder(configuration, worker, 1 /* DeflateEncoderStreamId.REPLAY */);\n }\n }\n return cachedDeflateEncoder;\n }\n startStrategy = function (options) {\n var session = sessionManager.findTrackedSession();\n if (!session || (session.sessionReplay === 0 /* SessionReplayState.OFF */ && (!options || !options.force))) {\n state = { status: 1 /* RecorderStatus.IntentToStart */ };\n return;\n }\n if (state.status === 2 /* RecorderStatus.Starting */ || state.status === 3 /* RecorderStatus.Started */) {\n return;\n }\n state = { status: 2 /* RecorderStatus.Starting */ };\n runOnReadyState(configuration, 'interactive', function () {\n if (state.status !== 2 /* RecorderStatus.Starting */) {\n return;\n }\n var deflateEncoder = getOrCreateDeflateEncoder();\n if (!deflateEncoder) {\n state = {\n status: 0 /* RecorderStatus.Stopped */,\n };\n return;\n }\n var stopRecording = startRecordingImpl(lifeCycle, configuration, sessionManager, viewHistory, deflateEncoder).stop;\n state = {\n status: 3 /* RecorderStatus.Started */,\n stopRecording: stopRecording,\n };\n });\n if (options && options.force && session.sessionReplay === 0 /* SessionReplayState.OFF */) {\n sessionManager.setForcedReplay();\n }\n };\n stopStrategy = function () {\n if (state.status === 0 /* RecorderStatus.Stopped */) {\n return;\n }\n if (state.status === 3 /* RecorderStatus.Started */) {\n state.stopRecording();\n }\n state = {\n status: 0 /* RecorderStatus.Stopped */,\n };\n };\n getSessionReplayLinkStrategy = function () {\n return getSessionReplayLink(configuration, sessionManager, viewHistory, state.status !== 0 /* RecorderStatus.Stopped */);\n };\n if (state.status === 1 /* RecorderStatus.IntentToStart */) {\n startStrategy();\n }\n },\n isRecording: function () {\n // The worker is started optimistically, meaning we could have started to record but its\n // initialization fails a bit later. This could happen when:\n // * the worker URL (blob or plain URL) is blocked by CSP in Firefox only (Chromium and Safari\n // throw an exception when instantiating the worker, and IE doesn't care about CSP)\n // * the browser fails to load the worker in case the workerUrl is used\n // * an unexpected error occurs in the Worker before initialization, ex:\n // * a runtime exception collected by monitor()\n // * a syntax error notified by the browser via an error event\n // * the worker is unresponsive for some reason and timeouts\n //\n // It is not expected to happen often. Nonetheless, the \"replayable\" status on RUM events is\n // an important part of the Datadog App:\n // * If we have a false positive (we set has_replay: true even if no replay data is present),\n // we might display broken links to the Session Replay player.\n // * If we have a false negative (we don't set has_replay: true even if replay data is\n // available), it is less noticeable because no link will be displayed.\n //\n // Thus, it is better to have false negative, so let's make sure the worker is correctly\n // initialized before advertizing that we are recording.\n //\n // In the future, when the compression worker will also be used for RUM data, this will be\n // less important since no RUM event will be sent when the worker fails to initialize.\n return getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ && state.status === 3 /* RecorderStatus.Started */;\n },\n getReplayStats: function (viewId) {\n return getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ ? getReplayStatsImpl(viewId) : undefined;\n },\n };\n}\n//# sourceMappingURL=recorderApi.js.map","import { createHttpRequest, addTelemetryDebug, canUseEventBridge } from '@datadog/browser-core';\nimport { record } from '../domain/record';\nimport { startSegmentCollection, SEGMENT_BYTES_LIMIT } from '../domain/segmentCollection';\nimport { startRecordBridge } from '../domain/startRecordBridge';\nexport function startRecording(lifeCycle, configuration, sessionManager, viewHistory, encoder, httpRequest) {\n var cleanupTasks = [];\n var reportError = function (error) {\n lifeCycle.notify(13 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: error });\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n };\n var replayRequest = httpRequest ||\n createHttpRequest(configuration, configuration.sessionReplayEndpointBuilder, SEGMENT_BYTES_LIMIT, reportError);\n var addRecord;\n if (!canUseEventBridge()) {\n var segmentCollection = startSegmentCollection(lifeCycle, configuration, sessionManager, viewHistory, replayRequest, encoder);\n addRecord = segmentCollection.addRecord;\n cleanupTasks.push(segmentCollection.stop);\n }\n else {\n ;\n (addRecord = startRecordBridge(viewHistory).addRecord);\n }\n var stopRecording = record({\n emit: addRecord,\n configuration: configuration,\n lifeCycle: lifeCycle,\n viewHistory: viewHistory,\n }).stop;\n cleanupTasks.push(stopRecording);\n return {\n stop: function () {\n cleanupTasks.forEach(function (task) { return task(); });\n },\n };\n}\n//# sourceMappingURL=startRecording.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRecordBridge(viewHistory) {\n var bridge = getEventBridge();\n return {\n addRecord: function (record) {\n // Get the current active view, not at the time of the record, aligning with the segment logic.\n // This approach could potentially associate the record to an incorrect view, in case the record date is in the past (e.g. frustration records).\n // However the risk is minimal. We could address the issue when potential negative impact are identified.\n var view = viewHistory.findView();\n bridge.send('record', record, view.id);\n },\n };\n}\n//# sourceMappingURL=startRecordBridge.js.map","const SPACES = /\\s+/g;\nconst NON_WORD_CHARACTERS = /[^\\w-]+/g;\nconst MULTIPLE_DASHES = /--+/g;\nconst LEADING_DASH = /^-+/;\nconst TRAILING_DASH = /-+$/;\nconst TRAILING_SLASH = /\\/+$/;\n\nexport default {\n SPACES,\n NON_WORD_CHARACTERS,\n MULTIPLE_DASHES,\n LEADING_DASH,\n TRAILING_DASH,\n TRAILING_SLASH,\n};\n","import _ from 'lodash';\nimport { FOX } from 'helpers/ContentHelper';\nimport {\n Events,\n getTealiumPlayerEvents,\n handleAnalytics,\n TrackEvents as GeneralTrackEvents,\n} from '@foxcorp/delta-web-analytics';\nimport { getPlayerPlatform } from './BreakpointHelper';\n\nexport const PLAYER_REFERENCE_DEFAULT = 'default';\nexport const PLAYER_REFERENCE_GLOBAL = 'global';\nexport const PLAYER_REFERENCE_BANNER = 'banner';\nexport const CONTINUOUS = 'continuous';\nexport const LIVE = 'live';\nexport const PLAYER_CONTEXT_LIVE = 'PLAYER_CONTEXT_LIVE';\nexport const PLAYER_CONTEXT_WATCH = 'PLAYER_CONTEXT_WATCH';\nexport const PLAYER_TYPE_DEFAULT = 'standard';\nexport const PLAYER_TYPE_HERO = 'hero';\nexport const PLAYLIST = 'playlist';\nconst PREVIEW_PASS_5_MVPD = 'TempPass_fbcfox_5min';\nconst PREVIEW_PASS_60_MVPD = 'TempPass_fbcfox_60min';\nexport const RESTART = 'restart';\nconst STILL_WATCHING_HIDE_SECONDS = _.get(\n window.ExternalConfig,\n 'stillWatching.messageDurationSeconds',\n 5 * 60,\n);\nconst STILL_WATCHING_HIDE_DURATION = STILL_WATCHING_HIDE_SECONDS\n ? STILL_WATCHING_HIDE_SECONDS * 1000\n : null;\nconst STILL_WATCHING_SHOW_DURATION = 180 * 60 * 1000; // 3 hours\nexport const VOD = 'vod';\nexport const PLAYER_STATES = {\n AD: 'AD',\n BUFFERING: 'BUFFERING',\n COMPLETE: 'COMPLETE',\n IDLE: 'IDLE',\n PAUSED: 'PAUSED',\n PLAYING: 'PLAYING',\n READY: 'READY',\n SEEKING: 'SEEKING',\n STOPPED: 'STOPPED',\n};\nexport const INTERRUPTION_METHODS = {\n BROWSER_ACTION: 'browser action',\n};\nexport const isPlayerTypeHero = type => type === PLAYER_TYPE_HERO;\nexport const getPlayer = (playerReference = PLAYER_REFERENCE_DEFAULT) =>\n _.get(window.player, playerReference, null);\n/**\n * Return the JS path for the player\n * @return {String} - JS path for the player\n */\nexport const getPlayerJs = () => window.ExternalConfig.playerUrl;\n\n/**\n * Return the csid (site section ID) for the player\n * @return {String} - Site section ID for the player\n */\nexport const getPlayerCsid = ({ showCode, isFullEpisode }) => {\n const platform = getPlayerPlatform();\n const videoType = isFullEpisode ? 'full-episodes' : 'clips';\n\n if (!showCode) {\n return null;\n }\n\n return `${platform}.fox.com/${showCode}/${videoType}`;\n};\n\nexport const playerSetUserActive = (playerReference, active = true) => {\n const player = getPlayer(playerReference);\n if (player && player.setUserActive) player.setUserActive(active);\n};\n\nexport const playerControlsVisible = playerReference =>\n _.get(getPlayer(playerReference), 'controlsShowing', true);\n\nexport const getChannelBackgroundUrl = channel => {\n if (!channel) return null;\n const backgroundUrl = window.ExternalConfig.networkFallbackArt.replace('{network}', FOX);\n return backgroundUrl;\n};\n\nexport const playerPause = playerReference => {\n const player = getPlayer(playerReference);\n if (player && player.pause) player.pause();\n};\n\nexport const playerRemove = (playerReference = PLAYER_REFERENCE_DEFAULT) => {\n const player = getPlayer(playerReference);\n if (player && player.remove) {\n player.remove();\n delete window.player[playerReference];\n }\n};\n\nexport const getPlayerState = playerReference =>\n _.get(getPlayer(playerReference), 'state', PLAYER_STATES.STOPPED);\n\nconst playerGetPaused = playerReference => {\n const player = getPlayer(playerReference);\n return player && player.paused;\n};\nexport const getActivePlayer = () => {\n if (_.isEmpty(window.player)) return null;\n let activePlayer = null;\n _.forEach(window.player, (player, reference) => {\n if (!playerGetPaused(reference)) activePlayer = reference;\n });\n return activePlayer;\n};\nexport const playerPlay = playerReference => {\n const players = _.get(window, 'player', {});\n _.forEach(players, (player, reference) => {\n if (!player) return;\n if (reference === playerReference) {\n player.play();\n } else {\n player.pause();\n }\n });\n};\nexport const playerHideControls = playerReference => {\n const player = getPlayer(playerReference);\n if (player) player.hideControls();\n};\nexport const updatePlayerType = (type, playerReference) => {\n const player = getPlayer(playerReference);\n if (player && player.updatePlayerType && type) {\n player.updatePlayerType(type);\n }\n};\nexport const playerSetFullscreen = (val, playerReference) => {\n const player = getPlayer(playerReference);\n if (player) player.player.setFullscreen(val);\n};\nexport function setStillWatchingShowTimeout({ duration, cb }) {\n const { setTimeout } = this.props;\n return setTimeout(\n cb,\n duration ||\n _.get(window, 'context.player.stillWatching.showDuration') ||\n STILL_WATCHING_SHOW_DURATION,\n );\n}\nexport function setStillWatchingHideTimeout({ duration, cb }) {\n const { setTimeout } = this.props;\n return setTimeout(\n cb,\n duration ||\n _.get(window, 'context.player.stillWatching.hideDuration') ||\n STILL_WATCHING_HIDE_DURATION,\n );\n}\nexport function stillWatchingHideCb() {\n this.setState({ showStillWatching: false, isVideoOverlayPresent: false });\n}\nexport function stillWatchingShowCb({ profileId }) {\n const {\n [GeneralTrackEvents.PLAYER_IDLE_PROMPT]: onPlayerIdleAnalytics,\n } = getTealiumPlayerEvents({ profileId });\n onPlayerIdleAnalytics();\n handleAnalytics({ event: Events.IDLE_PROMPT });\n this.setState({ showStillWatching: false, isVideoOverlayPresent: false });\n}\n\nexport const getDuration = playerReference => _.get(getPlayer(playerReference), 'duration');\nconst getSecondsViewed = playerReference =>\n _.round(_.get(getPlayer(playerReference), 'secondsViewed'));\n\nexport const getPercentComplete = ({ playerReference, durationInSeconds }) => {\n const playerDuration = getDuration(playerReference);\n const duration = !playerDuration || playerDuration === 0 ? durationInSeconds : playerDuration;\n const secondsViewed = getSecondsViewed(playerReference);\n if (duration) return _.round((secondsViewed / duration) * 100);\n return null;\n};\n// Gets content position (excluding stitched Ads)\nexport const getContentPosition = playerReference =>\n _.get(getPlayer(playerReference), 'currentTime', 0);\n\nexport const isPreviewPass = mvpdId =>\n mvpdId === PREVIEW_PASS_5_MVPD || mvpdId === PREVIEW_PASS_60_MVPD;\n","/* eslint-disable react/prop-types */\nimport ReactMarkdown from 'react-markdown';\nimport React from 'react';\nimport _ from 'lodash';\n\nconst markdownToComponent = (input, onClickEvent, renderers = {}) => {\n if (!input) return null;\n function defaultLinkRenderer(props) {\n const { children, href } = props;\n const linkName = children[0];\n const onClick = _.get(onClickEvent, linkName, () => {});\n return (\n <a href={href} onClick={() => onClick()} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n );\n }\n return (\n <ReactMarkdown\n source={input}\n escapeHtml\n renderers={{ Link: defaultLinkRenderer, ...renderers }}\n />\n );\n};\n\nexport default markdownToComponent;\n","import {\n FORMAT_UNIX_MS,\n format,\n now,\n stringToDate,\n isAfter,\n differenceInMilliseconds,\n} from 'helpers/DateTimeHelper';\n\nconst ON_NOW = 'ON_NOW';\nconst ON_TONIGHT = 'ON_TONIGHT';\nconst WAS_ON = 'WAS_ON';\n\nexport function getStartTimestamp(listing) {\n const { startDate } = listing;\n return format(stringToDate(startDate), FORMAT_UNIX_MS);\n}\n\nexport function getEndTimestamp(listing) {\n const { endDate } = listing;\n return format(stringToDate(endDate), FORMAT_UNIX_MS);\n}\n\nexport function whenLiveStreamIsOn(listings) {\n const [first] = listings;\n const [last] = listings.slice(-1);\n const timeFirstStart = getStartTimestamp(first);\n const timeLastEnd = getEndTimestamp(last);\n const timeNow = format(now(), FORMAT_UNIX_MS);\n if (timeNow < timeFirstStart) {\n return ON_TONIGHT;\n }\n if (timeNow > timeLastEnd) {\n return WAS_ON;\n }\n return ON_NOW;\n}\n\nfunction isLiveStreamOn(listings) {\n return whenLiveStreamIsOn(listings) === ON_NOW;\n}\n\nexport function getLiveListing(listings) {\n let listing = {};\n listings.forEach(item => {\n if (isLiveStreamOn([item])) {\n listing = item;\n }\n });\n\n return listing;\n}\n\nexport function getLiveProgress(opts = {}) {\n const { startDate, endDate } = opts;\n if (!startDate || !endDate) return null;\n\n const current = now();\n const starts = stringToDate(startDate);\n const ends = stringToDate(endDate);\n\n const videoStarted = isAfter(now(), starts);\n const videoEnded = isAfter(now(), ends);\n\n if (!videoStarted) return 0;\n if (videoEnded) return 100;\n\n const durationMs = differenceInMilliseconds(ends, starts);\n const progressMs = differenceInMilliseconds(current, starts);\n\n let liveProgress = (progressMs / durationMs) * 100;\n if (liveProgress > 100) liveProgress = 100;\n return liveProgress;\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ReactTimeout from 'react-timeout';\nimport { getLiveProgress } from 'helpers/Live';\n\nclass ProgressBar extends Component {\n constructor(props) {\n super(props);\n this.state = {\n liveProgress: null,\n liveInterval: null,\n };\n }\n\n componentDidMount() {\n const { endDate, percentWatched, startDate, setInterval } = this.props;\n if (percentWatched) return;\n\n const liveProgress = getLiveProgress({ startDate, endDate });\n if (liveProgress) {\n const liveInterval = setInterval(() => {\n this.setLiveProgress();\n }, 60000);\n this.setState({ liveProgress, liveInterval });\n }\n }\n\n setLiveProgress() {\n const { clearInterval, startDate, endDate } = this.props;\n const { liveInterval } = this.state;\n const liveProgress = getLiveProgress({ startDate, endDate });\n const nextState = { liveProgress };\n const programEnded = !liveProgress || (liveProgress && liveProgress >= 100);\n const shouldClearInterval = liveInterval && programEnded;\n if (shouldClearInterval) {\n clearInterval(liveInterval);\n nextState.liveInterval = null;\n }\n this.setState(nextState);\n }\n\n render() {\n const { percentWatched, theme } = this.props;\n const { liveProgress } = this.state;\n const percentWatchedUsed = percentWatched && percentWatched > 90 ? 100 : percentWatched;\n const progress = percentWatchedUsed || liveProgress;\n if (!progress) return null;\n /**\n * progress bar will not be visible for suffix 0, because there is no prior knowledge of\n * progress prior 5%. progress - (progress % 6) will make sure that suffix will remain 0\n * until progress is greater than 5%\n * */\n const progressClassSuffix = progress < 6 ? progress - (progress % 6) : progress;\n return (\n <div\n data-test=\"progress-bar\"\n className={classNames(theme.progress, `progress-${progressClassSuffix}`)}\n >\n <div\n className={classNames(theme.done, `done-${progressClassSuffix}`)}\n style={{ width: `${progress}%` }}\n />\n </div>\n );\n }\n}\n\nProgressBar.propTypes = {\n clearInterval: PropTypes.func.isRequired,\n endDate: PropTypes.string,\n percentWatched: PropTypes.number,\n setInterval: PropTypes.func.isRequired,\n startDate: PropTypes.string,\n theme: PropTypes.shape({}),\n};\n\nProgressBar.defaultProps = {\n endDate: null,\n percentWatched: null,\n startDate: null,\n theme: {},\n};\n\nexport default ReactTimeout(ProgressBar);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\nimport Icon from 'components/Icon';\n\nconst ActionButtons = ({ theme, ctaData }) => {\n if (!ctaData || !ctaData.length) return null;\n return (\n <div className={theme.actionButtons}>\n {_.map(ctaData, ({ icon, viewBox, text, url, onClick, externalLink }) => {\n if (!text) return null;\n const iconElement = icon && (\n <Icon className={theme.actionButtonIcon} icon={icon} viewBox={viewBox} color=\"white\" />\n );\n const redirect = externalLink ? { href: url } : { to: url };\n return (\n <Link\n key={text}\n data-test=\"shared-tile-action-button\"\n className={theme.actionButton}\n {...redirect}\n onClick={onClick}\n >\n {iconElement}\n {text}\n </Link>\n );\n })}\n </div>\n );\n};\n\nActionButtons.defaultProps = {\n ctaData: [],\n theme: {},\n};\n\nActionButtons.propTypes = {\n ctaData: PropTypes.arrayOf(PropTypes.shape({})),\n theme: PropTypes.shape({}),\n};\n\nexport default ActionButtons;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Dotdotdot from 'react-dotdotdot';\n\nconst Description = props => {\n const {\n account,\n description,\n descriptionLines,\n itemIndex,\n link,\n name,\n onTileClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n render,\n subtitleText,\n target,\n theme,\n titleText,\n } = props;\n if (!render || !description || description.length === 0) return null;\n const text = descriptionLines ? (\n <Dotdotdot clamp={descriptionLines}>{description}</Dotdotdot>\n ) : (\n description\n );\n if (!link) return <div className={theme.description}>{text}</div>;\n const onClick = () => {\n if (onTileClick)\n onTileClick({\n originalItem,\n itemIndex,\n name,\n percentWatched,\n account,\n recommendationIdData,\n subtitleText,\n titleText,\n });\n };\n\n return (\n <Link to={link} target={target} className={theme.description} onClick={onClick}>\n <p>{text}</p>\n </Link>\n );\n};\n\nDescription.defaultProps = {\n account: null,\n description: null,\n descriptionLines: null,\n itemIndex: null,\n link: null,\n name: null,\n onTileClick: () => {},\n originalItem: null,\n percentWatched: null,\n recommendationIdData: null,\n render: true,\n subtitleText: null,\n target: null,\n theme: {},\n titleText: null,\n};\n\nDescription.propTypes = {\n account: PropTypes.shape({}),\n description: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n descriptionLines: PropTypes.number,\n itemIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n link: PropTypes.string,\n name: PropTypes.string,\n onTileClick: PropTypes.func,\n originalItem: PropTypes.shape({}),\n percentWatched: PropTypes.number,\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n render: PropTypes.bool,\n subtitleText: PropTypes.string,\n target: PropTypes.string,\n theme: PropTypes.shape({}),\n titleText: PropTypes.string,\n};\n\nexport default Description;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Truncate = function (_Component) {\n _inherits(Truncate, _Component);\n\n function Truncate() {\n var _ref;\n\n _classCallCheck(this, Truncate);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = _possibleConstructorReturn(this, (_ref = Truncate.__proto__ || Object.getPrototypeOf(Truncate)).call.apply(_ref, [this].concat(args)));\n\n _this.state = {};\n _this.styles = {\n ellipsis: {\n position: 'fixed',\n visibility: 'hidden',\n top: 0,\n left: 0\n }\n };\n\n\n _this.elements = {};\n\n _this.onResize = _this.onResize.bind(_this);\n _this.onTruncate = _this.onTruncate.bind(_this);\n _this.calcTargetWidth = _this.calcTargetWidth.bind(_this);\n _this.measureWidth = _this.measureWidth.bind(_this);\n _this.getLines = _this.getLines.bind(_this);\n _this.renderLine = _this.renderLine.bind(_this);\n return _this;\n }\n\n _createClass(Truncate, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var text = this.elements.text,\n calcTargetWidth = this.calcTargetWidth,\n onResize = this.onResize;\n\n\n var canvas = document.createElement('canvas');\n this.canvasContext = canvas.getContext('2d');\n\n calcTargetWidth(function () {\n // Node not needed in document tree to read its content\n if (text) {\n text.parentNode.removeChild(text);\n }\n });\n\n window.addEventListener('resize', onResize);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n // Render was based on outdated refs and needs to be rerun\n if (this.props.children !== prevProps.children) {\n this.forceUpdate();\n }\n\n // If the width prop has changed, recalculate size of contents\n if (this.props.width !== prevProps.width) {\n this.calcTargetWidth();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var ellipsis = this.elements.ellipsis,\n onResize = this.onResize,\n timeout = this.timeout;\n\n\n ellipsis.parentNode.removeChild(ellipsis);\n\n window.removeEventListener('resize', onResize);\n\n window.cancelAnimationFrame(timeout);\n }\n\n // Shim innerText to consistently break lines at <br/> but not at \\n\n\n }, {\n key: 'innerText',\n value: function innerText(node) {\n var div = document.createElement('div');\n var contentKey = 'innerText' in window.HTMLElement.prototype ? 'innerText' : 'textContent';\n\n div.innerHTML = node.innerHTML.replace(/\\r\\n|\\r|\\n/g, ' ');\n\n var text = div[contentKey];\n\n var test = document.createElement('div');\n test.innerHTML = 'foo<br/>bar';\n\n if (test[contentKey].replace(/\\r\\n|\\r/g, '\\n') !== 'foo\\nbar') {\n div.innerHTML = div.innerHTML.replace(/<br.*?[\\/]?>/gi, '\\n');\n text = div[contentKey];\n }\n\n return text;\n }\n }, {\n key: 'onResize',\n value: function onResize() {\n this.calcTargetWidth();\n }\n }, {\n key: 'onTruncate',\n value: function onTruncate(didTruncate) {\n var onTruncate = this.props.onTruncate;\n\n\n if (typeof onTruncate === 'function') {\n this.timeout = window.requestAnimationFrame(function () {\n onTruncate(didTruncate);\n });\n }\n }\n }, {\n key: 'calcTargetWidth',\n value: function calcTargetWidth(callback) {\n var target = this.elements.target,\n calcTargetWidth = this.calcTargetWidth,\n canvasContext = this.canvasContext,\n width = this.props.width;\n\n // Calculation is no longer relevant, since node has been removed\n\n if (!target) {\n return;\n }\n\n var targetWidth = width ||\n // Floor the result to deal with browser subpixel precision\n Math.floor(target.parentNode.getBoundingClientRect().width);\n\n // Delay calculation until parent node is inserted to the document\n // Mounting order in React is ChildComponent, ParentComponent\n if (!targetWidth) {\n return window.requestAnimationFrame(function () {\n return calcTargetWidth(callback);\n });\n }\n\n var style = window.getComputedStyle(target);\n\n var font = [style['font-weight'], style['font-style'], style['font-size'], style['font-family']].join(' ');\n\n canvasContext.font = font;\n\n this.setState({\n targetWidth: targetWidth\n }, callback);\n }\n }, {\n key: 'measureWidth',\n value: function measureWidth(text) {\n return this.canvasContext.measureText(text).width;\n }\n }, {\n key: 'ellipsisWidth',\n value: function ellipsisWidth(node) {\n return node.offsetWidth;\n }\n }, {\n key: 'trimRight',\n value: function trimRight(text) {\n return text.replace(/\\s+$/, '');\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var elements = this.elements,\n _props = this.props,\n numLines = _props.lines,\n ellipsis = _props.ellipsis,\n trimWhitespace = _props.trimWhitespace,\n targetWidth = this.state.targetWidth,\n innerText = this.innerText,\n measureWidth = this.measureWidth,\n onTruncate = this.onTruncate,\n trimRight = this.trimRight;\n\n\n var lines = [];\n var text = innerText(elements.text);\n var textLines = text.split('\\n').map(function (line) {\n return line.split(' ');\n });\n var didTruncate = true;\n var ellipsisWidth = this.ellipsisWidth(this.elements.ellipsis);\n\n for (var line = 1; line <= numLines; line++) {\n var textWords = textLines[0];\n\n // Handle newline\n if (textWords.length === 0) {\n lines.push();\n textLines.shift();\n line--;\n continue;\n }\n\n var resultLine = textWords.join(' ');\n\n if (measureWidth(resultLine) <= targetWidth) {\n if (textLines.length === 1) {\n // Line is end of text and fits without truncating\n didTruncate = false;\n\n lines.push(resultLine);\n break;\n }\n }\n\n if (line === numLines) {\n // Binary search determining the longest possible line inluding truncate string\n var textRest = textWords.join(' ');\n\n var lower = 0;\n var upper = textRest.length - 1;\n\n while (lower <= upper) {\n var middle = Math.floor((lower + upper) / 2);\n\n var testLine = textRest.slice(0, middle + 1);\n\n if (measureWidth(testLine) + ellipsisWidth <= targetWidth) {\n lower = middle + 1;\n } else {\n upper = middle - 1;\n }\n }\n\n var lastLineText = textRest.slice(0, lower);\n\n if (trimWhitespace) {\n lastLineText = trimRight(lastLineText);\n\n // Remove blank lines from the end of text\n while (!lastLineText.length && lines.length) {\n var prevLine = lines.pop();\n\n lastLineText = trimRight(prevLine);\n }\n }\n\n resultLine = React.createElement(\n 'span',\n null,\n lastLineText,\n ellipsis\n );\n } else {\n // Binary search determining when the line breaks\n var _lower = 0;\n var _upper = textWords.length - 1;\n\n while (_lower <= _upper) {\n var _middle = Math.floor((_lower + _upper) / 2);\n\n var _testLine = textWords.slice(0, _middle + 1).join(' ');\n\n if (measureWidth(_testLine) <= targetWidth) {\n _lower = _middle + 1;\n } else {\n _upper = _middle - 1;\n }\n }\n\n // The first word of this line is too long to fit it\n if (_lower === 0) {\n // Jump to processing of last line\n line = numLines - 1;\n continue;\n }\n\n resultLine = textWords.slice(0, _lower).join(' ');\n textLines[0].splice(0, _lower);\n }\n\n lines.push(resultLine);\n }\n\n onTruncate(didTruncate);\n\n return lines;\n }\n }, {\n key: 'renderLine',\n value: function renderLine(line, i, arr) {\n if (i === arr.length - 1) {\n return React.createElement(\n 'span',\n { key: i },\n line\n );\n } else {\n var br = React.createElement('br', { key: i + 'br' });\n\n if (line) {\n return [React.createElement(\n 'span',\n { key: i },\n line\n ), br];\n } else {\n return br;\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var target = this.elements.target,\n _props2 = this.props,\n children = _props2.children,\n ellipsis = _props2.ellipsis,\n lines = _props2.lines,\n spanProps = _objectWithoutProperties(_props2, ['children', 'ellipsis', 'lines']),\n targetWidth = this.state.targetWidth,\n getLines = this.getLines,\n renderLine = this.renderLine,\n onTruncate = this.onTruncate;\n\n var text = void 0;\n\n var mounted = !!(target && targetWidth);\n\n if (typeof window !== 'undefined' && mounted) {\n if (lines > 0) {\n text = getLines().map(renderLine);\n } else {\n text = children;\n\n onTruncate(false);\n }\n }\n\n delete spanProps.onTruncate;\n delete spanProps.trimWhitespace;\n\n return React.createElement(\n 'span',\n _extends({}, spanProps, { ref: function ref(targetEl) {\n _this2.elements.target = targetEl;\n } }),\n React.createElement(\n 'span',\n null,\n text\n ),\n React.createElement(\n 'span',\n { ref: function ref(textEl) {\n _this2.elements.text = textEl;\n } },\n children\n ),\n React.createElement(\n 'span',\n { ref: function ref(ellipsisEl) {\n _this2.elements.ellipsis = ellipsisEl;\n }, style: this.styles.ellipsis },\n ellipsis\n )\n );\n }\n }]);\n\n return Truncate;\n}(Component);\n\nTruncate.propTypes = {\n children: PropTypes.node,\n ellipsis: PropTypes.node,\n lines: PropTypes.oneOfType([PropTypes.oneOf([false]), PropTypes.number]),\n trimWhitespace: PropTypes.bool,\n width: PropTypes.number,\n onTruncate: PropTypes.func\n};\nTruncate.defaultProps = {\n children: '',\n ellipsis: '…',\n lines: 1,\n trimWhitespace: false,\n width: 0\n};\nexport default Truncate;\n;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Truncate from 'react-truncate';\n\nclass ReadMore extends Component {\n constructor(...args) {\n super(...args);\n\n this.state = {\n expanded: false,\n truncated: false,\n };\n\n this.handleTruncate = this.handleTruncate.bind(this);\n this.toggleLines = this.toggleLines.bind(this);\n }\n\n handleTruncate(truncated) {\n const { truncated: lastTruncated } = this.state;\n if (truncated !== lastTruncated) {\n this.setState({\n truncated,\n });\n }\n }\n\n toggleLines(event) {\n const { expanded } = this.state;\n event.preventDefault();\n this.setState({\n expanded: !expanded,\n });\n }\n\n render() {\n const { theme, children, moreText, lessText, lines, className } = this.props;\n const { expanded, truncated } = this.state;\n\n return (\n <span className={className}>\n <Truncate\n lines={!expanded && lines}\n ellipsis={\n <span className={theme.buttonContainer}>\n {'... '}\n <a href=\"#\" className={theme.button} onClick={this.toggleLines}>\n {moreText}\n </a>\n </span>\n }\n width={0}\n onTruncate={this.handleTruncate}\n >\n <span className={theme.children}>{children}</span>\n {!truncated && expanded && (\n <span className={theme.buttonContainer}>\n <a href=\"#\" className={theme.button} onClick={this.toggleLines}>\n {lessText}\n </a>\n </span>\n )}\n </Truncate>\n </span>\n );\n }\n}\n\nReadMore.defaultProps = {\n lines: 3,\n className: '',\n};\n\nReadMore.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n lines: PropTypes.number,\n moreText: PropTypes.string.isRequired,\n lessText: PropTypes.string.isRequired,\n theme: PropTypes.shape({}).isRequired,\n};\n\nexport default ReadMore;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Dotdotdot from 'react-dotdotdot';\nimport classNames from 'classnames';\nimport ReadMore from 'components/ReadMore';\nimport { SegmentUiElements } from '@foxcorp/delta-web-analytics';\nimport { noop } from 'helpers/GlobalHelper';\n\nconst Subtitle = props => {\n const {\n account,\n link,\n isDisabled,\n isRedirect,\n name,\n onTileClick,\n onTileMouseDown,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitle,\n subtitleLines,\n subtitleText: subtitleTextProp,\n target,\n titleText,\n theme,\n truncateSubtitle,\n } = props;\n let subtitleLink = link;\n const subTitleClasses = [theme.subtitle];\n if (!subtitle || subtitle.length === 0) return null;\n let subtitleText;\n if (truncateSubtitle) {\n subtitleText = (\n <ReadMore moreText=\"More\" lessText=\"Less\" lines={subtitleLines || 2} theme={theme}>\n {subtitle}\n </ReadMore>\n );\n } else {\n subtitleText = subtitleLines ? (\n <Dotdotdot clamp={subtitleLines}>{subtitle}</Dotdotdot>\n ) : (\n subtitle\n );\n }\n if (!link || truncateSubtitle || isDisabled) {\n return <div className={classNames([theme.subtitle, theme.disabled])}>{subtitleText}</div>;\n }\n if (isRedirect) {\n subtitleLink = null;\n subTitleClasses.push(theme.redirectLink);\n }\n const onClick = () => {\n if (onTileClick) {\n onTileClick({\n originalItem,\n name,\n percentWatched,\n account,\n recommendationIdData,\n subtitleText: subtitleTextProp,\n titleText,\n uiElement: SegmentUiElements.SERIES_EPISODE,\n });\n }\n };\n\n const onMouseDown = e =>\n e.button === 1 ? onTileMouseDown({ uiElement: SegmentUiElements.SERIES_EPISODE }) : noop;\n\n return (\n <Link\n to={subtitleLink}\n target={target}\n className={classNames(subTitleClasses)}\n onClick={onClick}\n onMouseDown={onMouseDown}\n >\n {subtitleText}\n </Link>\n );\n};\n\nSubtitle.defaultProps = {\n account: null,\n isDisabled: false,\n isRedirect: false,\n link: null,\n name: null,\n onTileClick: null,\n originalItem: {},\n percentWatched: null,\n recommendationIdData: null,\n subtitle: null,\n subtitleLines: null,\n subtitleText: null,\n target: null,\n theme: {},\n titleText: null,\n truncateSubtitle: null,\n};\n\nSubtitle.propTypes = {\n account: PropTypes.shape({}),\n isDisabled: PropTypes.bool,\n isRedirect: PropTypes.bool,\n link: PropTypes.string,\n name: PropTypes.string,\n onTileClick: PropTypes.func,\n onTileMouseDown: PropTypes.func,\n originalItem: PropTypes.shape({}),\n percentWatched: PropTypes.number,\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n subtitle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n subtitleLines: PropTypes.number,\n subtitleText: PropTypes.string,\n target: PropTypes.string,\n titleText: PropTypes.string,\n truncateSubtitle: PropTypes.bool,\n theme: PropTypes.shape({}),\n};\n\nexport default Subtitle;\n","import _ from 'lodash';\n\nconst basicComparisonCustomizer = (val1, val2) => {\n if (_.isFunction(val1) && _.isFunction(val2)) return true;\n if (_.isObject(val1) && _.isObject(val2)) {\n const val1Values = _.values(val1).toString();\n const val2Values = _.values(val2).toString();\n return val1Values === val2Values;\n }\n\n return undefined;\n};\n\nconst handleShouldComponentUpdate = (opts = {}) => {\n const { props, nextProps, state, nextState, customizer } = opts;\n const comparisonCustomizer = customizer || basicComparisonCustomizer;\n\n if (!_.isEqualWith(props, nextProps, comparisonCustomizer)) return true;\n if (!_.isEqualWith(state, nextState, comparisonCustomizer)) return true;\n\n return false;\n};\n\nexport default handleShouldComponentUpdate;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport classNames from 'classnames';\nimport Hls from 'hls.js';\nimport _ from 'lodash';\nimport handleShouldComponentUpdate from 'helpers/Lifecycle';\nimport Style from './VideoTile.module.scss';\n\nconst TRANSITION_TIME_IN = 500;\nconst TRANSITION_TIME_OUT = 500;\nconst { backgroundVideoLoops } = window.ExternalConfig;\n\n/**\n * VideoTile Component\n * @param {String} externalId - key for the VideoPlayerItem\n * @returns {Component} - React Component\n */\nclass VideoTile extends Component {\n constructor(props) {\n super(props);\n this.state = {\n videoElement: null,\n hlsObjects: [this.createNewHls()],\n initialized: false,\n loaded: true,\n transition: false,\n videoImage: null,\n videoTagError: false,\n videoPlayCount: 1,\n };\n\n this.videoTag = React.createRef();\n this.videoTagListener = this.videoTagListener.bind(this);\n }\n\n componentDidMount() {\n const { video, load, onMount, play, transitionImage } = this.props;\n if (onMount) onMount();\n if (load) {\n if (video) {\n this.loadVideo({ play, video });\n } else if (transitionImage) {\n const videoElement = this.getVideoElement();\n this.setState({ videoElement, transition: true }, this.transitionImageStart);\n }\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { play, video, image, transitionImage, setTimeout } = this.props;\n const {\n play: nextPlay,\n video: nextVideo,\n image: nextImage,\n transitionImage: nextTransitionImage,\n } = nextProps;\n const { videoElement, loaded, initialized } = this.state;\n\n // Load video right away if it's the first one\n if (!initialized && nextVideo) {\n this.loadVideo({ play: nextPlay, video: nextVideo });\n this.setState({ initialized: true });\n return;\n }\n\n // Start hero transition if the source is changing\n if (video !== nextVideo || image !== nextImage || transitionImage !== nextTransitionImage) {\n this.setState({ transition: true });\n if (nextVideo) {\n // If transitioning to a video, load video before completing transition\n setTimeout(this.transitionStart.bind(this), TRANSITION_TIME_IN);\n } else {\n // Otherwise, unload the video and start the end transition\n setTimeout(this.transitionImageStart.bind(this), TRANSITION_TIME_IN);\n }\n } else if (play !== nextPlay && loaded) {\n if (!nextPlay) {\n if (videoElement) {\n videoElement.pause();\n this.handleCallback('paused');\n }\n } else {\n this.playVideoSafely(videoElement);\n this.handleCallback('playing');\n }\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const options = {\n props: this.props,\n state: this.state,\n nextProps,\n nextState,\n };\n return handleShouldComponentUpdate(options);\n }\n\n componentWillUnmount() {\n const { onUnmount } = this.props;\n if (onUnmount) onUnmount();\n }\n\n getHlsObject() {\n const { hlsObjects } = this.state;\n return _.last(hlsObjects);\n }\n\n getVideoElement() {\n let { videoElement } = this.state;\n videoElement = this.videoTag.current;\n videoElement.addEventListener('error', this.videoTagListener, false);\n videoElement.addEventListener('loadeddata', this.videoTagListener, false);\n if (backgroundVideoLoops !== 0)\n videoElement.addEventListener('seeked', this.videoTagListener, false);\n return videoElement;\n }\n\n loadVideo({ video }) {\n if (!video) return;\n\n const hlsObject = this.getHlsObject();\n const { videoElement: oldVideoElement } = this.state;\n const videoElement = this.getVideoElement();\n\n videoElement.setAttribute('src', video);\n hlsObject.loadSource(video);\n hlsObject.attachMedia(videoElement);\n\n if (!oldVideoElement) this.setState({ videoElement });\n }\n\n listenerAttachedVideo() {\n const { setTimeout } = this.props;\n setTimeout(this.transitionEnd.bind(this), TRANSITION_TIME_OUT);\n }\n\n handleParsedVideo() {\n const { play, timer: currentTimer, setTimeout } = this.props;\n let timer = parseInt(currentTimer, 10);\n timer = Number.isNaN(timer) ? 0 : timer * 1000;\n\n if (play) {\n setTimeout(() => {\n const { play: playNow } = this.props;\n if (playNow) {\n this.playVideoSafely();\n this.handleCallback('playing');\n }\n }, timer);\n } else {\n this.handleCallback('loaded');\n }\n this.setState({ loaded: true });\n }\n\n playVideoSafely(videoElement) {\n const { videoElement: currentVideoElement } = this.state;\n const video = videoElement || currentVideoElement;\n const playPromise = video.play();\n if (playPromise) {\n playPromise.catch(() => {\n /* prevents the video from throwing an error. */\n });\n }\n }\n\n transitionImageStart() {\n const { video, transitionImage, setTimeout } = this.props;\n const { hlsObjects } = this.state;\n const hlsObject = this.getHlsObject();\n hlsObject.destroy();\n const videoElement = this.getVideoElement();\n const newVideoImage = hlsObject && video ? null : transitionImage;\n const newHlsObject = this.createNewHls();\n videoElement.src = '';\n this.loadPoster({ poster: newVideoImage });\n videoElement.load();\n\n const newHlsObjects = _.concat(hlsObjects, newHlsObject);\n this.setState({ videoImage: newVideoImage, videoElement, hlsObjects: newHlsObjects });\n setTimeout(this.transitionEnd.bind(this), TRANSITION_TIME_OUT);\n }\n\n transitionEnd() {\n this.setState({ transition: false });\n }\n\n transitionStart() {\n const { video } = this.props;\n const { videoElement, hlsObjects } = this.state;\n const hlsObject = this.getHlsObject();\n hlsObject.destroy();\n const newHlsObject = this.createNewHls();\n if (!newHlsObject) return;\n videoElement.setAttribute('src', video);\n // videoElement.setAttribute('style', null);\n newHlsObject.loadSource(video);\n newHlsObject.attachMedia(videoElement);\n\n const newHlsObjects = _.concat(hlsObjects, newHlsObject);\n this.setState({ videoImage: null, videoElement, hlsObjects: newHlsObjects });\n }\n\n createNewHls() {\n const config = {\n maxBufferHole: 0,\n maxLoadingDelay: 1000,\n };\n const newHlsObject = new Hls(config);\n const listenerParsedVideo = e => this.handleParsedVideo(e);\n const listenerAttachedVideo = e => this.listenerAttachedVideo(e);\n newHlsObject.on(Hls.Events.MANIFEST_PARSED, listenerParsedVideo);\n newHlsObject.on(Hls.Events.MEDIA_ATTACHED, listenerAttachedVideo);\n return newHlsObject;\n }\n\n videoTagListener = event => {\n if (!event) return;\n\n const { videoElement } = this.state;\n let { videoPlayCount } = this.state;\n\n switch (event.type) {\n case 'loadeddata':\n this.setState({ videoTagError: false, videoPlayCount: 1 }, () => {\n this.handleParsedVideo(event);\n this.listenerAttachedVideo(event);\n });\n break;\n case 'error':\n this.setState({ videoTagError: true, videoPlayCount: 1 });\n break;\n case 'seeked':\n if (videoPlayCount > backgroundVideoLoops) {\n this.setState({ videoPlayCount: 1 });\n videoElement.pause();\n this.handleCallback('paused');\n }\n videoPlayCount += 1;\n this.setState({ videoPlayCount });\n break;\n default:\n // do nothing\n }\n };\n\n loadPoster({ poster }) {\n if (!poster) return;\n const { videoElement: oldVideoElement } = this.state;\n const videoElement = this.getVideoElement();\n if (!oldVideoElement) this.setState({ videoElement });\n }\n\n handleCallback(...args) {\n const { callback } = this.props;\n const cb = callback || null;\n if (cb && typeof cb === 'function') {\n cb.apply(cb, args);\n }\n }\n\n renderPoster() {\n const { altText, video, image, transitionImage, renderImage, videoPosterStyle } = this.props;\n const { videoImage } = this.state;\n if (!image) return null;\n\n const isVideoPoster = video || transitionImage;\n const posterSrc = videoImage || image;\n const posterContainerStyle = classNames(\n isVideoPoster ? Style.videoPosterContainer : Style.poster,\n videoPosterStyle,\n );\n if (!isVideoPoster) {\n return (\n <div className={posterContainerStyle}>{renderImage({ alt: altText, src: posterSrc })}</div>\n );\n }\n return (\n <div className={posterContainerStyle}>\n {renderImage({ alt: altText, className: Style.videoPoster, src: posterSrc })}\n </div>\n );\n }\n\n render() {\n const { id, video, play, loop, fadeImageToVideo, videoStyle } = this.props;\n const { loaded, transition, videoTagError } = this.state;\n\n const containerClassName = classNames(Style.videoContainer, Style.container);\n const videoClassName = classNames(Style.player, videoStyle);\n const wrapperClassName = classNames(\n Style.wrapper,\n loaded ? Style.videoLoaded : null,\n video ? Style.wrapperVideo : Style.wrapperPoster,\n fadeImageToVideo ? Style.fadeImageToVideo : null,\n transition || videoTagError ? Style.transition : null,\n );\n\n const videoProps = {\n id,\n muted: 'muted',\n playsInline: 'playsInline',\n };\n if (video && loop) videoProps.loop = 'loop';\n if (video && play) videoProps.autoPlay = 'autoPlay';\n\n return (\n <div className={containerClassName}>\n <div className={wrapperClassName}>\n {this.renderPoster()}\n <video ref={this.videoTag} className={videoClassName} {...videoProps} />\n </div>\n </div>\n );\n }\n}\n\nVideoTile.defaultProps = {\n altText: '',\n callback: () => {},\n fadeImageToVideo: true,\n id: 'video-hero',\n image: null,\n load: null,\n loop: true,\n onMount: () => {},\n onUnmount: () => {},\n play: null,\n renderImage: () => {},\n timer: null,\n transitionImage: null,\n video: null,\n videoPosterStyle: '',\n videoStyle: '',\n};\n\nVideoTile.propTypes = {\n altText: PropTypes.string,\n callback: PropTypes.func,\n fadeImageToVideo: PropTypes.bool,\n id: PropTypes.string,\n image: PropTypes.string,\n load: PropTypes.bool,\n loop: PropTypes.bool,\n onMount: PropTypes.func,\n onUnmount: PropTypes.func,\n play: PropTypes.bool,\n renderImage: PropTypes.func,\n setTimeout: PropTypes.func.isRequired,\n timer: PropTypes.number,\n transitionImage: PropTypes.string,\n video: PropTypes.string,\n videoPosterStyle: PropTypes.string,\n videoStyle: PropTypes.string,\n};\n\nexport default ReactTimeout(VideoTile);\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport VideoTile from 'components/VideoTile';\n\nclass HoverVideoTile extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n initalRender: false,\n };\n }\n\n static getDerivedStateFromProps({ rendered }) {\n if (rendered) {\n return { initalRender: true };\n }\n return null;\n }\n\n render() {\n const { altText, rendered, renderImage, video, image, play } = this.props;\n const { initalRender } = this.state;\n if (!initalRender) return null;\n return (\n <span style={{ display: rendered ? 'block' : 'none' }}>\n <VideoTile\n altText={altText}\n data-test=\"tile-video\"\n id={`tile-video-${video}`}\n image={image}\n load\n loop\n play={play}\n renderImage={renderImage}\n timer={0}\n video={video}\n />\n </span>\n );\n }\n}\n\nHoverVideoTile.defaultProps = {\n altText: '',\n image: null,\n play: null,\n rendered: false,\n renderImage: () => {},\n video: null,\n};\n\nHoverVideoTile.propTypes = {\n altText: PropTypes.string,\n image: PropTypes.string,\n play: PropTypes.bool,\n rendered: PropTypes.bool,\n renderImage: PropTypes.func,\n video: PropTypes.string,\n};\n\nexport default HoverVideoTile;\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nconst ImageTile = ({\n altText = '',\n image,\n isCollectionCategoryList = false,\n isHover = false,\n isTileGrid,\n name,\n preventLazyLoad,\n rendered = false,\n renderImage,\n theme,\n}) => {\n if (!rendered) return null;\n const imageTagClasses = [\n theme.image,\n isCollectionCategoryList && theme.categoryListImage,\n isTileGrid ? theme.gridImage : null,\n ];\n const tileImage = renderImage({\n alt: altText || name,\n className: classNames(imageTagClasses),\n dataTest: 'tile-image',\n isHover,\n preventLazyLoad,\n style: {\n background:\n 'linear-gradient(0deg, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0) 80%, rgba(0, 0, 0, 0))',\n },\n src: image,\n });\n return tileImage;\n};\n\nImageTile.propTypes = {\n altText: PropTypes.string,\n image: PropTypes.string.isRequired,\n isHover: PropTypes.bool,\n name: PropTypes.string,\n preventLazyLoad: PropTypes.bool,\n rendered: PropTypes.bool.isRequired,\n renderImage: PropTypes.func.isRequired,\n theme: PropTypes.shape({}),\n};\nexport default ImageTile;\n","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgBtn(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.4 47.4H34.6v5.552h2.558V63.72H34.6v5.552h16.381c3.135 0 5.677-2.55 5.677-5.695a5.693 5.693 0 00-4.139-5.484v-.033c2.812-1.19 4.131-4.443 2.945-7.265a5.527 5.527 0 00-5.063-3.391V47.4zm-.582 1.094l.578.004a4.452 4.452 0 014.411 4.45c0 3.882-3.714 4.838-3.714 4.838v.578s4.475.991 4.475 5.21c-.003 2.54-2.055 4.6-4.587 4.602h-15.29v-3.362h2.559V51.858H35.69v-3.364h14.127zm41.998 6.36v-1.919c-.001-3.056-2.47-5.533-5.516-5.534H75.668c-3.047 0-5.516 2.477-5.517 5.534v10.802c.001 3.056 2.47 5.533 5.517 5.532H86.3c3.046 0 5.515-2.476 5.516-5.532v-7.38h-8.97v3.957h1.861v2.67a.727.727 0 01-.725.73h-5.997a.726.726 0 01-.725-.728V53.676c0-.402.324-.728.725-.728h5.997c.4 0 .726.326.725.728v1.177h7.109zm-22.308 8.863h-2.559V47.4h-9.647v5.552h2.558v10.765h-2.558v5.552h12.206v-5.552zm-24.844-.377h3.573v-2.89h-3.573v2.89zm3.753 1.095h-4.844v-5.08h4.844c.503.001.91.41.91.914v3.25a.914.914 0 01-.91.916zm-3.753-8.728h3.376v-2.404h-3.376v2.404zm3.555 1.095h-4.646V52.21h4.646c.503 0 .911.41.912.915v2.764a.915.915 0 01-.912.914zm45.735 25.069v-1.504h.297l.418 1.209.422-1.209h.297v1.504h-.223v-1.145l-.407 1.145h-.188l-.408-1.141v1.14h-.208zm-.935 0v-1.309h-.454v-.195h1.137v.195h-.457v1.309h-.226zm-8.433 0v-8.16h2.198v2.955l2.241-2.955h2.55l-2.737 3.22 2.978 4.94h-2.483l-1.923-3.264-.626.728v2.536h-2.198zm-5.747-4.51h.944c.901 0 1.297-.253 1.297-.937s-.396-.927-1.297-.927h-.944v1.865zm-2.154 4.51v-8.16h3.176c2.087 0 3.362.696 3.362 2.657 0 1.279-.539 2.018-1.605 2.381l1.726 3.122h-2.33l-1.57-2.833h-.605v2.833h-2.154zm-3.33-4.08c0-1.5-.648-2.414-1.79-2.414-1.154 0-1.802.914-1.802 2.414s.648 2.47 1.802 2.47c1.142 0 1.79-.97 1.79-2.47zm-5.79 0c0-2.988 2.033-4.234 4-4.234 1.956 0 3.988 1.246 3.988 4.234 0 2.987-2.032 4.234-3.988 4.234-1.967 0-4-1.247-4-4.234zm-8.373 4.08l-2.165-8.16h2.209l.692 3.21c.15.554.267 1.118.351 1.686h.022c.08-.564.19-1.124.33-1.676l.67-3.22h1.989l.725 3.23c.154.548.276 1.104.363 1.666h.022c.073-.553.176-1.1.308-1.642l.648-3.254h2.01l-2.11 8.16h-1.834l-1.11-5.106h-.022l-1.23 5.106h-1.868zm-7.044 0v-6.33h-2.34v-1.83h6.878v1.83h-2.34v6.33h-2.198zm-8.856 0v-8.16h5.801v1.83h-3.604v1.324h2.571v1.72H45.49v1.511h3.79v1.775h-5.987zm-8.692 0v-8.16h2.165l2.978 4.576h.022v-4.576h2.01v8.16h-2.032l-3.11-4.565h-.022v4.565H34.6z\",\n fill: \"currentColor\",\n fillRule: \"nonzero\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2aWV3Qm94PSIwIDAgMTMwIDEzMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT5CVE48L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsX0xvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTIwLjAwMDAwMCwgLTI3MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkJUTiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTIwLjAwMDAwMCwgMjcxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS42MDAwMDAsIDIyLjQwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ29zL05ldHdvcmsvQmlnLU5ldHdvcmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE1LjgwMDcxNjksMCBMMCwwIEwwLDUuNTUyMTg4ODggTDIuNTU4Mzk3NzgsNS41NTIxODg4OCBMMi41NTgzOTc3OCwxNi4zMTg3NTQyIEwwLDE2LjMxODc1NDIgTDAsMjEuODcwNTk4NyBMMTYuMzgxMjM0MSwyMS44NzA1OTg3IEMxOS41MTU2ODM2LDIxLjg3MTI4NzggMjIuMDU3NTkzMywxOS4zMjE4Mzc5IDIyLjA1ODI4MDQsMTYuMTc2MzkwNCBDMjIuMDU4NjIzOCwxMy42MjM4MzgyIDIwLjM2NzIyMzMsMTEuMzgyOTAwNyAxNy45MTkwODk1LDEwLjY5MjEwODcgTDE3LjkxOTA4OTUsMTAuNjU4NjcyMiBDMjAuNzMxMzM0Nyw5LjQ2ODc0NTA1IDIyLjA1MDAzNjMsNi4yMTYwOTM3NCAyMC44NjQyNjk3LDMuMzkzOTgxMDEgQzIwLjAwNDgyOTQsMS4zNDg0OTIxNCAxOC4wMTI1MjE4LDAuMDE0NDc3Njk1MyAxNS44MDA3MTY5LDAuMDAyNzU3NjU4NTQgTDE1LjgwMDcxNjksMCBaIE0xNS4yMTgxMzg3LDEuMDk0NDQzMzkgTDE1Ljc5NTU2NDMsMS4wOTc1NDU3NSBDMTguMjM0MDgwMiwxLjExNDc4MTEgMjAuMjAyNjg2MiwzLjEwMTMyNTEyIDIwLjIwNzQ5NTIsNS41NDgzOTcxMiBDMjAuMjA3NDk1Miw5LjQyOTc5MzIzIDE2LjQ5Mjg3MiwxMC4zODYwMDkzIDE2LjQ5Mjg3MiwxMC4zODYwMDkzIEwxNi40OTI4NzIsMTAuOTY0MDgyMiBDMTYuNDkyODcyLDEwLjk2NDA4MjIgMjAuOTY3NjYzNiwxMS45NTU0NTgzIDIwLjk2NzY2MzYsMTYuMTczNjMyOCBDMjAuOTY0NTcyMSwxOC43MTQ0NjQ5IDE4LjkxMjgzODcsMjAuNzczMDUyNiAxNi4zODEyMzQxLDIwLjc3NTgxMDMgTDEuMDkwOTYwMTcsMjAuNzc1ODEwMyBMMS4wOTA5NjAxNywxNy40MTM1NDIzIEwzLjY0OTcwMTQ0LDE3LjQxMzU0MjMgTDMuNjQ5NzAxNDQsNC40NTc3NDU0OSBMMS4wOTA5NjAxNyw0LjQ1Nzc0NTQ5IEwxLjA5MDk2MDE3LDEuMDk0NDQzMzkgTDE1LjIxODEzODcsMS4wOTQ0NDMzOSBMMTUuMjE4MTM4NywxLjA5NDQ0MzM5IFogTTU3LjIxNTk4MzEsNy40NTMyNDU2OCBMNTcuMjE1OTgzMSw1LjUzNDk1MzU3IEM1Ny4yMTQ2MDkyLDIuNDc4Nzg1MDQgNTQuNzQ1ODY1NCwwLjAwMTcyMzU1NDYgNTEuNzAwMzgyNCwwLjAwMTM3ODgwNTI1IEw0MS4wNjc2NDI5LDAuMDAxMzc4ODA1MjUgQzM4LjAyMTQ3MzMsMC4wMDEzNzg4MDUyNSAzNS41NTIzODU4LDIuNDc4NDQwMjkgMzUuNTUxMzU1NCw1LjUzNDk1MzU3IEwzNS41NTEzNTU0LDE2LjMzNzAyMzcgQzM1LjU1MjM4NTgsMTkuMzkzMTkyMiAzOC4wMjE4MTY4LDIxLjg2OTkwOSA0MS4wNjc2NDI5LDIxLjg2OTIxOTkgTDUxLjcwMDM4MjQsMjEuODY5MjE5OSBDNTQuNzQ1NTIxNiwyMS44NjkyMTk5IDU3LjIxNDYwOTIsMTkuMzkyODQ3NSA1Ny4yMTU5ODMxLDE2LjMzNzAyMzcgTDU3LjIxNTk4MzEsOC45NTY4NTU3NyBMNDguMjQ1NDQ2Myw4Ljk1Njg1NTc3IEw0OC4yNDU0NDYzLDEyLjkxNDA4NzMgTDUwLjEwNzIyMzcsMTIuOTE0MDg3MyBMNTAuMTA3MjIzNywxNS41ODQ4NzM5IEM1MC4xMDc1NjY5LDE1Ljk4NjgwMTggNDkuNzgyOTU4MSwxNi4zMTI4OTQyIDQ5LjM4MjQzNTUsMTYuMzEzMjM4OSBMNDkuMzgxNzQ4NSwxNi4zMTMyMzg5IEw0My4zODUyNDYzLDE2LjMxMzIzODkgQzQyLjk4NDcyMzgsMTYuMzEzMjM4OSA0Mi42NTk3NzE1LDE1Ljk4NzgzNTkgNDIuNjU5NzcxNSwxNS41ODU5MDggTDQyLjY1OTc3MTUsMTUuNTg0ODczOSBMNDIuNjU5NzcxNSw2LjI3NjQxNzQzIEM0Mi42NTkwODQ1LDUuODc0NDg5NTYgNDIuOTgzNjkzMiw1LjU0ODA1MjQyIDQzLjM4NDU1OTMsNS41NDc3MDc3MSBMNDMuMzg1MjQ2Myw1LjU0NzcwNzcxIEw0OS4zODE3NDg1LDUuNTQ3NzA3NzEgQzQ5Ljc4MjYxNDksNS41NDc3MDc3MSA1MC4xMDc1NjY5LDUuODc0MTQ0ODUgNTAuMTA3MjIzNyw2LjI3NjQxNzQzIEw1MC4xMDcyMjM3LDYuMjc2NDE3NDMgTDUwLjEwNzIyMzcsNy40NTMyNDU2OCBMNTcuMjE1OTgzMSw3LjQ1MzI0NTY4IFogTTM0LjkwNzYzMzksMTYuMzE3Mzc1NCBMMzIuMzQ5MjM2MSwxNi4zMTczNzU0IEwzMi4zNDkyMzYxLDAgTDIyLjcwMjAwMTcsMCBMMjIuNzAyMDAxNyw1LjU1MTg0NDE4IEwyNS4yNjAzOTk1LDUuNTUxODQ0MTggTDI1LjI2MDM5OTUsMTYuMzE3Mzc1NCBMMjIuNzAyMDAxNywxNi4zMTczNzU0IEwyMi43MDIwMDE3LDIxLjg2OTIxOTYgTDM0LjkwNzYzMzksMjEuODY5MjE5NiBMMzQuOTA3NjMzOSwxNi4zMTczNzU0IFogTTEwLjA2NDI0NSwxNS45NDAyNjY0IEwxMy42MzY2NTg2LDE1Ljk0MDI2NjQgTDEzLjYzNjY1ODYsMTMuMDQ5OTAxNyBMMTAuMDY0MjQ1LDEzLjA0OTkwMTcgTDEwLjA2NDI0NSwxNS45NDAyNjY0IFogTTEzLjgxNzM0MDMsMTcuMDM0NzA5OCBMOC45NzMyODQ3NiwxNy4wMzQ3MDk4IEw4Ljk3MzI4NDc2LDExLjk1NTQ1ODMgTDEzLjgxNzM0MDMsMTEuOTU1NDU4MyBDMTQuMzE5ODgyNywxMS45NTYxNDc3IDE0LjcyNzI3NTMsMTIuMzY0OTY5NyAxNC43Mjc2MTg4LDEyLjg2OTI3NTUgTDE0LjcyNzYxODgsMTYuMTE5NTEzOCBDMTQuNzI3Mjc1MywxNi42MjQxNjQyIDE0LjMyMDIyNjIsMTcuMDMzNjc1NyAxMy44MTczNDAzLDE3LjAzNDcwOTggTDEzLjgxNzM0MDMsMTcuMDM0NzA5OCBaIE0xMC4wNjQyNDUsOC4zMDc0Mjg2IEwxMy40Mzk4MzIzLDguMzA3NDI4NiBMMTMuNDM5ODMyMyw1LjkwMzQ0NDkgTDEwLjA2NDI0NSw1LjkwMzQ0NDkgTDEwLjA2NDI0NSw4LjMwNzQyODYgWiBNMTMuNjE5MTQwMSw5LjQwMjIxNjY5IEw4Ljk3MzI4NDc2LDkuNDAyMjE2NjkgTDguOTczMjg0NzYsNC44MDg2NTY4MSBMMTMuNjE5MTQwMSw0LjgwODY1NjgxIEMxNC4xMjIzNjk1LDQuODA5MzQ2MjEgMTQuNTMwMTA1NSw1LjIxODUxMjkyIDE0LjUzMDc5MjUsNS43MjM1MDgwNyBMMTQuNTMwNzkyNSw4LjQ4ODA1NDgzIEMxNC41Mjk3NjIsOC45OTI3MDUyOCAxNC4xMjIwMjYsOS40MDE1MjcyOSAxMy42MTkxNDAxLDkuNDAyMjE2NjkgTDEzLjYxOTE0MDEsOS40MDIyMTY2OSBaIE01OS4zNTM1OTE5LDM0LjQ3MDY1OCBMNTkuMzUzNTkxOSwzMi45NjcwNDc5IEw1OS42NTEwNjM4LDMyLjk2NzA0NzkgTDYwLjA2OTEwNSwzNC4xNzU5MzM5IEw2MC40OTA5MjQ5LDMyLjk2NzA0NzkgTDYwLjc4ODM5NjgsMzIuOTY3MDQ3OSBMNjAuNzg4Mzk2OCwzNC40NzA2NTggTDYwLjU2NDc3NzIsMzQuNDcwNjU4IEw2MC41NjQ3NzcyLDMzLjMyNjIzMjIgTDYwLjE1NzcyODQsMzQuNDcwNjU4IEw1OS45NzAxNzY3LDM0LjQ3MDY1OCBMNTkuNTYyNDQwNCwzMy4zMjk2NzkyIEw1OS41NjI0NDA0LDM0LjQ3MDY1OCBMNTkuMzUzNTkxOSwzNC40NzA2NTggWiBNNTguNDE4NTgxMywzNC40NzA2NTggTDU4LjQxODU4MTMsMzMuMTYyNDk2NSBMNTcuOTY1MTU5MywzMy4xNjI0OTY1IEw1Ny45NjUxNTkzLDMyLjk2NzA0NzkgTDU5LjEwMjE0OSwzMi45NjcwNDc5IEw1OS4xMDIxNDksMzMuMTYyNDk2NSBMNTguNjQ1MjkyLDMzLjE2MjQ5NjUgTDU4LjY0NTI5MiwzNC40NzA2NTggTDU4LjQxODU4MTMsMzQuNDcwNjU4IFogTTQ5Ljk4NTk2NzQsMzQuNDcwNjU4IEw0OS45ODU5Njc0LDI2LjMxMTEwODYgTDUyLjE4MzY4ODcsMjYuMzExMTA4NiBMNTIuMTgzNjg4NywyOS4yNjU5MzM0IEw1NC40MjUwMzQ4LDI2LjMxMTEwODYgTDU2Ljk3NDE1ODEsMjYuMzExMTA4NiBMNTQuMjM4MTcwMSwyOS41MzEwMTI3IEw1Ny4yMTU5ODMxLDM0LjQ3MDY1OCBMNTQuNzMyODEyLDM0LjQ3MDY1OCBMNTIuODA5ODkxOSwzMS4yMDY2MzE0IEw1Mi4xODM2ODg3LDMxLjkzNDY1MTcgTDUyLjE4MzY4ODcsMzQuNDcwNjU4IEw0OS45ODU5Njc0LDM0LjQ3MDY1OCBaIE00NC4yMzg1MDM1LDI5Ljk2MTU1MTMgTDQ1LjE4MzQ3NTcsMjkuOTYxNTUxMyBDNDYuMDg0NDc5NiwyOS45NjE1NTEzIDQ2LjQ3OTg0OTcsMjkuNzA3NTAyNSA0Ni40Nzk4NDk3LDI5LjAyMzYwNDcgQzQ2LjQ3OTg0OTcsMjguMzQwMDUxNSA0Ni4wODQ0Nzk2LDI4LjA5NzM3ODEgNDUuMTgzNDc1NywyOC4wOTczNzgxIEw0NC4yMzg1MDM1LDI4LjA5NzM3ODEgTDQ0LjIzODUwMzUsMjkuOTYxNTUxMyBaIE00Mi4wODUwOTM4LDM0LjQ3MDY1OCBMNDIuMDg1MDkzOCwyNi4zMTExMDg2IEw0NS4yNjA3NjM0LDI2LjMxMTEwODYgQzQ3LjM0ODIyMDcsMjYuMzExMTA4NiA0OC42MjI5NTQ1LDI3LjAwNjcyNjQgNDguNjIyOTU0NSwyOC45Njc3NjIyIEM0OC42MjI5NTQ1LDMwLjI0Njk2ODMgNDguMDg0MzQ0LDMwLjk4NjM2MzkgNDcuMDE4NDU5NywzMS4zNDkzMzk5IEw0OC43NDM1MjMzLDM0LjQ3MDY1OCBMNDYuNDE0MjQwOCwzNC40NzA2NTggTDQ0Ljg0MzA2NTksMzEuNjM3NTE0NiBMNDQuMjM4NTAzNSwzMS42Mzc1MTQ2IEw0NC4yMzg1MDM1LDM0LjQ3MDY1OCBMNDIuMDg1MDkzOCwzNC40NzA2NTggWiBNMzguNzU1NTM1NiwzMC4zOTEwNTU3IEMzOC43NTU1MzU2LDI4Ljg5MTIzNzMgMzguMTA3MzQ4NiwyNy45NzY3MzA4IDM2Ljk2NDUxOTcsMjcuOTc2NzMwOCBDMzUuODExMDQyNCwyNy45NzY3MzA4IDM1LjE2MjUxMTksMjguODkxMjM3MyAzNS4xNjI1MTE5LDMwLjM5MTA1NTcgQzM1LjE2MjUxMTksMzEuODkwNTI5MyAzNS44MTEwNDI0LDMyLjg2MDg3ODMgMzYuOTY0NTE5NywzMi44NjA4NzgzIEMzOC4xMDczNDg2LDMyLjg2MDg3ODMgMzguNzU1NTM1NiwzMS44OTA1MjkzIDM4Ljc1NTUzNTYsMzAuMzkxMDU1NyBMMzguNzU1NTM1NiwzMC4zOTEwNTU3IFogTTMyLjk2NTEzNCwzMC4zOTEwNTU3IEMzMi45NjUxMzQsMjcuNDAzNDgzNyAzNC45OTc5NzQ3LDI2LjE1NjY4IDM2Ljk2NDUxOTcsMjYuMTU2NjggQzM4LjkyMDc1OTcsMjYuMTU2NjggNDAuOTUzMjU3LDI3LjQwMzQ4MzcgNDAuOTUzMjU3LDMwLjM5MTA1NTcgQzQwLjk1MzI1NywzMy4zNzgyODI5IDM4LjkyMDc1OTcsMzQuNjI1MDg2NCAzNi45NjQ1MTk3LDM0LjYyNTA4NjQgQzM0Ljk5Nzk3NDcsMzQuNjI1MDg2NCAzMi45NjUxMzQsMzMuMzc4MjgyOSAzMi45NjUxMzQsMzAuMzkxMDU1NyBMMzIuOTY1MTM0LDMwLjM5MTA1NTcgWiBNMjQuNTkxNjAyNSwzNC40NzA2NTggTDIyLjQyNzIwMDcsMjYuMzExMTA4NiBMMjQuNjM1NTcwNiwyNi4zMTExMDg2IEwyNS4zMjc3MjU4LDI5LjUyMDY3MTYgQzI1LjQ3NzgzNTgsMzAuMDc1MzA0NCAyNS41OTUzMTMzLDMwLjYzODU1NSAyNS42Nzk0NzExLDMxLjIwNjYzMTQgTDI1LjcwMTQ1NTIsMzEuMjA2NjMxNCBDMjUuNzgxODM0NSwzMC42NDMwMzYyIDI1Ljg5MTc1NDksMzAuMDgzMjMyNyAyNi4wMzEyMTY1LDI5LjUzMTAxMjcgTDI2LjcwMTM4NzUsMjYuMzExMTA4NiBMMjguNjg5OTE2NiwyNi4zMTExMDg2IEwyOS40MTUzOTE0LDI5LjU0MTAwOTIgQzI5LjU2OTI4LDMwLjA4ODc0OCAyOS42OTA1MzYsMzAuNjQ0NzU5NyAyOS43Nzc3ODUzLDMxLjIwNjYzMTQgTDI5LjgwMDExMjksMzEuMjA2NjMxNCBDMjkuODczMjc4NiwzMC42NTQ0MTE1IDI5Ljk3NTk4NTUsMzAuMTA2MzI4IDMwLjEwNzU0NjUsMjkuNTY0Nzk0IEwzMC43NTU3MzM1LDI2LjMxMTEwODYgTDMyLjc2NjkzMzcsMjYuMzExMTA4NiBMMzAuNjU2ODA1MSwzNC40NzA2NTggTDI4LjgyMTgyMTIsMzQuNDcwNjU4IEwyNy43MTIzMTE5LDI5LjM2NDg2NDIgTDI3LjY5MDMyNzgsMjkuMzY0ODY0MiBMMjYuNDU5NTYyNiwzNC40NzA2NTggTDI0LjU5MTYwMjUsMzQuNDcwNjU4IFogTTE3LjU0ODQ1MTYsMzQuNDcwNjU4IEwxNy41NDg0NTE2LDI4LjE0MTUwMDUgTDE1LjIwNzgzMzYsMjguMTQxNTAwNSBMMTUuMjA3ODMzNiwyNi4zMTExMDg2IEwyMi4wODY0NDc0LDI2LjMxMTEwODYgTDIyLjA4NjQ0NzQsMjguMTQxNTAwNSBMMTkuNzQ1ODI5NCwyOC4xNDE1MDA1IEwxOS43NDU4Mjk0LDM0LjQ3MDY1OCBMMTcuNTQ4NDUxNiwzNC40NzA2NTggWiBNOC42OTE2MTM3MywzNC40NzA2NTggTDguNjkxNjEzNzMsMjYuMzExMTA4NiBMMTQuNDkzMDA3NCwyNi4zMTExMDg2IEwxNC40OTMwMDc0LDI4LjE0MTUwMDUgTDEwLjg4ODk5MTYsMjguMTQxNTAwNSBMMTAuODg4OTkxNiwyOS40NjQ4MjkxIEwxMy40NjA0NDI0LDI5LjQ2NDgyOTEgTDEzLjQ2MDQ0MjQsMzEuMTg0OTE0OSBMMTAuODg4OTkxNiwzMS4xODQ5MTQ5IEwxMC44ODg5OTE2LDMyLjY5NjEwODYgTDE0LjY3OTg3MjEsMzIuNjk2MTA4NiBMMTQuNjc5ODcyMSwzNC40NzA2NTggTDguNjkxNjEzNzMsMzQuNDcwNjU4IFogTTAsMzQuNDcwNjU4IEwwLDI2LjMxMTEwODYgTDIuMTY0NzQ1MjcsMjYuMzExMTA4NiBMNS4xNDI1NTgxNywzMC44ODc0MzMxIEw1LjE2NDU0MjI1LDMwLjg4NzQzMzEgTDUuMTY0NTQyMjUsMjYuMzExMTA4NiBMNy4xNzUwNTU0LDI2LjMxMTEwODYgTDcuMTc1MDU1NCwzNC40NzA2NTggTDUuMTQyNTU4MTcsMzQuNDcwNjU4IEwyLjAzMjg0MDc3LDI5LjkwNTcwODggTDIuMDEwODU2NjgsMjkuOTA1NzA4OCBMMi4wMTA4NTY2OCwzNC40NzA2NTggTDAsMzQuNDcwNjU4IFoiIGlkPSJGaWxsLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgBtn as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFbn(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.366 73.466v4.168c0 .301.095.452.304.452h3.997c.2 0 .294-.15.294-.452v-4.168h1.424v4.168h.01c0 .509-.161.942-.484 1.31-.323.368-.731.547-1.234.547H47.67c-.512 0-.92-.179-1.243-.547a1.94 1.94 0 01-.475-1.31v-4.168h1.414zm13.547 0v1.416h-5.125c-.196 0-.289.152-.289.454 0 .302.093.453.289.453h3.73c.493 0 .902.189 1.228.557.288.35.446.784.446 1.294 0 .5-.148.935-.446 1.294a1.544 1.544 0 01-1.228.557h-5.126v-1.407h5.126c.195 0 .288-.151.288-.444 0-.302-.093-.453-.288-.453h-3.73c-.493 0-.903-.19-1.22-.557a1.916 1.916 0 01-.464-1.294c0-.51.158-.945.474-1.313a1.523 1.523 0 011.21-.557h5.125zm2.406 0v6.025h-1.418v-6.025h1.418zm2.46 0l3.587 4.03v-4.03h1.396v6.025h-1.396l-3.588-4.058v4.058h-1.396v-6.025h1.396zm12.072 0v1.412h-4.977v.904h4.65v1.403h-4.65v.894h4.958v1.412H71.47v-6.025h6.38zm7.863 0v1.416h-5.116c-.196 0-.289.152-.289.454 0 .302.093.453.289.453h3.73c.493 0 .902.189 1.228.557.298.35.447.784.447 1.294 0 .5-.15.935-.447 1.294a1.532 1.532 0 01-1.228.557h-5.116v-1.407h5.116c.195 0 .288-.151.288-.444 0-.302-.093-.453-.288-.453h-3.721c-.493 0-.902-.19-1.228-.557a1.916 1.916 0 01-.465-1.294c0-.51.158-.945.474-1.313a1.523 1.523 0 011.21-.557h5.116zm7.807 0v1.416h-5.126c-.195 0-.288.152-.288.454 0 .302.093.453.288.453h3.73c.484 0 .894.189 1.22.557.306.35.455.784.455 1.294 0 .5-.149.935-.447 1.294a1.539 1.539 0 01-1.218.557H87v-1.407h5.126c.195 0 .288-.151.288-.444 0-.302-.093-.453-.288-.453h-3.73c-.494 0-.894-.19-1.229-.557-.307-.36-.456-.784-.456-1.294s.159-.945.475-1.313a1.523 1.523 0 011.21-.557h5.125zm-50.057 0c.521 0 .94.179 1.248.518.28.31.42.696.42 1.148 0 .556-.206.998-.616 1.309.485.301.727.772.727 1.393 0 .452-.14.829-.428 1.14-.308.348-.718.517-1.249.517H37.8v-6.025h5.664zm.102 3.719h-4.378v.903h4.378v-.009c.205 0 .308-.15.308-.443 0-.3-.103-.451-.308-.451zm-.102-2.307h-4.267v.913h4.267c.195 0 .298-.15.298-.461 0-.301-.093-.452-.298-.452zM90.724 52.2l2.722 20.203H90.98L84.94 52.2h5.785zM83.9 54.681l6.356 17.722H87.22l-7.244-11.724L83.9 54.68zm1.03 16.658l.718 1.064H37.8v-1.064h47.13zM49.775 52.554l.075 4.81h-6.682v2.366h5.716v4.995h-5.781v5.55H37.8v-17.72h11.976zm23.142-.354l2.335 3.834 2.045-3.834h6.482l-5.562 8.647 6.012 9.429h-6.472l-2.645-3.984-2.617 3.984h-6.342l5.854-9.495-5.469-8.581h6.379zm-13.502 0c5.48 0 9.919 4.043 9.928 9.038 0 4.995-4.448 9.038-9.928 9.038-5.481 0-9.92-4.043-9.92-9.038s4.439-9.038 9.92-9.038zm.065 3.716c-1.764 0-1.689 1.28-1.689 1.28l.001 8.28c.01.125.134.879 1.613.879 1.624 0 1.727-.7 1.727-1.57v-7.59s.113-1.279-1.652-1.279z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IEJ1c2luZXNzPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAwLjAwMDAwMCwgLTI3MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC1CdXNpbmVzcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjAwMDAwMCwgMjcxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9OZXR3b3JrL0ZveC1CdXNpbmVzcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuODAwMDAwLCAyNy4yMDAwMDApIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOS41NjY0NTU3LDIxLjI2NTgyMjggTDkuNTY2NDU1NywyNS40MzM1NjkxIEM5LjU2NjQ1NTcsMjUuNzM1MzA2NCA5LjY2MTM5MjQxLDI1Ljg4NjE3NSA5Ljg3MDI1MzE2LDI1Ljg4NjE3NSBMMTMuODY3MDg4NiwyNS44ODYxNzUgQzE0LjA2NjQ1NTcsMjUuODg2MTc1IDE0LjE2MTM5MjQsMjUuNzM1MzA2NCAxNC4xNjEzOTI0LDI1LjQzMzU2OTEgTDE0LjE2MTM5MjQsMjEuMjY1ODIyOCBMMTUuNTg1NDQzLDIxLjI2NTgyMjggTDE1LjU4NTQ0MywyNS40MzM1NjkxIEwxNS41OTQ5MzY3LDI1LjQzMzU2OTEgQzE1LjU5NDkzNjcsMjUuOTQyNzUwNyAxNS40MzM1NDQzLDI2LjM3NjQ5ODEgMTUuMTEwNzU5NSwyNi43NDQyNDA0IEMxNC43ODc5NzQ3LDI3LjExMTk4MjcgMTQuMzc5NzQ2OCwyNy4yOTExMzkyIDEzLjg3NjU4MjMsMjcuMjkxMTM5MiBMOS44NzAyNTMxNiwyNy4yOTExMzkyIEM5LjM1NzU5NDk0LDI3LjI5MTEzOTIgOC45NDkzNjcwOSwyNy4xMTE5ODI3IDguNjI2NTgyMjgsMjYuNzQ0MjQwNCBDOC4zMDM3OTc0NywyNi4zNjcwNjg4IDguMTUxODk4NzMsMjUuOTMzMzIxNCA4LjE1MTg5ODczLDI1LjQzMzU2OTEgTDguMTUxODk4NzMsMjEuMjY1ODIyOCBMOS41NjY0NTU3LDIxLjI2NTgyMjggWiBNMjMuMTEzMzI2LDIxLjI2NTgyMjggTDIzLjExMzMyNiwyMi42ODI0MzMyIEwxNy45ODc1NzQzLDIyLjY4MjQzMzIgQzE3Ljc5MjIxOSwyMi42ODI0MzMyIDE3LjY5OTE5MjcsMjIuODMzNTM4NCAxNy42OTkxOTI3LDIzLjEzNTc0ODYgQzE3LjY5OTE5MjcsMjMuNDM3OTU4OCAxNy43OTIyMTksMjMuNTg5MDYzOSAxNy45ODc1NzQzLDIzLjU4OTA2MzkgTDIxLjcxNzkzMDgsMjMuNTg5MDYzOSBDMjIuMjEwOTcwNSwyMy41ODkwNjM5IDIyLjYyMDI4NjQsMjMuNzc3OTQ1MyAyMi45NDU4Nzg2LDI0LjE0NjI2NCBDMjMuMjM0MjYwMywyNC40OTU2OTQ2IDIzLjM5MjQwNTEsMjQuOTMwMTIxOCAyMy4zOTI0MDUxLDI1LjQ0MDEwMTYgQzIzLjM5MjQwNTEsMjUuOTQwNjM3MyAyMy4yNDM1NjI5LDI2LjM3NTA2NDUgMjIuOTQ1ODc4NiwyNi43MzM5MzkxIEMyMi42MjAyODY0LDI3LjExMTcwMTkgMjIuMjEwOTcwNSwyNy4yOTExMzkyIDIxLjcxNzkzMDgsMjcuMjkxMTM5MiBMMTYuNTkyMTc5MSwyNy4yOTExMzkyIEwxNi41OTIxNzkxLDI1Ljg4Mzk3MjkgTDIxLjcxNzkzMDgsMjUuODgzOTcyOSBDMjEuOTEzMjg2MiwyNS44ODM5NzI5IDIyLjAwNjMxMjUsMjUuNzMyODY3NyAyMi4wMDYzMTI1LDI1LjQ0MDEwMTYgQzIyLjAwNjMxMjUsMjUuMTM3ODkxNCAyMS45MTMyODYyLDI0Ljk4Njc4NjIgMjEuNzE3OTMwOCwyNC45ODY3ODYyIEwxNy45ODc1NzQzLDI0Ljk4Njc4NjIgQzE3LjQ5NDUzNDcsMjQuOTg2Nzg2MiAxNy4wODUyMTg4LDI0Ljc5NzkwNDggMTYuNzY4OTI5MiwyNC40Mjk1ODYxIEMxNi40NjE5NDIzLDI0LjA3MDcxMTUgMTYuMzAzNzk3NSwyMy42NDU3MjgzIDE2LjMwMzc5NzUsMjMuMTM1NzQ4NiBDMTYuMzAzNzk3NSwyMi42MjU3Njg4IDE2LjQ2MTk0MjMsMjIuMTkxMzQxNiAxNi43NzgyMzE4LDIxLjgyMzAyMjkgQzE3LjA5NDUyMTQsMjEuNDU0NzA0MiAxNy40OTQ1MzQ3LDIxLjI2NTgyMjggMTcuOTg3NTc0MywyMS4yNjU4MjI4IEwyMy4xMTMzMjYsMjEuMjY1ODIyOCBaIE0yNS41MTg5ODczLDIxLjI2NTgyMjggTDI1LjUxODk4NzMsMjcuMjkxMTM5MiBMMjQuMTAxMjY1OCwyNy4yOTExMzkyIEwyNC4xMDEyNjU4LDIxLjI2NTgyMjggTDI1LjUxODk4NzMsMjEuMjY1ODIyOCBaIE0yNy45NzgxNDA5LDIxLjI2NTgyMjggTDMxLjU2NjE2MjksMjUuMjk1MjUzMiBMMzEuNTY2MTYyOSwyMS4yNjU4MjI4IEwzMi45NjIwMjUzLDIxLjI2NTgyMjggTDMyLjk2MjAyNTMsMjcuMjkxMTM5MiBMMzEuNTY2MTYyOSwyNy4yOTExMzkyIEwyNy45NzgxNDA5LDIzLjIzMzQ2NTIgTDI3Ljk3ODE0MDksMjcuMjkxMTM5MiBMMjYuNTgyMjc4NSwyNy4yOTExMzkyIEwyNi41ODIyNzg1LDIxLjI2NTgyMjggTDI3Ljk3ODE0MDksMjEuMjY1ODIyOCBaIE00MC4wNTA2MzI5LDIxLjI2NTgyMjggTDQwLjA1MDYzMjksMjIuNjc4MDA2MyBMMzUuMDc0MDU2MiwyMi42NzgwMDYzIEwzNS4wNzQwNTYyLDIzLjU4MTgwMzggTDM5LjcyMzIyNjUsMjMuNTgxODAzOCBMMzkuNzIzMjI2NSwyNC45ODQ1NzI4IEwzNS4wNzQwNTYyLDI0Ljk4NDU3MjggTDM1LjA3NDA1NjIsMjUuODc4OTU1NyBMNDAuMDMxOTI0LDI1Ljg3ODk1NTcgTDQwLjAzMTkyNCwyNy4yOTExMzkyIEwzMy42NzA4ODYxLDI3LjI5MTEzOTIgTDMzLjY3MDg4NjEsMjEuMjY1ODIyOCBMNDAuMDUwNjMyOSwyMS4yNjU4MjI4IFogTTQ3LjkxNDE1LDIxLjI2NTgyMjggTDQ3LjkxNDE1LDIyLjY4MjQzMzIgTDQyLjc5NzcwMDksMjIuNjgyNDMzMiBDNDIuNjAyMzQ1NiwyMi42ODI0MzMyIDQyLjUwOTMxOTIsMjIuODMzNTM4NCA0Mi41MDkzMTkyLDIzLjEzNTc0ODYgQzQyLjUwOTMxOTIsMjMuNDM3OTU4OCA0Mi42MDIzNDU2LDIzLjU4OTA2MzkgNDIuNzk3NzAwOSwyMy41ODkwNjM5IEw0Ni41MjgwNTc0LDIzLjU4OTA2MzkgQzQ3LjAyMTA5NywyMy41ODkwNjM5IDQ3LjQzMDQxMywyMy43Nzc5NDUzIDQ3Ljc1NjAwNTIsMjQuMTQ2MjY0IEM0OC4wNTM2ODk1LDI0LjQ5NTY5NDYgNDguMjAyNTMxNiwyNC45MzAxMjE4IDQ4LjIwMjUzMTYsMjUuNDQwMTAxNiBDNDguMjAyNTMxNiwyNS45NDA2MzczIDQ4LjA1MzY4OTUsMjYuMzc1MDY0NSA0Ny43NTYwMDUyLDI2LjczMzkzOTEgQzQ3LjQzMDQxMywyNy4xMTE3MDE5IDQ3LjAzMDM5OTcsMjcuMjkxMTM5MiA0Ni41MjgwNTc0LDI3LjI5MTEzOTIgTDQxLjQxMTYwODQsMjcuMjkxMTM5MiBMNDEuNDExNjA4NCwyNS44ODM5NzI5IEw0Ni41MjgwNTc0LDI1Ljg4Mzk3MjkgQzQ2LjcyMzQxMjcsMjUuODgzOTcyOSA0Ni44MTY0MzkxLDI1LjczMjg2NzcgNDYuODE2NDM5MSwyNS40NDAxMDE2IEM0Ni44MTY0MzkxLDI1LjEzNzg5MTQgNDYuNzIzNDEyNywyNC45ODY3ODYyIDQ2LjUyODA1NzQsMjQuOTg2Nzg2MiBMNDIuODA3MDAzNiwyNC45ODY3ODYyIEM0Mi4zMTM5NjM5LDI0Ljk4Njc4NjIgNDEuOTA0NjQ4LDI0Ljc5NzkwNDggNDEuNTc5MDU1OCwyNC40Mjk1ODYxIEM0MS4yNzIwNjg4LDI0LjA3MDcxMTUgNDEuMTEzOTI0MSwyMy42NDU3MjgzIDQxLjExMzkyNDEsMjMuMTM1NzQ4NiBDNDEuMTEzOTI0MSwyMi42MjU3Njg4IDQxLjI3MjA2ODgsMjIuMTkxMzQxNiA0MS41ODgzNTg0LDIxLjgyMzAyMjkgQzQxLjkwNDY0OCwyMS40NTQ3MDQyIDQyLjMwNDY2MTMsMjEuMjY1ODIyOCA0Mi43OTc3MDA5LDIxLjI2NTgyMjggTDQ3LjkxNDE1LDIxLjI2NTgyMjggWiBNNTUuNzIwOTIxLDIxLjI2NTgyMjggTDU1LjcyMDkyMSwyMi42ODI0MzMyIEw1MC41OTUxNjkzLDIyLjY4MjQzMzIgQzUwLjM5OTgxMzksMjIuNjgyNDMzMiA1MC4zMDY3ODc2LDIyLjgzMzUzODQgNTAuMzA2Nzg3NiwyMy4xMzU3NDg2IEM1MC4zMDY3ODc2LDIzLjQzNzk1ODggNTAuMzk5ODEzOSwyMy41ODkwNjM5IDUwLjU5NTE2OTMsMjMuNTg5MDYzOSBMNTQuMzI1NTI1OCwyMy41ODkwNjM5IEM1NC44MDkyNjI4LDIzLjU4OTA2MzkgNTUuMjE4NTc4NywyMy43Nzc5NDUzIDU1LjU0NDE3MDksMjQuMTQ2MjY0IEM1NS44NTExNTc4LDI0LjQ5NTY5NDYgNTYsMjQuOTMwMTIxOCA1NiwyNS40NDAxMDE2IEM1NiwyNS45NDA2MzczIDU1Ljg1MTE1NzgsMjYuMzc1MDY0NSA1NS41NTM0NzM1LDI2LjczMzkzOTEgQzU1LjIyNzg4MTMsMjcuMTExNzAxOSA1NC44MTg1NjU0LDI3LjI5MTEzOTIgNTQuMzM0ODI4NCwyNy4yOTExMzkyIEw0OS4xOTk3NzQxLDI3LjI5MTEzOTIgTDQ5LjE5OTc3NDEsMjUuODgzOTcyOSBMNTQuMzI1NTI1OCwyNS44ODM5NzI5IEM1NC41MjA4ODExLDI1Ljg4Mzk3MjkgNTQuNjEzOTA3NCwyNS43MzI4Njc3IDU0LjYxMzkwNzQsMjUuNDQwMTAxNiBDNTQuNjEzOTA3NCwyNS4xMzc4OTE0IDU0LjUyMDg4MTEsMjQuOTg2Nzg2MiA1NC4zMjU1MjU4LDI0Ljk4Njc4NjIgTDUwLjU5NTE2OTMsMjQuOTg2Nzg2MiBDNTAuMTAyMTI5NiwyNC45ODY3ODYyIDQ5LjcwMjExNjMsMjQuNzk3OTA0OCA0OS4zNjcyMjE1LDI0LjQyOTU4NjEgQzQ5LjA2MDIzNDYsMjQuMDcwNzExNSA0OC45MTEzOTI0LDIzLjY0NTcyODMgNDguOTExMzkyNCwyMy4xMzU3NDg2IEM0OC45MTEzOTI0LDIyLjYyNTc2ODggNDkuMDY5NTM3MiwyMi4xOTEzNDE2IDQ5LjM4NTgyNjgsMjEuODIzMDIyOSBDNDkuNzAyMTE2MywyMS40NTQ3MDQyIDUwLjEwMjEyOTYsMjEuMjY1ODIyOCA1MC41OTUxNjkzLDIxLjI2NTgyMjggTDU1LjcyMDkyMSwyMS4yNjU4MjI4IFogTTUuNjYzNzg4NiwyMS4yNjU4MjI4IEM2LjE4NTQ1MzM0LDIxLjI2NTgyMjggNi42MDQ2NDgyMiwyMS40NDQ2OTk0IDYuOTEyMDU3NzksMjEuNzgzNjIzNCBDNy4xOTE1MjEwNSwyMi4wOTQzMDM4IDcuMzMxMjUyNjcsMjIuNDgwMzAwNiA3LjMzMTI1MjY3LDIyLjkzMjE5OTQgQzcuMzMxMjUyNjcsMjMuNDg3NjU4MiA3LjEyNjMxMjk1LDIzLjkzMDE0MjQgNi43MTY0MzM1MiwyNC4yNDA4MjI4IEM3LjIwMDgzNjQ5LDI0LjU0MjA4ODYgNy40NDMwMzc5NywyNS4wMTI4MTY1IDcuNDQzMDM3OTcsMjUuNjM0MTc3MiBDNy40NDMwMzc5NywyNi4wODYwNzU5IDcuMzAzMzA2MzUsMjYuNDYyNjU4MiA3LjAxNDUyNzY1LDI2Ljc3MzMzODYgQzYuNzA3MTE4MDcsMjcuMTIxNjc3MiA2LjI5NzIzODY0LDI3LjI5MTEzOTIgNS43NjYyNTg0NiwyNy4yOTExMzkyIEwtMy4zMzQ1ODkzMWUtMTMsMjcuMjkxMTM5MiBMLTMuMzM0NTg5MzFlLTEzLDIxLjI2NTgyMjggTDUuNjYzNzg4NiwyMS4yNjU4MjI4IFogTTUuNzY2MjU4NDYsMjQuOTg0NTcyOCBMMS4zODgwMDA4MiwyNC45ODQ1NzI4IEwxLjM4ODAwMDgyLDI1Ljg4ODM3MDMgTDUuNzY2MjU4NDYsMjUuODg4MzcwMyBMNS43NjYyNTg0NiwyNS44Nzg5NTU3IEM1Ljk3MTE5ODE3LDI1Ljg3ODk1NTcgNi4wNzM2NjgwMywyNS43MjgzMjI4IDYuMDczNjY4MDMsMjUuNDM2NDcxNSBDNi4wNzM2NjgwMywyNS4xMzUyMDU3IDUuOTcxMTk4MTcsMjQuOTg0NTcyOCA1Ljc2NjI1ODQ2LDI0Ljk4NDU3MjggWiBNNS42NjM3ODg2LDIyLjY3ODAwNjMgTDEuMzk3MzE2MjcsMjIuNjc4MDA2MyBMMS4zOTczMTYyNywyMy41OTEyMTg0IEw1LjY2Mzc4ODYsMjMuNTkxMjE4NCBDNS44NTk0MTI4NywyMy41OTEyMTg0IDUuOTYxODgyNzMsMjMuNDQwNTg1NCA1Ljk2MTg4MjczLDIzLjEyOTkwNTEgQzUuOTYxODgyNzMsMjIuODI4NjM5MiA1Ljg2ODcyODMyLDIyLjY3ODAwNjMgNS42NjM3ODg2LDIyLjY3ODAwNjMgWiBNNTIuOTI0MzA1NSwtMS41ODI5MTc3ZS0xMyBMNTUuNjQ1NTY5NiwyMC4yMDI1MzE2IEw1My4xODEyMDgxLDIwLjIwMjUzMTYgTDQ3LjEzOTI0MDUsLTEuNTgyOTE3N2UtMTMgTDUyLjkyNDMwNTUsLTEuNTgyOTE3N2UtMTMgWiBNNDYuMDk5ODc1OCwyLjQ4MTAxMjY2IEw1Mi40NTU2OTYyLDIwLjIwMjUzMTYgTDQ5LjQyMTE4NTIsMjAuMjAyNTMxNiBMNDIuMTc3MjE1Miw4LjQ3ODYzMzM5IEw0Ni4wOTk4NzU4LDIuNDgxMDEyNjYgWiBNNDcuMTI5NDkzMiwxOS4xMzkyNDA1IEw0Ny44NDgxMDEzLDIwLjIwMjUzMTYgTC0zLjQ1MDA1MjVlLTEzLDIwLjIwMjUzMTYgTC0zLjQ1MDA1MjVlLTEzLDE5LjEzOTI0MDUgTDQ3LjEyOTQ5MzIsMTkuMTM5MjQwNSBaIE0xMS45NzU2Njc5LDAuMzU0NDMwMzggTDEyLjA1MDYzMjksNS4xNjMwOTgxOCBMNS4zNjkzNzIyMSw1LjE2MzA5ODE4IEw1LjM2OTM3MjIxLDcuNTMwMjk5NTEgTDExLjA4NTQ1NzgsNy41MzAyOTk1MSBMMTEuMDg1NDU3OCwxMi41MjQ2MzAyIEw1LjMwMzc3Nzc4LDEyLjUyNDYzMDIgTDUuMzAzNzc3NzgsMTguMDc1OTQ5NCBMLTMuMTY1ODM1NDFlLTEzLDE4LjA3NTk0OTQgTC0zLjE2NTgzNTQxZS0xMywwLjM1NDQzMDM4IEwxMS45NzU2Njc5LDAuMzU0NDMwMzggWiBNMzUuMTE3NjY4MywtMS43MjUwMjYyNWUtMTMgTDM3LjQ1MzM3NzQsMy44MzM3MjE0MSBMMzkuNDk4Mjk1NCwtMS43MjUwMjYyNWUtMTMgTDQ1Ljk4MDEyMjYsLTEuNzI1MDI2MjVlLTEzIEw0MC40MTc1NzA0LDguNjQ3MDY2OTcgTDQ2LjQzMDM3OTcsMTguMDc1OTQ5NCBMMzkuOTU3OTMyOSwxOC4wNzU5NDk0IEwzNy4zMTI2NzIsMTQuMDkxNTE2NSBMMzQuNjk1NTUyMiwxOC4wNzU5NDk0IEwyOC4zNTQ0MzA0LDE4LjA3NTk0OTQgTDM0LjIwNzc3MzYsOC41ODExMzA3MyBMMjguNzM5MDI1LC0xLjcyNTAyNjI1ZS0xMyBMMzUuMTE3NjY4MywtMS43MjUwMjYyNWUtMTMgWiBNMjEuNjE1NTYwOSwtMS43MjUwMjYyNWUtMTMgQzI3LjA5NjA3NjgsLTEuNzI1MDI2MjVlLTEzIDMxLjUzNDkxOTQsNC4wNDI4MTMwNiAzMS41NDQzMDM4LDkuMDM3OTc0NjggQzMxLjU0NDMwMzgsMTQuMDMzMTM2MyAyNy4wOTYwNzY4LDE4LjA3NTk0OTQgMjEuNjE1NTYwOSwxOC4wNzU5NDk0IEMxNi4xMzUwNDUsMTguMDc1OTQ5NCAxMS42OTYyMDI1LDE0LjAzMzEzNjMgMTEuNjk2MjAyNSw5LjAzNzk3NDY4IEMxMS42OTYyMDI1LDQuMDQyODEzMDYgMTYuMTM1MDQ1LC0xLjcyNTAyNjI1ZS0xMyAyMS42MTU1NjA5LC0xLjcyNTAyNjI1ZS0xMyBaIE0yMS42ODEyNTIxLDMuNzE2MDI2NzggQzE5LjkxNjk3NjQsMy43MTYwMjY3OCAxOS45OTIwNTE5LDQuOTk1MTYxNjMgMTkuOTkyMDUxOSw0Ljk5NTE2MTYzIEwxOS45OTIwNTE5LDQuOTk1MTYxNjMgTDE5Ljk5Mjk4NiwxMy4yNzU4MjIxIEMyMC4wMDMyNjExLDEzLjQwMTM0OTUgMjAuMTI2NTYyMywxNC4xNTQ1MTQxIDIxLjYwNjE3NjUsMTQuMTU0NTE0MSBDMjMuMjI5Njg1NSwxNC4xNTQ1MTQxIDIzLjMzMjkxNDQsMTMuNDU0MjU3OCAyMy4zMzI5MTQ0LDEyLjU4NTk0IEwyMy4zMzI5MTQ0LDQuOTk1MTYxNjMgQzIzLjMzMjkxNDQsNC45OTUxNjE2MyAyMy40NDU1Mjc3LDMuNzE2MDI2NzggMjEuNjgxMjUyMSwzLjcxNjAyNjc4IFoiIGlkPSJGb3gtQnVzaW5lc3MiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgFbn as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFeed(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\",\n fillOpacity: 0.1\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49 39h32v32H49z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.667 53v-4.667c0-.733-.6-1.333-1.334-1.333h-16C53.6 47 53 47.6 53 48.333v13.334C53 62.4 53.6 63 54.333 63h16c.734 0 1.334-.6 1.334-1.333V57L77 62.333V47.667L71.667 53zM53.183 87v-3.324h2.82v-1.464h-2.82v-2.268h3.564V78.42h-5.508V87h1.944zm10.573 0v-1.512h-3.852v-2.136h2.928v-1.416h-2.928v-2.004h3.66V78.42h-5.592V87h5.784zm7.07 0v-1.512h-3.852v-2.136h2.928v-1.416h-2.928v-2.004h3.66V78.42h-5.592V87h5.784zm4.082 0c.752 0 1.41-.102 1.974-.306a3.776 3.776 0 001.41-.87c.376-.376.658-.828.846-1.356a5.193 5.193 0 00.282-1.752v-.096c0-.64-.094-1.22-.282-1.74a3.573 3.573 0 00-.834-1.332c-.376-.36-.846-.638-1.41-.834-.564-.196-1.222-.294-1.974-.294h-2.808V87h2.796zm-.06-1.512h-.792v-5.556h.768c.904 0 1.558.232 1.962.696.404.464.606 1.136.606 2.016v.096c0 .896-.206 1.578-.618 2.046-.412.468-1.054.702-1.926.702z\",\n fill: \"currentColor\",\n fillRule: \"nonzero\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2aWV3Qm94PSIwIDAgMTMwIDEzMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT5DaGFubmVsPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX0JvbnVzRmVlZHMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC02NS4wMDAwMDAsIC0zMzUuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJFUEctR3JpZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjUuMDAwMDAwLCAxNjIuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ2hhbm5lbHMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLCAyOC4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2hhbm5lbCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDE0NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiBmaWxsPSJub25lIiBmaWxsLW9wYWNpdHk9IjAuMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2VsbC9DaGFubmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOCwwIEwxMzAsMCBMMTMwLDAgTDEzMCwxMzAgTDgsMTMwIEMzLjU4MTcyMiwxMzAgNS40MTA4MzAwMWUtMTYsMTI2LjQxODI3OCAwLDEyMiBMMCw4IEMtNS40MTA4MzAwMWUtMTYsMy41ODE3MjIgMy41ODE3MjIsOC4xMTYyNDUwMWUtMTYgOCwwIFoiIGlkPSJDZWxsIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InZpZGVvY2FtLXdoaXRlLTE4ZHAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ5LjAwMDAwMCwgMzkuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIwIDAgMzIgMCAzMiAzMiAwIDMyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIuNjY2NjY2NywxNCBMMjIuNjY2NjY2Nyw5LjMzMzMzMzMzIEMyMi42NjY2NjY3LDguNiAyMi4wNjY2NjY3LDggMjEuMzMzMzMzMyw4IEw1LjMzMzMzMzMzLDggQzQuNiw4IDQsOC42IDQsOS4zMzMzMzMzMyBMNCwyMi42NjY2NjY3IEM0LDIzLjQgNC42LDI0IDUuMzMzMzMzMzMsMjQgTDIxLjMzMzMzMzMsMjQgQzIyLjA2NjY2NjcsMjQgMjIuNjY2NjY2NywyMy40IDIyLjY2NjY2NjcsMjIuNjY2NjY2NyBMMjIuNjY2NjY2NywxOCBMMjgsMjMuMzMzMzMzMyBMMjgsOC42NjY2NjY2NyBMMjIuNjY2NjY2NywxNCBaIiBpZD0iUGF0aCIgZmlsbD0iY3VycmVudENvbG9yIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNTMuMTgyNTcxNCw4NyBMNTMuMTgyNTcxNCw4My42NzYgTDU2LjAwMjU3MTQsODMuNjc2IEw1Ni4wMDI1NzE0LDgyLjIxMiBMNTMuMTgyNTcxNCw4Mi4yMTIgTDUzLjE4MjU3MTQsNzkuOTQ0IEw1Ni43NDY1NzE0LDc5Ljk0NCBMNTYuNzQ2NTcxNCw3OC40MiBMNTEuMjM4NTcxNCw3OC40MiBMNTEuMjM4NTcxNCw4NyBMNTMuMTgyNTcxNCw4NyBaIE02My43NTYyODU3LDg3IEw2My43NTYyODU3LDg1LjQ4OCBMNTkuOTA0Mjg1Nyw4NS40ODggTDU5LjkwNDI4NTcsODMuMzUyIEw2Mi44MzIyODU3LDgzLjM1MiBMNjIuODMyMjg1Nyw4MS45MzYgTDU5LjkwNDI4NTcsODEuOTM2IEw1OS45MDQyODU3LDc5LjkzMiBMNjMuNTY0Mjg1Nyw3OS45MzIgTDYzLjU2NDI4NTcsNzguNDIgTDU3Ljk3MjI4NTcsNzguNDIgTDU3Ljk3MjI4NTcsODcgTDYzLjc1NjI4NTcsODcgWiBNNzAuODI2LDg3IEw3MC44MjYsODUuNDg4IEw2Ni45NzQsODUuNDg4IEw2Ni45NzQsODMuMzUyIEw2OS45MDIsODMuMzUyIEw2OS45MDIsODEuOTM2IEw2Ni45NzQsODEuOTM2IEw2Ni45NzQsNzkuOTMyIEw3MC42MzQsNzkuOTMyIEw3MC42MzQsNzguNDIgTDY1LjA0Miw3OC40MiBMNjUuMDQyLDg3IEw3MC44MjYsODcgWiBNNzQuOTA3NzE0Myw4NyBDNzUuNjU5NzE0Myw4NyA3Ni4zMTc3MTQzLDg2Ljg5OCA3Ni44ODE3MTQzLDg2LjY5NCBDNzcuNDQ1NzE0Myw4Ni40OSA3Ny45MTU3MTQzLDg2LjIgNzguMjkxNzE0Myw4NS44MjQgQzc4LjY2NzcxNDMsODUuNDQ4IDc4Ljk0OTcxNDMsODQuOTk2IDc5LjEzNzcxNDMsODQuNDY4IEM3OS4zMjU3MTQzLDgzLjk0IDc5LjQxOTcxNDMsODMuMzU2IDc5LjQxOTcxNDMsODIuNzE2IEw3OS40MTk3MTQzLDgyLjcxNiBMNzkuNDE5NzE0Myw4Mi42MiBDNzkuNDE5NzE0Myw4MS45OCA3OS4zMjU3MTQzLDgxLjQgNzkuMTM3NzE0Myw4MC44OCBDNzguOTQ5NzE0Myw4MC4zNiA3OC42NzE3MTQzLDc5LjkxNiA3OC4zMDM3MTQzLDc5LjU0OCBDNzcuOTI3NzE0Myw3OS4xODggNzcuNDU3NzE0Myw3OC45MSA3Ni44OTM3MTQzLDc4LjcxNCBDNzYuMzI5NzE0Myw3OC41MTggNzUuNjcxNzE0Myw3OC40MiA3NC45MTk3MTQzLDc4LjQyIEw3NC45MTk3MTQzLDc4LjQyIEw3Mi4xMTE3MTQzLDc4LjQyIEw3Mi4xMTE3MTQzLDg3IEw3NC45MDc3MTQzLDg3IFogTTc0Ljg0NzcxNDMsODUuNDg4IEw3NC4wNTU3MTQzLDg1LjQ4OCBMNzQuMDU1NzE0Myw3OS45MzIgTDc0LjgyMzcxNDMsNzkuOTMyIEM3NS43Mjc3MTQzLDc5LjkzMiA3Ni4zODE3MTQzLDgwLjE2NCA3Ni43ODU3MTQzLDgwLjYyOCBDNzcuMTg5NzE0Myw4MS4wOTIgNzcuMzkxNzE0Myw4MS43NjQgNzcuMzkxNzE0Myw4Mi42NDQgTDc3LjM5MTcxNDMsODIuNjQ0IEw3Ny4zOTE3MTQzLDgyLjc0IEM3Ny4zOTE3MTQzLDgzLjYzNiA3Ny4xODU3MTQzLDg0LjMxOCA3Ni43NzM3MTQzLDg0Ljc4NiBDNzYuMzYxNzE0Myw4NS4yNTQgNzUuNzE5NzE0Myw4NS40ODggNzQuODQ3NzE0Myw4NS40ODggTDc0Ljg0NzcxNDMsODUuNDg4IFoiIGlkPSJGRUVEIiBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgFeed as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFnc(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88.891 82.066v5.765H41v-5.765h47.891zm-29.545 2.069h-.176l-.298.014c-.746.035-1.476.093-1.765.747l-.052.139h1.294l.05-.074c.128-.16.332-.23.614-.218.212.009.483.003.595.133.132.152.076.344-.363.383-1.795.164-2.34.424-2.326.96.008.374.195.696.876.834.427.086 1.222.062 1.834-.331.039-.007.053-.001.075 0-.01.118.01.194.05.24l.032.031h1.437v-.066l-.056-.039a.411.411 0 01-.153-.18l-.023-.072v-1.509l-.022-.131c-.13-.587-.68-.818-1.454-.856l-.17-.005zm-14.844-.048c-1.23.027-1.87.414-2.12 1.04-.218.573-.147 1.104.484 1.553.702.436 1.295.4 1.897.402 1.32-.102 1.626-.574 1.8-1.095H45.18c-.147.226-.298.452-.764.403-.51-.054-.733-.422-.697-.815.069-.755.478-.787.755-.792.485-.027.567.183.677.39h1.452c-.212-.608-.708-1.073-2.1-1.086zm36.782.03c-1.539.004-2.13.697-2.167 1.402l-.001.096c.023.79.47 1.393 2.08 1.46 1.005.041 1.742-.19 2.185-.792l.09-.135h-1.365c-.169.15-.256.309-.783.29-.484-.017-.731-.232-.732-.54l.006-.087h2.932c.056-1.138-.727-1.697-2.245-1.694zm-30.133-.904h-1.417v3.813h1.41v-1.781c.007-.165.138-.4.67-.437.359-.041.632.158.678.347l.007.056v1.815h1.403v-2.02c-.043-.497-.322-.867-1.362-.893-.422-.01-.834.04-1.214.325l-.14.118h-.035v-1.343zm16.05.917c-.444.002-.86.064-1.273.42-.028.017-.064.041-.077.028l-.005-.018v-.36h-1.384v2.788h1.423v-1.68c0-.294.32-.485.706-.5.484-.019.63.233.65.4l.003.044v1.746h1.38v-2.045c0-.412-.34-.83-1.423-.823zm7.36-.004c-.444.003-.86.064-1.273.42-.029.018-.064.041-.077.028l-.005-.018v-.36h-1.384v2.789h1.422v-1.68c0-.294.32-.486.707-.5.484-.02.63.232.65.4l.003.044v1.745h1.38v-2.045c0-.412-.34-.83-1.423-.823zm13.14-.937h-1.404v3.79h1.404v-3.79zm-28.117 2.482l.062.005c.039.266.046.428-.033.519-.25.284-.604.385-1.05.3-.145-.028-.309-.165-.32-.272-.013-.125.098-.31.315-.342.338-.048.632-.05 1.026-.21zm21.777-.957c.477-.012.757.175.783.513l.001.096H80.52c.069-.384.335-.599.842-.609zm7.53-42.114v38.136l-47.593-.001 6.641-10.425v-3.05h1.924l7.053-11.062v-3.346h2.198l3.72-5.887c1.33.334 2.596.729 3.793 1.167 3.716 1.36 6.763 3.134 8.983 4.788l.235-.312c-2.25-1.676-5.327-3.468-9.082-4.842a38.352 38.352 0 00-3.71-1.148l2.52-3.986h-6.138l-1.468 3.051a38.23 38.23 0 00-4.345-.247l-.252.002.992-2.83h-5.461l-.677 3.204A42.196 42.196 0 0041 47.485V42.6h47.891zm-35.269 3.226c1.434 0 2.824.08 4.166.23L41.103 80.734H41v-.023h.012l12.223-34.884.387-.002zm-5.483.392L41 80.063V47.896l.135-.044a41.844 41.844 0 017.004-1.634zM82.874 67.37c-2 .238-2.95 1.372-3.303 2.88-.26 1.932.312 2.509.89 3.026.728.65 1.75.958 2.867 1.272.688.194 1.486.395 1.376 1.159-.05.354-.277.661-1.182.611-1.12.009-1.432-.54-1.69-1.128l-.091-.207-2.672.595c.352 1.685 1.404 2.78 2.72 3.138 1.982.541 3.254.22 4.293-.418 1.365-.838 2.075-2.574 1.502-4.429-.24-.773-.826-1.378-1.726-1.71-.556-.204-1.103-.473-2.45-.75-.555-.114-.987-.401-.938-.804.03-.261.221-.833 1.165-.821.706.008 1.037.553 1.353 1.033l.072.11 2.494-.79c-.542-1.574-1.692-3.123-4.68-2.767zm-8.386.274h-2.445L70.73 74.26 69.34 67.66H66.44l2.64 11.187h2.655l1.296-6.358 1.327 6.406h2.591l2.656-11.235h-2.348l-1.393 6.503-1.376-6.519zm-16.59.054h-2.821v5.65l-3.401-5.636h-3.278v11.16h2.876l.014-6.405 3.847 6.405h2.763V67.698zm7.989-.022H58.6v11.186h7.384v-2.56h-4.567v-1.947h3.676v-2.414h-3.66v-1.657h4.454v-2.608zm5.57-14.39a6.404 6.404 0 00-4.495 1.826 6.152 6.152 0 00-1.863 4.407c0 1.722.712 3.28 1.863 4.408a6.403 6.403 0 004.496 1.825 6.403 6.403 0 004.496-1.825 6.152 6.152 0 001.862-4.408c0-1.72-.712-3.279-1.862-4.407a6.397 6.397 0 00-4.188-1.818l-.308-.007zm-6.434.043H57.31v12.274h3.608V61.63h3.559v-3.314h-3.52v-1.643h4.331l-.264-3.343zm15.04.021h-3.948l3.54 5.917-3.671 6.308h3.885l1.756-3.017 1.814 3.04 3.994.005-3.832-6.39 3.417-5.842H83.09l-1.489 2.495-1.54-2.516zm-8.596 2.36c.685.04.933.55 1.028.963l.018.086v5.316c-.113.479-.254 1.048-1.134 1.04-.42-.004-.885-.346-1.02-.93l-.026-.139.01-5.452c.123-.523.715-.908 1.124-.884z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IE5ld3MgQ2hhbm5lbDwvdGl0bGU+CiAgICA8ZyBpZD0iMTQ0MHB4LS0tRGVza3RvcCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IldlYl8xNDQwX0xpdmVUVl9OZXdDb21wb25lbnRzX0NoYW5uZWxMb2dvcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUyMC4wMDAwMDAsIC0xMzEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJGb3gtTmV3cy1DaGFubmVsIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MjAuMDAwMDAwLCAxMzEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOCwwIEwxMzAsMCBMMTMwLDAgTDEzMCwxMzAgTDgsMTMwIEMzLjU4MTcyMiwxMzAgNS40MTA4MzAwMWUtMTYsMTI2LjQxODI3OCAwLDEyMiBMMCw4IEMtNS40MTA4MzAwMWUtMTYsMy41ODE3MjIgMy41ODE3MjIsOC4xMTYyNDUwMWUtMTYgOCwwIFoiIGlkPSJDZWxsIiBmaWxsLW9wYWNpdHk9IjAuMSIgZmlsbD0ibm9uZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ28iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1LjAwMDAwMCwgMjUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ29zL0NvbXBvbmVudHMvX0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9IkNvbnRhaW5lciIgY3g9IjQwIiBjeT0iNDAiIHI9IjQwIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ29zL05ldHdvcmsvRm94LU5ld3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2LjAwMDAwMCwgMTcuNjAwMDAwKSIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQ3Ljg5MTQwMjcsMzkuNDY2MDYzMyBMNDcuODkxNDAyNyw0NS4yMzA3NjkyIEwtMy42MDczNzAzNGUtMTQsNDUuMjMwNzY5MiBMLTMuNjA3MzcwMzRlLTE0LDM5LjQ2NjA2MzMgTDQ3Ljg5MTQwMjcsMzkuNDY2MDYzMyBaIE0xOC4zNDU4NjY2LDQxLjUzNDUzNzIgTDE4LjE3MDIxMDgsNDEuNTM0NjUzMyBMMTcuODcxODMxNiw0MS41NDg3ODU1IEMxNy4xMjU2NDE5LDQxLjU4MzgxMjUgMTYuMzk2NDQxMiw0MS42NDIwMDE3IDE2LjEwNzI0MzEsNDIuMjk1NzAzNCBMMTYuMDU1Mzk1NSw0Mi40MzQ1NTM1IEwxNy4zNDg5NDU0LDQyLjQzNDU1MzUgTDE3LjM5OTAzODQsNDIuMzYwNzkyNiBDMTcuNTI2ODA0OCw0Mi4yMDE1Mzc1IDE3LjczMDgzMTgsNDIuMTMxODU3MSAxOC4wMTI4MjczLDQyLjE0MzMyMTYgQzE4LjIyNTA4Nyw0Mi4xNTIwMTMxIDE4LjQ5NjM4MjQsNDIuMTQ1Nzg2MyAxOC42MDgyODE2LDQyLjI3NTY0MDcgQzE4LjczOTc2OTksNDIuNDI4NDU2NCAxOC42ODM2ODYxLDQyLjYxOTY3MDYgMTguMjQ1NDgxMiw0Mi42NTk0OTYxIEMxNi40NDk3MjYzLDQyLjgyMjgxOTUgMTUuOTA1Nzk0LDQzLjA4MjUyODMgMTUuOTE4NTQwMyw0My42MTg5Mzk5IEMxNS45MjczOTU2LDQzLjk5MzMyNTQgMTYuMTE0MDI4Niw0NC4zMTQ2NTM1IDE2Ljc5NDU0NzcsNDQuNDUyODEwMyBDMTcuMjIxNzUwNiw0NC41Mzk0NjYzIDE4LjAxNzM4OTIsNDQuNTE0OTQ4NCAxOC42Mjg4MDk5LDQ0LjEyMTg4MjYgQzE4LjY2NzcxOTcsNDQuMTE1MTM2OSAxOC42ODE2NzM2LDQ0LjEyMDU4NTMgMTguNzA0MDgwMiw0NC4xMjE4ODI2IEMxOC42OTQwOTc5LDQ0LjI0MDM5OSAxOC43MTM5MTIzLDQ0LjMxNTc0MzEgMTguNzUzMjE5Myw0NC4zNjI5MjU2IEwxOC43ODYxOTM0LDQ0LjM5MzI2NjYgTDIwLjIyMzQ0MTMsNDQuMzkzMjY2NiBMMjAuMjIzNDQxMyw0NC4zMjY5NzczIEwyMC4xNjY5NjU3LDQ0LjI4Nzk3MjcgQzIwLjEwNzM1NDgsNDQuMjQ1MTM1OCAyMC4wNTEzNzEsNDQuMTk1MjQyNCAyMC4wMTQ0OTAyLDQ0LjEwODQwMSBMMTkuOTkwNjUzMyw0NC4wMzU4NzUxIEwxOS45OTA2NTMzLDQyLjUyNzE3NjkgTDE5Ljk2OTA5NTMsNDIuMzk1ODE5NSBDMTkuODM4MjcxMSw0MS44MDg2MDUyIDE5LjI4ODk3NTIsNDEuNTc4NDY4MiAxOC41MTUwNzA2LDQxLjUzOTkyNDMgTDE4LjM0NTg2NjYsNDEuNTM0NTM3MiBaIE0zLjUwMTc0ODgsNDEuNDg3NDMzNSBDMi4yNzE5MzA0NCw0MS41MTQxNTY4IDEuNjMyMDY1MzEsNDEuOTAxMTI1NiAxLjM4MjEwMzMyLDQyLjUyNjEzOTEgQzEuMTYzNTM3NTIsNDMuMDk5NjUyIDEuMjM0OTE2ODksNDMuNjMwNzQ0OSAxLjg2NjA2MDg2LDQ0LjA3OTU5MjMgQzIuNTY3Nzc5MTcsNDQuNTE1OTg2MiAzLjE2MTIyMDg3LDQ0LjQ4MDE4MjIgMy43NjMxMTUzOSw0NC40ODE5OTgzIEM1LjA4MjQyNjMyLDQ0LjM3OTc3NTIgNS4zODkwMDg4LDQzLjkwNzU3NzQgNS41NjM0MzIwOSw0My4zODcxMjE5IEw0LjE3OTMxNjIsNDMuMzg3MTIxOSBDNC4wMzIxMjk3OCw0My42MTMzNjE4IDMuODgwNjQ5ODYsNDMuODM4OTUzIDMuNDE0NjcxMzMsNDMuNzg5NTI3OSBDMi45MDQ1NTAyOSw0My43MzU1NjI0IDIuNjgyMDkzNTEsNDMuMzY4MDUyNCAyLjcxNzc4MzIsNDIuOTc1Mzc1NyBDMi43ODY2MTMzMSw0Mi4yMTk3Mjk0IDMuMTk2MzczODcsNDIuMTg3Njg3NCAzLjQ3MzMwNDM5LDQyLjE4MjYyODEgQzMuOTU4MDY2OTYsNDIuMTU1NTE1NyA0LjA0MDE4MDA4LDQyLjM2NjMxODMgNC4xNTAzMzUxLDQyLjU3Mjk2OTcgTDUuNjAyMDczNTYsNDIuNTcyOTY5NyBDNS4zOTAwODIxNyw0MS45NjQ5NTAxIDQuODkzNjQ2NjYsNDEuNTAwNDA2IDMuNTAxNzQ4OCw0MS40ODc0MzM1IFogTTQwLjI4MzcyOTcsNDEuNTE3Mzg3IEMzOC43NDQ5NTQ2LDQxLjUyMDUwMTUgMzguMTU0NjEsNDIuMjEzNTQ2MiAzOC4xMTcyMjIxLDQyLjkxODUzNjkgTDM4LjExNTUxNCw0My4wMTQ2ODIzIEMzOC4xMzkxMjgyLDQzLjgwNDgzNTQgMzguNTg1OTIwMiw0NC40MDgwNTUyIDQwLjE5NjY1MjIsNDQuNDc0NjA0IEM0MS4yMDE0NzM1LDQ0LjUxNjAxMjEgNDEuOTM3NTkxLDQ0LjI4NDk2NjEgNDIuMzgwNzg3Nyw0My42ODI4NTA2IEw0Mi40NzEyNjYxLDQzLjU0ODExMDIgTDQxLjEwNjQ3MDksNDMuNTQ4MTEwMiBDNDAuOTM3MDEyLDQzLjY5ODA3MiA0MC44NTA0NzEyLDQzLjg1Njk4NDcgNDAuMzIyNTA1Myw0My44MzgxNzQ3IEMzOS44Mzg1MzY2LDQzLjgyMDkzMjEgMzkuNTkxODg4OCw0My42MDYzOTA5IDM5LjU5MDcyNjQsNDMuMjk3NjY5NSBMMzkuNTk2NTAxOSw0My4yMTEyMTUyIEw0Mi41MjkyMjgzLDQzLjIxMTIxNTIgQzQyLjU4NTA0MzcsNDIuMDczMDEwOCA0MS44MDI0MTk4LDQxLjUxNDI4NjUgNDAuMjgzNzI5Nyw0MS41MTczODcgWiBNMTAuMTUwODk4OCw0MC42MTI5NTk0IEw4LjczNDE3OTE2LDQwLjYxMjk1OTQgTDguNzM0MTc5MTYsNDQuNDI1OTU3MiBMMTAuMTQ0MTkwMiw0NC40MjU5NTcyIEwxMC4xNDQxOTAyLDQyLjY0NDU3NzggQzEwLjE1MTAzMyw0Mi40Nzk2OTc3IDEwLjI4MTcxNjMsNDIuMjQ1NTQ0NiAxMC44MTQ3ODA3LDQyLjIwNzc5NDcgQzExLjE3MjY1MzMsNDIuMTY2NTE4NyAxMS40NDU1ODc1LDQyLjM2NjQ2NjIgMTEuNDkyMjU0Myw0Mi41NTUzMDI5IEwxMS40OTkzMjUsNDIuNjExMzY4MiBMMTEuNDk5MzI1LDQ0LjQyNTk1NzIgTDEyLjkwMjM1OTEsNDQuNDI1OTU3MiBMMTIuOTAyMzU5MSw0Mi40MDYyNzM1IEMxMi44NTk0MjQxLDQxLjkwODc3OTMgMTIuNTgwNDgxLDQxLjUzOTE5MzcgMTEuNTQwMjQ3NCw0MS41MTI5ODkzIEMxMS4xMTgwNTM2LDQxLjUwMjM4MDcgMTAuNzA2MDM2OSw0MS41NTI5NjM3IDEwLjMyNjA1OTYsNDEuODM4MTIwMyBMMTAuMTg1MTEyNiw0MS45NTYzODgzIEwxMC4xNTA4OTg4LDQxLjk1NjM4ODMgTDEwLjE1MDg5ODgsNDAuNjEyOTU5NCBaIE0yNi4yMDA5Mjc0LDQxLjUyOTU5NCBDMjUuNzU3MzU1Niw0MS41MzI0NDggMjUuMzQwMzQ5Nyw0MS41OTM5Mzc1IDI0LjkyODAzOTksNDEuOTUwNjgwNCBDMjQuODk5NTk1NSw0MS45NjcxODE0IDI0Ljg2NDAyMzksNDEuOTkwOTg4NCAyNC44NTA5MzMsNDEuOTc3NjY3MyBMMjQuODQ1NzkyNiw0MS45NjAwMjA2IEwyNC44NDU3OTI2LDQxLjU5OTc3NTEgTDIzLjQ2MTY3NjcsNDEuNTk5Nzc1MSBMMjMuNDYxNjc2Nyw0NC4zODg0NjY4IEwyNC44ODQ1NjgzLDQ0LjM4ODQ2NjggTDI0Ljg4NDU2ODMsNDIuNzA4NjYxOCBDMjQuODg0NTY4Myw0Mi40MTQzMTY0IDI1LjIwNDgzNjMsNDIuMjIzMTAyMiAyNS41OTExMTY4LDQyLjIwODA1NDIgQzI2LjA3NDcxNjUsNDIuMTg5MTQ2OCAyNi4yMjA2NTUzLDQyLjQ0MDY4MDMgMjYuMjQxNjIwMSw0Mi42MDg5MzQxIEwyNi4yNDQzOTkxLDQyLjY1MjQ5MSBMMjYuMjQ0Mzk5MSw0NC4zOTc4MDcgTDI3LjYyMzY4NDgsNDQuMzk3ODA3IEwyNy42MjM2ODQ4LDQyLjM1MzA4NjQgQzI3LjYyMzY4NDgsNDEuOTQwNjkxNiAyNy4yODQ0OTg2LDQxLjUyMjU4ODkgMjYuMjAwOTI3NCw0MS41Mjk1OTQgWiBNMzMuNTYwNzg1Miw0MS41MjU4MzIgQzMzLjExNzIxMzQsNDEuNTI4Njg2IDMyLjcwMDIwNzUsNDEuNTkwMTc1NSAzMi4yODgwMzE5LDQxLjk0NjkxODQgQzMyLjI1OTQ4MDEsNDEuOTYzNTIzMSAzMi4yMjM4ODcsNDEuOTg3MjY3OSAzMi4yMTA3OTE5LDQxLjk3MzkxNzcgTDMyLjIwNTY1MDQsNDEuOTU2MjU4NSBMMzIuMjA1NjUwNCw0MS41OTYwMTMxIEwzMC44MjE2Njg3LDQxLjU5NjAxMzEgTDMwLjgyMTY2ODcsNDQuMzg0NzA0OCBMMzIuMjQ0NDI2MSw0NC4zODQ3MDQ4IEwzMi4yNDQ0MjYxLDQyLjcwNDg5OTcgQzMyLjI0NDQyNjEsNDIuNDEwNTU0NCAzMi41NjQ2OTQxLDQyLjIxOTQ2OTkgMzIuOTUwOTc0Niw0Mi4yMDQyOTIyIEMzMy40MzQ1NzQzLDQyLjE4NTM4NDggMzMuNTgwNTEzMSw0Mi40MzY5MTgzIDMzLjYwMTQ3NzksNDIuNjA1MjcyIEwzMy42MDQyNTY5LDQyLjY0ODg1ODcgTDMzLjYwNDI1NjksNDQuMzk0MDQ1IEwzNC45ODM1NDI2LDQ0LjM5NDA0NSBMMzQuOTgzNTQyNiw0Mi4zNDkzMjQ0IEMzNC45ODM1NDI2LDQxLjkzNjkyOTYgMzQuNjQ0MzU2NCw0MS41MTg4MjY5IDMzLjU2MDc4NTIsNDEuNTI1ODMyIFogTTQ2LjcwMDg5NjcsNDAuNTg5MDkgTDQ1LjI5NzQ2MDEsNDAuNTg5MDkgTDQ1LjI5NzQ2MDEsNDQuMzc5MTI2NiBMNDYuNzAwODk2Nyw0NC4zNzkxMjY2IEw0Ni43MDA4OTY3LDQwLjU4OTA5IFogTTE4LjU4MzU5NCw0My4wNzA4NTMxIEwxOC42NDYzODY0LDQzLjA3NTUyMzIgQzE4LjY4NTAyNzgsNDMuMzQyMjM3MiAxOC42OTE4NzA2LDQzLjUwNDM5MyAxOC42MTI1NzUxLDQzLjU5NDk0MDkgQzE4LjM2MzY4NjUsNDMuODc4NjQ4OCAxOC4wMDkwNzA1LDQzLjk4MDIyMzIgMTcuNTYyNDEyNyw0My44OTQzNDU0IEMxNy40MTg0NDY0LDQzLjg2NjcxNDEgMTcuMjU0MjIwMiw0My43Mjk4NTQ1IDE3LjI0Mjk0OTgsNDMuNjIyOTYxNCBDMTcuMjI5OTM1MSw0My40OTg0MjU3IDE3LjM0MTE2MzUsNDMuMzEyNTMwMiAxNy41NTc1ODI1LDQzLjI4MTM5NjMgQzE3Ljg5NTk2MzcsNDMuMjMyNzQ5NSAxOC4xODk2NjU3LDQzLjIzMTMyMjUgMTguNTgzNTk0LDQzLjA3MDg1MzEgWiBNNDAuMzYxMTQ2OCw0Mi4xMTQzOTI5IEM0MC44Mzc2MTMxLDQyLjEwMjM4MjYgNDEuMTE3OTA5MSw0Mi4yODg3NjA5IDQxLjE0NDM2NzQsNDIuNjI2NzY0OSBMNDEuMTQ1MjQ2NSw0Mi43MjI2NzIgTDM5LjUxOTA4NDgsNDIuNzIyNjcyIEMzOS41ODc1MTI0LDQyLjMzODgxNjcgMzkuODU0MTExNyw0Mi4xMjQxMjIzIDQwLjM2MTE0NjgsNDIuMTE0MzkyOSBaIE00Ny44OTE0MDI3LC0xLjEwNjgwNjk1ZS0xNCBMNDcuODkxNDAyNywzOC4xMzU3NDY2IEwwLjI5Nzk2MDc4NSwzOC4xMzUgTDAuMjk3OTk1NDgyLDM4LjEzNDY3OTcgTDYuOTM4OTYwOTksMjcuNzA5Nzg2MSBMNi45Mzg5NjA5OSwyNC42NTk2Njc4IEw4Ljg2MjU4MTUzLDI0LjY1OTY2NzggTDE1LjkxNTg1NjksMTMuNTk3NzA0OCBMMTUuOTE1ODU2OSwxMC4yNTE2NTY2IEwxOC4xMTQyNjEyLDEwLjI1MTY1NjYgTDIxLjgzNDAwODcsNC4zNjQ1ODQxNSBDMjMuMTY0MzU5Miw0LjY5ODg1NTI0IDI0LjQzMDQxNSw1LjA5MzgxMzYyIDI1LjYyNzA3NDgsNS41MzE3MTUwMyBDMjkuMzQzNDk4NCw2Ljg5MTQ3MjE2IDMyLjM5MDQwNDksOC42NjYxMTc5MyAzNC42MTAxNDI2LDEwLjMyMDIwNDYgTDM0Ljg0NTIxMTUsMTAuMDA4NDA0NyBDMzIuNTk1Njg3Nyw4LjMzMjMxMzI5IDI5LjUxNzY1MzQsNi41NDAxOTcxMyAyNS43NjI1ODgzLDUuMTY2MDM2OTEgQzI0LjU5MDcyNjMsNC43MzcyMjIxNSAyMy4zNTI4OTY5LDQuMzQ5MTQxMzQgMjIuMDUzODQ3Myw0LjAxODEzNTA4IEwyNC41NzIwODIyLDAuMDMxNjA2NzUxOSBMMTguNDM0Nzk3NSwwLjAzMTYwNjc1MTkgTDE2Ljk2NjYzMTUsMy4wODMzNDIwNCBDMTUuNTY4OTMzOCwyLjkyMzUzMzM1IDE0LjExOTMxMDQsMi44MzYyMDU4NyAxMi42MjIwNzQzLDIuODM2MjA1ODcgTDEyLjM2OTk2MDgsMi44MzggTDEzLjM2MjI5OTksMC4wMDg0MDE3OTQ4IEw3LjkwMDcwNDE3LDAuMDA4NDAxNzk0OCBMNy4yMjQzOTMwNSwzLjIxMjEzNTkgQzQuOTAxMDcwMTQsMy41MzUwMTQ2IDIuNDg4NDMyNTEsNC4wNzc3MDc3NyAxLjMwODk0ODYzZS0wNSw0Ljg4NTI2NDE5IEwtNy42NTE5OTRlLTE1LC0xLjEwNjgwNjk1ZS0xNCBMNDcuODkxNDAyNywtMS4xMDY4MDY5NWUtMTQgWiBNMTIuNjIyMDc0MywzLjIyNTg4OTEyIEMxNC4wNTYyMzM3LDMuMjI1ODg5MTIgMTUuNDQ2MTg3MiwzLjMwNjgyODQ0IDE2Ljc4ODEwODksMy40NTUzOTkyNCBMMC4xMDI5NjA3ODUsMzguMTM1IEwtNy42NTE5OTRlLTE1LDM4LjEzNTc0NjYgTDAuMDAwMjY4MzQzNTIzLDM4LjExMTc0MTUgTDAuMDExNTM4NzcxNSwzOC4xMTE3NDE1IEwxMi4yMzUxMTc1LDMuMjI3ODUxNjYgQzEyLjM2NDQ1NzEsMy4yMjY1NDAwOCAxMi40OTM0NDM2LDMuMjI1ODg5MTIgMTIuNjIyMDc0MywzLjIyNTg4OTEyIFogTTcuMTM5Mzg4MzksMy42MTc2MTI2NSBMMC4wMDAyNjgzNDM1MjMsMzcuNDYzMDY5NiBMLTMuOTIxNTE1MjllLTA1LDUuMjk2IEwwLjEzNDU4OTc5Myw1LjI1MTUwMjcgQzIuNTQ2ODg0OTYsNC40Njk1MDUwMyA0Ljg4NTczNDI5LDMuOTM4OTI2MjUgNy4xMzkzODgzOSwzLjYxNzYxMjY1IFogTTQxLjg3NDQ3MDEsMjQuNzY5NTU4IEMzOS44NzM1NjY2LDI1LjAwNzg3NTUgMzguOTI0MDMzLDI2LjE0MjI1MTIgMzguNTcxMTYxMywyNy42NTA1NzM0IEMzOC4zMTExMzY0LDI5LjU4MTc4NiAzOC44ODI3MDgxLDMwLjE1ODU3NTggMzkuNDYxNzkzNSwzMC42NzY0MTk4IEM0MC4xODg3MzYxLDMxLjMyNjQyNTMgNDEuMjExNzk1NywzMS42MzM2OTEgNDIuMzI3OTcwNiwzMS45NDc4OTE0IEM0My4wMTU2MDA5LDMyLjE0MTUzMjggNDMuODEzNjU0NSwzMi4zNDI1MDkgNDMuNzA0MzA0NiwzMy4xMDY4MDU3IEM0My42NTM1ODc2LDMzLjQ2MTAxNDcgNDMuNDI2NTY5LDMzLjc2ODE0NjkgNDIuNTIyMjUxMywzMy43MTg0MDMgQzQxLjQwMjY3OTgsMzMuNzI2NzU1NiA0MS4wODk3NzA0LDMzLjE3NzM3NjYgNDAuODMxMjExNCwzMi41OTA0IEw0MC43NDA5ODcsMzIuMzgyNTE3NiBMMzguMDY5MDkwNiwzMi45Nzc4NDQ4IEMzOC40MjEyOTE0LDM0LjY2MjYwNDcgMzkuNDczMTk4MSwzNS43NTcyMzg1IDQwLjc4OTQyMywzNi4xMTYzODE5IEM0Mi43NzA4NzE2LDM2LjY1NzAzMDcgNDQuMDQyOTU0MSwzNi4zMzY1NjIzIDQ1LjA4MjI0ODUsMzUuNjk4MTU5MiBDNDYuNDQ3MTc3OSwzNC44NTk3MTM0IDQ3LjE1Njk0NjUsMzMuMTI0Mjc2IDQ2LjU4MzYzMDYsMzEuMjY5MjEzMSBDNDYuMzQ0NjcwNiwzMC40OTYxMTQ2IDQ1Ljc1ODM0MDEsMjkuODkwOTE4NyA0NC44NTc1MTA4LDI5LjU1OTI0NzggQzQ0LjMwMjQ0MjMsMjkuMzU0ODA0MSA0My43NTUyODk4LDI5LjA4NjQ4MDIgNDIuNDA4NzQyLDI4LjgwOTM1NDMgQzQxLjg1MzI3MDksMjguNjk1MTk2NiA0MS40MjEyMzc5LDI4LjQwNzY2ODUgNDEuNDY5NTM5NywyOC4wMDQ2NDkxIEM0MS41MDA4MDE3LDI3Ljc0MzUyNjYgNDEuNjkxNDU5OCwyNy4xNzI0NzEzIDQyLjYzNTM1ODEsMjcuMTgzODA3IEM0My4zNDEyNzQxLDI3LjE5MjIyNzkgNDMuNjcxODk1MiwyNy43MzY3MzQ3IDQzLjk4NzYzMzgsMjguMjE3MTM0MiBMNDQuMDYwMzk2NCwyOC4zMjY1ODQ1IEw0Ni41NTQxMTI4LDI3LjUzNzg4MjcgQzQ2LjAxMjQ2MTQsMjUuOTYzMTQ2MyA0NC44NjE1MzYsMjQuNDEzODgyIDQxLjg3NDQ3MDEsMjQuNzY5NTU4IFogTTMzLjQ4NzkyOTksMjUuMDQ0MTUgTDMxLjA0Mjc4MzgsMjUuMDQ0MTUgTDI5LjczMTEyMDYsMzEuNjU5Mjk2NCBMMjguMzM4NTUxOSwyNS4wNjAyODY3IEwyNS40NDAxNzM1LDI1LjA2MDI4NjcgTDI4LjA3OTYwMDQsMzYuMjQ2Njc2NCBMMzAuNzM1MTI3OSwzNi4yNDY2NzY0IEwzMi4wMzA1NTYzLDI5Ljg4OTA1MTYgTDMzLjM1ODQ1NDIsMzYuMjk0ODIgTDM1Ljk0OTE3NjcsMzYuMjk0ODIgTDM4LjYwNDgzODQsMjUuMDYwMjg2NyBMMzYuMjU2ODMyNiwyNS4wNjAyODY3IEwzNC44NjQyNjM5LDMxLjU2MjYwOTEgTDMzLjQ4NzkyOTksMjUuMDQ0MTUgWiBNMTYuODk3NzI1OCwyNS4wOTg0MjgyIEwxNC4wNzcwMzI5LDI1LjA5ODQyODIgTDE0LjA3NzAzMjksMzAuNzQ3MjM0OSBMMTAuNjc1NTEwNCwyNS4xMTIyOTc5IEw3LjM5ODQ5OTI3LDI1LjExMjI5NzkgTDcuMzk4NDk5MjcsMzYuMjcyMTQ4NSBMMTAuMjc0NDcxLDM2LjI3MjE0ODUgTDEwLjI4ODQyNDgsMjkuODY3NDQ3IEwxNC4xMzQ5OTUxLDM2LjI3MjE0ODUgTDE2Ljg5NzcyNTgsMzYuMjcyMTQ4NSBMMTYuODk3NzI1OCwyNS4wOTg0MjgyIFogTTI0Ljg4Njg0OTIsMjUuMDc2MDIzNCBMMTcuNjAwMTE1LDI1LjA3NjE1NjggTDE3LjYwMDExNSwzNi4yNjIxNDY0IEwyNC45ODM5ODk1LDM2LjI2MjE0NjQgTDI0Ljk4Mzk4OTUsMzMuNzAyOTMzIEwyMC40MTc0NTM2LDMzLjcwMjkzMyBMMjAuNDE3NDUzNiwzMS43NTU0NTAzIEwyNC4wOTMyMjMyLDMxLjc1NTQ1MDMgTDI0LjA5MzIyMzIsMjkuMzQxMjAxMiBMMjAuNDMzNjg4NCwyOS4zNDEyMDEyIEwyMC40MzM2ODg0LDI3LjY4MzUxMzggTDI0Ljg4Njg0OTIsMjcuNjgzNTEzOCBMMjQuODg2ODQ5MiwyNS4wNzYwMjM0IFogTTMwLjQ1NzY2MDcsMTAuNjg2ODE2MyBDMjguNzAyMDIzMiwxMC42ODY4MTYzIDI3LjExMjM1NjIsMTEuMzg0NDMyIDI1Ljk2MTY5OTIsMTIuNTEyMjcyOSBDMjQuODExMDQyMSwxMy42Mzk5ODA1IDI0LjA5OTI2MDksMTUuMTk4MzEzMyAyNC4wOTkyNjA5LDE2LjkxOTQ4MSBDMjQuMDk5MjYwOSwxOC42NDA1MTUzIDI0LjgxMTA0MjEsMjAuMTk4ODQ4MiAyNS45NjE2OTkyLDIxLjMyNjY4OTIgQzI3LjExMjM1NjIsMjIuNDU0NTMwMSAyOC43MDIwMjMyLDIzLjE1MjAxMjQgMzAuNDU3NjYwNywyMy4xNTIwMTI0IEMzMi4yMTM0MzI0LDIzLjE1MjAxMjQgMzMuODAzMDk5NCwyMi40NTQ1MzAxIDM0Ljk1MzYyMjMsMjEuMzI2Njg5MiBDMzYuMTA0Mjc5MywyMC4xOTg4NDgyIDM2LjgxNjA2MDUsMTguNjQwNTE1MyAzNi44MTYwNjA1LDE2LjkxOTQ4MSBDMzYuODE2MDYwNSwxNS4xOTgzMTMzIDM2LjEwNDI3OTMsMTMuNjM5OTgwNSAzNC45NTM2MjIzLDEyLjUxMjI3MjkgQzMzLjg3MDc3NzIsMTEuNDUwNzc1NSAzMi4zOTg5MzI1LDEwLjc3MDM3NzQgMzAuNzY1NzIyOSwxMC42OTQwMDM1IEwzMC40NTc2NjA3LDEwLjY4NjgxNjMgWiBNMjQuMDIzMDUxNCwxMC43MjkyMjUzIEwxNi4zMDg5ODAxLDEwLjcyOTA5MiBMMTYuMzA4OTgwMSwyMy4wMDMzMTQgTDE5LjkxNjg1ODgsMjMuMDAzMzE0IEwxOS45MTY4NTg4LDE5LjAyODU5ODIgTDIzLjQ3NTc2NDgsMTkuMDI4NTk4MiBMMjMuNDc1NzY0OCwxNS43MTQ2OTAzIEwxOS45NTU5MDI4LDE1LjcxNDY5MDMgTDE5Ljk1NTkwMjgsMTQuMDcyMjA2MSBMMjQuMjg3MTAxNCwxNC4wNzIyMDYxIEwyNC4wMjMwNTE0LDEwLjcyOTIyNTMgWiBNMzkuMDYyNjMyNSwxMC43NTA0Mjk5IEwzNS4xMTUxNjUxLDEwLjc1MDQyOTkgTDM4LjY1NDc1MDMsMTYuNjY2NjI3IEwzNC45ODM2NzY3LDIyLjk3NTA0MTMgTDM4Ljg2ODc1NDMsMjIuOTc1MDQxMyBMNDAuNjI1MTk2OCwxOS45NTgzOTY5IEw0Mi40Mzg5MzA3LDIyLjk5ODkxMzEgTDQ2LjQzMjU1MzIsMjMuMDAyNTEzOCBMNDIuNjAwODc2LDE2LjYxMzAxNTYgTDQ2LjAxNzY5NDEsMTAuNzcwOTY3NiBMNDIuMDkwNzU1LDEwLjc3MDk2NzYgTDQwLjYwMTk4NTEsMTMuMjY1NTAwNSBMMzkuMDYyNjMyNSwxMC43NTA0Mjk5IFogTTMwLjQ2NzA1MjcsMTMuMTA5ODY3MiBDMzEuMTUyNDIsMTMuMTUwMDcxNCAzMS40MDA0Mjc4LDEzLjY1OTE0OTYgMzEuNDk1MTM3OCwxNC4wNzI1MTY4IEwzMS41MTMxOSwxNC4xNTk0MjQ4IEwzMS41MTMxOSwxOS40NzUzNjA0IEMzMS4zOTk5NDksMTkuOTUzNTk1OCAzMS4yNTg5MzQ1LDIwLjUyMzE4NDIgMzAuMzc5MDM2MSwyMC41MTUxODI1IEMyOS45NTg5MjUxLDIwLjUxMTM0MzYgMjkuNDk0MjczOSwyMC4xNjg5NzI1IDI5LjM1ODI3ODQsMTkuNTg1MTI5NCBMMjkuMzMyODk4OCwxOS40NDYxNTQxIEwyOS4zNDI2OTM0LDEzLjk5NDE4OTUgQzI5LjQ2NTcyODksMTMuNDcxMDExIDMwLjA1ODM2NTYsMTMuMDg1NzI4NyAzMC40NjcwNTI3LDEzLjEwOTg2NzIgWiIgaWQ9IkZveC1OZXdzLUNoYW5uZWwiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgFnc as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFox(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\",\n fillOpacity: 0.1\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.765 52.2l3.114 5.488 3.114-5.488h8.323l-7.263 12.844 7.263 12.8H86.95l-3.072-5.418-3.072 5.417h-8.364l7.262-12.799L72.443 52.2h8.322zm-17.302.008c7.08 0 12.818 5.739 12.818 12.818s-5.739 12.818-12.818 12.818-12.818-5.74-12.818-12.818c0-7.08 5.74-12.818 12.818-12.818zM50.545 52.2l.47 6.994h-8.653v3.356h7.057v7.017h-7.057v8.277H34.6V52.2h15.945zm12.954 5.28c-1.17 0-2.117 1.075-2.117 2.276l-.002 10.5c0 1.202.949 2.175 2.118 2.175 1.17 0 2.21-.942 2.21-2.144V59.756c0-1.201-1.04-2.276-2.21-2.276z\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94PC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAwLjAwMDAwMCwgLTEzMS4wMDAwMDApIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICA8ZyBpZD0iQ2VsbC9DaGFubmVsIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDAuMDAwMDAwLCAxMzEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOCwwIEwxMzAsMCBMMTMwLDAgTDEzMCwxMzAgTDgsMTMwIEMzLjU4MTcyMiwxMzAgNS40MTA4MzAwMWUtMTYsMTI2LjQxODI3OCAwLDEyMiBMMCw4IEMtNS40MTA4MzAwMWUtMTYsMy41ODE3MjIgMy41ODE3MjIsOC4xMTYyNDUwMWUtMTYgOCwwIFoiIGlkPSJDZWxsIiBmaWxsLW9wYWNpdHk9IjAuMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPGcgaWQ9IkV4cG9ydGFibGUtQ2hhbm5lbC1Mb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9OZXR3b3JrL0ZPWCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS42MDAwMDAsIDI3LjIwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDYuMTY1MTAxNSw0LjY0Mjk1OTIzZS0wNSBMNDkuMjc5MDQxNCw1LjQ4NzkzMTM4IEw1Mi4zOTMwNzQxLDQuNjQyOTU5MjNlLTA1IEw2MC43MTU1Nzg2LDQuNjQyOTU5MjNlLTA1IEw1My40NTMwNjE3LDEyLjg0NDA1MDMgTDYwLjcxNTU3ODYsMjUuNjQzNDgxNyBMNTIuMzUwODIzMiwyNS42NDM0ODE3IEw0OS4yNzkwNDE0LDIwLjIyNTk4NCBMNDYuMjA3MzUyNCwyNS42NDM0ODE3IEwzNy44NDI1OTcxLDI1LjY0MzQ4MTcgTDQ1LjEwNTExMzksMTIuODQ0MDUwMyBMMzcuODQyNTk3MSw0LjY0Mjk1OTIzZS0wNSBMNDYuMTY1MTAxNSw0LjY0Mjk1OTIzZS0wNSBaIE0yOC44NjMwOTUzLDAuMDA4MTgwODk0MTcgQzM1Ljk0MjEyMjQsMC4wMDgxODA4OTQxNyA0MS42ODA3MjcyLDUuNzQ2Nzg1NjQgNDEuNjgwNzI3MiwxMi44MjU4MTI3IEM0MS42ODA3MjcyLDE5LjkwNDgzOTggMzUuOTQyMTIyNCwyNS42NDM1Mzc0IDI4Ljg2MzA5NTMsMjUuNjQzNTM3NCBDMjEuNzg0MDY4MywyNS42NDM1Mzc0IDE2LjA0NTQ2MzUsMTkuOTA0ODM5OCAxNi4wNDU0NjM1LDEyLjgyNTgxMjcgQzE2LjA0NTQ2MzUsNS43NDY3ODU2NCAyMS43ODQwNjgzLDAuMDA4MTgwODk0MTcgMjguODYzMDk1MywwLjAwODE4MDg5NDE3IFogTTE1Ljk0NDU3MiwwIEwxNi40MTQ3MTgxLDYuOTk0MzM5NSBMNy43NjIwOTkyNCw2Ljk5NDMzOTUgTDcuNzYyMDk5MjQsMTAuMzUwMTc3NiBMMTQuODE4NjU0NCwxMC4zNTAxNzc2IEwxNC44MTg2NTQ0LDE3LjM2NzA4MTkgTDcuNzYyMDk5MjQsMTcuMzY3MDgxOSBMNy43NjIwOTkyNCwyNS42NDM1MjgxIEwxLjE5NDE0NjgyZS0xNCwyNS42NDM1MjgxIEwxLjE5NDE0NjgyZS0xNCwwIEwxNS45NDQ1NzIsMCBaIE0yOC44OTg3NTMzLDUuMjc5NzAzOTUgQzI3LjcyODU0MTgsNS4yNzk3MDM5NSAyNi43ODI0OTI1LDYuMzU0NjQxODcgMjYuNzgyNDkyNSw3LjU1NTc3NTQyIEwyNi43ODI0OTI1LDcuNTU1Nzc1NDIgTDI2Ljc3OTk4NTMsMTguMDU2MTA2MyBDMjYuNzc5OTg1MywxOS4yNTc5ODI3IDI3LjcyODU0MTgsMjAuMjMxNDI1NiAyOC44OTc5MTc1LDIwLjIzMTQyNTYgQzMwLjA2Nzk0MzMsMjAuMjMxNDI1NiAzMS4xMDgzMzc2LDE5LjI4ODUzMzQgMzEuMTA4MzM3NiwxOC4wODY3NDk4IEwzMS4xMDgzMzc2LDE4LjA4Njc0OTggTDMxLjEwODMzNzYsNy41NTU3NzU0MiBDMzEuMTA4MzM3Niw2LjM1NDY0MTg3IDMwLjA2Nzk0MzMsNS4yNzk3MDM5NSAyOC44OTg3NTMzLDUuMjc5NzAzOTUgWiIgaWQ9Ik5ldy1Gb3gtTG9nbyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgFox as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFoxdep(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.78 74.283l1.3 1.261v6.55l-1.3 1.26h-5.06v-9.071h5.06zm7.846 0v1.854h-2.991v1.657h2.693v1.853h-2.693V81.5h3.018v1.855H45.32v-9.072h5.305zm6.558 0l1.298 1.261v3.512l-1.298 1.262h-2.776v3.037h-2.314v-9.072h5.09zm7.497 0l1.297 1.261v6.55l-1.297 1.26h-3.819l-1.298-1.26v-6.55l1.298-1.261h3.819zm7.748 0l1.272 1.236v3.063l-1.04 1.011 1.201 3.762H71.51l-1.057-3.472h-.92v3.472h-2.314v-9.072h5.211zm8.291 0v1.945h-1.947v7.127H76.47v-7.127h-1.95v-1.945h6.2zm6.288 0v1.854h-2.99v1.657h2.692v1.853h-2.692V81.5h3.017v1.855h-5.33v-9.072h5.303zm7.554 0v.92l-.88.814h-2.79l-.296.29v1.314l.229.224h2.695l1.07 1.028v3.247l-1.274 1.235H88.24v-1.052l.706-.697h3.032l.295-.29v-1.34l-.23-.225H89.35l-1.068-1.025v-3.207l1.272-1.236h5.008zm-53.16 1.76h-1.368v5.55h1.367l.367-.355v-4.84l-.367-.354zm21.898 0h-1.057l-.368.356v4.839l.368.356H63.3l.38-.356v-4.84l-.38-.354zm-7.471-.118h-1.421v2.75h1.42l.339-.33v-2.09l-.338-.33zm15.219-.012h-1.515v2.329h1.515l.34-.317v-1.697l-.34-.315zM52.408 48.28l.45 6.67h-8.221v3.178h6.7v6.657h-6.749v7.882h-6.864V48.28h14.683zm28.024.038l2.998 5.25 3.05-5.25h7.354L87.157 59.98l7.348 12.651h-7.601l-3.565-6.152-3.528 6.163-7.39.004 7.205-12.585-6.802-11.743h7.608zm-16.144.332c6.42 0 11.623 5.311 11.623 11.854 0 6.552-5.202 11.859-11.623 11.859-6.416 0-11.616-5.307-11.616-11.86 0-6.542 5.2-11.853 11.616-11.853zm.034 4.875c-1.086 0-1.966.998-1.966 2.108l-.004 9.71c0 1.113.884 2.014 1.97 2.014 1.09 0 2.056-.87 2.056-1.984v-9.74c0-1.11-.966-2.108-2.056-2.108z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IERlcG9ydGVzPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAwLjAwMDAwMCwgLTQxMS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC1EZXBvcnRlcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjAwMDAwMCwgNDExLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9OZXR3b3JrL0RlcG9ydGVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjgwMDAwMCwgOS42MDAwMDApIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuOTgwNjUyLDM5LjY4MzAwODggTDE0LjI4MDE5OCw0MC45NDQwMTA4IEwxNC4yODAxOTgsNDcuNDkzNDI0OCBMMTIuOTgwNjUyLDQ4Ljc1NDg2NDggTDcuOTIsNDguNzU0ODY0OCBMNy45MiwzOS42ODMwMDg4IEwxMi45ODA2NTIsMzkuNjgzMDA4OCBaIE0yMC44MjU1Mzg2LDM5LjY4MjgzMzYgTDIwLjgyNTUzODYsNDEuNTM3MzI1NiBMMTcuODM0ODc0Niw0MS41MzczMjU2IEwxNy44MzQ4NzQ2LDQzLjE5NDI3OTYgTDIwLjUyNzY5ODYsNDMuMTk0Mjc5NiBMMjAuNTI3Njk4Niw0NS4wNDcwMTk2IEwxNy44MzQ4NzQ2LDQ1LjA0NzAxOTYgTDE3LjgzNDg3NDYsNDYuOTAwMTk3NiBMMjAuODUyNjk0Niw0Ni45MDAxOTc2IEwyMC44NTI2OTQ2LDQ4Ljc1NDY4OTYgTDE1LjUyMDkyMDYsNDguNzU0Njg5NiBMMTUuNTIwOTIwNiwzOS42ODI4MzM2IEwyMC44MjU1Mzg2LDM5LjY4MjgzMzYgWiBNMjcuMzgzNTgxMiwzOS42ODI5NjUgTDI4LjY4MTgxMzIsNDAuOTQ0NDA1IEwyOC42ODE4MTMyLDQ0LjQ1NTg1MSBMMjcuMzgzNTgxMiw0NS43MTgxNjcgTDI0LjYwNzUzNzIsNDUuNzE4MTY3IEwyNC42MDc1MzcyLDQ4Ljc1NDgyMSBMMjIuMjk0MDIxMiw0OC43NTQ4MjEgTDIyLjI5NDAyMTIsMzkuNjgyOTY1IEwyNy4zODM1ODEyLDM5LjY4Mjk2NSBaIE0zNC44ODA2OTU4LDM5LjY4MzAwODggTDM2LjE3NzYxMzgsNDAuOTQ0MDEwOCBMMzYuMTc3NjEzOCw0Ny40OTM0MjQ4IEwzNC44ODA2OTU4LDQ4Ljc1NDg2NDggTDMxLjA2MjIxMTgsNDguNzU0ODY0OCBMMjkuNzYzNTQxOCw0Ny40OTM0MjQ4IEwyOS43NjM1NDE4LDQwLjk0NDAxMDggTDMxLjA2MjIxMTgsMzkuNjgzMDA4OCBMMzQuODgwNjk1OCwzOS42ODMwMDg4IFogTTQyLjYyOTE3ODYsMzkuNjgyODMzNiBMNDMuOTAxMTMwNiw0MC45MTg4Njk2IEw0My45MDExMzA2LDQzLjk4MTgwMzYgTDQyLjg2MDg4MDYsNDQuOTkzMTQ1NiBMNDQuMDYyMzE0Niw0OC43NTQ2ODk2IEw0MS43MDg5NDA2LDQ4Ljc1NDY4OTYgTDQwLjY1MjA0NjYsNDUuMjgyNjYzNiBMMzkuNzMyNjg0Niw0NS4yODI2NjM2IEwzOS43MzI2ODQ2LDQ4Ljc1NDY4OTYgTDM3LjQxNzg1NDYsNDguNzU0Njg5NiBMMzcuNDE3ODU0NiwzOS42ODI4MzM2IEw0Mi42MjkxNzg2LDM5LjY4MjgzMzYgWiBNNTAuOTIwNDc0OCwzOS42ODI4MzM2IEw1MC45MjA0NzQ4LDQxLjYyNzk5MTYgTDQ4Ljk3MjY4ODgsNDEuNjI3OTkxNiBMNDguOTcyNjg4OCw0OC43NTQ2ODk2IEw0Ni42NzA1NjA4LDQ4Ljc1NDY4OTYgTDQ2LjY3MDU2MDgsNDEuNjI3OTkxNiBMNDQuNzIxMDIyOCw0MS42Mjc5OTE2IEw0NC43MjEwMjI4LDM5LjY4MjgzMzYgTDUwLjkyMDQ3NDgsMzkuNjgyODMzNiBaIE01Ny4yMDc3NDU4LDM5LjY4MjgzMzYgTDU3LjIwNzc0NTgsNDEuNTM3MzI1NiBMNTQuMjE3NTE5OCw0MS41MzczMjU2IEw1NC4yMTc1MTk4LDQzLjE5NDI3OTYgTDU2LjkwOTkwNTgsNDMuMTk0Mjc5NiBMNTYuOTA5OTA1OCw0NS4wNDcwMTk2IEw1NC4yMTc1MTk4LDQ1LjA0NzAxOTYgTDU0LjIxNzUxOTgsNDYuOTAwMTk3NiBMNTcuMjM0OTAxOCw0Ni45MDAxOTc2IEw1Ny4yMzQ5MDE4LDQ4Ljc1NDY4OTYgTDUxLjkwNDQ0MTgsNDguNzU0Njg5NiBMNTEuOTA0NDQxOCwzOS42ODI4MzM2IEw1Ny4yMDc3NDU4LDM5LjY4MjgzMzYgWiBNNjQuNzYyNDEzNiwzOS42ODI4MzM2IEw2NC43NjI0MTM2LDQwLjYwMzk0NzYgTDYzLjg4MjkwOTYsNDEuNDE3MzEzNiBMNjEuMDkyODQ5Niw0MS40MTczMTM2IEw2MC43OTYzMjM2LDQxLjcwNzcwNzYgTDYwLjc5NjMyMzYsNDMuMDIxMjY5NiBMNjEuMDI0OTU5Niw0My4yNDUwODc2IEw2My43MTk1MzU2LDQzLjI0NTA4NzYgTDY0Ljc4OTU2OTYsNDQuMjcyNjM1NiBMNjQuNzg5NTY5Niw0Ny41MTk5Njc2IEw2My41MTU4NjU2LDQ4Ljc1NDY4OTYgTDU4LjQ0MDMyMTYsNDguNzU0Njg5NiBMNTguNDQwMzIxNiw0Ny43MDM0ODk2IEw1OS4xNDU1MDE2LDQ3LjAwNTc1NTYgTDYyLjE3Nzc3NTYsNDcuMDA1NzU1NiBMNjIuNDczNDI1Niw0Ni43MTU3OTk2IEw2Mi40NzM0MjU2LDQ1LjM3NTUxOTYgTDYyLjI0MzkxMzYsNDUuMTUxMjYzNiBMNTkuNTUwMjEzNiw0NS4xNTEyNjM2IEw1OC40ODIzNjk2LDQ0LjEyNTkwNTYgTDU4LjQ4MjM2OTYsNDAuOTE4ODY5NiBMNTkuNzU0MzIxNiwzOS42ODI4MzM2IEw2NC43NjI0MTM2LDM5LjY4MjgzMzYgWiBNMTEuNjAxMzksNDEuNDQzNzY4OCBMMTAuMjMzOTU0LDQxLjQ0Mzc2ODggTDEwLjIzMzk1NCw0Ni45OTM2NjY4IEwxMS42MDEzOSw0Ni45OTM2NjY4IEwxMS45Njc1NTgsNDYuNjM4MDEwOCBMMTEuOTY3NTU4LDQxLjc5ODU0ODggTDExLjYwMTM5LDQxLjQ0Mzc2ODggWiBNMzMuNDk5NjgxOCw0MS40NDM3Njg4IEwzMi40NDMyMjU4LDQxLjQ0Mzc2ODggTDMyLjA3NTMwNTgsNDEuNzk4NTQ4OCBMMzIuMDc1MzA1OCw0Ni42MzgwMTA4IEwzMi40NDMyMjU4LDQ2Ljk5MzY2NjggTDMzLjQ5OTY4MTgsNDYuOTkzNjY2OCBMMzMuODgwMzAzOCw0Ni42MzgwMTA4IEwzMy44ODAzMDM4LDQxLjc5ODU0ODggTDMzLjQ5OTY4MTgsNDEuNDQzNzY4OCBaIE0yNi4wMjg4NDcyLDQxLjMyNTQ2NSBMMjQuNjA3NTM3Miw0MS4zMjU0NjUgTDI0LjYwNzUzNzIsNDQuMDc0NzkxIEwyNi4wMjg4NDcyLDQ0LjA3NDc5MSBMMjYuMzY2OTgzMiw0My43NDQxMDEgTDI2LjM2Njk4MzIsNDEuNjU0NDAzIEwyNi4wMjg4NDcyLDQxLjMyNTQ2NSBaIE00MS4yNDc3MjY2LDQxLjMxMzA2OTYgTDM5LjczMjY4NDYsNDEuMzEzMDY5NiBMMzkuNzMyNjg0Niw0My42NDE5MTU2IEw0MS4yNDc3MjY2LDQzLjY0MTkxNTYgTDQxLjU4NzYxNDYsNDMuMzI0ODAzNiBMNDEuNTg3NjE0Niw0MS42Mjc5OTE2IEw0MS4yNDc3MjY2LDQxLjMxMzA2OTYgWiBNMjIuNjA3MDU5OCwxMy42OCBMMjMuMDU3NzYxOCwyMC4zNTAzMDIgTDE0LjgzNjkzOTgsMjAuMzUwMzAyIEwxNC44MzY5Mzk4LDIzLjUyNzk5MiBMMjEuNTM3MDI1OCwyMy41Mjc5OTIgTDIxLjUzNzAyNTgsMzAuMTg1MTU0IEwxNC43ODgzMjE4LDMwLjE4NTE1NCBMMTQuNzg4MzIxOCwzOC4wNjY5NjQgTDcuOTIzNTQ3OCwzOC4wNjY5NjQgTDcuOTIzNTQ3OCwxMy42OCBMMjIuNjA3MDU5OCwxMy42OCBaIE01MC42MzI0ODk4LDEzLjcxNzYyNDIgTDUzLjYzMDE2MTgsMTguOTY3MDU0MiBMNTYuNjgwMzkzOCwxMy43MTc2MjQyIEw2NC4wMzM1Mzc4LDEzLjcxNzYyNDIgTDU3LjM1NjY2NTgsMjUuMzc5ODEyMiBMNjQuNzA0NTUzOCwzOC4wMzEwMDQyIEw1Ny4xMDM1MDE4LDM4LjAzMTAwNDIgTDUzLjUzODYxOTgsMzEuODc4ODU2MiBMNTAuMDEwOTY3OCwzOC4wNDE1MTYyIEw0Mi42MjE0Njk4LDM4LjA0NTg5NjIgTDQ5LjgyNTY5MzgsMjUuNDYwODQyMiBMNDMuMDI0NDI5OCwxMy43MTc2MjQyIEw1MC42MzI0ODk4LDEzLjcxNzYyNDIgWiBNMzQuNDg3ODUzNiwxNC4wNDk1NDA2IEM0MC45MDg5MzM2LDE0LjA0OTU0MDYgNDYuMTExNDk3NiwxOS4zNjExNjY2IDQ2LjExMTQ5NzYsMjUuOTAzNTcyNiBDNDYuMTExNDk3NiwzMi40NTY0OTA2IDQwLjkwODkzMzYsMzcuNzYyODYwNiAzNC40ODc4NTM2LDM3Ljc2Mjg2MDYgQzI4LjA3MjQ2NzYsMzcuNzYyODYwNiAyMi44NzIwOTM2LDMyLjQ1NjQ5MDYgMjIuODcyMDkzNiwyNS45MDM1NzI2IEMyMi44NzIwOTM2LDE5LjM2MTE2NjYgMjguMDcyNDY3NiwxNC4wNDk1NDA2IDM0LjQ4Nzg1MzYsMTQuMDQ5NTQwNiBaIE0zNC41MjI0NTU2LDE4LjkyNTM1NjYgQzMzLjQzNjIxNTYsMTguOTI1MzU2NiAzMi41NTU4MzU2LDE5LjkyMzEyMDYgMzIuNTU1ODM1NiwyMS4wMzMwMTI2IEwzMi41NTE4OTM2LDMwLjc0MzQ3MjYgQzMyLjU1MTg5MzYsMzEuODU2NDMwNiAzMy40MzYyMTU2LDMyLjc1NjUyMDYgMzQuNTIyNDU1NiwzMi43NTY1MjA2IEMzNS42MTIxOTk2LDMyLjc1NjUyMDYgMzYuNTc4NDI3NiwzMS44ODc1Mjg2IDM2LjU3ODQyNzYsMzAuNzcyODE4NiBMMzYuNTc4NDI3NiwyMS4wMzMwMTI2IEMzNi41Nzg0Mjc2LDE5LjkyMzEyMDYgMzUuNjEyMTk5NiwxOC45MjUzNTY2IDM0LjUyMjQ1NTYsMTguOTI1MzU2NiBaIiBpZD0iRm94LURlcG9ydGVzIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgFoxdep as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFoxDigital(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.487 47.134c-.283.02-.517.11-.723.238a1.77 1.77 0 00-.791 1.102c-.055.225-.058.506-.058.8v7.671c0 .163-.008.32.013.46.055.398.235.718.47.956.303.307.772.564 1.379.498.783-.083 1.358-.6 1.532-1.308.063-.252.044-.574.044-.907v-7.578c0-.325-.036-.577-.131-.813a1.765 1.765 0 00-.38-.571c-.309-.312-.773-.593-1.355-.548zm2.238-3.902c.68.15 1.31.378 1.873.63 1.74.78 3.037 1.95 4.082 3.41.688.958 1.205 2.106 1.54 3.446.168.682.266 1.432.266 2.22 0 2.463-.717 4.288-1.714 5.772-.169.252-.34.493-.525.724a9.386 9.386 0 01-1.925 1.82c-.49.345-1.002.66-1.569.925-1.129.527-2.492.939-4.063.939-2.458 0-4.272-.745-5.741-1.768a9.895 9.895 0 01-3.391-4.09c-.522-1.146-.865-2.467-.905-4.077a9.946 9.946 0 01.227-2.266c.37-1.72 1.094-3.067 2.012-4.229.918-1.159 2.08-2.066 3.486-2.75a9.305 9.305 0 011.84-.661 9.277 9.277 0 012.221-.278h.013c.786-.037 1.62.09 2.273.233zm-12.201-.55c.145 1.888.272 3.773.223 5.691a239.478 239.478 0 00-6.905 0c.045.832.069 1.79 0 2.587 2.006 0 3.876.075 5.843 0-.06 1.96-.06 3.84 0 5.691-1.98.037-3.915.024-5.843 0 .021 2.277.032 4.474.032 6.713-1.952.013-3.9.013-5.847.013-.031-6.88-.031-13.8-.02-20.677 4.176-.018 8.348-.018 12.517-.018zm35.132.031c.006.026-.013.055-.026.076-1.87 3.267-3.784 6.545-5.651 9.817 2.075 3.582 4.19 7.16 6.021 10.803a98.808 98.808 0 00-6.374 0c-.05-.069-2.007-3.653-2.909-5.278-.965 1.73-1.904 3.49-2.934 5.278-2.092-.05-4.233-.066-6.374 0 .242-.512.5-.952.759-1.395 1.801-3.094 3.576-6.23 5.38-9.327-1.918-3.33-3.864-6.633-5.791-9.956 2.204-.018 4.411-.018 6.621-.018.815 1.474 1.609 2.966 2.41 4.45.834-1.471 1.638-2.971 2.463-4.45h6.405zm-18.798 27.3c.638 0 .946.304.946.934v3.455c0 .677-.331 1.004-1.041 1.004h-1.136v-5.392h1.23zm9.523 1.074l1.04 8.264h-2.058l1.018-8.264zm1.774-3.314h-3.36L75.43 84.136h2.343l.307-2.568h2.627l.331 2.568h2.508l-2.39-16.363zm-10.895.023h-4.165v16.34h2.532v-6.56h1.136c.733 0 1.065.327 1.065 1.051v5.51h2.532V78.58c0-1.237-.426-1.867-1.467-2.147.922-.374 1.443-1.074 1.443-2.521V70.83c0-2.031-1.018-3.035-3.076-3.035zm-6.234 0H56.95v2.264h2.272v14.076h2.532V70.06h2.272v-2.264zm-13.83 0h-2.603l2.271 8.287-2.319 8.053h2.438l1.49-5.859 1.397 5.86h2.603l-2.32-8.264 2.272-8.077h-2.437l-1.42 5.836-1.372-5.836zm37.713-2.205c.603 0 1.091.488 1.091 1.09v18.546a1.09 1.09 0 01-1.09 1.091H42.09a1.09 1.09 0 01-1.09-1.09V66.681c0-.603.488-1.091 1.09-1.091h45.82z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IFh0cmE8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODAuMDAwMDAwLCAtNDExLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iQ2VsbC9DaGFubmVsIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzODAuMDAwMDAwLCA0MTEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOCwwIEwxMzAsMCBMMTMwLDAgTDEzMCwxMzAgTDgsMTMwIEMzLjU4MTcyMiwxMzAgNS40MTA4MzAwMWUtMTYsMTI2LjQxODI3OCAwLDEyMiBMMCw4IEMtNS40MTA4MzAwMWUtMTYsMy41ODE3MjIgMy41ODE3MjIsOC4xMTYyNDUwMWUtMTYgOCwwIFoiIGlkPSJDZWxsIiBmaWxsLW9wYWNpdHk9IjAuMSIgZmlsbD0ibm9uZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ28iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1LjAwMDAwMCwgMjUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ29zL0NvbXBvbmVudHMvX0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9IkNvbnRhaW5lciIgY3g9IjQwIiBjeT0iNDAiIHI9IjQwIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ29zL05ldHdvcmsvRm94LURpZ2l0YWwvV2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2LjAwMDAwMCwgMTcuNjAwMDAwKSIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyLjQ4NjUwOTEsNC41MzM3OTk5MyBDMjIuMjA0NCw0LjU1NDgxODExIDIxLjk2OTcwOTEsNC42NDM5MDkwMiAyMS43NjM5NjM2LDQuNzcyNDE4MTEgQzIxLjM4MTYzNjQsNS4wMTM2NTQ0NyAyMS4wOTE1MjczLDUuMzgzMzI3MiAyMC45NzI5MDkxLDUuODczNjU0NDcgQzIwLjkxOCw2LjA5ODk2MzU2IDIwLjkxNDk0NTUsNi4zODAxOTk5MyAyMC45MTQ4NzI3LDYuNjc0NDU0NDcgTDIwLjkxNDg3MjcsMTQuMzQ1MzYzNiBDMjAuOTE0ODcyNywxNC41MDc5MDkgMjAuOTA2OTQ1NSwxNC42NjUyMTgxIDIwLjkyODAzNjQsMTQuODA0MTk5OSBDMjAuOTgzNDU0NSwxNS4yMDI3NDU0IDIxLjE2MjcyNzMsMTUuNTIyNjcyNyAyMS4zOTc0MTgyLDE1Ljc2MTIxODEgQzIxLjcwMDY5MDksMTYuMDY3OTgxNyAyMi4xNzAwNzI3LDE2LjMyNDkyNzIgMjIuNzc2NjE4MiwxNi4yNTkzOTk5IEMyMy41NTk3NDU1LDE2LjE3NTU0NTQgMjQuMTM0NjU0NSwxNS42NTg5NjM2IDI0LjMwODY5MDksMTQuOTUxMDM2MyBDMjQuMzcxOTYzNiwxNC42OTkzMjcyIDI0LjM1MzQ5MDksMTQuMzc2NzgxNyAyNC4zNTM0OTA5LDE0LjA0MzgzNjMgTDI0LjM1MzQ5MDksNi40NjYyMzYyOSBDMjQuMzUzNDkwOSw2LjE0MTA3MjY1IDI0LjMxNjU0NTUsNS44ODkzNjM1NiAyNC4yMjE2MzY0LDUuNjUzNDM2MjkgQzI0LjEzNDY1NDUsNS40MzgzODE3NCAyNC4wMDAxMDkxLDUuMjQxNzI3MiAyMy44NDE5MjczLDUuMDgxNzk5OTMgQzIzLjUzMzQxODIsNC43Njk3OTk5MyAyMy4wNjkyNzI3LDQuNDg5MjE4MTEgMjIuNDg2NTA5MSw0LjUzMzc5OTkzIEwyMi40ODY1MDkxLDQuNTMzNzk5OTMgWiBNMjQuNzI1MjcyNywwLjYzMjI3MjY1MyBDMjUuNDA1NzA5MSwwLjc4MTcyNzE5OSAyNi4wMzU4OTA5LDEuMDA5Nzk5OTMgMjYuNTk3NTYzNiwxLjI2MTUwOTAyIEMyOC4zMzgsMi4wNDI4OTA4MyAyOS42MzUzODE4LDMuMjEyMzQ1MzggMzAuNjc5Niw0LjY3Mjc4MTc0IEMzMS4zNjc4MTgyLDUuNjI5Nzk5OTMgMzEuODg0NjkwOSw2Ljc3ODIzNjI5IDMyLjIxOTYsOC4xMTgwOTA4MyBDMzIuMzg4MzI3Myw4Ljc5OTgzNjI5IDMyLjQ4NTkyNzMsOS41NDk3MjcyIDMyLjQ4NTkyNzMsMTAuMzM4ODkwOCBDMzIuNDg1OTI3MywxMi44MDA5OTk5IDMxLjc2ODY5MDksMTQuNjI1OTQ1NCAzMC43NzE4OTA5LDE2LjEwOTk0NTQgQzMwLjYwMzE2MzYsMTYuMzYxNjU0NSAzMC40MzE3NDU1LDE2LjYwMjg5MDggMzAuMjQ3MTYzNiwxNi44MzM2NTQ1IEMyOS43MDY1MDkxLDE3LjUxNTM5OTkgMjkuMDUyNTQ1NSwxOC4xMzY3ODE3IDI4LjMyMjE0NTUsMTguNjUzMjkwOCBDMjcuODMxNjcyNywxOC45OTkzOTk5IDI3LjMyMDEwOTEsMTkuMzE0MDkwOCAyNi43NTMxMjczLDE5LjU3ODg5MDggQzI1LjYyNDQ3MjcsMjAuMTA1ODcyNyAyNC4yNjEyLDIwLjUxNzU4MTcgMjIuNjg5NTYzNiwyMC41MTc1ODE3IEMyMC4yMzE4OTA5LDIwLjUxNzU4MTcgMTguNDE3NjM2NCwxOS43NzI5MjcyIDE2Ljk0ODgzNjQsMTguNzUwMzA5IEMxNS40ODAxMDkxLDE3LjcyNTE0NTQgMTQuMzM1NiwxNi4zNjk1MDkgMTMuNTU3NzA5MSwxNC42NTk5ODE3IEMxMy4wMzU2LDEzLjUxNDE2MzYgMTIuNjkyNzYzNiwxMi4xOTI3MDkgMTIuNjUzMiwxMC41ODI3NDU0IEMxMi42MzQ4LDkuNzg1NjU0NDcgMTIuNzM1MDE4Miw4Ljk5OTAzNjI5IDEyLjg4MDAzNjQsOC4zMTczNjM1NiBDMTMuMjQ5Miw2LjU5NzM2MzU2IDEzLjk3NDM2MzYsNS4yNDk1ODE3NCAxNC44OTIwMzY0LDQuMDg4MDU0NDcgQzE1LjgwOTcwOTEsMi45MjkxNDUzOCAxNi45NzI2MTgyLDIuMDIxODcyNjUgMTguMzc4MTQ1NSwxLjMzNzU4MTc0IEMxOC45MjkyLDEuMDcwMTYzNTYgMTkuNTQ2MjkwOSwwLjg0MjAxODEwOCAyMC4yMTg3MjczLDAuNjc2ODU0NDcxIEMyMC44OTExNjM2LDAuNTExNjE4MTA4IDIxLjYzNDgsMC4zOTg4OTA4MzUgMjIuNDM5MDkwOSwwLjM5ODg5MDgzNSBMMjIuNDUyMjU0NSwwLjM5ODg5MDgzNSBDMjMuMjM4MDcyNywwLjM2MjE2MzU2MiAyNC4wNzEzMDkxLDAuNDg4MDU0NDcxIDI0LjcyNTI3MjcsMC42MzIyNzI2NTMgTDI0LjcyNTI3MjcsMC42MzIyNzI2NTMgWiBNMTIuNTI0MDM2NCwwLjA4MTY1NDQ3MTIgQzEyLjY2OTA1NDUsMS45Njk1MDkwMiAxMi43OTU2LDMuODU0NzQ1MzggMTIuNzQ3MDkwOSw1Ljc3MzA3MjY1IEMxMC41ODU4NTQ1LDUuNzM5OTA5MDIgOC4yNTIxMDkwOSw1LjczOTkwOTAyIDUuODQxNzA5MDksNS43NzMwNzI2NSBDNS44ODY3MjcyNyw2LjYwNTE0NTM4IDUuOTEwNTA5MDksNy41NjIyMzYyOSA1Ljg0MTcwOTA5LDguMzYwMDU0NDcgQzcuODQ3NTI3MjcsOC4zNjAwNTQ0NyA5LjcxODI5MDkxLDguNDM1MzI3MiAxMS42ODQ3NjM2LDguMzYwMDU0NDcgQzExLjYyNDgzNjQsMTAuMzIwNTYzNiAxMS42MjQ4MzY0LDEyLjIwMDU2MzYgMTEuNjg0NzYzNiwxNC4wNTE0NzI3IEM5LjcwNTEyNzI3LDE0LjA4ODM0NTQgNy43Njk1NjM2NCwxNC4wNzUyNTQ1IDUuODQxNzA5MDksMTQuMDUxNDcyNyBDNS44NjMwMTgxOCwxNi4zMjc2MTgxIDUuODczNTYzNjQsMTguNTI0NzgxNyA1Ljg3MzU2MzY0LDIwLjc2NDA1NDUgQzMuOTIyMjE4MTgsMjAuNzc3MTQ1NCAxLjk3MzQ5MDkxLDIwLjc3NzE0NTQgMC4wMjc0NTQ1NDU1LDIwLjc3NzE0NTQgQy0wLjAwNDI1NDU0NTQ1LDEzLjg5Njk5OTkgLTAuMDA0MjU0NTQ1NDUsNi45Nzc1MDkwMiAwLjAwNjI5MDkwOTA5LDAuMDk5OTgxNzQ0IEM0LjE4MzMwOTA5LDAuMDgxNjU0NDcxMiA4LjM1NDk0NTQ1LDAuMDgxNjU0NDcxMiAxMi41MjQwMzY0LDAuMDgxNjU0NDcxMiBMMTIuNTI0MDM2NCwwLjA4MTY1NDQ3MTIgWiBNNDcuNjU2NDcyNywwLjExMzA3MjY1MyBDNDcuNjYxNzA5MSwwLjEzOTMyNzE5OSA0Ny42NDMyMzY0LDAuMTY4MTk5OTI2IDQ3LjYzMDA3MjcsMC4xODkxNDUzOCBDNDUuNzYwNDcyNywzLjQ1NjE5OTkzIDQzLjg0Niw2LjczMzY1NDQ3IDQxLjk3OTAxODIsMTAuMDA1OTQ1NCBDNDQuMDU0MzYzNiwxMy41ODc2MTgxIDQ2LjE2OTIsMTcuMTY2NjcyNyA0OC4wMDAwMzY0LDIwLjgwODkyNzIgQzQ2LjAzNzM0NTUsMjAuNzQwNDE4MSA0My44MDM4MTgyLDIwLjc0MDQxODEgNDEuNjI1NzgxOCwyMC44MDg5MjcyIEM0MS41NzU2LDIwLjc0MDQxODEgMzkuNjE4OTQ1NSwxNy4xNTYxMjcyIDM4LjcxNzEyNzMsMTUuNTMwNTI3MiBDMzcuNzUxOTYzNiwxNy4yNjEwNzI3IDM2LjgxMzIsMTkuMDIwMzQ1NCAzNS43ODI4LDIwLjgwODkyNzIgQzMzLjY5MTAxODIsMjAuNzU4NzQ1NCAzMS41NDk3ODE4LDIwLjc0MzAzNjMgMjkuNDA4NjE4MiwyMC44MDg5MjcyIEMyOS42NTEyMzY0LDIwLjI5NzI5MDggMjkuOTA5NTYzNiwxOS44NTY3ODE3IDMwLjE2ODAzNjQsMTkuNDEzNzI3MiBDMzEuOTY5MTI3MywxNi4zMTk3NjM2IDMzLjc0Mzc0NTUsMTMuMTgzODM2MyAzNS41NDc0NTQ1LDEwLjA4NzE4MTcgQzMzLjYzMDQzNjQsNi43NTcyOTA4MyAzMS42ODQzMjczLDMuNDUzNTA5MDIgMjkuNzU2NjkwOSwwLjEzMTQ3MjY1MyBDMzEuOTYxMTI3MywwLjExMzA3MjY1MyAzNC4xNjgzMjczLDAuMTEzMDcyNjUzIDM2LjM3ODE0NTUsMC4xMTMwNzI2NTMgQzM3LjE5MjkwOTEsMS41ODY2NzI2NSAzNy45ODY2NTQ1LDMuMDc4NTk5OTMgMzguNzg4MjU0NSw0LjU2MjU5OTkzIEMzOS42MjE1NjM2LDMuMDkxNjkwODMgNDAuNDI1ODU0NSwxLjU5MTkwOTAyIDQxLjI1MTIzNjQsMC4xMTMwNzI2NTMgTDQ3LjY1NjQ3MjcsMC4xMTMwNzI2NTMgWiBNMjguODU3NTYzNiwyNy40MTM1MDkgQzI5LjQ5NjQsMjcuNDEzNTA5IDI5LjgwNDAzNjQsMjcuNzE2OTI3MiAyOS44MDQwMzY0LDI4LjM0NzI1NDUgTDI5LjgwNDAzNjQsMzEuODAyMDE4MSBDMjkuODA0MDM2NCwzMi40NzkwMzYzIDI5LjQ3Mjc2MzYsMzIuODA1Nzk5OSAyOC43NjI4NzI3LDMyLjgwNTc5OTkgTDI3LjYyNzAxODIsMzIuODA1Nzk5OSBMMjcuNjI3MDE4MiwyNy40MTM1MDkgTDI4Ljg1NzU2MzYsMjcuNDEzNTA5IFogTTM4LjM4MDc2MzYsMjguNDg3MzI3MiBMMzkuNDIxOTI3MywzNi43NTA4MTgxIEwzNy4zNjMzMDkxLDM2Ljc1MDgxODEgTDM4LjM4MDc2MzYsMjguNDg3MzI3MiBaIE00MC4xNTU0NTQ1LDI1LjE3MjU2MzYgTDM2Ljc5NTM4MTgsMjUuMTcyNTYzNiBMMzQuNDI5MDU0NSw0MS41MzYxOTk5IEwzNi43NzE2NzI3LDQxLjUzNjE5OTkgTDM3LjA3OTMwOTEsMzguOTY4NDE4MSBMMzkuNzA1OTI3MywzOC45Njg0MTgxIEw0MC4wMzcyLDQxLjUzNjE5OTkgTDQyLjU0NTQ5MDksNDEuNTM2MTk5OSBMNDAuMTU1NDU0NSwyNS4xNzI1NjM2IFogTTI5LjI1OTgxODIsMjUuMTk1OTA5IEwyNS4wOTUwOTA5LDI1LjE5NTkwOSBMMjUuMDk1MDkwOSw0MS41MzYxOTk5IEwyNy42MjcwMTgyLDQxLjUzNjE5OTkgTDI3LjYyNzAxODIsMzQuOTc2NzA5IEwyOC43NjI4NzI3LDM0Ljk3NjcwOSBDMjkuNDk2NCwzNC45NzY3MDkgMjkuODI3NjcyNywzNS4zMDM0NzI3IDI5LjgyNzY3MjcsMzYuMDI3MTgxNyBMMjkuODI3NjcyNyw0MS41MzYxOTk5IEwzMi4zNTk2LDQxLjUzNjE5OTkgTDMyLjM1OTYsMzUuOTgwNDkwOCBDMzIuMzU5NiwzNC43NDMyNTQ1IDMxLjkzMzYzNjQsMzQuMTEyOTk5OSAzMC44OTI1NDU1LDMzLjgzMjkyNzIgQzMxLjgxNTMwOTEsMzMuNDU5Mzk5OSAzMi4zMzU5NjM2LDMyLjc1OTEwOSAzMi4zMzU5NjM2LDMxLjMxMTgzNjMgTDMyLjMzNTk2MzYsMjguMjMwNTI3MiBDMzIuMzM1OTYzNiwyNi4xOTk2OTA4IDMxLjMxODQzNjQsMjUuMTk1OTA5IDI5LjI1OTgxODIsMjUuMTk1OTA5IEwyOS4yNTk4MTgyLDI1LjE5NTkwOSBaIE0yMy4wMjU2MzY0LDI1LjE5NTkwOSBMMTUuOTUwNDM2NCwyNS4xOTU5MDkgTDE1Ljk1MDQzNjQsMjcuNDYwMTk5OSBMMTguMjIyMDcyNywyNy40NjAxOTk5IEwxOC4yMjIwNzI3LDQxLjUzNjE5OTkgTDIwLjc1NCw0MS41MzYxOTk5IEwyMC43NTQsMjcuNDYwMTk5OSBMMjMuMDI1NjM2NCwyNy40NjAxOTk5IEwyMy4wMjU2MzY0LDI1LjE5NTkwOSBaIE05LjE5NTY3MjczLDI1LjE5NTkwOSBMNi41OTI3NjM2NCwyNS4xOTU5MDkgTDguODY0NCwzMy40ODI3NDU0IEw2LjU0NTQ5MDkxLDQxLjUzNjE5OTkgTDguOTgyNzI3MjcsNDEuNTM2MTk5OSBMMTAuNDczNDkwOSwzNS42NzY5OTk5IEwxMS44Njk2MzY0LDQxLjUzNjE5OTkgTDE0LjQ3MjU0NTUsNDEuNTM2MTk5OSBMMTIuMTUzNTYzNiwzMy4yNzI3MDkgTDE0LjQyNTIsMjUuMTk1OTA5IEwxMS45ODc5NjM2LDI1LjE5NTkwOSBMMTAuNTY4MTgxOCwzMS4wMzE2OTA4IEw5LjE5NTY3MjczLDI1LjE5NTkwOSBaIE00Ni45MDkxMjczLDIyLjk5MDc0NTQgQzQ3LjUxMTYsMjIuOTkwNzQ1NCA0OC4wMDAwMzY0LDIzLjQ3OTE4MTcgNDguMDAwMDM2NCwyNC4wODE2NTQ1IEw0OC4wMDAwMzY0LDQyLjYyNzEwOSBDNDguMDAwMDM2NCw0My4yMjk1ODE3IDQ3LjUxMTYsNDMuNzE4MDE4MSA0Ni45MDkxMjczLDQzLjcxODAxODEgTDEuMDkwOTQ1NDUsNDMuNzE4MDE4MSBDMC40ODg0LDQzLjcxODAxODEgMy42MzYzNjM2NGUtMDUsNDMuMjI5NTgxNyAzLjYzNjM2MzY0ZS0wNSw0Mi42MjcxMDkgTDMuNjM2MzYzNjRlLTA1LDI0LjA4MTY1NDUgQzMuNjM2MzYzNjRlLTA1LDIzLjQ3OTE4MTcgMC40ODg0LDIyLjk5MDc0NTQgMS4wOTA5NDU0NSwyMi45OTA3NDU0IEw0Ni45MDkxMjczLDIyLjk5MDc0NTQgWiIgaWQ9IkZveC1EaWdpdGFsIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgFoxDigital as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFoxFood(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 22)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88.245 39.6h-6.257l-2.34 4.107-2.341-4.107h-6.258l5.461 9.613-5.46 9.583h6.288l2.31-4.055 2.309 4.055h6.288l-5.46-9.583z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.987 53.14c0 .9-.783 1.606-1.663 1.606s-1.591-.73-1.591-1.627l.002-7.86c0-.901.711-1.704 1.591-1.704s1.66.805 1.66 1.703v7.882zM64.3 39.607c-5.322 0-9.636 4.295-9.636 9.594 0 5.3 4.314 9.595 9.636 9.595 5.323 0 9.636-4.295 9.636-9.595 0-5.3-4.316-9.594-9.636-9.594\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.435 58.796V52.6h5.306v-5.252h-5.306v-2.514h6.506l-.353-5.235H42.6v19.196z\"\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.6 62.809h7.025v3.005h-3.699v5.035h3.642v3.005h-3.642v9.158H42.6zM51.573 80.35c-.544-1.23-.716-2.49-.716-7.44s.172-6.21.716-7.44c.86-1.915 2.553-3.004 5.105-3.004 2.553 0 4.244 1.086 5.103 3.005.545 1.23.717 2.49.717 7.44 0 4.949-.172 6.21-.717 7.44-.86 1.915-2.552 3.004-5.103 3.004-2.552 0-4.245-1.087-5.105-3.005zm7.14-1.344c.286-.629.344-1.258.344-6.096 0-4.837-.058-5.466-.344-6.095-.344-.801-.974-1.259-2.037-1.259-1.06 0-1.693.458-2.037 1.259-.286.629-.344 1.258-.344 6.095 0 4.838.058 5.467.344 6.096.344.8.975 1.258 2.037 1.258 1.063 0 1.693-.457 2.037-1.258zM64.706 80.35c-.544-1.23-.716-2.49-.716-7.44s.172-6.21.716-7.44c.86-1.915 2.553-3.004 5.105-3.004 2.553 0 4.244 1.086 5.103 3.005.545 1.23.717 2.49.717 7.44 0 4.949-.172 6.21-.717 7.44-.86 1.915-2.552 3.004-5.103 3.004-2.555 0-4.245-1.087-5.105-3.005zm7.14-1.344c.286-.629.344-1.258.344-6.096 0-4.837-.058-5.466-.344-6.095-.344-.801-.974-1.259-2.037-1.259-1.06 0-1.693.458-2.037 1.259-.286.629-.344 1.258-.344 6.095 0 4.838.058 5.467.344 6.096.344.8.974 1.258 2.037 1.258s1.693-.457 2.037-1.258zM77.378 62.809h4.96c2.667 0 4.415 1.058 5.248 2.919.516 1.115.66 2.061.66 7.182s-.144 6.067-.66 7.183c-.83 1.859-2.581 2.919-5.248 2.919h-4.96V62.809zm4.618 17.255c1.318 0 2.066-.457 2.467-1.315.258-.6.344-1.116.344-5.781 0-4.778-.086-5.296-.344-5.896-.401-.858-1.146-1.315-2.467-1.315h-1.289v14.307h1.29z\"\n }))))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2aWV3Qm94PSIwIDAgMTMwIDEzMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT5Gb3ggRm9vZDwvdGl0bGU+CiAgICA8ZyBpZD0iMTQ0MHB4LS0tRGVza3RvcC0tLU1vc3QtVXBkYXRlZCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IldlYl8xNDQwX0xpdmVUVl9OZXdDb21wb25lbnRzX0NoYW5uZWxfTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MjAuMDAwMDAwLCAtMTExMS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkVQRy9DZWxsL0ZveC1Gb29kL05vcm1hbCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTIwLjAwMDAwMCwgMTExMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTmV0d29yay9Gb3gtRm9vZC9JY29uL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDIyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJDb21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuNjAwMDAwLCAxNy42MDAwMDApIiBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJGb3gtRm9vZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjQ1LjY0NTI4MyAwIDM5LjM4NzYzNTEgMCAzNy4wNDcyNzk2IDQuMTA3MTA0OTYgMzQuNzA2OTI0IDAgMjguNDQ5Mjc2MSAwIDMzLjkxMDEwNTcgOS42MTMzMzM2IDI4LjQ0OTI3NjEgMTkuMTk1Nzg2NyAzNC43Mzc5Mzc5IDE5LjE5NTc4NjcgMzcuMDQ3Mjc5NiAxNS4xNDA5NDEgMzkuMzU2NjIxMiAxOS4xOTU3ODY3IDQ1LjY0NTI4MyAxOS4xOTU3ODY3IDQwLjE4NDQ1MzQgOS42MTMzMzM2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4Njg1NTcsMTMuNTM5OTA2NSBDMjMuMzg2ODU1NywxNC40NDAxOTE1IDIyLjYwNDM1MTUsMTUuMTQ1NjkxOSAyMS43MjQwMzQyLDE1LjE0NTY5MTkgQzIwLjg0MzcxNywxNS4xNDU2OTE5IDIwLjEzMjc4MzMsMTQuNDE2NDM3MyAyMC4xMzI3ODMzLDEzLjUxODUyNzcgTDIwLjEzNTE2OSw1LjY1ODI1NTY1IEMyMC4xMzUxNjksNC43NTc5NzA2NCAyMC44NDYxMDI3LDMuOTU1MDc3OTQgMjEuNzI2NDE5OSwzLjk1NTA3Nzk0IEMyMi42MDY3MzcxLDMuOTU1MDc3OTQgMjMuMzg2ODU1Nyw0Ljc2MDM0NjA2IDIzLjM4Njg1NTcsNS42NTgyNTU2NSBMMjMuMzg2ODU1NywxMy41Mzk5MDY1IFogTTIxLjcwMDE3NzQsMC4wMDcxMjYyNjY1NiBDMTYuMzc3NzE3NCwwLjAwNzEyNjI2NjU2IDEyLjA2NDQwMTYsNC4zMDE4ODk1OCAxMi4wNjQ0MDE2LDkuNjAxNDU2NDggQzEyLjA2NDQwMTYsMTQuOTAxMDIzNCAxNi4zNzc3MTc0LDE5LjE5NTc4NjcgMjEuNzAwMTc3NCwxOS4xOTU3ODY3IEMyNy4wMjI2Mzc0LDE5LjE5NTc4NjcgMzEuMzM1OTUzMiwxNC45MDEwMjM0IDMxLjMzNTk1MzIsOS42MDE0NTY0OCBDMzEuMzM1OTUzMiw0LjMwMTg4OTU4IDI3LjAyMDI1MTcsMC4wMDcxMjYyNjY1NiAyMS43MDAxNzc0LDAuMDA3MTI2MjY2NTYiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjUuODM1MzgxOTIgMTkuMTk1Nzg2NyA1LjgzNTM4MTkyIDEzLjAwMDY4NTYgMTEuMTQxMTQyMSAxMy4wMDA2ODU2IDExLjE0MTE0MjEgNy43NDg2MjcxOCA1LjgzNTM4MTkyIDcuNzQ4NjI3MTggNS44MzUzODE5MiA1LjIzNTQzMDUgMTIuMzQxMTQwOSA1LjIzNTQzMDUgMTEuOTg4MDU5NyAwIDAgMCAwIDE5LjE5NTc4NjciPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDIyLjg2NTU2OSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAgMC4zNDMxNTQ1MzkgNy4wMjQ5MjI3MiAwLjM0MzE1NDUzOSA3LjAyNDkyMjcyIDMuMzQ4MTM5NzggMy4zMjYyMTI1NiAzLjM0ODEzOTc4IDMuMzI2MjEyNTYgOC4zODM0NTYwNCA2Ljk2NzYxNTM5IDguMzgzNDU2MDQgNi45Njc2MTUzOSAxMS4zODg0NDEzIDMuMzI2MjEyNTYgMTEuMzg4NDQxMyAzLjMyNjIxMjU2IDIwLjU0NjM3OCAwIDIwLjU0NjM3OCI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04Ljk3MzM3MTcxLDE3Ljg4NDU0NzMgQzguNDI4OTUyMTQsMTYuNjU0OTEwMyA4LjI1NzAzMDE3LDE1LjM5NDI5MzkgOC4yNTcwMzAxNywxMC40NDQ3NjYzIEM4LjI1NzAzMDE3LDUuNDk1MjM4NjcgOC40Mjg5NTIxNCw0LjIzNDYyMjM0IDguOTczMzcxNzEsMy4wMDQ5ODUyNCBDOS44MzI5ODE1NiwxLjA4OTAzOTA2IDExLjUyNTkzNTQsMCAxNC4wNzg0OTkxLDAgQzE2LjYzMTA2MjgsMCAxOC4zMjE2Mjg4LDEuMDg2NjU2MDQgMTkuMTgxMjM4NywzLjAwNDk4NTI0IEMxOS43MjU2NTgyLDQuMjM0NjIyMzQgMTkuODk3NTgwMiw1LjQ5NTIzODY3IDE5Ljg5NzU4MDIsMTAuNDQ0NzY2MyBDMTkuODk3NTgwMiwxNS4zOTQyOTM5IDE5LjcyNTY1ODIsMTYuNjU0OTEwMyAxOS4xODEyMzg3LDE3Ljg4NDU0NzMgQzE4LjMyMTYyODgsMTkuODAwNDkzNSAxNi42Mjg2NzUsMjAuODg5NTMyNiAxNC4wNzg0OTkxLDIwLjg4OTUzMjYgQzExLjUyNTkzNTQsMjAuODg5NTMyNiA5LjgzMjk4MTU2LDE5LjgwMjg3NjUgOC45NzMzNzE3MSwxNy44ODQ1NDczIFogTTE2LjExMjkwOTEsMTYuNTQwNTI1NCBDMTYuMzk5NDQ1NywxNS45MTE0MDg3IDE2LjQ1Njc1MywxNS4yODIyOTIxIDE2LjQ1Njc1MywxMC40NDQ3NjYzIEMxNi40NTY3NTMsNS42MDcyNDA0OSAxNi4zOTk0NDU3LDQuOTc4MTIzODQgMTYuMTEyOTA5MSw0LjM0OTAwNzE4IEMxNS43NjkwNjUxLDMuNTQ4MzEzMjYgMTUuMTM4Njg0NiwzLjA5MDc3Mzg3IDE0LjA3NjExMTMsMy4wOTA3NzM4NyBDMTMuMDE1OTI1OCwzLjA5MDc3Mzg3IDEyLjM4MzE1NzQsMy41NDgzMTMyNiAxMi4wMzkzMTM1LDQuMzQ5MDA3MTggQzExLjc1Mjc3NjksNC45NzgxMjM4NCAxMS42OTU0Njk2LDUuNjA3MjQwNDkgMTEuNjk1NDY5NiwxMC40NDQ3NjYzIEMxMS42OTU0Njk2LDE1LjI4MjI5MjEgMTEuNzUyNzc2OSwxNS45MTE0MDg3IDEyLjAzOTMxMzUsMTYuNTQwNTI1NCBDMTIuMzgzMTU3NCwxNy4zNDEyMTkzIDEzLjAxMzUzOCwxNy43OTg3NTg3IDE0LjA3NjExMTMsMTcuNzk4NzU4NyBDMTUuMTM4Njg0NiwxNy43OTg3NTg3IDE1Ljc2OTA2NTEsMTcuMzQxMjE5MyAxNi4xMTI5MDkxLDE2LjU0MDUyNTQgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyLjEwNjMsMTcuODg0NTQ3MyBDMjEuNTYxODgwNCwxNi42NTQ5MTAzIDIxLjM4OTk1ODQsMTUuMzk0MjkzOSAyMS4zODk5NTg0LDEwLjQ0NDc2NjMgQzIxLjM4OTk1ODQsNS40OTUyMzg2NyAyMS41NjE4ODA0LDQuMjM0NjIyMzQgMjIuMTA2MywzLjAwNDk4NTI0IEMyMi45NjU5MDk4LDEuMDg5MDM5MDYgMjQuNjU4ODYzNywwIDI3LjIxMTQyNzQsMCBDMjkuNzYzOTkxLDAgMzEuNDU0NTU3MSwxLjA4NjY1NjA0IDMyLjMxNDE2NjksMy4wMDQ5ODUyNCBDMzIuODU4NTg2NSw0LjIzNDYyMjM0IDMzLjAzMDUwODUsNS40OTUyMzg2NyAzMy4wMzA1MDg1LDEwLjQ0NDc2NjMgQzMzLjAzMDUwODUsMTUuMzk0MjkzOSAzMi44NTg1ODY1LDE2LjY1NDkxMDMgMzIuMzE0MTY2OSwxNy44ODQ1NDczIEMzMS40NTQ1NTcxLDE5LjgwMDQ5MzUgMjkuNzYxNjAzMiwyMC44ODk1MzI2IDI3LjIxMTQyNzQsMjAuODg5NTMyNiBDMjQuNjU2NDc1OSwyMC44ODk1MzI2IDIyLjk2NTkwOTgsMTkuODAyODc2NSAyMi4xMDYzLDE3Ljg4NDU0NzMgWiBNMjkuMjQ1ODM3MywxNi41NDA1MjU0IEMyOS41MzIzNzM5LDE1LjkxMTQwODcgMjkuNTg5NjgxMywxNS4yODIyOTIxIDI5LjU4OTY4MTMsMTAuNDQ0NzY2MyBDMjkuNTg5NjgxMyw1LjYwNzI0MDQ5IDI5LjUzMjM3MzksNC45NzgxMjM4NCAyOS4yNDU4MzczLDQuMzQ5MDA3MTggQzI4LjkwMTk5MzQsMy41NDgzMTMyNiAyOC4yNzE2MTI4LDMuMDkwNzczODcgMjcuMjA5MDM5NSwzLjA5MDc3Mzg3IEMyNi4xNDg4NTQxLDMuMDkwNzczODcgMjUuNTE2MDg1NywzLjU0ODMxMzI2IDI1LjE3MjI0MTgsNC4zNDkwMDcxOCBDMjQuODg1NzA1MSw0Ljk3ODEyMzg0IDI0LjgyODM5NzgsNS42MDcyNDA0OSAyNC44MjgzOTc4LDEwLjQ0NDc2NjMgQzI0LjgyODM5NzgsMTUuMjgyMjkyMSAyNC44ODU3MDUxLDE1LjkxMTQwODcgMjUuMTcyMjQxOCwxNi41NDA1MjU0IEMyNS41MTYwODU3LDE3LjM0MTIxOTMgMjYuMTQ2NDY2MywxNy43OTg3NTg3IDI3LjIwOTAzOTUsMTcuNzk4NzU4NyBDMjguMjcxNjEyOCwxNy43OTg3NTg3IDI4LjkwMTk5MzQsMTcuMzQxMjE5MyAyOS4yNDU4MzczLDE2LjU0MDUyNTQgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTM0Ljc3ODM4MTgsMC4zNDMxNTQ1MzkgTDM5LjczNzg1MzEsMC4zNDMxNTQ1MzkgQzQyLjQwNTAzMTQsMC4zNDMxNTQ1MzkgNDQuMTUyOTA0OCwxLjQwMTIxNDM3IDQ0Ljk4NjI0ODgsMy4yNjIzNTExNCBDNDUuNTAyMDE0Nyw0LjM3NzYwMzQgNDUuNjQ1MjgzLDUuMzIzNjYxNCA0NS42NDUyODMsMTAuNDQ0NzY2MyBDNDUuNjQ1MjgzLDE1LjU2NTg3MTIgNDUuNTAyMDE0NywxNi41MTE5MjkyIDQ0Ljk4NjI0ODgsMTcuNjI3MTgxNCBDNDQuMTU1MjkyNiwxOS40ODU5MzUyIDQyLjQwNTAzMTQsMjAuNTQ2Mzc4IDM5LjczNzg1MzEsMjAuNTQ2Mzc4IEwzNC43NzgzODE4LDIwLjU0NjM3OCBMMzQuNzc4MzgxOCwwLjM0MzE1NDUzOSBaIE0zOS4zOTYzOTcsMTcuNTk4NTg1MiBDNDAuNzE0NDY1NCwxNy41OTg1ODUyIDQxLjQ2MTg0ODQsMTcuMTQxMDQ1OCA0MS44NjI5OTk3LDE2LjI4MzE1OTUgQzQyLjEyMDg4MjYsMTUuNjgyNjM5MSA0Mi4yMDY4NDM2LDE1LjE2NzkwNzIgNDIuMjA2ODQzNiwxMC41MDE5NTg3IEM0Mi4yMDY4NDM2LDUuNzI0MDA4MzYgNDIuMTIwODgyNiw1LjIwNjg5MzUzIDQxLjg2Mjk5OTcsNC42MDYzNzMwOSBDNDEuNDYxODQ4NCwzLjc0ODQ4Njc0IDQwLjcxNjg1MzIsMy4yOTA5NDczNSAzOS4zOTYzOTcsMy4yOTA5NDczNSBMMzguMTA2OTgyMiwzLjI5MDk0NzM1IEwzOC4xMDY5ODIyLDE3LjU5ODU4NTIgTDM5LjM5NjM5NywxNy41OTg1ODUyIFoiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgFoxFood as ReactComponent };","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgSoul(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.691 22.338c2.31 0 4.179.68 5.605 2.04 1.426 1.36 2.139 3.156 2.139 5.387 0 2.205-.713 3.994-2.14 5.367-1.425 1.373-3.294 2.06-5.604 2.06-2.324 0-4.199-.68-5.625-2.04-1.425-1.36-2.138-3.156-2.138-5.387 0-2.205.713-3.994 2.138-5.367 1.426-1.373 3.301-2.06 5.625-2.06zm13.334.238v8.056c0 .701.046 1.144.139 1.33.198.516.634.773 1.307.773.356 0 .657-.089.901-.267.244-.179.4-.377.465-.596.066-.218.1-.632.1-1.24v-8.056h5.07v8.666c0 .82-.126 1.679-.377 2.578-.25.9-.92 1.68-2.01 2.34-1.09.661-2.472.992-4.15.992-1.98 0-3.564-.476-4.752-1.428-1.188-.952-1.783-2.446-1.783-4.482v-8.666h5.09zm-26.43-.179c.832 0 1.604.1 2.317.298.713.198 1.479.528 2.297.99l-1.426 3.624c-.488-.383-.967-.66-1.435-.832a4.262 4.262 0 00-1.476-.257c-.356 0-.644.069-.861.207-.218.139-.327.314-.327.524 0 .343.376.587 1.129.731l.93.218c.515.132.912.244 1.189.336.277.092.795.356 1.555.791.759.435 1.138 1.443 1.138 3.025 0 1.528-.568 2.76-1.703 3.696-1.136.936-2.627 1.404-4.476 1.404-1.36 0-2.443-.159-3.248-.475a60.852 60.852 0 01-1.455-.585A9.408 9.408 0 010 35.706l1.604-3.96c1.254.976 2.416 1.465 3.486 1.465.396 0 .71-.073.94-.218a.686.686 0 00.347-.613c0-.316-.102-.51-.307-.583a4.802 4.802 0 00-.525-.158 11.482 11.482 0 00-.772-.128 13.469 13.469 0 01-2.03-.514c-.561-.198-1.07-.616-1.525-1.255-.456-.64-.683-1.4-.683-2.284 0-1.489.564-2.705 1.693-3.647 1.129-.942 2.584-1.414 4.367-1.414zm40.285.179v9.605h4.297v4.694h-9.446v-14.3h5.149zM19.69 26.913c-.74 0-1.35.267-1.832.802s-.723 1.218-.723 2.05c0 .831.238 1.515.713 2.05.475.534 1.09.802 1.842.802.726 0 1.327-.27 1.802-.812.476-.542.713-1.228.713-2.06 0-.805-.237-1.479-.713-2.02a2.296 2.296 0 00-1.802-.812zM13.357.139l.392 5.973H6.447v2.855h5.973v5.886H6.447v7.062H.3V.139h13.057zM38.36.227l2.703 4.62L43.72.227h6.605l-5.973 10.375 6.54 11.248h-6.78l-3.16-5.406-3.117 5.406H31.23l6.43-11.182L31.623.227h6.736zM23.994.532l.281.003c5.602.151 10.073 4.8 10.073 10.525l-.004.285c-.148 5.688-4.711 10.243-10.35 10.243l-.282-.004c-5.623-.15-10.115-4.778-10.115-10.524C13.597 5.24 18.24.532 23.994.532zm0 4.315l-.14.007c-.876.08-1.604.917-1.604 1.89v8.632c0 .959.807 1.765 1.744 1.765l.152-.005c.947-.065 1.636-.746 1.636-1.76V6.744l-.006-.153c-.071-.957-.809-1.744-1.782-1.744z\",\n id: \"SOUL_svg__a\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"use\", {\n fill: \"currentColor\",\n xlinkHref: \"#SOUL_svg__a\",\n transform: \"translate(39.4 45.8)\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IFNvdWw8L3RpdGxlPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggZD0iTTE5LjY5MTAzMTIsMjIuMzM4MDI0OCBDMjIuMDAxMzQ0NywyMi4zMzgwMjQ4IDIzLjg2OTc1NzcsMjMuMDE4MTY2MSAyNS4yOTU3MDAxLDI0LjM3Nzg3ODQgQzI2LjcyMTYwMTgsMjUuNzM3OTE2NiAyNy40MzQ1NzMsMjcuNTMzNjY0IDI3LjQzNDU3MywyOS43NjQ3MTMxIEMyNy40MzQ1NzMsMzEuOTY5ODU2OCAyNi43MjE2MDE4LDMzLjc1ODc2MTIgMjUuMjk1NzAwMSwzNS4xMzE3NTIxIEMyMy44Njk3NTc3LDM2LjUwNTEwOTYgMjIuMDAxMzQ0NywzNy4xOTE0NDIyIDE5LjY5MTAzMTIsMzcuMTkxNDQyMiBDMTcuMzY3MDcyNiwzNy4xOTE0NDIyIDE1LjQ5MjQyNzYsMzYuNTExNTQ1MyAxNC4wNjY0ODUyLDM1LjE1MTU4ODUgQzEyLjY0MDYyNDIsMzMuNzkxODM1NSAxMS45Mjc2MTIzLDMxLjk5NjEyODkgMTEuOTI3NjEyMywyOS43NjQ3MTMxIEMxMS45Mjc2MTIzLDI3LjU1OTkzNiAxMi42NDA2MjQyLDI1Ljc3MDk5MDkgMTQuMDY2NDg1MiwyNC4zOTc2NzQxIEMxNS40OTI0Mjc2LDIzLjAyNDY4MzIgMTcuMzY3MDcyNiwyMi4zMzgwMjQ4IDE5LjY5MTAzMTIsMjIuMzM4MDI0OCBaIE0zMy4wMjUxODk0LDIyLjU3NTY1NDcgTDMzLjAyNTE4OTQsMzAuNjMyMDk5IEMzMy4wMjUxODk0LDMxLjMzMzI5ODYgMzMuMDcxMjk3OSwzMS43NzY0MjEgMzMuMTYzODgxNSwzMS45NjE1MDY4IEMzMy4zNjE4NzkzLDMyLjQ3NzYyMDcgMzMuNzk3NTQ3NywzMi43MzU0MTI5IDM0LjQ3MDkyNzUsMzIuNzM1NDEyOSBDMzQuODI3NDUzOCwzMi43MzU0MTI5IDM1LjEyNzYwNzIsMzIuNjQ2MjkxNSAzNS4zNzIwMzkzLDMyLjQ2NzcyMjggQzM1LjYxNjIyNzEsMzIuMjg5MTk0OSAzNS43NzEyMTIsMzIuMDkwODMwNSAzNS44Mzc0NDIsMzEuODcyMzQ0NiBDMzUuOTAzMzg3LDMxLjY1Mzg5OTQgMzUuOTM2NTAyLDMxLjI0MDQ3MDYgMzUuOTM2NTAyLDMwLjYzMjA5OSBMMzUuOTM2NTAyLDIyLjU3NTY1NDcgTDQxLjAwNjQ0MjUsMjIuNTc1NjU0NyBMNDEuMDA2NDQyNSwzMS4yNDIwMTg1IEM0MS4wMDY0NDI1LDMyLjA2MTc4ODcgNDAuODgwODI1MywzMi45MjEwMjgyIDQwLjYzMDE2MTIsMzMuODIwMDYyNyBDNDAuMzc5MTcxMiwzNC43MTkzMDA5IDM5LjcwOTI1MzcsMzUuNDk5Mzk4MiAzOC42MjAwNDE5LDM2LjE2MDM1NDggQzM3LjUzMDc4OTQsMzYuODIxMzExNCAzNi4xNDc1MzQsMzcuMTUxNzY5MyAzNC40NzA5Mjc1LDM3LjE1MTc2OTMgQzMyLjQ5MDQ2MSwzNy4xNTE3NjkzIDMwLjkwNjExMjIsMzYuNjc1ODk4NSAyOS43MTc4NDA0LDM1LjcyMzk5NCBDMjguNTI5NTY4NywzNC43NzIyMTE2IDI3LjkzNTQxMjQsMzMuMjc4MTY1NSAyNy45MzU0MTI0LDMxLjI0MjAxODUgTDI3LjkzNTQxMjQsMjIuNTc1NjU0NyBMMzMuMDI1MTg5NCwyMi41NzU2NTQ3IFogTTYuNTk0OTEwMjksMjIuMzk3NDUyNyBDNy40MjY2OTY0NSwyMi4zOTc0NTI3IDguMTk5MDk1NSwyMi40OTY0NzE5IDguOTEyMDI1OTcsMjIuNjk0NTEwNCBDOS42MjQ5OTcxNywyMi44OTI1NDg5IDEwLjM5MDU1MzMsMjMuMjIyNzYyNCAxMS4yMDkzMDUyLDIzLjY4NDc0MzcgTDkuNzgzNDAzNTMsMjcuMzA4OTg2OCBDOS4yOTQ4MjQzOCwyNi45MjYxODg0IDguODE2MTAyMzQsMjYuNjQ4ODg1NiA4LjM0NzU2MzI4LDI2LjQ3NzE1OTkgQzcuODc4ODIwNTYsMjYuMzA1NzYwMSA3LjM4NzA2NDMxLDI2LjIxOTczNDMgNi44NzIxMzE2MSwyNi4yMTk3MzQzIEM2LjUxNTY4Njc1LDI2LjIxOTczNDMgNi4yMjg0ODYxMSwyNi4yODkwMTkyIDYuMDEwNjUxOSwyNi40MjczNDQ4IEM1Ljc5MjgxNzY5LDI2LjU2NTk5NjIgNS42ODM4NTk4NiwyNi43NDA1MzI0IDUuNjgzODU5ODYsMjYuOTUxMjM4NSBDNS42ODM4NTk4NiwyNy4yOTQxMTk2IDYuMDYwMTgxODksMjcuNTM3NjE1IDYuODEyNzQ0NSwyNy42ODI0NTc2IEw3Ljc0MzUwOTE4LDI3LjkwMDAwNjcgQzguMjU4NDAxMTUsMjguMDMxODE1MSA4LjY1NDU1OTYyLDI4LjE0MzgyNzggOC45MzE3ODA5NCwyOC4yMzYwODU2IEM5LjIwOTA4MzcyLDI4LjMyODI2MTkgOS43MjcwNzEzMSwyOC41OTE5MTk1IDEwLjQ4NjUxNzYsMjkuMDI3MDE3NyBDMTEuMjQ1NTk3MywyOS40NjIwNzUxIDExLjYyNTIxODYsMzAuNDcwMjcxMSAxMS42MjUyMTg2LDMyLjA1MTUyNDMgQzExLjYyNTIxODYsMzMuNTgwMTkyNSAxMS4wNTc0NTY3LDM0LjgxMjQxNCA5LjkyMjAxNDE5LDM1Ljc0ODE0OCBDOC43ODY0MDg3OCwzNi42ODM5NjM0IDcuMjk0NTYyMTYsMzcuMTUxNzY5MyA1LjQ0NjIyOTk0LDM3LjE1MTc2OTMgQzQuMDg2MjMyNDksMzcuMTUxNzY5MyAzLjAwMzQ1NjM2LDM2Ljk5MzM2MjkgMi4xOTgyNjgxMywzNi42NzY1MDk1IEMxLjM5Mjc5NDc4LDM2LjM1OTYxNTMgMC45MDc1OTYzNzIsMzYuMTY0OTk4MiAwLjc0MjY3MjkwNCwzNi4wOTIyNTExIEMwLjU3NzQyMzU4LDM2LjAxOTg3MDUgMC4zMjk4NTUwODQsMzUuODkxMTU3NyA4LjE0NjM4MDI1ZS0wNiwzNS43MDYwNzE5IEwxLjYwNDE1MjYyLDMxLjc0NTE3OTYgQzIuODU4MzY5MzIsMzIuNzIyMzc4NyA0LjAyMDMyODI3LDMzLjIxMDcxMzQgNS4wODk3NDQzNCwzMy4yMTA3MTM0IEM1LjQ4NTg2MjA4LDMzLjIxMDcxMzQgNS43OTkyOTQwNywzMy4xMzgyOTIxIDYuMDMwNDg4MzQsMzIuOTkzNDkwMiBDNi4yNjEzMTYwMiwzMi44NDg2ODgzIDYuMzc3MDM1MzUsMzIuNjQ0MDkyIDYuMzc3MDM1MzUsMzIuMzgwNDc1MSBDNi4zNzcwMzUzNSwzMi4wNjQxOTE5IDYuMjc0NjM1MzUsMzEuODY5OTAwNyA2LjA3MDA3OTc1LDMxLjc5NzQzODcgQzUuODY1MjM5MDEsMzEuNzI1MDU4MSA1LjY5MDM3Njk2LDMxLjY3MjE0NzMgNS41NDUyNDkyLDMxLjYzOTM1ODIgQzUuMzk5Nzk1NTgsMzEuNjA2NTY5IDUuMTQyMzI5MjMsMzEuNTYzNTE1NCA0Ljc3Mjg5MDg4LDMxLjUxMDYwNDYgQzMuOTgwNjk2MTMsMzEuMzY1ODAyNyAzLjMwMzkzNTU5LDMxLjE5NDM2MjEgMi43NDI4OTQzOCwzMC45OTY2MDg3IEMyLjE4MTYwODc4LDMwLjc5OTIyMiAxLjY3MzQ3ODMxLDMwLjM4MDgyMzkgMS4yMTc5NzM0NiwyOS43NDE1MzY3IEMwLjc2MjQ2ODYwOCwyOS4xMDIxNjggMC41MzQ2OTU4MTUsMjguMzQxMjU1NCAwLjUzNDY5NTgxNSwyNy40NTgxMDYzIEMwLjUzNDY5NTgxNSwyNS45NjkwNzAyIDEuMDk5MTE3NzcsMjQuNzUzMjYzNiAyLjIyODAwMjQyLDIzLjgxMDk3MTggQzMuMzU2ODg3MDYsMjIuODY4NzIwOCA0LjgxMjQ4MjI5LDIyLjM5NzQ1MjcgNi41OTQ5MTAyOSwyMi4zOTc0NTI3IFogTTQ2Ljg3OTc3OSwyMi41NzU2NTQ3IEw0Ni44Nzk3NzksMzIuMTgwODg4OCBMNTEuMTc3MzYxMiwzMi4xODA4ODg4IEw1MS4xNzczNjEyLDM2Ljg3NDU0OCBMNDEuNzMwNTc0MywzNi44NzQ1NDggTDQxLjczMDU3NDMsMjIuNTc1NjU0NyBMNDYuODc5Nzc5LDIyLjU3NTY1NDcgWiBNMTkuNjkxMDMxMiwyNi45MTI4NjkxIEMxOC45NTE0MjE0LDI2LjkxMjg2OTEgMTguMzQwOTMxNiwyNy4xODAyMzMzIDE3Ljg1OTExNCwyNy43MTQ5NjE3IEMxNy4zNzY5NzA0LDI4LjI0OTY5MDEgMTcuMTM2MTYzNCwyOC45MzI5MjcgMTcuMTM2MTYzNCwyOS43NjQ3MTMxIEMxNy4xMzYxNjM0LDMwLjU5NjQ5OTMgMTcuMzczODM0MSwzMS4yNzk3MzYyIDE3Ljg0OTE3NTQsMzEuODE0NDY0NiBDMTguMzI0NDc1OSwzMi4zNDkxOTMgMTguOTM4NDY4NiwzMi42MTY1OTc5IDE5LjY5MTAzMTIsMzIuNjE2NTk3OSBDMjAuNDE2OTU1MiwzMi42MTY1OTc5IDIxLjAxNzg3MjksMzIuMzQ2MTM4MSAyMS40OTMyMTQyLDMxLjgwNDYwNzUgQzIxLjk2ODUxNDcsMzEuMjYzMzYyIDIyLjIwNjE4NTQsMzAuNTc2NzQ0MyAyMi4yMDYxODU0LDI5Ljc0NDkxNzQgQzIyLjIwNjE4NTQsMjguOTM5NzI5MiAyMS45Njg1MTQ3LDI4LjI2NjM5MDEgMjEuNDkzMjE0MiwyNy43MjQ4NTk1IEMyMS4wMTc4NzI5LDI3LjE4MzY1NDcgMjAuNDE2OTU1MiwyNi45MTI4NjkxIDE5LjY5MTAzMTIsMjYuOTEyODY5MSBaIE0xMy4zNTcwOTAyLDAuMTM5MTMwNDM1IEwxMy43NDkzNzkyLDYuMTExODEyMDYgTDYuNDQ3MzMwNDcsNi4xMTE4MTIwNiBMNi40NDczMzA0Nyw4Ljk2NzQwMzQ3IEwxMi40MTk2ODYyLDguOTY3NDAzNDcgTDEyLjQxOTY4NjIsMTQuODUyNTExNSBMNi40NDczMzA0NywxNC44NTI1MTE1IEw2LjQ0NzMzMDQ3LDIxLjkxNDc3MTUgTDAuMzAwMzk3NzcyLDIxLjkxNDc3MTUgTDAuMzAwMzk3NzcyLDAuMTM5MTMwNDM1IEwxMy4zNTcwOTAyLDAuMTM5MTMwNDM1IFogTTM4LjM1ODU3NTcsMC4yMjY1ODE4MjcgTDQxLjA2MTUwMzksNC44NDczMzA5MSBMNDMuNzIwODg5NywwLjIyNjU4MTgyNyBMNTAuMzI1NTI2OCwwLjIyNjU4MTgyNyBMNDQuMzUzMTMwMywxMC42MDIwOTY5IEw1MC44OTIyMjk4LDIxLjg0OTU1OTcgTDQ0LjExMzM0MTYsMjEuODQ5NTU5NyBMNDAuOTUyNDIzOSwxNi40NDM2MjE4IEwzNy44MzU2NTk1LDIxLjg0OTU1OTcgTDMxLjIzMTAyMjQsMjEuODQ5NTU5NyBMMzcuNjYxMDgyNiwxMC42Njc2MzQ1IEwzMS42MjMxODkyLDAuMjI2NTgxODI3IEwzOC4zNTg1NzU3LDAuMjI2NTgxODI3IFogTTIzLjk5NDE4NTUsMC41MzE1ODIzMDQgTDI0LjI3NTIwNTQsMC41MzUzNjIzNzUgQzI5Ljg3NzA2MDgsMC42ODYyNDgzMjkgMzQuMzQ3ODI3NSw1LjMzNTE5MjkyIDM0LjM0NzgyNzUsMTEuMDU5ODAxMiBMMzQuMzQ3ODI3NSwxMS4wNTk4MDEyIEwzNC4zNDQxMTczLDExLjM0NTEyMzQgQzM0LjE5NjAxOTUsMTcuMDMzMDA0NCAyOS42MzI4MTYxLDIxLjU4ODE0MjQgMjMuOTk0MTg1NSwyMS41ODgxNDI0IEwyMy45OTQxODU1LDIxLjU4ODE0MjQgTDIzLjcxMjA4OTksMjEuNTg0Mzc5MyBDMTguMDg4NzIzMywyMS40MzQxNjU5IDEzLjU5NjcxNiwxNi44MDU1NjM0IDEzLjU5NjcxNiwxMS4wNTk4MDEyIEMxMy41OTY3MTYsNS4yMzk3ODI3OCAxOC4yMzk3MDQ3LDAuNTMxNTgyMzA0IDIzLjk5NDE4NTUsMC41MzE1ODIzMDQgTDIzLjk5NDE4NTUsMC41MzE1ODIzMDQgWiBNMjMuOTk0MTg1NSw0Ljg0NzMzMDkxIEwyMy44NTQ2NjQ1LDQuODUzNzgxMTcgQzIyLjk3ODMxMTUsNC45MzQ5MTQ2OCAyMi4yNTA0NTI4LDUuNzcwNTc4NTIgMjIuMjUwNDUyOCw2Ljc0MzcyNjc4IEwyMi4yNTA0NTI4LDYuNzQzNzI2NzggTDIyLjI1MDQ1MjgsMTUuMzc1OTE2NCBDMjIuMjUwNDUyOCwxNi4zMzQ1ODI1IDIzLjA1Njk0NDUsMTcuMTQxMzU5MiAyMy45OTQxODU1LDE3LjE0MTM1OTIgTDIzLjk5NDE4NTUsMTcuMTQxMzU5MiBMMjQuMTQ1ODIzMywxNy4xMzYxNjcyIEMyNS4wOTI5ODQ0LDE3LjA3MDY2MDYgMjUuNzgxNTgyOCwxNi4zOTAyMzY1IDI1Ljc4MTU4MjgsMTUuMzc1OTE2NCBMMjUuNzgxNTgyOCwxNS4zNzU5MTY0IEwyNS43ODE1ODI4LDYuNzQzNzI2NzggTDI1Ljc3NTkyMzEsNi41OTEzMDQyOCBDMjUuNzA0NjMwMyw1LjYzNDMzNzMzIDI0Ljk2NzM3MjUsNC44NDczMzA5MSAyMy45OTQxODU1LDQuODQ3MzMwOTEgTDIzLjk5NDE4NTUsNC44NDczMzA5MSBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0iMTQ0MHB4LS0tRGVza3RvcCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IldlYl8xNDQwX0xpdmVUVl9OZXdDb21wb25lbnRzX0NoYW5uZWxMb2dvcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM4MC4wMDAwMDAsIC0xMzEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJGb3gtU291bCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzgwLjAwMDAwMCwgMTMxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9BcHAvRm94LVNvdWwvU3RhY2tlZC9XaGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTQuNDAwMDAwLCAyMC44MDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXNrPgogICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGlkPSJGb3gtU291bCIgZmlsbD0iY3VycmVudENvbG9yIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgSoul as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFoxWeather(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.543 81.514c0 4.477-3.56 8.1-7.93 8.1H47.28c-4.37-.053-7.93-3.677-7.93-8.1V49.486c0-4.477 3.56-8.1 7.93-8.1h35.334c4.37 0 7.93 3.623 7.93 8.1v32.028zM82.613 40h-35.28C42.153 40 38 44.263 38 49.486v32.028C38 86.737 42.154 91 47.333 91h35.334C87.792 91 92 86.737 92 81.514V49.486C91.946 44.263 87.792 40 82.613 40z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.459 61.317c0 .906-.756 1.598-1.673 1.598s-1.618-.746-1.618-1.652v-7.887c0-.906.701-1.705 1.618-1.705.917 0 1.673.8 1.673 1.705v7.94zM63.84 48.154c-5.179 0-9.333 4.21-9.333 9.379 0 5.17 4.208 9.38 9.333 9.38 5.179 0 9.333-4.21 9.333-9.38 0-5.17-4.154-9.38-9.333-9.38z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86.875 48.154H81.05l-2.212 3.89-2.266-3.89h-5.826l5.233 8.953-5.449 9.592h5.773l2.59-4.583 2.696 4.583h5.88l-5.664-9.646zM48.412 53.216h6.365l-.323-5.062H43.07v18.545h5.287v-6.022h5.232v-5.063h-5.178zM61.413 80.075c0-.106-.054-.426-.108-1.012 0-.054 0-.16-.054-.267 0-.106 0-.266-.054-.426l-.054-.853c0 .107 0 .16-.054.267 0 .106-.054.213-.054.32 0 .213-.054.372-.054.48v.159l-.162 1.066-.216 1.385h.971l-.161-1.012c.054.053 0 0 0-.107\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.394 84.285l-1.133-3.144c0-.053-.054-.107-.054-.213-.054-.107-.054-.213-.108-.32v3.677h-2.32V75.44h2.374c1.079 0 1.834.213 2.373.64.648.532.972 1.332.972 2.29 0 1.067-.432 1.813-1.35 2.186l1.727 3.677h-2.481v.053zm-4.262-6.768h-1.996v1.28h1.78v1.971h-1.78V82.1h1.996v2.132h-4.316v-8.793h4.316v2.078zm-4.963 6.768h-2.32v-3.517h-1.133v3.517h-2.32V75.44h2.32v3.09h1.133v-3.09h2.32v8.846zm-6.42-6.714h-1.348v6.714h-2.32v-6.714h-1.295v-2.132h4.963v2.132zm-6.69 6.714l-.16-1.119h-1.565l-.216 1.12H57.69l2.104-8.794h2.86l1.834 8.793H62.06zm-4.8-6.768h-1.996v1.28h1.78v1.971h-1.78V82.1h1.996v2.132h-4.316v-8.793h4.316v2.078zm-6.636 6.768h-2.265l-.54-3.09c-.108-.587-.162-1.12-.216-1.546 0-.213-.054-.373-.054-.533 0-.16-.053-.266-.053-.32 0 .16-.054.427-.108.853 0 .213-.054.426-.054.693 0 .213-.054.48-.108.746l-.432 3.197h-2.266L42.64 75.44h2.32l.378 2.451c.162.96.27 1.706.323 2.292l.054.8.054-.694c.054-.799.162-1.598.324-2.291l.431-2.505h1.996l.378 2.132c.162.96.324 2.131.486 3.517.054-.586.108-1.12.108-1.599.053-.48.107-.906.161-1.279l.432-2.718h2.266l-1.727 8.74zM40.482 72.028V82.42c.485 3.357 3.344 5.969 6.797 5.969h35.334c3.615 0 6.582-2.878 6.852-6.502v-9.859H40.482z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.207 77.464h-.108v2.078h.162c.27 0 .485-.106.647-.32.162-.213.27-.48.27-.799.054-.64-.27-.96-.971-.96\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2aWV3Qm94PSIwIDAgMTMwIDEzMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT5GT1ggV0VBVEhFUjwvdGl0bGU+CiAgICA8ZyBpZD0iMDQuMDEtTElWRS1UVi1bMTQ0MF0tLS12MjAwIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iRk9YX1dlYl8xNDQwX0xpdmVUVl9OZXdDb21wb25lbnRzX0NoYW5uZWxfTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC02NjAuMDAwMDAwLCAtMTMxLjAwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9IkVQRy9DZWxsL0ZveFdlYXRoZXIvV2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY2MC4wMDAwMDAsIDEzMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJXaGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzguMDAwMDAwLCA0MC4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Mi41NDM0NTY1LDQxLjUxNDEwNjYgQzUyLjU0MzQ1NjUsNDUuOTkwNTk1NiA0OC45ODMwMTcsNDkuNjE0NDIwMSA0NC42MTMzODY2LDQ5LjYxNDQyMDEgTDkuMjc4NzIxMjgsNDkuNjE0NDIwMSBDNC45MDkwOTA5MSw0OS41NjExMjg1IDEuMzQ4NjUxMzUsNDUuOTM3MzA0MSAxLjM0ODY1MTM1LDQxLjUxNDEwNjYgTDEuMzQ4NjUxMzUsOS40ODU4OTM0MiBDMS4zNDg2NTEzNSw1LjAwOTQwNDM5IDQuOTA5MDkwOTEsMS4zODU1Nzk5NCA5LjI3ODcyMTI4LDEuMzg1NTc5OTQgTDQ0LjYxMzM4NjYsMS4zODU1Nzk5NCBDNDguOTgzMDE3LDEuMzg1NTc5OTQgNTIuNTQzNDU2NSw1LjAwOTQwNDM5IDUyLjU0MzQ1NjUsOS40ODU4OTM0MiBMNTIuNTQzNDU2NSw0MS41MTQxMDY2IFogTTQ0LjYxMzM4NjYsMCBMOS4zMzI2NjczMywwIEM0LjE1Mzg0NjE1LDAgMCw0LjI2MzMyMjg4IDAsOS40ODU4OTM0MiBMMCw0MS41MTQxMDY2IEMwLDQ2LjczNjY3NzEgNC4xNTM4NDYxNSw1MSA5LjMzMjY2NzMzLDUxIEw0NC42NjczMzI3LDUxIEM0OS43OTIyMDc4LDUxIDU0LDQ2LjczNjY3NzEgNTQsNDEuNTE0MTA2NiBMNTQsOS40ODU4OTM0MiBDNTMuOTQ2MDUzOSw0LjI2MzMyMjg4IDQ5Ljc5MjIwNzgsMCA0NC42MTMzODY2LDAgTDQ0LjYxMzM4NjYsMCBaIiBpZD0iRmlsbC0xIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NTg1NDE1LDIxLjMxNjYxNDQgQzI3LjQ1ODU0MTUsMjIuMjIyNTcwNSAyNi43MDMyOTY3LDIyLjkxNTM2MDUgMjUuNzg2MjEzOCwyMi45MTUzNjA1IEMyNC44NjkxMzA5LDIyLjkxNTM2MDUgMjQuMTY3ODMyMiwyMi4xNjkyNzkgMjQuMTY3ODMyMiwyMS4yNjMzMjI5IEwyNC4xNjc4MzIyLDEzLjM3NjE3NTUgQzI0LjE2NzgzMjIsMTIuNDcwMjE5NCAyNC44NjkxMzA5LDExLjY3MDg0NjQgMjUuNzg2MjEzOCwxMS42NzA4NDY0IEMyNi43MDMyOTY3LDExLjY3MDg0NjQgMjcuNDU4NTQxNSwxMi40NzAyMTk0IDI3LjQ1ODU0MTUsMTMuMzc2MTc1NSBMMjcuNDU4NTQxNSwyMS4zMTY2MTQ0IFogTTI1Ljg0MDE1OTgsOC4xNTM2MDUwMiBDMjAuNjYxMzM4Nyw4LjE1MzYwNTAyIDE2LjUwNzQ5MjUsMTIuMzYzNjM2NCAxNi41MDc0OTI1LDE3LjUzMjkxNTQgQzE2LjUwNzQ5MjUsMjIuNzAyMTk0NCAyMC43MTUyODQ3LDI2LjkxMjIyNTcgMjUuODQwMTU5OCwyNi45MTIyMjU3IEMzMS4wMTg5ODEsMjYuOTEyMjI1NyAzNS4xNzI4MjcyLDIyLjcwMjE5NDQgMzUuMTcyODI3MiwxNy41MzI5MTU0IEMzNS4xNzI4MjcyLDEyLjM2MzYzNjQgMzEuMDE4OTgxLDguMTUzNjA1MDIgMjUuODQwMTU5OCw4LjE1MzYwNTAyIEwyNS44NDAxNTk4LDguMTUzNjA1MDIgWiIgaWQ9IkZpbGwtNCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJGaWxsLTYiIHBvaW50cz0iNDguODc1MTI0OSA4LjE1MzYwNTAyIDQzLjA0ODk1MSA4LjE1MzYwNTAyIDQwLjgzNzE2MjggMTIuMDQzODg3MSAzOC41NzE0Mjg2IDguMTUzNjA1MDIgMzIuNzQ1MjU0NyA4LjE1MzYwNTAyIDM3Ljk3ODAyMiAxNy4xMDY1ODMxIDMyLjUyOTQ3MDUgMjYuNjk5MDU5NiAzOC4zMDE2OTgzIDI2LjY5OTA1OTYgNDAuODkxMTA4OSAyMi4xMTU5ODc1IDQzLjU4ODQxMTYgMjYuNjk5MDU5NiA0OS40Njg1MzE1IDI2LjY5OTA1OTYgNDMuODA0MTk1OCAxNy4wNTMyOTE1Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IkZpbGwtOCIgcG9pbnRzPSIxMC40MTE1ODg0IDEzLjIxNjMwMDkgMTYuNzc3MjIyOCAxMy4yMTYzMDA5IDE2LjQ1MzU0NjUgOC4xNTM2MDUwMiA1LjA3MDkyOTA3IDguMTUzNjA1MDIgNS4wNzA5MjkwNyAyNi42OTkwNTk2IDEwLjM1NzY0MjQgMjYuNjk5MDU5NiAxMC4zNTc2NDI0IDIwLjY3NzExNiAxNS41OTA0MDk2IDIwLjY3NzExNiAxNS41OTA0MDk2IDE1LjYxNDQyMDEgMTAuNDExNTg4NCAxNS42MTQ0MjAxIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjQxMjU4NzQsNDAuMDc1MjM1MSBDMjMuNDEyNTg3NCwzOS45Njg2NTIgMjMuMzU4NjQxNCwzOS42NDg5MDI4IDIzLjMwNDY5NTMsMzkuMDYyNjk1OSBDMjMuMzA0Njk1MywzOS4wMDk0MDQ0IDIzLjMwNDY5NTMsMzguOTAyODIxMyAyMy4yNTA3NDkzLDM4Ljc5NjIzODIgQzIzLjI1MDc0OTMsMzguNjg5NjU1MiAyMy4yNTA3NDkzLDM4LjUyOTc4MDYgMjMuMTk2ODAzMiwzOC4zNjk5MDYgTDIzLjE0Mjg1NzEsMzcuNTE3MjQxNCBDMjMuMTQyODU3MSwzNy42MjM4MjQ1IDIzLjE0Mjg1NzEsMzcuNjc3MTE2IDIzLjA4ODkxMTEsMzcuNzgzNjk5MSBDMjMuMDg4OTExMSwzNy44OTAyODIxIDIzLjAzNDk2NSwzNy45OTY4NjUyIDIzLjAzNDk2NSwzOC4xMDM0NDgzIEMyMy4wMzQ5NjUsMzguMzE2NjE0NCAyMi45ODEwMTksMzguNDc2NDg5IDIyLjk4MTAxOSwzOC41ODMwNzIxIEMyMi45ODEwMTksMzguNjg5NjU1MiAyMi45ODEwMTksMzguNzQyOTQ2NyAyMi45ODEwMTksMzguNzQyOTQ2NyBMMjIuODE5MTgwOCwzOS44MDg3Nzc0IEwyMi42MDMzOTY2LDQxLjE5NDM1NzQgTDIzLjU3NDQyNTYsNDEuMTk0MzU3NCBMMjMuNDEyNTg3NCw0MC4xODE4MTgyIEMyMy40NjY1MzM1LDQwLjIzNTEwOTcgMjMuNDEyNTg3NCw0MC4xODE4MTgyIDIzLjQxMjU4NzQsNDAuMDc1MjM1MSIgaWQ9IkZpbGwtMTAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDYuMzkzNjA2NCw0NC4yODUyNjY1IEw0NS4yNjA3MzkzLDQxLjE0MTA2NTggQzQ1LjI2MDczOTMsNDEuMDg3Nzc0MyA0NS4yMDY3OTMyLDQxLjAzNDQ4MjggNDUuMjA2NzkzMiw0MC45Mjc4OTk3IEM0NS4xNTI4NDcyLDQwLjgyMTMxNjYgNDUuMTUyODQ3Miw0MC43MTQ3MzM1IDQ1LjA5ODkwMTEsNDAuNjA4MTUwNSBMNDUuMDk4OTAxMSw0MS4xOTQzNTc0IEw0NS4wOTg5MDExLDQ0LjI4NTI2NjUgTDQyLjc3OTIyMDgsNDQuMjg1MjY2NSBMNDIuNzc5MjIwOCwzNS40Mzg4NzE1IEw0NS4xNTI4NDcyLDM1LjQzODg3MTUgQzQ2LjIzMTc2ODIsMzUuNDM4ODcxNSA0Ni45ODcwMTMsMzUuNjUyMDM3NiA0Ny41MjY0NzM1LDM2LjA3ODM2OTkgQzQ4LjE3MzgyNjIsMzYuNjExMjg1MyA0OC40OTc1MDI1LDM3LjQxMDY1ODMgNDguNDk3NTAyNSwzOC4zNjk5MDYgQzQ4LjQ5NzUwMjUsMzkuNDM1NzM2NyA0OC4wNjU5MzQxLDQwLjE4MTgxODIgNDcuMTQ4ODUxMSw0MC41NTQ4NTg5IEw0OC44NzUxMjQ5LDQ0LjIzMTk3NDkgTDQ2LjM5MzYwNjQsNDQuMjMxOTc0OSBMNDYuMzkzNjA2NCw0NC4yODUyNjY1IFogTTQyLjEzMTg2ODEsMzcuNTE3MjQxNCBMNDAuMTM1ODY0MSwzNy41MTcyNDE0IEw0MC4xMzU4NjQxLDM4Ljc5NjIzODIgTDQxLjkxNjA4MzksMzguNzk2MjM4MiBMNDEuOTE2MDgzOSw0MC43NjgwMjUxIEw0MC4xMzU4NjQxLDQwLjc2ODAyNTEgTDQwLjEzNTg2NDEsNDIuMTAwMzEzNSBMNDIuMTMxODY4MSw0Mi4xMDAzMTM1IEw0Mi4xMzE4NjgxLDQ0LjIzMTk3NDkgTDM3LjgxNjE4MzgsNDQuMjMxOTc0OSBMMzcuODE2MTgzOCwzNS40Mzg4NzE1IEw0Mi4xMzE4NjgxLDM1LjQzODg3MTUgTDQyLjEzMTg2ODEsMzcuNTE3MjQxNCBaIE0zNy4xNjg4MzEyLDQ0LjI4NTI2NjUgTDM0Ljg0OTE1MDgsNDQuMjg1MjY2NSBMMzQuODQ5MTUwOCw0MC43NjgwMjUxIEwzMy43MTYyODM3LDQwLjc2ODAyNTEgTDMzLjcxNjI4MzcsNDQuMjg1MjY2NSBMMzEuMzk2NjAzNCw0NC4yODUyNjY1IEwzMS4zOTY2MDM0LDM1LjQzODg3MTUgTDMzLjcxNjI4MzcsMzUuNDM4ODcxNSBMMzMuNzE2MjgzNywzOC41Mjk3ODA2IEwzNC44NDkxNTA4LDM4LjUyOTc4MDYgTDM0Ljg0OTE1MDgsMzUuNDM4ODcxNSBMMzcuMTY4ODMxMiwzNS40Mzg4NzE1IEwzNy4xNjg4MzEyLDQ0LjI4NTI2NjUgWiBNMzAuNzQ5MjUwNywzNy41NzA1MzI5IEwyOS40MDA1OTk0LDM3LjU3MDUzMjkgTDI5LjQwMDU5OTQsNDQuMjg1MjY2NSBMMjcuMDgwOTE5MSw0NC4yODUyNjY1IEwyNy4wODA5MTkxLDM3LjU3MDUzMjkgTDI1Ljc4NjIxMzgsMzcuNTcwNTMyOSBMMjUuNzg2MjEzOCwzNS40Mzg4NzE1IEwzMC43NDkyNTA3LDM1LjQzODg3MTUgTDMwLjc0OTI1MDcsMzcuNTcwNTMyOSBaIE0yNC4wNTk5NDAxLDQ0LjI4NTI2NjUgTDIzLjg5ODEwMTksNDMuMTY2MTQ0MiBMMjIuMzMzNjY2Myw0My4xNjYxNDQyIEwyMi4xMTc4ODIxLDQ0LjI4NTI2NjUgTDE5LjY5MDMwOTcsNDQuMjg1MjY2NSBMMjEuNzk0MjA1OCwzNS40OTIxNjMgTDI0LjY1MzM0NjcsMzUuNDkyMTYzIEwyNi40ODc1MTI1LDQ0LjI4NTI2NjUgTDI0LjA1OTk0MDEsNDQuMjg1MjY2NSBaIE0xOS4yNTg3NDEzLDM3LjUxNzI0MTQgTDE3LjI2MjczNzMsMzcuNTE3MjQxNCBMMTcuMjYyNzM3MywzOC43OTYyMzgyIEwxOS4wNDI5NTcsMzguNzk2MjM4MiBMMTkuMDQyOTU3LDQwLjc2ODAyNTEgTDE3LjI2MjczNzMsNDAuNzY4MDI1MSBMMTcuMjYyNzM3Myw0Mi4xMDAzMTM1IEwxOS4yNTg3NDEzLDQyLjEwMDMxMzUgTDE5LjI1ODc0MTMsNDQuMjMxOTc0OSBMMTQuOTQzMDU2OSw0NC4yMzE5NzQ5IEwxNC45NDMwNTY5LDM1LjQzODg3MTUgTDE5LjI1ODc0MTMsMzUuNDM4ODcxNSBMMTkuMjU4NzQxMywzNy41MTcyNDE0IEwxOS4yNTg3NDEzLDM3LjUxNzI0MTQgWiBNMTIuNjIzMzc2Niw0NC4yODUyNjY1IEwxMC4zNTc2NDI0LDQ0LjI4NTI2NjUgTDkuODE4MTgxODIsNDEuMTk0MzU3NCBDOS43MTAyODk3MSw0MC42MDgxNTA1IDkuNjU2MzQzNjYsNDAuMDc1MjM1MSA5LjYwMjM5NzYsMzkuNjQ4OTAyOCBDOS42MDIzOTc2LDM5LjQzNTczNjcgOS41NDg0NTE1NSwzOS4yNzU4NjIxIDkuNTQ4NDUxNTUsMzkuMTE1OTg3NSBDOS41NDg0NTE1NSwzOC45NTYxMTI5IDkuNDk0NTA1NDksMzguODQ5NTI5OCA5LjQ5NDUwNTQ5LDM4Ljc5NjIzODIgQzkuNDk0NTA1NDksMzguOTU2MTEyOSA5LjQ0MDU1OTQ0LDM5LjIyMjU3MDUgOS4zODY2MTMzOSwzOS42NDg5MDI4IEM5LjM4NjYxMzM5LDM5Ljg2MjA2OSA5LjMzMjY2NzMzLDQwLjA3NTIzNTEgOS4zMzI2NjczMyw0MC4zNDE2OTI4IEM5LjMzMjY2NzMzLDQwLjU1NDg1ODkgOS4yNzg3MjEyOCw0MC44MjEzMTY2IDkuMjI0Nzc1MjIsNDEuMDg3Nzc0MyBMOC43OTMyMDY3OSw0NC4yODUyNjY1IEw2LjUyNzQ3MjUzLDQ0LjI4NTI2NjUgTDQuNjM5MzYwNjQsMzUuNDM4ODcxNSBMNi45NTkwNDA5NiwzNS40Mzg4NzE1IEw3LjMzNjY2MzM0LDM3Ljg5MDI4MjEgQzcuNDk4NTAxNSwzOC44NDk1Mjk4IDcuNjA2MzkzNjEsMzkuNTk1NjExMyA3LjY2MDMzOTY2LDQwLjE4MTgxODIgTDcuNzE0Mjg1NzEsNDAuOTgxMTkxMiBMNy43NjgyMzE3Nyw0MC4yODg0MDEzIEM3LjgyMjE3NzgyLDM5LjQ4OTAyODIgNy45MzAwNjk5MywzOC42ODk2NTUyIDguMDkxOTA4MDksMzcuOTk2ODY1MiBMOC41MjM0NzY1MiwzNS40OTIxNjMgTDEwLjUxOTQ4MDUsMzUuNDkyMTYzIEwxMC44OTcxMDI5LDM3LjYyMzgyNDUgQzExLjA1ODk0MTEsMzguNTgzMDcyMSAxMS4yMjA3NzkyLDM5Ljc1NTQ4NTkgMTEuMzgyNjE3NCw0MS4xNDEwNjU4IEMxMS40MzY1NjM0LDQwLjU1NDg1ODkgMTEuNDkwNTA5NSw0MC4wMjE5NDM2IDExLjQ5MDUwOTUsMzkuNTQyMzE5NyBDMTEuNTQ0NDU1NSwzOS4wNjI2OTU5IDExLjU5ODQwMTYsMzguNjM2MzYzNiAxMS42NTIzNDc3LDM4LjI2MzMyMjkgTDEyLjA4MzkxNjEsMzUuNTQ1NDU0NSBMMTQuMzQ5NjUwMywzNS41NDU0NTQ1IEwxMi42MjMzNzY2LDQ0LjI4NTI2NjUgWiBNMi40ODE1MTg0OCwzMi4wMjgyMTMyIEwyLjQ4MTUxODQ4LDQyLjQyMDA2MjcgQzIuOTY3MDMyOTcsNDUuNzc3NDI5NSA1LjgyNjE3MzgzLDQ4LjM4ODcxNDcgOS4yNzg3MjEyOCw0OC4zODg3MTQ3IEw0NC42MTMzODY2LDQ4LjM4ODcxNDcgQzQ4LjIyNzc3MjIsNDguMzg4NzE0NyA1MS4xOTQ4MDUyLDQ1LjUxMDk3MTggNTEuNDY0NTM1NSw0MS44ODcxNDczIEw1MS40NjQ1MzU1LDMyLjAyODIxMzIgTDIuNDgxNTE4NDgsMzIuMDI4MjEzMiBaIiBpZD0iRmlsbC0xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00NS4yMDY3OTMyLDM3LjQ2Mzk0OTggTDQ1LjA5ODkwMTEsMzcuNDYzOTQ5OCBMNDUuMDk4OTAxMSwzOS41NDIzMTk3IEw0NS4yNjA3MzkzLDM5LjU0MjMxOTcgQzQ1LjUzMDQ2OTUsMzkuNTQyMzE5NyA0NS43NDYyNTM3LDM5LjQzNTczNjcgNDUuOTA4MDkxOSwzOS4yMjI1NzA1IEM0Ni4wNjk5MzAxLDM5LjAwOTQwNDQgNDYuMTc3ODIyMiwzOC43NDI5NDY3IDQ2LjE3NzgyMjIsMzguNDIzMTk3NSBDNDYuMjMxNzY4MiwzNy43ODM2OTkxIDQ1LjkwODA5MTksMzcuNDYzOTQ5OCA0NS4yMDY3OTMyLDM3LjQ2Mzk0OTgiIGlkPSJGaWxsLTE0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgFoxWeather as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFs1(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M95.341 52.305v25.892h-9.674V62.543l1.596-1.6h-6.855v-3.165l5.507-5.473h9.426zm-37.8-.005l-5.529 5.536h-8.86v4.593h8.765v5.584h-10.15l1.386 1.395v8.79H34.6V52.3h22.94zm19.054 0V55.8l-2.15 2.035h-9.502l-.717.752v3.237l.566.603h8.673l3.206 3.2v8.885l-3.691 3.684H54.783v-1.103l4.494-4.501h8.11l.754-.753v-3.238l-.566-.565h-8.671L55.698 64.8v-6.718l5.774-5.782h15.123z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+RlMxPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjQwLjAwMDAwMCwgLTI3MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZTMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLjAwMDAwMCwgMjcxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9OZXR3b3JrL0ZTMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS42MDAwMDAsIDI3LjIwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02MC43NDE0MDY5LDAuMTA0ODcwMjI4IEw2MC43NDE0MDY5LDI1Ljk5NjkxMDkgTDUxLjA2NjkyNDEsMjUuOTk2OTEwOSBMNTEuMDY2OTI0MSwxMC4zNDI2MDU5IEw1Mi42NjI3MzEsOC43NDI1NjM4MyBMNDUuODA3NjY5LDguNzQyNTYzODMgTDQ1LjgwNzY2OSw1LjU3ODA2MDY0IEw1MS4zMTUzMTAzLDAuMTA0ODcwMjI4IEw2MC43NDE0MDY5LDAuMTA0ODcwMjI4IFogTTIyLjk0MDY4OTcsMC4xMDAwMjMyODUgTDE3LjQxMjQxMzgsNS42MzU1NjMwMiBMOC41NTI4Mjc1OSw1LjYzNTU2MzAyIEw4LjU1MjgyNzU5LDEwLjIyODkyMzEgTDE3LjMxNjg1NTIsMTAuMjI4OTIzMSBMMTcuMzE2ODU1MiwxNS44MTMwNDI0IEw3LjE2NjIzNDQ4LDE1LjgxMzA0MjQgTDguNTUyODI3NTksMTcuMjA3ODYwNSBMOC41NTI4Mjc1OSwyNS45OTcxMzEyIEwxLjYzODY4MzA2ZS0xMywyNS45OTcxMzEyIEwxLjYzODY4MzA2ZS0xMywwLjEwMDAyMzI4NSBMMjIuOTQwNjg5NywwLjEwMDAyMzI4NSBaIE00MS45OTQ4MTM4LDAuMDk5NjkyODExMiBMNDEuOTk0ODEzOCwzLjYwMTQ5OTE5IEwzOS44NDU1MTcyLDUuNjM1NjczMTcgTDMwLjM0Mjk1MTcsNS42MzU2NzMxNyBMMjkuNjI1Niw2LjM4NzUwMDE4IEwyOS42MjU2LDkuNjI1MjU4MzEgTDMwLjE5MTY2OSwxMC4yMjc2MDEyIEwzOC44NjQ2NjIxLDEwLjIyNzYwMTIgTDQyLjA3MDczMSwxMy40Mjc2ODUzIEw0Mi4wNzA3MzEsMjIuMzEyOTAzNSBMMzguMzgwMDI3NiwyNS45OTcyNDE0IEwyMC4xODI4NDE0LDI1Ljk5NzI0MTQgTDIwLjE4Mjg0MTQsMjQuODkzNTcwNCBMMjQuNjc3NDA2OSwyMC4zOTI1MjI1IEwzMi43ODY4NjksMjAuMzkyNTIyNSBMMzMuNTQwOTY1NSwxOS42Mzk3MDQxIEwzMy41NDA5NjU1LDE2LjQwMTk0NiBMMzIuOTc1MzM3OSwxNS44MzcyNzcxIEwyNC4zMDM4ODk3LDE1LjgzNzI3NzEgTDIxLjA5ODM3MjQsMTIuNTk5NTE5IEwyMS4wOTgzNzI0LDUuODgxNjU1NTUgTDI2Ljg3MTUwMzQsMC4wOTk2OTI4MTEyIEw0MS45OTQ4MTM4LDAuMDk5NjkyODExMiBaIiBpZD0iRlMxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgFs1 as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFs2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.023 52.295l-5.163 5.178h-8.273v4.297h8.184v5.224h-9.479l1.295 1.304v8.222H34.6V52.295h21.423zm17.793 0v3.276l-2.007 1.903h-8.874l-.67.703v3.029l.529.563h8.099l2.994 2.993v8.312L70.44 76.52H53.447v-1.032l4.197-4.21h7.573l.704-.705v-3.029l-.528-.528h-8.097l-2.994-3.028v-6.284l5.391-5.409h14.123zm17.69 0l3.545 3.51v8.951l-3.02 2.984h-9.656l1.595 1.586v2.065h11.08v5.125H77.337V65.564l2.984-3.019h7.5l.561-.527v-4.387l-.49-.457h-3.36l-.49.457v2.246h-6.67V55.7l3.44-3.405h10.695z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+RlMyPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzgwLjAwMDAwMCwgLTI3MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZTMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzgwLjAwMDAwMCwgMjcxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9OZXR3b3JrL0ZTMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS42MDAwMDAsIDI3LjIwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS40MjI2MjI0LDAuMDk1NDI1MDg0NyBMMTYuMjYwMDg0MSw1LjI3MzMxNzk3IEw3Ljk4Njg1Mjg4LDUuMjczMzE3OTcgTDcuOTg2ODUyODgsOS41NzAxMjYxIEwxNi4xNzA5NDUxLDkuNTcwMTI2MSBMMTYuMTcwOTQ1MSwxNC43OTM1Njc1IEw2LjY5MjAxODk4LDE0Ljc5MzU2NzUgTDcuOTg2ODUyODgsMTYuMDk4Mjk0MiBMNy45ODY4NTI4OCwyNC4zMTk4OTY5IEw0Ljc0NTA1MDIzZS0xNCwyNC4zMTk4OTY5IEw0Ljc0NTA1MDIzZS0xNCwwLjA5NTQyNTA4NDcgTDIxLjQyMjYyMjQsMC4wOTU0MjUwODQ3IFogTTM5LjIxNTg5NjksMC4wOTUxMTU5MzIyIEwzOS4yMTU4OTY5LDMuMzcwNjkwMTcgTDM3LjIwODc3NTYsNS4yNzM1MjQwNyBMMjguMzM1MDY3MSw1LjI3MzUyNDA3IEwyNy42NjUxMzM2LDUuOTc2ODQ2MSBMMjcuNjY1MTMzNiw5LjAwNTUxMDUxIEwyOC4xOTM3ODQ0LDkuNTY4ODg5NDkgTDM2LjI5Mjg1OTcsOS41Njg4ODk0OSBMMzkuMjg2NjkyOSwxMi41NjIzMTA1IEwzOS4yODY2OTI5LDIwLjg3MzU2NzUgTDM1Ljg0MDI2MDMsMjQuMzIgTDE4Ljg0NzI3ODYsMjQuMzIgTDE4Ljg0NzI3ODYsMjMuMjg3NjM2NiBMMjMuMDQ0NDM2NiwxOS4wNzcyODgxIEwzMC42MTcyMzEyLDE5LjA3NzI4ODEgTDMxLjMyMTQ4MDcsMTguMzczMDM4NiBMMzEuMzIxNDgwNywxNS4zNDQ0NzczIEwzMC43OTMzNDUxLDE0LjgxNjIzODYgTDIyLjY5NTYwOTUsMTQuODE2MjM4NiBMMTkuNzAyMTg4NSwxMS43ODc2NzczIEwxOS43MDIxODg1LDUuNTAzNjM2NjEgTDI1LjA5MzI5MzYsMC4wOTUxMTU5MzIyIEwzOS4yMTU4OTY5LDAuMDk1MTE1OTMyMiBaIE01Ni45MDU2MDU0LDAuMDk1NDI1MDg0NyBMNjAuNDUwNjU3NiwzLjYwNTc0OTE1IEw2MC40NTA2NTc2LDEyLjU1NjQzNjYgTDU3LjQzMTg4NjEsMTUuNTQwMDY3OCBMNDcuNzc1MDk0MiwxNS41NDAwNjc4IEw0OS4zNzAzMjE0LDE3LjEyNTUwNTEgTDQ5LjM3MDMyMTQsMTkuMTkwNzQ3MSBMNjAuNDUwNjU3NiwxOS4xOTA3NDcxIEw2MC40NTA2NTc2LDI0LjMxNTY3MTkgTDQyLjczNjExMzksMjQuMzE1NjcxOSBMNDIuNzM2MTEzOSwxMy4zNjM5NDMxIEw0NS43MTk2NDIsMTAuMzQ1MTcxNSBMNTMuMjE5NjgyNywxMC4zNDUxNzE1IEw1My43ODEyMDY4LDkuODE4NDc4NjQgTDUzLjc4MTIwNjgsNS40MzA2NzY2MSBMNTMuMjkwMDY2NCw0Ljk3NDI2NDQxIEw0OS45MzE4NDU0LDQuOTc0MjY0NDEgTDQ5LjQ0MDI5MjksNS40MzA2NzY2MSBMNDkuNDQwMjkyOSw3LjY3NzA4MjAzIEw0Mi43NzEyNTQyLDcuNjc3MDgyMDMgTDQyLjc3MTI1NDIsMy41MDAxMjIwMyBMNDYuMjExMTk0NiwwLjA5NTQyNTA4NDcgTDU2LjkwNTYwNTQsMC4wOTU0MjUwODQ3IFoiIGlkPSJGUzIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgFs2 as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFsp(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.413 64.732c-.044 2.603-.544 5.06-1.45 7.105-.602 1.478-1.26 2.708-1.952 3.648l-.08.107h-3.444l-.054.082c-.581.886-1.379 1.841-2.083 2.684l-.535.642a41.75 41.75 0 01-3.063 3.321l.364-1.814-.26-.326a58.733 58.733 0 002.022-2.125c.334-.369.68-.778 1.02-1.206.343-.42.671-.848.966-1.258 0 0 .236-.352.354-.525h4.447c.639-.892 1.249-2.046 1.815-3.436.88-1.989 1.366-4.375 1.407-6.907.016-.953-.038-1.9-.159-2.818-.17-1.364-.513-2.863-.926-4.055H88.85l-.009-9.02v-.269l-.214-.165c-.087-.067-9.356-6.695-23.726-6.695-14.825 0-23.398 6.642-23.478 6.71l-.196.163-.013 9.276h-6.338c-.414 1.192-.757 2.691-.927 4.053a19.32 19.32 0 00-.16 2.82c.043 2.532.528 4.918 1.405 6.9.57 1.397 1.18 2.553 1.818 3.443h4.81c.121.174 1.674 2.265 2.388 3.05.75.825 1.527 1.6 2.314 2.337l-.32 1.591a59.67 59.67 0 01-2.95-3.038 29.226 29.226 0 01-2.572-3.333l-.054-.082h-3.882l-.079-.107c-.691-.939-1.35-2.169-1.956-3.656-.902-2.038-1.403-4.494-1.446-7.097-.016-.977.04-1.95.164-2.894.182-1.464.561-3.086 1.014-4.338l.063-.174h5.952l-.003-9.112.473-.395c.08-.069 8.83-6.89 23.973-6.89 14.654 0 24.109 6.788 24.198 6.856l.515.396v.09l-.011 9.055h5.568l.063.174c.453 1.252.832 2.874 1.015 4.339.124.94.179 1.915.164 2.893zm-24.298 23.67c-4.06 2.102-7.101 3.032-7.101 3.031-.002.001-3.048-.929-7.107-3.031a54.953 54.953 0 01-5.698-3.407h-1.772l-.133.663c7.625 6.17 14.553 9.004 14.644 9.04l.067.028.067-.028c.105-.044 8.224-3.47 15.701-9.703h-2.97a55.008 55.008 0 01-5.698 3.407zM54.013 63.033l-.846 6.593c-.008.086-.066.125-.174.125h-2.679c-.095 0-.136-.04-.124-.125l.847-6.593c.008-.08.062-.122.155-.122h2.68c.107 0 .153.043.14.122zm36.063-.438l-.41 3.174a2.318 2.318 0 01-.511 1.18c-.289.355-.63.61-1.027.776l1.65 4.479h-2.877l-1.545-4.3h-1.623l-.551 4.3h-2.608l1.505-11.742h6.134c.295 0 .565.055.811.168a1.8 1.8 0 01.99 1.135c.076.26.097.535.062.83zm-9.885 9.609h-7.368l1.506-11.742h7.37l-.314 2.45h-4.763l-.277 2.153h4.34l-.313 2.432h-4.34l-.29 2.254h4.765l-.316 2.453zm-7.839-1.306a2.55 2.55 0 01-1.28 1.136c-.273.116-.557.17-.85.17h-3.774a1.87 1.87 0 01-.81-.17 1.734 1.734 0 01-.609-.455 1.984 1.984 0 01-.363-.681 1.954 1.954 0 01-.058-.827l.959-7.476c.036-.294.13-.57.27-.83.148-.255.326-.482.538-.677.213-.194.457-.347.73-.458.272-.112.555-.168.846-.168h3.776c.295 0 .565.056.808.168.243.111.452.264.618.458.172.195.294.422.37.677.083.26.103.536.063.83l-.254 1.976h-2.608l.198-1.538c.01-.079-.033-.122-.126-.122h-2.52c-.097 0-.147.043-.159.122l-.846 6.594c-.01.085.032.124.127.124h2.52c.091 0 .145-.04.155-.124l.214-1.64h2.609l-.27 2.084c-.038.292-.128.57-.274.827zm-8.125-.827c-.038.292-.13.57-.272.827a2.585 2.585 0 01-1.282 1.137c-.274.115-.558.169-.85.169h-3.774c-.294 0-.564-.054-.81-.17a1.731 1.731 0 01-.608-.455 1.947 1.947 0 01-.367-.681 1.988 1.988 0 01-.057-.827l.96-7.476c.035-.294.128-.57.272-.83.142-.255.326-.482.538-.677.211-.194.454-.347.726-.458a2.21 2.21 0 01.85-.168h3.774c.296 0 .564.056.808.168.244.111.45.264.622.458a1.9 1.9 0 01.43 1.507l-.253 1.976h-2.61l.198-1.538c.01-.079-.033-.122-.128-.122h-2.522c-.092 0-.144.043-.154.122l-.847 6.594c-.01.085.032.124.127.124h2.52c.094 0 .148-.04.158-.124l.21-1.64h2.61l-.269 2.084zm-8.778.827c-.147.26-.33.484-.548.681a2.516 2.516 0 01-.748.455c-.278.116-.564.17-.857.17h-3.932a1.86 1.86 0 01-1.419-.625 1.936 1.936 0 01-.42-1.508l.957-7.476c.037-.295.129-.57.275-.83.143-.255.322-.482.534-.676.216-.195.458-.348.73-.459a2.22 2.22 0 01.85-.168h3.932c.295 0 .566.055.816.168.25.111.46.264.627.459.17.194.294.421.372.676.078.26.1.535.061.83l-.956 7.476c-.042.292-.134.57-.274.827zm-8.212-3.331l-.32 2.504c-.039.292-.13.57-.276.827a2.54 2.54 0 01-1.283 1.136c-.271.116-.555.17-.849.17h-3.613a1.865 1.865 0 01-1.429-.625 1.895 1.895 0 01-.433-1.508l.234-1.837h2.61l-.179 1.392c-.01.086.032.125.127.125h2.363c.103 0 .163-.04.174-.125l.206-1.601c.011-.094-.058-.159-.204-.194h-.018a45.453 45.453 0 01-1.75-.511l-1.157-.334a4.282 4.282 0 01-.727-.302 1.953 1.953 0 01-.57-.423 1.51 1.51 0 01-.352-.582 1.75 1.75 0 01-.056-.796l.294-2.288c.037-.295.128-.57.272-.83.147-.255.326-.482.537-.676.212-.195.457-.348.731-.459a2.2 2.2 0 01.85-.168h3.524c.294 0 .57.055.818.168.25.111.46.264.628.459a1.871 1.871 0 01.433 1.506l-.239 1.87h-2.612l.184-1.432c.011-.08-.036-.122-.14-.122H42.74c-.095 0-.148.043-.158.122l-.18 1.393c-.01.085.058.149.205.197l1.326.388 1.615.474c.247.073.486.167.712.284.224.116.414.26.571.432.154.169.27.368.347.589.077.223.098.482.059.777zm45.152-9.074H37.3c-.587 1.992-.938 4.289-.91 6.496.04 3.42.871 6.742 2.26 9.43h20.174l.212-1.053h4.825l-.212 1.053h27.39c1.39-2.688 2.222-6.01 2.262-9.43.027-2.207-.324-4.504-.91-6.496zm-5.105 4.418h-2.91l-.328 2.557h2.912c.09 0 .145-.047.158-.14l.294-2.295c.01-.08-.035-.122-.126-.122zm9.25 12.462h-.239V74.35h-.004l-.228 1.023h-.25l-.223-1.023h-.004v1.023h-.239v-1.224h.373l.222.965h.004l.218-.965h.37v1.224zm-1.696-1.008h.37v-.216h-.996v.216h.37v1.008h.256v-1.008zm-11.35 2.356H75.57l-1.715 1.429-.395 1.962.999 1.225h5.423l.06.06-.202.994-.086.07h-3.806l-.061-.07.047-.23h-2.827l-.145.721 1.006 1.242h7.213l1.717-1.43.4-2.005-.978-1.227h-5.439l-.044-.054.196-.983.066-.06h6.166l.321-1.644zm-13.475 0l-.93 4.63-.897.74h-2.208l-.451-.567.967-4.803h-3.116l-1.153 5.74 1.31 1.663h4.455l1.248-1.04-.05 1.04h2.454l1.488-7.403h-3.117zm-10.31-2.553l-1.999 9.956h3.117l2-9.956h-3.118zm-5.05 4.849l-.461-.562h-2.467l-1.024.849-.464 2.308.614.749h2.554l.69-.56.558-2.784zm3.245-.637l-.822 4.08-1.99 1.664H50.44l-.565-.71-.672 3.349h-3.116l2.018-10.042h2.451l-.061 1.024 1.23-1.024h4.846l1.326 1.66zm-21.421-8.228a21.674 21.674 0 01-.723-6.703c-.389-.378-.712-.776-1.055-1.19a19.62 19.62 0 00-.117 2.469c.04 2.46.456 4.738 1.223 6.65.218-.42.41-.83.672-1.226zM64.97 54.467a.96.96 0 01-.95-.967v-4.674c0-.535.425-1.013.95-1.013.526 0 .976.478.976 1.013l.019 4.684c0 .534-.47.957-.995.957zm-.017-9c-3.085 0-5.589 2.548-5.589 5.705 0 3.145 2.504 5.7 5.589 5.7 3.083 0 5.585-2.555 5.585-5.7 0-3.157-2.502-5.705-5.585-5.705zM75.827 57l-1.714-2.96-1.695 2.967L68.864 57l3.466-6.044-3.271-5.646h3.657l1.443 2.526 1.462-2.526h3.536l-3.204 5.606L79.48 57h-3.654zm-20.344.018l-.01-3.792h3.25v-3.198h-3.22v-1.53h3.953l-.216-3.208h-7.065v11.728h3.308zm38.452 6.431c.389-.378.712-.776 1.055-1.19.088.798.13 1.621.117 2.469-.04 2.46-.456 4.738-1.223 6.65-.218-.42-.41-.83-.672-1.226.59-2.186.833-4.442.723-6.703z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IFNvY2NlciBQbHVzPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjQwLjAwMDAwMCwgLTQxMS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkNlbGwvQ2hhbm5lbCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLjAwMDAwMCwgNDExLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9OZXR3b3JrL0JUTiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC4wMDAwMDAsIDE2LjAwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02My40MTI1MDgsMjMuNzMxOTkyIEM2My4zNjk0NTE4LDI2LjMzNDUyNzggNjIuODY4NTMsMjguNzkxMDkyNiA2MS45NjMzMDAyLDMwLjgzNjUyMzQgQzYxLjM2MDc3NjMsMzIuMzE1MTM1NSA2MC43MDI1OTQ0LDMzLjU0NTEyNDQgNjAuMDEwNTQ1MSwzNC40ODQ3NDY2IEw1OS45MzE3ODM4LDM0LjU5MTU5OTUgTDU2LjQ4NzI4OTgsMzQuNTkxNTk5NSBMNTYuNDMzNDY5NiwzNC42NzM1MTEyIEM1NS44NTE2ODYyLDM1LjU2MDM2MzQgNTUuMDU0MDk2OCwzNi41MTQ5NTAzIDU0LjM1MDIzMzMsMzcuMzU3Njk2MiBDNTQuMTY2NDU3LDM3LjU3NzcwMjcgNTMuOTg2NjE4NywzNy43OTI5ODM2IDUzLjgxNTQ0NDEsMzguMDAwMzg4MyBDNTIuODU0NTU2MywzOS4xNjc2MzA3IDUxLjgyMzA0NTksNDAuMjc1MDE0NiA1MC43NTE2Mjk3LDQxLjMyMTQ4OTYgTDUxLjExNTUwNjksMzkuNTA2NTY2OCBMNTAuODU2MTE5NywzOS4xODEyODI3IEM1MS41MzY2MTczLDM4LjQ5OTczNSA1Mi4yMTIzODkyLDM3Ljc5MzI0NjEgNTIuODc4MTg0NywzNy4wNTYzMDI5IEM1My4yMTE2MDc1LDM2LjY4NzQzNzUgNTMuNTU3MzY5NiwzNi4yNzc4Nzg4IDUzLjg5ODY2ODYsMzUuODUwMjA1IEM1NC4yNDA3NTUxLDM1LjQyOTA5NDYgNTQuNTY5MTg5NywzNS4wMDIyMDgzIDU0Ljg2NDI4MjEsMzQuNTkxNTk5NSBDNTQuODY0MjgyMSwzNC41OTE1OTk1IDU1LjA5OTc3ODMsMzQuMjQwMzI0MSA1NS4yMTg0NDU0LDM0LjA2NjUyNDIgTDU5LjY2NTMwODEsMzQuMDY2NTI0MiBDNjAuMzAzNTM3MSwzMy4xNzU0NzE0IDYwLjkxMzY3NDYsMzIuMDIwNTY4MiA2MS40ODA0OTM0LDMwLjYzMDk1NjQgQzYyLjM1OTk5NDYsMjguNjQyMjMzNyA2Mi44NDU2ODkyLDI2LjI1NjAyOSA2Mi44ODc0MzI3LDIzLjcyMzU5MDggQzYyLjkwMjY1OTksMjIuNzcxMTA0MiA2Mi44NDkxMDIyLDIxLjgyMzA4MDggNjIuNzI4MzM0OSwyMC45MDU3NzQyIEM2Mi41NTc5NDgsMTkuNTQyMTUzNiA2Mi4yMTQ4MTEyLDE4LjA0MzA2MzYgNjEuODAxNTc3LDE2Ljg1MTQwNTIgTDU1Ljg1MDExMDksMTYuODUxNDA1MiBDNTUuODUwMTEwOSwxNi44NTE0MDUyIDU1Ljg0MTE4NDcsOC42MzYzMzk1NyA1NS44NDExODQ3LDcuODMxOTI0MiBMNTUuODQxMTg0Nyw3LjU2MjAzNTUgTDU1LjYyNjk1MzksNy4zOTcxNjE4NSBDNTUuNTQwMDU0LDcuMzMwMjE0NzUgNDYuMjcwODk5NiwwLjcwMTY2NDExMiAzMS45MDA2Mzg3LDAuNzAxNjY0MTEyIEMxNy4wNzY0NTAyLDAuNzAxNjY0MTEyIDguNTAzMDIwNjMsNy4zNDQzOTE3OCA4LjQyMzIwOTE5LDcuNDExMzM4ODkgTDguMjI3MDkzNTYsNy41NzU0MjQ5MiBMOC4yMTQyMjkyMSwxNi44NTE0MDUyIEwxLjg3NTUyMDE0LDE2Ljg1MTQwNTIgQzEuNDYyMjg1ODgsMTguMDQzMDYzNiAxLjExOTE0OTE3LDE5LjU0MjE1MzYgMC45NDkyODczMDgsMjAuOTA0MTk5IEMwLjgyODI1NzQ1LDIxLjgyNDM5MzQgMC43NzQ2OTk3NjksMjIuNzcyNjc5NCAwLjc4OTkyNjk1MywyMy43MjM4NTM0IEMwLjgzMTkzMjk3OCwyNi4yNTYwMjkgMS4zMTczNjUxLDI4LjY0MjIzMzcgMi4xOTM3MTU3OCwzMC42MjQxMzA1IEMyLjc2Mzk0NzU2LDMyLjAyMTA5MzMgMy4zNzQzNDc2LDMzLjE3NjUyMTUgNC4wMTIzMTQwOSwzNC4wNjY1MjQyIEw4LjgyMTQ3ODgsMzQuMDY2NTI0MiBDOC45NDMwMzM3NCwzNC4yNDA4NDkyIDEwLjQ5NTY4MTQsMzYuMzMyMjI0MSAxMS4yMDk3ODM4LDM3LjExNjk0OTEgQzExLjk2MDY0MTUsMzcuOTQxODQyNCAxMi43MzY5NjUzLDM4LjcxNzM3ODcgMTMuNTI0MDUzMiwzOS40NTM3OTY4IEwxMy4yMDQyODI0LDQxLjA0NTMgQzEyLjIwOTUyNzIsNDAuMDkwMTg4IDExLjIyMTA3MjksMzkuMDc4MzY3OSAxMC4yNTMwOTY2LDM4LjAwNjk1MTggQzkuMzc5MzcxMzEsMzcuMDQwMDI1NiA4LjQxODc0NjA1LDM1Ljc5NDgwOTUgNy42ODIwNjUzOSwzNC42NzQyOTg4IEw3LjYyNzk4MjY0LDM0LjU5MTU5OTUgTDMuNzQ1ODM4MzgsMzQuNTkxNTk5NSBMMy42NjczMzk2MiwzNC40ODQ3NDY2IEMyLjk3NTU1MjkxLDMzLjU0NjE3NDUgMi4zMTczNzEwMSwzMi4zMTYxODU2IDEuNzEwNjQ2NSwzMC44Mjk0MzQ5IEMwLjgwOTA5MjIwMiwyOC43OTEwOTI2IDAuMzA4MTcwMzYyLDI2LjMzNDUyNzggMC4yNjQ4NTE2NDksMjMuNzMyMjU0NiBDMC4yNDkzNjE5MjgsMjIuNzU1MzUyIDAuMzA0NDk0ODM1LDIxLjc4MTMzNzMgMC40Mjg2NzUxNDQsMjAuODM3NTE0NCBDMC42MTA4NzYyNzUsMTkuMzczODY3IDAuOTg5OTgwNjQ0LDE3Ljc1MTY0NjggMS40NDMxMjA2MywxNi40OTk2MDQ4IEwxLjUwNTYwNDU5LDE2LjMyNjMyOTkgTDcuNDU4MzgzMzEsMTYuMzI2MzI5OSBMNy40NTQ3MDc3OSw3LjIxNDQzNTY1IEw3LjkyNzgwMDY0LDYuODE5MDUzOTQgQzguMDA4Mzk5Nyw2Ljc1MDI2OTA4IDE2Ljc1NzQ2NjksLTAuMDcwNDU5MTIyNCAzMS45MDA2Mzg3LC0wLjA3MDQ1OTEyMjQgQzQ2LjU1NTIyNzksLTAuMDcwNDU5MTIyNCA1Ni4wMDk3MzM4LDYuNzE2NjY0MjYgNTYuMDk4OTk2Niw2Ljc4NDkyNDA1IEw1Ni42MTM4MzMsNy4xODA4MzA4MyBMNTYuNjEzODMzLDcuMjcxNDA2MzIgQzU2LjYxMzMwNzksNy44OTM2MjA1NSA1Ni42MDgzMTk3LDExLjczOTAwOTUgNTYuNjAyNTQzOSwxNi4zMjYzMjk5IEw2Mi4xNzE0OTI1LDE2LjMyNjMyOTkgTDYyLjIzNDIzOSwxNi40OTk2MDQ4IEM2Mi42ODY4NTM5LDE3Ljc1MTY0NjggNjMuMDY2MjIwOSwxOS4zNzM2MDQ1IDYzLjI0ODk0NzEsMjAuODM4ODI3MSBDNjMuMzczMTI3NCwyMS43Nzk0OTk1IDYzLjQyNzk5NzcsMjIuNzUzNTE0MiA2My40MTI1MDgsMjMuNzMxOTkyIEw2My40MTI1MDgsMjMuNzMxOTkyIFogTTM5LjExNDY0ODMsNDcuNDAxODYxNyBDMzUuMDU1MjkxMSw0OS41MDQwMDA2IDMyLjAxMzc5MjQsNTAuNDM0MTcxNSAzMi4wMTM3OTI0LDUwLjQzMzEyMTQgQzMyLjAxMjIxNzIsNTAuNDM0MTcxNSAyOC45NjYyNTU0LDQ5LjUwNDAwMDYgMjQuOTA2ODk4Miw0Ny40MDE4NjE3IEMyMy4yNTkyMTE5LDQ2LjU0NzMwMTYgMjEuMjg3MDI5MSw0NS40MTczMzk1IDE5LjIwODUxODUsNDMuOTk1MTczMSBMMTcuNDM3MTc2OSw0My45OTUxNzMxIEwxNy4zMDQzMzI5LDQ0LjY1NzU1NTYgQzI0LjkyOTQ3NjQsNTAuODI3NDUyOSAzMS44NTcwNTc1LDUzLjY2MjMzNDUgMzEuOTQ3NjMzLDUzLjY5ODU2NDcgTDMyLjAxNTM2NzcsNTMuNzI1NjA2MSBMMzIuMDgyMzE0OCw1My42OTc1MTQ2IEMzMi4xODY4MDQ4LDUzLjY1NDE5NTggNDAuMzA2MDQ0Miw1MC4yMjg2MDQ2IDQ3Ljc4MzM3OTEsNDMuOTk1MTczMSBMNDQuODEzMDI4MSw0My45OTUxNzMxIEM0Mi43MzQyNTQ5LDQ1LjQxNzMzOTUgNDAuNzYyMDcyMSw0Ni41NDczMDE2IDM5LjExNDY0ODMsNDcuNDAxODYxNyBMMzkuMTE0NjQ4Myw0Ny40MDE4NjE3IFogTTIxLjAxMjY3NzIsMjIuMDMzMTEwOSBMMjAuMTY2NTE4NCwyOC42MjY0ODE1IEMyMC4xNTg2NDIyLDI4LjcxMTgwNjIgMjAuMTAxNDA5LDI4Ljc1MTQ0OTQgMTkuOTkyNzE4NCwyOC43NTE0NDk0IEwxNy4zMTQwNDY4LDI4Ljc1MTQ0OTQgQzE3LjIxODc0NTYsMjguNzUxNDQ5NCAxNy4xNzgzMTQ4LDI4LjcxMTgwNjIgMTcuMTkwMTI5LDI4LjYyNjQ4MTUgTDE4LjAzNjgxMjksMjIuMDMzMTEwOSBDMTguMDQ1MjE0MSwyMS45NTM4MjQ1IDE4LjA5ODc3MTgsMjEuOTExMDMwOSAxOC4xOTE3MTAxLDIxLjkxMTAzMDkgTDIwLjg3MjIxOTYsMjEuOTExMDMwOSBDMjAuOTc4ODA5OSwyMS45MTEwMzA5IDIxLjAyNTAxNjUsMjEuOTUzODI0NSAyMS4wMTI2NzcyLDIyLjAzMzExMDkgTDIxLjAxMjY3NzIsMjIuMDMzMTEwOSBaIE01Ny4wNzYxNjE4LDIxLjU5NDkzNTUgTDU2LjY2NTgxNTQsMjQuNzY5Mjc4MyBDNTYuNjEwNjgyNSwyNS4yMDI5OTA1IDU2LjQzODk4MjksMjUuNTk3MzIyIDU2LjE1NDkxNzIsMjUuOTQ5Mzg1IEM1NS44NjYzODgzLDI2LjMwMzgxMDkgNTUuNTI1ODc2OSwyNi41NTg3MzQ5IDU1LjEyODEzMjQsMjYuNzI0NjU4NyBMNTYuNzc4MTgxNSwzMS4yMDM4MTM2IEw1My45MDEwMzE0LDMxLjIwMzgxMzYgTDUyLjM1NTk5NzMsMjYuOTA0MjM0NSBMNTAuNzMzMjUyMSwyNi45MDQyMzQ1IEw1MC4xODE2NjA1LDMxLjIwMzgxMzYgTDQ3LjU3NDEzNjUsMzEuMjAzODEzNiBMNDkuMDc4NzM5OCwxOS40NjIwNzk3IEw1NS4yMTI5MzIxLDE5LjQ2MjA3OTcgQzU1LjUwODAyNDQsMTkuNDYyMDc5NyA1NS43NzgxNzU2LDE5LjUxNzQ3NTEgNTYuMDI0MTczNCwxOS42MzAzNjYzIEM1Ni4yNjUxODMsMTkuNzQxMTU3MiA1Ni40NzMzNzUzLDE5Ljg5MzY5MTYgNTYuNjQxOTI0NSwyMC4wODg3NTcgQzU2LjgxMzM2MTYsMjAuMjgyNzcyNCA1Ni45MzEyNDEsMjAuNTEwMzkyNSA1Ny4wMTMxNTI3LDIwLjc2NDc5MTUgQzU3LjA5MDA3NjMsMjEuMDI1NzUzOSA1Ny4xMTEwNzkzLDIxLjMwMDM2ODMgNTcuMDc2MTYxOCwyMS41OTQ5MzU1IEw1Ny4wNzYxNjE4LDIxLjU5NDkzNTUgWiBNNDcuMTkxMDk0MSwzMS4yMDM4MTM2IEwzOS44MjI3MTI0LDMxLjIwMzgxMzYgTDQxLjMyODg5MDksMTkuNDYyMDc5NyBMNDguNjk4MzIyOCwxOS40NjIwNzk3IEw0OC4zODQ4NTI4LDIxLjkxMTI5MzQgTDQzLjYyMTg5NDcsMjEuOTExMjkzNCBMNDMuMzQ0OTE3NSwyNC4wNjQ4ODk4IEw0Ny42ODQ2NjQ5LDI0LjA2NDg4OTggTDQ3LjM3MjI0NTEsMjYuNDk2NTEzNSBMNDMuMDMyMjM1MiwyNi40OTY1MTM1IEw0Mi43NDIzOTM2LDI4Ljc1MTQ0OTQgTDQ3LjUwNjkyNjksMjguNzUxNDQ5NCBMNDcuMTkxMDk0MSwzMS4yMDM4MTM2IFogTTM5LjM1MTk4MjQsMjkuODk3Njg4OCBDMzkuMjA5OTQ5NSwzMC4xNTczMzg1IDM5LjAyNjk2MDcsMzAuMzgyMDcwNyAzOC44MDY0MjkxLDMwLjU3OTIzNjUgQzM4LjU5MDg4NTcsMzAuNzcxNDE0MSAzOC4zNDMzMTI3LDMwLjkyNDQ3MzUgMzguMDcxMDYxMiwzMS4wMzQ0NzY4IEMzNy43OTkwNzIxLDMxLjE1MDI1NTkgMzcuNTE1MjY4OSwzMS4yMDM4MTM2IDM3LjIyMTQ4OTMsMzEuMjAzODEzNiBMMzMuNDQ4MDM1NiwzMS4yMDM4MTM2IEMzMy4xNTI0MTgyLDMxLjIwMzgxMzYgMzIuODg0NjI5OCwzMS4xNTAyNTU5IDMyLjYzODM2OTUsMzEuMDM0NDc2OCBDMzIuMzk3NjIyNSwzMC45MjQ0NzM1IDMyLjE5MjA1NTUsMzAuNzcxNDE0MSAzMi4wMjkyODIyLDMwLjU3OTIzNjUgQzMxLjg2NjUwODgsMzAuMzgyMDcwNyAzMS43NDcwNTQyLDMwLjE1NzMzODUgMzEuNjY1NjY3NSwyOS44OTc2ODg4IEMzMS41ODg3NDQsMjkuNjQwMTM5MyAzMS41NjgyNjYxLDI5LjM2MzQyNDcgMzEuNjA3NjQ2NywyOS4wNzA5NTc3IEwzMi41NjY2OTY3LDIxLjU5NTE5ODEgQzMyLjYwMjkyNjksMjEuMzAwNjMwOCAzMi42OTYxMjc4LDIxLjAyNTQ5MTQgMzIuODM3ODk4MSwyMC43NjQ3OTE1IEMzMi45ODQ5MTkyLDIwLjUxMDEzIDMzLjE2MzE4MjMsMjAuMjgyNTA5OCAzMy4zNzQ1MjUxLDIwLjA4ODQ5NDUgQzMzLjU4ODIzMDcsMTkuODkzNjkxNiAzMy44MzE4NjU3LDE5Ljc0MTQxOTcgMzQuMTA0OTA0OCwxOS42MzAxMDM3IEMzNC4zNzcxNTY0LDE5LjUxODAwMDIgMzQuNjU5NjQ2OSwxOS40NjIzNDIyIDM0Ljk1MDUzODYsMTkuNDYyMzQyMiBMMzguNzI3NDA1MywxOS40NjIzNDIyIEMzOS4wMjE5NzI1LDE5LjQ2MjM0MjIgMzkuMjkxNTk4NywxOS41MTgwMDAyIDM5LjUzNDcwODYsMTkuNjMwMTAzNyBDMzkuNzc3ODE4NCwxOS43NDE0MTk3IDM5Ljk4NjUzNTksMTkuODkzNjkxNiA0MC4xNTI5ODQ3LDIwLjA4ODQ5NDUgQzQwLjMyNDY4NDQsMjAuMjgyNTA5OCA0MC40NDY3NjQ0LDIwLjUxMDEzIDQwLjUyMjYzNzcsMjAuNzY0NzkxNSBDNDAuNjA1NjgwMSwyMS4wMjU0OTE0IDQwLjYyNTgxNSwyMS4zMDA2MzA4IDQwLjU4NTkwOTMsMjEuNTk1MTk4MSBMNDAuMzMxNzcyOSwyMy41NzEzMTkgTDM3LjcyMzk4NjQsMjMuNTcxMzE5IEwzNy45MjE5Mzk4LDIyLjAzMzExMDkgQzM3LjkzMjQ0MTMsMjEuOTU0MDg3IDM3Ljg4OTEyMjYsMjEuOTExMjkzNCAzNy43OTYxODQyLDIxLjkxMTI5MzQgTDM1LjI3NTI5NzcsMjEuOTExMjkzNCBDMzUuMTc4OTQ2NCwyMS45MTEyOTM0IDM1LjEyOTA2NDIsMjEuOTU0MDg3IDM1LjExNzI1LDIyLjAzMzExMDkgTDM0LjI3MTA5MTIsMjguNjI3MDA2NSBDMzQuMjYwODUyMiwyOC43MTE4MDYyIDM0LjMwMzM4MzMsMjguNzUxNDQ5NCAzNC4zOTc4OTY5LDI4Ljc1MTQ0OTQgTDM2LjkxNzIwODIsMjguNzUxNDQ5NCBDMzcuMDA5MDk2NCwyOC43NTE0NDk0IDM3LjA2MzQ0MTYsMjguNzExODA2MiAzNy4wNzM0MTgxLDI4LjYyNzAwNjUgTDM3LjI4Njg2MTIsMjYuOTg2OTMzOCBMMzkuODk1Njk3OCwyNi45ODY5MzM4IEwzOS42MjY1OTY3LDI5LjA3MDk1NzcgQzM5LjU4ODI2NjIsMjkuMzYzNDI0NyAzOS40OTg0Nzg0LDI5LjY0MDEzOTMgMzkuMzUxOTgyNCwyOS44OTc2ODg4IEwzOS4zNTE5ODI0LDI5Ljg5NzY4ODggWiBNMzEuMjI3MjI5NiwyOS4wNzA5NTc3IEMzMS4xODk0MjQyLDI5LjM2MzQyNDcgMzEuMDk3NTM2LDI5LjY0MDEzOTMgMzAuOTU0OTc4MSwyOS44OTc2ODg4IEMzMC44MDk1MzIyLDMwLjE1NzMzODUgMzAuNjI4NjQzOCwzMC4zODIwNzA3IDMwLjQwODM3NDcsMzAuNTc5MjM2NSBDMzAuMTg5OTQzNCwzMC43NzE0MTQxIDI5Ljk0Mjg5NTQsMzAuOTI0NDczNSAyOS42NzI0ODE3LDMxLjAzNDQ3NjggQzI5LjM5ODkxNzQsMzEuMTUwMjU1OSAyOS4xMTQ1ODkyLDMxLjIwMzgxMzYgMjguODIyNjQ3MywzMS4yMDM4MTM2IEwyNS4wNDkxOTM2LDMxLjIwMzgxMzYgQzI0Ljc1NDYyNjQsMzEuMjAzODEzNiAyNC40ODQ3Mzc3LDMxLjE1MDI1NTkgMjQuMjM4NDc3MywzMS4wMzQ0NzY4IEMyMy45OTgyNTU0LDMwLjkyNDQ3MzUgMjMuNzkzMjEzNSwzMC43NzE0MTQxIDIzLjYzMDcwMjcsMzAuNTc5MjM2NSBDMjMuNDY2NjE2NiwzMC4zODIwNzA3IDIzLjM0Mzc0OSwzMC4xNTczMzg1IDIzLjI2MzY3NSwyOS44OTc2ODg4IEMyMy4xODg1ODkzLDI5LjY0MDEzOTMgMjMuMTY3ODQ4OCwyOS4zNjM0MjQ3IDIzLjIwNjk2NjksMjkuMDcwOTU3NyBMMjQuMTY3NTkyMiwyMS41OTUxOTgxIEMyNC4yMDIyNDcxLDIxLjMwMDYzMDggMjQuMjk0NjYwNCwyMS4wMjU0OTE0IDI0LjQzOTA1NjEsMjAuNzY0NzkxNSBDMjQuNTgxMDg5LDIwLjUxMDEzIDI0Ljc2NTEyNzksMjAuMjgyNTA5OCAyNC45NzcyNTgzLDIwLjA4ODQ5NDUgQzI1LjE4ODMzODYsMTkuODkzNjkxNiAyNS40MzA2NjA4LDE5Ljc0MTQxOTcgMjUuNzAzMTc0OSwxOS42MzAxMDM3IEMyNS45NzcwMDE3LDE5LjUxODAwMDIgMjYuMjU3MTI5NCwxOS40NjIzNDIyIDI2LjU1MzAwOTMsMTkuNDYyMzQyMiBMMzAuMzI2NzI1NSwxOS40NjIzNDIyIEMzMC42MjMxMzA1LDE5LjQ2MjM0MjIgMzAuODkwNjU2NCwxOS41MTgwMDAyIDMxLjEzNDU1MzksMTkuNjMwMTAzNyBDMzEuMzc5MjM4OSwxOS43NDE0MTk3IDMxLjU4NTA2ODUsMTkuODkzNjkxNiAzMS43NTcwMzA2LDIwLjA4ODQ5NDUgQzMxLjkyMTkwNDMsMjAuMjgyNTA5OCAzMi4wNDY4NzIyLDIwLjUxMDEzIDMyLjEyNTEwODQsMjAuNzY0NzkxNSBDMzIuMjA0NjU3MywyMS4wMjU0OTE0IDMyLjIyNTM5NzgsMjEuMzAwNjMwOCAzMi4xODY4MDQ4LDIxLjU5NTE5ODEgTDMxLjkzMzk4MSwyMy41NzEzMTkgTDI5LjMyNDM1NjcsMjMuNTcxMzE5IEwyOS41MjE1MjI1LDIyLjAzMzExMDkgQzI5LjUzMjgxMTYsMjEuOTU0MDg3IDI5LjQ4OTQ5MjksMjEuOTExMjkzNCAyOS4zOTQ0NTQzLDIxLjkxMTI5MzQgTDI2Ljg3MTk5MjUsMjEuOTExMjkzNCBDMjYuNzc5ODQxOCwyMS45MTEyOTM0IDI2LjcyNzU5NjgsMjEuOTU0MDg3IDI2LjcxODE0NTUsMjIuMDMzMTEwOSBMMjUuODcwOTM2NSwyOC42MjcwMDY1IEMyNS44NjE3NDc2LDI4LjcxMTgwNjIgMjUuOTAzMjI4NiwyOC43NTE0NDk0IDI1Ljk5Nzc0MjIsMjguNzUxNDQ5NCBMMjguNTE3MzE2LDI4Ljc1MTQ0OTQgQzI4LjYxMjA5MjEsMjguNzUxNDQ5NCAyOC42NjU5MTIzLDI4LjcxMTgwNjIgMjguNjc1ODg4NywyOC42MjcwMDY1IEwyOC44ODU2NTYzLDI2Ljk4NjkzMzggTDMxLjQ5NTI4MDYsMjYuOTg2OTMzOCBMMzEuMjI3MjI5NiwyOS4wNzA5NTc3IFogTTIyLjQ0OTI4MzIsMjkuODk4MjEzOSBDMjIuMzAyMjYyMiwzMC4xNTczMzg1IDIyLjExOTc5ODUsMzAuMzgyMDcwNyAyMS45MDEzNjcyLDMwLjU3OTIzNjUgQzIxLjY4MjY3MzMsMzAuNzcxNjc2NiAyMS40MzM1MjUxLDMwLjkyNDQ3MzUgMjEuMTUzMzk3NCwzMS4wMzQ0NzY4IEMyMC44NzQ1ODI0LDMxLjE1MDI1NTkgMjAuNTg5NDY2NSwzMS4yMDM4MTM2IDIwLjI5NjQ3NDUsMzEuMjAzODEzNiBMMTYuMzY0NDQ4MSwzMS4yMDM4MTM2IEMxNi4wNzA2Njg1LDMxLjIwMzgxMzYgMTUuODAzMTQyNiwzMS4xNTAyNTU5IDE1LjU1NzY2OTksMzEuMDM0NDc2OCBDMTUuMzE0NTYsMzAuOTI0NDczNSAxNS4xMDg0NjgsMzAuNzcxNjc2NiAxNC45NDUxNjk1LDMwLjU3OTIzNjUgQzE0Ljc4MjkyMTMsMzAuMzgyMDcwNyAxNC42NjM3MjkyLDMwLjE1NzMzODUgMTQuNTgzOTE3NywyOS44OTgyMTM5IEMxNC41MDU5NDQsMjkuNjQwMTM5MyAxNC40ODQ2Nzg1LDI5LjM2MzQyNDcgMTQuNTI0MzIxNywyOS4wNzA5NTc3IEwxNS40ODE3OTY1LDIxLjU5NDkzNTUgQzE1LjUxOTMzOTQsMjEuMzAwMzY4MyAxNS42MTA5NjUsMjEuMDI1NzUzOSAxNS43NTc0NjEsMjAuNzY0NzkxNSBDMTUuOTAwMDE5LDIwLjUxMDM5MjUgMTYuMDc5MzMyMiwyMC4yODI3NzI0IDE2LjI5MDkzNzUsMjAuMDg4NzU3IEMxNi41MDY3NDM1LDE5Ljg5MzY5MTYgMTYuNzQ4NTQwNywxOS43NDExNTcyIDE3LjAyMDI2NzEsMTkuNjMwMzY2MyBDMTcuMjk1MTQ0MSwxOS41MTc0NzUxIDE3LjU3ODY4NDcsMTkuNDYyMDc5NyAxNy44NzE5MzkzLDE5LjQ2MjA3OTcgTDIxLjgwMzE3ODEsMTkuNDYyMDc5NyBDMjIuMDk3NzQ1MywxOS40NjIwNzk3IDIyLjM2ODk0NjcsMTkuNTE3NDc1MSAyMi42MTg4ODI2LDE5LjYzMDM2NjMgQzIyLjg2OTM0MzUsMTkuNzQxMTU3MiAyMy4wNzg4NDg1LDE5Ljg5MzY5MTYgMjMuMjQ2MzQ3NiwyMC4wODg3NTcgQzIzLjQxNjIwOTQsMjAuMjgyNzcyNCAyMy41NDAzODk3LDIwLjUxMDM5MjUgMjMuNjE4MzYzNCwyMC43NjQ3OTE1IEMyMy42OTYwNzQ2LDIxLjAyNTc1MzkgMjMuNzE3MDc3NiwyMS4zMDAzNjgzIDIzLjY3OTI3MjEsMjEuNTk0OTM1NSBMMjIuNzIyODQ3NSwyOS4wNzA5NTc3IEMyMi42ODExMDQsMjkuMzYzNDI0NyAyMi41ODkyMTU4LDI5LjY0MDEzOTMgMjIuNDQ5MjgzMiwyOS44OTgyMTM5IEwyMi40NDkyODMyLDI5Ljg5ODIxMzkgWiBNMTQuMjM2ODQzLDI2LjU2Njg3MzYgTDEzLjkxNjU0NywyOS4wNzA5NTc3IEMxMy44Nzg0NzkxLDI5LjM2MzQyNDcgMTMuNzg2ODUzNCwyOS42NDAxMzkzIDEzLjY0MDYxOTksMjkuODk4MjEzOSBDMTMuNDk2MjI0MiwzMC4xNTczMzg1IDEzLjMxNTU5ODMsMzAuMzgyMDcwNyAxMy4wOTU4NTQzLDMwLjU3OTIzNjUgQzEyLjg3NzY4NTUsMzAuNzcxNjc2NiAxMi42MzE2ODc3LDMwLjkyNDQ3MzUgMTIuMzU3ODYxLDMxLjAzNDQ3NjggQzEyLjA4NjkyMjEsMzEuMTUwMjU1OSAxMS44MDI1OTM4LDMxLjIwMzgxMzYgMTEuNTA5MzM5MywzMS4yMDM4MTM2IEw3Ljg5NTc3MTA0LDMxLjIwMzgxMzYgQzcuNjAwMTUzNjUsMzEuMjAzODEzNiA3LjMyODk1MjI1LDMxLjE1MDI1NTkgNy4wODUzMTczMSwzMS4wMzQ0NzY4IEM2Ljg0NDA0NTIxLDMwLjkyNDQ3MzUgNi42MzgyMTU2OSwzMC43NzE2NzY2IDYuNDY3MzAzNjgsMzAuNTc5MjM2NSBDNi4yOTY2NTQyLDMwLjM4MjA3MDcgNi4xNzUwOTkyNywzMC4xNTczMzg1IDYuMDk0NzYyNzUsMjkuODk4MjEzOSBDNi4wMTQ0MjYyMywyOS42NDAxMzkzIDUuOTk0NzM1OSwyOS4zNjM0MjQ3IDYuMDM0NjQxNjMsMjkuMDcwOTU3NyBMNi4yNjgwMzc2LDI3LjIzMzcxOTIgTDguODc3NjYxODYsMjcuMjMzNzE5MiBMOC42OTkxMzYyNiwyOC42MjY0ODE1IEM4LjY4ODYzNDc1LDI4LjcxMTgwNjIgOC43MzA5MDMzMSwyOC43NTE0NDk0IDguODI2NDY3MDIsMjguNzUxNDQ5NCBMMTEuMTg4NTE4MywyOC43NTE0NDk0IEMxMS4yOTE2OTU2LDI4Ljc1MTQ0OTQgMTEuMzUyMzQxOCwyOC43MTE4MDYyIDExLjM2MjU4MDcsMjguNjI2NDgxNSBMMTEuNTY4OTM1MywyNy4wMjQ3MzkzIEMxMS41ODAyMjQ1LDI2LjkzMTI3NTkgMTEuNTEwOTE0NSwyNi44NjY0MjkxIDExLjM2NDY4MSwyNi44MzA3MjM5IEwxMS4zNDY4Mjg1LDI2LjgzMDcyMzkgQzEwLjk2MTE2MDcsMjYuNzI0NjU4NyAxMC42MzU2MTQsMjYuNjM0ODcwOCAxMC4zNzc1Mzk1LDI2LjU1NzE1OTcgQzEwLjExNjU3NywyNi40ODE4MTE0IDkuODUzNzc2ODUsMjYuNDAzNTc1MiA5LjU5NjIyNzQyLDI2LjMxOTU2MzEgTDguNDQwMDExNiwyNS45ODU2MTUyIEM4LjE4MTE0OTQ3LDI1LjkwMzE3ODQgNy45MzcyNTE5OSwyNS44MDQ3MjY4IDcuNzEyNzgyMywyNS42ODQyMjIgQzcuNDg0Mzc0NTQsMjUuNTY4NzA1NCA3LjI5Mjk4NDU5LDI1LjQyNjY3MjYgNy4xNDIyODc5OCwyNS4yNjA3NDg4IEM2Ljk4NTgxNTU0LDI1LjA5ODUwMDUgNi44NjU1NzMzLDI0LjkwNjA2MDQgNi43OTA3NTAwNywyNC42NzkyMjc5IEM2LjcxNTY2NDMsMjQuNDU2MzMzNCA2LjY5MzYxMTEzLDI0LjE5MzUzMzIgNi43MzQ4Mjk1NSwyMy44ODM0NzYyIEw3LjAyODg3MTcyLDIxLjU5NDkzNTUgQzcuMDY2NDE0NiwyMS4zMDAzNjgzIDcuMTU2OTkwMDksMjEuMDI1NzUzOSA3LjMwMTM4NTgsMjAuNzY0NzkxNSBDNy40NDg0MDY4OCwyMC41MTAzOTI1IDcuNjI3NDU3NTYsMjAuMjgyNzcyNCA3LjgzNzc1MDIyLDIwLjA4ODc1NyBDOC4wNTAxNDMxOCwxOS44OTM2OTE2IDguMjk1MzUzMzUsMTkuNzQxMTU3MiA4LjU2OTE4MDEyLDE5LjYzMDM2NjMgQzguODQzNzk0NSwxOS41MTc0NzUxIDkuMTIzMzk3MSwxOS40NjIwNzk3IDkuNDE4NDg5NDIsMTkuNDYyMDc5NyBMMTIuOTQzMzE5OSwxOS40NjIwNzk3IEMxMy4yMzczNjIxLDE5LjQ2MjA3OTcgMTMuNTEyNzY0MSwxOS41MTc0NzUxIDEzLjc2MDU5OTcsMTkuNjMwMzY2MyBDMTQuMDExODQ4MiwxOS43NDExNTcyIDE0LjIyMDgyODIsMTkuODkzNjkxNiAxNC4zODg1ODk3LDIwLjA4ODc1NyBDMTQuNTU2ODc2NCwyMC4yODI3NzI0IDE0LjY4MjM2OTMsMjAuNTEwMzkyNSAxNC43NjEzOTMyLDIwLjc2NDc5MTUgQzE0LjgzODg0MTgsMjEuMDI1NzUzOSAxNC44NTk1ODIzLDIxLjMwMDM2ODMgMTQuODIyMzAxOSwyMS41OTQ5MzU1IEwxNC41ODMxMzAxLDIzLjQ2NDk5MTIgTDExLjk3MDg4MDUsMjMuNDY0OTkxMiBMMTIuMTU0NjU2OCwyMi4wMzMxMTA5IEMxMi4xNjYyMDg1LDIxLjk1MzgyNDUgMTIuMTE4Njg5MiwyMS45MTEwMzA5IDEyLjAxNDE5OTIsMjEuOTExMDMwOSBMOS43NDAzNjA1OSwyMS45MTEwMzA5IEM5LjY0NDUzNDM0LDIxLjkxMTAzMDkgOS41OTIyODkzNSwyMS45NTM4MjQ1IDkuNTgxNTI1MzEsMjIuMDMzMTEwOSBMOS40MDIyMTIwOSwyMy40MjYzOTgyIEM5LjM5MTk3MzEyLDIzLjUxMDY3MjggOS40NTk5NzAzNywyMy41NzQ5OTQ1IDkuNjA2NzI4OTIsMjMuNjIyNzc2NCBMMTAuOTMzMzMxNywyNC4wMTA4MDcgTDEyLjU0NzY3NTcsMjQuNDg0OTUgQzEyLjc5NTI0ODcsMjQuNTU3OTM1NSAxMy4wMzM4OTU0LDI0LjY1MTY2MTQgMTMuMjYwNDY1NCwyNC43NjkyNzgzIEMxMy40ODQ0MSwyNC44ODUzMTk5IDEzLjY3Mzk2MjIsMjUuMDI4OTI4IDEzLjgzMDk1OTcsMjUuMjAwNjI3NiBDMTMuOTg1MDY5MywyNS4zNjk5NjQ0IDE0LjEwMTExMSwyNS41Njg3MDU0IDE0LjE3NzUwOTQsMjUuNzkwMDI0NyBDMTQuMjU0OTU4MSwyNi4wMTI2NTY2IDE0LjI3NTY5ODUsMjYuMjcyMzA2MyAxNC4yMzY4NDMsMjYuNTY2ODczNiBMMTQuMjM2ODQzLDI2LjU2Njg3MzYgWiBNNTkuMzg5MzgxLDE3LjQ5MjUyMjIgTDQuMjk5NTMwMjksMTcuNDkyNTIyMiBDMy43MTI0OTYxLDE5LjQ4NTQ0NTUgMy4zNjE0ODMyNSwyMS43ODE1OTk4IDMuMzg4Nzg3MTcsMjMuOTg5MDE2NCBDMy40MjgxNjc4MiwyNy40MDgzMDY4IDQuMjYwMTQ5NjQsMzAuNzMwOTgzMyA1LjY0OTc2MTQzLDMzLjQxODU4MTIgTDI1LjgyMjg5MjEsMzMuNDE4NTgxMiBMMjYuMDM1MDIyNSwzMi4zNjU1NDI3IEwzMC44NTk2NzY5LDMyLjM2NTU0MjcgTDMwLjY0ODA3MTYsMzMuNDE4NTgxMiBMNTguMDM4ODg3NCwzMy40MTg1ODEyIEM1OS40MjgyMzY2LDMwLjczMDk4MzMgNjAuMjYwNDgxLDI3LjQwODMwNjggNjAuMzAwMzg2NywyMy45ODkwMTY0IEM2MC4zMjc0MjgxLDIxLjc4MTU5OTggNTkuOTc2NDE1MiwxOS40ODU0NDU1IDU5LjM4OTM4MSwxNy40OTI1MjIyIEw1OS4zODkzODEsMTcuNDkyNTIyMiBaIE01NC4yODM1NDg4LDIxLjkxMTAzMDkgTDUxLjM3NDM2OTEsMjEuOTExMDMwOSBMNTEuMDQ1OTM0NSwyNC40Njc4ODUxIEw1My45NTc3Mzk2LDI0LjQ2Nzg4NTEgQzU0LjA0ODU3NzYsMjQuNDY3ODg1MSA1NC4xMDI2NjAzLDI0LjQyMTE1MzQgNTQuMTE1Nzg3MiwyNC4zMjg0Nzc2IEw1NC40MTAzNTQ1LDIyLjAzMzExMDkgQzU0LjQyMDU5MzQsMjEuOTUzODI0NSA1NC4zNzUxNzQ0LDIxLjkxMTAzMDkgNTQuMjgzNTQ4OCwyMS45MTEwMzA5IEw1NC4yODM1NDg4LDIxLjkxMTAzMDkgWiBNNjMuNTMzODAwNCwzNC4zNzI2NDMxIEw2My4yOTU0MTYyLDM0LjM3MjY0MzEgTDYzLjI5NTQxNjIsMzMuMzQ5Nzk2NCBMNjMuMjkxNDc4MiwzMy4zNDk3OTY0IEw2My4wNjMwNzA0LDM0LjM3MjY0MzEgTDYyLjgxMzEzNDYsMzQuMzcyNjQzMSBMNjIuNTg5NzE1LDMzLjM0OTc5NjQgTDYyLjU4NTc3NywzMy4zNDk3OTY0IEw2Mi41ODU3NzcsMzQuMzcyNjQzMSBMNjIuMzQ3MTMwMiwzNC4zNzI2NDMxIEw2Mi4zNDcxMzAyLDMzLjE0ODY5MjUgTDYyLjcyMDQ1ODgsMzMuMTQ4NjkyNSBMNjIuOTQyMDQwNSwzNC4xMTM1MTg0IEw2Mi45NDU5Nzg2LDM0LjExMzUxODQgTDYzLjE2MzYyMjMsMzMuMTQ4NjkyNSBMNjMuNTMzODAwNCwzMy4xNDg2OTI1IEw2My41MzM4MDA0LDM0LjM3MjY0MzEgWiBNNjEuODM3NTQ0NiwzMy4zNjUwMjM2IEw2Mi4yMDc0NjAyLDMzLjM2NTAyMzYgTDYyLjIwNzQ2MDIsMzMuMTQ4NjkyNSBMNjEuMjEyNDQyNSwzMy4xNDg2OTI1IEw2MS4yMTI0NDI1LDMzLjM2NTAyMzYgTDYxLjU4MjA5NTUsMzMuMzY1MDIzNiBMNjEuNTgyMDk1NSwzNC4zNzI2NDMxIEw2MS44Mzc1NDQ2LDM0LjM3MjY0MzEgTDYxLjgzNzU0NDYsMzMuMzY1MDIzNiBaIE01MC40ODcyNTQzLDM1LjcyMDUxMTQgTDQyLjU3MDk1NjUsMzUuNzIwNTExNCBMNDAuODU1NTM1NSwzNy4xNDk1MDM4IEw0MC40NjEyMDM5LDM5LjExMjIzNTMgTDQxLjQ1OTYzNDYsNDAuMzM3NDk4NSBMNDYuODgzMTM3NCw0MC4zMzc0OTg1IEw0Ni45NDI0NzEsNDAuMzk2MzA2OSBMNDYuNzQxMzY3MSw0MS4zOTEwNjIxIEw0Ni42NTQ3Mjk3LDQxLjQ2MDg5NzEgTDQyLjg0OTI0NjQsNDEuNDYwODk3MSBMNDIuNzg3NTUwMSw0MS4zOTEwNjIxIEw0Mi44MzQ4MDY5LDQxLjE2MTYwNDIgTDQwLjAwODA2NCw0MS4xNjE2MDQyIEwzOS44NjMxNDMyLDQxLjg4MjAwNzUgTDQwLjg2OTQ1LDQzLjEyNDMzNTcgTDQ4LjA4MTYyMTgsNDMuMTI0MzM1NyBMNDkuNzk4ODgwNiw0MS42OTQ4MTgyIEw1MC4xOTk1MTMxLDM5LjY4ODc2OCBMNDkuMjIxMjk3OCwzOC40NjI0NTQ2IEw0My43ODIwNDI3LDM4LjQ2MjQ1NDYgTDQzLjczNzY3MzgsMzguNDA4MzcxOCBMNDMuOTMzNTI2OSwzNy40MjQ2NDMzIEw0NC4wMDA0NzQsMzcuMzY1MzA5OCBMNTAuMTY1NjQ1NywzNy4zNjUzMDk4IEw1MC40ODcyNTQzLDM1LjcyMDUxMTQgWiBNMzcuMDEyNzcxOSwzNS43MjA1MTE0IEwzNi4wODIzMzg0LDQwLjM1MTY3NTUgTDM1LjE4NTUwOTgsNDEuMDkwMTk0IEwzMi45Nzc1NjgyLDQxLjA5MDE5NCBMMzIuNTI2NzkxLDQwLjUyMzkwMDIgTDMzLjQ5NDI0MjMsMzUuNzIwNTExNCBMMzAuMzc4NDQ1NCwzNS43MjA1MTE0IEwyOS4yMjQ4NTUsNDEuNDYwODk3MSBMMzAuNTM0OTE3OSw0My4xMjQzMzU3IEwzNC45OTA0NDQzLDQzLjEyNDMzNTcgTDM2LjIzODAyMzMsNDIuMDg0Njg2NiBMMzYuMTg4MTQxMSw0My4xMjQzMzU3IEwzOC42NDE4MTgsNDMuMTI0MzM1NyBMNDAuMTI5NjE4OSwzNS43MjA1MTE0IEwzNy4wMTI3NzE5LDM1LjcyMDUxMTQgWiBNMjYuNzAzNDQzNCwzMy4xNjc4NTc4IEwyNC43MDQyMTkxLDQzLjEyNDMzNTcgTDI3LjgyMDU0MTEsNDMuMTI0MzM1NyBMMjkuODIxMDc4LDMzLjE2Nzg1NzggTDI2LjcwMzQ0MzQsMzMuMTY3ODU3OCBaIE0yMS42NTI3NDQsMzguMDE2OTI4MiBMMjEuMTkxOTkwNCwzNy40NTUwOTc2IEwxOC43MjU0NDkyLDM3LjQ1NTA5NzYgTDE3LjcwMDc2NDcsMzguMzAzNjE5MyBMMTcuMjM3Mzg1OCw0MC42MTE4NTA0IEwxNy44NTA2NzM3LDQxLjM2MDYwNzcgTDIwLjQwNTQyNzYsNDEuMzYwNjA3NyBMMjEuMDk1MTE0LDQwLjgwMDYxNDkgTDIxLjY1Mjc0NCwzOC4wMTY5MjgyIFogTTI0Ljg5ODQ5NywzNy4zODAyNzQ0IEwyNC4wNzU5NjY1LDQxLjQ2MDg5NzEgTDIyLjA4NTY2ODYsNDMuMTI0MzM1NyBMMTcuNDQxMTE1LDQzLjEyNDMzNTcgTDE2Ljg3NTg3MTQsNDIuNDE0MTcxMyBMMTYuMjAzNTEyNSw0NS43NjI1NzY2IEwxMy4wODgyNDA3LDQ1Ljc2MjU3NjYgTDE1LjEwNTU4LDM1LjcyMDUxMTQgTDE3LjU1NzQxOTIsMzUuNzIwNTExNCBMMTcuNDk1NzIyOCwzNi43NDUxOTU4IEwxOC43MjY0OTkzLDM1LjcyMDUxMTQgTDIzLjU3MjQxOTMsMzUuNzIwNTExNCBMMjQuODk4NDk3LDM3LjM4MDI3NDQgWiBNMy40NzY5OTk4MiwyOS4xNTE4MTkzIEMyLjg4NzM0MDI2LDI2Ljk2NjQ1NTkgMi42NDQyMzAzOSwyNC43MTA0Njk5IDIuNzUzNzA4NTksMjIuNDQ5MjMzMSBDMi4zNjUxNTI4NywyMi4wNzExNzg4IDIuMDQyMjMxNTUsMjEuNjcyOTA5MiAxLjY5ODgzMjMsMjEuMjU4ODg3MyBDMS42MTA4ODIxOSwyMi4wNTY0NzY3IDEuNTY4MzUxMDksMjIuODc5Nzk0OCAxLjU4MjAwMzA1LDIzLjcyNzc5MTQgQzEuNjIyNDMzODUsMjYuMTg3NzY5MiAyLjAzODI5MzQ5LDI4LjQ2NTgwODQgMi44MDQ5MDM0MywzMC4zNzczNDUxIEMzLjAyMjgwOTY4LDI5Ljk1NzI4NDggMy4yMTU3NzQ4NiwyOS41NDcyMDEgMy40NzY5OTk4MiwyOS4xNTE4MTkzIEwzLjQ3Njk5OTgyLDI5LjE1MTgxOTMgWiBNMzEuOTY5Njg2MSwxMy40NjY3Njk4IEMzMS40NDQ4NzM0LDEzLjQ2Njc2OTggMzEuMDIwMDg3NCwxMy4wMjk5MDcyIDMxLjAyMDA4NzQsMTIuNTAwMzY4NyBMMzEuMDIwMDg3NCw3LjgyNTYyMzMgQzMxLjAyMDA4NzQsNy4yOTEwOTY2NCAzMS40NDQ4NzM0LDYuODEyNzUzMDQgMzEuOTY5Njg2MSw2LjgxMjc1MzA0IEMzMi40OTU4MTE2LDYuODEyNzUzMDQgMzIuOTQ1NTM4Niw3LjI5MTA5NjY0IDMyLjk0NTUzODYsNy44MjU2MjMzIEwzMi45NjQ5NjY0LDEyLjUxMDA4MjYgQzMyLjk2NDk2NjQsMTMuMDQ0MDg0MiAzMi40OTU4MTE2LDEzLjQ2Njc2OTggMzEuOTY5Njg2MSwxMy40NjY3Njk4IEwzMS45Njk2ODYxLDEzLjQ2Njc2OTggWiBNMzEuOTUyNjIxMiw0LjQ2Njk3OTEyIEMyOC44NjgzMjg4LDQuNDY2OTc5MTIgMjYuMzYzOTgyMiw3LjAxNTE2OTU3IDI2LjM2Mzk4MjIsMTAuMTcxOTIyMyBDMjYuMzYzOTgyMiwxMy4zMTY4NjA4IDI4Ljg2ODMyODgsMTUuODcyOTI3NCAzMS45NTI2MjEyLDE1Ljg3MjkyNzQgQzM1LjAzNTg2MzQsMTUuODcyOTI3NCAzNy41MzgzNzIzLDEzLjMxNjg2MDggMzcuNTM4MzcyMywxMC4xNzE5MjIzIEMzNy41MzgzNzIzLDcuMDE1MTY5NTcgMzUuMDM1ODYzNCw0LjQ2Njk3OTEyIDMxLjk1MjYyMTIsNC40NjY5NzkxMiBMMzEuOTUyNjIxMiw0LjQ2Njk3OTEyIFogTTQyLjgyNzQ1NTgsMTUuOTk5OTk1NiBMNDEuMTEyNTU5OSwxMy4wNDA2NzEyIEwzOS40MTc4NzkzLDE2LjAwNzM0NjcgTDM1Ljg2MzY0NDYsMTUuOTk5OTk1NiBMMzkuMzMwMTkxNyw5Ljk1NjM3ODg4IEwzNi4wNTg5NzI2LDQuMzA5OTgxNiBMMzkuNzE2MTIyMSw0LjMwOTk4MTYgTDQxLjE1OTI5MTYsNi44MzU1OTM4MSBMNDIuNjIwNTc2MSw0LjMwOTk4MTYgTDQ2LjE1NzIyMDgsNC4zMDk5ODE2IEw0Mi45NTI2ODYzLDkuOTE1Njg1NTUgTDQ2LjQ4MTQ1NDgsMTUuOTk5OTk1NiBMNDIuODI3NDU1OCwxNS45OTk5OTU2IFogTTIyLjQ4MjYyNTUsMTYuMDE3NTg1NyBMMjIuNDczNjk5MiwxMi4yMjU3NTQzIEwyNS43MjI4NjUyLDEyLjIyNTc1NDMgTDI1LjcyMjg2NTIsOS4wMjgzMDgyOCBMMjIuNTAyNTc4NCw5LjAyODMwODI4IEwyMi41MDI1Nzg0LDcuNDk3NzEzNzcgTDI2LjQ1NTYwNzgsNy40OTc3MTM3NyBMMjYuMjM5NTM5Myw0LjI5MDI5MTI4IEwxOS4xNzUxNzYyLDQuMjkwMjkxMjggTDE5LjE3NTE3NjIsMTYuMDE3NTg1NyBMMjIuNDgyNjI1NSwxNi4wMTc1ODU3IFogTTYwLjkzNTIwMjcsMjIuNDQ5MjMzMSBDNjEuMzIzNzU4NSwyMi4wNzA5MTYzIDYxLjY0Njk0MjMsMjEuNjcyOTA5MiA2MS45OTAwNzksMjEuMjU5NDEyNCBDNjIuMDc4MDI5MSwyMi4wNTY3MzkzIDYyLjEyMDI5NzcsMjIuODgwMDU3MyA2Mi4xMDY5MDgzLDIzLjcyNzc5MTQgQzYyLjA2NjIxNDksMjYuMTg3NzY5MiA2MS42NTA2MTc4LDI4LjQ2NTgwODQgNjAuODg0MjcwNCwzMC4zNzczNDUxIEM2MC42NjYxMDE2LDI5Ljk1NzI4NDggNjAuNDczMzk5LDI5LjU0NzIwMSA2MC4yMTIxNzQsMjkuMTUxODE5MyBDNjAuODAxNTcxMSwyNi45NjY0NTU5IDYxLjA0NDY4MDksMjQuNzEwNDY5OSA2MC45MzUyMDI3LDIyLjQ0OTIzMzEgTDYwLjkzNTIwMjcsMjIuNDQ5MjMzMSBaIiBpZD0iRm94LVNvY2Nlci1QbHVzIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgFsp as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKcpq(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 180 180\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.652 78.5c.652 0 1.304 0 1.96.01.04.02.074.038.11.041.186.02.376.022.56.058.44.087.88.182 1.317.287a8.744 8.744 0 011.755.632c.4.193.791.408 1.177.63.638.366 1.22.814 1.757 1.316.453.425.883.875 1.267 1.37.435.56.836 1.141 1.148 1.776.261.531.487 1.082.698 1.636.219.573.363 1.17.447 1.78.057.411.133.822.15 1.235.02.514 0 1.03-.023 1.544a7.902 7.902 0 01-.106 1.05c-.085.47-.186.94-.32 1.397a11.162 11.162 0 01-1.275 2.84c-.55.873-1.189 1.677-1.968 2.358-.292.255-.59.505-.895.744-.589.461-1.229.839-1.903 1.16-.53.253-1.07.48-1.636.63-.523.14-1.055.255-1.589.342-.416.068-.841.077-1.263.112-.008.001-.016.008-.052.026H75.51c.043 0 .085.017.128.026-1.99 0-3.98 0-5.977-.01.862-.012 1.732-.012 2.602-.012-.29-.036-.581-.053-.87-.085-.324-.036-.653-.06-.968-.136a24.674 24.674 0 01-1.654-.47c-.66-.211-1.279-.523-1.876-.872a11.102 11.102 0 01-2.07-1.56 12.179 12.179 0 01-.914-.976 11.625 11.625 0 01-2.01-3.54 9.947 9.947 0 01-.519-2.115c-.043-.361-.111-.722-.123-1.084-.016-.484-.003-.97.024-1.452.021-.38.064-.761.13-1.136.08-.454.171-.908.3-1.35a11.33 11.33 0 011.177-2.675 11.406 11.406 0 014.302-4.143c.684-.368 1.392-.68 2.14-.899.738-.216 1.485-.38 2.255-.435.022-.001.043-.032.064-.05zm2.945 11.185c0-1.512.002-3.023-.003-4.534 0-.143-.027-.29-.07-.427-.197-.63-.599-1.084-1.202-1.343a1.551 1.551 0 00-.975-.105 1.87 1.87 0 00-1.012.6c-.347.391-.538.85-.54 1.368-.007 3.154-.003 6.308-.002 9.462 0 .102.006.208.03.307.109.478.327.89.725 1.192.465.353.98.462 1.545.334a1.91 1.91 0 001.102-.695c.248-.312.402-.664.402-1.074v-5.085zM115.539 78.5c3.866 0 7.732 0 11.603.01.143.038.281.07.42.094.548.093 1.07.27 1.574.5.591.27 1.129.628 1.611 1.06.432.388.814.825 1.133 1.315.364.557.658 1.15.827 1.794.107.404.161.823.242 1.234.004.024.033.044.05.065 0 .404 0 .807-.01 1.215-.02.022-.037.039-.041.058-.07.384-.123.772-.213 1.15a5.796 5.796 0 01-.754 1.744c-.282.45-.6.87-.966 1.211.267.338.535.66.785.996.267.36.481.754.649 1.17.11.273.203.553.288.834.113.38.194.767.212 1.165.001.018.033.034.05.051 0 .395 0 .79-.01 1.19-.029.102-.055.2-.067.3a6.359 6.359 0 01-.361 1.474 6.767 6.767 0 01-1.447 2.31 6.794 6.794 0 01-.661.59 6.23 6.23 0 01-1.928 1.072c-.474.162-.96.281-1.463.32-.143.01-.286.025-.43.038a.06.06 0 01.001.014H128.493c.042.001.085.017.128.026-4.943 0-9.887 0-14.834-.008-.003-.04-.013-.077 0-.102.383-.684.768-1.367 1.153-2.05.373-.665.748-1.33 1.12-1.996.366-.656.732-1.31 1.092-1.969.072-.132.15-.19.312-.189 2.315.008 4.63.006 6.944.004.163 0 .326-.019.489-.024.327-.01.589-.155.813-.389.502-.525.47-1.253-.005-1.77-.255-.279-.602-.39-.972-.39-1.959-.004-3.917-.002-5.876-.002h-.13v-5.257h5.974c.12 0 .24-.005.357-.028.562-.108.96-.6 1.006-1.144a1.24 1.24 0 00-.296-.936c-.247-.294-.553-.464-.929-.465-3.048-.005-6.097-.003-9.145-.003h-.155V78.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.918 101.5c-2.554 0-5.109 0-7.672-.01.064-.01.135-.01.221-.01-.259-.457-.51-.896-.756-1.337-.231-.411-.457-.826-.687-1.237-.244-.434-.492-.865-.737-1.298-.161-.287-.32-.575-.48-.862-.03-.054-.06-.104-.112-.013-.144.258-.291.513-.435.77-.196.35-.389.701-.585 1.05-.282.5-.566.997-.848 1.496-.171.3-.342.6-.511.902-.094.168-.185.338-.277.506l.214.043c-2.546 0-5.092 0-7.642-.008-.006-.037-.02-.072-.009-.093.146-.266.296-.53.446-.794.273-.48.548-.959.819-1.44.196-.348.387-.7.583-1.05.249-.445.5-.888.75-1.333.194-.346.387-.692.582-1.037.27-.477.545-.95.814-1.428.241-.43.475-.864.716-1.294.314-.559.633-1.115.95-1.672.243-.43.486-.858.726-1.289a.146.146 0 00.003-.12c-.187-.344-.38-.686-.572-1.027-.29-.514-.583-1.027-.871-1.542-.241-.43-.476-.863-.717-1.294-.248-.445-.5-.889-.75-1.333-.203-.365-.405-.73-.61-1.094-.247-.437-.497-.872-.742-1.31-.196-.348-.388-.7-.583-1.05-.257-.46-.515-.919-.774-1.377-.168-.298-.341-.592-.507-.89-.096-.173-.183-.35-.274-.525 2.467 0 4.935 0 7.415.01.15.255.29.5.428.746l1.122 2.008 1.13 2.017c.035.061.058.097.106.006.105-.197.218-.39.328-.584l1.25-2.21c.33-.584.661-1.166.989-1.75.043-.077.07-.162.106-.243 2.476 0 4.952 0 7.439.01-.015.047-.042.085-.064.125-.203.364-.403.73-.608 1.094-.282.5-.57.996-.85 1.496-.249.445-.489.895-.738 1.34-.347.617-.699 1.231-1.047 1.848-.301.532-.601 1.065-.9 1.598-.375.67-.747 1.34-1.122 2.009-.338.603-.675 1.206-1.017 1.807-.072.127-.09.233.016.353.062.07.095.168.142.253.204.369.407.738.613 1.105.237.423.478.844.716 1.266.197.349.39.7.587 1.048.238.422.479.843.716 1.266.204.364.405.73.609 1.094.239.426.48.85.72 1.276l.583 1.037c.283.503.566 1.007.851 1.509.168.297.342.591.508.89.105.189.2.384.3.576zM53.931 101.5H47v-23c4.717 0 9.434 0 14.164.011.02.066.033.12.038.175.018.245.036.49.052.736.027.405.054.81.078 1.216.012.208.017.416.027.624.007.142.015.285.026.427.034.434.072.868.103 1.302.015.207.017.416.027.624.008.147.018.293.03.44.018.239.039.478.06.728h-7.668v2.974h6.24v6.31h-6.246v7.433zM106.064 101.5c-.012-5.569-.012-11.138-.012-16.715h-2.99c.076-.15.14-.285.21-.416.154-.28.311-.56.467-.84.3-.541.603-1.082.902-1.625.199-.362.391-.728.59-1.09.296-.54.597-1.076.893-1.615.124-.226.24-.456.353-.691 2.147-.008 4.302-.008 6.469.004.012 7.671.012 15.33.012 22.988h-6.894z\"\n })))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDE4MCAxODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IFExMzwvdGl0bGU+CiAgICA8ZyBpZD0iMTQ0MHB4LS0tRGVza3RvcCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IldlYl8xNDQwX0xpdmVUVl9OZXdDb21wb25lbnRzX0NoYW5uZWxMb2dvcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMC4wMDAwMDAsIC0xMTExLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iRm94LVExMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjAwMDAwMCwgMTExMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvQ29tcG9uZW50cy9fQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iQ29udGFpbmVyIiBjeD0iNDAiIGN5PSI0MCIgcj0iNDAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLVExMy1TZWF0dGxlL1N0YWNrZWQvV2hpdGUiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ni42NTIgNTMuNUM0Ny4zMDQgNTMuNSA0Ny45NTYxIDUzLjUgNDguNjEyNSA1My41MDk5QzQ4LjY1MTggNTMuNTMwNyA0OC42ODYyIDUzLjU0NzcgNDguNzIxOSA1My41NTE1QzQ4LjkwODQgNTMuNTcxNSA0OS4wOTgyIDUzLjU3MjggNDkuMjgxNCA1My42MDg4QzQ5LjcyMjIgNTMuNjk1NiA1MC4xNjE1IDUzLjc5MTQgNTAuNTk4NiA1My44OTU3QzUxLjIwNjQgNTQuMDQwNyA1MS43OTExIDU0LjI1ODEgNTIuMzUzOCA1NC41MjgzQzUyLjc1NDQgNTQuNzIwNyA1My4xNDUgNTQuOTM2NCA1My41MzA4IDU1LjE1ODFDNTQuMTY4NiA1NS41MjQ1IDU0Ljc1MTEgNTUuOTcyNSA1NS4yODc2IDU2LjQ3NDVDNTUuNzQxMyA1Ni44OTkxIDU2LjE3MDYgNTcuMzQ5NCA1Ni41NTUgNTcuODQzN0M1Ni45ODk5IDU4LjQwMzIgNTcuMzkwNiA1OC45ODUzIDU3LjcwMyA1OS42MjAzQzU3Ljk2NDMgNjAuMTUxNSA1OC4xOTAxIDYwLjcwMjQgNTguNDAxMyA2MS4yNTYzQzU4LjYxOTkgNjEuODI5NCA1OC43NjM2IDYyLjQyNjcgNTguODQ3OSA2My4wMzYxQzU4LjkwNDcgNjMuNDQ3MSA1OC45ODA3IDYzLjg1ODEgNTguOTk3NiA2NC4yNzEyQzU5LjAxODUgNjQuNzg0NyA1OC45OTc5IDY1LjMwMDkgNTguOTc1IDY1LjgxNUM1OC45NTkzIDY2LjE2NjIgNTguOTMxMSA2Ni41MTk5IDU4Ljg2ODcgNjYuODY1MkM1OC43ODM4IDY3LjMzNSA1OC42ODMzIDY3LjgwNDUgNTguNTQ5OSA2OC4yNjI0QzU4LjI1NyA2OS4yNjc0IDU3LjgzMTcgNzAuMjE3NyA1Ny4yNzQ1IDcxLjEwMTZDNTYuNzI0IDcxLjk3NDkgNTYuMDg1MyA3Mi43Nzg5IDU1LjMwNiA3My40NTk2QzU1LjAxMzcgNzMuNzE1IDU0LjcxNjMgNzMuOTY1MiA1NC40MTA5IDc0LjIwNDNDNTMuODIyIDc0LjY2NTMgNTMuMTgyMSA3NS4wNDI3IDUyLjUwODQgNzUuMzY0MkM1MS45Nzg1IDc1LjYxNzEgNTEuNDM3NSA3NS44NDQ0IDUwLjg3MTYgNzUuOTk0N0M1MC4zNDg1IDc2LjEzMzcgNDkuODE3MSA3Ni4yNDg2IDQ5LjI4MzIgNzYuMzM1OEM0OC44NjcyIDc2LjQwMzcgNDguNDQxNyA3Ni40MTI2IDQ4LjAyMDUgNzYuNDQ4M0M0OC4wMTIxIDc2LjQ0OSA0OC4wMDQyIDc2LjQ1NTggNDcuOTY3NyA3Ni40NzM3QzQ4LjA0MSA3Ni40NzM3IDQ4LjA4MzcgNzYuNDczNyA0OC4xMjY1IDc2LjQ3MzdDNDguOTIxMiA3Ni40NzM3IDQ5LjcxNTkgNzYuNDczMyA1MC41MTA3IDc2LjQ3NDhDNTAuNTUzNSA3Ni40NzQ5IDUwLjU5NjQgNzYuNDkxMiA1MC42MzkyIDc2LjVDNDguNjQ5NCA3Ni41IDQ2LjY1OTYgNzYuNSA0NC42NjE5IDc2LjQ4OTNDNDUuNTIzOSA3Ni40Nzg1IDQ2LjM5MzkgNzYuNDc4NSA0Ny4yNjM4IDc2LjQ3ODVDNDYuOTczMyA3Ni40NDIxIDQ2LjY4MjggNzYuNDI1MyA0Ni4zOTQgNzYuMzkzQzQ2LjA3IDc2LjM1NjkgNDUuNzQwOSA3Ni4zMzM4IDQ1LjQyNTcgNzYuMjU2N0M0NC44Njk1IDc2LjEyMDYgNDQuMzE3OCA3NS45NjE0IDQzLjc3MjIgNzUuNzg2OEM0My4xMTIzIDc1LjU3NTYgNDIuNDkzMSA3NS4yNjM4IDQxLjg5NjIgNzQuOTE0NkM0MS4xNDc5IDc0LjQ3NjggNDAuNDU1IDczLjk1NjQgMzkuODI2OCA3My4zNTU5QzM5LjUwNSA3My4wNDgzIDM5LjE5ODcgNzIuNzIwOSAzOC45MTI0IDcyLjM3OTVDMzguNTIwNiA3MS45MTI0IDM4LjE3MTIgNzEuNDEyNyAzNy44NiA3MC44ODQ5QzM3LjQ3NTUgNzAuMjMyOSAzNy4xNTM3IDY5LjU1MzggMzYuOTAxOSA2OC44Mzk0QzM2LjY1OTQgNjguMTUxMyAzNi40NzEyIDY3LjQ1MDMgMzYuMzgzNSA2Ni43MjRDMzYuMzM5OCA2Ni4zNjI3IDM2LjI3MiA2Ni4wMDIxIDM2LjI1OTkgNjUuNjM5N0MzNi4yNDM3IDY1LjE1NjQgMzYuMjU3MiA2NC42NzA5IDM2LjI4NDMgNjQuMTg3OEMzNi4zMDU1IDYzLjgwNzggMzYuMzQ4NSA2My40MjY4IDM2LjQxNDcgNjMuMDUyMkMzNi40OTQ5IDYyLjU5ODUgMzYuNTg1NCA2Mi4xNDM4IDM2LjcxNDUgNjEuNzAyNEMzNi45OTAxIDYwLjc2MDQgMzcuMzgzMiA1OS44NjkyIDM3Ljg5MDcgNTkuMDI2OEMzOC4yNzg5IDU4LjM4MjMgMzguNzIwMiA1Ny43ODA1IDM5LjIyMzYgNTcuMjI3M0MzOS42Mzk0IDU2Ljc3MDQgNDAuMDg2OCA1Ni4zNDM3IDQwLjU3NDEgNTUuOTYxQzQxLjA4NjIgNTUuNTU4OCA0MS42MjA4IDU1LjE5MTkgNDIuMTkzMSA1NC44ODM5QzQyLjg3NzIgNTQuNTE1NyA0My41ODUxIDU0LjIwNDIgNDQuMzMyMSA1My45ODUzQzQ1LjA3MSA1My43Njg5IDQ1LjgxODUgNTMuNjA0OCA0Ni41ODc3IDUzLjU1MDVDNDYuNjEwMiA1My41NDg5IDQ2LjYzMDYgNTMuNTE3NSA0Ni42NTIgNTMuNVpNNDkuNTk2OCA2NC42ODQ2QzQ5LjU5NjggNjMuMTczMyA0OS41OTg3IDYxLjY2MiA0OS41OTM4IDYwLjE1MDhDNDkuNTkzMyA2MC4wMDgzIDQ5LjU2NyA1OS44NjA2IDQ5LjUyNDMgNTkuNzI0M0M0OS4zMjY5IDU5LjA5NDIgNDguOTI1NCA1OC42NDA1IDQ4LjMyMjMgNTguMzgxMUM0OC4wMTE0IDU4LjI0NzQgNDcuNjg1OCA1OC4xOTg3IDQ3LjM0NjYgNTguMjc1NkM0Ni45NDM4IDU4LjM2NjkgNDYuNjExIDU4LjU2NiA0Ni4zMzUxIDU4Ljg3NjRDNDUuOTg3NiA1OS4yNjc1IDQ1Ljc5NzEgNTkuNzI2NSA0NS43OTU4IDYwLjI0MzhDNDUuNzg4MSA2My4zOTc3IDQ1Ljc5MTcgNjYuNTUxNyA0NS43OTMyIDY5LjcwNTZDNDUuNzkzMiA2OS44MDg0IDQ1Ljc5OTQgNjkuOTEzOCA0NS44MjIzIDcwLjAxMzVDNDUuOTMyIDcwLjQ5MTEgNDYuMTUwNCA3MC45MDI2IDQ2LjU0NzcgNzEuMjA0N0M0Ny4wMTI2IDcxLjU1ODIgNDcuNTI3OCA3MS42NjY4IDQ4LjA5MzQgNzEuNTM5MkM0OC41NDExIDcxLjQzODIgNDguOTA5NSA3MS4yMDM4IDQ5LjE5NTEgNzAuODQ0MkM0OS40NDMxIDcwLjUzMTggNDkuNTk3MiA3MC4xNzk5IDQ5LjU5NzEgNjkuNzcwM0M0OS41OTY1IDY4LjA4MzggNDkuNTk2OCA2Ni4zOTczIDQ5LjU5NjggNjQuNjg0NloiIGZpbGw9ImN1cnJlbnRDb2xvciIvPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTAuNTM4NiA1My41Qzk0LjQwNDggNTMuNSA5OC4yNzEgNTMuNSAxMDIuMTQyIDUzLjUwOTZDMTAyLjI4NSA1My41NDc4IDEwMi40MjMgNTMuNTgwNSAxMDIuNTYyIDUzLjYwNDFDMTAzLjExIDUzLjY5NjggMTAzLjYzMiA1My44NzQxIDEwNC4xMzYgNTQuMTA0OEMxMDQuNzI3IDU0LjM3NDggMTA1LjI2NSA1NC43MzE2IDEwNS43NDcgNTUuMTY0N0MxMDYuMTc5IDU1LjU1MjMgMTA2LjU2MSA1NS45ODg5IDEwNi44OCA1Ni40Nzg2QzEwNy4yNDQgNTcuMDM2IDEwNy41MzggNTcuNjI4MiAxMDcuNzA3IDU4LjI3MjdDMTA3LjgxNCA1OC42NzcyIDEwNy44NjggNTkuMDk1NSAxMDcuOTQ5IDU5LjUwNzFDMTA3Ljk1MyA1OS41MzExIDEwNy45ODIgNTkuNTUwNSAxMDcuOTk5IDU5LjU3MkMxMDcuOTk5IDU5Ljk3NTYgMTA3Ljk5OSA2MC4zNzkyIDEwNy45ODkgNjAuNzg3MkMxMDcuOTY5IDYwLjgwOTMgMTA3Ljk1MiA2MC44MjU4IDEwNy45NDggNjAuODQ0OUMxMDcuODc4IDYxLjIyODcgMTA3LjgyNSA2MS42MTY4IDEwNy43MzUgNjEuOTk1OEMxMDcuNTg3IDYyLjYxOTkgMTA3LjMyMSA2My4xOTc0IDEwNi45ODEgNjMuNzM5MkMxMDYuNjk5IDY0LjE4ODUgMTA2LjM4MSA2NC42MDk4IDEwNi4wMTUgNjQuOTUwM0MxMDYuMjgyIDY1LjI4NzcgMTA2LjU1IDY1LjYxMDIgMTA2LjggNjUuOTQ2NEMxMDcuMDY3IDY2LjMwNiAxMDcuMjgxIDY2LjcwMDIgMTA3LjQ0OSA2Ny4xMTY0QzEwNy41NTkgNjcuMzg4NyAxMDcuNjUyIDY3LjY2ODcgMTA3LjczNyA2Ny45NTAyQzEwNy44NSA2OC4zMjk1IDEwNy45MzEgNjguNzE2NiAxMDcuOTQ5IDY5LjExNDdDMTA3Ljk1IDY5LjEzMjYgMTA3Ljk4MiA2OS4xNDkxIDEwNy45OTkgNjkuMTY2M0MxMDcuOTk5IDY5LjU2MTEgMTA3Ljk5OSA2OS45NTYgMTA3Ljk4OSA3MC4zNTUyQzEwNy45NiA3MC40NTgyIDEwNy45MzQgNzAuNTU2MSAxMDcuOTIyIDcwLjY1NTdDMTA3Ljg2MyA3MS4xNjI0IDEwNy43MzggNzEuNjUwNSAxMDcuNTYxIDcyLjEyOTdDMTA3LjIzNyA3My4wMDI4IDEwNi43NDggNzMuNzY3NyAxMDYuMTE0IDc0LjQzOTNDMTA1LjkxMiA3NC42NTQgMTA1LjY4MiA3NC44NDM5IDEwNS40NTMgNzUuMDMwOUMxMDQuODc0IDc1LjUwMzIgMTA0LjIyOSA3NS44NTk5IDEwMy41MjUgNzYuMTAxNkMxMDMuMDUxIDc2LjI2NDUgMTAyLjU2NSA3Ni4zODMyIDEwMi4wNjIgNzYuNDIxNUMxMDEuOTE5IDc2LjQzMjQgMTAxLjc3NiA3Ni40NDcyIDEwMS42MzIgNzYuNDYwM0MxMDEuNjMzIDc2LjQ2NDcgMTAxLjYzMyA3Ni40NjkyIDEwMS42MzMgNzYuNDczN0MxMDEuNjc2IDc2LjQ3MzcgMTAxLjcxOCA3Ni40NzM3IDEwMS43NjEgNzYuNDczN0MxMDIuMzM4IDc2LjQ3MzcgMTAyLjkxNSA3Ni40NzMyIDEwMy40OTMgNzYuNDc0OEMxMDMuNTM1IDc2LjQ3NSAxMDMuNTc4IDc2LjQ5MTIgMTAzLjYyMSA3Ni41Qzk4LjY3NzYgNzYuNSA5My43MzQyIDc2LjUgODguNzg2NyA3Ni40OTE5Qzg4Ljc4MzUgNzYuNDUyMyA4OC43NzM3IDc2LjQxNDYgODguNzg3MyA3Ni4zOTAzQzg5LjE2OTkgNzUuNzA2IDg5LjU1NTMgNzUuMDIzMiA4OS45Mzk1IDc0LjMzOTdDOTAuMzEzNCA3My42NzQ2IDkwLjY4NzUgNzMuMDA5NiA5MS4wNTk4IDcyLjM0MzVDOTEuNDI1OCA3MS42ODg0IDkxLjc5MiA3MS4wMzM1IDkyLjE1MjIgNzAuMzc1MkM5Mi4yMjQzIDcwLjI0MzQgOTIuMzAxMyA3MC4xODU3IDkyLjQ2NDQgNzAuMTg2MkM5NC43Nzg5IDcwLjE5MzkgOTcuMDkzNSA3MC4xOTIgOTkuNDA4MSA3MC4xOTAzQzk5LjU3MDkgNzAuMTkwMiA5OS43MzM2IDcwLjE3MTEgOTkuODk2NiA3MC4xNjU4QzEwMC4yMjQgNzAuMTU1MSAxMDAuNDg2IDcwLjAxMDggMTAwLjcxIDY5Ljc3NzRDMTAxLjIxMiA2OS4yNTI0IDEwMS4xOCA2OC41MjQgMTAwLjcwNSA2OC4wMDYzQzEwMC40NSA2Ny43MjgyIDEwMC4xMDMgNjcuNjE3OSA5OS43MzI2IDY3LjYxNzJDOTcuNzc0MiA2Ny42MTM0IDk1LjgxNTcgNjcuNjE1NCA5My44NTczIDY3LjYxNTRDOTMuODExNyA2Ny42MTU0IDkzLjc2NjEgNjcuNjE1NCA5My43MjY2IDY3LjYxNTRDOTMuNzI2NiA2NS44NTIxIDkzLjcyNjYgNjQuMTA2OSA5My43MjY2IDYyLjM1ODNDOTMuNzgyOCA2Mi4zNTgzIDkzLjgzMDMgNjIuMzU4MyA5My44Nzc4IDYyLjM1ODNDOTUuODE4OSA2Mi4zNTgzIDk3Ljc2IDYyLjM1ODcgOTkuNzAxMSA2Mi4zNTcyQzk5LjgyMDMgNjIuMzU3MSA5OS45NDE3IDYyLjM1MjUgMTAwLjA1OCA2Mi4zM0MxMDAuNjIgNjIuMjIxNiAxMDEuMDE4IDYxLjczMDggMTAxLjA2NCA2MS4xODU4QzEwMS4wOTQgNjAuODM3NSAxMDAuOTk4IDYwLjUyNTMgMTAwLjc2OCA2MC4yNTAzQzEwMC41MjEgNTkuOTU2IDEwMC4yMTUgNTkuNzg1OCA5OS44MzkxIDU5Ljc4NTFDOTYuNzkwNyA1OS43ODAxIDkzLjc0MjMgNTkuNzgyMyA5MC42OTM5IDU5Ljc4MjNDOTAuNjQzNiA1OS43ODIzIDkwLjU5MzQgNTkuNzgyMyA5MC41Mzg2IDU5Ljc4MjNDOTAuNTM4NiA1Ny42Nzc2IDkwLjUzODYgNTUuNTg4OCA5MC41Mzg2IDUzLjVaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTc1LjkxODEgNzYuNUM3My4zNjM2IDc2LjUgNzAuODA5MSA3Ni41IDY4LjI0NjMgNzYuNDg5NkM2OC4zMDk2IDc2LjQ3OTMgNjguMzgxMiA3Ni40NzkzIDY4LjQ2NyA3Ni40NzkzQzY4LjIwODMgNzYuMDIyNyA2Ny45NTc3IDc1LjU4MzkgNjcuNzEwNiA3NS4xNDMyQzY3LjQ3OTggNzQuNzMxNyA2Ny4yNTQ1IDc0LjMxNzEgNjcuMDIzNiA3My45MDU3QzY2Ljc4MDEgNzMuNDcyIDY2LjUzMiA3My4wNDA5IDY2LjI4NzUgNzIuNjA3OEM2Ni4xMjU5IDcyLjMyMTQgNjUuOTY3MiA3Mi4wMzM0IDY1LjgwNjggNzEuNzQ2M0M2NS43NzYyIDcxLjY5MTYgNjUuNzQ2MyA3MS42NDE2IDY1LjY5NTEgNzEuNzMzMkM2NS41NTExIDcxLjk5MDcgNjUuNDAzOCA3Mi4yNDY0IDY1LjI1OTYgNzIuNTAzOEM2NS4wNjQgNzIuODUzMSA2NC44NzE1IDczLjIwNDIgNjQuNjc1IDczLjU1MjlDNjQuMzkzNCA3NC4wNTIzIDY0LjEwOTMgNzQuNTUwMiA2My44MjY1IDc1LjA0ODlDNjMuNjU2IDc1LjM0OTQgNjMuNDg1IDc1LjY0OTUgNjMuMzE1OSA3NS45NTA4QzYzLjIyMTcgNzYuMTE4OCA2My4xMzEgNzYuMjg4OCA2My4wMzkxIDc2LjQ1NzJDNjMuMTE3NyA3Ni40NzI5IDYzLjE4NTEgNzYuNDg2NSA2My4yNTI2IDc2LjVDNjAuNzA2OCA3Ni41IDU4LjE2MSA3Ni41IDU1LjYxMSA3Ni40OTE5QzU1LjYwNDYgNzYuNDU1MiA1NS41OTA2IDc2LjQxOTkgNTUuNjAyMSA3Ni4zOTkxQzU1Ljc0ODUgNzYuMTMzMyA1NS44OTc5IDc1Ljg2OTIgNTYuMDQ3OCA3NS42MDU0QzU2LjMyMDYgNzUuMTI1MiA1Ni41OTU2IDc0LjY0NjMgNTYuODY2OSA3NC4xNjUzQzU3LjA2MzUgNzMuODE2NiA1Ny4yNTQ0IDczLjQ2NDcgNTcuNDQ5OSA3My4xMTUzQzU3LjY5ODkgNzIuNjcwMyA1Ny45NSA3Mi4yMjY1IDU4LjE5OTkgNzEuNzgyQzU4LjM5NDEgNzEuNDM2NCA1OC41ODY2IDcxLjA4OTkgNTguNzgyMSA3MC43NDUxQzU5LjA1MjQgNzAuMjY4NCA1OS4zMjcyIDY5Ljc5NDIgNTkuNTk1OCA2OS4zMTY1QzU5LjgzNzQgNjguODg2OCA2MC4wNzA5IDY4LjQ1MjUgNjAuMzEyNCA2OC4wMjI3QzYwLjYyNjQgNjcuNDY0MSA2MC45NDUxIDY2LjkwODEgNjEuMjYxMyA2Ni4zNTA3QzYxLjUwNDcgNjUuOTIxNyA2MS43NDg0IDY1LjQ5MzEgNjEuOTg4MiA2NS4wNjIxQzYyLjAwNTggNjUuMDMwNSA2Mi4wMDg0IDY0Ljk3MjkgNjEuOTkxNSA2NC45NDJDNjEuODAzOCA2NC41OTc4IDYxLjYxMTggNjQuMjU2IDYxLjQxOTIgNjMuOTE0NkM2MS4xMjkyIDYzLjQwMDUgNjAuODM2MSA2Mi44ODgxIDYwLjU0NzYgNjIuMzczMUM2MC4zMDY2IDYxLjk0MzEgNjAuMDcxNiA2MS41MDk2IDU5LjgzMTUgNjEuMDc5QzU5LjU4MzEgNjAuNjMzNyA1OS4zMzEzIDYwLjE5MDIgNTkuMDgxOCA1OS43NDU1QzU4Ljg3NzYgNTkuMzgxNCA1OC42NzU2IDU5LjAxNiA1OC40NzA2IDU4LjY1MjNDNTguMjI0MiA1OC4yMTUzIDU3Ljk3NDUgNTcuNzgwMiA1Ny43Mjg3IDU3LjM0MjhDNTcuNTMyNiA1Ni45OTM5IDU3LjM0MTIgNTYuNjQyMiA1Ny4xNDU5IDU2LjI5MjhDNTYuODg4OSA1NS44MzI5IDU2LjYzMSA1NS4zNzM1IDU2LjM3MTkgNTQuOTE0N0M1Ni4yMDQgNTQuNjE3NCA1Ni4wMzA5IDU0LjMyMyA1NS44NjQ2IDU0LjAyNDZDNTUuNzY4NyA1My44NTI0IDU1LjY4MTggNTMuNjc1MSA1NS41OTA4IDUzLjVDNTguMDU4NCA1My41IDYwLjUyNjEgNTMuNSA2My4wMDU5IDUzLjUwOTlDNjMuMTU2OSA1My43NjUyIDYzLjI5NjYgNTQuMDEwMiA2My40MzQzIDU0LjI1NjNDNjMuODA4NiA1NC45MjUyIDY0LjE4MTcgNTUuNTk0OCA2NC41NTYxIDU2LjI2MzdDNjQuOTMyNSA1Ni45MzYzIDY1LjMxMDIgNTcuNjA4MyA2NS42ODY1IDU4LjI4MUM2NS43MjA3IDU4LjM0MjEgNjUuNzQzOCA1OC4zNzc4IDY1Ljc5MjEgNTguMjg3MkM2NS44OTcgNTguMDkwMyA2Ni4wMDk3IDU3Ljg5NzYgNjYuMTE5NiA1Ny43MDM0QzY2LjUzNjUgNTYuOTY2NCA2Ni45NTM3IDU2LjIyOTUgNjcuMzcwNiA1NS40OTI1QzY3LjcwMDUgNTQuOTA5NCA2OC4wMzExIDU0LjMyNjYgNjguMzU4OCA1My43NDIyQzY4LjQwMTcgNTMuNjY1OCA2OC40Mjk4IDUzLjU4MSA2OC40NjQ4IDUzLjVDNzAuOTQxMSA1My41IDczLjQxNzQgNTMuNSA3NS45MDM3IDUzLjUwOTFDNzUuODg5MSA1My41NTcxIDc1Ljg2MjMgNTMuNTk0OCA3NS44Mzk5IDUzLjYzNTFDNzUuNjM2OSA1My45OTk1IDc1LjQzNjYgNTQuMzY1NiA3NS4yMzE2IDU0LjcyOUM3NC45NDk5IDU1LjIyODUgNzQuNjYyNCA1NS43MjQ2IDc0LjM4MjEgNTYuMjI0OUM3NC4xMzMgNTYuNjY5NiA3My44OTMzIDU3LjExOTcgNzMuNjQzOSA1Ny41NjQzQzczLjI5NzUgNTguMTgxOSA3Mi45NDUyIDU4Ljc5NjIgNzIuNTk2NyA1OS40MTI3QzcyLjI5NTkgNTkuOTQ0OSA3MS45OTU5IDYwLjQ3NzYgNzEuNjk3MiA2MS4wMTFDNzEuMzIyNCA2MS42ODAxIDcwLjk0OTggNjIuMzUwNSA3MC41NzUxIDYzLjAxOTdDNzAuMjM3NCA2My42MjI5IDY5Ljg5OTcgNjQuMjI2MiA2OS41NTgxIDY0LjgyNzJDNjkuNDg2MyA2NC45NTM1IDY5LjQ2ODkgNjUuMDU5NiA2OS41NzQxIDY1LjE3OThDNjkuNjM2MyA2NS4yNTA4IDY5LjY2ODcgNjUuMzQ4IDY5LjcxNTcgNjUuNDMyOEM2OS45MTk5IDY1LjgwMTYgNzAuMTIzIDY2LjE3MDkgNzAuMzI5MyA2Ni41Mzg1QzcwLjU2NjQgNjYuOTYxMSA3MC44MDcgNjcuMzgxOCA3MS4wNDUgNjcuODA0QzcxLjI0MTYgNjguMTUyOSA3MS40MzU5IDY4LjUwMzEgNzEuNjMyNSA2OC44NTIxQzcxLjg3MDQgNjkuMjc0MyA3Mi4xMTA2IDY5LjY5NTIgNzIuMzQ3OSA3MC4xMTc3QzcyLjU1MjIgNzAuNDgxNiA3Mi43NTI2IDcwLjg0NzcgNzIuOTU2OSA3MS4yMTE3QzczLjE5NiA3MS42MzggNzMuNDM3OSA3Mi4wNjI3IDczLjY3NzggNzIuNDg4NUM3My44NzI0IDcyLjgzMzggNzQuMDY1NSA3My4xOCA3NC4yNiA3My41MjU0Qzc0LjU0MzIgNzQuMDI4NSA3NC44MjY1IDc0LjUzMTYgNzUuMTExIDc1LjAzMzlDNzUuMjc5MyA3NS4zMzExIDc1LjQ1MyA3NS42MjUyIDc1LjYxODggNzUuOTIzOEM3NS43MjM4IDc2LjExMjkgNzUuODE4NyA3Ni4zMDc3IDc1LjkxODEgNzYuNVoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjguOTMxMyA3Ni41QzI2LjYyMTEgNzYuNSAyNC4zMTEgNzYuNSAyMiA3Ni41QzIyIDY4LjgzNTggMjIgNjEuMTcxNyAyMiA1My41QzI2LjcxNjggNTMuNSAzMS40MzQ0IDUzLjUgMzYuMTY0MSA1My41MTE1QzM2LjE4NDggNTMuNTc3MiAzNi4xOTczIDUzLjYzMTIgMzYuMjAxNSA1My42ODU4QzM2LjIyMDQgNTMuOTMxMSAzNi4yMzc4IDU0LjE3NjQgMzYuMjU0IDU0LjQyMTlDMzYuMjgwOSA1NC44MjcxIDM2LjMwNzkgNTUuMjMyNCAzNi4zMzE4IDU1LjYzNzhDMzYuMzQ0MSA1NS44NDU3IDM2LjM0ODggNTYuMDU0IDM2LjM1ODkgNTYuMjYyQzM2LjM2NTggNTYuNDA0NSAzNi4zNzQxIDU2LjU0NyAzNi4zODUxIDU2LjY4OTJDMzYuNDE4OCA1Ny4xMjMxIDM2LjQ1NjYgNTcuNTU2NyAzNi40ODc4IDU3Ljk5MDhDMzYuNTAyNyA1OC4xOTg0IDM2LjUwNDkgNTguNDA2OSAzNi41MTU0IDU4LjYxNDlDMzYuNTIyNyA1OC43NjE2IDM2LjUzMyA1OC45MDgyIDM2LjU0NDQgNTkuMDU0N0MzNi41NjMgNTkuMjkzOSAzNi41ODM2IDU5LjUzMyAzNi42MDQzIDU5Ljc4MzVDMzQuMDM0MyA1OS43ODM1IDMxLjQ4NzcgNTkuNzgzNSAyOC45MzY1IDU5Ljc4MzVDMjguOTM2NSA2MC43NzYyIDI4LjkzNjUgNjEuNzU5MiAyOC45MzY1IDYyLjc1NjhDMzEuMDIyMyA2Mi43NTY4IDMzLjEwMyA2Mi43NTY4IDM1LjE3NzEgNjIuNzU2OEMzNS4xNzcxIDY0Ljg2NjggMzUuMTc3MSA2Ni45NjI0IDM1LjE3NzEgNjkuMDY3OEMzMy4wOTA3IDY5LjA2NzggMzEuMDEzMSA2OS4wNjc4IDI4LjkzMTMgNjkuMDY3OEMyOC45MzEzIDcxLjU1MTggMjguOTMxMyA3NC4wMjU5IDI4LjkzMTMgNzYuNVoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNODEuMDY0NCA3Ni41QzgxLjA1MjIgNzAuOTMxMSA4MS4wNTIyIDY1LjM2MjIgODEuMDUyMiA1OS43ODQ3QzgwLjA1ODYgNTkuNzg0NyA3OS4wNzQ3IDU5Ljc4NDcgNzguMDYyNSA1OS43ODQ3Qzc4LjEzODEgNTkuNjM0MiA3OC4yMDExIDU5LjQ5OTUgNzguMjcyMiA1OS4zNjkyQzc4LjQyNTYgNTkuMDg4MSA3OC41ODM0IDU4LjgwOTQgNzguNzM5IDU4LjUyOTRDNzkuMDM5OSA1Ny45ODc2IDc5LjM0MiA1Ny40NDY1IDc5LjY0MDggNTYuOTAzNUM3OS44Mzk5IDU2LjU0MTcgODAuMDMyMiA1Ni4xNzYyIDgwLjIzMSA1NS44MTQzQzgwLjUyNzQgNTUuMjc0OSA4MC44MjgyIDU0LjczOCA4MS4xMjQ0IDU0LjE5ODVDODEuMjQ4MiA1My45NzMgODEuMzY0OSA1My43NDM1IDgxLjQ3NyA1My41MDhDODMuNjI0IDUzLjUgODUuNzc4OSA1My41IDg3Ljk0NiA1My41MTIzQzg3Ljk1ODIgNjEuMTgzMSA4Ny45NTgyIDY4Ljg0MTUgODcuOTU4MiA3Ni41Qzg1LjY2NDQgNzYuNSA4My4zNzA1IDc2LjUgODEuMDY0NCA3Ni41WiIgZmlsbD0iY3VycmVudENvbG9yIi8+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCg==\";\nexport { SvgKcpq as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKdfw(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\",\n fill: \"none\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75.566 58.594V80.55h5.77v6.242h-5.77v6.75h-7.73v-6.75H47.952v-6.605l17.6-21.593h10.015zm-7.73 7.186L56.044 80.586h11.794V65.78zM74.95 37.8l1.96 3.448 1.96-3.448h5.225l-4.536 8.056 4.536 8.057h-5.262l-1.923-3.411-1.923 3.41h-5.262l4.572-8.056-4.572-8.056h5.225zm-10.85 0c4.427 0 8.056 3.593 8.056 8.056a8.038 8.038 0 01-8.056 8.057 8.038 8.038 0 01-8.056-8.057 8.038 8.038 0 018.056-8.056zm-8.129 0l.29 4.391h-5.406v2.105h4.427v4.391h-4.427v5.226h-4.9V37.8H55.97zm8.165 3.302c-.762 0-1.342.654-1.342 1.416v6.605c0 .762.617 1.379 1.342 1.379.726 0 1.38-.581 1.38-1.343v-6.641c0-.726-.654-1.416-1.38-1.416z\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDQ8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNDAuMDAwMDAwLCAtNTUxLjAwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgIDxnIGlkPSJGb3gtNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLjAwMDAwMCwgNTUxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJFeHBvcnRhYmxlLUNoYW5uZWwtTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLTQtS0RGVy9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMC44MDAwMDAsIDEyLjgwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjkuNzY2MjU5LDIwLjc5NDM1NDggTDI5Ljc2NjI1OSw0Mi43NSBMMzUuNTM2MTMxMyw0Mi43NSBMMzUuNTM2MTMxMyw0OC45OTE5MzU1IEwyOS43NjYyNTksNDguOTkxOTM1NSBMMjkuNzY2MjU5LDU1Ljc0MTkzNTUgTDIyLjAzNjgwNzQsNTUuNzQxOTM1NSBMMjIuMDM2ODA3NCw0OC45OTE5MzU1IEwyLjE1MDcwNjUsNDguOTkxOTM1NSBMMi4xNTA3MDY1LDQyLjM4NzA5NjggTDE5Ljc1MDYzMTUsMjAuNzk0MzU0OCBMMjkuNzY2MjU5LDIwLjc5NDM1NDggWiBNMjIuMDM2ODA3NCwyNy45Nzk4Mzg3IEwxMC4yNDMwNDMyLDQyLjc4NjI5MDMgTDIyLjAzNjgwNzQsNDIuNzg2MjkwMyBMMjIuMDM2ODA3NCwyNy45Nzk4Mzg3IFogTTI5LjE0OTM1NDQsNy44Njg2ODc3OGUtMTQgTDMxLjEwODkzMzcsMy40NDc1ODA2NSBMMzMuMDY4NTEzLDcuODY4Njg3NzhlLTE0IEwzOC4yOTQwNTc3LDcuODY4Njg3NzhlLTE0IEwzMy43NTc5OTQ2LDguMDU2NDUxNjEgTDM4LjI5NDA1NzcsMTYuMTEyOTAzMiBMMzMuMDMyMjI0NSwxNi4xMTI5MDMyIEwzMS4xMDg5MzM3LDEyLjcwMTYxMjkgTDI5LjE4NTY0MjksMTYuMTEyOTAzMiBMMjMuOTIzODA5NiwxNi4xMTI5MDMyIEwyOC40OTYxNjEzLDguMDU2NDUxNjEgTDIzLjkyMzgwOTYsNy44Njg2ODc3OGUtMTQgTDI5LjE0OTM1NDQsNy44Njg2ODc3OGUtMTQgWiBNMTguMjk5MDkxMyw3Ljg2ODY4Nzc4ZS0xNCBDMjIuNzI2Mjg5LDcuODY4Njg3NzhlLTE0IDI2LjM1NTEzOTUsMy41OTI3NDE5NCAyNi4zNTUxMzk1LDguMDU2NDUxNjEgQzI2LjM1NTEzOTUsMTIuNTIwMTYxMyAyMi43NjI1Nzc1LDE2LjExMjkwMzIgMTguMjk5MDkxMywxNi4xMTI5MDMyIEMxMy44MzU2MDUyLDE2LjExMjkwMzIgMTAuMjQzMDQzMiwxMi41MjAxNjEzIDEwLjI0MzA0MzIsOC4wNTY0NTE2MSBDMTAuMjQzMDQzMiwzLjU5Mjc0MTk0IDEzLjgzNTYwNTIsNy44Njg2ODc3OGUtMTQgMTguMjk5MDkxMyw3Ljg2ODY4Nzc4ZS0xNCBaIE0xMC4xNzA0NjYyLDcuODY4Njg3NzhlLTE0IEwxMC40NjA3NzQyLDQuMzkxMTI5MDMgTDUuMDUzNzg2OTIsNC4zOTExMjkwMyBMNS4wNTM3ODY5Miw2LjQ5NTk2Nzc0IEw5LjQ4MDk4NDU2LDYuNDk1OTY3NzQgTDkuNDgwOTg0NTYsMTAuODg3MDk2OCBMNS4wNTM3ODY5MiwxMC44ODcwOTY4IEw1LjA1Mzc4NjkyLDE2LjExMjkwMzIgTDAuMTU0ODM4NzEsMTYuMTEyOTAzMiBMMC4xNTQ4Mzg3MSw3Ljg2ODY4Nzc4ZS0xNCBMMTAuMTcwNDY2Miw3Ljg2ODY4Nzc4ZS0xNCBaIE0xOC4zMzUzNzk4LDMuMzAyNDE5MzUgQzE3LjU3MzMyMTIsMy4zMDI0MTkzNSAxNi45OTI3MDUxLDMuOTU1NjQ1MTYgMTYuOTkyNzA1MSw0LjcxNzc0MTk0IEwxNi45OTI3MDUxLDQuNzE3NzQxOTQgTDE2Ljk5MjcwNTEsMTEuMzIyNTgwNiBDMTYuOTkyNzA1MSwxMi4wODQ2Nzc0IDE3LjYwOTYwOTcsMTIuNzAxNjEyOSAxOC4zMzUzNzk4LDEyLjcwMTYxMjkgQzE5LjA2MTE0OTksMTIuNzAxNjEyOSAxOS43MTQzNDMsMTIuMTIwOTY3NyAxOS43MTQzNDMsMTEuMzU4ODcxIEwxOS43MTQzNDMsMTEuMzU4ODcxIEwxOS43MTQzNDMsNC43MTc3NDE5NCBDMTkuNzE0MzQzLDMuOTkxOTM1NDggMTkuMDYxMTQ5OSwzLjMwMjQxOTM1IDE4LjMzNTM3OTgsMy4zMDI0MTkzNSBaIiBpZD0iRk9YLTQtS0RGVyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgKdfw as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKmsp(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.983 58.562c1.745 0 3.454.328 5.017.946 1.6.654 3.018 1.527 4.218 2.69 1.273 1.273 2.182 2.618 2.727 4.11.546 1.454.8 3.017.8 4.726 0 1.237-.145 2.4-.472 3.418-.328 1.018-.727 2-1.273 2.946v.036c-.254.4-.509.836-.8 1.273-.29.4-.545.836-.836 1.272v.037l-9.527 13.526h-8.654l7.818-11.2h-.436c-3.31 0-6.036-1.09-8.11-3.308-2.072-2.218-3.126-4.873-3.126-7.963 0-3.418 1.2-6.4 3.527-8.836 2.363-2.436 5.418-3.673 9.127-3.673zm-.037 6.836c-1.49.037-2.69.546-3.709 1.6-1.018 1.055-1.527 2.218-1.527 3.564 0 1.527.473 2.763 1.491 3.818 1.018 1.054 2.29 1.563 3.927 1.563 1.564 0 2.836-.509 3.818-1.6 1.018-1.09 1.49-2.29 1.49-3.745 0-1.49-.508-2.69-1.563-3.709-1.054-1.018-2.327-1.49-3.927-1.49zm10-27.598l1.963 3.454 1.964-3.454h5.236l-4.545 8.072 4.545 8.072h-5.273l-1.927-3.418-1.927 3.418H69.71l4.581-8.072L69.71 37.8h5.236zm-10.872 0c4.436 0 8.072 3.6 8.072 8.072 0 4.473-3.6 8.072-8.072 8.072A8.054 8.054 0 0156 45.872c0-4.472 3.6-8.072 8.073-8.072zm-8.145 0l.29 4.4h-5.417v2.109h4.436v4.4h-4.436v5.235h-4.91V37.8H55.93zm8.18 3.309c-.763 0-1.344.654-1.344 1.418v6.618c0 .763.618 1.381 1.345 1.381s1.382-.581 1.382-1.345v-6.654c0-.727-.655-1.418-1.382-1.418z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDk8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODAuMDAwMDAwLCAtNjkxLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iRm94LTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM4MC4wMDAwMDAsIDY5MS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvQ29tcG9uZW50cy9fQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iQ29udGFpbmVyIiBjeD0iNDAiIGN5PSI0MCIgcj0iNDAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLTktS01TUC9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMC44MDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS4xODI2MDcyLDIwLjc2MjMyNTYgQzIwLjkyNzk1MTUsMjAuNzYyMzI1NiAyMi42MzY5MzQ1LDIxLjA4OTU3NzcgMjQuMjAwNDcyMiwyMS43MDc3MjA1IEMyNS44MDAzNzEyLDIyLjM2MjIyNDYgMjcuMjE4NDYzNSwyMy4yMzQ4OTY4IDI4LjQxODM4NzcsMjQuMzk4NDU5NyBDMjkuNjkxMDM0NywyNS42NzExMDY2IDMwLjYwMDA2ODIsMjcuMDE2NDc2MiAzMS4xNDU0ODgzLDI4LjUwNzI5MTIgQzMxLjY5MDkwODQsMjkuOTYxNzQ0OCAzMS45NDU0Mzc4LDMxLjUyNTI4MjUgMzEuOTQ1NDM3OCwzMy4yMzQyNjU1IEMzMS45NDU0Mzc4LDM0LjQ3MDU1MTEgMzEuNzk5OTkyNCwzNS42MzQxMTQgMzEuNDcyNzQwNCwzNi42NTIyMzE2IEMzMS4xNDU0ODgzLDM3LjY3MDM0OTEgMzAuNzQ1NTEzNSwzOC42NTIxMDUzIDMwLjIwMDA5MzQsMzkuNTk3NTAwMiBMMzAuMjAwMDkzNCwzOS42MzM4NjE1IEMyOS45NDU1NjQsNDAuMDMzODM2MiAyOS42OTEwMzQ3LDQwLjQ3MDE3MjMgMjkuNDAwMTQzOSw0MC45MDY1MDg0IEMyOS4xMDkyNTMyLDQxLjMwNjQ4MzIgMjguODU0NzIzOCw0MS43NDI4MTkzIDI4LjU2MzgzMzEsNDIuMTc5MTU1NCBMMjguNTYzODMzMSw0Mi4yMTU1MTY3IEwxOS4wMzcxNjE4LDU1Ljc0MTkzNTUgTDEwLjM4MzE2MjcsNTUuNzQxOTM1NSBMMTguMjAwODUxLDQ0LjU0MjY0MjUgTDE3Ljc2NDUxNDksNDQuNTQyNjQyNSBDMTQuNDU1NjMyOSw0NC41NDI2NDI1IDExLjcyODUzMjMsNDMuNDUxODAyMyA5LjY1NTkzNTg2LDQxLjIzMzc2MDUgQzcuNTgzMzM5NDQsMzkuMDE1NzE4NyA2LjUyODg2MDU1LDM2LjM2MTM0MDggNi41Mjg4NjA1NSwzMy4yNzA2MjY5IEM2LjUyODg2MDU1LDI5Ljg1MjY2MDggNy43Mjg3ODQ4LDI2Ljg3MTAzMDkgMTAuMDU1OTEwNiwyNC40MzQ4MjEgQzEyLjQxOTM5NzgsMjEuOTk4NjExMiAxNS40NzM3NTA0LDIwLjc2MjMyNTYgMTkuMTgyNjA3MiwyMC43NjIzMjU2IFogTTE5LjE0NjI0NTgsMjcuNTk4MjU3NyBDMTcuNjU1NDMwOCwyNy42MzQ2MTkgMTYuNDU1NTA2NiwyOC4xNDM2Nzc4IDE1LjQzNzM4OTEsMjkuMTk4MTU2NyBDMTQuNDE5MjcxNSwzMC4yNTI2MzU2IDEzLjkxMDIxMjcsMzEuNDE2MTk4NSAxMy45MTAyMTI3LDMyLjc2MTU2ODEgQzEzLjkxMDIxMjcsMzQuMjg4NzQ0NCAxNC4zODI5MTAyLDM1LjUyNTAzIDE1LjQwMTAyNzcsMzYuNTc5NTA4OSBDMTYuNDE5MTQ1MywzNy42MzM5ODc4IDE3LjY5MTc5MjIsMzguMTQzMDQ2NSAxOS4zMjgwNTI1LDM4LjE0MzA0NjUgQzIwLjg5MTU5MDIsMzguMTQzMDQ2NSAyMi4xNjQyMzcxLDM3LjYzMzk4NzggMjMuMTQ1OTkzMywzNi41NDMxNDc1IEMyNC4xNjQxMTA5LDM1LjQ1MjMwNzMgMjQuNjM2ODA4MywzNC4yNTIzODMxIDI0LjYzNjgwODMsMzIuNzk3OTI5NCBDMjQuNjM2ODA4MywzMS4zMDcxMTQ0IDI0LjEyNzc0OTUsMzAuMTA3MTkwMiAyMy4wNzMyNzA2LDI5LjA4OTA3MjcgQzIyLjAxODc5MTcsMjguMDcwOTU1MSAyMC43NDYxNDQ4LDI3LjU5ODI1NzcgMTkuMTQ2MjQ1OCwyNy41OTgyNTc3IFogTTI5LjE0NTYxNDUsNy44Njg2ODc3OGUtMTQgTDMxLjEwOTEyNjksMy40NTQzMjczOCBMMzMuMDcyNjM5NCw3Ljg2ODY4Nzc4ZS0xNCBMMzguMzA4NjcyNCw3Ljg2ODY4Nzc4ZS0xNCBMMzMuNzYzNTA0OCw4LjA3MjIxNzY2IEwzOC4zMDg2NzI0LDE2LjE0NDQzNTMgTDMzLjAzNjI3OCwxNi4xNDQ0MzUzIEwzMS4xMDkxMjY5LDEyLjcyNjQ2OTMgTDI5LjE4MTk3NTksMTYuMTQ0NDM1MyBMMjMuOTA5NTgxNSwxNi4xNDQ0MzUzIEwyOC40OTExMTA0LDguMDcyMjE3NjYgTDIzLjkwOTU4MTUsNy44Njg2ODc3OGUtMTQgTDI5LjE0NTYxNDUsNy44Njg2ODc3OGUtMTQgWiBNMTguMjczNTczNiw3Ljg2ODY4Nzc4ZS0xNCBDMjIuNzA5NjU3Miw3Ljg2ODY4Nzc4ZS0xNCAyNi4zNDU3OTEzLDMuNTk5NzcyNzQgMjYuMzQ1NzkxMyw4LjA3MjIxNzY2IEMyNi4zNDU3OTEzLDEyLjU0NDY2MjYgMjIuNzQ2MDE4NiwxNi4xNDQ0MzUzIDE4LjI3MzU3MzYsMTYuMTQ0NDM1MyBDMTMuODAxMTI4NywxNi4xNDQ0MzUzIDEwLjIwMTM1NiwxMi41NDQ2NjI2IDEwLjIwMTM1Niw4LjA3MjIxNzY2IEMxMC4yMDEzNTYsMy41OTk3NzI3NCAxMy44MDExMjg3LDcuODY4Njg3NzhlLTE0IDE4LjI3MzU3MzYsNy44Njg2ODc3OGUtMTQgWiBNMTAuMTI4NjMzMyw3Ljg2ODY4Nzc4ZS0xNCBMMTAuNDE5NTI0LDQuMzk5NzIyMjQgTDUuMDAxNjg0MjQsNC4zOTk3MjIyNCBMNS4wMDE2ODQyNCw2LjUwODY4MDAxIEw5LjQzNzc2NzgyLDYuNTA4NjgwMDEgTDkuNDM3NzY3ODIsMTAuOTA4NDAyMiBMNS4wMDE2ODQyNCwxMC45MDg0MDIyIEw1LjAwMTY4NDI0LDE2LjE0NDQzNTMgTDAuMDkyOTAzMjI1OCwxNi4xNDQ0MzUzIEwwLjA5MjkwMzIyNTgsNy44Njg2ODc3OGUtMTQgTDEwLjEyODYzMzMsNy44Njg2ODc3OGUtMTQgWiBNMTguMzA5OTM1LDMuMzA4ODgyMDIgQzE3LjU0NjM0NjgsMy4zMDg4ODIwMiAxNi45NjQ1NjU0LDMuOTYzMzg2MTUgMTYuOTY0NTY1NCw0LjcyNjk3NDMxIEwxNi45NjQ1NjU0LDQuNzI2OTc0MzEgTDE2Ljk2NDU2NTQsMTEuMzQ0NzM4MyBDMTYuOTY0NTY1NCwxMi4xMDgzMjY1IDE3LjU4MjcwODIsMTIuNzI2NDY5MyAxOC4zMDk5MzUsMTIuNzI2NDY5MyBDMTkuMDM3MTYxOCwxMi43MjY0NjkzIDE5LjY5MTY2NTksMTIuMTQ0Njg3OCAxOS42OTE2NjU5LDExLjM4MTA5OTcgTDE5LjY5MTY2NTksMTEuMzgxMDk5NyBMMTkuNjkxNjY1OSw0LjcyNjk3NDMxIEMxOS42OTE2NjU5LDMuOTk5NzQ3NDkgMTkuMDM3MTYxOCwzLjMwODg4MjAyIDE4LjMwOTkzNSwzLjMwODg4MjAyIFoiIGlkPSJGT1gtOS1LTVNQIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgKmsp as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKriv(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.673 58.484s-5.436 9.595-6.275 11.09c6.092.438 10.908 4.852 10.908 10.215 0 5.654-5.326 10.251-11.93 10.251-3.501 0-6.821-1.313-9.083-3.575-1.86-1.86-2.882-4.232-2.882-6.676 0-4.305 3.283-9.193 5.436-12.44l.802-1.24c2.043-3.101 4.45-7.296 4.487-7.333l.183-.292zm-31.775-.109c5.29-.584 10.251 2.408 11.601 6.931.365 1.204.51 2.371.51 3.466 0 3.94-2.079 6.968-4.048 9.302 0 0-3.247 3.794-4.378 5.144h8.28v6.786H42.356l.767-.912c.073-.146 9.703-12.076 14.117-17.84.548-.911.803-1.75.803-2.48 0-.51-.146-.985-.401-1.423-.876-1.423-2.444-1.897-3.393-1.897-1.35-.036-2.371.292-2.955 1.058-1.13 1.24-.912 3.21-.912 3.247l.073.62h-7.369l.037-.62c.218-3.466 1.35-6.238 3.283-8.245 1.678-1.787 3.94-2.845 6.493-3.137zm24.479 17.62c-2.627 0-4.743 1.751-4.743 3.94s2.116 3.94 4.743 3.94c2.626 0 4.742-1.751 4.742-3.94 0-2.152-2.116-3.94-4.742-3.94zM75.808 37.8l1.97 3.466 1.97-3.466H85l-4.56 8.099 4.56 8.098h-5.29l-1.933-3.429-1.933 3.43h-5.29l4.596-8.1-4.596-8.098h5.253zm-10.908 0c4.451 0 8.1 3.612 8.1 8.099a8.08 8.08 0 01-8.1 8.098 8.08 8.08 0 01-8.098-8.098A8.08 8.08 0 0164.9 37.8zm-8.171 0l.292 4.414h-5.436v2.116h4.45v4.414h-4.45v5.253H46.66V37.8H56.73zm8.208 3.32c-.766 0-1.35.656-1.35 1.422v6.64c0 .766.62 1.386 1.35 1.386.73 0 1.386-.584 1.386-1.35v-6.676c0-.73-.657-1.422-1.386-1.422z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDI2PC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzgwLjAwMDAwMCwgLTgzMS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC0yNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzgwLjAwMDAwMCwgODMxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Mb2NhbC1TdGF0aW9ucy9GT1gtMjYtSG91c3Rvbi9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4yMDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00Mi40NzI3OTQ2LDIwLjY4NDQxMzQgQzQyLjQ3Mjc5NDYsMjAuNjg0NDEzNCAzNy4wMzcyMDgsMzAuMjc4NzcwOSAzNi4xOTgxNTc4LDMxLjc3NDQ2OTMgQzQyLjI5MDM5MjQsMzIuMjEyMjM0NiA0Ny4xMDU4MTE0LDM2LjYyNjM2ODcgNDcuMTA1ODExNCw0MS45ODg5OTQ0IEM0Ny4xMDU4MTE0LDQ3LjY0MzQ2MzcgNDEuNzc5NjY2MSw1Mi4yNCAzNS4xNzY3MDUyLDUyLjI0IEMzMS42NzQ1ODIzLDUyLjI0IDI4LjM1NDg2MTcsNTAuOTI2NzAzOSAyNi4wOTMwNzQsNDguNjY0OTE2MiBDMjQuMjMyNTcxMiw0Ni44MDQ0MTM0IDIzLjIxMTExODYsNDQuNDMzMTg0NCAyMy4yMTExMTg2LDQxLjk4ODk5NDQgQzIzLjIxMTExODYsMzcuNjg0MzAxNyAyNi40OTQzNTg5LDMyLjc5NTkyMTggMjguNjQ2NzA1MiwyOS41NDkxNjIgTDI4LjY0NjcwNTIsMjkuNTQ5MTYyIEwyOS40NDkyNzUxLDI4LjMwODgyNjggQzMxLjQ5MjE4MDEsMjUuMjA3OTg4OCAzMy44OTk4ODk2LDIxLjAxMjczNzQgMzMuOTM2MzcsMjAuOTc2MjU3IEwzMy45MzYzNywyMC45NzYyNTcgTDM0LjExODc3MjMsMjAuNjg0NDEzNCBaIE0xMC42OTgzMjU0LDIwLjU3NDk3MjEgQzE1Ljk4Nzk5MDIsMTkuOTkxMjg0OSAyMC45NDkzMzA5LDIyLjk4MjY4MTYgMjIuMjk5MTA3NSwyNy41MDYyNTcgQzIyLjY2MzkxMTksMjguNzEwMTExNyAyMi44MDk4MzM3LDI5Ljg3NzQ4NiAyMi44MDk4MzM3LDMwLjk3MTg5OTQgQzIyLjgwOTgzMzcsMzQuOTExNzg3NyAyMC43MzA0NDgzLDM3LjkzOTY2NDggMTguNzYwNTA0MSw0MC4yNzQ0MTM0IEMxOC43NjA1MDQxLDQwLjI3NDQxMzQgMTUuNTEzNzQ0Myw0NC4wNjgzNzk5IDE0LjM4Mjg1MDUsNDUuNDE4MTU2NCBMMTQuMzgyODUwNSw0NS40MTgxNTY0IEwyMi42NjM5MTE5LDQ1LjQxODE1NjQgTDIyLjY2MzkxMTksNTIuMjAzNTE5NiBMMC4xNTU0NzYxOSw1Mi4yMDM1MTk2IEwwLjkyMTU2NTU3Niw1MS4yOTE1MDg0IEMwLjk5NDUyNjQ3LDUxLjE0NTU4NjYgMTAuNjI1MzY0NSwzOS4yMTY0ODA0IDE1LjAzOTQ5ODUsMzMuNDUyNTY5OCBDMTUuNTg2NzA1MiwzMi41NDA1NTg3IDE1Ljg0MjA2ODQsMzEuNzAxNTA4NCAxNS44NDIwNjg0LDMwLjk3MTg5OTQgQzE1Ljg0MjA2ODQsMzAuNDYxMTczMiAxNS42OTYxNDY2LDI5Ljk4NjkyNzQgMTUuNDQwNzgzNSwyOS41NDkxNjIgQzE0LjU2NTI1MjcsMjguMTI2NDI0NiAxMi45OTY1OTM1LDI3LjY1MjE3ODggMTIuMDQ4MTAxOSwyNy42NTIxNzg4IEMxMC42OTgzMjU0LDI3LjYxNTY5ODMgOS42NzY4NzI4NCwyNy45NDQwMjIzIDkuMDkzMTg1NjksMjguNzEwMTExNyBDNy45NjIyOTE4MywyOS45NTA0NDY5IDguMTgxMTc0NTEsMzEuOTIwMzkxMSA4LjE4MTE3NDUxLDMxLjk1Njg3MTUgTDguMTgxMTc0NTEsMzEuOTU2ODcxNSBMOC4yNTQxMzU0MSwzMi41NzcwMzkxIEwwLjg4NTA4NTEyOSwzMi41NzcwMzkxIEwwLjkyMTU2NTU3NiwzMS45NTY4NzE1IEMxLjE0MDQ0ODI2LDI4LjQ5MTIyOTEgMi4yNzEzNDIxMSwyNS43MTg3MTUxIDQuMjA0ODA1OCwyMy43MTIyOTA1IEM1Ljg4MjkwNjM2LDIxLjkyNDc0ODYgOC4xNDQ2OTQwNywyMC44NjY4MTU2IDEwLjY5ODMyNTQsMjAuNTc0OTcyMSBaIE0zNS4xNzY3MDUyLDM4LjE5NTAyNzkgQzMyLjU1MDExMzEsMzguMTk1MDI3OSAzMC40MzQyNDcxLDM5Ljk0NjA4OTQgMzAuNDM0MjQ3MSw0Mi4xMzQ5MTYyIEMzMC40MzQyNDcxLDQ0LjMyMzc0MyAzMi41NTAxMTMxLDQ2LjA3NDgwNDUgMzUuMTc2NzA1Miw0Ni4wNzQ4MDQ1IEMzNy44MDMyOTc0LDQ2LjA3NDgwNDUgMzkuOTE5MTYzMyw0NC4zMjM3NDMgMzkuOTE5MTYzMyw0Mi4xMzQ5MTYyIEMzOS45MTkxNjMzLDM5Ljk4MjU2OTggMzcuODAzMjk3NCwzOC4xOTUwMjc5IDM1LjE3NjcwNTIsMzguMTk1MDI3OSBaIE0zMy42MDgwNDYsMCBMMzUuNTc3OTkwMiwzLjQ2NTY0MjQ2IEwzNy41NDc5MzQzLDAgTDQyLjgwMTExODYsMCBMMzguMjQxMDYyOCw4LjA5ODY1OTIyIEw0Mi44MDExMTg2LDE2LjE5NzMxODQgTDM3LjUxMTQ1MzgsMTYuMTk3MzE4NCBMMzUuNTc3OTkwMiwxMi43NjgxNTY0IEwzMy42NDQ1MjY1LDE2LjE5NzMxODQgTDI4LjM1NDg2MTcsMTYuMTk3MzE4NCBMMzIuOTUxMzk4LDguMDk4NjU5MjIgTDI4LjM1NDg2MTcsMCBMMzMuNjA4MDQ2LDAgWiBNMjIuNzAwMzkyNCwwIEMyNy4xNTEwMDY5LDAgMzAuNzk5MDUxNiwzLjYxMTU2NDI1IDMwLjc5OTA1MTYsOC4wOTg2NTkyMiBDMzAuNzk5MDUxNiwxMi41ODU3NTQyIDI3LjE4NzQ4NzQsMTYuMTk3MzE4NCAyMi43MDAzOTI0LDE2LjE5NzMxODQgQzE4LjIxMzI5NzQsMTYuMTk3MzE4NCAxNC42MDE3MzMyLDEyLjU4NTc1NDIgMTQuNjAxNzMzMiw4LjA5ODY1OTIyIEMxNC42MDE3MzMyLDMuNjExNTY0MjUgMTguMjEzMjk3NCwwIDIyLjcwMDM5MjQsMCBaIE0xNC41Mjg3NzIzLDAgTDE0LjgyMDYxNTksNC40MTQxMzQwOCBMOS4zODUwMjkyNiw0LjQxNDEzNDA4IEw5LjM4NTAyOTI2LDYuNTMgTDEzLjgzNTY0MzgsNi41MyBMMTMuODM1NjQzOCwxMC45NDQxMzQxIEw5LjM4NTAyOTI2LDEwLjk0NDEzNDEgTDkuMzg1MDI5MjYsMTYuMTk3MzE4NCBMNC40NjAxNjg5MywxNi4xOTczMTg0IEw0LjQ2MDE2ODkzLDAgTDE0LjUyODc3MjMsMCBaIE0yMi43MzY4NzI4LDMuMzE5NzIwNjcgQzIxLjk3MDc4MzUsMy4zMTk3MjA2NyAyMS4zODcwOTYzLDMuOTc2MzY4NzIgMjEuMzg3MDk2Myw0Ljc0MjQ1ODEgTDIxLjM4NzA5NjMsNC43NDI0NTgxIEwyMS4zODcwOTYzLDExLjM4MTg5OTQgQzIxLjM4NzA5NjMsMTIuMTQ3OTg4OCAyMi4wMDcyNjM5LDEyLjc2ODE1NjQgMjIuNzM2ODcyOCwxMi43NjgxNTY0IEMyMy40NjY0ODE4LDEyLjc2ODE1NjQgMjQuMTIzMTI5OCwxMi4xODQ0NjkzIDI0LjEyMzEyOTgsMTEuNDE4Mzc5OSBMMjQuMTIzMTI5OCwxMS40MTgzNzk5IEwyNC4xMjMxMjk4LDQuNzQyNDU4MSBDMjQuMTIzMTI5OCw0LjAxMjg0OTE2IDIzLjQ2NjQ4MTgsMy4zMTk3MjA2NyAyMi43MzY4NzI4LDMuMzE5NzIwNjcgWiIgaWQ9IkZPWC0yNi1Ib3VzdG9uIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgKriv as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKsaz(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.378 58.052c8.495.036 15.386 8.13 15.386 18.074 0 9.98-6.891 18.074-15.386 18.074-8.494 0-15.385-8.093-15.385-18.074 0-9.98 6.89-18.074 15.385-18.074zm-24.827.617l7 .036v34.77h-8.933V71.19H42.28v-6.206c4.995-.436 5.542-3.92 6.27-6.315zm24.754 6.968c-1.64 0-2.916 1.161-3.026 2.25v16.55c.146 1.053 1.386 2.178 3.026 2.178 1.605 0 2.844-1.125 2.99-2.178V68.214h.036v-.327c-.072-1.052-1.348-2.25-3.026-2.25zM74.91 37.8l1.968 3.448 1.969-3.448h5.25l-4.557 8.057 4.557 8.057H78.81l-1.933-3.411-1.932 3.411H69.66l4.593-8.057L69.66 37.8h5.25zm-10.901 0c4.448 0 8.093 3.593 8.093 8.057s-3.609 8.057-8.093 8.057c-4.485 0-8.094-3.593-8.094-8.057s3.61-8.057 8.094-8.057zm-8.167 0l.292 4.392h-5.432v2.105h4.448v4.391h-4.448v5.226H45.78V37.8h10.062zm8.203 3.303c-.765 0-1.349.653-1.349 1.415v6.606c0 .762.62 1.379 1.35 1.379.728 0 1.385-.581 1.385-1.343v-6.642c0-.726-.657-1.415-1.386-1.415z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDEwPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTIwLjAwMDAwMCwgLTY5MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTIwLjAwMDAwMCwgNjkxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Mb2NhbC1TdGF0aW9ucy9GT1gtMTAtUGhvZW5peC9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4yODAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4wOTgzODQsMjAuMjUxNzM3NSBDMzkuNTkzMDE4NywyMC4yODgwMzA5IDQ2LjQ4MzUxNjUsMjguMzgxNDY3MiA0Ni40ODM1MTY1LDM4LjMyNTg2ODcgQzQ2LjQ4MzUxNjUsNDguMzA2NTYzNyAzOS41OTMwMTg3LDU2LjQgMzEuMDk4Mzg0LDU2LjQgQzIyLjYwMzc0OTIsNTYuNCAxNS43MTMyNTE1LDQ4LjMwNjU2MzcgMTUuNzEzMjUxNSwzOC4zMjU4Njg3IEMxNS43MTMyNTE1LDI4LjM0NTE3MzcgMjIuNjAzNzQ5MiwyMC4yNTE3Mzc1IDMxLjA5ODM4NCwyMC4yNTE3Mzc1IFogTTYuMjcwNzE3NTIsMjAuODY4NzI1OSBMMTMuMjcwNTg4MiwyMC45MDUwMTkzIEwxMy4yNzA1ODgyLDU1LjY3NDEzMTMgTDQuMzM4NDYxNTQsNTUuNjc0MTMxMyBMNC4zMzg0NjE1NCwzMy4zODk5NjE0IEwwLDMzLjM4OTk2MTQgTDAsMjcuMTgzNzgzOCBDNC45OTQ2OTk0MiwyNi43NDgyNjI1IDUuNTQxNTY0MzIsMjMuMjY0MDkyNyA2LjI3MDcxNzUyLDIwLjg2ODcyNTkgTDYuMjcwNzE3NTIsMjAuODY4NzI1OSBaIE0zMS4wMjU0Njg2LDI3LjgzNzA2NTYgQzI5LjM4NDg3MzksMjcuODM3MDY1NiAyOC4xMDg4NTU5LDI4Ljk5ODQ1NTYgMjcuOTk5NDgyOSwzMC4wODcyNTg3IEwyNy45OTk0ODI5LDQ2LjYzNzA2NTYgQzI4LjE0NTMxMzUsNDcuNjg5NTc1MyAyOS4zODQ4NzM5LDQ4LjgxNDY3MTggMzEuMDI1NDY4Niw0OC44MTQ2NzE4IEMzMi42Mjk2MDU3LDQ4LjgxNDY3MTggMzMuODY5MTY2MSw0Ny42ODk1NzUzIDM0LjAxNDk5NjgsNDYuNjM3MDY1NiBMMzQuMDE0OTk2OCwzMC40MTM4OTk2IEwzNC4wNTE0NTQ0LDMwLjQxMzg5OTYgTDM0LjA1MTQ1NDQsMzAuMDg3MjU4NyBDMzMuOTc4NTM5MSwyOS4wMzQ3NDkgMzIuNzAyNTIxLDI3LjgzNzA2NTYgMzEuMDI1NDY4NiwyNy44MzcwNjU2IFogTTMyLjYyOTYwNTcsLTYuMDQxOTE2NjZlLTEzIEwzNC41OTgzMTkzLDMuNDQ3ODc2NDUgTDM2LjU2NzAzMywtNi4wNDE5MTY2NmUtMTMgTDQxLjgxNjkzNiwtNi4wNDE5MTY2NmUtMTMgTDM3LjI1OTcyODUsOC4wNTcxNDI4NiBMNDEuODE2OTM2LDE2LjExNDI4NTcgTDM2LjUzMDU3NTMsMTYuMTE0Mjg1NyBMMzQuNTk4MzE5MywxMi43MDI3MDI3IEwzMi42NjYwNjMzLDE2LjExNDI4NTcgTDI3LjM3OTcwMjcsMTYuMTE0Mjg1NyBMMzEuOTczMzY3OCw4LjA1NzE0Mjg2IEwyNy4zNzk3MDI3LC02LjA0MTkxNjY2ZS0xMyBMMzIuNjI5NjA1NywtNi4wNDE5MTY2NmUtMTMgWiBNMjEuNzI4NzY1NCwtNi4wNDE5MTY2NmUtMTMgQzI2LjE3NjU5OTksLTYuMDQxOTE2NjZlLTEzIDI5LjgyMjM2NTksMy41OTMwNTAxOSAyOS44MjIzNjU5LDguMDU3MTQyODYgQzI5LjgyMjM2NTksMTIuNTIxMjM1NSAyNi4yMTMwNTc1LDE2LjExNDI4NTcgMjEuNzI4NzY1NCwxNi4xMTQyODU3IEMxNy4yNDQ0NzMyLDE2LjExNDI4NTcgMTMuNjM1MTY0OCwxMi41MjEyMzU1IDEzLjYzNTE2NDgsOC4wNTcxNDI4NiBDMTMuNjM1MTY0OCwzLjU5MzA1MDE5IDE3LjI0NDQ3MzIsLTYuMDQxOTE2NjZlLTEzIDIxLjcyODc2NTQsLTYuMDQxOTE2NjZlLTEzIFogTTEzLjU2MjI0OTUsLTYuMDQxOTE2NjZlLTEzIEwxMy44NTM5MTA4LDQuMzkxNTA1NzkgTDguNDIxNzE5NDYsNC4zOTE1MDU3OSBMOC40MjE3MTk0Niw2LjQ5NjUyNTEgTDEyLjg2OTU1NCw2LjQ5NjUyNTEgTDEyLjg2OTU1NCwxMC44ODgwMzA5IEw4LjQyMTcxOTQ2LDEwLjg4ODAzMDkgTDguNDIxNzE5NDYsMTYuMTE0Mjg1NyBMMy40OTk5MzUzNiwxNi4xMTQyODU3IEwzLjQ5OTkzNTM2LC02LjA0MTkxNjY2ZS0xMyBMMTMuNTYyMjQ5NSwtNi4wNDE5MTY2NmUtMTMgWiBNMjEuNzY1MjIzLDMuMzAyNzAyNyBDMjAuOTk5NjEyMiwzLjMwMjcwMjcgMjAuNDE2Mjg5NiwzLjk1NTk4NDU2IDIwLjQxNjI4OTYsNC43MTgxNDY3MiBMMjAuNDE2Mjg5Niw0LjcxODE0NjcyIEwyMC40MTYyODk2LDExLjMyMzU1MjEgQzIwLjQxNjI4OTYsMTIuMDg1NzE0MyAyMS4wMzYwNjk4LDEyLjcwMjcwMjcgMjEuNzY1MjIzLDEyLjcwMjcwMjcgQzIyLjQ5NDM3NjIsMTIuNzAyNzAyNyAyMy4xNTA2MTQxLDEyLjEyMjAwNzcgMjMuMTUwNjE0MSwxMS4zNTk4NDU2IEwyMy4xNTA2MTQxLDExLjM1OTg0NTYgTDIzLjE1MDYxNDEsNC43MTgxNDY3MiBDMjMuMTUwNjE0MSwzLjk5MjI3Nzk5IDIyLjQ5NDM3NjIsMy4zMDI3MDI3IDIxLjc2NTIyMywzLjMwMjcwMjcgWiIgaWQ9IkZPWC0xMC1QaG9lbml4Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgKsaz as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKtbc(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.839 58.74L62.919 93.8H50.626l13.39-22.51c.291-.474 1.64-2.736 1.64-2.772l.33-.584h-3.797c-1.322.003-2.625.01-3.135.037l-9.924.292V58.74h33.71zM75.105 37.8l1.97 3.466 1.97-3.466h5.253l-4.56 8.099 4.56 8.099h-5.29l-1.933-3.43-1.934 3.43h-5.29l4.597-8.099-4.597-8.099h5.254zm-10.908 0c4.45 0 8.099 3.612 8.099 8.099a8.08 8.08 0 01-8.1 8.099 8.08 8.08 0 01-8.098-8.099 8.08 8.08 0 018.099-8.099zm-8.172 0l.291 4.414h-5.435v2.116h4.45v4.415h-4.45v5.253h-4.925V37.8h10.069zm8.208 3.32c-.766 0-1.35.657-1.35 1.423v6.64c0 .766.62 1.386 1.35 1.386.73 0 1.386-.584 1.386-1.35v-6.676c0-.73-.656-1.423-1.386-1.423z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDc8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNDAuMDAwMDAwLCAtNjkxLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iRm94LTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0MC4wMDAwMDAsIDY5MS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvQ29tcG9uZW50cy9fQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iQ29udGFpbmVyIiBjeD0iNDAiIGN5PSI0MCIgcj0iNDAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLTctQXVzdGluL1N0YWNrZWQvV2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLjgwMDAwMCwgMTIuODAwMDAwKSIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTM3LjAzODk0MzIsMjAuOTQwNzE2NiBMMTcuMTE5NzI0OSw1NiBMNC44MjUyNjI0LDU2IEwxOC4yMTQxODc1LDMzLjQ5MDU1MzcgQzE4LjUwNjA0NDIsMzMuMDE2Mjg2NiAxOS44NTU4ODEzLDMwLjc1NDM5NzQgMTkuODU1ODgxMywzMC43MTc5MTUzIEwxOS44NTU4ODEzLDMwLjcxNzkxNTMgTDIwLjE4NDIyMDEsMzAuMTM0MjAyIEwxNi4zODgyMzIzLDMwLjEzNDg2NjggQzE1LjA2NjQyMDIsMzAuMTM2NzI4NCAxMy43NjMzNzMxLDMwLjE0MzgwMjUgMTMuMjUyNjI0LDMwLjE3MDY4NCBMMTMuMjUyNjI0LDMwLjE3MDY4NCBMMy4zMjk0OTY5MiwzMC40NjI1NDA3IEwzLjMyOTQ5NjkyLDIwLjk0MDcxNjYgTDM3LjAzODk0MzIsMjAuOTQwNzE2NiBaIE0yOS4zMDQ3NDEyLDEuNzc2MzU2ODRlLTE1IEwzMS4yNzQ3NzM4LDMuNDY1Nzk4MDUgTDMzLjI0NDgwNjQsMS43NzYzNTY4NGUtMTUgTDM4LjQ5ODIyNjYsMS43NzYzNTY4NGUtMTUgTDMzLjkzNzk2Niw4LjA5OTAyMjggTDM4LjQ5ODIyNjYsMTYuMTk4MDQ1NiBMMzMuMjA4MzI0MywxNi4xOTgwNDU2IEwzMS4yNzQ3NzM4LDEyLjc2ODcyOTYgTDI5LjM0MTIyMzMsMTYuMTk4MDQ1NiBMMjQuMDUxMzIxLDE2LjE5ODA0NTYgTDI4LjY0ODA2MzcsOC4wOTkwMjI4IEwyNC4wNTEzMjEsMS43NzYzNTY4NGUtMTUgTDI5LjMwNDc0MTIsMS43NzYzNTY4NGUtMTUgWiBNMTguMzk2NTk3OSwxLjc3NjM1Njg0ZS0xNSBDMjIuODQ3NDEyMiwxLjc3NjM1Njg0ZS0xNSAyNi40OTU2MjA3LDMuNjExNzI2MzggMjYuNDk1NjIwNyw4LjA5OTAyMjggQzI2LjQ5NTYyMDcsMTIuNTg2MzE5MiAyMi44ODM4OTQzLDE2LjE5ODA0NTYgMTguMzk2NTk3OSwxNi4xOTgwNDU2IEMxMy45MDkzMDE1LDE2LjE5ODA0NTYgMTAuMjk3NTc1MSwxMi41ODYzMTkyIDEwLjI5NzU3NTEsOC4wOTkwMjI4IEMxMC4yOTc1NzUxLDMuNjExNzI2MzggMTMuOTA5MzAxNSwxLjc3NjM1Njg0ZS0xNSAxOC4zOTY1OTc5LDEuNzc2MzU2ODRlLTE1IFogTTEwLjIyNDYxMDksMS43NzYzNTY4NGUtMTUgTDEwLjUxNjQ2NzYsNC40MTQzMzIyNSBMNS4wODA2MzY5OSw0LjQxNDMzMjI1IEw1LjA4MDYzNjk5LDYuNTMwMjkzMTYgTDkuNTMxNDUxMzIsNi41MzAyOTMxNiBMOS41MzE0NTEzMiwxMC45NDQ2MjU0IEw1LjA4MDYzNjk5LDEwLjk0NDYyNTQgTDUuMDgwNjM2OTksMTYuMTk4MDQ1NiBMMC4xNTU1NTU1NTYsMTYuMTk4MDQ1NiBMMC4xNTU1NTU1NTYsMS43NzYzNTY4NGUtMTUgTDEwLjIyNDYxMDksMS43NzYzNTY4NGUtMTUgWiBNMTguNDMzMDgsMy4zMTk4Njk3MSBDMTcuNjY2OTU2MiwzLjMxOTg2OTcxIDE3LjA4MzI0MjksMy45NzY1NDcyMyAxNy4wODMyNDI5LDQuNzQyNjcxMDEgTDE3LjA4MzI0MjksNC43NDI2NzEwMSBMMTcuMDgzMjQyOSwxMS4zODI0MTA0IEMxNy4wODMyNDI5LDEyLjE0ODUzNDIgMTcuNzAzNDM4MywxMi43Njg3Mjk2IDE4LjQzMzA4LDEyLjc2ODcyOTYgQzE5LjE2MjcyMTcsMTIuNzY4NzI5NiAxOS44MTkzOTkyLDEyLjE4NTAxNjMgMTkuODE5Mzk5MiwxMS40MTg4OTI1IEwxOS44MTkzOTkyLDExLjQxODg5MjUgTDE5LjgxOTM5OTIsNC43NDI2NzEwMSBDMTkuODE5Mzk5Miw0LjAxMzAyOTMyIDE5LjE2MjcyMTcsMy4zMTk4Njk3MSAxOC40MzMwOCwzLjMxOTg2OTcxIFoiIGlkPSJGT1gtNy1BdXN0aW4iPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgKtbc as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKttv(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\",\n fill: \"none\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.321 58.777V93.8h-9.449V69.393H48.4V63.63s.693.037 1.678.037c1.24 0 2.955-.365 4.305-1.642 1.532-1.496 1.642-3.247 1.642-3.247h7.296zm17.876 0V93.8h-9.449V69.393h-5.472V63.63s.693.037 1.678.037c1.24 0 2.992-.365 4.305-1.642 1.532-1.496 1.642-3.247 1.642-3.247h7.296zM75.105 37.8l1.97 3.466 1.97-3.466h5.253l-4.56 8.099 4.56 8.099h-5.29l-1.933-3.43-1.934 3.43h-5.29l4.597-8.099-4.597-8.099h5.254zm-10.908 0c4.45 0 8.099 3.612 8.099 8.099a8.08 8.08 0 01-8.1 8.099 8.08 8.08 0 01-8.098-8.099 8.08 8.08 0 018.099-8.099zm-8.172 0l.291 4.414h-5.435v2.116h4.45v4.415h-4.45v5.253h-4.925V37.8h10.069zm8.208 3.32c-.766 0-1.35.657-1.35 1.423v6.64c0 .766.62 1.386 1.35 1.386.73 0 1.386-.584 1.386-1.35v-6.676c0-.73-.656-1.423-1.386-1.423z\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2aWV3Qm94PSIwIDAgMTMwIDEzMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT5Gb3ggMTE8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MjAuMDAwMDAwLCAtNDExLjAwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgIDxnIGlkPSJGb3gtMTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUyMC4wMDAwMDAsIDQxMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iRXhwb3J0YWJsZS1DaGFubmVsLUxvZ28iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1LjAwMDAwMCwgMjUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ29zL0xvY2FsLVN0YXRpb25zL0ZPWC0xMS1Mb3MtQW5nZWxlcy9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMC44MDAwMDAsIDEyLjgwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTcuNTIxMDI3OSwyMC45NzcxOTg3IEwxNy41MjEwMjc5LDU2IEw4LjA3MjE2NzkzLDU2IEw4LjA3MjE2NzkzLDMxLjU5MzQ4NTMgTDIuNTk5ODU1MjMsMzEuNTkzNDg1MyBMMi41OTk4NTUyMywzMS41OTM0ODUzIEwyLjU5OTg1NTIzLDI1LjgyOTMxNiBDMi41OTk4NTUyMywyNS44MjkzMTYgMy4yOTMwMTQ4NCwyNS44NjU3OTggNC4yNzgwMzExMywyNS44NjU3OTggQzUuNTE4NDIyMDEsMjUuODY1Nzk4IDcuMjMzMDc5OTksMjUuNTAwOTc3MiA4LjU4MjkxNzEyLDI0LjIyNDEwNDIgQzEwLjExNTE2NDcsMjIuNzI4MzM4OCAxMC4yMjQ2MTA5LDIwLjk3NzE5ODcgMTAuMjI0NjEwOSwyMC45NzcxOTg3IEwxMC4yMjQ2MTA5LDIwLjk3NzE5ODcgTDE3LjUyMTAyNzksMjAuOTc3MTk4NyBaIE0zNS4zOTcyNDk0LDIwLjk3NzE5ODcgTDM1LjM5NzI0OTQsNTYgTDI1Ljk0ODM4OTQsNTYgTDI1Ljk0ODM4OTQsMzEuNTkzNDg1MyBMMjAuNDc2MDc2NywzMS41OTM0ODUzIEwyMC40NzYwNzY3LDMxLjU5MzQ4NTMgTDIwLjQ3NjA3NjcsMjUuODI5MzE2IEMyMC40NzYwNzY3LDI1LjgyOTMxNiAyMS4xNjkyMzYzLDI1Ljg2NTc5OCAyMi4xNTQyNTI2LDI1Ljg2NTc5OCBDMjMuMzk0NjQzNSwyNS44NjU3OTggMjUuMTQ1NzgzNiwyNS41MDA5NzcyIDI2LjQ1OTEzODYsMjQuMjI0MTA0MiBDMjcuOTkxMzg2MiwyMi43MjgzMzg4IDI4LjEwMDgzMjQsMjAuOTc3MTk4NyAyOC4xMDA4MzI0LDIwLjk3NzE5ODcgTDI4LjEwMDgzMjQsMjAuOTc3MTk4NyBMMzUuMzk3MjQ5NCwyMC45NzcxOTg3IFogTTI5LjMwNDc0MTIsLTYuMDcxNTg3NjhlLTEzIEwzMS4yNzQ3NzM4LDMuNDY1Nzk4MDUgTDMzLjI0NDgwNjQsLTYuMDcxNTg3NjhlLTEzIEwzOC40OTgyMjY2LC02LjA3MTU4NzY4ZS0xMyBMMzMuOTM3OTY2LDguMDk5MDIyOCBMMzguNDk4MjI2NiwxNi4xOTgwNDU2IEwzMy4yMDgzMjQzLDE2LjE5ODA0NTYgTDMxLjI3NDc3MzgsMTIuNzY4NzI5NiBMMjkuMzQxMjIzMywxNi4xOTgwNDU2IEwyNC4wNTEzMjEsMTYuMTk4MDQ1NiBMMjguNjQ4MDYzNyw4LjA5OTAyMjggTDI0LjA1MTMyMSwtNi4wNzE1ODc2OGUtMTMgTDI5LjMwNDc0MTIsLTYuMDcxNTg3NjhlLTEzIFogTTE4LjM5NjU5NzksLTYuMDcxNTg3NjhlLTEzIEMyMi44NDc0MTIyLC02LjA3MTU4NzY4ZS0xMyAyNi40OTU2MjA3LDMuNjExNzI2MzggMjYuNDk1NjIwNyw4LjA5OTAyMjggQzI2LjQ5NTYyMDcsMTIuNTg2MzE5MiAyMi44ODM4OTQzLDE2LjE5ODA0NTYgMTguMzk2NTk3OSwxNi4xOTgwNDU2IEMxMy45MDkzMDE1LDE2LjE5ODA0NTYgMTAuMjk3NTc1MSwxMi41ODYzMTkyIDEwLjI5NzU3NTEsOC4wOTkwMjI4IEMxMC4yOTc1NzUxLDMuNjExNzI2MzggMTMuOTA5MzAxNSwtNi4wNzE1ODc2OGUtMTMgMTguMzk2NTk3OSwtNi4wNzE1ODc2OGUtMTMgWiBNMTAuMjI0NjEwOSwtNi4wNzE1ODc2OGUtMTMgTDEwLjUxNjQ2NzYsNC40MTQzMzIyNSBMNS4wODA2MzY5OSw0LjQxNDMzMjI1IEw1LjA4MDYzNjk5LDYuNTMwMjkzMTYgTDkuNTMxNDUxMzIsNi41MzAyOTMxNiBMOS41MzE0NTEzMiwxMC45NDQ2MjU0IEw1LjA4MDYzNjk5LDEwLjk0NDYyNTQgTDUuMDgwNjM2OTksMTYuMTk4MDQ1NiBMMC4xNTU1NTU1NTYsMTYuMTk4MDQ1NiBMMC4xNTU1NTU1NTYsLTYuMDcxNTg3NjhlLTEzIEwxMC4yMjQ2MTA5LC02LjA3MTU4NzY4ZS0xMyBaIE0xOC40MzMwOCwzLjMxOTg2OTcxIEMxNy42NjY5NTYyLDMuMzE5ODY5NzEgMTcuMDgzMjQyOSwzLjk3NjU0NzIzIDE3LjA4MzI0MjksNC43NDI2NzEwMSBMMTcuMDgzMjQyOSw0Ljc0MjY3MTAxIEwxNy4wODMyNDI5LDExLjM4MjQxMDQgQzE3LjA4MzI0MjksMTIuMTQ4NTM0MiAxNy43MDM0MzgzLDEyLjc2ODcyOTYgMTguNDMzMDgsMTIuNzY4NzI5NiBDMTkuMTYyNzIxNywxMi43Njg3Mjk2IDE5LjgxOTM5OTIsMTIuMTg1MDE2MyAxOS44MTkzOTkyLDExLjQxODg5MjUgTDE5LjgxOTM5OTIsMTEuNDE4ODkyNSBMMTkuODE5Mzk5Miw0Ljc0MjY3MTAxIEMxOS44MTkzOTkyLDQuMDEzMDI5MzIgMTkuMTYyNzIxNywzLjMxOTg2OTcxIDE4LjQzMzA4LDMuMzE5ODY5NzEgWiIgaWQ9IkZPWC0xMS1Mb3MtQW5nZWxlcyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgKttv as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKtvu(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.338 58.882c1.47 0 2.357.904 2.694 1.627.857 1.897-.245 2.981-.857 4.005-1.5 2.56-11.48 16.174-11.48 16.174l30.767.03C79.053 85.778 72.472 89 65.154 89 51.807 89 41 78.368 41 65.237c0-2.198.306-4.337.888-6.355zM64.968 41C78.233 41 89 51.87 89 65.297c0 2.002-.244 3.942-.701 5.82H72.623s3.66-5.974 4.056-8.807c.58-3.91-.58-6.59-2.47-8.9-3.68-4.51-7.834-4.76-11.661-4.772H47.462A23.753 23.753 0 0164.967 41z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IEtUVlU8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MjAuMDAwMDAwLCAtOTcxLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iRm94LUtUVlUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUyMC4wMDAwMDAsIDk3MS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvQ29tcG9uZW50cy9fQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iQ29udGFpbmVyIiBjeD0iNDAiIGN5PSI0MCIgcj0iNDAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLUtUVlUvU3RhY2tlZC9XaGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYuMDAwMDAwLCAxNi4wMDAwMDApIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuMzM3OTE4LDE3Ljg4MjM1MjkgQzIyLjgwNzM4NzMsMTcuODgyMzUyOSAyMy42OTUxOTE2LDE4Ljc4NTg4MjQgMjQuMDMxOTQ1LDE5LjUwODcwNTkgQzI0Ljg4OTEzNTQsMjEuNDA2MTE3NiAyMy43ODcwMzM0LDIyLjQ5MDM1MjkgMjMuMTc0NzU0NiwyMy41MTQzNTI5IEMyMS42NzQ2NzE0LDI2LjA3NDM1MjkgMTEuNjk0NTI2MSwzOS42ODc1Mjk0IDExLjY5NDUyNjEsMzkuNjg3NTI5NCBMMTEuNjk0NTI2MSwzOS42ODc1Mjk0IEw0Mi40NjE1Mzg1LDM5LjcxNzY0NzEgQzM4LjA1MzEzMDcsNDQuNzc3NDExOCAzMS40NzExMzMsNDggMjQuMTU0NDAwOCw0OCBDMTAuODA2NzIxOCw0OCAxLjU5NTk4ODNlLTE0LDM3LjM2ODQ3MDYgMS41OTU5ODgzZS0xNCwyNC4yMzcxNzY1IEMxLjU5NTk4ODNlLTE0LDIyLjAzODU4ODIgMC4zMDYxMzk0MjcsMTkuOTAwMjM1MyAwLjg4NzgwNDMzNywxNy44ODIzNTI5IEwwLjg4NzgwNDMzNywxNy44ODIzNTI5IFogTTIzLjk2NzQ2ODcsLTcuNzQ0OTE1ODJlLTE0IEMzNy4yMzQxNTc5LC03Ljc0NDkxNTgyZS0xNCA0OCwxMC44NzA2ODQ1IDQ4LDI0LjI5NzM2NTYgQzQ4LDI2LjI5OTA0OTcgNDcuNzU2MDE0OSwyOC4yMzkxNDM1IDQ3LjI5ODU0MjksMzAuMTE3NjQ3MSBMNDcuMjk4NTQyOSwzMC4xMTc2NDcxIEwzMS42MjI1MDA4LDMwLjExNzY0NzEgQzMxLjYyMjUwMDgsMzAuMTE3NjQ3MSAzNS4yODIyNzcyLDI0LjE0MzM4OTkgMzUuNjc4NzUzLDIxLjMxMDIzNyBDMzYuMjU4MjE3NiwxNy4zOTkyNTQyIDM1LjA5OTI4ODQsMTQuNzIwMDc3IDMzLjIwODQwMzksMTIuNDEwNDQxNSBDMjkuNTI5MTYwNyw3Ljg5OTI4MTA1IDI1LjM3NDYzNTMsNy42NTA4NTY3IDIxLjU0Nzg3MDEsNy42Mzc4ODI4OSBMNi40NjE1Mzg0Niw3LjYzNzE5NDc2IEMxMC44MjI3NzE5LDIuOTI1NTM4MzEgMTcuMDQ0MzkxNywtNy43NDQ5MTU4MmUtMTQgMjMuOTY3NDY4NywtNy43NDQ5MTU4MmUtMTQgWiIgaWQ9IkZPWC1LVFZVIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgKtvu as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgNewsnow(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fill: \"currentColor\",\n fillRule: \"nonzero\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.932 80.044l-1.78.001-.003-.844h2.185l-.128-1.777-3.894-.001.003 6.461h1.828v-2.072l1.792-.001z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.398 80.658c-.004-1.742-1.394-3.151-3.091-3.143-1.709 0-3.083 1.417-3.08 3.16.006 1.737 1.39 3.142 3.097 3.139 1.698-.004 3.078-1.418 3.074-3.156zm-3.072 1.823a.526.526 0 01-.526-.532l-.002-2.582c-.001-.293.236-.558.525-.56a.567.567 0 01.544.559v2.589a.539.539 0 01-.541.526z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M92.059 77.421l-2.003.002-.758 1.386-.75-1.389-2.07.001 1.817 3.095-1.902 3.371 2.003.002.89-1.652.903 1.65h2.06l-1.957-3.38z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91.313 80.505l1.967 3.384h1.341V77.42h-1.537zM94.624 57.671V47.514H36.2l.003 10.18 58.42-.023zm-42.322-9.015h5.04v1.372h-3.39v1.83h3.357v1.35h-3.357v1.952h3.39v1.372h-5.04v-7.876zm-6.413 0l2.075 5.902 2.074-5.902h1.728L48.8 56.532h-1.684l-2.977-7.876h1.75zm-3.947 0h1.65v7.876h-1.65v-7.876zm-4.595 0h1.651v6.448h2.298v1.428h-3.95v-7.876zM36.203 77.422H76.32v6.464H36.203zM41.398 58.923h-5.193v17.294h5.07v-9.431l5.976 9.431h5.24V58.923h-5.093v9.455zM79.895 76.242l2.35-10.289 2.352 10.289h5.339l4.701-17.295h-5.215l-2.327 9.75-2.13-9.75h-5.437l-2.18 9.7-2.327-9.7h-5.24l4.8 17.295zM62.142 58.485c-5.007 0-9.06 4.137-9.06 9.242 0 5.103 4.053 9.24 9.06 9.24 4.993 0 9.05-4.137 9.05-9.24 0-5.105-4.056-9.242-9.05-9.242zm1.604 13.035c0 .866-.738 1.546-1.578 1.546-.848 0-1.543-.703-1.543-1.568l-.002-7.57c0-.866.696-1.64 1.545-1.64.84 0 1.58.774 1.58 1.64l-.002 7.592z\"\n })))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2aWV3Qm94PSIwIDAgMTMwIDEzMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT5MaXZlIE5vdzwvdGl0bGU+CiAgICA8ZyBpZD0iMTQ0MHB4LS0tRGVza3RvcC0tLU1vc3QtVXBkYXRlZCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IldlYl8xNDQwX0xpdmVUVl9OZXdDb21wb25lbnRzX0NoYW5uZWxfTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNDAuMDAwMDAwLCAtMTMxLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iTGl2ZS1Ob3ciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0MC4wMDAwMDAsIDEzMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEuMjAwMDAwLCAyMi40MDAwMDApIiBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJGb3gtTmV3cy1Ob3ciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLCAwLjExNDI3OSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDQuNzMyMjQ5MiAzMi41Mjk3ODQ0IDQyLjk1MjE3ODEgMzIuNTMxMTQwNSA0Mi45NDk0NjY3IDMxLjY4NjI5OTEgNDUuMTMzNTQ0NyAzMS42ODc2NTUyIDQ1LjAwNjEwNjIgMjkuOTA5ODI2OCA0MS4xMTI0NTUxIDI5LjkwODQ3MDcgNDEuMTE1MTY2NSAzNi4zNzAyMTkyIDQyLjk0MjY4OCAzNi4zNjg4NjMxIDQyLjk0MjY4OCAzNC4yOTgxMjAyIDQ0LjczNDk2MDYgMzQuMjk2NzY0MSI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUxLjE5NzcyNTUsMzMuMTQ0MDkxMyBDNTEuMTkzNjQ5NCwzMS40MDE1MjExIDQ5LjgwNDAyOCwyOS45OTI1NDggNDguMTA2NjU2NCwzMC4wMDA2NDk1IEM0Ni4zOTg0MzksMzAuMDAwNjQ5NSA0NS4wMjM3MzA3LDMxLjQxNzc5NDEgNDUuMDI3Nzg4OSwzMy4xNjAzNjQzIEM0NS4wMzMyMjA4LDM0Ljg5NzUxMDEgNDYuNDE2MDYzNSwzNi4zMDI0MTQ5IDQ4LjEyNDI4MDksMzYuMjk5NzA2NyBDNDkuODIxNjUyNSwzNi4yOTU2MzQ1IDUxLjIwMTc4MzcsMzQuODgxMjM3MSA1MS4xOTc3MjU1LDMzLjE0NDA5MTMgWiBNNDguMTI1NjM2NiwzNC45NjY2OTM1IEM0Ny44MzY4NjY1LDM0Ljk2OTM4MjYgNDcuNTk5NjE0MSwzNC43MzIwNjc2IDQ3LjU5OTYxNDEsMzQuNDM1MDg0OSBMNDcuNTk4MjUyNiwzMS44NTMwOTc2IEM0Ny41OTY5MDI3LDMxLjU2MDE4MzEgNDcuODM0MTU1MSwzMS4yOTQzOTAzIDQ4LjEyMjkyNTIsMzEuMjkzMDM0MiBDNDguNDE0NDA2NywzMS4yOTQzOTAzIDQ4LjY2NjU3MjEsMzEuNTU2MTE0OSA0OC42NjY1NzIxLDMxLjg1MTc0MTYgTDQ4LjY2NjU3MjEsMzQuNDQwNTA5MiBDNDguNjY2NTcyMSwzNC43MzM0MjM3IDQ4LjQxNDQwNjcsMzQuOTY2NjkzNSA0OC4xMjU2MzY2LDM0Ljk2NjY5MzUgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1NS44NTg3MDk4IDI5LjkwNzExNDYgNTMuODU2Mjk5NCAyOS45MDg0NzA3IDUzLjA5ODQ0NzQgMzEuMjk0MzkwMyA1Mi4zNDczNzQgMjkuOTA1NzU4NSA1MC4yNzg1MzI5IDI5LjkwNzExNDYgNTIuMDk1MjA4NSAzMy4wMDE3MDIzIDUwLjE5MzEyMiAzNi4zNzI5MzE0IDUyLjE5NTUzMjQgMzYuMzc0Mjg3NSA1My4wODYyNDU4IDM0LjcyMjU3NSA1My45ODkxNjA3IDM2LjM3MjkzMTQgNTYuMDQ5ODY3NSAzNi4zNzI5MzE0IDU0LjA5MjE5NjEgMzIuOTkyMjA5NyI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNTUuMTEzMDU5MyAzMi45OTA4NTM2IDU3LjA4MDIyMDggMzYuMzc0Mjg3NSA1OC40MjEwMzU5IDM2LjM3NDI4NzUgNTguNDIxMDM1OSAyOS45MDcxMTQ2IDU2Ljg4MzY0MDIgMjkuOTA3MTE0NiI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTU4LjQyMzc0NzQsMTAuMTU3MDgyMSBMNTguNDIzNzQ3NCwwIEwwLDAgTDAuMDAyNzExNDU2MjMsMTAuMTc4Nzc5NSBMNTguNDIzNzQ3NCwxMC4xNTcwODIxIFogTTE2LjEwMTk4MjgsMS4xNDE4MjQxOCBMMjEuMTQyNTgsMS4xNDE4MjQxOCBMMjEuMTQyNTgsMi41MTQxODI5NCBMMTcuNzUxOTAzOSwyLjUxNDE4Mjk0IEwxNy43NTE5MDM5LDQuMzQzNTQyNTggTDIxLjEwODY4NjgsNC4zNDM1NDI1OCBMMjEuMTA4Njg2OCw1LjY5Mjg0Nzg4IEwxNy43NTE5MDM5LDUuNjkyODQ3ODggTDE3Ljc1MTkwMzksNy42NDU2MTEzMyBMMjEuMTQyNTgsNy42NDU2MTEzMyBMMjEuMTQyNTgsOS4wMTc5NzAwOCBMMTYuMTAxOTgyOCw5LjAxNzk3MDA4IEwxNi4xMDE5ODI4LDEuMTQxODI0MTggWiBNOS42ODkzODg4NCwxLjE0MTgyNDE4IEwxMS43NjM2NTI5LDcuMDQzNTA5MjcgTDEzLjgzNzkxNjksMS4xNDE4MjQxOCBMMTUuNTY2NDcwMiwxLjE0MTgyNDE4IEwxMi42MDAxMzcxLDkuMDE3OTcwMDggTDEwLjkxNjMyMjgsOS4wMTc5NzAwOCBMNy45MzkxNDM4NCwxLjE0MTgyNDE4IEw5LjY4OTM4ODg0LDEuMTQxODI0MTggTDkuNjg5Mzg4ODQsMS4xNDE4MjQxOCBaIE01Ljc0MTUwODU3LDEuMTQxODI0MTggTDcuMzkyNzg1NDEsMS4xNDE4MjQxOCBMNy4zOTI3ODU0MSw5LjAxNzk3MDA4IEw1Ljc0MTUwODU3LDkuMDE3OTcwMDggTDUuNzQxNTA4NTcsMS4xNDE4MjQxOCBaIE0xLjE0Njk0NTk5LDEuMTQxODI0MTggTDIuNzk4MjIyODMsMS4xNDE4MjQxOCBMMi43OTgyMjI4Myw3LjU5MDAxMTgxIEw1LjA5NjE4MTk4LDcuNTkwMDExODEgTDUuMDk2MTgxOTgsOS4wMTc5NzAwOCBMMS4xNDY5NDU5OSw5LjAxNzk3MDA4IEwxLjE0Njk0NTk5LDEuMTQxODI0MTggWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlIiB4PSIwLjAwMjcxMTQ1NjIzIiB5PSIyOS45MDg0NzA3IiB3aWR0aD0iNDAuMTE3MzUwNyIgaGVpZ2h0PSI2LjQ2NDQ2MDY2Ij48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjE5Nzg2MTU5IDExLjQwODc0OTIgMC4wMDU0MjI5MTI0NiAxMS40MDg3NDkyIDAuMDA1NDIyOTEyNDYgMjguNzAyOTEwNSA1LjA3NTg0NjA2IDI4LjcwMjkxMDUgNS4wNzU4NDYwNiAxOS4yNzEzMzQzIDExLjA1MDUzOTkgMjguNzAyOTEwNSAxNi4yOTE3ODQ4IDI4LjcwMjkxMDUgMTYuMjkxNzg0OCAxMS40MDg3NDkyIDExLjE5ODMxNDIgMTEuNDA4NzQ5MiAxMS4xOTgzMTQyIDIwLjg2MzM3ODkiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjQzLjY5NTExNzEgMjguNzI3MzIgNDYuMDQ1OTQ5NyAxOC40Mzg2OTc2IDQ4LjM5Njc4MjIgMjguNzI3MzIgNTMuNzM1NjM5NiAyOC43MjczMiA1OC40MzczMDQ3IDExLjQzMzE1ODggNTMuMjIxODE4NiAxMS40MzMxNTg4IDUwLjg5NTM4OTIgMjEuMTgyMDU5MSA0OC43NjQxODQ2IDExLjQzMzE1ODggNDMuMzI3NzE0OCAxMS40MzMxNTg4IDQxLjE0NzcwNCAyMS4xMzMyNCAzOC44MjEyNzQ2IDExLjQzMzE1ODggMzMuNTgxMzg1NCAxMS40MzMxNTg4IDM4LjM4MDY2MjkgMjguNzI3MzIiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNS45NDE4NTc1LDEwLjk3MDczMzUgQzIwLjkzNTE1MzYsMTAuOTcwNzMzNSAxNi44ODI4ODIyLDE1LjEwODE1MTEgMTYuODgyODgyMiwyMC4yMTI0NTc4IEMxNi44ODI4ODIyLDI1LjMxNTQwODQgMjAuOTM1MTUzNiwyOS40NTI4MjU5IDI1Ljk0MTg1NzUsMjkuNDUyODI1OSBDMzAuOTM1MDA0MSwyOS40NTI4MjU5IDM0Ljk5MTM0MywyNS4zMTU0MDg0IDM0Ljk5MTM0MywyMC4yMTI0NTc4IEMzNC45OTI2OTg0LDE1LjEwODE1MTEgMzAuOTM2MzU5OSwxMC45NzA3MzM1IDI1Ljk0MTg1NzUsMTAuOTcwNzMzNSBaIE0yNy41NDU2ODM4LDI0LjAwNTQyOTUgQzI3LjU0NTY4MzgsMjQuODcxOTY4MyAyNi44MDgxNjc3LDI1LjU1MTM2NzMgMjUuOTY3NjE2MywyNS41NTEzNjczIEMyNS4xMjAyODYyLDI1LjU1MTM2NzMgMjQuNDI0Nzk3NywyNC44NDg5MTQ5IDI0LjQyNDc5NzcsMjMuOTgzNzMyMiBMMjQuNDIzNDQyLDE2LjQxNDA2MTYgQzI0LjQyMzQ0MiwxNS41NDc1MjI5IDI1LjExODkzMDUsMTQuNzczMTk3OSAyNS45Njc2MTYzLDE0Ljc3MzE5NzkgQzI2LjgwODE2NzcsMTQuNzczMTk3OSAyNy41NDgzOTUzLDE1LjU0NzUyMjkgMjcuNTQ4Mzk1MywxNi40MTQwNjE2IEwyNy41NDU2ODM4LDI0LjAwNTQyOTUgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgNewsnow as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWaga(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79.007 58.704l-1.277 7.66H62.956c-.146.511-.475 1.788-.766 2.955 1.203-.4 3.356-.73 7.186-.218 6.895.912 9.777 7.88 9.74 11.382 0 1.714-.291 4.997-2.115 7.843-2.299 3.539-6.202 5.326-11.601 5.326-6.494 0-10.032-2.736-11.856-5.034-2.007-2.517-2.445-4.998-2.445-5.108l-.11-.62 7.698-1.021.146.474c.511 1.569 2.554 4.268 6.786 4.268 3.757 0 5.764-3.356 5.764-5.764 0-2.298-1.934-5.545-6.202-5.545-4.195 0-5.728 2.992-5.8 3.101l-.146.328h-8.136l4.925-20.027h22.983zM75.104 37.8l1.97 3.466 1.97-3.466h5.253l-4.56 8.099 4.56 8.098h-5.29l-1.933-3.429-1.934 3.43h-5.29l4.597-8.1L69.85 37.8h5.254zm-10.908 0c4.45 0 8.099 3.612 8.099 8.099a8.08 8.08 0 01-8.099 8.098 8.08 8.08 0 01-8.099-8.098 8.08 8.08 0 018.099-8.099zm-8.172 0l.292 4.414H50.88v2.116h4.451v4.414h-4.45v5.253h-4.925V37.8h10.068zm8.208 3.32c-.766 0-1.35.656-1.35 1.423v6.639c0 .766.62 1.386 1.35 1.386.73 0 1.387-.583 1.387-1.35v-6.675c0-.73-.657-1.423-1.387-1.423z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDUgQXRsYW50YTwvdGl0bGU+CiAgICA8ZyBpZD0iMTQ0MHB4LS0tRGVza3RvcCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IldlYl8xNDQwX0xpdmVUVl9OZXdDb21wb25lbnRzX0NoYW5uZWxMb2dvcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM4MC4wMDAwMDAsIC01NTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJDZWxsL0NoYW5uZWwiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM4MC4wMDAwMDAsIDU1MS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvQ29tcG9uZW50cy9fQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iQ29udGFpbmVyIiBjeD0iNDAiIGN5PSI0MCIgcj0iNDAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLTUtQXRsYW50YS9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMC44MDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4yMDcxNzEyLDIwLjkwMzUwNTIgTDMxLjkzMDM0MjcsMjguNTY0NDc1NyBMMzEuOTMwMzQyNywyOC41NjQ0NzU3IEwxNy4xNTU2MTM5LDI4LjU2NDQ3NTcgQzE3LjAwOTY5MDcsMjkuMDc1MjA3MSAxNi42ODEzNjM0LDMwLjM1MjAzNTUgMTYuMzg5NTE2OSwzMS41MTk0MjE1IEMxNy41OTMzODM3LDMxLjExODEzMjYgMTkuNzQ1NzUxNiwzMC43ODk4MDUzIDIzLjU3NjIzNjgsMzEuMzAwNTM2NiBDMzAuNDcxMTEwMywzMi4yMTI1NTY5IDMzLjM1MzA5NDQsMzkuMTgwMzkyIDMzLjMxNjYxMzYsNDIuNjgyNTUgQzMzLjMxNjYxMzYsNDQuMzk3MTQ4MSAzMy4wMjQ3NjcxLDQ3LjY4MDQyMTIgMzEuMjAwNzI2NSw1MC41MjU5MjQ1IEMyOC45MDI0MzU0LDU0LjA2NDU2MzMgMjQuOTk4OTg4NSw1NS44NTIxMjMxIDE5LjU5OTgyODMsNTUuODUyMTIzMSBDMTMuMTA2MjQzOCw1NS44NTIxMjMxIDkuNTY3NjA1MDMsNTMuMTE2MDYyMiA3Ljc0MzU2NDQ0LDUwLjgxNzc3MSBDNS43MzcxMTk3OCw0OC4zMDA1OTUgNS4yOTkzNTAwNCw0NS44MTk4OTk4IDUuMjk5MzUwMDQsNDUuNzEwNDU3MyBMNS4yOTkzNTAwNCw0NS43MTA0NTczIEw1LjE4OTkwNzYsNDUuMDkwMjgzNSBMMTIuODg3MzU4OSw0NC4wNjg4MjA4IEwxMy4wMzMyODIyLDQ0LjU0MzA3MTQgQzEzLjU0NDAxMzUsNDYuMTExNzQ2MyAxNS41ODY5MzksNDguODExMzI2NCAxOS44MTg3MTMyLDQ4LjgxMTMyNjQgQzIzLjU3NjIzNjgsNDguODExMzI2NCAyNS41ODI2ODE1LDQ1LjQ1NTA5MTcgMjUuNTgyNjgxNSw0My4wNDczNTgxIEMyNS41ODI2ODE1LDQwLjc0OTA2NjkgMjMuNjQ5MTk4NCwzNy41MDIyNzQ3IDE5LjM4MDk0MzQsMzcuNTAyMjc0NyBDMTUuMTg1NjUwMSwzNy41MDIyNzQ3IDEzLjY1MzQ1Niw0MC40OTM3MDEyIDEzLjU4MDQ5NDMsNDAuNjAzMTQzNyBMMTMuNTgwNDk0Myw0MC42MDMxNDM3IEwxMy40MzQ1NzExLDQwLjkzMTQ3MSBMNS4yOTkzNTAwNCw0MC45MzE0NzEgTDEwLjIyNDI1OTYsMjAuOTAzNTA1MiBMMzMuMjA3MTcxMiwyMC45MDM1MDUyIFogTTI5LjMwMzcyNDMsNy4yMTIwMDg3N2UtMTQgTDMxLjI3MzY4ODEsMy40NjU2NzcxMyBMMzMuMjQzNjUyLDcuMjEyMDA4NzdlLTE0IEwzOC40OTY4ODg5LDcuMjEyMDA4NzdlLTE0IEwzMy45MzY3ODc0LDguMDk4NzQwMjUgTDM4LjQ5Njg4ODksMTYuMTk3NDgwNSBMMzMuMjA3MTcxMiwxNi4xOTc0ODA1IEwzMS4yNzM2ODgxLDEyLjc2ODI4NDIgTDI5LjM0MDIwNTEsMTYuMTk3NDgwNSBMMjQuMDUwNDg3NCwxNi4xOTc0ODA1IEwyOC42NDcwNjk3LDguMDk4NzQwMjUgTDI0LjA1MDQ4NzQsNy4yMTIwMDg3N2UtMTQgTDI5LjMwMzcyNDMsNy4yMTIwMDg3N2UtMTQgWiBNMTguMzk1OTYxNSw3LjM4OTY0NDQ1ZS0xNCBDMjIuODQ2NjIwNiw3LjM4OTY0NDQ1ZS0xNCAyNi40OTQ3MDE4LDMuNjExNjAwMzggMjYuNDk0NzAxOCw4LjA5ODc0MDI1IEMyNi40OTQ3MDE4LDEyLjU4NTg4MDEgMjIuODgzMTAxNCwxNi4xOTc0ODA1IDE4LjM5NTk2MTUsMTYuMTk3NDgwNSBDMTMuOTA4ODIxNywxNi4xOTc0ODA1IDEwLjI5NzIyMTMsMTIuNTg1ODgwMSAxMC4yOTcyMjEzLDguMDk4NzQwMjUgQzEwLjI5NzIyMTMsMy42MTE2MDAzOCAxMy45MDg4MjE3LDcuMzg5NjQ0NDVlLTE0IDE4LjM5NTk2MTUsNy4zODk2NDQ0NWUtMTQgWiBNMTAuMjI0MjU5Niw3LjIxMjAwODc3ZS0xNCBMMTAuNTE2MTA2MSw0LjQxNDE3ODI0IEw1LjA4MDQ2NTE3LDQuNDE0MTc4MjQgTDUuMDgwNDY1MTcsNi41MzAwNjUzMyBMOS41MzExMjQyMiw2LjUzMDA2NTMzIEw5LjUzMTEyNDIyLDEwLjk0NDI0MzYgTDUuMDgwNDY1MTcsMTAuOTQ0MjQzNiBMNS4wODA0NjUxNywxNi4xOTc0ODA1IEwwLjE1NTU1NTU1NiwxNi4xOTc0ODA1IEwwLjE1NTU1NTU1Niw3LjIxMjAwODc3ZS0xNCBMMTAuMjI0MjU5Niw3LjIxMjAwODc3ZS0xNCBaIE0xOC40MzI0NDIzLDMuMzE5NzUzODkgQzE3LjY2NjM0NTMsMy4zMTk3NTM4OSAxNy4wODI2NTIzLDMuOTc2NDA4NSAxNy4wODI2NTIzLDQuNzQyNTA1NTUgTDE3LjA4MjY1MjMsNC43NDI1MDU1NSBMMTcuMDgyNjUyMywxMS4zODIwMTMzIEMxNy4wODI2NTIzLDEyLjE0ODExMDQgMTcuNzAyODI2MSwxMi43NjgyODQyIDE4LjQzMjQ0MjMsMTIuNzY4Mjg0MiBDMTkuMTYyMDU4NiwxMi43NjgyODQyIDE5LjgxODcxMzIsMTIuMTg0NTkxMiAxOS44MTg3MTMyLDExLjQxODQ5NDEgTDE5LjgxODcxMzIsMTEuNDE4NDk0MSBMMTkuODE4NzEzMiw0Ljc0MjUwNTU1IEMxOS44MTg3MTMyLDQuMDEyODg5MzEgMTkuMTYyMDU4NiwzLjMxOTc1Mzg5IDE4LjQzMjQ0MjMsMy4zMTk3NTM4OSBaIiBpZD0iRk9YLTUtQXRsYW50YSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgWaga as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWfld(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.076 58.177l.411.009c3.574.11 5.981.948 7.987 2.844 2.042 1.897 3.318 4.304 3.318 7.148 0 1.568-.255 3.027-.875 4.413-.62 1.422-1.896 3.027-3.21 4.485-1.421 1.605-8.897 9.008-9.116 9.3H88.5l-3.866 6.856H63.848l.073-.62c.219-1.86.62-2.845 1.459-4.559-1.678 2.99-5.872 5.507-10.722 5.507a12.9 12.9 0 01-9.664-4.376s-1.641-1.933-2.115-3.319l4.011-6.491c-.073 2.516 1.641 5.142 4.158 6.418 1.385.693 2.844.912 4.194.73 2.078-.292 3.938-1.46 4.886-3.392a6.33 6.33 0 00.474-4.23 7.094 7.094 0 00-3.72-4.632c-2.26-1.13-5.068-.984-7.001.183l5.215-8.862h-9.883l3.756-6.82H67.13l-5.835 10.32c3.83 2.335 6.455 5.872 6.455 11.379 0 2.079-.437 4.011-1.276 5.762.073-.11.11-.219.182-.328 1.24-2.079 3.756-4.85 7.403-8.242 2.845-2.699 5.361-5.397 5.361-5.397.693-.84 1.35-1.642 1.641-2.881.182-.766.584-4.924-4.194-4.705-2.589.11-4.485 2.261-4.485 4.632h-7.33l.072-.693c.402-3.72 2.225-6.455 4.377-8.096 2.151-1.641 4.813-2.444 7.986-2.334zM75.7 37.8l1.97 3.464 1.969-3.464h5.251l-4.558 8.096 4.558 8.096h-5.288l-1.932-3.428-1.933 3.428h-5.288l4.595-8.096-4.595-8.096H75.7zm-10.904 0c4.45 0 8.096 3.61 8.096 8.096a8.078 8.078 0 01-8.096 8.096 8.078 8.078 0 01-8.096-8.096 8.078 8.078 0 018.096-8.096zm-8.169 0l.292 4.413h-5.434v2.115h4.45v4.412h-4.45v5.252h-4.923V37.8h10.065zm8.206 3.319c-.766 0-1.35.656-1.35 1.422v6.637c0 .766.62 1.386 1.35 1.386.73 0 1.385-.584 1.385-1.35v-6.673c0-.73-.656-1.422-1.385-1.422z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDMyPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAwLjAwMDAwMCwgLTk3MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC0zMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwLjAwMDAwMCwgOTcxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Mb2NhbC1TdGF0aW9ucy9GT1gtMzItQ2hpY2Fnby9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy42MDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC40NzYyNTczLDIwLjM3NjY2MjYgTDM0Ljg4NzE5NzYsMjAuMzg1NzY4NSBDMzguNDYxMDg5MSwyMC40OTUxNzMzIDQwLjg2Nzk5NTYsMjEuMzMzOTQzOCA0Mi44NzM3NTA5LDIzLjIzMDI5NDMgQzQ0LjkxNTk3NDYsMjUuMTI2NjQ0OSA0Ni4xOTIzNjQ0LDI3LjUzMzU1MTMgNDYuMTkyMzY0NCwzMC4zNzgwNzcyIEM0Ni4xOTIzNjQ0LDMxLjk0NjIxMzIgNDUuOTM3MDg2NSwzMy40MDQ5NDQ0IDQ1LjMxNzEyNTcsMzQuNzkwNzM5IEM0NC42OTcxNjQ5LDM2LjIxMzAwMiA0My40MjA3NzUxLDM3LjgxNzYwNjMgNDIuMTA3OTE3MSwzOS4yNzYzMzc1IEM0MC42ODU2NTQyLDQwLjg4MDk0MTggMzMuMjA5NjU2OCw0OC4yODQwMDI2IDMyLjk5MDg0NzEsNDguNTc1NzQ4OSBMMzIuOTkwODQ3MSw0OC41NzU3NDg5IEw0NS45MDA2MTgyLDQ4LjU3NTc0ODkgTDQyLjAzNDk4MDUsNTUuNDMxNzg1NSBMMjEuMjQ4MDYxLDU1LjQzMTc4NTUgTDIxLjMyMDk5NzUsNTQuODExODI0NyBDMjEuNTM5ODA3Miw1Mi45NTE5NDI0IDIxLjk0MDk1ODMsNTEuOTY3Mjk4OSAyMi43Nzk3Mjg3LDUwLjI1MzI4OTcgQzIxLjEwMjE4NzgsNTMuMjQzNjg4NyAxNi45MDgzMzU2LDU1Ljc2IDEyLjA1ODA1NDQsNTUuNzYgQzguMjI4ODg1MDIsNTUuNzYgNC43Mjc5MzAxNSw1NC4wNDU5OTA4IDIuMzkzOTYwMjQsNTEuMzgzODA2NCBDMi4zOTM5NjAyNCw1MS4zODM4MDY0IDAuNzUyODg3NjM5LDQ5LjQ1MDk4NzYgMC4yNzg4LDQ4LjA2NTE5MjkgTDAuMjc4OCw0OC4wNjUxOTI5IEw0LjI5MDMxMDc5LDQxLjU3MzgzOTEgQzQuMjE3Mzc0MjMsNDQuMDkwMTUwNCA1LjkzMTM4MzM5LDQ2LjcxNTg2NjYgOC40NDc2OTQ3LDQ3Ljk5MjI1NjQgQzkuODMzNDg5MzQsNDguNjg1MTUzNyAxMS4yOTIyMjA1LDQ4LjkwMzk2MzQgMTIuNjQxNTQ2OSw0OC43MjE2MjIgQzE0LjcyMDIzODgsNDguNDI5ODc1NyAxNi41ODAxMjExLDQ3LjI2Mjg5MDggMTcuNTI4Mjk2NCw0NS4zMzAwNzE5IEMxOC4xODQ3MjU0LDQzLjk4MDc0NTYgMTguMzMwNTk4Niw0Mi40ODU1NDYxIDE4LjAwMjM4NCw0MS4wOTk3NTE1IEMxNy41MjgyOTY0LDM5LjIwMzQwMDkgMTYuMjUxOTA2NiwzNy40NTI5MjM1IDE0LjI4MjYxOTUsMzYuNDY4Mjc5OSBDMTIuMDIxNTg2MSwzNS4zMzc3NjMyIDkuMjEzNTI4NTgsMzUuNDgzNjM2NCA3LjI4MDcwOTc0LDM2LjY1MDYyMTMgTDcuMjgwNzA5NzQsMzYuNjUwNjIxMyBMMTIuNDk1NjczOCwyNy43ODg4MjkzIEwyLjYxMjc2OTkxLDI3Ljc4ODgyOTMgTDYuMzY5MDAyNzUsMjAuOTY5MjYxIEwyNC41MzAyMDYxLDIwLjk2OTI2MSBMMTguNjk1MjgxNCwzMS4yODk3ODQyIEMyMi41MjQ0NTA4LDMzLjYyMzc1NDEgMjUuMTUwMTY2OSwzNy4xNjExNzcyIDI1LjE1MDE2NjksNDIuNjY3ODg3NSBDMjUuMTUwMTY2OSw0NC43NDY1Nzk1IDI0LjcxMjU0NzUsNDYuNjc5Mzk4MyAyMy44NzM3NzcxLDQ4LjQyOTg3NTcgQzIzLjk0NjcxMzcsNDguMzIwNDcwOSAyMy45ODMxODE5LDQ4LjIxMTA2NjEgMjQuMDU2MTE4NSw0OC4xMDE2NjEyIEMyNS4yOTYwNCw0Ni4wMjI5NjkzIDI3LjgxMjM1MTMsNDMuMjUxMzggMzEuNDU5MTc5MywzOS44NTk4MyBDMzQuMzAzNzA1MiwzNy4xNjExNzcyIDM2LjgyMDAxNjUsMzQuNDYyNTI0NSAzNi44MjAwMTY1LDM0LjQ2MjUyNDUgQzM3LjUxMjkxMzgsMzMuNjIzNzU0MSAzOC4xNjkzNDI4LDMyLjgyMTQ1MTkgMzguNDYxMDg5MSwzMS41ODE1MzA0IEMzOC42NDM0MzA1LDMwLjgxNTY5NjUgMzkuMDQ0NTgxNiwyNi42NTgzMTI2IDM0LjI2NzIzNjksMjYuODc3MTIyMyBDMzEuNjc3OTg5LDI2Ljk4NjUyNzEgMjkuNzgxNjM4NSwyOS4xMzgxNTU3IDI5Ljc4MTYzODUsMzEuNTA4NTkzOSBMMjkuNzgxNjM4NSwzMS41MDg1OTM5IEwyMi40NTE1MTQyLDMxLjUwODU5MzkgTDIyLjUyNDQ1MDgsMzAuODE1Njk2NSBDMjIuOTI1NjAxOCwyNy4wOTU5MzIgMjQuNzQ5MDE1OCwyNC4zNjA4MTEgMjYuOTAwNjQ0MywyMi43MTk3Mzg0IEMyOS4wNTIyNzI5LDIxLjA3ODY2NTggMzEuNzE0NDU3MywyMC4yNzYzNjM2IDM0Ljg4NzE5NzYsMjAuMzg1NzY4NSBaIE0zMy4xMDAyNTE5LDcuNjkyMzM1NjZlLTE0IEwzNS4wNjk1MzksMy40NjQ0ODY1OSBMMzcuMDM4ODI2Miw3LjY5MjMzNTY2ZS0xNCBMNDIuMjkwMjU4NSw3LjY5MjMzNTY2ZS0xNCBMMzcuNzMxNzIzNSw4LjA5NTk1ODE0IEw0Mi4yOTAyNTg1LDE2LjE5MTkxNjMgTDM3LjAwMjM1NzksMTYuMTkxOTE2MyBMMzUuMDY5NTM5LDEyLjc2Mzg5OCBMMzMuMTM2NzIwMiwxNi4xOTE5MTYzIEwyNy44NDg4MTk2LDE2LjE5MTkxNjMgTDMyLjQ0MzgyMjksOC4wOTU5NTgxNCBMMjcuODQ4ODE5Niw3LjY5MjMzNTY2ZS0xNCBMMzMuMTAwMjUxOSw3LjY5MjMzNTY2ZS0xNCBaIE0yMi4xOTYyMzYyLDcuODY5OTcxMzRlLTE0IEMyNi42NDUzNjY0LDcuODY5OTcxMzRlLTE0IDMwLjI5MjE5NDQsMy42MTAzNTk3MSAzMC4yOTIxOTQ0LDguMDk1OTU4MTQgQzMwLjI5MjE5NDQsMTIuNTgxNTU2NiAyNi42ODE4MzQ3LDE2LjE5MTkxNjMgMjIuMTk2MjM2MiwxNi4xOTE5MTYzIEMxNy43MTA2Mzc4LDE2LjE5MTkxNjMgMTQuMTAwMjc4MSwxMi41ODE1NTY2IDE0LjEwMDI3ODEsOC4wOTU5NTgxNCBDMTQuMTAwMjc4MSwzLjYxMDM1OTcxIDE3LjcxMDYzNzgsNy44Njk5NzEzNGUtMTQgMjIuMTk2MjM2Miw3Ljg2OTk3MTM0ZS0xNCBaIE0xNC4wMjczNDE1LDcuNjkyMzM1NjZlLTE0IEwxNC4zMTkwODc4LDQuNDEyNjYxODcgTDguODg1MzE0MDYsNC40MTI2NjE4NyBMOC44ODUzMTQwNiw2LjUyNzgyMjExIEwxMy4zMzQ0NDQyLDYuNTI3ODIyMTEgTDEzLjMzNDQ0NDIsMTAuOTQwNDg0IEw4Ljg4NTMxNDA2LDEwLjk0MDQ4NCBMOC44ODUzMTQwNiwxNi4xOTE5MTYzIEwzLjk2MjA5NjI3LDE2LjE5MTkxNjMgTDMuOTYyMDk2MjcsNy42OTIzMzU2NmUtMTQgTDE0LjAyNzM0MTUsNy42OTIzMzU2NmUtMTQgWiBNMjIuMjMyNzA0NSwzLjMxODYxMzQ3IEMyMS40NjY4NzA2LDMuMzE4NjEzNDcgMjAuODgzMzc4MiwzLjk3NTA0MjUxIDIwLjg4MzM3ODIsNC43NDA4NzYzOSBMMjAuODgzMzc4Miw0Ljc0MDg3NjM5IEwyMC44ODMzNzgyLDExLjM3ODEwMzMgQzIwLjg4MzM3ODIsMTIuMTQzOTM3MiAyMS41MDMzMzg5LDEyLjc2Mzg5OCAyMi4yMzI3MDQ1LDEyLjc2Mzg5OCBDMjIuOTYyMDcwMSwxMi43NjM4OTggMjMuNjE4NDk5MSwxMi4xODA0MDU1IDIzLjYxODQ5OTEsMTEuNDE0NTcxNiBMMjMuNjE4NDk5MSwxMS40MTQ1NzE2IEwyMy42MTg0OTkxLDQuNzQwODc2MzkgQzIzLjYxODQ5OTEsNC4wMTE1MTA3OSAyMi45NjIwNzAxLDMuMzE4NjEzNDcgMjIuMjMyNzA0NSwzLjMxODYxMzQ3IFoiIGlkPSJGT1gtMzItQ2hpY2FnbyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgWfld as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWiti(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.276 58.84c4.31 0 7.78.913 10.41 2.776 2.594 1.863 3.982 4.274 4.055 7.306h-9.314c-.293-2.338-2.192-3.47-5.772-3.47-2.52 0-4.456.62-5.771 1.9-1.315 1.278-1.973 3.104-1.973 5.552v.425l.236-.156c2.395-1.546 5.364-2.352 8.97-2.352 4.675 0 8.328.987 10.958 2.96 2.63 1.972 3.945 4.675 3.945 8.072 0 3.69-1.461 6.612-4.347 8.694-2.85 2.082-6.977 3.141-12.31 3.141-5.589 0-9.863-1.461-12.748-4.383-2.923-2.923-4.384-7.196-4.384-12.785 0-5.808 1.534-10.191 4.603-13.187 3.068-2.995 7.524-4.493 13.442-4.493zm-.986 18.228c-2.155 0-3.909.438-5.15 1.351-1.28.95-1.9 2.155-1.9 3.617 0 1.57.584 2.776 1.79 3.652 1.205.877 2.849 1.315 5.004 1.315 2.447 0 4.347-.401 5.662-1.278 1.315-.84 1.972-2.046 1.972-3.58 0-1.607-.657-2.849-1.936-3.726-1.278-.876-3.14-1.351-5.442-1.351zM75.08 37.8l1.972 3.47 1.972-3.47h5.26l-4.566 8.11 4.566 8.109h-5.296l-1.936-3.434-1.936 3.434h-5.297l4.603-8.11-4.603-8.109h5.26zm-10.923 0c4.457 0 8.11 3.616 8.11 8.11a8.091 8.091 0 01-8.11 8.109 8.091 8.091 0 01-8.109-8.11 8.091 8.091 0 018.11-8.109zm-8.182 0l.292 4.42h-5.442v2.119h4.456v4.42h-4.456v5.26h-4.932V37.8h10.082zm8.219 3.324c-.767 0-1.352.658-1.352 1.425v6.648c0 .767.621 1.388 1.352 1.388.73 0 1.388-.585 1.388-1.352V42.55c0-.73-.657-1.425-1.388-1.425z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDY8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNDAuMDAwMDAwLCAtMTExMS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkNlbGwvQ2hhbm5lbC1Db3B5LTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0MC4wMDAwMDAsIDExMTEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOCwwIEwxMzAsMCBMMTMwLDAgTDEzMCwxMzAgTDgsMTMwIEMzLjU4MTcyMiwxMzAgNS40MTA4MzAwMWUtMTYsMTI2LjQxODI3OCAwLDEyMiBMMCw4IEMtNS40MTA4MzAwMWUtMTYsMy41ODE3MjIgMy41ODE3MjIsOC4xMTYyNDUwMWUtMTYgOCwwIFoiIGlkPSJDZWxsIiBmaWxsLW9wYWNpdHk9IjAuMSIgZmlsbD0ibm9uZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ28iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1LjAwMDAwMCwgMjUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ29zL0NvbXBvbmVudHMvX0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9IkNvbnRhaW5lciIgY3g9IjQwIiBjeT0iNDAiIHI9IjQwIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ29zL0xvY2FsLVN0YXRpb25zL0ZPWC02LU1pbHdhdWtlZS9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMC44MDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMC40NzYwNTQ2LDIxLjA0MDIyODQgQzI0Ljc4NjM3OTEsMjEuMDQwMjI4NCAyOC4yNTY1NTU3LDIxLjk1MzQzMjcgMzAuODg2NTg0MiwyMy44MTYzNjk2IEMzMy40ODAwODQ2LDI1LjY3OTMwNjUgMzQuODY4MTU1MiwyOC4wOTAxNjYgMzQuOTQxMjExNSwzMS4xMjIwMDQ0IEwyNS42MjY1MjcxLDMxLjEyMjAwNDQgQzI1LjMzNDMwMTcsMjguNzg0MjAxMyAyMy40MzQ4MzY3LDI3LjY1MTgyNzkgMTkuODU1MDc1NiwyNy42NTE4Mjc5IEMxNy4zMzQ2MzE2LDI3LjY1MTgyNzkgMTUuMzk4NjM4MywyOC4yNzI4MDY5IDE0LjA4MzYyNDEsMjkuNTUxMjkyOSBDMTIuNzY4NjA5OCwzMC44Mjk3NzkgMTIuMTExMTAyNywzMi42NTYxODc4IDEyLjExMTEwMjcsMzUuMTAzNTc1NCBMMTIuMTEwMzMzMywzNS41MjkgTDEyLjM0NzIwOTMsMzUuMzcyNTk1NSBDMTQuNzQyMzM2MSwzMy44MjY2MTEzIDE3LjcxMDU2NzQsMzMuMDIxNDY5NSAyMS4zMTYyMDI2LDMzLjAyMTQ2OTUgQzI1Ljk5MTgwODksMzMuMDIxNDY5NSAyOS42NDQ2MjYzLDM0LjAwNzczMDIgMzIuMjc0NjU0OCwzNS45ODAyNTE2IEMzNC45MDQ2ODM0LDM3Ljk1Mjc3MyAzNi4yMTk2OTc2LDQwLjY1NTg1NzkgMzYuMjE5Njk3Niw0NC4wNTI5NzgxIEMzNi4yMTk2OTc2LDQ3Ljc0MjMyMzcgMzQuNzU4NTcwNyw1MC42NjQ1Nzc3IDMxLjg3Mjg0NDksNTIuNzQ2NjgzNiBDMjkuMDIzNjQ3Myw1NC44Mjg3ODk1IDI0Ljg5NTk2MzYsNTUuODg4MTA2NiAxOS41NjI4NTAyLDU1Ljg4ODEwNjYgQzEzLjk3NDAzOTUsNTUuODg4MTA2NiA5LjcwMDI0MzE1LDU0LjQyNjk3OTYgNi44MTQ1MTczOSw1MS41MDQ3MjU3IEMzLjg5MjI2MzQ1LDQ4LjU4MjQ3MTcgMi40MzExMzY0OCw0NC4zMDg2NzUzIDIuNDMxMTM2NDgsMzguNzE5ODY0NyBDMi40MzExMzY0OCwzMi45MTE4ODUgMy45NjUzMTk4LDI4LjUyODUwNDEgNy4wMzM2ODY0NCwyNS41MzMxOTM4IEMxMC4xMDIwNTMxLDIyLjUzNzg4MzUgMTQuNTU4NDkwMywyMS4wNDAyMjg0IDIwLjQ3NjA1NDYsMjEuMDQwMjI4NCBaIE0xOS40ODk3OTM4LDM5LjI2Nzc4NzMgQzE3LjMzNDYzMTYsMzkuMjY3Nzg3MyAxNS41ODEyNzkyLDM5LjcwNjEyNTQgMTQuMzM5MzIxMyw0MC42MTkzMjk3IEMxMy4wNjA4MzUyLDQxLjU2OTA2MjMgMTIuNDM5ODU2Miw0Mi43NzQ0OTIgMTIuNDM5ODU2Miw0NC4yMzU2MTkgQzEyLjQzOTg1NjIsNDUuODA2MzMwNSAxMy4wMjQzMDcsNDcuMDExNzYwMiAxNC4yMjk3MzY4LDQ3Ljg4ODQzNjQgQzE1LjQzNTE2NjUsNDguNzY1MTEyNiAxNy4wNzg5MzQzLDQ5LjIwMzQ1MDcgMTkuMjM0MDk2Niw0OS4yMDM0NTA3IEMyMS42ODE0ODQzLDQ5LjIwMzQ1MDcgMjMuNTgwOTQ5NCw0OC44MDE2NDA4IDI0Ljg5NTk2MzYsNDcuOTI0OTY0NiBDMjYuMjEwOTc3OSw0Ny4wODQ4MTY2IDI2Ljg2ODQ4NSw0NS44NzkzODY4IDI2Ljg2ODQ4NSw0NC4zNDUyMDM1IEMyNi44Njg0ODUsNDIuNzM3OTYzOCAyNi4yMTA5Nzc5LDQxLjQ5NjAwNTkgMjQuOTMyNDkxOCw0MC42MTkzMjk3IEMyMy42NTQwMDU3LDM5Ljc0MjY1MzYgMjEuNzkxMDY4OCwzOS4yNjc3ODczIDE5LjQ4OTc5MzgsMzkuMjY3Nzg3MyBaIE0yOS4yNzkzNDQ1LC01LjQ3MTE3OTA3ZS0xNCBMMzEuMjUxODY1OSwzLjQ3MDE3NjU1IEwzMy4yMjQzODc0LC01LjQ3MTE3OTA3ZS0xNCBMMzguNDg0NDQ0NCwtNS40NzExNzkwN2UtMTQgTDMzLjkxODQyMjcsOC4xMDkyNTQ2OCBMMzguNDg0NDQ0NCwxNi4yMTg1MDk0IEwzMy4xODc4NTkyLDE2LjIxODUwOTQgTDMxLjI1MTg2NTksMTIuNzg0ODYxIEwyOS4zMTU4NzI3LDE2LjIxODUwOTQgTDI0LjAxOTI4NzUsMTYuMjE4NTA5NCBMMjguNjIxODM3NCw4LjEwOTI1NDY4IEwyNC4wMTkyODc1LC01LjQ3MTE3OTA3ZS0xNCBMMjkuMjc5MzQ0NSwtNS40NzExNzkwN2UtMTQgWiBNMTguMzU3NDIwNCwtNS40NzExNzkwN2UtMTQgQzIyLjgxMzg1NzcsLTUuNDcxMTc5MDdlLTE0IDI2LjQ2NjY3NTEsMy42MTYyODkyNSAyNi40NjY2NzUxLDguMTA5MjU0NjggQzI2LjQ2NjY3NTEsMTIuNjAyMjIwMSAyMi44NTAzODU5LDE2LjIxODUwOTQgMTguMzU3NDIwNCwxNi4yMTg1MDk0IEMxMy44NjQ0NTUsMTYuMjE4NTA5NCAxMC4yNDgxNjU4LDEyLjYwMjIyMDEgMTAuMjQ4MTY1OCw4LjEwOTI1NDY4IEMxMC4yNDgxNjU4LDMuNjE2Mjg5MjUgMTMuODY0NDU1LC01LjQ3MTE3OTA3ZS0xNCAxOC4zNTc0MjA0LC01LjQ3MTE3OTA3ZS0xNCBaIE0xMC4xNzUxMDk0LC01LjQ3MTE3OTA3ZS0xNCBMMTAuNDY3MzM0OCw0LjQxOTkwOTA4IEw1LjAyNDYzNjg1LDQuNDE5OTA5MDggTDUuMDI0NjM2ODUsNi41Mzg1NDMxOSBMOS40ODEwNzQxMSw2LjUzODU0MzE5IEw5LjQ4MTA3NDExLDEwLjk1ODQ1MjMgTDUuMDI0NjM2ODUsMTAuOTU4NDUyMyBMNS4wMjQ2MzY4NSwxNi4yMTg1MDk0IEwwLjA5MzMzMzMzMzMsMTYuMjE4NTA5NCBMMC4wOTMzMzMzMzMzLC01LjQ3MTE3OTA3ZS0xNCBMMTAuMTc1MTA5NCwtNS40NzExNzkwN2UtMTQgWiBNMTguMzkzOTQ4NiwzLjMyNDA2Mzg1IEMxNy42MjY4NTcsMy4zMjQwNjM4NSAxNy4wNDI0MDYyLDMuOTgxNTcwOTkgMTcuMDQyNDA2Miw0Ljc0ODY2MjY1IEwxNy4wNDI0MDYyLDQuNzQ4NjYyNjUgTDE3LjA0MjQwNjIsMTEuMzk2NzkwNCBDMTcuMDQyNDA2MiwxMi4xNjM4ODIgMTcuNjYzMzg1MSwxMi43ODQ4NjEgMTguMzkzOTQ4NiwxMi43ODQ4NjEgQzE5LjEyNDUxMjEsMTIuNzg0ODYxIDE5Ljc4MjAxOTIsMTIuMjAwNDEwMiAxOS43ODIwMTkyLDExLjQzMzMxODUgTDE5Ljc4MjAxOTIsMTEuNDMzMzE4NSBMMTkuNzgyMDE5Miw0Ljc0ODY2MjY1IEMxOS43ODIwMTkyLDQuMDE4MDk5MTYgMTkuMTI0NTEyMSwzLjMyNDA2Mzg1IDE4LjM5Mzk0ODYsMy4zMjQwNjM4NSBaIiBpZD0iRk9YLTYtTWlsd2F1a2VlIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgWiti as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWjbk(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.387 58.69c8.385 0 14.11 3.536 14.11 10.864 0 8.823-8.641 11.63-15.167 15.604v.073h15.64v8.458H50.04c-.183-3.318.802-6.198 2.479-8.531 2.88-4.01 7.838-6.672 12.25-9.333 1.786-1.094 4.666-2.48 4.666-5.031 0-3.136-1.86-4.23-4.193-4.23-3.973 0-5.322 2.88-5.213 7.11h-9.297v-.037c-.546-9.478 5.36-14.947 14.656-14.947zm9.698-20.89l1.968 3.463 1.97-3.463h5.249l-4.557 8.093 4.557 8.094h-5.286l-1.933-3.427-1.932 3.427h-5.286l4.594-8.094-4.594-8.093h5.25zm-10.9 0c4.447 0 8.093 3.61 8.093 8.093a8.075 8.075 0 01-8.094 8.094 8.075 8.075 0 01-8.093-8.094 8.075 8.075 0 018.093-8.093zm-8.167 0l.291 4.411h-5.432v2.115h4.448v4.411h-4.448v5.25h-4.921V37.8h10.062zm8.203 3.318c-.766 0-1.35.656-1.35 1.421v6.636c0 .765.62 1.385 1.35 1.385.729 0 1.385-.583 1.385-1.349V42.54c0-.729-.656-1.421-1.385-1.421z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDI8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDAuMDAwMDAwLCAtNTUxLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iRm94LTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMC4wMDAwMDAsIDU1MS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvQ29tcG9uZW50cy9fQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iQ29udGFpbmVyIiBjeD0iNDAiIGN5PSI0MCIgcj0iNDAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLTItRGV0cm9pdC9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMC44MDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS41ODcyMDYzLDIwLjg4OTkzNTkgQzI3Ljk3MjM0NjMsMjAuODg5OTM1OSAzMy42OTYxMTU5LDI0LjQyNjI3NzYgMzMuNjk2MTE1OSwzMS43NTQxNjA5IEMzMy42OTYxMTU5LDQwLjU3Njc4NjYgMjUuMDU1Nzc1OSw0My4zODM5ODU2IDE4LjUyOTk0OTUsNDcuMzU3ODEyOSBMMTguNTI5OTQ5NSw0Ny40MzA3MjcxIEwzNC4xNzAwNTg2LDQ3LjQzMDcyNzEgTDM0LjE3MDA1ODYsNTUuODg4NzgxNSBMNC4yMzg3NTQyLDU1Ljg4ODc4MTUgQzQuMDU2NDY4NTUsNTIuNTcxMTgyNiA1LjA0MDgxMTA4LDQ5LjY5MTA2OTIgNi43MTc4MzkxLDQ3LjM1NzgxMjkgQzkuNTk3OTUyNDMsNDMuMzQ3NTI4NSAxNC41NTYxMjIyLDQwLjY4NjE1NzkgMTguOTY3NDM1LDM4LjAyNDc4NzQgQzIwLjc1MzgzNDQsMzYuOTMxMDczNSAyMy42MzM5NDc4LDM1LjU0NTcwMjUgMjMuNjMzOTQ3OCwzMi45OTM3MDM0IEMyMy42MzM5NDc4LDI5Ljg1ODM5MDEgMjEuNzc0NjM0MSwyOC43NjQ2NzYyIDE5LjQ0MTM3NzcsMjguNzY0Njc2MiBDMTUuNDY3NTUwNSwyOC43NjQ2NzYyIDE0LjExODYzNjYsMzEuNjQ0Nzg5NSAxNC4yMjgwMDgsMzUuODczODE2NyBMNC45MzE0Mzk2OSwzNS44NzM4MTY3IEw0LjkzMTQzOTY5LDM1LjgzNzM1OTYgQzQuMzg0NTgyNzMsMjYuMzU4NTA1NiAxMC4yOTA2Mzc5LDIwLjg4OTkzNTkgMTkuNTg3MjA2MywyMC44ODk5MzU5IFogTTI5LjI4NDgwMyw3Ljg4NzAyNDM3ZS0xNCBMMzEuMjUzNDg4MSwzLjQ2MzQyNzQyIEwzMy4yMjIxNzMyLDcuODg3MDI0MzdlLTE0IEwzOC40NzIsNy44ODcwMjQzN2UtMTQgTDMzLjkxNDg1ODcsOC4wOTM0ODMwMyBMMzguNDcyLDE2LjE4Njk2NjEgTDMzLjE4NTcxNiwxNi4xODY5NjYxIEwzMS4yNTM0ODgxLDEyLjc1OTk5NTggTDI5LjMyMTI2MDIsMTYuMTg2OTY2MSBMMjQuMDM0OTc2MiwxNi4xODY5NjYxIEwyOC42Mjg1NzQ3LDguMDkzNDgzMDMgTDI0LjAzNDk3NjIsNy44ODcwMjQzN2UtMTQgTDI5LjI4NDgwMyw3Ljg4NzAyNDM3ZS0xNCBaIE0xOC4zODQxMjA5LDcuODg3MDI0MzdlLTE0IEMyMi44MzE4OTA5LDcuODg3MDI0MzdlLTE0IDI2LjQ3NzYwNCwzLjYwOTI1NTk1IDI2LjQ3NzYwNCw4LjA5MzQ4MzAzIEMyNi40Nzc2MDQsMTIuNTc3NzEwMSAyMi44NjgzNDgsMTYuMTg2OTY2MSAxOC4zODQxMjA5LDE2LjE4Njk2NjEgQzEzLjg5OTg5MzksMTYuMTg2OTY2MSAxMC4yOTA2Mzc5LDEyLjU3NzcxMDEgMTAuMjkwNjM3OSw4LjA5MzQ4MzAzIEMxMC4yOTA2Mzc5LDMuNjA5MjU1OTUgMTMuODk5ODkzOSw3Ljg4NzAyNDM3ZS0xNCAxOC4zODQxMjA5LDcuODg3MDI0MzdlLTE0IFogTTEwLjIxNzcyMzYsNy44ODcwMjQzN2UtMTQgTDEwLjUwOTM4MDcsNC40MTEzMTI4MiBMNS4wNzcyNjgyMSw0LjQxMTMxMjgyIEw1LjA3NzI2ODIxLDYuNTI1ODI2NDEgTDkuNTI1MDM4MTYsNi41MjU4MjY0MSBMOS41MjUwMzgxNiwxMC45MzcxMzkyIEw1LjA3NzI2ODIxLDEwLjkzNzEzOTIgTDUuMDc3MjY4MjEsMTYuMTg2OTY2MSBMMC4xNTU1NTU1NTYsMTYuMTg2OTY2MSBMMC4xNTU1NTU1NTYsNy44ODcwMjQzN2UtMTQgTDEwLjIxNzcyMzYsNy44ODcwMjQzN2UtMTQgWiBNMTguNDIwNTc4MSwzLjMxNzU5ODkgQzE3LjY1NDk3ODMsMy4zMTc1OTg5IDE3LjA3MTY2NDIsMy45NzM4MjcyNSAxNy4wNzE2NjQyLDQuNzM5NDI3IEwxNy4wNzE2NjQyLDQuNzM5NDI3IEwxNy4wNzE2NjQyLDExLjM3NDYyNDggQzE3LjA3MTY2NDIsMTIuMTQwMjI0NSAxNy42OTE0MzU1LDEyLjc1OTk5NTggMTguNDIwNTc4MSwxMi43NTk5OTU4IEMxOS4xNDk3MjA3LDEyLjc1OTk5NTggMTkuODA1OTQ5LDEyLjE3NjY4MTcgMTkuODA1OTQ5LDExLjQxMTA4MTkgTDE5LjgwNTk0OSwxMS40MTEwODE5IEwxOS44MDU5NDksNC43Mzk0MjcgQzE5LjgwNTk0OSw0LjAxMDI4NDM5IDE5LjE0OTcyMDcsMy4zMTc1OTg5IDE4LjQyMDU3ODEsMy4zMTc1OTg5IFoiIGlkPSJGT1gtMi1EZXRyb2l0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgWjbk as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWnyw(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79.007 58.704l-1.277 7.66H62.956c-.146.511-.475 1.788-.766 2.955 1.203-.4 3.356-.73 7.186-.218 6.895.912 9.777 7.88 9.74 11.382 0 1.714-.291 4.997-2.115 7.843-2.299 3.539-6.202 5.326-11.601 5.326-6.494 0-10.032-2.736-11.856-5.034-2.007-2.517-2.445-4.998-2.445-5.108l-.11-.62 7.698-1.021.146.474c.511 1.569 2.554 4.268 6.786 4.268 3.757 0 5.764-3.356 5.764-5.764 0-2.298-1.934-5.545-6.202-5.545-4.195 0-5.728 2.992-5.8 3.101l-.146.328h-8.136l4.925-20.027h22.983zM75.104 37.8l1.97 3.466 1.97-3.466h5.253l-4.56 8.099 4.56 8.098h-5.29l-1.933-3.429-1.934 3.43h-5.29l4.597-8.1L69.85 37.8h5.254zm-10.908 0c4.45 0 8.099 3.612 8.099 8.099a8.08 8.08 0 01-8.099 8.098 8.08 8.08 0 01-8.099-8.098 8.08 8.08 0 018.099-8.099zm-8.172 0l.292 4.414H50.88v2.116h4.451v4.414h-4.45v5.253h-4.925V37.8h10.068zm8.208 3.32c-.766 0-1.35.656-1.35 1.423v6.639c0 .766.62 1.386 1.35 1.386.73 0 1.387-.583 1.387-1.35v-6.675c0-.73-.657-1.423-1.387-1.423z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDUgTlk8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MjAuMDAwMDAwLCAtNTUxLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iRm94LTUtTlkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUyMC4wMDAwMDAsIDU1MS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvQ29tcG9uZW50cy9fQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iQ29udGFpbmVyIiBjeD0iNDAiIGN5PSI0MCIgcj0iNDAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLTUtQXRsYW50YS9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMC44MDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4yMDcxNzEyLDIwLjkwMzUwNTIgTDMxLjkzMDM0MjcsMjguNTY0NDc1NyBMMzEuOTMwMzQyNywyOC41NjQ0NzU3IEwxNy4xNTU2MTM5LDI4LjU2NDQ3NTcgQzE3LjAwOTY5MDcsMjkuMDc1MjA3MSAxNi42ODEzNjM0LDMwLjM1MjAzNTUgMTYuMzg5NTE2OSwzMS41MTk0MjE1IEMxNy41OTMzODM3LDMxLjExODEzMjYgMTkuNzQ1NzUxNiwzMC43ODk4MDUzIDIzLjU3NjIzNjgsMzEuMzAwNTM2NiBDMzAuNDcxMTEwMywzMi4yMTI1NTY5IDMzLjM1MzA5NDQsMzkuMTgwMzkyIDMzLjMxNjYxMzYsNDIuNjgyNTUgQzMzLjMxNjYxMzYsNDQuMzk3MTQ4MSAzMy4wMjQ3NjcxLDQ3LjY4MDQyMTIgMzEuMjAwNzI2NSw1MC41MjU5MjQ1IEMyOC45MDI0MzU0LDU0LjA2NDU2MzMgMjQuOTk4OTg4NSw1NS44NTIxMjMxIDE5LjU5OTgyODMsNTUuODUyMTIzMSBDMTMuMTA2MjQzOCw1NS44NTIxMjMxIDkuNTY3NjA1MDMsNTMuMTE2MDYyMiA3Ljc0MzU2NDQ0LDUwLjgxNzc3MSBDNS43MzcxMTk3OCw0OC4zMDA1OTUgNS4yOTkzNTAwNCw0NS44MTk4OTk4IDUuMjk5MzUwMDQsNDUuNzEwNDU3MyBMNS4yOTkzNTAwNCw0NS43MTA0NTczIEw1LjE4OTkwNzYsNDUuMDkwMjgzNSBMMTIuODg3MzU4OSw0NC4wNjg4MjA4IEwxMy4wMzMyODIyLDQ0LjU0MzA3MTQgQzEzLjU0NDAxMzUsNDYuMTExNzQ2MyAxNS41ODY5MzksNDguODExMzI2NCAxOS44MTg3MTMyLDQ4LjgxMTMyNjQgQzIzLjU3NjIzNjgsNDguODExMzI2NCAyNS41ODI2ODE1LDQ1LjQ1NTA5MTcgMjUuNTgyNjgxNSw0My4wNDczNTgxIEMyNS41ODI2ODE1LDQwLjc0OTA2NjkgMjMuNjQ5MTk4NCwzNy41MDIyNzQ3IDE5LjM4MDk0MzQsMzcuNTAyMjc0NyBDMTUuMTg1NjUwMSwzNy41MDIyNzQ3IDEzLjY1MzQ1Niw0MC40OTM3MDEyIDEzLjU4MDQ5NDMsNDAuNjAzMTQzNyBMMTMuNTgwNDk0Myw0MC42MDMxNDM3IEwxMy40MzQ1NzExLDQwLjkzMTQ3MSBMNS4yOTkzNTAwNCw0MC45MzE0NzEgTDEwLjIyNDI1OTYsMjAuOTAzNTA1MiBMMzMuMjA3MTcxMiwyMC45MDM1MDUyIFogTTI5LjMwMzcyNDMsNy4yMTIwMDg3N2UtMTQgTDMxLjI3MzY4ODEsMy40NjU2NzcxMyBMMzMuMjQzNjUyLDcuMjEyMDA4NzdlLTE0IEwzOC40OTY4ODg5LDcuMjEyMDA4NzdlLTE0IEwzMy45MzY3ODc0LDguMDk4NzQwMjUgTDM4LjQ5Njg4ODksMTYuMTk3NDgwNSBMMzMuMjA3MTcxMiwxNi4xOTc0ODA1IEwzMS4yNzM2ODgxLDEyLjc2ODI4NDIgTDI5LjM0MDIwNTEsMTYuMTk3NDgwNSBMMjQuMDUwNDg3NCwxNi4xOTc0ODA1IEwyOC42NDcwNjk3LDguMDk4NzQwMjUgTDI0LjA1MDQ4NzQsNy4yMTIwMDg3N2UtMTQgTDI5LjMwMzcyNDMsNy4yMTIwMDg3N2UtMTQgWiBNMTguMzk1OTYxNSw3LjM4OTY0NDQ1ZS0xNCBDMjIuODQ2NjIwNiw3LjM4OTY0NDQ1ZS0xNCAyNi40OTQ3MDE4LDMuNjExNjAwMzggMjYuNDk0NzAxOCw4LjA5ODc0MDI1IEMyNi40OTQ3MDE4LDEyLjU4NTg4MDEgMjIuODgzMTAxNCwxNi4xOTc0ODA1IDE4LjM5NTk2MTUsMTYuMTk3NDgwNSBDMTMuOTA4ODIxNywxNi4xOTc0ODA1IDEwLjI5NzIyMTMsMTIuNTg1ODgwMSAxMC4yOTcyMjEzLDguMDk4NzQwMjUgQzEwLjI5NzIyMTMsMy42MTE2MDAzOCAxMy45MDg4MjE3LDcuMzg5NjQ0NDVlLTE0IDE4LjM5NTk2MTUsNy4zODk2NDQ0NWUtMTQgWiBNMTAuMjI0MjU5Niw3LjIxMjAwODc3ZS0xNCBMMTAuNTE2MTA2MSw0LjQxNDE3ODI0IEw1LjA4MDQ2NTE3LDQuNDE0MTc4MjQgTDUuMDgwNDY1MTcsNi41MzAwNjUzMyBMOS41MzExMjQyMiw2LjUzMDA2NTMzIEw5LjUzMTEyNDIyLDEwLjk0NDI0MzYgTDUuMDgwNDY1MTcsMTAuOTQ0MjQzNiBMNS4wODA0NjUxNywxNi4xOTc0ODA1IEwwLjE1NTU1NTU1NiwxNi4xOTc0ODA1IEwwLjE1NTU1NTU1Niw3LjIxMjAwODc3ZS0xNCBMMTAuMjI0MjU5Niw3LjIxMjAwODc3ZS0xNCBaIE0xOC40MzI0NDIzLDMuMzE5NzUzODkgQzE3LjY2NjM0NTMsMy4zMTk3NTM4OSAxNy4wODI2NTIzLDMuOTc2NDA4NSAxNy4wODI2NTIzLDQuNzQyNTA1NTUgTDE3LjA4MjY1MjMsNC43NDI1MDU1NSBMMTcuMDgyNjUyMywxMS4zODIwMTMzIEMxNy4wODI2NTIzLDEyLjE0ODExMDQgMTcuNzAyODI2MSwxMi43NjgyODQyIDE4LjQzMjQ0MjMsMTIuNzY4Mjg0MiBDMTkuMTYyMDU4NiwxMi43NjgyODQyIDE5LjgxODcxMzIsMTIuMTg0NTkxMiAxOS44MTg3MTMyLDExLjQxODQ5NDEgTDE5LjgxODcxMzIsMTEuNDE4NDk0MSBMMTkuODE4NzEzMiw0Ljc0MjUwNTU1IEMxOS44MTg3MTMyLDQuMDEyODg5MzEgMTkuMTYyMDU4NiwzLjMxOTc1Mzg5IDE4LjQzMjQ0MjMsMy4zMTk3NTM4OSBaIiBpZD0iRk9YLTUtQXRsYW50YSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgWnyw as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWofl(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.837 58.716l-1.016 5.511H76.714l-1.488 5.695s5.01-2.3 10.746 1.533c3.05 2.044 4.538 5.183 4.538 8.687 0 6.315-5.119 11.973-12.634 11.644-7.66-.365-10.928-5.767-11.763-10.293l6.39-.986c.4 3.614 2.904 5.22 5.664 5.22 3.884 0 5.845-2.263 5.845-5.475 0-3.249-2.578-5.403-5.337-5.512-2.432-.073-4.248.511-5.518 2.08H66.73l4.973-18.104h19.133zm-25.777-.037l-6.934 10.403c4.139 1.825 6.354 6.023 6.354 10.33 0 6.826-5.918 12.374-13.216 12.374-5.082 0-9.73-2.847-11.944-6.825l3.703-5.001c.871 2.737 3.413 5.804 8.241 5.95 3.921.146 6.862-2.629 6.862-6.315 0-3.687-2.977-6.461-6.898-6.461-1.67 0-3.158.328-4.356 1.204l6.534-9.49h-10.31v-6.169H65.06zM75.008 37.8l1.96 3.468L78.93 37.8h5.228l-4.538 8.103 4.538 8.104h-5.264l-1.924-3.431-1.925 3.43H69.78l4.575-8.103L69.78 37.8h5.228zm-10.855 0c4.43 0 8.06 3.614 8.06 8.103 0 4.49-3.595 8.104-8.06 8.104-4.466 0-8.06-3.614-8.06-8.104 0-4.49 3.594-8.103 8.06-8.103zm-8.133 0l.29 4.417h-5.409v2.117h4.43v4.417H50.9v5.256h-4.9V37.8h10.02zm8.17 3.322c-.763 0-1.344.657-1.344 1.423v6.644c0 .766.617 1.387 1.343 1.387s1.38-.584 1.38-1.35v-6.68c0-.73-.654-1.424-1.38-1.424z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDM1PC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjQwLjAwMDAwMCwgLTk3MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC0zNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLjAwMDAwMCwgOTcxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Mb2NhbC1TdGF0aW9ucy9GT1gtMzUtT3JsYW5kby9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNC4zMjAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01MS41MTcyNDE0LDIwLjkxNTYxMDYgTDUwLjUwMDY5MjYsMjYuNDI3NDAzMiBMMzcuMzk0NDc0LDI2LjQyNzQwMzIgTDM1LjkwNTk1NjEsMzIuMTIxNzA1NiBDMzUuOTA1OTU2MSwzMi4xMjE3MDU2IDQwLjkxNjA4OTUsMjkuODIyMDgzNSA0Ni42NTIzMjkyLDMzLjY1NDc4NyBDNDkuNzAxOTc1NywzNS42OTg4OTU1IDUxLjE5MDQ5MzUsMzguODM4MDYyMiA1MS4xOTA0OTM1LDQyLjM0MjI0ODMgQzUxLjE5MDQ5MzUsNDguNjU3MDgzNiA0Ni4wNzE0NDQyLDU0LjMxNDg4NCAzOC41NTYyNDQxLDUzLjk4NjM2NjUgQzMwLjg5NTgyMjcsNTMuNjIxMzQ3MiAyNy42MjgzNDQ0LDQ4LjIxOTA2MDMgMjYuNzkzMzIyMiw0My42OTI4MiBMMjYuNzkzMzIyMiw0My42OTI4MiBMMzMuMTgzMDU3NSw0Mi43MDcyNjc2IEMzMy41ODI0MTYsNDYuMzIwOTU5NSAzNi4wODc0ODI3LDQ3LjkyNzA0NDggMzguODQ2Njg2Niw0Ny45MjcwNDQ4IEM0Mi43MzEzNTUzLDQ3LjkyNzA0NDggNDQuNjkxODQyMiw0NS42NjM5MjQ2IDQ0LjY5MTg0MjIsNDIuNDUxNzU0MSBDNDQuNjkxODQyMiwzOS4yMDMwODE2IDQyLjExNDE2NDksMzcuMDQ5NDY3MiAzOS4zNTQ5NjEsMzYuOTM5OTYxNCBDMzYuOTIyNTA0OSwzNi44NjY5NTc1IDM1LjEwNzIzOTIsMzcuNDUwOTg4NiAzMy44MzY1NTMyLDM5LjAyMDU3MTkgTDMzLjgzNjU1MzIsMzkuMDIwNTcxOSBMMjcuNDEwNTEyNSwzOS4wMjA1NzE5IEwzMi4zODQzNDA2LDIwLjkxNTYxMDYgTDUxLjUxNzI0MTQsMjAuOTE1NjEwNiBaIE0yNS43NDA0NjgsMjAuODc5MTA4NiBMMTguODA2MTUyOSwzMS4yODIxNjEgQzIyLjk0NDk1ODgsMzMuMTA3MjU3OSAyNS4xNTk1ODMsMzcuMzA0OTgwOCAyNS4xNTk1ODMsNDEuNjEyMjA5NSBDMjUuMTU5NTgzLDQ4LjQzODA3MTkgMTkuMjQxODE2Nyw1My45ODYzNjY1IDExLjk0NDQ0ODUsNTMuOTg2MzY2NSBDNi44NjE3MDQ0NSw1My45ODYzNjY1IDIuMjE0NjI0MTksNTEuMTM5MjE1NCAwLDQ3LjE2MDUwNDEgTDMuNzAzMTQyMDksNDIuMTU5NzM4NiBDNC41NzQ0Njk2NCw0NC44OTczODM5IDcuMTE1ODQxNjYsNDcuOTYzNTQ2NyAxMS45NDQ0NDg1LDQ4LjEwOTU1NDUgQzE1Ljg2NTQyMjUsNDguMjU1NTYyMiAxOC44MDYxNTI5LDQ1LjQ4MTQxNDkgMTguODA2MTUyOSw0MS43OTQ3MTkyIEMxOC44MDYxNTI5LDM4LjEwODAyMzQgMTUuODI5MTE3MiwzNS4zMzM4NzYxIDExLjkwODE0MzIsMzUuMzMzODc2MSBDMTAuMjM4MDk4NywzNS4zMzM4NzYxIDguNzQ5NTgwODEsMzUuNjYyMzkzNiA3LjU1MTUwNTQzLDM2LjUzODQ0MDEgTDE0LjA4NjQ2MjEsMjcuMDQ3OTM2MiBMMy43NzU3NTI3MiwyNy4wNDc5MzYyIEwzLjc3NTc1MjcyLDIwLjg3OTEwODYgTDI1Ljc0MDQ2OCwyMC44NzkxMDg2IFogTTM1LjY4ODEyNDIsMCBMMzcuNjQ4NjExMiwzLjQ2NzY4NDEzIEwzOS42MDkwOTgyLDAgTDQ0LjgzNzA2MzUsMCBMNDAuMjk4ODk5Miw4LjEwMzQzMDI3IEw0NC44MzcwNjM1LDE2LjIwNjg2MDUgTDM5LjU3Mjc5MjksMTYuMjA2ODYwNSBMMzcuNjQ4NjExMiwxMi43NzU2Nzg0IEwzNS43MjQ0Mjk1LDE2LjIwNjg2MDUgTDMwLjQ2MDE1ODksMTYuMjA2ODYwNSBMMzUuMDM0NjI4Niw4LjEwMzQzMDI3IEwzMC40NjAxNTg5LDAgTDM1LjY4ODEyNDIsMCBaIE0yNC44MzI4MzUyLDAgQzI5LjI2MjA4MzUsMCAzMi44OTI2MTUsMy42MTM2OTE4OCAzMi44OTI2MTUsOC4xMDM0MzAyNyBDMzIuODkyNjE1LDEyLjU5MzE2ODcgMjkuMjk4Mzg4OSwxNi4yMDY4NjA1IDI0LjgzMjgzNTIsMTYuMjA2ODYwNSBDMjAuMzY3MjgxNSwxNi4yMDY4NjA1IDE2Ljc3MzA1NTMsMTIuNTkzMTY4NyAxNi43NzMwNTUzLDguMTAzNDMwMjcgQzE2Ljc3MzA1NTMsMy42MTM2OTE4OCAyMC4zNjcyODE1LDAgMjQuODMyODM1MiwwIFogTTE2LjcwMDQ0NDcsMCBMMTYuOTkwODg3Miw0LjQxNjczNDUyIEwxMS41ODEzOTUzLDQuNDE2NzM0NTIgTDExLjU4MTM5NTMsNi41MzM4NDY5MyBMMTYuMDEwNjQzNyw2LjUzMzg0NjkzIEwxNi4wMTA2NDM3LDEwLjk1MDU4MTQgTDExLjU4MTM5NTMsMTAuOTUwNTgxNCBMMTEuNTgxMzk1MywxNi4yMDY4NjA1IEw2LjY4MDE3Nzg4LDE2LjIwNjg2MDUgTDYuNjgwMTc3ODgsMCBMMTYuNzAwNDQ0NywwIFogTTI0Ljg2OTE0MDUsMy4zMjE2NzYzNyBDMjQuMTA2NzI4OSwzLjMyMTY3NjM3IDIzLjUyNTg0MzgsMy45Nzg3MTEyNiAyMy41MjU4NDM4LDQuNzQ1MjUxOTYgTDIzLjUyNTg0MzgsNC43NDUyNTE5NiBMMjMuNTI1ODQzOCwxMS4zODg2MDQ3IEMyMy41MjU4NDM4LDEyLjE1NTE0NTQgMjQuMTQzMDM0MiwxMi43NzU2Nzg0IDI0Ljg2OTE0MDUsMTIuNzc1Njc4NCBDMjUuNTk1MjQ2OCwxMi43NzU2Nzg0IDI2LjI0ODc0MjQsMTIuMTkxNjQ3MyAyNi4yNDg3NDI0LDExLjQyNTEwNjYgTDI2LjI0ODc0MjQsMTEuNDI1MTA2NiBMMjYuMjQ4NzQyNCw0Ljc0NTI1MTk2IEMyNi4yNDg3NDI0LDQuMDE1MjEzMiAyNS41OTUyNDY4LDMuMzIxNjc2MzcgMjQuODY5MTQwNSwzLjMyMTY3NjM3IFoiIGlkPSJGT1gtMzUtT3JsYW5kbyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgWofl as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWogx(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.933 58.302l-4.251 25.61-.981 6.202-.654 4.086h-8.103l4.796-29.112h-4.324l5.45-6.786h8.067zm-14.389.365l-1.09 5.874H55.537l-1.599 6.056s5.342-2.481 11.446 1.605c3.234 2.189 4.833 5.508 4.833 9.266 0 6.713-5.487 12.768-13.48 12.404-8.177-.365-11.665-6.13-12.537-10.945l6.868-1.13c.4 3.866 3.088 5.581 6.031 5.581 4.143 0 6.214-2.408 6.214-5.837 0-3.43-2.762-5.728-5.705-5.837-2.616-.073-4.542.584-5.886 2.225h-6.868l5.305-19.262h20.385zm4.47-20.867l1.962 3.466 1.962-3.466h5.232l-4.542 8.099 4.542 8.099h-5.269l-1.925-3.43-1.926 3.43H69.78l4.578-8.1-4.578-8.098h5.232zm-10.865 0c4.433 0 8.067 3.612 8.067 8.099s-3.598 8.099-8.067 8.099c-4.47 0-8.067-3.612-8.067-8.1 0-4.486 3.597-8.098 8.067-8.098zm-8.14 0l.291 4.414h-5.414v2.116h4.433v4.414h-4.433v5.254H45.98V37.8h10.03zm8.176 3.32c-.763 0-1.344.656-1.344 1.423v6.64c0 .765.617 1.385 1.344 1.385.727 0 1.38-.583 1.38-1.35v-6.675c0-.73-.653-1.423-1.38-1.423z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDUxPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzgwLjAwMDAwMCwgLTk3MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC01MSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzgwLjAwMDAwMCwgOTcxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Mb2NhbC1TdGF0aW9ucy9GT1gtNTEtV09HWC9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOS4yMDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00MC43MzMzMzMzLDIwLjUwMjQ1OCBMMzYuNDgxOTUwNiw0Ni4xMTIyODk4IEwzNS41MDA4NjIzLDUyLjMxNDEwMDkgTDM0Ljg0NjgwMzQsNTYuNCBMMjYuNzQzNzQwNyw1Ni40IEwzMS41NDAxNzI1LDI3LjI4Nzk2OSBMMjcuMjE2MTE2NiwyNy4yODc5NjkgTDMyLjY2NjYwNzIsMjAuNTAyNDU4IEw0MC43MzMzMzMzLDIwLjUwMjQ1OCBaIE0yNi4zNDQwMzgxLDIwLjg2NzI3MDQgTDI1LjI1MzkzOTksMjYuNzQwNzUwMyBMMTEuMzM3MDIwNSwyNi43NDA3NTAzIEw5LjczODIwOTkzLDMyLjc5NjYzNjUgQzkuNzM4MjA5OTMsMzIuNzk2NjM2NSAxNS4wNzk2OTA4LDMwLjMxNTkxMiAyMS4xODQyNDAzLDM0LjQwMTgxMTEgQzI0LjQxODE5OCwzNi41OTA2ODU2IDI2LjAxNzAwODYsMzkuOTEwNDc4NyAyNi4wMTcwMDg2LDQzLjY2ODA0NjYgQzI2LjAxNzAwODYsNTAuMzgwNTk1MSAyMC41MzAxODE0LDU2LjQzNjQ4MTIgMTIuNTM2MTI4NSw1Ni4wNzE2Njg4IEM0LjM2MDM5MjUxLDU1LjcwNjg1NjQgMC44NzIwNzg1MDEsNDkuOTQyODIwMiAtMy45NTc3MjMwNGUtMTQsNDUuMTI3Mjk2MiBMLTMuOTU3NzIzMDRlLTE0LDQ1LjEyNzI5NjIgTDYuODY3NjE4Miw0My45OTYzNzc3IEM3LjI2NzMyMDg0LDQ3Ljg2MzM4OTQgOS45NTYyMjk1Niw0OS41NzgwMDc4IDEyLjg5OTQ5NDUsNDkuNTc4MDA3OCBDMTcuMDQxODY3NCw0OS41NzgwMDc4IDE5LjExMzA1MzgsNDcuMTcwMjQ1OCAxOS4xMTMwNTM4LDQzLjc0MTAwOTEgQzE5LjExMzA1MzgsNDAuMzExNzcyMyAxNi4zNTE0NzE5LDM4LjAxMzQ1NDEgMTMuNDA4MjA3LDM3LjkwNDAxMDMgQzEwLjc5MTk3MTUsMzcuODMxMDQ3OSA4Ljg2NjEzMTQzLDM4LjQ4NzcxMDIgNy41MjE2NzcwNyw0MC4xMjkzNjYxIEw3LjUyMTY3NzA3LDQwLjEyOTM2NjEgTDAuNjU0MDU4ODc2LDQwLjEyOTM2NjEgTDUuOTU5MjAzMDksMjAuODY3MjcwNCBMMjYuMzQ0MDM4MSwyMC44NjcyNzA0IFogTTMwLjgxMzQ0MDQsMCBMMzIuNzc1NjE3LDMuNDY1NzE3OTggTDM0LjczNzc5MzYsMCBMMzkuOTcwMjY0NiwwIEwzNS40MjgxODkxLDguMDk4ODM1NzEgTDM5Ljk3MDI2NDYsMTYuMTk3NjcxNCBMMzQuNzAxNDU3LDE2LjE5NzY3MTQgTDMyLjc3NTYxNywxMi43Njg0MzQ3IEwzMC44NDk3NzcsMTYuMTk3NjcxNCBMMjUuNTgwOTY5NCwxNi4xOTc2NzE0IEwzMC4xNTkzODE1LDguMDk4ODM1NzEgTDI1LjU4MDk2OTQsMCBMMzAuODEzNDQwNCwwIFogTTE5Ljk0ODc5NTcsMCBDMjQuMzgxODYxNCwwIDI4LjAxNTUyMTksMy42MTE2NDI5NSAyOC4wMTU1MjE5LDguMDk4ODM1NzEgQzI4LjAxNTUyMTksMTIuNTg2MDI4NSAyNC40MTgxOTgsMTYuMTk3NjcxNCAxOS45NDg3OTU3LDE2LjE5NzY3MTQgQzE1LjQ3OTM5MzQsMTYuMTk3NjcxNCAxMS44ODIwNjk2LDEyLjU4NjAyODUgMTEuODgyMDY5Niw4LjA5ODgzNTcxIEMxMS44ODIwNjk2LDMuNjExNjQyOTUgMTUuNDc5MzkzNCwwIDE5Ljk0ODc5NTcsMCBaIE0xMS44MDkzOTY0LDAgTDEyLjEwMDA4OTIsNC40MTQyMzAyNyBMNi42ODU5MzUxOCw0LjQxNDIzMDI3IEw2LjY4NTkzNTE4LDYuNTMwMTQyMyBMMTEuMTE5MDAwOSw2LjUzMDE0MjMgTDExLjExOTAwMDksMTAuOTQ0MzcyNiBMNi42ODU5MzUxOCwxMC45NDQzNzI2IEw2LjY4NTkzNTE4LDE2LjE5NzY3MTQgTDEuNzgwNDkzNjEsMTYuMTk3NjcxNCBMMS43ODA0OTM2MSwwIEwxMS44MDkzOTY0LDAgWiBNMTkuOTg1MTMyMywzLjMxOTc5MzAxIEMxOS4yMjIwNjM2LDMuMzE5NzkzMDEgMTguNjQwNjc4LDMuOTc2NDU1MzcgMTguNjQwNjc4LDQuNzQyNTYxNDUgTDE4LjY0MDY3OCw0Ljc0MjU2MTQ1IEwxOC42NDA2NzgsMTEuMzgyMTQ3NSBDMTguNjQwNjc4LDEyLjE0ODI1MzYgMTkuMjU4NDAwMiwxMi43Njg0MzQ3IDE5Ljk4NTEzMjMsMTIuNzY4NDM0NyBDMjAuNzExODY0NCwxMi43Njg0MzQ3IDIxLjM2NTkyMzMsMTIuMTg0NzM0OCAyMS4zNjU5MjMzLDExLjQxODYyODcgTDIxLjM2NTkyMzMsMTEuNDE4NjI4NyBMMjEuMzY1OTIzMyw0Ljc0MjU2MTQ1IEMyMS4zNjU5MjMzLDQuMDEyOTM2NjEgMjAuNzExODY0NCwzLjMxOTc5MzAxIDE5Ljk4NTEzMjMsMy4zMTk3OTMwMSBaIiBpZD0iRk9YLTUxLVdPR1giPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgWogx as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWttg(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79.007 58.704l-1.277 7.66H62.956c-.146.511-.475 1.788-.766 2.955 1.203-.4 3.356-.73 7.186-.218 6.895.912 9.777 7.88 9.74 11.382 0 1.714-.291 4.997-2.115 7.843-2.299 3.539-6.202 5.326-11.601 5.326-6.494 0-10.032-2.736-11.856-5.034-2.007-2.517-2.445-4.998-2.445-5.108l-.11-.62 7.698-1.021.146.474c.511 1.569 2.554 4.268 6.786 4.268 3.757 0 5.764-3.356 5.764-5.764 0-2.298-1.934-5.545-6.202-5.545-4.195 0-5.728 2.992-5.8 3.101l-.146.328h-8.136l4.925-20.027h22.983zM75.104 37.8l1.97 3.466 1.97-3.466h5.253l-4.56 8.099 4.56 8.098h-5.29l-1.933-3.429-1.934 3.43h-5.29l4.597-8.1L69.85 37.8h5.254zm-10.908 0c4.45 0 8.099 3.612 8.099 8.099a8.08 8.08 0 01-8.099 8.098 8.08 8.08 0 01-8.099-8.098 8.08 8.08 0 018.099-8.099zm-8.172 0l.292 4.414H50.88v2.116h4.451v4.414h-4.45v5.253h-4.925V37.8h10.068zm8.208 3.32c-.766 0-1.35.656-1.35 1.423v6.639c0 .766.62 1.386 1.35 1.386.73 0 1.387-.583 1.387-1.35v-6.675c0-.73-.657-1.423-1.387-1.423z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDUgV0E8L3RpdGxlPgogICAgPGcgaWQ9IjE0NDBweC0tLURlc2t0b3AiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXZWJfMTQ0MF9MaXZlVFZfTmV3Q29tcG9uZW50c19DaGFubmVsTG9nb3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDAuMDAwMDAwLCAtNjkxLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iRm94LTUtV0EiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMC4wMDAwMDAsIDY5MS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDAgTDEzMCwwIEwxMzAsMCBMMTMwLDEzMCBMOCwxMzAgQzMuNTgxNzIyLDEzMCA1LjQxMDgzMDAxZS0xNiwxMjYuNDE4Mjc4IDAsMTIyIEwwLDggQy01LjQxMDgzMDAxZS0xNiwzLjU4MTcyMiAzLjU4MTcyMiw4LjExNjI0NTAxZS0xNiA4LDAgWiIgaWQ9IkNlbGwiIGZpbGwtb3BhY2l0eT0iMC4xIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDAwMDAwLCAyNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvQ29tcG9uZW50cy9fQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iQ29udGFpbmVyIiBjeD0iNDAiIGN5PSI0MCIgcj0iNDAiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTG9nb3MvTG9jYWwtU3RhdGlvbnMvRk9YLTUtQXRsYW50YS9TdGFja2VkL1doaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMC44MDAwMDAsIDEyLjgwMDAwMCkiIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4yMDcxNzEyLDIwLjkwMzUwNTIgTDMxLjkzMDM0MjcsMjguNTY0NDc1NyBMMzEuOTMwMzQyNywyOC41NjQ0NzU3IEwxNy4xNTU2MTM5LDI4LjU2NDQ3NTcgQzE3LjAwOTY5MDcsMjkuMDc1MjA3MSAxNi42ODEzNjM0LDMwLjM1MjAzNTUgMTYuMzg5NTE2OSwzMS41MTk0MjE1IEMxNy41OTMzODM3LDMxLjExODEzMjYgMTkuNzQ1NzUxNiwzMC43ODk4MDUzIDIzLjU3NjIzNjgsMzEuMzAwNTM2NiBDMzAuNDcxMTEwMywzMi4yMTI1NTY5IDMzLjM1MzA5NDQsMzkuMTgwMzkyIDMzLjMxNjYxMzYsNDIuNjgyNTUgQzMzLjMxNjYxMzYsNDQuMzk3MTQ4MSAzMy4wMjQ3NjcxLDQ3LjY4MDQyMTIgMzEuMjAwNzI2NSw1MC41MjU5MjQ1IEMyOC45MDI0MzU0LDU0LjA2NDU2MzMgMjQuOTk4OTg4NSw1NS44NTIxMjMxIDE5LjU5OTgyODMsNTUuODUyMTIzMSBDMTMuMTA2MjQzOCw1NS44NTIxMjMxIDkuNTY3NjA1MDMsNTMuMTE2MDYyMiA3Ljc0MzU2NDQ0LDUwLjgxNzc3MSBDNS43MzcxMTk3OCw0OC4zMDA1OTUgNS4yOTkzNTAwNCw0NS44MTk4OTk4IDUuMjk5MzUwMDQsNDUuNzEwNDU3MyBMNS4yOTkzNTAwNCw0NS43MTA0NTczIEw1LjE4OTkwNzYsNDUuMDkwMjgzNSBMMTIuODg3MzU4OSw0NC4wNjg4MjA4IEwxMy4wMzMyODIyLDQ0LjU0MzA3MTQgQzEzLjU0NDAxMzUsNDYuMTExNzQ2MyAxNS41ODY5MzksNDguODExMzI2NCAxOS44MTg3MTMyLDQ4LjgxMTMyNjQgQzIzLjU3NjIzNjgsNDguODExMzI2NCAyNS41ODI2ODE1LDQ1LjQ1NTA5MTcgMjUuNTgyNjgxNSw0My4wNDczNTgxIEMyNS41ODI2ODE1LDQwLjc0OTA2NjkgMjMuNjQ5MTk4NCwzNy41MDIyNzQ3IDE5LjM4MDk0MzQsMzcuNTAyMjc0NyBDMTUuMTg1NjUwMSwzNy41MDIyNzQ3IDEzLjY1MzQ1Niw0MC40OTM3MDEyIDEzLjU4MDQ5NDMsNDAuNjAzMTQzNyBMMTMuNTgwNDk0Myw0MC42MDMxNDM3IEwxMy40MzQ1NzExLDQwLjkzMTQ3MSBMNS4yOTkzNTAwNCw0MC45MzE0NzEgTDEwLjIyNDI1OTYsMjAuOTAzNTA1MiBMMzMuMjA3MTcxMiwyMC45MDM1MDUyIFogTTI5LjMwMzcyNDMsNy4yMTIwMDg3N2UtMTQgTDMxLjI3MzY4ODEsMy40NjU2NzcxMyBMMzMuMjQzNjUyLDcuMjEyMDA4NzdlLTE0IEwzOC40OTY4ODg5LDcuMjEyMDA4NzdlLTE0IEwzMy45MzY3ODc0LDguMDk4NzQwMjUgTDM4LjQ5Njg4ODksMTYuMTk3NDgwNSBMMzMuMjA3MTcxMiwxNi4xOTc0ODA1IEwzMS4yNzM2ODgxLDEyLjc2ODI4NDIgTDI5LjM0MDIwNTEsMTYuMTk3NDgwNSBMMjQuMDUwNDg3NCwxNi4xOTc0ODA1IEwyOC42NDcwNjk3LDguMDk4NzQwMjUgTDI0LjA1MDQ4NzQsNy4yMTIwMDg3N2UtMTQgTDI5LjMwMzcyNDMsNy4yMTIwMDg3N2UtMTQgWiBNMTguMzk1OTYxNSw3LjM4OTY0NDQ1ZS0xNCBDMjIuODQ2NjIwNiw3LjM4OTY0NDQ1ZS0xNCAyNi40OTQ3MDE4LDMuNjExNjAwMzggMjYuNDk0NzAxOCw4LjA5ODc0MDI1IEMyNi40OTQ3MDE4LDEyLjU4NTg4MDEgMjIuODgzMTAxNCwxNi4xOTc0ODA1IDE4LjM5NTk2MTUsMTYuMTk3NDgwNSBDMTMuOTA4ODIxNywxNi4xOTc0ODA1IDEwLjI5NzIyMTMsMTIuNTg1ODgwMSAxMC4yOTcyMjEzLDguMDk4NzQwMjUgQzEwLjI5NzIyMTMsMy42MTE2MDAzOCAxMy45MDg4MjE3LDcuMzg5NjQ0NDVlLTE0IDE4LjM5NTk2MTUsNy4zODk2NDQ0NWUtMTQgWiBNMTAuMjI0MjU5Niw3LjIxMjAwODc3ZS0xNCBMMTAuNTE2MTA2MSw0LjQxNDE3ODI0IEw1LjA4MDQ2NTE3LDQuNDE0MTc4MjQgTDUuMDgwNDY1MTcsNi41MzAwNjUzMyBMOS41MzExMjQyMiw2LjUzMDA2NTMzIEw5LjUzMTEyNDIyLDEwLjk0NDI0MzYgTDUuMDgwNDY1MTcsMTAuOTQ0MjQzNiBMNS4wODA0NjUxNywxNi4xOTc0ODA1IEwwLjE1NTU1NTU1NiwxNi4xOTc0ODA1IEwwLjE1NTU1NTU1Niw3LjIxMjAwODc3ZS0xNCBMMTAuMjI0MjU5Niw3LjIxMjAwODc3ZS0xNCBaIE0xOC40MzI0NDIzLDMuMzE5NzUzODkgQzE3LjY2NjM0NTMsMy4zMTk3NTM4OSAxNy4wODI2NTIzLDMuOTc2NDA4NSAxNy4wODI2NTIzLDQuNzQyNTA1NTUgTDE3LjA4MjY1MjMsNC43NDI1MDU1NSBMMTcuMDgyNjUyMywxMS4zODIwMTMzIEMxNy4wODI2NTIzLDEyLjE0ODExMDQgMTcuNzAyODI2MSwxMi43NjgyODQyIDE4LjQzMjQ0MjMsMTIuNzY4Mjg0MiBDMTkuMTYyMDU4NiwxMi43NjgyODQyIDE5LjgxODcxMzIsMTIuMTg0NTkxMiAxOS44MTg3MTMyLDExLjQxODQ5NDEgTDE5LjgxODcxMzIsMTEuNDE4NDk0MSBMMTkuODE4NzEzMiw0Ljc0MjUwNTU1IEMxOS44MTg3MTMyLDQuMDEyODg5MzEgMTkuMTYyMDU4NiwzLjMxOTc1Mzg5IDE4LjQzMjQ0MjMsMy4zMTk3NTM4OSBaIiBpZD0iRk9YLTUtQXRsYW50YSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgWttg as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWtvt(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.127 58.754v24.97l2.255-3.76c-.073 2.554 1.382 5.073 3.928 6.351a7.236 7.236 0 004.219.73c2.073-.292 3.964-1.497 4.91-3.431a6.144 6.144 0 00.473-4.308c-.437-1.935-1.782-3.687-3.746-4.71-2.292-1.167-4.838-.985-6.802.183l5.274-9.016H59.381l3.82-6.9h18.585L75.894 69.34c3.892 2.373 6.256 6.644 6.256 11.536 0 7.447-5.783 13.324-13.203 13.324-3.855 0-7.31-1.862-9.748-4.454v3.98h-7.383V65.36h-3.928l3.928-6.607h7.31zM75.02 37.8l1.964 3.468L78.95 37.8h5.238l-4.547 8.104 4.547 8.104h-5.274l-1.928-3.431-1.928 3.431h-5.274l4.583-8.104-4.583-8.104h5.238zm-10.875 0c4.437 0 8.074 3.614 8.074 8.104 0 4.49-3.6 8.104-8.074 8.104s-8.075-3.614-8.075-8.104c0-4.49 3.601-8.104 8.075-8.104zm-8.147 0l.29 4.417H50.87v2.117h4.438v4.417H50.87v5.257h-4.91V37.8h10.039zm8.183 3.322c-.764 0-1.346.657-1.346 1.424v6.644c0 .766.619 1.387 1.346 1.387.728 0 1.382-.584 1.382-1.351v-6.68c0-.73-.654-1.424-1.382-1.424z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDEzPC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjQwLjAwMDAwMCwgLTgzMS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC0xMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLjAwMDAwMCwgODMxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Mb2NhbC1TdGF0aW9ucy9GT1gtMTMtVGFtcGEtQmF5L1N0YWNrZWQvV2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLjk2MDAwMCwgMTIuODAwMDAwKSIgZmlsbD0iY3VycmVudENvbG9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEzLjE2NjU1ODgsMjAuOTUzNzg2NCBMMTMuMTY2NTU4OCw0NS45MjMxMDY4IEwxNS40MjE2MDQ4LDQyLjE2MzEwNjggQzE1LjM0ODg2MTQsNDQuNzE4NDQ2NiAxNi44MDM3Mjk4LDQ3LjIzNzI4MTYgMTkuMzQ5NzQ5NCw0OC41MTQ5NTE1IEMyMC43MzE4NzQ0LDQ5LjIwODU0MzcgMjIuMTg2NzQyOCw0OS40Mjc1NzI4IDIzLjU2ODg2NzcsNDkuMjQ1MDQ4NSBDMjUuNjQyMDU1Miw0OC45NTMwMDk3IDI3LjUzMzM4NDEsNDcuNzQ4MzQ5NSAyOC40NzkwNDg1LDQ1LjgxMzU5MjIgQzI5LjE3MDExMSw0NC40MjY0MDc4IDI5LjMxNTU5NzgsNDIuOTI5NzA4NyAyOC45NTE4ODA3LDQxLjUwNjAxOTQgQzI4LjUxNTQyMDIsMzkuNTcxMjYyMSAyNy4xNjk2NjcsMzcuODE5MDI5MSAyNS4yMDU1OTQ3LDM2Ljc5Njg5MzIgQzIyLjkxNDE3NywzNS42Mjg3Mzc5IDIwLjM2ODE1NzMsMzUuODExMjYyMSAxOC40MDQwODUsMzYuOTc5NDE3NSBMMjMuNjc3OTgyOSwyNy45NjI3MTg0IEwxMy40MjExNjA4LDI3Ljk2MjcxODQgTDE3LjI0MDE5MDMsMjEuMDYzMzAxIEwzNS44MjYxMzM4LDIxLjA2MzMwMSBMMjkuOTMzOTE2OSwzMS41NDAxOTQyIEMzMy44MjU2ODk4LDMzLjkxMzAwOTcgMzYuMTg5ODUwOSwzOC4xODQwNzc3IDM2LjE4OTg1MDksNDMuMDc1NzI4MiBDMzYuMTg5ODUwOSw1MC41MjI3MTg0IDMwLjQwNjc0OTEsNTYuNCAyMi45ODY5MjA0LDU2LjQgQzE5LjEzMTUxOTIsNTYuNCAxNS42NzYyMDY4LDU0LjUzODI1MjQgMTMuMjM5MzAyMyw1MS45NDY0MDc4IEwxMy4yMzkzMDIzLDU1LjkyNTQzNjkgTDUuODU1ODQ1MjMsNTUuOTI1NDM2OSBMNS44NTU4NDUyMywyNy41NjExNjUgTDEuOTI3NzAwNiwyNy41NjExNjUgTDUuODU1ODQ1MjMsMjAuOTUzNzg2NCBMMTMuMTY2NTU4OCwyMC45NTM3ODY0IFogTTI5LjA2MDk5NTksNy43Mzc4MTAzOWUtMTQgTDMxLjAyNTA2ODIsMy40Njc5NjExNyBMMzIuOTg5MTQwNSw3LjczNzgxMDM5ZS0xNCBMMzguMjI2NjY2Nyw3LjczNzgxMDM5ZS0xNCBMMzMuNjgwMjAzLDguMTA0MDc3NjcgTDM4LjIyNjY2NjcsMTYuMjA4MTU1MyBMMzIuOTUyNzY4OCwxNi4yMDgxNTUzIEwzMS4wMjUwNjgyLDEyLjc3NjY5OSBMMjkuMDk3MzY3NiwxNi4yMDgxNTUzIEwyMy44MjM0Njk3LDE2LjIwODE1NTMgTDI4LjQwNjMwNTEsOC4xMDQwNzc2NyBMMjMuODIzNDY5Nyw3LjczNzgxMDM5ZS0xNCBMMjkuMDYwOTk1OSw3LjczNzgxMDM5ZS0xNCBaIE0xOC4xODU4NTQ3LDcuNzM3ODEwMzllLTE0IEMyMi42MjMyMDMzLDcuNzM3ODEwMzllLTE0IDI2LjI2MDM3NDIsMy42MTM5ODA1OCAyNi4yNjAzNzQyLDguMTA0MDc3NjcgQzI2LjI2MDM3NDIsMTIuNTk0MTc0OCAyMi42NTk1NzUsMTYuMjA4MTU1MyAxOC4xODU4NTQ3LDE2LjIwODE1NTMgQzEzLjcxMjEzNDUsMTYuMjA4MTU1MyAxMC4xMTEzMzUyLDEyLjU5NDE3NDggMTAuMTExMzM1Miw4LjEwNDA3NzY3IEMxMC4xMTEzMzUyLDMuNjEzOTgwNTggMTMuNzEyMTM0NSw3LjczNzgxMDM5ZS0xNCAxOC4xODU4NTQ3LDcuNzM3ODEwMzllLTE0IFogTTEwLjAzODU5MTgsNy43Mzc4MTAzOWUtMTQgTDEwLjMyOTU2NTUsNC40MTcwODczOCBMNC45MTAxODA3OCw0LjQxNzA4NzM4IEw0LjkxMDE4MDc4LDYuNTM0MzY4OTMgTDkuMzQ3NTI5MzQsNi41MzQzNjg5MyBMOS4zNDc1MjkzNCwxMC45NTE0NTYzIEw0LjkxMDE4MDc4LDEwLjk1MTQ1NjMgTDQuOTEwMTgwNzgsMTYuMjA4MTU1MyBMOC41NjIwMzk5N2UtMTUsMTYuMjA4MTU1MyBMOC41NjIwMzk5N2UtMTUsNy43Mzc4MTAzOWUtMTQgTDEwLjAzODU5MTgsNy43Mzc4MTAzOWUtMTQgWiBNMTguMjIyMjI2NSwzLjMyMTk0MTc1IEMxNy40NTg0MjA2LDMuMzIxOTQxNzUgMTYuODc2NDczMiwzLjk3OTAyOTEzIDE2Ljg3NjQ3MzIsNC43NDU2MzEwNyBMMTYuODc2NDczMiw0Ljc0NTYzMTA3IEwxNi44NzY0NzMyLDExLjM4OTUxNDYgQzE2Ljg3NjQ3MzIsMTIuMTU2MTE2NSAxNy40OTQ3OTIzLDEyLjc3NjY5OSAxOC4yMjIyMjY1LDEyLjc3NjY5OSBDMTguOTQ5NjYwNiwxMi43NzY2OTkgMTkuNjA0MzUxNCwxMi4xOTI2MjE0IDE5LjYwNDM1MTQsMTEuNDI2MDE5NCBMMTkuNjA0MzUxNCwxMS40MjYwMTk0IEwxOS42MDQzNTE0LDQuNzQ1NjMxMDcgQzE5LjYwNDM1MTQsNC4wMTU1MzM5OCAxOC45NDk2NjA2LDMuMzIxOTQxNzUgMTguMjIyMjI2NSwzLjMyMTk0MTc1IFoiIGlkPSJGT1gtMTMtVGFtcGEtQmF5Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgWtvt as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWtxf(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 0h122v130H8a8 8 0 01-8-8V8a8 8 0 018-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 40,\n cy: 40,\n r: 40,\n transform: \"translate(25 25)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.207 58.294c6.831 0 12.347 4.494 12.347 10.01 0 4.858-4.493 10.557-6.721 13.809-2.229 3.251-5.042 7.927-5.042 7.927H70.23l6.978-11.763c-6.832 0-12.348-4.494-12.348-10.01s5.516-9.973 12.348-9.973zM42.319 69.62c1.06-14.941 18.412-13.7 21.115-4.493 1.571 5.37-.767 9.425-3.58 12.712-1.753 2.083-5.406 6.32-5.406 6.32h9.315v5.845H42.21S52.292 77.51 56.932 71.445c3.178-5.297-2.082-6.904-3.58-6.904-5.297-.146-4.676 5.078-4.676 5.078zm34.888-6.21c-3.215 0-5.845 2.082-5.845 4.712s2.63 4.75 5.845 4.75 5.845-2.12 5.845-4.75c0-2.594-2.63-4.712-5.845-4.712zM75.819 37.8l1.972 3.47 1.973-3.47h5.26l-4.566 8.11 4.567 8.11h-5.298l-1.936-3.434-1.936 3.434h-5.297l4.603-8.11-4.603-8.11h5.26zm-10.923 0c4.457 0 8.11 3.617 8.11 8.11a8.092 8.092 0 01-8.11 8.11 8.092 8.092 0 01-8.11-8.11 8.092 8.092 0 018.11-8.11zm-8.183 0l.292 4.42h-5.443v2.12h4.457v4.42h-4.457v5.26H46.63V37.8h10.083zm8.22 3.324c-.768 0-1.352.658-1.352 1.425v6.649c0 .767.62 1.388 1.351 1.388.73 0 1.388-.584 1.388-1.352V42.55c0-.73-.657-1.425-1.388-1.425z\",\n fill: \"currentColor\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyAgdmlld0JveD0iMCAwIDEzMCAxMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Rm94IDI5PC90aXRsZT4KICAgIDxnIGlkPSIxNDQwcHgtLS1EZXNrdG9wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2ViXzE0NDBfTGl2ZVRWX05ld0NvbXBvbmVudHNfQ2hhbm5lbExvZ29zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTIwLjAwMDAwMCwgLTgzMS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IkZveC0yOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTIwLjAwMDAwMCwgODMxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgsMCBMMTMwLDAgTDEzMCwwIEwxMzAsMTMwIEw4LDEzMCBDMy41ODE3MjIsMTMwIDUuNDEwODMwMDFlLTE2LDEyNi40MTgyNzggMCwxMjIgTDAsOCBDLTUuNDEwODMwMDFlLTE2LDMuNTgxNzIyIDMuNTgxNzIyLDguMTE2MjQ1MDFlLTE2IDgsMCBaIiBpZD0iQ2VsbCIgZmlsbC1vcGFjaXR5PSIwLjEiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wMDAwMDAsIDI1LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Db21wb25lbnRzL19Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJDb250YWluZXIiIGN4PSI0MCIgY3k9IjQwIiByPSI0MCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMb2dvcy9Mb2NhbC1TdGF0aW9ucy9GT1gtMjktUEEvU3RhY2tlZC9XaGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYuOTkyMDAwLCAxMi44MDAwMDApIiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMzUuMjE0ODEzNSwyMC40OTQxNTM4IEM0Mi4wNDYxOTgxLDIwLjQ5NDE1MzggNDcuNTYyNDQ5OSwyNC45ODc1MjQ1IDQ3LjU2MjQ0OTksMzAuNTAzNzc2MiBDNDcuNTYyNDQ5OSwzNS4zNjI0NjE1IDQzLjA2OTA3OTMsNDEuMDYxMzcwNiA0MC44NDA2NTk3LDQ0LjMxMjY3MTMgQzM4LjYxMjI0MDEsNDcuNTYzOTcyIDM1Ljc5OTMxNyw1Mi4yNCAzNS43OTkzMTcsNTIuMjQgTDM1Ljc5OTMxNyw1Mi4yNCBMMjguMjM3MzAzLDUyLjI0IEwzNS4yMTQ4MTM1LDQwLjQ3Njg2NzEgQzI4LjM4MzQyODksNDAuNDc2ODY3MSAyMi44NjcxNzcyLDM1Ljk4MzQ5NjUgMjIuODY3MTc3MiwzMC40NjcyNDQ4IEMyMi44NjcxNzcyLDI0Ljk1MDk5MyAyOC4zODM0Mjg5LDIwLjQ5NDE1MzggMzUuMjE0ODEzNSwyMC40OTQxNTM4IFogTTAuMzI3MjYxMDcyLDMxLjgxODkwOTEgQzEuMzg2NjczNjYsMTYuODc3NTM4NSAxOC43MzkxMjEyLDE4LjExOTYwODQgMjEuNDQyNDQ5OSwyNy4zMjU1Mzg1IEMyMy4wMTMzMDMsMzIuNjk1NjY0MyAyMC42NzUyODksMzYuNzUwNjU3MyAxNy44NjIzNjYsNDAuMDM4NDg5NSBDMTYuMTA4ODU1NSw0Mi4xMjA3ODMyIDEyLjQ1NTcwODYsNDYuMzU4NDMzNiAxMi40NTU3MDg2LDQ2LjM1ODQzMzYgTDEyLjQ1NTcwODYsNDYuMzU4NDMzNiBMMjEuNzcxMjMzMSw0Ni4zNTg0MzM2IEwyMS43NzEyMzMxLDUyLjIwMzQ2ODUgTDAuMjE3NjY2NjY3LDUyLjIwMzQ2ODUgQzAuMjE3NjY2NjY3LDUyLjIwMzQ2ODUgMTAuMzAwMzUyLDM5LjcwOTcwNjMgMTQuOTM5ODQ4NSwzMy42NDU0ODI1IEMxOC4xMTgwODYyLDI4LjM0ODQxOTYgMTIuODU3NTU0OCwyNi43NDEwMzUgMTEuMzU5NzY0NiwyNi43NDEwMzUgQzYuMDYyNzAxNjMsMjYuNTk0OTA5MSA2LjY4MzczNjYsMzEuODE4OTA5MSA2LjY4MzczNjYsMzEuODE4OTA5MSBMNi42ODM3MzY2LDMxLjgxODkwOTEgWiBNMzUuMjE0ODEzNSwyNS42MDg1NTk0IEMzMi4wMDAwNDQzLDI1LjYwODU1OTQgMjkuMzY5Nzc4NiwyNy42OTA4NTMxIDI5LjM2OTc3ODYsMzAuMzIxMTE4OSBDMjkuMzY5Nzc4NiwzMi45NTEzODQ2IDMyLjAwMDA0NDMsMzUuMDcwMjA5OCAzNS4yMTQ4MTM1LDM1LjA3MDIwOTggQzM4LjQyOTU4MjgsMzUuMDcwMjA5OCA0MS4wNTk4NDg1LDMyLjk1MTM4NDYgNDEuMDU5ODQ4NSwzMC4zMjExMTg5IEM0MS4wNTk4NDg1LDI3LjcyNzM4NDYgMzguNDI5NTgyOCwyNS42MDg1NTk0IDM1LjIxNDgxMzUsMjUuNjA4NTU5NCBaIE0zMy44MjY2MTc3LDAgTDM1Ljc5OTMxNywzLjQ3MDQ4OTUxIEwzNy43NzIwMTYzLDAgTDQzLjAzMjU0NzgsMCBMMzguNDY2MTE0Miw4LjEwOTk4NjAxIEw0My4wMzI1NDc4LDE2LjIxOTk3MiBMMzcuNzM1NDg0OCwxNi4yMTk5NzIgTDM1Ljc5OTMxNywxMi43ODYwMTQgTDMzLjg2MzE0OTIsMTYuMjE5OTcyIEwyOC41NjYwODYyLDE2LjIxOTk3MiBMMzMuMTY5MDUxMyw4LjEwOTk4NjAxIEwyOC41NjYwODYyLDAgTDMzLjgyNjYxNzcsMCBaIE0yMi45MDM3MDg2LDAgQzI3LjM2MDU0NzgsMCAzMS4wMTM2OTQ2LDMuNjE2NjE1MzggMzEuMDEzNjk0Niw4LjEwOTk4NjAxIEMzMS4wMTM2OTQ2LDEyLjYwMzM1NjYgMjcuMzk3MDc5MywxNi4yMTk5NzIgMjIuOTAzNzA4NiwxNi4yMTk5NzIgQzE4LjQxMDMzOCwxNi4yMTk5NzIgMTQuNzkzNzIyNiwxMi42MDMzNTY2IDE0Ljc5MzcyMjYsOC4xMDk5ODYwMSBDMTQuNzkzNzIyNiwzLjYxNjYxNTM4IDE4LjQxMDMzOCwwIDIyLjkwMzcwODYsMCBaIE0xNC43MjA2NTk3LDAgTDE1LjAxMjkxMTQsNC40MjAzMDc2OSBMOS41Njk3MjI2MSw0LjQyMDMwNzY5IEw5LjU2OTcyMjYxLDYuNTM5MTMyODcgTDE0LjAyNjU2MTgsNi41MzkxMzI4NyBMMTQuMDI2NTYxOCwxMC45NTk0NDA2IEw5LjU2OTcyMjYxLDEwLjk1OTQ0MDYgTDkuNTY5NzIyNjEsMTYuMjE5OTcyIEw0LjYzNzk3NDM2LDE2LjIxOTk3MiBMNC42Mzc5NzQzNiwwIEwxNC43MjA2NTk3LDAgWiBNMjIuOTQwMjQwMSwzLjMyNDM2MzY0IEMyMi4xNzMwNzkzLDMuMzI0MzYzNjQgMjEuNTg4NTc1OCwzLjk4MTkzMDA3IDIxLjU4ODU3NTgsNC43NDkwOTA5MSBMMjEuNTg4NTc1OCw0Ljc0OTA5MDkxIEwyMS41ODg1NzU4LDExLjM5NzgxODIgQzIxLjU4ODU3NTgsMTIuMTY0OTc5IDIyLjIwOTYxMDcsMTIuNzg2MDE0IDIyLjk0MDI0MDEsMTIuNzg2MDE0IEMyMy42NzA4Njk1LDEyLjc4NjAxNCAyNC4zMjg0MzU5LDEyLjIwMTUxMDUgMjQuMzI4NDM1OSwxMS40MzQzNDk3IEwyNC4zMjg0MzU5LDExLjQzNDM0OTcgTDI0LjMyODQzNTksNC43NDkwOTA5MSBDMjQuMzI4NDM1OSw0LjAxODQ2MTU0IDIzLjY3MDg2OTUsMy4zMjQzNjM2NCAyMi45NDAyNDAxLDMuMzI0MzYzNjQgWiIgaWQ9IkZPWC0yOS1QQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgWtxf as ReactComponent };","var _path, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgKion(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 130,\n height: 130,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 24h83v83H23V24z\",\n fill: \"url(#KION_svg__pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"KION_svg__pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#KION_svg__image0_1122_8778\",\n transform: \"scale(.0007)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"KION_svg__image0_1122_8778\",\n width: 1440,\n height: 1440,\n xlinkHref: \"data:image/png;base64,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AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA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vXTfB+iHLnoB7R+fdHcFSFICdrXaZVIRFxps//qzUPpLzX/vb5/+jl1lrwB3mu3WClddP1O8EgRTngLaZ5/2z6UytPv2TYenx+w21mmvwHaa7fbL/qrXilZ/MyEQrQAFO0dDo4MXBWhHlmOb0QGX7XksHushgAACmQjo9fhGqdgVaTFP9qZmGXOAAWKjqBYA+XkX/ZvtOz1u2yBTOgL2UzW7dMIl0mMC2v/q/vHnrwHPX7Ps9WHqPrpXG7u+v6eb357u6Lbt79s3Ubr+PjcIIHAgoH220p8223S4Xz4Vqv96xs23IDo1ZvPT1OnOf/o/bF+2fXrPa0Evwk2SAhTsHA2bDk6HByRHrdLMOQI6GLfnLM+yCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAYKuosAAAwnUlEQVQCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAwP+3Q8cCAAAAAIP8raexoxAyYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDAbCBP1TfCtAkevAAAAABJRU5ErkJggg==\"\n }))));\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMwIiBoZWlnaHQ9IjEzMCIgdmlld0JveD0iMCAwIDEzMCAxMzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8cGF0aCBkPSJNMjMgMjRIMTA2VjEwN0gyM1YyNFoiIGZpbGw9InVybCgjcGF0dGVybjApIi8+CjxkZWZzPgo8cGF0dGVybiBpZD0icGF0dGVybjAiIHBhdHRlcm5Db250ZW50VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KPHVzZSB4bGluazpocmVmPSIjaW1hZ2UwXzExMjJfODc3OCIgdHJhbnNmb3JtPSJzY2FsZSgwLjAwMDY5NDQ0NCkiLz4KPC9wYXR0ZXJuPgo8aW1hZ2UgaWQ9ImltYWdlMF8xMTIyXzg3NzgiIHdpZHRoPSIxNDQwIiBoZWlnaHQ9IjE0NDAiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCYUFBQUFXZ0NBWUFBQUNvb09USUFBQU1QV2xEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTSW1WVndkWVU4a1dubHRTSWJRQUFsSkNiNEpJRFNBbGhCWkFlaEZzaENSQUtDRW1CQlU3dXFqZzJzVUNOblJWUkxFRFlrZnNMSW9OKzJKQlJWa1hDM2JsVFFyb3VxOThiNzV2N3YzdlAyZitjK2JjdWVVQW9IbUNLeGJub1ZvQTVJc0tKZkZoUVl6UnFXa00wbE9BQUF5UUFRQmFYSjVVeklxTmpZSVlESnovM3Q3ZGdOYXdYWFdTYS8xei9MODJiYjVBeWdNQWlZVTRneS9sNVVOOEFBQzhpaWVXRkFKQWxQT1drd3JGY2d3NzBKWEFBQ0dlTDhkWlNsd2x4eGxLdkVkaGt4alBocmdGQUxJNmx5dkpBa0RqTXVRWlJid3NxS0hSQzdHTGlDOFVBYURKZ05nL1A3K0FEM0U2eEhiUVJneXhYSitaOFlOTzF0ODBNd1kxdWR5c1FheGNpNktSZzRWU2NSNTN5ditaanYvZDh2TmtBejVzWUZmUGxvVEh5OWNNODNZenR5QlNqdFVoN2hGbFJNZEFyQVB4QnlGZllROHhTczJXaFNjcDdWRmpucFFOY3diMElYYmhjNE1qSVRhR09GU1VGeDJsNGpNeWhhRWNpT0VPUVNjTEN6bUpFQnRBUEY4Z0RVbFEyV3lVRk1TcmZLSDFtUkkyUzhXZjQwb1VmdVcrN3N0eWsxZ3EvZGZaQW81S0g5TW96azVNZ1pnS3NWV1JNRGthWWcySW5hVzVDWkVxbTVIRjJlem9BUnVKTEY0ZXZ4WEU4UUpSV0pCU0h5dktsSVRHcSt6TDhxVUQ2OFUyWmdzNTBTcThyekE3TVZ5Wkg2eUZ4MVhFRDllQ1hSYUlXRWtET2dMcDZLaUJ0ZkFGd1NIS3RXUFBCS0trQkpYT0IzRmhVTHh5TGs0VjU4V3E3SEVMUVY2WW5MZUEyRjFhbEtDYWl5Y1h3ZzJwMU1jenhZV3hpY280OGVJY2JrU3NNaDU4Q1lnQ2JCQU1HRUFHZXdZb0FEbEEyTmJUMEFPdmxDT2hnQXNrSUFzSWdKT0tHWmlSb2hnUndXTUNLQVovUWlRQTBzRjVRWXBSQVNpQy9OZEJWbmwwQXBtSzBTTEZqRnp3Qk9KOEVBbnk0TFZNTVVzMDZDMFpQSWFNOEIvZXViRHpZTHg1c012SC96MC93SDVuV0pDSlVqR3lBWThNelFGTFlnZ3htQmhPRENYYTQwYTRQKzZMUjhGaklPeXVPQlAzSGxqSGQzdkNFMEk3NFNIaE9xR1RjR3VDc0VUeVU1U2pRQ2ZVRDFYbEl1UEhYT0EyVU5NREQ4TDlvRHBVeHZWeEkrQ0V1ME0vTER3QWV2YUFMRnNWdHp3cmpKKzAvN2FDSCs2R3lvN2lRa0VwUXlpQkZMdWZaMm80YUhnTXFzaHovV04rbExGbURPYWJQVGp5czMvMkQ5bm53M1BrejViWWZHdy9kaFk3aVozSGptQU5nSUVkeHhxeFZ1eW9IQS91cnNlSzNUWGdMVjRSVHk3VUVmN0QzOENkbFdkUzZsTHIwdTN5UlRsV0tKZ3NmMGNEZG9GNGlrU1lsVjNJWU1FdmdvREJFZkdjaHpGY1hWemRBSkIvWDVTdnJ6ZHhpdThHb3QvNm5adnpCd0IreC92Nyt3OS81eUtPQTdEWEN6NytoNzV6ZGt6NDZWQUQ0Tndobmt4U3BPUncrWUVBM3hLYThFa3pCS2JBRXRqQjliZ0NUK0FMQWtFSWlBQXhJQkdrZ3ZFdytteTR6eVZnRXBnR1pvTlNVQTZXZ0pWZ0xkZ0FOb1B0WUJmWUJ4ckFFWEFTbkFFWHdXVndIZHlCdTZjTHZBQzk0QjM0akNBSUNhRWhkTVFRTVVPc0VVZkVGV0VpL2tnSUVvWEVJNmxJT3BLRmlCQVpNZzJaZzVRank1QzF5Q2FrQnRtTEhFSk9JdWVSZHVRVzhnRHBSbDRqbjFBTVZVZDFVUlBVQmgyT01sRVdHb2ttb3VQUUxIUWlXb3pPUlJlaHE5RnFkQ2RhajU1RUw2TFgwVTcwQmRxSEFVd04wOGZNTVNlTWliR3hHQ3dOeThRazJBeXNES3ZBcXJFNnJBbmU1NnRZSjlhRGZjU0pPQjFuNEU1d0I0ZmpTVGdQbjRqUHdCZmlhL0h0ZUQzZWdsL0ZIK0M5K0RjQ2pXQk1jQ1Q0RURpRTBZUXN3aVJDS2FHQ3NKVndrSEFhUGt0ZGhIZEVJbEdmYUV2MGdzOWlLakdIT0pXNGtMaU91SnQ0Z3RoT2ZFVHNJNUZJaGlSSGtoOHBoc1FsRlpKS1NXdElPMG5IU1ZkSVhhUVBaRFd5R2RtVkhFcE9JNHZJSmVRSzhnN3lNZklWOGxQeVo0b1d4WnJpUTRtaDhDbFRLSXNwV3loTmxFdVVMc3BucWpiVmx1cEhUYVRtVUdkVFYxUHJxS2VwZDZsdjFOVFVMTlM4MWVMVWhHcXoxRmFyN1ZFN3AvWkE3YU82anJxRE9sdDlyTHBNZlpINk52VVQ2cmZVMzlCb05CdGFJQzJOVmtoYlJLdWhuYUxkcDMzUW9HczRhM0EwK0Jvek5TbzE2ald1YUx6VXBHaGFhN0kweDJzV2ExWm83dGU4cE5talJkR3kwV0pyY2JWbWFGVnFIZExxME9yVHBtdVAwSTdSenRkZXFMMUQrN3oyTXgyU2pvMU9pQTVmWjY3T1pwMVRPby9vR04yU3pxYno2SFBvVytpbjZWMjZSRjFiWFk1dWptNjU3aTdkTnQxZVBSMDlkNzFrdmNsNmxYcEg5VHIxTVgwYmZZNStudjVpL1gzNk4vUS9EVEVad2hvaUdMSmdTTjJRSzBQZUd3dzFDRFFRR0pRWjdEYTRidkRKa0dFWVlwaHJ1TlN3d2ZDZUVXN2tZQlJuTk1sb3ZkRnBvNTZodWtOOWgvS0dsZzNkTi9TMk1XcnNZQnh2UE5WNHMzR3JjWitKcVVtWWlkaGtqY2twa3g1VGZkTkEweHpURmFiSFRMdk42R2IrWmtLekZXYkh6WjR6OUJnc1JoNWpOYU9GMFd0dWJCNXVMalBmWk41bS90bkMxaUxKb3NSaXQ4VTlTNm9sMHpMVGNvVmxzMld2bFpuVktLdHBWclZXdDYwcDFrenJiT3RWMW1ldDM5dlkycVRZekxOcHNIbG1hMkRMc1MyMnJiVzlhMGV6QzdDYmFGZHRkODJlYU0rMHo3VmZaMy9aQVhYd2NNaDJxSFM0NUlnNmVqb0tIZGM1dGc4akRQTWVKaHBXUGF6RFNkMko1VlRrVk92MHdGbmZPY3E1eExuQitlVndxK0ZwdzVjT1B6djhtNHVIUzU3TEZwYzdJM1JHUkl3b0dkRTA0cldyZ3l2UHRkTDFtaHZOTGRSdHBsdWoyeXQzUjNlQiszcjNteDUwajFFZTh6eWFQYjU2ZW5sS1BPczh1NzJzdk5LOXFydzZtTHJNV09aQzVqbHZnbmVROTB6dkk5NGZmVHg5Q24zMitmemw2K1NiNjd2RDk5bEkyNUdDa1Z0R1B2S3o4T1A2YmZMcjlHZjRwL3R2OU84TU1BL2dCbFFIUEF5MERPUUhiZzE4eXJKbjViQjJzbDRHdVFSSmdnNEd2V2Y3c0tlelR3Ump3V0hCWmNGdElUb2hTU0ZyUSs2SFdvUm1oZGFHOW9aNWhFME5PeEZPQ0k4TVh4cmV3VEhoOERnMW5ONElyNGpwRVMyUjZwRUprV3NqSDBZNVJFbWlta2Fob3lKR0xSOTFOOW82V2hUZEVBTmlPREhMWSs3RjJzWk9qRDBjUjR5TGphdU1leEkvSW41YS9Oa0Vlc0tFaEIwSjd4S0RFaGNuM2tteVM1SWxOU2RySm85TnJrbCtueEtjc2l5bGMvVHcwZE5IWDB3MVNoV21OcWFSMHBMVHRxYjFqUWtaczNKTTExaVBzYVZqYjR5ekhUZDUzUG54UnVQenhoK2RvRG1CTzJGL09pRTlKWDFIK2hkdURMZWEyNWZCeWFqSzZPV3hlYXQ0TC9pQi9CWDhib0dmWUpuZ2FhWmY1ckxNWjFsK1djdXp1ck1Ec2l1eWU0UnM0VnJocTV6d25BMDU3M05qY3JmbDl1ZWw1TzNPSitlbjV4OFM2WWh5UlMwRnBnV1RDOXJGanVKU2NlZEVuNGtySi9aS0lpVmJwWWgwbkxTeFVCZit5TGZLN0dTL3lCNFUrUmRWRm4yWWxEeHAvMlR0eWFMSnJWTWNwaXlZOHJRNHRQaTNxZmhVM3RUbWFlYlRaazk3TUowMWZkTU1aRWJHak9hWmxqUG56dXlhRlRacisyenE3TnpadjVlNGxDd3JlVHNuWlU3VFhKTzVzK1krK2lYc2w5cFNqVkpKYWNjODMza2I1dVB6aGZQYkZyZ3RXTFBnV3htLzdFSzVTM2xGK1plRnZJVVhmaDN4NitwZit4ZGxMbXBiN0xsNC9STGlFdEdTRzBzRGxtNWZwcjJzZU5tajVhT1cxNjlnckNoYjhYYmxoSlhuSzl3ck5xeWlycEt0Nmx3ZHRicHhqZFdhSld1K3JNMWVlNzB5cUhKM2xYSFZncXIzNi9qcnJxd1BYRiszd1dSRCtZWlBHNFViYjI0SzIxUmZiVk5kc1ptNHVXanpreTNKVzg3K3h2eXRacXZSMXZLdFg3ZUp0blZ1ajkvZVV1TlZVN1BEZU1maVdyUldWdHU5Yyt6T3k3dUNkelhXT2RWdDJxMi91M3dQMkNQYjgzeHYrdDRiK3lMM05lOW43cTg3WUgyZzZpRDlZRms5VWorbHZyY2h1Nkd6TWJXeC9WREVvZVltMzZhRGg1MFBienRpZnFUeXFON1J4Y2VveCtZZTZ6OWVmTHp2aFBoRXo4bXNrNCthSnpUZk9UWDYxTFdXdUphMjA1R256NTBKUFhQcUxPdnM4WE4rNTQ2Yzl6bC82QUx6UXNORno0djFyUjZ0QjMvMytQMWdtMmRiL1NXdlM0Mlh2UzgzdFk5c1AzWWw0TXJKcThGWHoxempYTHQ0UGZwNis0MmtHemM3eG5aMDN1VGZmSFlyNzlhcjIwVzNQOStaZFpkd3QreWUxcjJLKzhiM3EvK3cvMk4zcDJmbjBRZkJEMW9mSmp5ODg0ajM2TVZqNmVNdlhYT2YwSjVVUERWN1d2UE05ZG1SN3REdXk4L0hQTzk2SVg3eHVhZjBUKzAvcTE3YXZUendWK0JmcmIyamU3dGVTVjcxdjE3NHh2RE50cmZ1YjV2N1l2dnV2OHQvOS9sOTJRZkREOXMvTWorZS9aVHk2ZW5uU1Y5SVgxWi90Zi9hOUMzeTI5MysvUDUrTVZmQ1Zmd0tZTENqbVprQXZONEdBQzBWQURxc3o2aGpsUFdmb2lIS21sV0J3SC9DeWhwUjBUd0JxSVAvNzNFOThPK21BNEE5VzJENUJmVTF4d0lRU3dNZzBSdWdibTZEZmFCV1U5U1Y4a2FFZGNCR3p0ZU0vQXp3YjVxeTV2d2g3cC9QUUs3cURuNCsvd3NtKzN3Zmp5UTdGd0FBQURobFdFbG1UVTBBS2dBQUFBZ0FBWWRwQUFRQUFBQUJBQUFBR2dBQUFBQUFBcUFDQUFRQUFBQUJBQUFGb0tBREFBUUFBQUFCQUFBRm9BQUFBQUF3RTh2bkFBQkFBRWxFUVZSNEFlemQvM1hieXBVQVlMODkrWCsxRlFTcDRDa1ZoTzVBcndPNkF1dFZZS2tDeXhWSUhkaGJnWmdLcksxQTNBcFdxZUR0dlE0VXl6RWxnU1IrekFEZm5ETW1UUUl6ZDc0QlFmSnlTTDE1b3hBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JBZ1FHQVJBcjhzWXBRakRQS1BQLzQ0ajI1T1J1aEtGd1RtSkxEOTVaZGZidVkwSUdNaFFJQUFBUUlFQ0JBZ1FJQUFBUUlFQ0JENExpQUIvZDNpcUd1UmdQN2pxQWJzVEdDWkFwdElRTDlkNXRDTm1nQ0JzUVRpS1RvL0lMNlA2b1Bpc2RENzZlY3luaU11K21scVdhM0VNZC9FaVBPWVY4b1d5QS9pLzFKMmlHL2V4UEYwRVRGK0tEMU84UkdvUktDNDl6L3hHUDhZZHJtZ1RpR3dCSUhpSG9OTFFNOHgvc2RTQm1xY0JBZ1FJRUNBd0RJRklzSHpFQ1AvdE16UlZ6M3E5MjBpdGVwQlRCUjhKaE9VOGdXY2w4cWZJeEVTV0lMQTZSSUdhWXdFQ0V3cklBRTlyYi9lQ1N4ZHdJdWRwUjhCeGs5Z0pJRjJKZTEycE81MDA0L0FTVFJqMWVXZWxwRzBYOFV1WjN2dVp2UHhCWEwxODlYNDNlcVJBQUVDQkFnUUlEQytnQVQwK09aNkpFRGd1MEFtRnhRQ0JBaU1KZkQ3V0IzcHB6ZUJ0VlhRZTF0SzJ1OU5Oc2tPN3licFZhY0VDQkFnUUlBQWdRa0UvalJCbjdva1FJQUFBUUtqQ2tRQ0t6L3NPSDJsMHlidXovcGMyY1lkV1orV3UvYm5IWjdlNW5xaEFqRlhYK0pZMkVSNHEwSkRGTlp1Z2V1NDJkOEwyRzN6dzYxeGZLL2podFVQTi9wUGlRTDUrNU9iRWdNVEV3RUNpeFJZTFhMVUJrMkF3S2dDRXRDamN1dU1BSUYvRjhqRW9BVGV2NnY0ZnhlQkowbmxwOG5sWDJQZng1WDFxeTd0SEx0TnhQSFl4RjFjZVdqci83U1gzMjZMWXp3dmxUSUVjaFgwMXpKQ0VVVkhnVlU4emxZU2RwMjBySDd1eERUNVJsWS9UejRGQWlCQWdBQUJBZ1RHRkpDQUhsTmJYd1FJN0JJNGpSczN1KzV3RzRFVWlNUlRIaU5OMUx4OFREQ3Y0bnBwSmVON0xHZVBWL0t5VFZKdjQycld2N2VYK2Z1Zm03aXVqQ2lRSHdiRWZGeEZsK2NqZHF1cjR3WHlqK3I5OWZobTV0dENITmNYTWJwbXZpT2N6Y2l1NGp5MG5jMW9ESVFBQVFJRUNCQWcwRUZBQXJvRGtrMElFQ0JBWUJ5QlNLQ3NvcWRNNUdhaU9TK3p6cVUwTVpDc3E2amZ5cFBFOUYzY2tLdW1OMUg5ckVjZ0RGd3VvLzExMUpPQis5Rjhmd0tuOFhoWlIrTHVwcjhtNTlOUzJPU3gvSDQrSTVydFNCNWlaSG4rVVFnUUlGQ0VRUHZhdTRoWUJFR0F3THdGSktEblBiOUdSNEFBZ1dJRjRnVnZFOEd0b21heU9TOVBveTZ4TkRIb3JHZFJ2MzE5UG15MmNmMHU2dC96MGtycFVPaXhoT2RER0djU0tGZlZLdlVJNU9QanBwNXdSNDMwUEhvN0diVkhuUjBpY0pubm4wTjJ0QThCQWdRSUVDQkFvR1lCQ2VpYVowL3NCT1loME14akdFYnhtc0NUaFBQZll0dFYxQ2Fxc2x1Z2ladXpua1Y5L0FtUFRWek5oTFEvWGhVSXg1WklBbDNGTVprclJwdGoyN0wvYUFKTnpObEZ6TjNGYUQxVzBGRjdidlhieitYUFZmN3MwbFg1WVlxUUFBRUNCQWdRSU5DL2dBUjAvNlphSkVCZ1A0Rm12ODF0WFpOQUpFWXlnWm9KNTd4c29pcUhDNnhpMTZ3Znd2VWhMamRSTXlIOUpaSWEyN2hVOWhkNEY3dmM3citiUFNZVWVCL0hmLzZHYmo0R2xIOEtTRDdYY1NUaytVWWhRSUJBYVFLbnBRVWtIZ0lFNWlud0gvTWNsbEVSSUVDQXdCUUNrUmpLRllyblVUOUgvU05pK0J6MVBHb1RWZWxQNENTYU9vdWFQeUZ4SDlSZm8zNk02azNFSHNhUnhOekU1bC8yMk1XbTB3dmtzWDgrZlJobFJCQ1ArVlZFc2k0akdsRzhJT0NiS3kvZ3VJc0FnVWtGOG5sVklVQ0F3T0FDRXRDREUrdUFBQUVDOHhhSUJNaGowdmxyalBRK2FpWkZ6K1k5NnVKR2R4b1JaVkl1RTlIM1VTV2p1MC9SNzkwM3RXVWhBaC9pR0c4S2lXWHFNS3grbm5vR3V2VnY5WE0zSjFzUklFQ0FBQUVDTXhXUWdKN3B4Qm9XZ1lvRS9sWlJyRUp0QlRMNUV6VlhPajlOT21jU1ZKbGVvSWtRSktNN3prUDc4eVdYSFRlM1dUa0NpMCs4eHZsM0ZkT1JWU2xiSUg4eVpsdDJpS0lqUUdEQkFuOWU4TmdOblFDQkVRVWtvRWZFMWhVQkFnUnFGNGlFeHpycTV4akhmZFJjNlN6cFhQYWtOaEhlMDJSMGZtaVF0eWsvQ2x6RmZ4OSt2TW4vQ2hmSWMxRlRlSXhEaDNjOWRBZmFQMW9nenlzKzREcWFVUU1FQ0F3bzBBell0cVlKRUNEd0x3RUo2SDlSdUVLQUFBRUN1d1FpeVhNYTlUcnEvOFg5bWZBNDI3V2QyNG9YYUNMQy9ORGdQdWJ5YzFUejJFNVord2Z0L0JSSDYxSFJ4V0lUc1BINFhjYzhOUlhOMVZKRHZXelBMMHNkdjNFVElFQ0FBQUVDQkw0SlNFQTdFQWdRbUZyZ1pPb0E5TDliSUJNY1ViL0d2Vm5YVWMxVklNeWtaUEk1azlEM1VTK2lOak1aMThIRGlDVFJUZXg4ZDNBRGRweENZQlhIN21xS2pxZnNNOGFjNStJUFU4YWc3MDRDMnppdlhIWGEwa1lFQ0JDWVRpQ2ZVeFFDQkFnTUxpQUJQVGl4RGdnUWVFWGc5Slg3M1QyaVFDWWlvMlpDOG5HMXMva1owWCtDcnByb014Tlo5ekhuMTFGWGNYM0p4U3JvK21aL2lZblk4NWltcHI2cFdsekV6aWVMbTNJREpsQ2xnTmY2VlU2Ym9BblVKeUFCWGQrY2laZ0FBUUs5QzBUaU1SUFArWFgyKzZpWjBEbnB2Uk1ObGk2d2pnQnY0emo0R2pXdkw2N0Vhc1ZORFBwbWNRT3ZlOEM1Q25wZDl4QzZSeDlqelhQeisrNTcySElpZ1UyY1Q3NU0xTGR1Q1JBZ1FJQUFBUUxGQ1VoQUZ6Y2xBaUpBZ01CNEFwSE15T1ROYmZTWWllZjFlRDNycVdDQlhBbHpIY2ZGZmRSY0RiKzBEeVB5RDRZOUZEdy9RdnRaSUQ4MFcwcjVHQU5kMm1PeXhybTErcm5HV1JNekFRSUVDQkFnTUppQUJQUmd0Qm9tUUtDclFDUzRNdUdsakNnUTVvK0o1MHcrcjBic1dsZjFDRFFSYWliMjd1TjRXVXdpT2xZdGJtUE1uNklxOVFnMGNZeXU2d24zc0VoampFM3N1VDVzYjN1TktIQVQ1NUc3RWZ2VEZRRUNCQTRTaU9lVjFVRTcyb2tBQVFJSENFaEFINEJtRndJRWVoZXdtcXQzMHQwTjVndk5xSmwwbG5qZVRlVFdud1h5OGJtMFJQUlZqSG43TTRWYkNoYjRHT2UydVQrWDVPcG5wV3lCaHdqUDZ1ZXk1MGgwQkFnUUlFQ0F3QVFDRXRBVG9PdVNBQUVDWXd0SVBJOHRQc3YrRnBPSWp0V0xra2oxSGNKNWZKN1hGM2EzaVBNY0hsdWVkZHZhVmhNS2ZHclBIeE9Hb0dzQ0JBZ1FJRUNBUUhrQ0V0RGx6WW1JQ0JBZzBKdEFKQzN5cSttZm8wRXJubnRUWFh4RG1laWIvWXJvU0NKOWlYRnVGai9iZFFHOGovTmRIcDl6TFBtWVU4b1cyTVo1NDZMc0VFVkhnQUNCSHdST2YvaWYveEFnUUdCQUFRbm9BWEUxVFlCQVo0RlY1eTF0MkVrZ2t6QlJyMlBqKzZobm5YYXlFWUg5QkRMUjk1aUlYdSszYXpWYit5cDlOVlAxTGRESFk3S3VxRitKTnM3bGVRNWZ2YktadTZjWGNMNllmZzVFUUlEQWZnTDV2S2tRSUVCZ0ZBRUo2RkdZZFVLQUFJSHhCQ0paY1JHOVplSjVIVlVoTUxSQXZubTVqdVB1UHVwcTZNN0diRDlXTTk1RmZ6ZGo5cW12b3dYTzR6aHNqbTZsckFiODluTlo4N0VybWszN3JZbGQ5N21OQUFFQ0JBZ1FJTEI0QVFub3hSOENBQWdRbUl0QUpGM09vbWJpT1ZlbFd0RXdsNG10Wnh4TmhIb2J4MkRXdkQ2WGtxc2FIK1l5bUlXTUk4K0JzeWp4V0ZySFFKcFpER2JlZzNnMzcrRVpIUUVDTXhYNDgwekhaVmdFQ0JRb0lBRmQ0S1FJaWNBQ0JmNXpnV1B1YmNpWjdJdDZHdzNtYnowM3ZUV3NJUUtIQ2F4aXQvczRKaStpVnY5QlNLeHF6T1R6NVdFVTlwcElZQjNIM3VsRWZmZldiZnY0c2ZxNU45SEJHcnFLODhSMnNOWTFUSUFBZ2VFRW11R2ExaklCQWdSK0ZKQ0EvdEhEL3dnUW1FYWcra1RCRkd5Wm5JaDZFWDNmUjExRlZRaVVKSkNyVUwvR01YcFdVbENIeEJMSnBhdlliM3ZJdnZhWlRHQU9pZHZ6MER1WlRGREhYUVFlWWlNZlVIV1JzZzBCQWdRSUVDQ3dhQUVKNkVWUHY4RVRJRkNyUUNUMVZoSDdXOWpramdBQVFBQkpSRUZVMTZpWjVGTUlsQ3JRUkdDZjQzaTlqWnJYYXk2K1lsL1g3SzNhODJSZFViZlJSdXlaZUg1ZlpmRExDdnF5L1piRXNrWnR0QVFJekVYQWg1eHptVW5qSUZDQmdBUjBCWk1rUkFJRUNEd0taRklpNnVmNGYvN2tSdk40dTBzQ2hRdXNJcjVjRFgxZWVKelBoaGRKcGszY21WV3BSNkRtRCtoeUJiZkVRTm5IMnJiOWRrVFpVWXFPQUFFQ3p3dWNQbitYZXdnUUlOQ3ZnQVIwdjU1YUkwRGdNQUV2ZmpxNFJmTHVMRGE3ajVxWENvSGFCRTRpNEk5eEhOOUdiV29Mdm8zWEt1aTZKaTVYUWEvckN2bk5tL2J4VVYzY3RUbjNFSy96UVErSW1pQkFnQUFCQWdTV0lTQUJ2WXg1TmtvQ3BRdGtZa3A1UmlDU0VZK3JublBsTTZ0bm5OeGNqY0FxSXExeU5YU3NkdHhHN0pkUmxYb0VhbHdGbmF1ZmxiSUZOdTIzSXNxT1VuUUVDQkFnUUlBQWdVSUVKS0FMbVFoaEVDQkFZSmRBSko5enRiTlZ6N3R3M0ZhelFNMnJvYThDL3FGbS9JWEYzdFMwQ2pwaVhjWDg1SGxmS1Z2QTZ1ZXk1MGQwQkFpOEl0QSszN3l5bGJzSkVDRFFuNEFFZEgrV1dpSkFnRUJ2QXZHaTBLcm4zalExVkxEQUttTEwxZERWSk54aTFXTW1uMzh2MkZSb1B3dmtUNytjL0h4emtiZlV1R0s3U01nQmc3cHF2dzB4WUJlYUprQ0FBQUVDQkFqTVMwQUNlbDd6YVRRRXFoWHdLZnozcVdzdHZzWXQxU1RsdmtmdkdvRzlCVEl4K0RtTysrdW9WU1FKSS9sMEV6RnZvaXAxQ09SeGRWNTZxSEg4bjBXTXE5TGpYSGg4RHpGK1A4T3o4SVBBOEFrUUlFQ0FBSUg5QlNTZzl6ZXpCd0VDQkFZVGlBVEVSVFIrRzdXSnFoQllrc0E2Qm5zYmo0SFRTZ1l0Q1ZYSlJMVmh2bzlqNjZUd2tQMzJjK0VURk9GZHR0K0NLRDlTRVJJZ1FPQmxnVnBlYjcwOEN2Y1NJRkNOZ0FSME5WTWxVQUlFNWl5UWlaR29tWGoyOWVzNVQ3U3h2U2FRYjRadTQ3R3dmbTNEcWUrUEpOUW1ZcmlaT2c3OWR4Ykk1SE94NTlmMm1HODZqOGFHVXdoczQzRi9OVVhIK2lSQWdNQUFBdm04cUJBZ1FHQTBBUW5vMGFoMVJJREFLd0tMZlJFVWlZZFYyTnhIelV1RndOSUY4bHh3SFkrTDZ3b2djaFgwUXdWeEN2R2ZBdWR4WERXbFlVUk1lY3hiL1Z6YXhQd2N6N3VmYjNJTEFRSUVDQkFnUUlCQUZ3RUo2QzVLdGlGQVlBeUIwekU2S2EyUFNEeWNSMHkzVVRNQm9SQWc4RjFnSFkrUC9BT0Z4VDQyWWpYa05zTDk5RDFrMXlvUUtIRVZkRDRQRkh1Y1Z6Q25ZNFM0YWIvMU1FWmYraUJBZ01BWUFyK08wWWsrQ0JBZzhDZ2dBZjBvNFpJQUFRSWpDbVJTTFdxdThMVHFiVVIzWFZVbmNCb1IzOGRqSlMrTExKR1V1b2pBdGtVR0o2aGRBdm5CUnJQcmppbHVpMWd5OGZ4K2lyNzF1WmVBMWM5N2NkbVlBSUVLQkh6d1djRWtDWkhBbkFRa29PYzBtOFpDZ0VBVkFtM3lJMWM5cjZzSVdKQUVwaFhJTjBpNUVubzliUmd2OXY3N2kvZTZzelNCL1BDdmxKSWZRa29DbERJYnUrTzRhci90c1B0ZXR4SWdRSUFBQVFJRUNMd3FJQUg5S3BFTkNCQVlTZURQSS9VemFUZVJSRHVOQUw1R3pVdUZBSUh1QXRmeCtDbnlHd09SblBvU3c5aDBING90SnhaWXhiRzBtamlHTnhGREV6R3NwNDVEL3k4S1BNUzkrVnZ2Q2dFQ0JPWW0wTXh0UU1aRGdFRFpBaExRWmMrUDZBZ3NTYUNaKzJBajJiQ09NV2J5K1dUdVl6VStBZ01KNUIrUnU0NWE0bVBJS3VpQkpuMmdaajhNMU80K3pSYjVnY28rQTFqQXRwZnhBVk1tb1JVQ0JBak1UYUNaMjRDTWh3Q0JzZ1Vrb011ZUg5RVJJREFUZ1VpWVhjUlFTdnJhOTB4a0RXT0JBdXNZODIxcFNlaElVdDFGWEZjTG5JOWFoNXlyb00rbUNqNzZYa1hmay9VLzFiZ3I2M2NiajJ1UDZjb21UYmdFQ0JBZ1FJQkFtUUlTMEdYT2k2Z0lFSmlSUUNRYU12RmN3bXE3R2FrYXlzSUZUbVA4dC9IWWFncHp5Sy9xUHhRV2szQ2VGNWh5QmJMbmhPZm5wWlI3L09IQlVtWkNIQVFJOUNvUXI1OU9lbTFRWXdRSUVPZ2dJQUhkQWNrbUJBaU1JckFhcFpjUk84a1hkMUZ2bzh2MWlOM3Fpc0JTQkRJSm5YK2NNQytMS08xWDlmMWViQkd6MFNtSUpvNmZkYWN0ZTl5bzdYUFZZNU9hNmw5Z0U0L25UZi9OYXBFQUFRSkZDQlR6MnFrSURVRVFJRENLZ0FUMEtNdzZJVUJnYVFLUllNaVZCWmw4WGkxdDdNWkxZRVNCYjQrendwTFFWekgrdXhFTmRIV2N3QlFya2Fmbzh6aWw1ZTF0OWZQeTV0eUlDUkFnUUlBQWdRRUZKS0FIeE5VMEFRTExGSGlTZkQ1ZHBvQlJFeGhWb0xna2RJemVIeVFjOVJBNHFyTmNCWDF4VkF0NzdCeDluY2ZtelI2NzJIUjhnYXRZL2J3ZHYxczlFaUJBZ0FBQkFnVG1LeUFCUGQrNU5USUMxUW0waWR2cTRuNGFjSXdoazg1Zm8wbytQNFZ4bmNDd0FvOUo2UFd3M1hScnZmM3EvcGR1Vzl1cUFJSDNZenovdEgxWS9WekFoTDhRd2tQYzUyZDBYZ0J5RndFQ3N4Qll6V0lVQmtHQVFGVUNFdEJWVFpkZ0NjeGVvT3FrYlp0OHpwL2RhR1kvVXdaSW9EeUJURUpmeCtOd1hVaG9Wa0VYTWhFZHdzaGo1N3pEZHNkdWtuMWtYMHE1QXIrM3YrVmVib1FpSTBDQUFBRUNCQWhVS0NBQlhlR2tDWmtBZ2ZJRW5pU2ZKUmZLbXg0UkxVdWdpQ1IwK3hWK0t5bnJPZllHWFFVZHp4Rk5VTHl2aDJPUmtkN0Y0L1pta1NNM2FBSUV4aFM0RzdNemZSRWdRS0FVQVFub1VtWkNIQVFJVkNzZytWenQxQWw4dmdKRkpLR0Q5eXJxZHI3TXN4cFpmbmo0Y2NBUjVVOXYrSUJ5UU9BZW12YXRoUjRRTlVHQXdJc0NOL0ZCVndubm1sOWZqTktkQkFnUUdFQkFBbm9BVkUwU0lIQ3dRSFB3bmhQdEtQazhFYnh1Q2J3dWtFbm9zOWMzRzI2TDlxdjhWa0VQUjl4M3krczRacHErRzIyZko5Wjl0NnU5WGdXK3hPTjEwMnVMR2lOQWdNQ1BBbmZ4M3hLU3p4bVZEMFIvbkJ2L0kwQmdCQUVKNkJHUWRVR0FRR2VCcHZPV0JXellKaFh5TjUrOWlDdGdQb1JBWUlmQWRmczQzWEhYT0RlMVgrbmZqTk9iWG5vUUdPS1BCQTY1c3JxSElXc2lCRXBKQ3BrTUFnVG1LWkRKNTdmdEI5UHpIS0ZSRVNCQTRCVUJDZWhYZ054TmdBQ0JYUUtSMU1xazgzVlV5ZWRkUUc0alVJWkFQajV2cDA1Q1J3eFdRWmR4UEhTSklsZEJyN3BzMkdXYnRxM2UydXZTcDIzMkZyaU1wTkIyNzczc1FJQUFnVzRDRDdIWnU4S1N6MDIzMEcxRmdBQ0IvZ1Frb1B1ejFCSUJBZ3NSaUlUQ3Q2UldEUGQwSVVNMlRBSTFDMHllaEk0M25ac0F2S2taY1dHeDk3a0sydXJuc2crZVRBeGRsUjJpNkFnUXFGemdiYndPdUN0c0RFMWg4UWlIQUlFRkNFaEFMMkNTRFpGQVJRTEYvMEVNeWVlS2ppYWhFdmd1OEppRWJyN2ZOUHExL0lwL0pydVU4Z1ZXZmF5Q2pqYldNZFRUOG9lNzZBaC9MMnhWNHFJbncrQUp6RkRnWFlISjV4a3lHeElCQWpVSVNFRFhNRXRpSkxBY2dVd1NsVjd5Wnpja0ZFcWZKZkVSK0ZrZ3p5K2YydytSZnI1MzRGdmFKTmVuZ2J2UmZIOENSNjJDYm8rem85cm9ieWhhZWtiZ0xoNlhOOC9jNTJZQ0JBZ2NLNUFmY04wYzIwamYrMC8xT3FqdmNXaVBBSUg2QkNTZzY1c3pFUk1nTUpGQXZHREw1UFBaUk4zcmxnQ0I0d1h5dzZQYnFkNTh4UnZSaStoL0cxVXBYeUJYUWErUENQTTg5bTJPMk4rdXd3djR3NFBERyt1QndGSUZidUk1LzZyUXdlZHJJWVVBQVFLakMwaEFqMDZ1UXdJRWFoU0lSRVFtRTlZMXhpNW1BZ1IrRU1nM1hsUCtMdSs3SDZMeG41SUZEbHJCM0g3QThiN2tnWW50elpkSURtMDRFQ0JBWUFDQlRaeGZQTmNQQUt0SkFnVHFGcENBcm52K1JFOWdiZ0tyRWdmVXJvS2JNbUZWSW91WUNOUXNzSTdIOVNTUDZUYnB0YWtaYjBHeE4rMzVmOThoNTdGMXN1OU90aDlWd09yblVibDFSbUF4QW5jeDB0OFdNMW9ESlVDQXdCNENFdEI3WU5tVUFJSGxDVVR5WWVyVmtzdEROMklDNHdpY0g1aGM3Q002SzZQNlVCeW5qUTl4bkhST0pzZTJUWVMxSGljMHZSd29jQmtmQkcwUDNOZHVCQWdRZUU3Z0llNTRHK2VYdkN5NXJFb09UbXdFQ014WFFBSjZ2bk5yWkFRSUhDblFKaDF1bzVuT3lZY2p1N1E3QVFMakNsekg0L3gwM0M3ZnZHbVRYMWRqOTZ1L2d3U2EyT3Q4anozemJ3VW81UXBzSXpTUHZYTG5SMlFFYWhWNGlNQnJTRDdYNml0dUFnUm1JQ0FCUFlOSk5BUUNjeEpvazc2bERFbnl1WlNaRUFlQjRRUnU0N3pURE5mOHN5MWZ4ajM1aGxVcFgrQjlsK2VtMkdZVlE4bXFsQ3R3V2NIcXhITDFSRWFBd0hNQ3Y4VzU1ZTY1TzkxT2dBQUJBbS9lU0VBN0NnZ1FLRTNndElTQUlwR1FxOWlLaUtVRUR6RVFtTEhBU1l6dGM1Y0VZNThHYlJMTTc5RDJpVHBjVzNtTW5IZG9mcExmRmU4UWwwMytLWkIvR093R0JnRUNCSG9XZUJmbmxrM1BiUTdaM0s5RE5xNXRBZ1FJUENjZ0FmMmNqTnNKRUZpc1FDU2kxakg0ckFvQkFzc1F5QStiUms4ZXRzbXd1MlVRVnovS0QvSGMwRHczaXZaNUk0OGpwVnlCL05hQlFvQUFnVDRGcmlyOFlPdWtUd0J0RVNCQW9LdUFCSFJYS2RzUklMQUlnVWdpVEpLSVdnU3VRUklvVzJBZGovL3pDVUswQ25vQzlBTzcvTEJydnpodThzMzh6dnQyYmUrMlNRUnVLbHVoT0FtU1Rna1EyRXNnenl1ZXcvY2lzekVCQWtzV2tJQmU4dXdiTzRFeUJacXB3bXFUQ0oramZ5c0RwcG9FL1JLWVZ1QmpuQWRXWTRiUUpzVnV4dXhUWHdjTDVJY1V6WTY5ODRPTFhiZnYyTlJORXdnOFJKOVdQMDhBcjh0SkJiYlIreVpxSHZ0WFVaVitCZTdpK2Z0ZHYwMk8xdHJwYUQzcGlBQUJBazhFL3ZUa3Vxc0VDQkFvUWFDWk1JajgzZWNwKzU5dzZMb21RS0FWeU4rRC9rdThzY3lrMVZnbEV3Um5VVS9HNmxBL0J3dmtUN1g4OXJoM201QisvL2gvbDBVS2ZJckg4N2JJeUFSRjREQ0JiZXlXTmN0ZDFIOUUzYmIxSVk3M3ZPMWJpWE5VUHEvY3R2OTEwWTlBK3I3dHA2bEpXc2xqUWlGQWdNRG9BaExRbzVQcmtBQ0JFZ1hpQmZwNXhIVldZbXhpSWtCZ1ZJRjhZNWJmaEJqdHpXVW14K0ljOUNuNjlETU9vMDcxUVoyZHhWeXRZczQyN2Q0NVo5N01IMFE1eWs3YjZPVnFsSjdtM2NsbTNzTXJiblRiaUNqcjA1SXJiaCtlM3ZEYTlTZko1OVBYdG5WL1o0R2NnM2Y3emtYbjFtMVlxc0JOQlBhL3BRWW5ycjBGdG52dllZZGVCSDdwcFJXTnZJa24rRDh3RUNEUWk4Qmx2S2k3NktXbGpvM0V3emRmbUgvdHVMbk5DQkJZaHNDbzU2STJVWkRub1dZWnZGV1BjaFBQVTI4OWQxUXhoKzlpcm02cWlGU1FCSG9VYUo5VGN1V3o1SE4vcnBsOGZodm5sTHYrbWh5M3BUZ3VtdWp4ZnR4ZTYrOHQ1bHplclA1cE5JSUNCUHdHZEFHVElBUUNCSDRRK1BXSC93MzhuL1lGK3ZYQTNXaWVBSUg2QkQ3RStXRTFWdGp4M2liZjJQcGpSbU9CSDlmUHFqMDJQaDdYakwwSEZzZ1BDbTRHN2tQekJJb1RhRi9iU2o3M1B6Ty94em1sMnVSenk5SDB6NkpGQWdRSWRCUHdFeHpkbkd4RmdNQjRBaWZqZGZXdHB3L3g3K25JZmVxdUhJRk5oSkp2SnA3K2Z1SmpkSGxjNVBHWUg0bzBVUjBuZ2JDd011cnZRY2NiMnkrUk9OaUU4V3BoempVTzkzTUVuZWNIcFZ5QnkzSkRFeG1CWVFRa240ZHhqVll6K1h3eldPc2FKa0NBd0FJRUpLQVhNTW1HU0lEQWJvRjJCZHY1N252ZE9sT0JiWXpyUzlUL2pqY1NtN2g4cVd5ZTN0bStxVHVMMi80V2RmMzBQdGRuSzVBSnhrdzB2aDF4aExrSyt1dUkvZW5xTUlFOE5wUnlCVzQ2bk9QTGpWNWtCQTRRa0h3K0FLM2JMbmsrdWVxMmFmRmJlZTRxZm9vRVNHQytBbjZDWTc1emEyUUVDTHdnMEw1SXo4U1NzZ3lCVFF6enQzZ0Q4WmVvdVlvbC83OVhpWDN5TDh2bm01QjNzZU4vUmMxRTRUYXFNbStCL0xtRjg3R0dHTWZYWGZRMWx6ZTZZN0hwaDhCVGdZZjRUNTZmRlFLTEVaQjhIbXlxdjdTdit3YnJZT1NHVDBmdWJ3N2RiZVl3Q0dNZ1VJS0FCSFFKc3lBR0FnU2VDcXllL21mQTYvbTd6eWNEdHEvcE1nUTJFY2JiZVBPUTlVdGZJVVZibVl5K2l2cVhhRE1UMHR1KzJ0Wk9rUUlmNDgzOW1HL2FMa1Bob1VnSlFSRW9YK0JUbnFQTEQxT0VCUG9Sa0h6dXgzRkhLM2R4Vzc3R1V3Z1FJRUNnQndFSjZCNFFOVUdBUUYwQzhVTDlMQ0xPcXN4WElKTVB1ZEw1YmRUTmtNT005bStpL2I5R3phU2hNbCtCL05CcWxCTEhWQjYvanFkUnRIVXlNNEZ0UEg0dVpqWW13eUh3cklEazg3TTB4OTZSejhOdjIrZmpZOXV5UHdFQ0JBaUVnQVMwdzRBQWdVVUp0Qy9VUjBza0xRcTNuTUZ1SXBTL3hwdUdxN0ZDeWpjb1VTK3kzNmpicU1yOEJFN2ovSEV4MXJEYTQzYzdWbi82SVRBVEFUKzlNWk9KTkl6WEJTU2ZYemM2Y0lzNUo1L3o3NWdvQkFnUW1FUkFBbm9TZHAwU0lQQ1NRUHVDK3FWTmpyblBUMjhjbzFmK3Z2a2J6VytqYnFjSU5mcTlpMzR6Q2YxbGl2NzFPYmpBaHpnL25RN2V5L2NPZlBYM3U0VnJCRjRUMk1RNTJMbjNOU1gzejBrZ1g5T08rWncwSjd1WHh2SmIrM3J1cFczY3R4eUJ1K1VNMVVnSkRDc2dBVDJzcjlZSkVEaE1ZSkFYMDVFNE9vdHdzaXJ6RkhnWGJ4Z21UOWhGRExrYStyY2c5aE1LOHp6T1J2c0dSUnhIbXlEOE1rOUdveUxRdTREVno3MlRhckJVZ1hoTm04OUZYdFAyUDBIdjJ1ZmUvbHZXWXEwQy82ZzFjSEVUS0UxQUFycTBHUkVQQVFLRENNUUw5Wk5vK09NZ2pXdTBCSUY4dzNCVFFpQ1BNVVE4RjNGOThvVDRZend1ZXhNWTlhYzRJbXBKdGQ2bVRrTXpGc2h2djl6TmVIeUdSdUJmQW0zeWVmMnZHMXpwU3lEL3VQUk5YNDBWMnM1cG9YRUppd0NCQlFoSVFDOWdrZzJSQUlGdkFoL2kzNGJGTEFYZWxmcUdvWTFMRW5wK2g5MkhTQUNNY2o2SlkyZ2JmRmJUeis4WU1xTCtCQjZpS1IvVTlPZXBwWUlGSko4SG01ejhFR3NKNTVGY2tLTVFJRUJnRWdFSjZFbllkVXFBd0NzQ3pTdjM3M1YzdkZqUFQvdlA5OXJKeHJVSUZMOWFwVTFDTCtGTlRTM0hURjl4anZaVEhCSHdWZFNIdmdMWERvR1pDWHlLODZ6SHg4d20xWEIrRm9qWHN4ZHg2L3JuZTl4eXBNQmRuRU1zRmpnU2NjYTczODE0YklaR1lGUUJDZWhSdVhWR2dFQkhnYWJqZGwwMzg5TWJYYVhxMmk3LzRGUVZpZDJJTXhPSU4zWHhpdllWZ1ZVa0E5YXZiTlBMM1cxeXJZcGp2WmNCYTRSQWQ0RnRQRDR1dW05dVN3SjFDclRQTi9sdFBxVmZnVXd1dnUyM3lUSmJpMk9vS1RPeTRxUHlBV2Z4VXlUQVdnUWtvR3VaS1hFU0lIQ1F3UCt6ZC8vWGJSdFpHOGVUOSt6L3k2MWdvUXJDVkJDb2d0QVZMRlZCNkFva1ZXQzZBaUVWV0Z1QmtBckNWQ0JzQmN1dElPOXpIY2ltSlZJQ2dabkIvUGppSEpnVUNjemMreGtBQkM5QnVqOWhyMGV0ekVveEM5ako0THVZQTN3ZW00b2tkbldOdmRGaHlrZmdnNDR4aXhEcGFQdHAxRThib2kvNlFDQWhBVDZZU1dpd0NIV2NRSDh1Ry9KYk4rTUNUVzh0TzVlODB1dXIzWll3VlNVa1NZNElJQkN2QUFYb2VNZUd5QkJBWUtKQVh4amk2dWVKanBHdS9qN1JOd3hXTkMvbGpVNmttNDdUc0t6NHZISGE0dXVOOFZ2UXIvdndiRmtDOWkyWSs3SlNKdHZTQkhRdVd5dG5pcy91Qjk3T3hTNTFETm01YjVvV0VVQUFBUVNPQ1ZDQVBxYkNZd2dnTUxmQVQ0NENzTUxRd2xGYk5CT1BnQlVkbW5qQ0dSNko0dTYwTkVYRTRXUXBMSG10QWtFVklsQnRQNjM2YVVMMFJSOElKQ0JnM3lwaFFpQmJBYjIyTEpYY3Ayd1RuRGN4dTVDaHRPSXo3NG5HYlhQZHVOVllDd0VFbmd0UWdINHV3dDhJSUpDRlFGOFE0cmZ5c2hqTkYwa2tYY0RWRzU2dE11cGVaTVVES1F1RS9LYUYvZVRBUG1Vc1lrZkFnWUQ5QjdTZGczWm9Bb0VvQmZyaTg0T0NvMmpvZm9TcytOeTRiemI2RnBmUlJ4aGhnTHpXUkRnb2hKU3NBQVhvWkllT3dCRkE0QTJCa0FXaE4wTGhhWWNDZHZWejY3Qzl1WnJpeXIyNTVQMzB1MUt4b1BiVDlMZXRhdnUzNHZQSGJ4L2xMd1NLRXJCOUlPa1BJb3NhTFpJOVcwQ3ZKMVowdHAvZHNGc210d0tOWGtlM2JwdWtOUVFRUUFDQklRSVVvSWNvc1F3Q0NJUVdtSFRDM1JlQ1ZxR0RwcjhnQWxrVUhmb2kraTZJR0oyRUVnajJqUXR0UHpkS3FndVZHUDBnRUpuQXJmYUJmV1F4RVE0Q1RnVDY0ck5kK2J4MDBpQ05IQXJjNjlqQkJRQ0hJdHhIQUFFRUFncFFnQTZJVFZjSUlEQllZT3BKZDdCQzBPQ01XTkNGUUtjM0RxMkxoaUpwZzZ0WUl4a0lSMkhVS2h5c0hiVTFwQm43S1E0bUJFb1RzTmVCYldsSmsyOVJBbmJsODlUejRLTEFCaWE3MDNLbEY1OS9HbWpGWWw4RjlsL3ZjZzhCQktZS1VJQ2VLc2o2Q0NBUWxVQi85WE1kVlZBRTQwb2dxNEt0aWlpTllEaXhkYlYxeE5GT3NBKy90UDNjSytVMmpyU0pBb0ZnQXFVWGtJSkIwMUY0QVozRFd2RjVGYjduN0h1MGM2MUx2VzV5enBYOVVEdFBjT2U4UlJwRW9HQ0J2eFdjTzZubkoyQXZFRndSbHQrNG5wdVJuYnd6NVNsd24yRmFsdE02dzd4S1RhbXlxNkQ3RHhkQ0dGZ3g3akZFUi9TQlFBUUNyZmF0Tm9JNENBRUI1d0o2N2RpbzBiWHpobWx3THdLS3oyd0hDQ0NBUUFRQ0ZLQWpHQVJDY0NhUTI5ZnpuY0dVMHBBVmZwUnJWVXEraGVWcCszZVhZYzcvVms3ckRQTXFPU1c3Q3JvSkFXRDdoSTU3Vy9WbGhRc21CSElYNE9ybjNFZTQwUHo2ODFmKzgydy80LzlPcjVVN1AwMG4xK295dVlnSkdBRUVzaExnSnppeUdzN2lrL21qZUFFQXJQRERsS2ZBZlo1cDhSTUtHWTdyNTZ1Z0ErWjFxNzcyQWZ1akt3VG1FTmhtK2lIa0hKYjBHWkdBaXM5V0ZLVDQ3R2RNcm5UY2FQMDBuV1NyaXlTam5qZG96cS9tOWFmM3pBUW9RR2Myb0tTRFFLa0NYUDJjL2NobitRR1QzaGpaaWUwdSs5RXJMOEZnSDRiMTI1QVZvWmtReUZYQWpwTnM0N21PYnNGNTZkeTFVdm9QbWhjRk0vaEsvVmF2ajQydnhtbTNHSUVzMzM4VU0zb2tHcDBBQmVqb2hvU0FFRUJncEVDd2dzL0krRmh0bWtBM2JmV28xNllBSGZYd2pBb3U2RlhRZXBPOVZaUnNSNk9HaXBVU0VMQkMwajZCT0FrUmdjRUNLajR2dFBBbnpYYkw1RmFnMFRIanhtMlRhYmZXWDJtZmRoSkVqd0FDeVF0UWdFNStDRWtBQVFTNCtqbi9iVUJ2Sk5xTXMveFB4cm1WbkZyb0Q4WGVsNHhON3RrSzdIVDgzMmFiSFltVkxIQ241SmNsQTNqSzNZNFpWNTdhVHJsWlB1aEllZlNJSFlGTUJDaEFaektRcElGQTRRTC9LangvMGs5Ym9FMDdmS0kvSVdCWFFhOU9QT2Y4NGY1RG1udm5EZE1nQXZNSzhNSEt2UDcwN2tGQXJ3MzJtOC9CWGg4OHBCQnJrenNGZGhscmNNU0ZBQUlJbEM1QUFicjBMWUQ4RVVoY1FDZnh0Vkt3bVNsZmdUYmYxTWdzYzRGZkF1ZEhzUzR3T04xNUZialAvTnN2WHZGb1BFNkIvbHQ3bXppalN6cXF2YUovcDJPRzNUSzlGS2hlUHNRakF3VGFBY3V3Q0FJSURCU2dBRDBRaXNVUVFDQmFnZEJmYzQ4V2dzQ1NGZUROVXJKRDkyYmdkZjhoMlpzTHVsaEFiN3c3dGNOLzF1WUNrelppRU9BRGxSaEdnUmljQ2VqMVlLbkc3S2MzbU53SzJIblVaZjhhNkxibGZGcXI4a21GVEJCQUlGVUJDdENwamh4eEk0REFkenFScjhSUVE0RkF5Z0o2dzdSTE9YNWlmMU1nOUU4RWJSVlI5MlpVTElCQTNBSzNGSlBpSGlDaU8wK2dQMmQ5T0c4dGxoNG84SjV6cVlGU0xJWUFBZ2pNS0VBQmVrWjh1a1lBZ2NrQ1hQMDhtWkFHRUVEQXM4QzZMeng0N3VhdjV2VW0zSzRFNHlyb0lOcDA0a25BdG1IN0lJVUpnU3dFOUJxd1VDS2ZOTnN0azF1Qks3M3VOVzZiekxLMXYyZVpGVWtoZ0VCU0FoU2dreG91Z2tVQWdTZUIvbVIrL2ZRM3R3Z2dnRURFQXV1UXNmVnZ4dHVRZmRJWEFnNEY3R3BHSzBJeklaQ0xnUDNzeGpLWFpDTEtvNkg0UEhnMDJQNEdVN0VnQWdqNEVxQUE3VXVXZGhGQXdMZkF4bmNIdEk4QUFnZzRFZ2o5bnhGYTJQeCtycVBCbzVtZ0Fqc0tTa0c5NmN5emdDNlkrS0F1VnA2N0tiRjUrMDlLcjBwTW5KekRDV2diYThQMVJrOEk1QzlBQVRyL01TWkRCSElWQ1AyN3FyazZwcEJYbDBLUXhJakFLd0lMRlNIV3J6enYvQ205YWRxcDBjWjV3elNJZ0Y4QlBqang2MHZyQVFYNjR6NFhUTGczdDljM2lzL3VYV2tSQVFRUThDcEFBZG9yTDQwamdJQVBBWjNRMjVVa2xZKzJhVE5LZ2Y5RUdSVkJJWENld0J3Zm1sa3hiMzllbUN5TndHd0Nka1ZqTzF2dmRJeUFRd0dkcXk3Vm5QMzBCcE5iZ1U3TlhlcFl3V3ZiZWE3MWVZdXp0QVIyS0NDQWdGc0JDdEJ1UFdrTkFRVENDTXhSeUFtVEdiMGdnRUN1QXJVS0VsWEk1UG8zNkI5RDlrbGZDRXdRNE9ybkNYaXNHbzlBZjZ4L2lDZWliQ0t4b3ZNN2lzL1pqR2ZzaWZBaFIrd2pSSHpKQ1ZDQVRtN0lDQmlCc2dYNmsvcFYyUXBrandBQ2lRb0UveTFvdlZHL2tWV1hxQmRobHlOd3EyMlY3YlNjOGM0MlU1Mm5McFRjSjgxMnkrUld3SXJQTzdkTjBob0NKd1YrTy9rTVR5Q0F3Q2dCQ3RDajJGZ0pBUVJtRktENFBDTStYU09Bd0NTQnVZNWYvRmJtcEdGalpjOENlN1cvOWR3SHpTTVFTc0IrZG1NWnFyT0MrcmxTOGJrdEtGOW5xZXBERWJiSGNacmR1TlZZQ3dFRVRnbjg3ZFFUUEk0QUFnaEVLaEQ4Q3NKSUhRZ0xBUVRTRTZqMFJuQ2xOOUgzSVVPM04rM3F0MVdmZGNoKzZRdUJnUUx2dFkzdUJ5N0xZZ2hFSzZEajdJMkNXMFViWUxxQjNlb1kwYVFiL3V5UkwyYVBJTTBBZG1QRDFySEF6SmY5K3BWdWJSNDd0WWNyMmpuZDRkL2NSeUFsQVFyUUtZMFdzU0pRdUlCZXpPMkZ2Q3FjZ2ZRUlFDQnRnWjhWL3YwTUtkaFYwSTh6OUV1WENMd21zS093OUJvUHo2VWlvSFBVdFdLOVRpWGVoT0pzZEl5NFNTaGVRczFFUU52ZDdyVlV0TTlYZXQ3bVd2TS9OVmNIcys0Nm03NDVycWpmdzRiYi9vOU90Ly9Sdk5kc2NlL2ZpbC9MTUNFUVhJQUNkSEJ5T2tRQWdRa0NYUDA4QVk5VkVVQWdDb0cxM2p3RXYrSlRiMFE2OWJ1VndDWUtCWUpBNEM4Qi91TkJ0b1RrQlhSc1hTcUpEOGtuRWw4QzlnR1ZmWGpLTkUyZ21yWjZrV3UzaDFsckg2LzBkNjM1QjgyMnY5djlHS2I2VkJDSzJaN3Erbm1uV3l0UTI2M3RWM3ZkTWlFUVhJQUNkSEJ5T2tRQWdRa0Nxd25yc2lvQ0NDQVFpNEFkeTVvWmdybFZuMnZOaXhuNnBrc0VuZ3ZjNjAxdysveEIva1lnSlFFVmVleDQrcUNaNDZyYmdkdXB1VXUzVFJiYldsVnM1dU1UdHcvdE4xcjlKODIxNWxUMzcwcXgyMXhyL2pJcHQwNS8yRDcyaCtiVzdsT1VsZ0tUZHdFSzBONko2UUFCQkZ3STZJVnlwWFpTZmZGM1FVQWJDQ0NRajREOURFY1RPaDE3YzZGanFWMXhlaGU2Yi9wRDRKbkFYbjl6OWZNekZQNU1TMERIVXpzdnBmanNmdGpzK1BDT2dwaDdXRm9jTExBZXZHU2FDMVlLMithVjVtdk4zK2w0dHRPTnpiOXBiclgvZGJwbFFzQ3B3UDg1YlkzR0VFQUFBWDhDVnJCaFFnQUJCSElRV1BXRmkrQzU2QTFGbzA3dERRWVRBbk1LZk9UTjdaejg5TzFJd0g1MlkrbW9MWnI1UzJDdm0wdU9EMDQzaDc4N2JZM0djaFd3WTlsYXMxMms4S2p6Vkp2dk5OdFB4eTMwR0JNQ2t3VW9RRThtcEFFRUVBZ2tzQXJVRDkwZ2dBQUNJUVRtUEtaeDVXbUlFYWFQVXdLZG50aWVlcExIRVVoQlFBV1pHOFc1VGlIV3hHSzAveU5obDFqTXNZZTdqRDFBNG90U29GSlVhODFXa1A2dmpubS9hOTVvWm5zU0NOTTRBUXJRNDl4WUN3RUVBZ3JvaFc2bDdoWUJ1NlFyQkJCQXdMZkFiTi9xMEp2N1ZzbmQrMDZROWhFNElYQ3JiWEIvNGprZVJpQjZBWjJYcmhYazU2K3RSeDlzV2dGZTZkalFwQlV5MFNKUWpNQlNtZHEzUHF3US9hajVnMlo3akFtQndRSVVvQWRUc1NBQ0NNd29NRnVoWnNhYzZSb0JCUElXbU8xbk9IcFdyb0xPZS91S05UdjdYY2ttMXVDSUM0RzNCUHFDaXhWaG1Od0tOQndiM0lMU0dnSWVCU3ExdmRGOFdJeTJ4NWdRZUZXQUF2U3JQRHlKQUFLUkNLd2lpWU13RUVBQUFaY0NzeDNiOUVhL1V5SzNMcE9oTFFRR0NMRE5EVUJpa1RnRlZIeGVLTElIelhiTDVFN2dYcTlKVis2YW82Vm5Bdld6di9rVEFaY0NsUnJiYUg3VU1kSUswdnhtdEV2ZHpOcWlBSjNaZ0pJT0Fya0o2RVdzVms2YzZPYzJzT1NEQUFJbU1QZTNPN2FLb2JOQW1CQUlJR0JYT0xZQitxRUxCSndMNkh6VXprVXBQanVYL2Z5ZjRsSjhkdTlLaXdqTUliQlVwL2FiMFk4Nlp0NXB0citaRVBnaVFBSDZDd1YzRUVBZ1VvRzVDelNSc2hBV0FnaGtJTENhTXdjVkEvZnFueXRTNXh5RWN2cG1XeXRuckhQTjFINTJnMktLMjlIdDFOeGwvMXJrdG1WYVF3Q0JPUVVXNm55dDJhNklmdEJzOTVrUStJNENOQnNCQWdqRUxsREhIaUR4SVlBQUFtTUZkRksrR3J1dWkvWDB4cjlSTzYyTHRtZ0RnVmNFUG1wYjYxNTVucWNRaUZaQXgra2JCYmVPTnNBMEE3TVBwZDVSZlBZN2VOcDIrZERFTHpHdHZ5MVFhNUU3Yll1UG12bDVqcmU5c2w2Q0FuVFd3MHR5Q0tRdG9CZXBTaGx3NHBUMk1CSTlBZ2k4TGhERHR6eTRDdnIxTWVMWmFRS2RWdDlPYTRLMUVaaEh3QW9tNnZsNm50Nno3dFdLejd1c000d2p1VVVjWVJBRkF0OVZNbmo2ZVk0YkhWdlpOZ3ZjS0NoQUZ6am9wSXhBUWdKMVFyRVNLZ0lJSURCR29CNnprc3QxVkFSbzFWN2pzazNhUXVCQTRKYXJIQTgwdUp1TWdBb2tTd1ZyUDczQjVGYmdxbi9kY2RzcXJTR0FRQW9DVm5pMkQvVWVkWXlsRUozQ2lEbU1rUUswUTB5YVFnQUI1d0l4WEJub1BDa2FSQUFCQkE0RXFyN0ljZkRRTEhmZnE5ZjlMRDNUYWM0Q3JRcE5UYzRKa2x1ZUFqb3VXNUhrazJhN1pYSW5jTXN4d1IzbWdKYXFBY3V3Q0FKekNCd1dvdGR6QkVDZjRRVW9RSWMzcDBjRUVCZ3VVQTlmbENVUlFBQ0JaQVhxdVNOWFFjQ0t6eC9uam9QK3N4UGc1MTJ5RzlKaUVucFFwbFV4MllaSnRORnJ6VTJZcnVpbEY2aVFRQ0J5QVN0RTMrbER2MGZOZGVTeEV0NUVBUXJRRXdGWkhRRUUvQWpvQldpcGx1MEZpUWtCQkJESVhlQ25HQkxzQ3dOZERMRVFReFlDVm14cXM4aUVKSW9TMERtby9VNnBuWWN5dVJPd2IwTmN1V3VPbGhCQUlET0JTdms4NlBocnM5MW55bENBQW5TR2cwcEtDR1FpVUdlU0Iya2dnQUFDYndtczNsb2c0UFAyVXh4TUNFd1YyS3NCcm42ZXFzajZ3UVZVK05pbzAzWHdqdlB1MEk0SEZKL25HZU4venRNdHZTSXdXcURXbW84NkZ2UDcwS01KNDEyUkFuUzhZME5rQ0pRdUVNVVZnYVVQQXZramdFQVlBWjFvMTJGNmVyMFhYYUYycnlYYTE1ZmlXUVRlRlBpb2JhbDdjeWtXUUNBaUFSMkhWd3FILzNUUS9aZ3MxS1FWbEd5KzA3eldYTG52aGhhUENPQjhCSVdIa2hDNFZwUy82MWhSSnhFdFFRNFNvQUE5aUltRkVFQmdCb0Y2aGo3cEVnRUVFSmhMb0o2cjR5UDljaFgwRVJRZUdpelFhY250NEtWWkVJRUlCRlRrV0NvTSsra05KbjhDbFpwZWF6Ym5SNWxiY2VtRFppdjhNeUdBQUFMUEJTbzk4TkFmSit5RExLYkVCU2hBSno2QWhJOUFqZ0o2a2JFM0Fiekk1RGk0NUlRQUFxY0Vvdm5XaDY1YzNTbkk3YWxBZVJ5Qk53UnV0UTN0MzFpR3B4R0lSa0RublhiTytVbXozVEtGRTFpcXE0M21UeHFELzJxMlc3czZtbkZ3TndaWXVyT2twZmtFN0RqeHU0NE45WHdoMExNTEFRclFMaFJwQXdFRVhBdlVyaHVrUFFRUVFDQnlnVHF5K096M2UvZVJ4VVE0OFF2WWZ6VFd4QjhtRVNMd2pjQ0QvcXErZVlRL1FndFlvWFNsMmE2T3BoanRUbi9wcmlsYVFtQldnVXE5UDZnSXpjOGt6VG9NMHpxbkFEM05qN1VSUU1DUHdBOSttcVZWQkJCQUlGNkJtSzdzNks5ZzVUK1JpM2R6aVRVeXRwbFlSNGE0amdyb3VHc0ZUNHAwUjNWbWZmQ3BHUDFvWTZTNW5qVWFPa2NBZ1ZnRU5qb2UyTlhRVlN3QkVjZHdBUXJRdzYxWUVnRUV3Z25VNGJxaUp3UVFRQ0FhZ2FpS0lDcENieVhUUmFORElMRUxOTnBtMnRpREpENEVuZ1JVd05qby92cnBiMjZqRkZnb3FyWG1CNDNYbzQyWlpudU1DUUVFeWhWWUtuVXJRcS9LSlVnemN3clFhWTRiVVNPUXJVQi9VbGxsbXlDSklZQUFBcWNGb3ZrZDZJTVFydzd1Y3hlQlV3SjdQY0hWejZkMGVEdzZnYjV3d1ZlNW94dVpWd09xOUt5Tm1mMUV4NTFtSzBJeG5SQ1FUMzNpS1I1R0lBZUJoWkw0cE8yYzQzaENvL20zaEdJbFZBVGVFdmduTDdSdkVYbDVmcThybm5ZT1crWmswaUVtVFNHQVFGSUMwUjMvN0lwV3ZiYTJVcXlUa2lUWTBBSWZ0YTEwb1R1bFB3VEdDT2lZWnNkYSsra05wblFGMWdyZC9zUENWcmUzOWxxbFd5WUVFQ2hQd0w0VlljZjBkem9PN010TFA2Mk1LVUNuTlY1RSs3ckFXay9iekJSV29GVjNsdzY3ckIyMlJWTUlJSUJBU2dLVlRxSVhFWjVBMjFYUWp5bEJFbXRRZ1U2OWJZUDJTR2NJakJTd1k2eFcvYVRaYnBuU0Y2aVZRcTF4M2VuV1BnaHJkTXVFQUFKbENkUks5MEhIZ1NzZEEreFl3QlNwQUQvQkVlbkFFQllDQlF2OFVIRHVwSTRBQWdnc1l5UFF5WHlubVBoNWhkZ0dKcDU0YnJXTjdPTUpoMGdRZUZYZ1FjOVdyeTdCa3lrSzJHdm5uUXBRajVwWEtTYmdJZWJvemljODVFaVRDRHdKMlBiK29QMmY3ZjVKSk1KYkN0QVJEZ29oSVZDNEFDOGFoVzhBcEk5QTRRSjFwUGx2RmRjKzB0Z0lhejZCVnNYblpyN3U2Um1CNFFJcVROalBibkNlT1p3c3hTVXJCVzIvQzJ1RnFEckZCQnpHdkhEWUZrMGhrSUtBYmZPMjc2OVRDTGJFR0NsQWx6anE1SXhBM0FKVjNPRVJIUUlJSU9CVklNcHZnZlJYdUw3M21qbU5weWpBbGZFcGpscUJNYXNnc1ZIYTZ3SlRMelhsV29sYkljcm1xbFFFOGthZ1FBRXJRdDlwdjE4WG1IdjBLVk9Bam42SUNCQ0JjZ1QwUWxHWGt5MlpJb0FBQWtjRnFxT1BSdkJnZjZYckxvSlFDQ0VPZ1ViYlJCdEhLRVNCd0dtQi92enl3K2tsZUNaamdWcTVQV29iK0tEWkNsTWxUZjhzS1ZseVJlQ1p3SjMyK2ZXengvaHpaZ0VLMERNUEFOMGpnTUEzQXRVM2YvRUhBZ2dnVUo3QU12S1V1UW82OGdFS0ZONWUvWEQxY3lCc3Voa3ZvQUtFSFZQdFB4MWtLbHRnby9RZnRUMnNDbUtvQ3NxVlZCRTRKbkNuZlg1OTdBa2VtMGVBQXZRODd2U0tBQUxIQmFyakQvTW9BZ2dnVUk2QVRwYXRZQkxsMUYveGVoOWxjQVFWVXVDanRvVXVaSWYwaGNDNUFqcVdMclNPL2U2ejNUSWhZTnZCMCs5RFYzQWdnRUFSQWhTaEl4cG1DdEFSRFFhaElJREFkejloZ0FBQ0NDRHdYUlc1QVZkQlJ6NUFuc1ByMVA3V2N4ODBqNEFMQWJ2eWVlbWlJZHJJU3FCV05yL3JBNHBOVmxtOVRNWUs3a3dJSU1CdlFrZXpEVkNBam1Zb0NBUUJCQ1JRb1lBQUFnZ2dFSGZCcEwveWxaOWZLSGREdmRVMnNDODNmVEpQUVVERlJidnl1VTRoVm1LY1JjQ0tzL2E3MEErYXExa2k4Ti9wMG44WDlJQkFNZ0ozMnRmWHlVU2JhYUFVb0RNZFdOSkNJRkdCS3RHNENSc0JCQkJ3S1pEQ2Z4eTBWY0lVSVYyT2VocHR0U28rTjJtRVNwU2xDdlJGaG5XcCtaUDNXUUsxbHJhcm9WZG5yY1hDQ0NDUW9vQVZvZG5YWnh3NUN0QXo0dE0xQWdoOEZkQ0x3ZkxyWDl4REFBRUVpaGFvWXMrK3Z3S1duK0tJZmFEY3g4ZVY3KzVOYWRHaGdNNG5helZuVno4eklUQlVZS0VGN2JlaDd6VGJmU1lFRU1oWHdQWno2ZzR6alM4RjZKbmc2UllCQkY0SWNNTDNnb1FIRUVDZ1VJRXFoYno3SzJIYkZHSWxSaWNDamNhYzhYWkNTU00rQlBxaWd2M3VNeE1DWXdUV1d1a2hoK0tVY3FqSEFMQU9BZ1VJV00zQjl2T3FnRnlqUzVFQ2RIUkRRa0FJRkN2QUo1SEZEajJKSTREQU00SHEyZDh4LzhrVnNUR1BqcnZZOW1xS3NYYm5TVXVPQlZSTXNLS0NYZmxzdDB3SWpCV3c5eU5XbkZxTmJZRDFFRUFnZWdGN25iQnZQZkI2RVhpb0tFQUhCcWM3QkJBNEtjQUx3RWthbmtBQWdkSUVkRkpjcFpCemYwVnNrMEtzeERoSjRLUEd1cHZVQWlzajRGZkFybnhlK3UyQzFnc1JlQ3BPM1JTU0wya2lVS0tBdlY3d2MwMkJSNTRDZEdCd3VrTUFnWk1DUDV4OGhpY1FRQUNCOGdTcWhGSzJLMlAzQ2NWTHFPY0oyTmh1ejF1RnBSRUlKNkFQN0t5SVVJZnJrWjRLRWJqdXQ2MFUwN1hpR2hNQ0NMd3VzTkkrZnZQNklqenJVb0FDdEV0TjJrSUFnU2tDaXlrcnN5NENDQ0NRbVVBeXg4VCt5dGlQbWZtVHpsZUI5eHJqL2RjL3VZZEFQQUlxSHF3VXpUcWVpSWdrTTRHMXRySGZOU2Z6bXR6N3B4WnZacHNONlNRa2NLMzl1MDRvM3FSRHBRQ2Q5UEFSUEFKWkNWUlpaVU15Q0NDQXdEU0I1YlRWZzYrOVZZOWQ4RjdwMExmQVRzWG54bmNudEkvQUJBRUtiUlB3V0hXUWdMMGVQNmhJVlExYW1vVVFRQ0ExQVg0UE90Q0lVWUFPQkUwM0NDRHdwa0QxNWhJc2dBQUNDQ0FRcFVCL2hTei9TVjJVb3pNcHFQZVQxbVpsQkR3TDlCK1FkSjY3b1hrRXJBaHRWMExiYlFyVFAxTUlraGdSaUVUQVBzaTAvMGVBeWJNQUJXalB3RFNQQUFJSUlJQUFBZ2lNRVBqN2lIVm1YYVV2QkxXekJrSG5MZ1h1TmFhTXAwdFIydklsOEt1dmhta1hnUU1CSzFMWmxkQXBGS0dyZzdpNWl3QUNid3ZVMnJkdjNsNk1KYVlJVUlDZW9zZTZDQ0RnUkNDUkV6a251ZElJQWdnZ01GQWdoVGU0eDFMaEt1aGpLbWsreHRYUGFZNWJpVkZ2UzB5YW5HY1JTS2tJUFFzUW5TS1FzTUExZFFtL28wY0IycTh2clNPQXdEQUJPNWxqUWdBQkJCQklYS0MvWXJaSlBBM0MvKzY3VzQxbEJ3UUNLUWhvVzkwcnppYUZXSWt4QzRFVWl0QlZGdElrZ1VCNGdidndYWmJUSXdYb2NzYWFUQkZBQUFFRUVFQUFnUkFDZGhXMEZZU1kwaFN3c2R1bUdUcFJGeXpBdHk4S0h2d1pVbys5Q0YzTllFS1hDT1Fnc09Tbk9Qd05Jd1ZvZjdhMGpBQUN3d1dxNFl1eUpBSUlJRkNFd0RMVkxQc3JaeittR2o5eGYvZSt2NklVQ2dTU0VlaVBPMjB5QVJOb0RnS3hGNkZ6TUNZSEJPWVE0S2M0UEtsVGdQWUVTN01JSUhDV1FIWFcwaXlNQUFJSTVDOWdiMnhUbnJZS3ZrczVnVUpqMzZtUTF4U2FPMm1uTDhBSFgrbVBZV29aMkd2MUoxMHhHYzFyZGt5eHBEYVl4SXZBZ2NDSGcvdmNkU1JBQWRvUkpNMGdnQUFDQ0NDQUFBSUkvQ1hRWDBITGYyS1gzZ2JCbUtVM1prVGNDK2k0YzYrN0hTQUlCQmFvMU45RFJJWGZaZUQ4NlE2QkhBVnE3ZFBySEJPYk15Y0swSFBxMHpjQ0NDQ0FBQUlJSUpDcFFGOE1hak5OTDhlMFdvMFo0NVhqeUphVkUxZEJselhlc1dSclJWLys4N0pZUm9NNEVIQWo4Q0dpRDViY1pEUnpLeFNnWng0QXVrY0FBUVFRUUFBQkJESVc0SXJhZEFhM1NpZFVJa1hncEVDalovWW5uK1VKQlB3SnJGU3NvZ2p0ejVlV0VRZ3RzRkNIMTZFN3piay9DdEE1ank2NUlaQ093Ti9UQ1pWSUVVQUFBUVRPRU9pMExNV2dNOEJtWExSUzhXUXpZLzkwamNCa2dmN25mNXJKRGRFQUF1TUUxaEY4YmI4ZUZ6cHJJWURBRVlHTjl1bnF5T004TkVLQUF2UUlORlpCQUFIbkFrdm5MZElnQWdnZ2dFQU1BbGJRWE1RUUNERU1FcmpXR3kzR2F4QVZDMFVzd005d1JEdzRCWVIycCtNbzcyMEtHR2hTTEVhQS81RFEwVkJUZ0hZRVNUTUlJSUFBQWdnZ2dBQUNYd1gwQnJ6U1gzeDE4U3RKQ3ZlcytNd2JyUlJHaWhoUEN1Z3E2RTVQM3A5Y2dDY1E4Qy93aVEvei9DUFRBd0tCQk96bmRlcEFmV1hkRFFYb3JJZVg1QkJBQUFFRUVFQWdWWUcrZ0p0cStCWTN2NFdaNXVqWlY4aTVlaS9Oc1NQcXJ3SmNCZjNWZ252aEJTcDFPZGRyNEEvaDA2VkhCTElYNElJS0IwTk1BZG9CSWswZ2dBQUNDQ0NBQUFJZUJDb1BiUVpwc3I5U3BBN1NHWjM0RU9BcWFCK3F0QmxNUUZkQnQrcXNDOVloSFNId1VzQ3VtdHk4Zk5qN0kvWk5GaVlFRUhBclVQZm50bTViTGF3MUN0Q0ZEVGpwSW9BQUFnZ2dnRUF5QXJ0a0luMFo2RnhYZnIyTWhFZkdDTmdicmRXWUZWa0hnWWdFYmlPS2hWREtGUGlnWStteXpOVEpHb0hzQkxnS2V1S1FVb0NlQ01qcUNDQ0FBQUlJSUlDQUR3RmR3YmYzMGE3dk52c3J2aXJmL2RDK2R3R3VndlpPVEFjK0JYUU1iZFIra3NkUm55NjBIVndnOUFleVZmQU02UkNCTWdTNENucmlPRk9BbmdqSTZnZ2dnQUFDQ0NDQUFBSi9DYWo0dk5BOXJoREpZNE9vTko0M2VhUkNGZ1VMOEZ2UUJROStKS2t2QXg5THEwanlKZ3dFY2hUNEpjZWtRdVZFQVRxVU5QMGdnQUFDQ0NDQUFBTDVDMWp4MllyUVRIa0kvS0xDU1pWSEttUlJxRUJUYU42a0haZkF0WTZseTdoQ0lob0VFQmdoWUwvdFhvMVlqMVVrUUFHYXpRQUJCR0lRNE91Uk1Zd0NNU0NBQUFJVEJQbzMxNXNKVGJCcWZBTDJZUUpYdE1jM0xrUTBVRUEvdzlGcDBXYmc0aXlHZ0U4Qjd6L0ZvZGRoTzJZeklZQ0FYd0hPaTBiNlVvQWVDY2RxQ0NEZ1ZPQVBwNjNSR0FJSUlJREFIQUw4WnZBYzZ2NzdYS3VvVWZ2dmhoNFE4Q2J3cTdlV2FSaUI0UUloZm9wak9Ud2Nsa1FBZ1pFQ2RoVTBIL2FNd0tNQVBRS05WUkJBQUFFRUVFQUFBUVMrQ3VoRWZLVy82cStQY0M4ekFhNzJ5V3hBUzBwSFYwRzN5dGRtSmdUbUZ2RDZzMGI5dHY2amttdzA3K2RPbHY0UnlGVEFpcy9yVEhQem1oWUZhSys4Tkk0QUFnZ2dnQUFDQ0JRaHdOWFBlUSt6L2MvdjY3eFRKTHZNQmJnS092TUJUaVE5SzF4NWZiMVVFWHFuK1VyelA5VFhsZWI3Ukd3SUU0R1VCUGpQQ0VlTUZnWG9FV2lzZ2dBQ0NDQ0FBQUlJSVBDWGdBcVRON3BYL2ZVWC8yWXNjSzJ4dHVJSkV3TEpDYWdZMXlqb0xybkFDVGhIQWZ2NmZoMGlNZHZ1TmI5VFh4ZWEzMnZ1TkRNaGdNQjBnVXI3OFhKNk0yVzFRQUc2clBFbVd3UVFRQUFCQkJCSVEyQ2ZRcGg5UVpLclFGSVlyT2t4Vm1waU03MFpXa0JnTmdHdWdwNk5ubzZmQ1FUOVdTTVZvVHZOVzgxV2lPWW5PcDROQm44aU1GS0E4OTh6NFNoQW53bkc0Z2dnNEVWZzU2VlZHa1VBQVFUU0ZVamx1R2hmSlY2a3kwemtad3BjNjBPSDZzeDFXQnlCV0FTMnNRUkNITVVMelBhelJpcENmLzZKRG8yQUZhT3ZOTGVhbVJCQTRIeUIxZm1ybEwzRzM4cE9uK3dSUUNBU2dYMGtjUkFHQWdnZ2dNQkFBUlVpYXkyNkhyZzRpK1VqWUI4NjJGZTZtUkJJU2tDRnQ3Mk9XNDJDWGljVk9NSG1LbUJYUVRkekpXZjdROTkvMDMrd3VOYmYvOUpjYVM1dDJpbGg4N0RiLy9YSnQvM3Q0WTFkU2Q3WkEvMDUwT0Z6ZHIvcVo3di9rLzJqcWY3OEwvL2tLTERRZHJEV050SGttSnlQbkNoQSsxQ2xUUVFRUUFBQkJCQkFJSCtCb0Y4aHpwOHptUXcvLzM2cDNuQzF5VVJNb0FoOEZialYzZlhYUDdtSHdHd0M5aHV5VVJTditxTHFqU1J1K3NLcUZhSlhtaGVhYzVwYUpXTkY1di8wdDNZMStGNzN6NTdPZVEyVXFUa3UrL21IZy90bjk4c0swUW44cklpYTZLS0tOQ0FLMEpFT0RHRWhnQUFDQ0NDQVFORUNvOTRRaFJLek44M3FxdzdWSC8xRUoyQlhRZHZ2aURJaGtKU0FGZHAwL0dvVmRKMVU0QVNicTRCOWtOdkVsRnhmV0cyMW43eFhYQ3ZOVm95dU5hYzJkUXE0MWZ5YlppczA3M1E3eTZTKzdaeXU3ZWZQTWZSRjZWcC8vS1RaYnBlYW1kSVRzQS9sRi8wWXB4ZDk0SWovTDNCL2RJY0FBZ2k4RU9oUGRGNDh6Z01JSUlCQXdRSi94SnA3LzZiSjNqUXpsU3V3MUhhd0tUZDlNazljNEdQaThSTitQZ0tmcjRLT01SMHJxR2x1TkY4cXZndk50NW83emJGT25RSnJORjlwdmxEY05sOXB0aHhtS3o0cmxxT1RZakxmZTgzdk5kc0h1bVpzUmYvb1lqMmFBQThlQ3F3Ty8rRCthUUVLMEtkdGVBWUJCQkJBQUFFRUVFRGdwWUFWSHF1WEQvTklZUUxYL1ljUmhhVk51cWtMV05GSE9YU3A1MEg4MlFoRS80R3U5cGxPODQxbUs1SmVhbTRpMGJkaTdhM21IeTAyelZlYUc4MWRKUEVORHNOaTFyelYvRlNNdHJ5U3kyTnd3bmt0YUZleE13MFFvQUE5QUlsRkVFQUFBUVFRUUFBQkJENy9wenVWSEg3QkFnRUpMRFJIWHpoaHBCQTRJY0JWMENkZ2VEaTRnRjBGWFFmdmRXU0hLcEMybXErMCtqODAyNjBWZ1VOTzFwOWRLWHloT0t6d2ZLTTVkQXhlODFVK1ZveTJ2QzdVMGFYbTFtdUhORDVWWURXMWdWTFdwd0JkeWtpVEp3THhDN1R4aDBpRUNDQ0FRRENCTmxoUDUzVmtCY2ZGZWF1d2RNWUNHeFZPcW96ekk3VjhCUnFsdHM4M1BUSkxUQ0M1RC9OVUhIMzZpWTZuSzNhM011ODh1ZHUrYXUxYndkbG11MUxZVjErZVVoalhyUEpzTlZzUjJvclJ6YmhXV011endDS2xENUU4Vzd6YVBBWG9WM2w0RWdFRUVFQUFBUVFRUU1BRStwUHJOUm9JUEJPNGUvWTNmeUlRdllBS09sYlFhcUlQbEFCTEVhaFQvakRQaXNHYTMydTJJdWs3elkyamdXdlZ6cFhhL1VmZi9zNVJ1OGsxby96TitFcUJtM0diWEFMNUIveHovaWxPejVBQzlIUkRXa0FBQVRjQ25adG1hQVVCQkJESVFxQ0xNSXZrcnRDSzBEREhrS3h3c3NveE1YTEtYdUJqOWhtU1lFb0NXZnk4bFlxazloL3JXYUgwSDVydGRrelJ1TkY2RjJyblVyUGRaK29GNUdHRjZFdjlhWFBYUDh6Ti9BTDEvQ0hFSHdFRjZQakhpQWdSS0VYZ1A2VWtTcDRJSUlEQVd3TDJCdU90WlVJK3J3TGpXdjNWSWZ1a3I2UUVQaVFWTGNFaUlJSCtPSHNQQmdLUkNLd2ppY05KR05xL3p2MkpqcjA2dnRWc1Z6dGY5ZnVuazFoeWJFUStyZWFMM2l6SEZGUExhYWx6NVVWcVFZZU9sd0owYUhINlF3Q0JVd0oyMHNHRUFBSUlJQkRaNzVMMko5UVVHTmt5WHhPdy8wVHI1clVGZUE2QlNBVzRDanJTZ1Nrd0xQc2QyWFdPZVZzeFdmUGhUM1FjZnZEelZIaSswREkzbW5sUGVNWkdZR1phL0VmTnV6TldZMUUvQXJXZlp2TnBsUUowUG1OSkpnaWtMc0NMWnVvalNQd0lJT0JLSUxiajRVYUpMVndsUnp2WkN2ekMxVC9aam0yMmlhbDQweXE1THRzRVNTdzFnZXgvUjFiN25QMUV4enNOalAxRXgzdk5GL3Fid3ZPRUxWVitkdDVvUDhuUlRHaUdWYWNML0RTOWlieGJvQUNkOS9pU0hRSXBDZXhUQ3BaWUVVQUFnUklFVkZDc2xDZS8vVnpDWUUvUDBUNms0RXI1Nlk2MEVGN0F2dmJQaEVBTUFxditkVGVHV0x6R29LS3AvVVRIMW02OWRsUkk0NzNubGRLMW9qN1RQQUwxUE4ybTArdmYwZ21WU0JGQUlHY0J2V2p1ZE1LVmM0cmtoZ0FDQ0F3VitHM29nZ0dXbzZBWUFEbWpMdFo2TGY5VnIrbHRSam1SU3VZQzJsNGJwV2h6OEVuN3kxS2Qyb2MzVDVQZHQ4ZHMrcnZtcC90MmE4OHg1Uyt3VW9yYi9OTWtReDhDT3A1dGRWelpxMjA3ZitPWTRRUDVkSnRMMlM4MEJ1YlBkRVNBQXZRUkZCNUNBSUhaQkRyMVhNM1dPeDBqZ0FBQ2NRaEVjZUtxaytoYUhLczRTSWdpSVFHN1lyNU5LRjVDUldBMkFSVXFka2M2dnoveTJPZUhEZ3JXdFI1NEtsQXZkWC94ZVFIK3lVSGdYMHBpbTBNaTVEQ1BnSDJvcG1QRlRyMC9hT2JZRUhZWWx1cXVEZHRsT3IxUmdFNW5ySWdVZ1JJRU9pVlpsWkFvT1NLQUFBS3ZDTmliaGhnbXJuNk9ZUlRTaTZIV0c5KzF2UUZPTDNRaVJpQnVnWU9DZFhzWXFmYTVTbjliNGNQbW56VFhtcG5TRkxDcktDdU5kWmRtK0VRZGc0QWRLN1FkWFNvV2l0QmhCNlJXZDIzWUx0UHBqZCtBVG1lc2lCU0JFZ1JpS2JxVVlFMk9DQ0FRcjBBM2QyaFdRRlFNVnNoZ1FtQ013TFcyb2NXWUZWa0hBUVRPRjdCaXBXYjd6OTNzUDNPNzFQeTlXdmxScy8wZWJLdVpLUzJCVlZyaEVtMk1Bam9NMkh2cnF4aGp5emltSHpMT2JYSnFGS0FuRTlJQUFnZzRGUGlmdzdab0NnRUVFRWhTUUc4WXVqa0Q3d3VIWFAwODV5Q2szM2VsRkRicHAwRUdDS1FyWU1VbnpmYWZ2TmxWa1AvUS9FNXpvM212bVNsdUFidUtuUW1CeVFMYS8rL1ZDRVhveVpLREcxZ09YckxBQlNsQUZ6am9wSXhBeEFKdHhMRVJHZ0lJSUJCQ1lCZWlremY2Mk9qNXhSdkw4RFFDYnduWVZkRFZXd3Z4UEFJSStCZFFFV3B2aFNqTlY1cWZpdEgzL251bWg1RUNxNUhyc1JvQ0x3UzB6emQ2MEdZbS93S1YveTdTN1lFQ2RMcGpSK1FJNUNqUTVaZ1VPU0dBQUFKbkNIUm5MT3Q4MGI1Z2VPMjhZUm9zVllBcjZVc2RlZktPV2tBRktTdEcyeFhSVm95KzFkeHBab3BJUUsvSEZLRWpHby9VUTlIK2JsZEI3MUxQSTRYNHRlL1dLY1E1UjR3VW9PZFFwMDhFRURncW9CZkc3dWdUUElnQUFnaVVJL0RIektsU01KeDVBRExyZnNVYnNjeEdsSFN5RXRDNXQxMFpiYjhiZmFIRXJFRFZaWlZnMnNud014eHBqMStNMGRzK3p1UmZvUExmUlpvOVVJQk9jOXlJR29HY0JkcWNreU0zQkJCQTRBMkIyYTVPNlF1RlhISDF4Z0R4OU5rQ2ZLaHhOaGtySUJCZVFFWG9oa0owZVBkWGVxeGZlWTZuRURoYlFQdTNuV1BlbnIwaUs1d3JVSjI3UWluTFU0QXVaYVRKRTRGMEJHWXJ2cVJEUktRSUlKQ3h3SnpIUUFxRkdXOVlNNmEyMUljYm14bjdwMnNFRURoRDRLQVFiWVdxL1JtcnNxaGJBVHQyTHR3MlNXdWxDMmovdnBGQlY3cUQ1L3o1OXNJSllBclFKMkI0R0FFRVpoT1krK3Zuc3lWT3h3Z2dVTHlBZlJXNm0wTkJiM0xYNm5jNVI5LzBXWVRBTllXVUlzYVpKRE1TNkF0VlB5cWwrNHpTU2kyVk9yV0FpVGNKQVg2S0k0bGh5aTlJQ3RENWpTa1pJWkM2d0M3MUJJZ2ZBUVFRR0Nrd3kvR3ZMd3h5OWZQSVFXTzFRUUlMTGNWL2JqbUlpb1VRaUVmQVBoVFYvRTRSV2NGcUgwOWt4VVN5TENaVEVnMG1vSDI2VldjMk0va1JxUDAwbTM2ckZLRFRIME15UUNBckFiMGd6bEtBeVFxUlpCQkFJRldCMzJZSzNBcURWaUJrUXNDbndFWWZkbEJNOFNsTTJ3aDRFdEQ1ZWFPbUx6VnpudTdKK0VTemZKWC9CQXdQVHhhNG5kd0NEU0J3cGdBRjZEUEJXQndCQklJSXRFRjZvUk1FRUVBZ0xvSGdiK3hWRUt4RXNJbUxnV2d5RnVCSys0d0hsOVR5RnVndkVyRWk5SDNlbVVhVjNUS3FhQWdtRzRIK0t1Z3VtNFFpUzBUbjEzVmtJVVVSRGdYb0tJYUJJQkJBNEpsQThDTE1zLzc1RXdFRUVKaERZSTVqMzkwY2lkSm5zUUsxM3BTdGlzMmV4QkZJWEVCRksvdS9DdXduT1pyRVUwa2wvRVgvUVhFcThSSm5XZ0pjQlozV2VDVWZMUVhvNUllUUJCRElVdUMzTExNaUtRUVFRT0MwUVBEL2dMQy9PcU0rSFJMUElPQkZnS3VndmJEU0tBTGhCRlNFdmxKdlRiZ2VpKzZwS2pwN2t2Y3BjTyt6OGNMYlhoYWUvOUgwS1VBZlplRkJCQkNZV1dDT3F3Qm5UcG51RVVDZ2NJRjJodnk1K25rR2RMcjhydEtISHpjNElJQkEyZ0lVb1lPTlh4MnNKem9xU3NDKzBhQ0VLVUw3R2ZXRm4yYlRicFVDZE5yalIvUUlaQ21nRjhOT2lkbk1oQUFDQ0pRaUVQU2JIeW9BYmdSYmxZSkxudEVKL01MWHlxTWJFd0pDWUl6QWU2MjBHN01pNnd3VytPZmdKVmtRZ2ZNRi9uMytLcXlCd0RnQkN0RGozRmdMQVFUOEM3VCt1NkFIQkJCQUlCcUJObFFrS3Z6WlZSblhvZnFqSHdTT0NMQU5Ia0hoSVFSU0UraXZvTFRmaE42bkZudEM4VllKeFVxbzZRbTA2WVdjUk1RL0pCRmw0Q0FwUUFjR3B6c0VFQmdzRVBScXdNRlJzU0FDQ0NEZ1hzQisvem5rRldSV2ZMWUNJQk1DY3dxczlXRklQV2NBOUkwQUF0TUYrbTh1Mm05Q00va1JXUHBwbGxZUitPNDd2bm5zYlN2Z1BQc0lMUVhvSXlnOGhBQUNVUWkwVVVSQkVBZ2dnSUIvZ2RaL0YzLzEwUC9zd1NaVWYvU0R3QnNDWEluL0JoQlBJNUNDZ0lwWTk0clRaaWIzQWhTeTNKdlM0cmNDN2JkLzhoY0NmZ1FvUVB0eHBWVUVFSmdvd0tleEV3RlpIUUVFVWhJSStZSnpCR1VBQUVBQVNVUkJWSTJQdTVSZ2lEVjdnVm9maXF5eno1SUVFU2hEd0g0UGVsOUdxbUd6MUhGeUdiWkhlaXRNNEkvQzhpWGRtUVFvUU04RVQ3Y0lJREJJb0IyMEZBc2hnQUFDYVF1MEljTHZmKzZnRHRFWGZTQndoc0FIYlp0YzRYY0dHSXNpRUtOQWYvSEl4eGhqeXlBbWpwRVpER0xFS2V3aWppM1YwTmhuajR3Y0JlZ2pLRHlFQUFMUkNQdzdta2dJQkFFRUVQQWowT2xOZTZnVGY2NSs5ak9HdERwTndONmtiYVkxd2RvSUlCQ0p3Rlp4N0NPSkphY3dxcHlTSVpmb0JMcm9Ja28vb0dYNktialBnQUswZTFOYVJBQUJkd0t0dTZab0NRRUVFSWhTb0EwUmxhNHd0UUpmRmFJditrQmdoTUMxdHRGcXhIcXNnZ0FDRVFub0ExVXJQdDlIRkZJdW9WUzVKRUllOFFuMDMxNklMekFpeWs2QUFuUjJRMHBDQ09RajBKL0V0dmxrUkNZSUlJREFDd0h2di8vYy83d0IvOW5iQzNvZWlFeUFLL1FqR3hEQ1FXQ2tBRC9ETVJLTzFSQ1lVY0ErUEdKQ3dLc0FCV2l2dkRTT0FBSU9CUGdaRGdlSU5JRUFBdEVLaExoU3pJclBpMmdGQ0F5QnZ3VHNQeVNzd1VBQWdiUUYrcCtWMnFXZFJYVFIvejI2aUFnb053SDIyZHhHTk1KOEtFQkhPQ2lFaEFBQzN3aUVLTTU4MHlGL0lJQUFBb0VFMnY2Ykh0NjY2My9XWU9PdEF4cEd3SzBBVjBHNzlhUTFCT1lTNEFJU3QvSkx0ODNSR2dJSUlCQmVnQUowZUhONlJBQ0JNd1Q2MzZUcXpsaUZSUkZBQUlGVUJFSzhRYWVnbDhyV1FKd21VT2xERXo0d1lWdEFJSDJCTnYwVXlBQUJCQkJBd0tVQUJXaVhtclNGQUFLK0JMZ0sycGNzN1NLQXdKd0NYbzl0L2M4WjFITW1TTjhJakJDNDFyYTdHTEVlcXlDQVFDUUN1b0NralNRVXdrQUFBUVFRaUVTQUFuUWtBMEVZQ0NEd3FzQ3ZyejdMa3dnZ2dFQjZBcnYrR3g0K0krZnFaNSs2dE8xTHdJclBIM3cxVHJzSUlCQk1vQTNXRXgwaGdBQUNDRVF2UUFFNitpRWlRQVFRVUpGbUo0VU9DUVFRUUNBakFhOGZyUFUvWTFCbDVFVXFaUW1zdFEwdnkwcVpiQkhJVHNETzM1a1FRQUFCQkJENExFQUJtZzBCQVFSU0ViaFBKVkRpUkFBQkJBWUllRHVtOVQ5ZmNEMGdCaFpCSUdZQnJvS09lWFNJRFlHM0JmNzM5aUlzZ1FBQ2tRandvVzhrQTVGekdCU2djeDVkY2tNZ0x3R3ZWd3ZtUlVVMkNDQVF1WUR2bjkrdzR2TWljZ1BDUStBdGdWb2ZwcXpmV29qbkVVQWdXb0UyMnNnSURBRUVuZ3R3M3ZoY1pOcmZ1Mm1yNTdrMkJlZzh4NVdzRU1oT2dKL2h5RzVJU1FpQmtnVzhmYUNtZ2wwbDJFM0p1T1NlbGNCMWYwVi9Wa21SREFJSUlJQUFBckVJOERyclpTVDJYbHBOdkZFSzBJa1BJT0VqVUpqQXg4THlKVjBFRU1oVG9QR1lGdi94b0VkY21nNHVVS2xIUGxBSnprNkhDQ0NBQUFJRkNTd0x5cFZVWnhTZ0FEMGpQbDBqZ01EWkF2ZG5yOEVLQ0NDQVFGd0M5L3BHaDVlckluUUZTNjFVYldaQ0lDY0J1d3E2eWlraGNrRUFBUVFRUUNBaUFRclFFUTFHenFIOExlZmt5SzBvZ1U3WmV2dEtjMUdTNXlkcjlrRW1GVzA2dlFsdDFWa2RwRU02UVFBQkJOd0wvTnQ5azE5YTVPcm5MeFRjeVV6QS9rUENkNW5sUkRvSUlJQUFBZ2pFSVBCRERFRVFRLzRDRktEekgrTlNNdXhVbkx3cEpkbkM4N1FQR3VyQ0RVZ2ZBUVRTRk5qcnRhcnhFYm8rbk51bzNjcEgyN1NKUUFRQ0syM2p0ZmFmTm9KWUNBRUJCQkJBQUlHY0JMZ0MydjFvL3VhK3lmUmI1Q2M0MGg5RE1rQ2dLSUcrZU9QbDYrdEZRWklzQWdqTUlkRDQ2RlNGdVlYYXZmYlJObTBpRUpHQVhRWE5oQUFDQ0NDQUFBS09CUHB6U0FyUWpqeHA1blVCQ3RDdisvQXNBZ2pFS2RERUdSWlJJWUFBQXE4SytQcVBWSzM0YkVWb0pnUnlGbGoyVi9ybm5HT3h1V2xzN1NyM2RiRUFlU1plNVpuV0xGbnRadW4xbFU2MXYxYWErV0R3RmFORW5sb2xFaWRoWmlCQUFUcURRU1FGQkFvVThGWEVLWkNTbEJGQUlKQkFxMjl3ZEs3N3NqZUFhblBqdWwzYVF5QlNnV3R0ODN6WUV1bmdqQTJySDFQN0RmczczVitQYllmMW9oT29vb3NvM1lEK0YySG90czl1dE05KzZ2ZmhDRU1rcEFFQ1B3OVloa1hPRjJqUFh5WC9OU2hBNXovR1pJaEFkZ0o5RWFmTkxqRVNRZ0NCbkFWOC9VZTU5Z2FRQ1lGU0JLejRiRmY4TStVbFlGZFJQbjJ3WUVYb203elNLemFibjRyTlBQUEV0WSt1bFdMZHA3blM3WU1lZTlxSCs0ZTVpVjJnSHpNYlB5WUVnZ2hRZ0E3Q1RDY0lJT0JCZ0t1Z1BhRFNKQUlJZUJHdy95aTNjZDJ5M2pqVWF0Tm1KZ1JLRXJBcjdwWWxKWnh6cnYxeGJQMHN4MnM5em9kcnoxQVMvSlA5MU4yZzdkMDFOYTBsN1pzTHRmRDhwemRzckIvMEhHTStqVGYwMnF2UUhSYlVYMWRRcm9OVHBRQTltSW9GRVVBZ0pnRVZjKzRWVHhkVFRNU0NBQUlJbkJEZzZ1Y1RNRHlNd0VpQjU4V1BrYzJ3V2dRQ3B3ck5heFd6cktDMWlDQkdRamhUb0M5RU1uWm51cjJ5K082VjUwSS9kZmlOaGNPK2wvckQ5dG42OEVIdVJ5M3dTOVRSSlJ5Y2o1L2RTNWpqUytnVW9MOVFjQWNCQkJJVTRDcm9CQWVOa0JFb1RHQ3ZmTGV1YzlZYnZJM2FyRnkzUzNzSUpDSlFheDlZSlJJcllaNFEwQmplNktucXhOUDJjSzM1ZHkyM3REK1lraEtvazRxV1lBY0phRiswY1YyL3N2QkN6ejFvT1R0SFlZcFlvQjlManExK3hxanowMno2clZLQVRuOE15UUNCa2dVYUpiOHZHYUNRM1A5ZVNKNmttYWZBdmE2Q2NIcWMwcHVHaGFqNEhkdzh0eGV5R2k3d29kOFhocS9Ca3RFSWFPd3FCVFBrT0diTFBXajV0VzZaMGhIZ3lrcTNZOVc1Ylc1MGE2ZStzZkM4UVRzKzMybTI4eFdtT0FXR0hIL2pqRHorcUxyNFE1d25RZ3JRODdqVEt3SUlPQkRvaXpxTmc2Wm9JbTZCWmR6aFRZdE9KK2ZWdEJaWU8zS0JXdy94MlpzRzN0UjVnS1hKcEFRcVJidEpLbUtDUFJRWVdzaXlkZXg0WjhVcysrby9VK1FDR3FkYUlWYVJoNWxVZURGOG5WL2plaU8wNmd5NHRaWjkwSHBabjhlZjRSSE5vdjArV2tjVFVINkI3UEpMeVUxR0ZLRGRPTklLQWdqTUo4RFBjTXhuVDg5dUJDbzN6ZEJLaEFLTjZ6ZU5ldE5nMnd0RnR3Z0htNUJtRWZpbDN5ZG02WnhPeHdsb3pOWmFzeDZ4dHYwSGxQYVRITldJZFZrbG5NQy93blZWUkUvZDNGbjIrOXlZSzJhdCtQeWc5ZGR6NTBELzN3aU1HY3R2R3VDUFZ3WCs5K3F6QlQ5SkFicmd3U2QxQkhJUTZJczdUUTY1a01OSmdlcmtNM2s4c2NnakRiSTRJdkRya2NlbVBuVE9WWU5UKzJKOUJHSVhzT01uYjZSakg2V0QrRlNJc2pHYmNpV3pGYlNzQ0wwNmFKYTdrUWhvWENxRnNvNGtuRnpDNkNKSVpNcTVoKzN6ZDlvMmJMYjdURE1LYUF6VzZyNmVNWVFTdW01TFNISk1qaFNneDZpeERnSUl4Q2JnNHl2dXNlVlljanhWNXNuYm0ybW0vQVJhZlVEV3VreExieHBxdFdjekV3SUlmQlZZOS92RzEwZTRGN09BZldBd3RRaGw2My9TdUgvUVBMV3RtSzFTakczS2h3c3A1aHNpNWk1RUo2ZjYwRDYyMG5QMXFlZlBlSHl0WmUzRG8rVVo2N0NvUTRIK2VNays2dEQwUkZQZGljZUxmNWdDZFBHYkFBQUlwQy9BVmREcGorRmJHZWlFcVg1cm1ZU2YveW5oMkFuOXRJQ1BEOFo0MDNEYW0yZktGbURmU0dEOCs5ZnlqY05RclMwcmFOVU8yNlNwa1FMOU9GaXhrc210d0gvY05qZThOWTNwUWt0UHVmcjVlV2VWSHJCOTl1YjVFL3dkUk1ERzBzYVV5YU9BNjUvZjh4aHE4S1lwUUFjbnAwTUVFUEFrNEtQWTR5bFVtaDBoVUk5WUo1VlZjczR0bFRGd0hhZVBxNS9YQ25McE9sRGFReUFUZ2FVS0d1dE1jc2s1RFI4ZkZGUUNlOUQ0Y3pYMGpGdU8vRjBYS21mTUpycXUyeGtqY3ZHTmhXUGhYMnViNFdyb1l6S2VIcFAzUmsydlBEVlBzMThGMnE5M3VmZGNnQUwwY3hIK1JnQ0JKQVg2VHhyYkpJTW42Q0VDUHc5WktMVmxkRExJaVdCcWd6WXNYcWNmaUdrN3NUZjJQZ28zdzdKaEtRVFNFS0FBR2ZFNDZUaDJvL0NXSGtQY3FHMHJhTlVlKzZEcDB3TDJHbFdkZnBwbkpnaDBFOVlkdldxL0w5bCs1V3V5NDRIdHN6ZStPcURkdndSa2JOYWNSNGJaSUhaaHVrbXpGd3JRYVk0YlVTT0F3SEdCcStNUDgyZ0dBbloxMnlLRFBKNm5rR1ZoL1htU2hmM3QvT3BuK1cwMDU3ajlGN1pwa0s1bkFkdEg3R285cHNnRTlQcGRLYVJmQW9SbC9UeW9QejZNQ0lEOTFJVzgxN3B2TTVNSGdSbS96aCtxWUhtdGJZZ1BqenhzTzlha2JKZTZlZkRVUE0yK0ZQamo1VU04OGlSQUFmcEpnbHNFRUVoZWdOK0NUbjRJMzBwZy9kWUNLVDJ2RTBJcmxxeFNpcGxZQndtNHZ2cTVVcThVMVFiUnN4QUMzMjEwYksxd2lFN2dUaEhaYTE2b2FhT09IclV0ckVOMVdHby9NbDRxZHh0ZkpqOENyWjltWDI5VjQzcWpKV3hzUTAzVzE0UDZ2ZE84Q05WcDd2MzBscUdQdjdtenZwWGY3cTBGU242ZUFuVEpvMC91Q09RcDRMVDRreWRSc2xtRnVIb3FKTTVLblhHU0hWTGNmMStOUGdockhYY1Q2Z29reDJIVEhBS3pDVkFNbTQzK1pjY3FnTmhyWGYzeUdlK1AyT3VyRmJNZU5NL1J2L2NFNSs1QXJrdkY4REIzSEpuMzM0WE9UK05hcWMrNXpyblg2dnRSTVd4MHl6UkJRSVoyRExUOTAvWlRwa0FDZWgrd0M5UlZrdDFRZ0U1eTJBZ2FBUVJPQ1hBVjlDbVpMQjZ2ZERKVlo1SEpYMGxjWjVRTHFmd2w0UFFEc0g1N1g0R0xBQUpuQ2RUYWQ5aHZ6aUx6czNCZkFKbjdBNEZhMlQwb2xqdk5sWjlNeTJ0VmxsYlVzdUxXb3J6c2cyWTh4OWY1YlorZGMxeXRiL3NablVmTmRWRHRURHFUbXhuYS9ybk1KS1ZVMG1oVENYU3VPQ2xBenlWUHZ3Z2c0RlBBYVJISVo2QzBmYmJBOWRsclJMaUNUZ3pYQ3F1S01EUkNHaSt3N1Q4QUc5L0N5elc1K3ZtbENZOGdNRVNBZldlSWt2OWw3RFY3emtMV1lZWnIvZkg1UHp6cml6T0h6M0gvREFINVdWSExpbHV4ak8wWjBTZTNhQnN5WW8zdFN2M1ZJZnQ4cGE5S3p6MG9KcHR0bTJNYUlOQmJQV3BSekFaNE9WN2tOOGZ0WmRjY0JlanNocFNFRUVDZ0x3SlJoTTV6VTdBcjI5WXBwNmI0N1ExYkZvWDBsTWZCY2V4N3RlZjBtTk52NTd4NWNEeFFORmVNZ0gxajVxYVliQ05NVlA2MXd0cEVGdHJUNisramJSK2E3VyttTXdSa3R0Yml2MnZHN2d5M3NZdUcvRHAvdnovRStPRmRMVC83OE9oT2N6WFdzb1QxNUxOU25udzROTjlndC9OMW5VYlBGS0RUR0NlaVJBQ0I4d1cyV21WLy9tcXNrWUNBZlMwdjVUYytWbnl1RW5BbXhPRUN0M3FUNk94NDAyL2ZNYjRKSEM3Q2tnak1ML0JMNHE4Vjh3dE9peURtWTVpZFE5aHI4YU8yRVFyUkE4Ylo5aVhOZDFyVVpxWXdBbTJZYnI3MEV2djU2VnFSMmo1N3A3bjZFalYzUGd2SXhJNjVuelNuL0I0cDlkSGNwWjZBNy9ncFFQc1dwbjBFRUpoRm9DOEdPYjBpY1paRTZQU1lnSjFZeGZ6Rzlsak1ueC9UeVdHdE81dVRDL0JFaWdLZGpqZGJ4NEhiTm1MYk9WT2NBdnM0d3lLcVp3SzJEeVg1V3ZFc2orVCsxR3VkSGNPV0NRUnUyd2lGNkRjR1N1TnBZL21nZWYzR29qenRWdUEzdDgyZGJxMGZZOXR2VTVqV0N2SlJNZC8xY2FjUXM3Y1l6VUR6NytvZ2xmSHpaakZ6dzYzTGkxRm16c1ZiOXhTZ3ZkSFNNQUlJekMzUUY0VzZ1ZU9nZnk4Q2E1MXNyYjIwN0tsUnhXdHZkTzNLQkthOEJLNWNwcVB0cEZKN1ZoQmhpbGZnVXFIdDR3MlB5QTRFN0xXaVB2aWJ1NTRGRWoyRzJldXpIWGYvcS9qdk5DODlNeVhSdkJ6c3FtZjdFTWVLVzVpRUg3VTJZSmQzQWZ0eTFkVmFEZGxQY3p4b1hybHFOSlYybExQdG56ZG1vSm45Yy82QkMvYUIwZnlwam8rQUF2UjRPOVpFQUlFMEJKd1doOUpJdVpnbzdhYzRrampoc3BORWpZcGRQV1MzVFBrSTNPdURydFp4T3ZabW55bGVnVVpqdmxONDcrTU5rY2llQ2ZDQnpqTVF6My9hTVN6bDE3cTE0bjhxYXRuOUlpZWR0NnlWK0tQbVRaRUFFU1R0NGZ6aWFGWWFheHZqNWRFbjAzaXdWcGlmbE1lajVhSTU1ZVBQSUhIbHVOS0NWbmptOVcyUVdKQ0Y3b1Awa25nbjN5Y2VmelRoNnlEd1p6VEJsQm1JZmVYQnJraGlRdUNGZ0hiUFQzclFYcWlaOGhQWUs2WEx2aUFVYlhiYUJ1OFUzRHJhQUFsc2pJQnRlejlxMit2R3JIeHNIVzBudFI1L09QWWNqMFVoWUdOK29URzMyKzgwWG8rNnFldytVL1FDVnhxM0p2b29FdzlRKzhSS0tkZzVWMDZUN2UrTjVsKzFEZTF5U3V4WUxockR0UjYvMWx4cFpwcFBJTWg3VzQxM3BSU3RrTG1ZTDFVdlBUZHExZmJaMWt2ck16V3E4YXJWdGUyZmRzc1VqOEJlMjlvLzRna24za2k0QWpyZXNTRXlCQkJ3SjJCWHF0a2JDS2I4Qk95RStVRW5aTXRZVTFOc2Q0cHRIV3Q4eERWYTRLTk9OcnZSYXg5ZjhjUHhoM2swRWdFYjg4UFhrcXRJNGlLTXR3WHNHelAyZXNIa1NhRDN6ZkVZWnR2TlJyTmRGZjJvMmE2d3JEd3h6dEtzOHZuOFZYN2Qyb2RxZHM1U3pSSUluUjRLL0hiNGg4Zjd0cy9tZUd4Y0s2OEgyNlkxMi9GLzZkSFFlOU9LMzM1TzZzRnkwbHg3NzVBT3poVzRQM2VGVXBlbkFGM3F5Sk0zQWdVSjlFV2lqd1dsWEZxcWR1TDhFTnZKcGVLeE4zUjJWY202dEFFcElOK2RqaXMzTHZQVXRySldlMG0vUVhMcEVXRmJuV0xhSHNhbGJhRFYzell6eFM5Z3J4T2IrTU5NT3NKclJWOGxuY0hid1Z0K1ZyQjd0TmQzelRlYWt6MXVLL2FWNWsvSzU3K2FTeGcvcFpuTWRPODdVaHQvOVdGenpsT2w1RGFhbno1QVNxWVlyZkdwTk5zeDVsSHgzMm11TlRQRktSRHFBNk00c3o4anF1L1BXSlpGWHhIUWdlSFBWNTdtS2Y4Q1FiNm01RDhOZXZBcG9OM1Vpb0ZMbjMzUTlxd0NlL1grWGtXaFp0WW8xTG0yTmR2TzdFMWRwWmtwUDRITHZ2am9KRE50THdzMVpHOHc3SllwVG9Hclk4Y1dqVjJ0Y0IvaURKbW9qZ2hjYUJ5N0k0L3owQVNCL2pYUHpyRktuVG9sM21xMklvUzlKK2wwRzkzVXY5YXNGTmhQbXUyVzE1em9SdWx6UUoyMm9RdWZvZlhiZ3UyemxjOStJbTY3VTJ5dDVxajIyWU45OUYrS3JkYk1sSWJBUDdUUDd0TUlkZDRvdjUrMyszeDYxOEhpejN5eVNUSVRDdEJKRGx2WW9MV2IxdXFSUWtGWTlqbDYyNnJUMjdsT0JMU2QzYWovNnprU3A4OGdBbHR0VzA3L0F6cTJtU0RqTnFVVHUrTDl4MU1OYVB6dTlOejYxUE04SHBYQXZjYnlYVlFSWlJDTTlnRSs0UDkySER2OTJXcitRN01kUCt4KzhFbmpVcW5UcGVhZk5OZjlmZDB3UlM3UWFKdTU4aGtqNXgwdmREczkwbXEyZ3JUdHN6dmRCcGswRnJVNnN2bG56YmEvTXFVbHdIbkZHZU5GQWZvTXJOY1cxWUhqejllZTV6bnZBaFNndlJQbjBZRjIxUS9LWkpOSE5tVHhpa0NuNSt4cTZQdFhsbkg2Vkg4Q2Fkc1hKNDlPWmFOcXJGTTBQMnE3MnJ1S1N0dE5wYlllWGJWSE8xNEVMalhtN2FtV0djTlRNdEUrL3VwNFJodDFwSUZwKzdkektudnRZM3BkWUtlbk84MVdsTGJiejdPT0xYWTdhZXJQUDZ5Tld2UGZOZHQ1aU0wTHpVenBDYnpUZG5IdksyeHRMN1p0L082ci9ZemFiWlZMcC9rL21uZWE5M2Fyc2JIYnM2ZitYS0hTaXViL1EzOXI5NW5TRnJqU050R2tuVUs0NkNsQU83TFdBWVVDdENQTGtjMVFnQjRKVjlwcTJsVVh5dGxPdXFyU2NpODAzMVo1MytyRXdHNjlUTnFtYWpWOHJkbHVtZklXdUhTOUxXbjcrU1N5VmQ1c1NXYzM2UHhDNDNpakxPMDR3QlMvUUtmOStDTCtNT09QVU50OXBTanRuTXJPclppbUNleTArdjZNSmlvdGF6TlRYZ0o3SFovKzRUTWw3YmNQYXIvMjJVY0JiZHUrYXZ2c2tHbXBoUlpERm1TWkpBWDQrWTB6aG8wQzlCbFlyeTJxQXprRjZOZUEvRDgzNkEyaS96RG9JUVVCN2E2MTRyU1RMNlp5QkZxbCtxdE82aHNYS1dzYnF0VE9Tdk12bXUwK1UvNENXMjAvNzEybXliSElwYWEzdHV5Szl6ZmZaR29zN2MzbG8yYmVaSG9iQ3FjTnY5ZTRicDIyV0dCajJ1NzVBSzNBY1NkbHJ3S05qazFYdm5yUVBydFIyeDk4dFUrN0NCUW13TTl2bkRuZ0ZLRFBCRHUxdUE3bUZLQlA0WVI1bkFKMEdPZHNldEV1YXlkZmRoTEdWSmJBWHVuZWEvNU5zeDAzT3QyK09XbDdXV2locGVaYTg4LzlmZDB3RlNMUUtVOHJSTnIyNDJ6U2R2VzdHclB0aWlsT2diTUtBUnJQamRMZ2pYMmNZL2s4S3R1WEwxenYwODg3eWZsdmJlKzE4dVBEL0p3SG1kem1FSGluNDlLOWo0NzdjMWsrS1BXQlM1dWxDbmpiWDNNRnBRRHRhR1IxUUtjQTdjaHlaRE1Vb0VmQ2xicGFmeEpteForcVZBUHkvaUxROXZlc0tIMDQvZFQvWVFYQ3hlRVQzQzlPNEZKdkNGdVhXZXNZdEZaN2R5N2JwQzJuQWxhZ3RBOGR1bk5hMWJqYW0vdnFuSFZZZGphQnN6NWdtQzNLQ0R2bUhDckNRU0drSEFTOC92eUc5dHRQUWxybEFFVU9DRVFnNEhWL2pTQS9MeUg4elV1ck5Jb0FBZ2hFTHFDaXdsNG5ZbGNLOHlIeVVBblB2MERkZC9GMDY3OUhla2hKd0g1Nm8zVVpjRis4NFVwWmw2anUyL3A0YnZHNUQrRld0M3l3NEg0OGZMUzQxcjVvNDd6ejBYam1iVzZVWDVWNWpxU0hRR2lCeGxlSE90YlZhcHZpc3k5ZzJpMVJvQ2t4NmFrNS85L1VCbGdmQVFRUVNGV2dMeXBac1lBSkFRUVFPQ1pnaFNrZnh3Z3IzaXlPZGNoalVRanNGY1YyVENSNlhXbTBYanRtWGRhWlJZQVBnczVrVnlGcnFWV3V6MXlOeFJGQTRHMkJYOTllNVB3bCtnKzkrV0QwZkRyV1FPQTFnWSt2UGNsenh3VW9RQjkzNFZFRUVDaEVRTVdDRzZXNkt5UmQwa1FBZ2ZNRXJuU01zR0trczBsdkJDczFSdkhHbWFpWGhtNG5qcnVQRHkyOEpFcWozOVhhSjljNG5DVkEwZjRzTGhaR1lKREFUcTg3dnQ2UGJCUkJOU2dLRmtJQWdTRUM5dk92M1pBRldlWmJBUXJRMzNyd0Z3SUlsQ253VG1rN0xUS1Z5VWpXQ0dRbDhON1RtMEdLTjNGdkpwM0dmVHNsUkszZmF2MzdLVzJ3YmxDQjYvNEt3YUNkcHRpWm5LeVFWYWNZT3pFakVMbUFsNnNwdGM5V3lwc1B2U01mZk1KTFRzREx0eFdTVXhnUk1BWG9FV2lzZ2dBQ2VRbjBuMkJlNVpVVjJTQ0F3QVFCdTdKaFVoSHlXTjk2STFqcjhkV3g1M2dzR2dGWFZ5Ky9qeVlqQW5sTG9OSUNWbGhsZWtXZ0w5SlR5SHJGaUtjUUdDbXcxM3IzSTlkOWF6VitldU10SVo1SDREd0J1MUNoT1c4VmxuNFNvQUQ5Sk1FdEFnZ1VMYUFYRWp2eDJ4YU5RUElJSUdBQzlrYlF2aFhoWStMcVp4K3E3dHEwRHg0YUY4MnBuVTd0T0duTFJUeTA4YWJBTC8yVmdtOHVXUEFDVnNoYUZKdy9xU1BnUytCZXJ4bDI3dUYwMGpGdHJRWnJwNDNTR0FJSWNQWHpoRzNnK3ducnN1cUJnQTd3Zng3OHlkM3dBdmFtOFRKOHQvU1ltNEIyNWQrVjB6SzN2TWdIQVFRR0MxenE5YVFkdlBUQUJmczNnbHlKTk5CcnBzV2NqcjNHM0lwMWo1b3AyczAwb0dkMmEwVWdYeDgrblJsS1hJdHJXNjRWMFVOY1VSRU5BdGtJWE9qWTA3bk1odGNmbDVxMGhjQVhBZnVneVBaWHUyVWFJY0FWMENQUVdBVUJCTElXc0RlZnZLaGtQY1FraDhCSmdWdWRWTFlubngzNVJQOUdrS3VmUi9vRldzMCt5RzVkOXRXL1Fmbm9zazNhOGlxdzZndXRYanRKcmZIKytNV0haNmtOSFBHbUltQ3ZQWjJIWU8yY2d3OC9QY0RTWk5FQ1RYOXVWelRDbE9RcFFFL1JZMTBFRU1oT29EOEo1QXFvN0VhV2hCQjRVOEN1ZnJ4NWM2bHhDMnkwR204RXg5bUZXdXZLVTBkYnRkdDVhcHRtM1F2d1FkRkxVenQrVlM4ZjVoRUVFSEFnY091Z2pXK2E2RDlJVzMveklIOGdnSUFMQVM0cW1LaElBWG9pSUtzamdFQitBaXBDdGNycWZYNlprUkVDQ0p3UTJPbHhMd1ZJdlJHczFQYjFpWDU1T0E0QnU2S2w4eEdLMnQyclhlY0ZCaCt4MHVabmdhWDIyVFVXZndsdy9HSkxRTUNyd0s1L3orRzZFNzZ4NEZxVTloRFEvK3ZoNjF5eEpGd0swQ1dOTnJraWdNQmdBYjNBMkZWcnplQVZXQkFCQkZJVnNBTGhsZlo1dS9VeGNVV2xEMVYzYlhvdkVHdmJhaFR1emwzSXRPUlo0SU1Lcnd2UGZhVFNQSVdzVkVhS09GTVVjSDQxcFk1ZE40S29Vc1FnWmdRaUYrQmlBZ2NEUkFIYUFTSk5JSUJBdGdKMkZUUkZnMnlIbDhRUStDeGd4V2N2KzduZUNOYnFZWVZ6MUFJZk5mNWRnQWo1VmswQVpFZGRXUEc1K0c4dDZQaTFsa090bVFrQkJOd0xkUDJIazg1YTFqNWJxYkhpajEzT1FHa0lnYThDWFAzODFXTFN2ZThucmMzS1h3UjB3UC96eXgvY21VT2cxWXY0NVJ3ZDAyZmVBdHExN1kzb28yYTdaVUlBZ2J3RTN1dTFZK3NySlIwLzdOaFIrV3FmZGljTDdOWENoYllCdS9VK2FYdDRVQ2UxOTQ3b3dKV0FiUnVkcThaU2FvZHpuNVJHaTFnVEZialM4YVZ4R1R1dk1TNDFhUXVCTHdKQnp4Vy85SnJwSGE2QXpuUmdTUXNCQk53STZPVFFYblRzdzQwZ0JRbzNVZE1LQWdnTUVMQ3JHYllEbGh1MWlONEliclJpTldwbFZnb2xjTnNmNDBQMXgxWFFvYVRkOUhQbnBwa2tXN0dmRGxva0dUbEJJeEMvUUtmWG5zWmxtRHJuV0ttOTJtV2J0SVVBQXA4RjdKdHlleXpjQ0h6dnBobGEwVUgvVHhSbUZlQUs2Rm41OCsrOFA3SDdsSCttWkloQUVRSmVYek4wdkxEQ2pWMzlUQUVuM3MzSkNnQVhvY1BUdG1GRnpYWG9mdWx2dE1BN2JTZjNvOWRPY0VWdG83WENma2d3ZEVKR0lCV0JTeDFYV2xmQmNzN2hTcEoyRUhnaFlJWG5DKzJ2ZHN2a1FJQXJvQjBnMGdRQ0NPUXZvQmNlZXdONmxYK21aSWhBOWdJN1pmak9jNWJYYW4vaHVRK2FueVp3TzIzMTBXdGJ2N3lSR2MwWGZNVVMveE5SKzVDRUNRRUUvQWpZQitDdDQ2WTU1M0FNU25NSTlBTDJVMzJjc3puY0hDaEFPOFNrcVZrRnFsbDdwL01pQlBRQzFDalJ1WW9XUlJpVEpBS2VCVHExZituelpGSlhJbFhxWTZPWktWNEJLd0EwYzRTbmZqdjErM0dPdnVsemxFQ2xmZnBtMUpvSnJ0VG5XaVVZT2lFamtJcUEwL2NSMm1kckpjNDVSeXFqVDV3cENlem1PbGRNQ2VuY1dMOC9kd1dXUHk2Z2cvK2Z4NS9oMFZBQ09rQ3dQWWZDTHJ3ZjdlNTJkZEM2Y0FiU1J5QTFBYnVDNFZJdkZUdWZnZXY0OEtEMmE1OTkwUFprQWRzTzJzbXRqR3hBMjhoQ3F6NXF0bHVtK0FYczJIR2hiY1p1czUyMFhWWkt6clpMSmdRUThDUFE2RGh5NWJKcDdiZS9xNzJseXpacEN3RUVQZ3RjYW45dHNYQXJ3QlhRYmoxcERRRUVDaERvVHg2YkFsSWxSUVJ5RWJEQ2taMUk3bndtcERlQ3RkcTNtU2xlQVI5ZmZ6NHJXMjJIdGozeUh4S2VwVGJyd2d2MVhzSlBjZGlINjB3SUlPQkh3STc3cnE5K3ZsR2JTei9oMGlvQ1JRdlloMFZ0MFFLZWt1ZUtVVWV3ZXRQNXA2T21hR2FrZ0E0U2JNOGo3Vmh0bklCMmUzdXp0aDYzTm1zaGdFQWdBWHZUZDZtWGlKM3YvblJNc0tzSEs5LzkwUDRrZ1F0dEM5MmtGaHl0elBiaUNESmNNM1ljYWNOMUY2NG5iWXRyOVVZQk9odzVQWlVuY0t2ang0MnJ0TFhQVm1yTHJuNWV1R3FUZGhCQTRMT0F2Vys0MFA1cXQweU9CYmdDMmpFb3pTR0FRRGtDZW1HNlVyYjM1V1JNcGdna0tmQk8rK3JPZCtSNk03aFJINVh2Zm1oL2tvQmQwZEpOYXNIdHlsd0Y3ZGJUZDJ2WHZqdVlvMzBkdXhicXQ0UXJ2T2ZncFU4RVRNQitTL2JHTVlWOVlHVDdMaE1DQ0xnVnVOWCt1bmZiSkswOUNYREY2SlBFeEZ1ZHZQMDVzUWxXbnlpZ0F3WGI4MFJEVmo5Zm9IL2o5cUExbCtldnpSb0lJT0JaNEVvdkRZM25QcjdyandPUDZvYzNnNzZ4cDdWL29lMmhtOWFFMjdXMTdkanJSKzIyVlZyektCRGttT0l4L2hkTmF4dTA0dlBteFJNOGdBQUNyZ1F1OWRyVHVtcE0rK3hLYlgxeTFSN3RJSURBRndIN21iYkxMMzl4eDdrQVYwQTdKNlZCQkJBb1NVQXZVbnZsYXk5VXU1THlKbGNFRWhDNDB2N1pCSXJ6V3Ywc0F2VkZOK01FYnJVOWRPTlc5YnJXcmRmV2FkeTF3TFdLUDluczY4cWxGdERHTlJMdElZREFGNEd0WG52YUwzOU52Tk1mZi9qR3drUkhWa2ZnaU1CZWoxMGRlWnlISEFwUWdIYUlTVk1JSUZDbWdFNHM3UVhMaXRCdG1RSmtqVUIwQWxmYUw1c1FVZW5OWUtWK0tPQ0V3QjdmaHgyanQrTlg5N2RtWDVoby9QVkF5NDRGS3JXWDAvNU9JY3Z4QmtKekNCd0lkTHJ2K2tORys4Qzcwc3lFQUFKdUJXNTFUdGE1YlpMV25ndFFnSDR1d3Q4SUlJREFDQUc5WU8wMVd4RzZHYkU2cXlDQWdCc0JLelRhYno0M2Jwb2IxTXJkb0tWWWFFNkJqM2FNbmpPQU4vcDJYYUI0b3p1ZW5paHczWC93TkxHWmVWZFhEamVLWURsdkZQU09RTllDVnk1ZmU3VFAydjY2eVZxTTVCQ1lSK0JlKytwMm5xN0w2dlg3c3RMMWw2MWVFUDcwMXpvdER4SFFRWVB0ZVFnVXkzZ1gwT0hBQ2xKcjd4M1JBUUlJSEFyczljZWxYZ3AyaHcvNnZLOTl2VmI3RHo3N29PM0pBcDIyaVl2SnJYaHVRTnZTamJxNDl0d056YnNUc0Rlcjc5dzFGN1lsYlcrVmV2eGQ4eUpzei9TR1FERUM5dE1iVHYraldlMjN0czh1aXhFa1VRVENDTmo3aHd2dHIzYkw1Rm1BSzZBOUE5TThBZ2lVSjZBWHNDdGwzWlNYT1Jrak1KdUFuVFJlYXQvYkJZN0FQbXhpaWx2Z051N3d2a1MzMVQzZS9IemhpUDdPcXY4QUt2cEFUd1JveDY3RmllZDRHQUVFcGduc2REN2l1dmk4VVVqTGFXR3hOZ0lJSEJHd2IwNXkvblVFeHNkREZLQjlxTkltQWdnVUw2QVhNaXRDYjR1SEFBQUIvd0oyMG5pcGZXN252NnV2UGFqNHRORmYxZGRIdUJlaGdGMzkzRVFZMTR1UUZLZHR4NmtVeTEvRVgrZ0RTWDRBcFdQWFN1TlZGenBtcEkyQWJ3RTdsdHQ3QUdlVDl0bEtqZkVOR1dlaU5JVEFGNEZiblgrMVgvN2lqbmVCNzczM1VFZ0hlbUg0czVCVW8wMVRCdysyNTJoSHA5ekFkR2hZSy9zazM2U1dPMnBrbnBEQVRyRmU2dkJ2Yi9pQ1RkcXZGK3JzVWJQZE1zVXJZTnRHRzI5NEx5UFR0bVhiVmZYeUdSNkpWT0M5dHJGdHBMRzlDSXRqMXdzU0hrREF0Y0NWamdtTnkwYTEzMzVTZXl1WGJkSVdBZ2g4MTJwZnZjUWhyQUJYUUlmMXBqY0VFQ2hNb0Q4SnZWTGErOEpTSjEwRWZBdnMxTUdsOXJFNTlxMFA2bnZoTzBIYW55UmdieXphU1MzTXMvTHRQTjNTNjBpQjY3Nm9PM0wxNEt0ZHEwZU9YY0haNmJBUWdhWS83M2VXcm80dkt6Vm1NeE1DQ0xnVDZOUlVzditQZ3p1RzhDMVJnQTV2VG84SUlGQ1lRSDh5YXArdzdndExuWFFSOENWZ2IvSisxQng4bjlLYndhV1NXdnRLakhhZENTUlp5TzFmTDFwbkNqVGtXMkNoRHF5b204cjBxd0lOZnR4TUJZYzRFWmdnc05PNlRuLzN1WStsMWEyMXpZUUFBbTRFN0RXUTMzMTJZM2wyS3hTZ3p5WmpCUVFRUU9COEFSVVY3T1R4UjgyY1JKN1B4eG9JSEFyWVY5NnZEaDhJZk4rdWZtYUtXOEErb0dqakR2SFY2SklzbnIrYVVkNVBidm9QcHFMUHNqOFh1VlNnOWdhY0NRRUUzQWg0SzJocG43VzJiWi9sL1lPYnNhSVZCT3g5QlB2VFROc0JCZWlaNE9rV0FRVEtFOUNMWGFlczdTVHl2cnpzeVJpQnlRTDJKc3l1V05oT2JtbGtBLzFYWWV1UnE3TmFPSUdrQzdqYXhsdFI4VG9SYm50eDBWTXlIMHoxYjd3cFFyc1lkZHBBNEM4Qk96ZnBmR0dvYlR2L29RanRDNWgyU3hLNDFmN1VsSlJ3YkxsU2dJNXRSSWdIQVFTeUZyQ1RTTTMybTFPekZkR3lCaWE1WEFVNkpYYXBmV2Z1b2x3eVJhWmNONFFCZWRuVno3YTlwRDc1K0NwMzZpWXh4MS8zSDFERkhPT1gyTFNQN1BRSFJlZ3ZJdHhCWUxUQWxmYW5kdlRhQTFkVUgwOUZhTzk5RFF5SnhSQklUY0RPRDI5U0N6cTNlQ2xBNXphaTVJTUFBa2tJNkFYUWlndFhtdTJFa2drQkJFNEx0SHJxUiswelZqQ1piVkp4NlVhZFY3TUZRTWREQk94NG1rWGhWdHQ3cDF5MlE1Sm1tV2dFa3ZxQXFqK21XaEc2aTBhUVFCQklTMkNyL2FnSkZiTDZzb3RZYko4TjFtZW8zT2dIQWM4Q3JmWWRlOS9OTkxNQUJlaVpCNER1RVVDZ1hJSCtwSlUzZitWdUFtVCt0c0N0dmRuU1BPc0hOU28rTHhUcUwyK0h5eEl6QzN5Y2UxdHhuUCt0MnB0MTIzZWNUKzdOVmYwSFZjbmtxZjFscDJCLzFHeTNUQWdnTUZ6QXJxYWM1UU5QOVd1RnRPM3dVRmtTZ2FJRjdQWHRYZEVDRVNWUEFUcWl3U0FVQkJBb1QrRGd6ZDk5ZWRtVE1RSW5CZlo2eG41VDhlYmtFbUdmc0NzYkYyRzdwTGN6Qld5YjJaNjVUdFNMYS91M25ENUdIU1RCUFJmNFJVWG82dm1ETWYvZGIyZjJZZmg5ekhFU0d3SVJDY3grTmFYMld5dCtXeUdhQ1FFRVRndnM5TlJsL3pwM2VpbWVDU1pBQVRvWU5SMGhnQUFDeHdYc1JWR3pmVEpySjVOTUNKUXUwQXJBZm5JamltS0lpa20xNGxsclpvcGI0SDJtYnpDMll1L2lwaWU2QTRHRjdsOGYvSjNFM1lQemtDYUpnQWtTZ2ZrRXJLQmw1K3l6VDlwdkd3WHhvK2I5N01FUUFBTHhDZGkrZXBucHVXRjgyZ01qK243Z2NpejJob0Rlb1A3NXhpSTg3VmxBQnhlMlo4L0dOTzlmUUllU3BYcjVwTG55M3hzOUlCQ2R3SzBPNVRjeFJhVjk4a0h4MURIRlJDd3ZCRHB0TnhjdkhzM2tBVzJEYTZWeWwwazZwYVJ4cVcyeVRURlp0cmNVUjQyWUF3bEVXZERTUGxzcGYzdnZZTzhobUJCQTRLOFBaUzcwT3J3SEl5NEJyb0NPYXp5SUJnRUVDaGZRQzZXZDNOclZEUGVGVTVCK1dRS2QwcjNVOW44VFU5cDlJYWFPS1NaaU9TcHdlL1RSVEI3VWZ0RW9GWHR0WUVwSElMbXJvSjlvKysyTnF5cWZRTGhGNEM4Qk93YmJlY28rTmhERjFGbHNtaHZOVEFpVUx0QUpJTXA5dGZTQnNmd3BRTE1WSUlBQUFwRUoyTW10WnZ0NjM1WG02RTUwSStNaW5QUUZHcVZnUDduUnhwU0tpczhMeFpOc0VTa21TOCt4Mkc5eE5wNzdpS0g1OXpFRVFReURCZXIrQTZ6Qks4UzBvUFlwSzdiWnR3cmFtT0lpRmdSbUVyRDk0Vkw3UmJUbjVCYWJabnZmd0h1SG1UWVN1bzFDd1BaVmUwOWh0MHdSQ2xDQWpuQlFDQWtCQkJBd0FiMTROcnF4cTVCYXpVd0k1Q1pnYitUZTJSc216VEcrcWRzb3ZpbzM5QXp6dWMwd3B4Y3BhUjlwOWFETlRPa0lYUGNmWktVVDhVR2tkbHpXZkttSGl0akhEbExuTGdLSEFsYkl1clQ5NGZEQldPOHJ6c2JpMVd4eE15RlFra0JTKzJwSkEzT1lLd1hvUXczdUk0QUFBcEVKNkVUU2Z0dlVUaVR0NnJja1RuNGpJeVNjT0FYdUZkYUZ0bTI3alc1UzBhaFNVTDlFRnhnQlBSZG90UTIxengvTStPK3JqSFBMTWJWS1NXMVNUMHo3MkkxeXNQTVF6a0ZTSDB6aVAxZGdweFV1dFE4a3RlMHIzczl4Sy9ibTNJUlpIb0ZFQlpMY1Z4TzFuaFEyQmVoSmZLeU1BQUlJaEJIUXllUldQWEUxZEJodWV2RW5ZRy9pN0twbm0rMStySlA5OU1ZaTF1Q0k2NHRBVVFWWjdUT2RNbSsrWk0rZEZBVHNLdWdxaFVCZmkxSGJYcXZuTHpUYkxSTUNKUWcwMnU3dHEvd3huNnVjSEFlTFc3TzlScjdUbkdRT0o1UGpDUVMrRmJqWG41ZXA3cXZmcHBML1h4U2c4eDlqTWtRQWdVd0U5TUxhYWJhcmtMZ2FPcE14TFN5TlJ2bGVhQnUyRThWb0p4V0xhZ1czampaQUFuc1NzT0pBOS9SSFFiY2MvOU1iN0EvcGhmd3lZdTF2VHovSndUYjRrb2RIOGhLdzE1Y3NQdURzejdsKzFQQzBlUTBSMlNEd1djRDIxZGd2YW1Hb0RnUW9RQjlnY0JjQkJCQklRVUF2dEZ2RnljbGtDb05GakNiUWFiN1VkbnVsT1lXcmNMSW9GaGw4eHBOdFI3Y1o1M2N5dFg0ZituaHlBWjZJVVdEVmY3QVZZMnhueDZSdDBNNUI3TVB3M2RrcnN3SUM4UXZZdVVvV3hlY25hdVhUYWJaOWxnK1BubEM0elVFZ3UzMDFoMEY1S3djSzBHOEo4VHdDQ0NBUW9jREJ5ZVE3aGRkRkdDSWhJV0FDdDlwV0x6UzNLWENvU0xSV25Nc1VZaTA4eG8vYXBycUNEYXdBdUM4NC94UlR6K3FETGUxL084MzJRWGlSSHdTbHVBRVM4NXNDZGt5MUt5bWJONWRNZEFIbFpxOGR0dCsyaWFaQTJBaVlnTzJybHpudnF6a1A4L2M1SnhjeU43MXAvVE5rZi9UMVVrQUhJYmJubHl3OFVvQ0FEajhMcGJuUmJMOWJ5NFJBREFLdGdyalNZYm1MSVpnaE1mVDcwYU9XdGYySktWNEJlK054b1czTGJvdWR0TDJ1bGZ4ZHNRQnBKdjVlMiswMnpkQlBSNjF0Y2FsbmJWdTBXeVlFVWhUWUtlZ3I3WjkyVzhTay9YYWpSTzE5dzZLSWhFa3lGNEhpOXRWY0J1NHBENjZBZnBMZ0ZnRUVFRWhVd0FveG1tOFUvb1htVmpNVEFuTUpkT3I0VXR1anpYWS9wY25lalBGR0xQNFJzNnVmOS9HSDZUZENHVFRxb2ZQYkM2MDdGcmhXMFNlN1k0eTJ4YWVyb2ZsNnYrTU5odWFDQ055cmwwdmJqb1AwRmtrbnluZXJVT3hxYU11ZkNZRVVCQm9GV2R5K21zTEFuQk1qVjR5ZW8vWEtzanFoL1BPVnAza3FnSUJlU05tZUF6alRSZndDT2h5dEZLVjkzYmVLUDFvaXpFUmdyenlzTUhpVFlqN2FaeXJGL1poaTdJWEZiTDlqYVIrME1VbEEyMjJ0bXdjd2toTFlhaHUyUW0yV1UzOHN0Zk1QT3c5aFFpQjJnU3kvbFhBdU91OGJ6aFZqK1JrRTJGZG5RUGZSSlFVN1I2bzZjUDlYVFMwY05VY3pJd1IwUXMvMlBNS05WZklWMEhGcG8rejRlbDIrUXh4TFpsc0ZjcXREOEQ2V2dNNk5RL3VLRmZIcWM5ZGorZUFDVjlyT211QzlSdHdoMjI3RWczTTZ0QXR0eDkzcHA5Ti9SdHRsclN6dU5GZWFtUkNJVGFCVFFPKzBIKzVpQzJ5dWVMVFBMdFQzUnJPOWIyQkNJQllCMjBldjJGZGpHWTdwY2ZBVEhOTU5uMXJnQmV4Smdsc0VFSWhDUUMvV1d3VmlWd3ZlYXQ1SEVSUkI1Q1RRS0prTGJXZDJWVUt5MjFkZktLbHpHcGhNYzdHditUZVo1allscld5dnBwMkNFdm02VnBqTmV0SysybXJtL0NQclVVNDJ1WHRGL3FPMnoxMnlHWGdJWEI2SFArZG5Sa3dJekMyd1ZRQ1g3S3R6RDRQYi9pbEF1L1drTlFRUVFDQXFnV2NubFBaQ3pvVEFWSUZHRFZ4bzI3clMzRTF0TElMMXN5OEdSV0RzSWdRS3JVY1V0UTlhRWFVNThoUVB4U3RROXg5OHhSdWhvOGkwZmQ2b0tTdEVONXFaRUpoVFlLL083YXBubSswKzB4RUIyWFJtcEtjdU5kdnJDeE1Db1FVNmRYaXA3VERwQzF4Q282WFNId1hvVkVhS09CRkFBSUVKQW5vUnR5c2JySURERzhFSmpvV3YydGoybyszb1NuT1hnNFdLUUJ2bFVlV1FTK1k1dE5ybTJzeHpuSkxlclZhbW9ESkZNUHk2eFh6d3BYM1h6ait1UlB5ajVqWThOVDBpOFBrLzJydlFkbmlQeFRBQldkbnJydTJ6dHU5Mnc5WmlLUVFtQzJ6VmduMURvWjNjRWcxRUtVQUJPc3BoSVNnRUVFREFqNEJlMER2TmRqSjVvZGxlNUNsYStLSE9xZFZHeVZ6WWRxTzV5eVd4L3ZjTythM0ROQWJVUGp4ak9pSFE3NWNmVHp6TnczRUtWRG9HM2NRWm1wK290SjNheitoY3FuV2JXeis5MENvQzN3allPUzVYUFg5RGN0NGYybWNiemZhZXdWNkhlYzl3SGg5TER4Zm90T2lsdGpXdWVoNXVsdVNTM3ljWmRZUkI2eVR5UVdIVkVZWldURWc2WUxFOUZ6UGFKT3BLb0MvQ2JkVGVMNW9YcnRxbG5lUUY3RTJHRmJUc2pVZVhmRFpIRXRDMmIxY2dybzg4eFVOeENkZzJlQlZYU1BGRjB4L0xIeFVaeC9INGh1ZFVSSGFjdmREMmJiZkZUZHBtYXlWdHgrRktNeE1DcmdXMmF2QzIxUDNMTmFhMXgzc0dINnEwS1lGYnpWdjIxVEsyQlFwMmpzWlpCMlFLMEk0c3h6YWpneGJiODFnODFpdGVvRCtwWEFuaVduTlZQRWk1QUoxU3R4UEIrNXhQQkxXOUw1WGo3NXFaNGhlNDBMYll4Ui9tL0JGcXU5NG9pZy96UjBJRVp3Z1Uvd0dMdHR1MXZEajNPR09qWWRGWEJWbzlhMWRSN2w1ZGlpZEhDL1R2R2V6MWhvdFhSaXV5b2dSYXpWZWM0NVcxTFZDd2N6VGVPaEJUZ0haa09iWVpIYnpZbnNmaXNSNENCd0k2bnEzMDU3ODAyeTFUR1FMM1N2TlhIVWJ0TnZ1SjEreGtodmhXMitSTk10RkdFS2kyN1VlRlVVVVFDaUVNRjdEZnU5d05YenpQSmJYdDFzck1DdEYyeTRUQXVRS2RWckRYak9iY0ZWbCtuSUQyMllYVzNHaTI5d3lWWmlZRWhnaDBXdWhLKzJvN1pHR1d5VXVBZ3AyajhlVE5yQ1BJQ2Mzb0lNYjJQTUdQVlJGNExxRGpXcVhIN09xR3RXWTd5V1RLUzJDdmRCck5IM1g0N0hSYnhLVHRlcVZFUHhXUmJOcEoydlo1b1czVGJwa0dDckI5RDRTS2E3RlcyL2xsWENITkY0MjI0VnE5VTRpZWJ3aFM2OWxlSSt3bncvZ0svNHdqcC8xMnJlNXR2NjAwTXlGd1RNRDJWZnQyUW5Qc1NSNHJRNENDbmFOeDFrSDNRVTNWanBxam1SRUNPcGl4UFk5d1l4VUVoZ2owSjVZL2E5blZrT1ZaSm1xQmUwWDNxdzZaZGx2VXBPMTRvWVIvMTF3VmxYaWF5ZDVxRzcxSk0vUjVvK2FjZEY3L2tiMi9LL0dZL0pxVnR1Tkt6MXRCYTYyWkNZSG5BbnM5UU9INXVjck1mMnUvWFNrRXUzaWxuamtVdW85SGdIMDFuckdZUFJJS2RvNkdnSk45UjVBVG10R0pPOXZ6QkQ5V1JXQ0lRUCtHMEU0dS82VjVPV1FkbG9sQ1lLY29mdFZzdiszY1JSSFJERUZvKzcxUnQxYlFZSXBib05OMmVoRjNpUEZHcCsyOFZuUjJZUVJUT2dKczh5ZkdTdHZ6UWs5dE5OdDVSNldacVd5QnZkS244Qno1TnFEOWRxa1FyUkM5MHJ5SVBGekM4eVBBdnVySE5lbFdLZGc1R2o0ZFpPMUV2M2JVSE0yTUVLQUFQUUtOVlJDWUlOQ2ZYTm9iUWp1NXJDWTB4YXArQkRvMWU2LzVWeDBmZDM2NlNLZFZiYStWb3JXcm54ZnBSRjFzcEZmYVpwdGlzM2VRdUxiM096V3pkdEFVVFlRVHVOVjJmeE91dS9SNjBuWnQ1eHRQNXgzcEpVREVVd1QyV3BuQzh4VEJHZGJWUG12blhHdk5Wb3l1TkRQbEw5QXB4VjgxODdNNCtZLzEyUmxTZ0Q2YjdQZ0tPcmhTZ0Q1T0UreFJuYlN6UFFmVHBpTUV2aFhRTVhDcFIreU40YythN1Q3VFBBS2R1cjNYL0tzT2lidDVRb2l6VjIyakZPVGlISnJuVWUyMDdmNzQvRUgrUGs5QTIzdWxOUjdQVzR1bFp4YllxMy83RHdtN21lT0l2dnQrKzE0clVDdEdWNXFaOGhYb2xOcXRadnNHbCswalRJa0thTCt0RmJydHN5dk5DODFNZVFsMFN1ZFcrMm1UVjFwazQxS0FncDBqVFIxUUg5UlU3YWc1bWhraG9JTWQyL01JTjFaQndMVkEvOGJRVGk1LzBteTNUSDRGZG1yK1Y4MUYvN3pHYThUOW14NTduV2FLWCtCU0wrZHQvR0hHSDZHMit4dEZlUjEvcEVSNElOQm8rNzg2K0p1N2J3aG9PN2Z6RFB2dzIyNFhieXpPMCtrSTNDdlVYN1UvMkMxVFJnTGFaMjAvWFduK2wrWmFNMVBhQXJhUDJuOW8zcWFkQnRHSEVLQmc1MGhaQjFKN1kxczdhbzVtUmdqb29NZjJQTUtOVlJEd0xhRGpZNjArN00yaDNTNDFNMDBUNkxSNnEvazN6VndSSklTM0psNmozeEtLNXZsV0wrV1gwVVNUZUNEOW0veEhwV0Z2OXBuU0VialVmdENtRTI0Y2tmYmJ1eFcxbm9yUmNRUkdGT2NJZEZyNFY4MzJRWXpkWjhwY1FQdHRwUlJ0djdWaU5POFJoSkRJMUNsTzl0VkVCaXVtTUwrUEtaaVVZK0hON2Z5anB4TVZ0dWY1aDRFSUVIaFZvSCtEV0d1aG56VGJpYWJkWjNwZFlLK25XODIvMmEwT2RUdmRNZzBVMERhMzBxS2ZCaTdPWXZNSzJNOFBzSDA3SEFOdC94czE5OEZoa3pUbFg0QVBZaVlhOStjYWR1eW5HRDNSTXREcWpmcjV0NDcvOTRINm81c0lCYlRmVmdyTDlsdUswUkdPVHg5U28xdjIxWGpISi9ySUtOZzVHaUlkTUIvVVZPMm9PWm9aSWFDVEZyYm5FVzZzZ3NEY0FqcCsxb3BocWZtSC90YnVsenp0bEx6TlR3WG5ybVNNcWJsciszcFVHOVhVZGxqZnU0QmQ4WGJsdlpjQ08yQWZTSExRcjdRL05FbEdIbG5RMnY0WENxblcvRlNNdHIrWjVoZTRWd2ovMXN3M3VlWWZpK2dpMEg1YkthaVZacnRneFc2WjVoTmdYNTNQUHJ1ZUtkZzVHbElkSkNsQU83SWMyNHhPMU5tZXgrS3hIZ0tSQ2VpWVdpdWtwZVovOXJkMmY2RTV0NmxWUXAzbVB6VHZkQmhyZGN2a1NFRGIwWTJhdW5iVUhNMzRFOWlyYWJ2NnVmUFhSYmt0YXo5WUtmdFA1UW9rbVhtbnFHMmZzSDJEeWFHQTlvZWxtck45d2dyU2RwOHBqSUJ0eTYxbWlzNWh2TFBwUmZ2c1FzblVtbTJmdGR0S001TmZnWHMxejc3cTE3akkxaW5ZT1JwMkhSZ3BRRHV5SE51TVR0TFpuc2Zpc1I0Q2lRam9XRnNyVkRzUlhXcTI0blNsK2VsdjNZMXkyaW1xdldhNy9aL21Wbk5Ic1UwS0hxZitEY3VqdXJEdGd5bHVnVnZ0RHpkeGg1aDJkSnluSmpsKzdCZWVoNjEvbmFqVnpVK2E3WGFwbWNtZGdKMzN0SnAvMHpIKzNsMnp0RlN5Z1BiYlN2bXZORC90dDR1U1BSemx2bGM3dG85YTBkbCtCc3IrWmtMQXVRQUZPMGVrbk5nN2dwelFqQTZVYk04VC9GZ1ZnUndFZEN5dSt6enNaSFI1a0pPZHBCNU9sZjZ3ZWN4a0oyVzdneFh0N3ovNnZ3K2ZzeXVhN1crbUdRUzBMWHhRdDVzWnVxYkw4d1JzSDdsZ1h6a1A3ZHlsKzJQanc3bnJzZnlzQXJadjhNMkFnRU9nL1dTaDdtck5kczZ3N08vcmhtbWdRS2ZsV3MyLzJhMk82NTF1bVJEd0txRDk5bWxmL1VFZDFab3J6VXl2QzlqclM2djVhVi9kdmI0NHp5TGdSdUI3TjgzUWlnNThkbEpmSXpHZmdFNXkySjduNDZkbkJCQkFJQm9CdlNaWEN1WXhtb0FJNURXQjkzcjUzcjYyQU0rNUVlQmMxWTFqNEZZYTdSOVhnZnVrdXdNQjdUZTEvclFDbHhXMzdOWm1wcjhFV3Qzc05Gc1J5ejUwNzNUTGhNQ3NBdHBuRndxZzFtejc2dE9IU2ZaWXlWT241Si8yVmZ0d3lPNHpJUkJjZ0lLZEkzSk82aDFCVG1oR0IxSzI1d2wrcklvQUFnamtJcURYNUR2bHNzNGxuNHp6NlBUU2ZaRnhmbEdsMWhmUzdJSUpwclFFTHJXZnRHbUZuSGUwL2I1VUtVdWJyY0JsdHpibk91MlYyRlB4cXJQNzJpWXBZT1U2MmhubXBYMTJvYlNXbW12Ti85UmNhYTQxNXpoMVNzcjJUL3QyWm12M3RiL3VkY3VFd093QzM4OGVRU1lCNktCbUovUjFKdWtrbVlZT3JHelBTWTRjUVNPQUFBTHVCQ2l5dWJNTTBOSTd2WFRmQitpSExub0I3UitmZEhjRlNGSUNkclhhWlZJUkZ4cHMvL3F6VVBwTHpYL3ZiNS8ramwxbHJ3QjNtdTNXQ2xkZFAxTzhFZ1JUbmdMYVo1LzJ6NlV5dFB2MlRZZW54K3cyMW1tdndIYWE3ZmJML3FyWGlsWi9NeUVRclFBRk8wZERvNE1YQldoSGxtT2IwUUdYN1hrc0h1c2hnQUFDbVFqbzlmaEdxZGdWYVRGUDlxWm1HWE9BQVdLanFCWUErWGtYL1p2dE96MXUyeUJUT2dMMlV6VzdkTUlsMG1NQzJ2L3EvdkhucndIUFg3UHM5V0hxUHJwWEc3dSt2NmViMzU3dTZMYnQ3OXMzVWJyK1BqY0lJSEFnb0gyMjBwODIyM1M0WHo0VnF2OTZ4czIzSURvMVp2UFQxT25PZi9vL2JGKzJmWHJQYTBFdndrMlNBaFRzSEEyYkRrNkhCeVJIcmRMTU9RSTZHTGZuTE0reUNDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBWUt1b3NBQUF3blVsRVFWUUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQXdQKzNROGNDQUFBQUFJUDhyYWV4b3hBeVlNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNQ0FBUU1HREJnd1lNREFiQ0JQMVRmQ3RBa2V2QUFBQUFCSlJVNUVya0pnZ2c9PSIvPgo8L2RlZnM+Cjwvc3ZnPgo=\";\nexport { SvgKion as ReactComponent };","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWhizdt2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 130 130\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 51v19.112h5.282l-.011-6.178h5.282l.01-5.152h-5.14v-2.465h6.348L44.411 51H33zM53.663 51.318c-5.029 0-9.106 4.135-9.106 9.238 0 5.102 4.077 9.237 9.106 9.237 5.03 0 9.107-4.137 9.107-9.238 0-5.1-4.078-9.237-9.107-9.237zm1.514 13.073a1.512 1.512 0 01-3.025 0v-7.538a1.513 1.513 0 113.024 0v7.538z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.166 51.381h5.904l2.413 3.941 2.337-3.94h5.77l-5.186 9.185 5.665 9.77H71.12l-2.698-4.495-2.742 4.495h-5.859l5.59-9.755-5.245-9.2zM97 63.53c-.073 3.096-2.42 4.917-2.891 5.263-1.902 1.401-3.93 1.385-4.919 1.378-.965-.007-3.11-.022-5.06-1.554-.45-.354-2.41-1.982-2.708-4.363l4.384-.479c.208 1.605 2.031 2.466 3.354 2.55.306.017 1.633.097 2.573-.9.772-.821.783-1.84.783-1.997a2.946 2.946 0 00-.613-1.758c-.888-1.128-2.33-1.136-2.74-1.139-.425 0-1.335-.008-2.164.638-.314.247-.581.549-.788.89l-.079.132h-4.556c.03-.09 2.623-10.647 2.623-10.647h12.544l-.583 4.172h-8.054l-.335 1.444c.339-.078 4.963-1.09 7.658 2.016 1.594 1.833 1.576 4.031 1.57 4.354zM39.174 79.305h-5.869v-1.387l3.404-4.601h-3.225v-1.411h5.491v1.41l-3.399 4.578h3.598v1.41zM39.348 79.305l2.5-7.4h2.027l2.5 7.4H44.46L44 77.795h-2.326l-.462 1.51h-1.863zm4.244-2.853l-.756-2.44-.755 2.44h1.51zM53.45 79.305h-1.788l-2.853-5.158v5.158h-1.7v-7.4h2.282l2.36 4.24v-4.24h1.7v7.4zM54.951 79.305v-7.4h5.004v1.412H56.8v1.297h2.907v1.411H56.8v1.868h3.155v1.412h-5.004zM63.498 79.439a6.113 6.113 0 01-1.495-.164 7.626 7.626 0 01-1.193-.407v-1.76h.17c.37.315.78.557 1.227.726.447.169.88.253 1.301.253.106 0 .246-.011.418-.034.175-.024.316-.06.422-.11a.939.939 0 00.328-.233.59.59 0 00.134-.403.55.55 0 00-.218-.452c-.146-.116-.32-.2-.522-.254-.252-.066-.522-.129-.81-.188a6.525 6.525 0 01-.8-.219c-.573-.202-.984-.474-1.232-.815-.249-.341-.373-.769-.373-1.282 0-.692.293-1.252.88-1.68.586-.43 1.318-.646 2.196-.646.44 0 .878.045 1.312.135.437.089.828.21 1.172.362v1.69h-.164a3.674 3.674 0 00-1.008-.596 3.167 3.167 0 00-1.218-.244c-.162 0-.308.012-.437.035a1.67 1.67 0 00-.407.134.835.835 0 00-.304.238.54.54 0 00-.124.348c0 .19.066.34.199.453.136.109.396.208.78.298.248.056.487.11.716.164.232.053.478.126.74.218.514.186.894.436 1.143.75.252.312.378.725.378 1.238 0 .736-.29 1.327-.87 1.774-.576.447-1.357.671-2.34.671zM73.845 71.906L71.3 79.305h-1.938l-2.544-7.4h1.928l1.61 5.015 1.61-5.014h1.879zM78.218 79.305h-3.986v-1.292h1.064v-4.815h-1.064v-1.292h3.986v1.292h-1.064v4.815h1.064v1.292zM84.39 79.305h-4.94v-7.4h1.858v5.989h3.081v1.41zM90.213 79.305h-4.94v-7.4h1.86v5.989h3.08v1.41zM91.098 79.305v-7.4h5.004v1.412h-3.156v1.297h2.907v1.411h-2.906v1.868h3.155v1.412h-5.004z\",\n fill: \"currentColor\"\n })));\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTMwIDEzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMzIDUxVjcwLjExMThIMzguMjgxOUwzOC4yNzA5IDYzLjkzNDNINDMuNTUyOUw0My41NjM4IDU4Ljc4MTZIMzguNDIzNlY1Ni4zMTcxSDQ0Ljc3MUw0NC40MTAxIDUxSDMzWiIgZmlsbD0iY3VycmVudENvbG9yIi8+CjxwYXRoIGQ9Ik01My42NjMzIDUxLjMxNzhDNDguNjM0MiA1MS4zMTc4IDQ0LjU1NzEgNTUuNDUyOSA0NC41NTcxIDYwLjU1NTVDNDQuNTU3MSA2NS42NTgxIDQ4LjYzNDIgNjkuNzkzMiA1My42NjMzIDY5Ljc5MzJDNTguNjkyMyA2OS43OTMyIDYyLjc3MDIgNjUuNjU1OCA2Mi43NzAyIDYwLjU1NTVDNjIuNzcwMiA1NS40NTUyIDU4LjY5MjMgNTEuMzE3OCA1My42NjMzIDUxLjMxNzhaTTU1LjE3NjUgNjQuMzkxNUM1NS4xNjc1IDY0Ljc4NjUgNTUuMDA0MyA2NS4xNjI0IDU0LjcyMTcgNjUuNDM4NkM1NC40MzkxIDY1LjcxNDkgNTQuMDU5NiA2NS44Njk1IDUzLjY2NDQgNjUuODY5NUM1My4yNjkzIDY1Ljg2OTUgNTIuODg5OCA2NS43MTQ5IDUyLjYwNzIgNjUuNDM4NkM1Mi4zMjQ2IDY1LjE2MjQgNTIuMTYxNCA2NC43ODY1IDUyLjE1MjQgNjQuMzkxNVY1Ni44NTI2QzUyLjE0NzggNTYuNjUxMSA1Mi4xODM1IDU2LjQ1MDggNTIuMjU3NCA1Ni4yNjMzQzUyLjMzMTQgNTYuMDc1OSA1Mi40NDIgNTUuOTA1MSA1Mi41ODI5IDU1Ljc2MUM1Mi43MjM3IDU1LjYxNjkgNTIuODkyIDU1LjUwMjMgNTMuMDc3NyA1NS40MjQyQzUzLjI2MzQgNTUuMzQ2IDUzLjQ2MjkgNTUuMzA1NyA1My42NjQ0IDU1LjMwNTdDNTMuODY2IDU1LjMwNTcgNTQuMDY1NCA1NS4zNDYgNTQuMjUxMiA1NS40MjQyQzU0LjQzNjkgNTUuNTAyMyA1NC42MDUyIDU1LjYxNjkgNTQuNzQ2IDU1Ljc2MUM1NC44ODY5IDU1LjkwNTEgNTQuOTk3NSA1Ni4wNzU5IDU1LjA3MTUgNTYuMjYzM0M1NS4xNDU0IDU2LjQ1MDggNTUuMTgxMSA1Ni42NTExIDU1LjE3NjUgNTYuODUyNlY2NC4zOTE1WiIgZmlsbD0iY3VycmVudENvbG9yIi8+CjxwYXRoIGQ9Ik02MC4xNjU3IDUxLjM4MTNINjYuMDdMNjguNDgyOCA1NS4zMjIxTDcwLjgyMDQgNTEuMzgxM0g3Ni41ODkyTDcxLjQwNDQgNjAuNTY3Mkw3Ny4wNjkxIDcwLjMzNzJINzEuMTIwMkw2OC40MjI1IDY1Ljg0MjFMNjUuNjgwMiA3MC4zMzcySDU5LjgyMTNMNjUuNDEwMSA2MC41ODIxTDYwLjE2NTcgNTEuMzgxM1oiIGZpbGw9ImN1cnJlbnRDb2xvciIvPgo8cGF0aCBkPSJNOTYuOTk5MSA2My41Mjk2Qzk2LjkyNzEgNjYuNjI1NyA5NC41NzkzIDY4LjQ0NjcgOTQuMTA4OCA2OC43OTI3QzkyLjIwNjUgNzAuMTk0IDkwLjE3OTYgNzAuMTc4MyA4OS4xOTAxIDcwLjE3MTNDODguMjI0OSA3MC4xNjQyIDg2LjA3OTggNzAuMTQ4NiA4NC4xMzA1IDY4LjYxNzNDODMuNjc5NiA2OC4yNjI3IDgxLjcyMDkgNjYuNjM1MSA4MS40MjE5IDY0LjI1NDVMODUuODA1OCA2My43NzU0Qzg2LjAxNDEgNjUuMzgwMiA4Ny44MzczIDY2LjI0MTQgODkuMTYwNCA2Ni4zMjQ0Qzg5LjQ2NjUgNjYuMzQxNiA5MC43OTM0IDY2LjQyMjIgOTEuNzMyOCA2NS40MjQxQzkyLjUwNTUgNjQuNjAzNiA5Mi41MTU3IDYzLjU4NTkgOTIuNTE1NyA2My40Mjc4QzkyLjUwNjkgNjIuNzkxMiA5Mi4yOTIxIDYyLjE3NDYgOTEuOTAzNSA2MS42NzAzQzkxLjAxNDkgNjAuNTQyMiA4OS41NzI5IDYwLjUzMzYgODkuMTYzNSA2MC41MzEyQzg4LjczODQgNjAuNTMxMiA4Ny44MjggNjAuNTIyNiA4Ni45OTg5IDYxLjE2ODVDODYuNjg0OSA2MS40MTU4IDg2LjQxNzkgNjEuNzE3NiA4Ni4yMTA2IDYyLjA1OTRDODYuMTg0NyA2Mi4xMDE2IDg2LjE1ODEgNjIuMTQ3MSA4Ni4xMzIzIDYyLjE5MDlIODEuNTc2MUM4MS42MDU4IDYyLjEwMTYgODQuMTk4NyA1MS41NDQxIDg0LjE5ODcgNTEuNTQ0MUg5Ni43NDMxTDk2LjE1OTkgNTUuNzE1OUg4OC4xMDU5TDg3Ljc3MDggNTcuMTYwM0M4OC4xMDk4IDU3LjA4MiA5Mi43MzQxIDU2LjA3MDUgOTUuNDI4NyA1OS4xNzYxQzk3LjAyMzMgNjEuMDA4OCA5Ny4wMDUzIDYzLjIwNyA5Ni45OTkxIDYzLjUyOTZaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPHBhdGggZD0iTTM5LjE3MzkgNzkuMzA0OEgzMy4zMDUyVjc3LjkxODRMMzYuNzA5MSA3My4zMTY4SDMzLjQ4NDFWNzEuOTA1NkgzOC45NzUxVjczLjMxNjhMMzUuNTc2MSA3Ny44OTM1SDM5LjE3MzlWNzkuMzA0OFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPgo8cGF0aCBkPSJNMzkuMzQ3OCA3OS4zMDQ4TDQxLjg0NzQgNzEuOTA1Nkg0My44NzQ4TDQ2LjM3NDQgNzkuMzA0OEg0NC40NjEyTDQzLjk5OTEgNzcuNzk0Mkg0MS42NzM0TDQxLjIxMTMgNzkuMzA0OEgzOS4zNDc4Wk00My41OTE2IDc2LjQ1MjVMNDIuODM2MyA3NC4wMTI1TDQyLjA4MDkgNzYuNDUyNUg0My41OTE2WiIgZmlsbD0iY3VycmVudENvbG9yIi8+CjxwYXRoIGQ9Ik01My40NTA2IDc5LjMwNDhINTEuNjYxN0w0OC44MDkzIDc0LjE0NjdWNzkuMzA0OEg0Ny4xMDk4VjcxLjkwNTZINDkuMzkwN0w1MS43NTExIDc2LjE0NDRWNzEuOTA1Nkg1My40NTA2Vjc5LjMwNDhaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPHBhdGggZD0iTTU0Ljk1MTQgNzkuMzA0OFY3MS45MDU2SDU5Ljk1NTRWNzMuMzE2OEg1Ni43OTk5Vjc0LjYxMzhINTkuNzA3Vjc2LjAyNTFINTYuNzk5OVY3Ny44OTM1SDU5Ljk1NTRWNzkuMzA0OEg1NC45NTE0WiIgZmlsbD0iY3VycmVudENvbG9yIi8+CjxwYXRoIGQ9Ik02My40OTg1IDc5LjQzOUM2Mi45MzIgNzkuNDM5IDYyLjQzMzQgNzkuMzg0MyA2Mi4wMDI4IDc5LjI3NUM2MS41NzU0IDc5LjE2NTcgNjEuMTc3OSA3OS4wMjk5IDYwLjgxMDEgNzguODY3NVY3Ny4xMDg0SDYwLjk3OTFDNjEuMzUwMSA3Ny40MjMxIDYxLjc1OTMgNzcuNjY1IDYyLjIwNjUgNzcuODMzOUM2Mi42NTM3IDc4LjAwMjkgNjMuMDg3NyA3OC4wODczIDYzLjUwODUgNzguMDg3M0M2My42MTQ1IDc4LjA4NzMgNjMuNzUzNiA3OC4wNzU4IDYzLjkyNTkgNzguMDUyNkM2NC4xMDE1IDc4LjAyOTQgNjQuMjQyMiA3Ny45OTI5IDY0LjM0ODMgNzcuOTQzMkM2NC40Nzc1IDc3Ljg4NjkgNjQuNTg2OCA3Ny44MDkxIDY0LjY3NjIgNzcuNzA5N0M2NC43NjU3IDc3LjYwNyA2NC44MTA0IDc3LjQ3MjggNjQuODEwNCA3Ny4zMDcyQzY0LjgxMDQgNzcuMTIxNiA2NC43Mzc1IDc2Ljk3MDkgNjQuNTkxOCA3Ni44NTVDNjQuNDQ2IDc2LjczOSA2NC4yNzIxIDc2LjY1NDUgNjQuMDcgNzYuNjAxNUM2My44MTgyIDc2LjUzNTMgNjMuNTQ4MiA3Ni40NzIzIDYzLjI2IDc2LjQxMjdDNjIuOTc1MSA3Ni4zNTMxIDYyLjcwODQgNzYuMjgwMiA2Mi40NTk5IDc2LjE5NDFDNjEuODg2OCA3NS45OTIgNjEuNDc2IDc1LjcyMDMgNjEuMjI3NiA3NS4zNzkxQzYwLjk3OTEgNzUuMDM3OSA2MC44NTQ5IDc0LjYxMDUgNjAuODU0OSA3NC4wOTdDNjAuODU0OSA3My40MDQ2IDYxLjE0OCA3Mi44NDQ4IDYxLjczNDQgNzIuNDE3NEM2Mi4zMjA4IDcxLjk4NjcgNjMuMDUyOSA3MS43NzE0IDYzLjkzMDggNzEuNzcxNEM2NC4zNzE1IDcxLjc3MTQgNjQuODA4NyA3MS44MTYxIDY1LjI0MjcgNzEuOTA1NkM2NS42OCA3MS45OTUgNjYuMDcwOSA3Mi4xMTU5IDY2LjQxNTUgNzIuMjY4M1Y3My45NTc5SDY2LjI1MTVDNjUuOTc2NSA3My43MjI3IDY1LjY0MDMgNzMuNTIzOSA2NS4yNDI3IDczLjM2MTZDNjQuODQ4NSA3My4xOTkyIDY0LjQ0MjcgNzMuMTE4MSA2NC4wMjUzIDczLjExODFDNjMuODYyOSA3My4xMTgxIDYzLjcxNzIgNzMuMTI5NyA2My41ODggNzMuMTUyOUM2My40NTg4IDczLjE3NiA2My4zMjI5IDczLjIyMDggNjMuMTgwNSA3My4yODdDNjMuMDY0NSA3My4zNCA2Mi45NjM1IDczLjQxOTUgNjIuODc3NCA3My41MjU1QzYyLjc5NDUgNzMuNjI4MiA2Mi43NTMxIDczLjc0NDIgNjIuNzUzMSA3My44NzM0QzYyLjc1MzEgNzQuMDYyMiA2Mi44MTk0IDc0LjIxMyA2Mi45NTE5IDc0LjMyNTZDNjMuMDg3NyA3NC40MzQ5IDYzLjM0NzggNzQuNTM0MyA2My43MzIxIDc0LjYyMzhDNjMuOTgwNSA3NC42ODAxIDY0LjIxOTEgNzQuNzM0NyA2NC40NDc2IDc0Ljc4NzdDNjQuNjc5NSA3NC44NDA4IDY0LjkyNjQgNzQuOTEzNiA2NS4xODgxIDc1LjAwNjRDNjUuNzAxNiA3NS4xOTE5IDY2LjA4MjUgNzUuNDQyIDY2LjMzMSA3NS43NTY4QzY2LjU4MjggNzYuMDY4MiA2Ni43MDg3IDc2LjQ4MDYgNjYuNzA4NyA3Ni45OTQxQzY2LjcwODcgNzcuNzI5NiA2Ni40MTg4IDc4LjMyMDkgNjUuODM5IDc4Ljc2ODFDNjUuMjYyNiA3OS4yMTU0IDY0LjQ4MjQgNzkuNDM5IDYzLjQ5ODUgNzkuNDM5WiIgZmlsbD0iY3VycmVudENvbG9yIi8+CjxwYXRoIGQ9Ik03My44NDQ2IDcxLjkwNTZMNzEuMzAwMyA3OS4zMDQ4SDY5LjM2MjNMNjYuODE4IDcxLjkwNTZINjguNzQ2MUw3MC4zNTYxIDc2LjkxOTZMNzEuOTY2MiA3MS45MDU2SDczLjg0NDZaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPHBhdGggZD0iTTc4LjIxNzUgNzkuMzA0OEg3NC4yMzIyVjc4LjAxMjhINzUuMjk1NlY3My4xOTc2SDc0LjIzMjJWNzEuOTA1Nkg3OC4yMTc1VjczLjE5NzZINzcuMTU0MVY3OC4wMTI4SDc4LjIxNzVWNzkuMzA0OFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPgo8cGF0aCBkPSJNODQuMzg5NCA3OS4zMDQ4SDc5LjQ0OTlWNzEuOTA1Nkg4MS4zMDg0Vjc3Ljg5MzVIODQuMzg5NFY3OS4zMDQ4WiIgZmlsbD0iY3VycmVudENvbG9yIi8+CjxwYXRoIGQ9Ik05MC4yMTM0IDc5LjMwNDhIODUuMjczOVY3MS45MDU2SDg3LjEzMjRWNzcuODkzNUg5MC4yMTM0Vjc5LjMwNDhaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPHBhdGggZD0iTTkxLjA5NzkgNzkuMzA0OFY3MS45MDU2SDk2LjEwMlY3My4zMTY4SDkyLjk0NjVWNzQuNjEzOEg5NS44NTM1Vjc2LjAyNTFIOTIuOTQ2NVY3Ny44OTM1SDk2LjEwMlY3OS4zMDQ4SDkxLjA5NzlaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPC9zdmc+Cg==\";\nexport { SvgWhizdt2 as ReactComponent };","/* eslint-disable react/self-closing-comp */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport * as Logos from './images';\n\nconst COLORS = {\n black: '#000000',\n white: '#FFFFFF',\n};\n\nconst CallSign = ({ callSign = '', color = 'white' }) => {\n const logoColor = COLORS[color];\n const Component = Logos[callSign.replace('-', '')] || Logos.FEED;\n return (\n <Component\n style={{ height: '100%', width: '100%' }}\n color={logoColor}\n data-test={`${callSign}-callSign`}\n />\n );\n};\n\nCallSign.propTypes = {\n callSign: PropTypes.string,\n color: PropTypes.string,\n};\n\nCallSign.defaultProps = {\n color: 'white',\n callSign: 'FEED',\n};\n\nexport default CallSign;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { Link } from 'react-router';\nimport Dotdotdot from 'react-dotdotdot';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport CallSign from 'components/CallSign';\nimport { isBrowserIE, noop } from 'helpers/GlobalHelper';\nimport {\n redirectToExternalUrl,\n helperGoToRelativeUrl,\n LAST_SESSION_PATH,\n} from 'helpers/RouteHelper';\nimport { setSessionStorageItem } from 'helpers/Storage';\nimport { isInternalLink } from 'helpers/ContentHelper';\nimport { SegmentUiElements } from '@foxcorp/delta-web-analytics';\n\n// const { PLAY, SERIES_EPISODE, SERIES_TITLE } = SegmentUiElements;\n\nconst TileTitle = ({\n account,\n gridIndex,\n gridTitle,\n isCollectionCategoryList,\n isDisabled,\n isHoverStateV2,\n isRedirect,\n isSeriesDetailAvailable,\n isUpcoming,\n itemIndex,\n link,\n name,\n network,\n onTileClick,\n onTitleClick,\n onTileMouseDown,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n target,\n theme,\n title,\n titleLines,\n titleText,\n}) => {\n let titleLink = link;\n const titleClasses = [theme.title];\n const titleClass = isDisabled ? classNames([theme.title, theme.disabled]) : theme.title;\n if (!title || title.length === 0) return null;\n const text = titleLines ? (\n <div className={theme.ellipsisTitle} data-test=\"dotdotdot-container\">\n <Dotdotdot clamp={titleLines}>{title}</Dotdotdot>\n </div>\n ) : (\n title\n );\n if (!link || isDisabled) return <div className={titleClass}>{text}</div>;\n if (isRedirect) {\n titleLink = null;\n titleClasses.push(theme.redirectLink);\n }\n const onClick = () => {\n setSessionStorageItem({ key: LAST_SESSION_PATH, value: window.location.pathname });\n onTileClick({ uiElement: SegmentUiElements.SERIES_EPISODE });\n if (onTitleClick) {\n onTitleClick({\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n uiElement: SegmentUiElements.SERIES_TITLE,\n });\n }\n };\n if (isHoverStateV2) {\n if (isUpcoming && isSeriesDetailAvailable === false) {\n titleLink = null;\n } else {\n titleClasses.push(theme.titleV2);\n }\n }\n if (isCollectionCategoryList) {\n titleClasses.push(theme.categoryListTitle);\n }\n\n const onMouseDown = e =>\n e.button === 1 ? onTileMouseDown({ uiElement: SegmentUiElements.SERIES_EPISODE }) : noop;\n\n return isInternalLink(titleLink) ? (\n <Link\n onClick={onClick}\n onMouseDown={onMouseDown}\n to={titleLink}\n target={target}\n className={classNames(titleClasses)}\n >\n {text}\n </Link>\n ) : (\n <a\n onClick={onClick}\n onMouseDown={onMouseDown}\n href={titleLink}\n target={target}\n className={classNames(titleClasses)}\n >\n {text}\n </a>\n );\n};\n\nconst TilePlayButton = ({ theme, playButton, text }) => {\n if (!playButton) return null;\n return (\n <div className={theme.play}>\n <Icon icon=\"play-button\" color=\"white\" size=\"full\" />\n {text && <div className={theme.playText}>{text}</div>}\n </div>\n );\n};\n\nconst TileNetworkIcon = ({ theme, networkIcon, showNetworkIcon, isHoverStateV2 }) => {\n if (!networkIcon || !showNetworkIcon) return null;\n const networkIconClasses = [theme.networkIcon, theme.dogEar];\n if (isHoverStateV2) networkIconClasses.push(theme.networkIconHoverStateV2);\n return (\n <div className={classNames(networkIconClasses)}>\n <img alt=\"Network Icon\" src={networkIcon} />\n </div>\n );\n};\n\nconst TileMetaData = ({ theme, metadata }) => {\n if (!metadata || metadata.length === 0) return null;\n return <p className={theme.metadata}>{metadata}</p>;\n};\n\nconst TileUpsellCTA = ({\n display,\n theme,\n upsellButtonText,\n upsellButtonIcon,\n upsellButtonClick,\n}) => {\n if (!display) return null;\n return (\n <button className={theme.networkUpsellCTA} onClick={upsellButtonClick}>\n <span>{upsellButtonText}</span>\n {upsellButtonIcon}\n </button>\n );\n};\n\nconst TileUpsellDogEar = ({ theme, image, text }) => (\n <div className={`${theme.networkIcon} ${theme.dogEar}`}>\n <img alt={text} src={image} />\n <span>{text}</span>\n </div>\n);\n\nconst TileNetworkBubble = ({ callSign, theme, link, showNetworkIcon }) => {\n if (!callSign || !showNetworkIcon) return null;\n const networkLogoStyle = [theme.networkLogoBubble];\n if (isBrowserIE()) networkLogoStyle.push(theme.networkLogoBubbleIE);\n const navigateToURL = () => {\n if (isInternalLink(link)) {\n helperGoToRelativeUrl(link);\n }\n redirectToExternalUrl(link);\n };\n return (\n <Link onClick={navigateToURL} className={theme.networkLogoBubbleContainer}>\n <div className={classNames(networkLogoStyle)}>\n <div className={theme.networkLogoBubbleIcon}>\n <CallSign callSign={callSign} color=\"white\" />\n </div>\n </div>\n </Link>\n );\n};\n\nexport const TileLinkWrapper = ({\n account,\n customTileClick,\n gridIndex,\n imageContent,\n isRedirect,\n itemIndex,\n link,\n name,\n networkIcon,\n onTileClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n target,\n theme,\n title,\n titleLink,\n titleText,\n}) => {\n const onClick = () => {\n if (customTileClick) {\n return customTileClick({\n account,\n gridIndex,\n itemIndex,\n name,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n titleLink,\n networkIcon,\n });\n }\n if (onTileClick) {\n return onTileClick({\n account,\n gridIndex,\n itemIndex,\n name,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n uiElement: SegmentUiElements.PLAY,\n });\n }\n return null;\n };\n return isInternalLink(customTileClick || isRedirect ? null : link) ? (\n <Link\n aria-label={titleText}\n className={theme.imageContainerLink}\n to={customTileClick || isRedirect ? null : link}\n target={target}\n style={customTileClick || isRedirect ? { cursor: 'pointer' } : {}}\n onClick={onClick}\n >\n {imageContent}\n </Link>\n ) : (\n <a\n aria-label={titleText}\n className={theme.imageContainerLink}\n href={customTileClick || isRedirect ? null : link}\n target={target}\n style={customTileClick || isRedirect ? { cursor: 'pointer' } : {}}\n onClick={onClick}\n >\n {imageContent}\n </a>\n );\n};\n\nexport const TileWrapper = ({ imageContent, theme }) => (\n <div className={theme.imageContainerLink}>{imageContent}</div>\n);\n\nexport {\n TileUpsellCTA,\n TileTitle,\n TilePlayButton,\n TileNetworkIcon,\n TileMetaData,\n TileUpsellDogEar,\n TileNetworkBubble,\n};\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\nimport Badge from 'components/Badge';\nimport { TilePlayButton } from 'components/TileLegacy/TilePartials';\nimport Favorite, {\n FAVORITE_TYPE_LINK,\n FAVORITE_PLUS_CIRCLE,\n FAVORITE_HEART,\n} from 'components/Favorite';\n\nimport classNames from 'classnames';\nimport Dotdotdot from 'react-dotdotdot';\n\nclass ImageOverlay extends PureComponent {\n render() {\n const {\n badge,\n description,\n favoriteData,\n favoritesManager,\n isHoverStateV2,\n isPersonality,\n isSeriesDetailAvailable,\n metadata,\n network,\n networkLogoUrl,\n onTitleClick,\n playButtonText,\n renderImageOverlay,\n showPlayButton,\n subtitle,\n theme,\n title,\n titleLink,\n upcomingDate,\n } = this.props;\n // eslint-disable-next-line react/prop-types\n const renderFavorite = ({ withLabel }) => {\n if (_.get(favoriteData, 'favoritableItems')) {\n const { showType } = favoriteData;\n const favorites = _.get(favoritesManager, 'favorites');\n let defaultText = '';\n let favoritedText = '';\n\n if (withLabel) {\n if (!isPersonality) {\n defaultText = 'Watchlist';\n favoritedText = 'Watchlist';\n } else {\n defaultText = `Favorite ${showType}`;\n favoritedText = `Unfavorite ${showType}`;\n }\n }\n\n const iconType = !isPersonality ? FAVORITE_PLUS_CIRCLE : FAVORITE_HEART;\n\n return (\n <Favorite\n theme={theme}\n manager={favoritesManager}\n favorites={favorites}\n data={favoriteData}\n type={FAVORITE_TYPE_LINK}\n defaultText={defaultText}\n favoritedText={favoritedText}\n stopNavigationOnClick\n iconType={iconType}\n />\n );\n }\n return null;\n };\n\n const titleDisplay =\n titleLink && isSeriesDetailAvailable ? (\n <Link onClick={onTitleClick} to={titleLink}>\n {title}\n </Link>\n ) : (\n title\n );\n const imageOverlayHiddenClass = !renderImageOverlay && theme.imageOverlayHidden;\n const imageOverlayClasses = [theme.imageOverlay, imageOverlayHiddenClass];\n if (isHoverStateV2) {\n return (\n <div className={classNames(imageOverlayClasses)}>\n <div className={theme.imageOverlayInnerContainer}>\n <div className={theme.imageOverlayDetailContainer}>\n <Badge {...{ theme, badge }} title={title} />\n </div>\n </div>\n </div>\n );\n }\n return (\n <div className={classNames(imageOverlayClasses)}>\n <div className={theme.imageOverlayInnerContainer}>\n <div className={theme.imageOverlayDetailContainer}>\n <Badge {...{ theme, badge }} title={title} />\n <div className={theme.imageOverlayDate}>{upcomingDate}</div>\n <div className={theme.imageOverlayTitle}>\n {titleDisplay}\n {!upcomingDate && (\n <span className={theme.titleFavorite}>{renderFavorite({ withLabel: false })}</span>\n )}\n </div>\n {subtitle && <div className={theme.imageOverlaySubtitle}>{subtitle}</div>}\n <div className={theme.imageOverlayDescription}>\n <Dotdotdot clamp={2}>{description}</Dotdotdot>\n </div>\n </div>\n <div className={theme.imageOverlayFooter}>\n <div>\n {!!networkLogoUrl && (\n <img alt={network} className={theme.imageOverlayNetworkLogo} src={networkLogoUrl} />\n )}\n {metadata && <span className={theme.imageOverlayMetadata}>{metadata}</span>}\n </div>\n <TilePlayButton theme={theme} playButton={showPlayButton} text={playButtonText} />\n <div>{upcomingDate && renderFavorite({ withLabel: true })}</div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default ImageOverlay;\n\nImageOverlay.defaultProps = {\n badge: null,\n breakpoint: null,\n description: null,\n favoriteData: null,\n favoritesManager: null,\n isHoverStateV2: false,\n isPersonality: false,\n isSeriesDetailAvailable: true,\n metadata: null,\n network: null,\n networkLogoUrl: null,\n onTitleClick: () => {},\n playButtonText: null,\n renderImageOverlay: false,\n showPlayButton: true,\n subtitle: null,\n theme: {},\n title: null,\n titleLink: null,\n upcomingDate: null,\n};\n\nImageOverlay.propTypes = {\n badge: PropTypes.string,\n breakpoint: PropTypes.string,\n description: PropTypes.string,\n favoriteData: PropTypes.shape({}),\n favoritesManager: PropTypes.shape({}),\n isHoverStateV2: PropTypes.bool,\n isPersonality: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n metadata: PropTypes.string,\n network: PropTypes.string,\n networkLogoUrl: PropTypes.string,\n onTitleClick: PropTypes.func,\n playButtonText: PropTypes.string,\n renderImageOverlay: PropTypes.bool,\n showPlayButton: PropTypes.bool,\n subtitle: PropTypes.string,\n theme: PropTypes.shape({}),\n title: PropTypes.string,\n titleLink: PropTypes.string,\n upcomingDate: PropTypes.string,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport HoverVideoTile from './Views/TileVideo';\nimport ImageTile from './Views/TileImage';\nimport ImageOverlay from './Views/ImageOverlay';\n\nclass TileContent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isHoverImage: false,\n isPlaying: false,\n renderImage: true,\n renderLiveVideo: false,\n renderPreviewVideo: false,\n renderImageOverlay: false,\n };\n }\n\n shouldComponentUpdate(nextProps) {\n const newProps = this.getChangingProps(nextProps);\n const oldProps = this.getChangingProps(this.props);\n return !_.isEqual(newProps, oldProps);\n }\n\n getChangingProps = props => {\n const {\n altText,\n favoritesManager,\n guid,\n hoverImage,\n id,\n image,\n isCollectionCategoryList,\n isHoverStateV2,\n name,\n overlayProps,\n preventLazyLoad,\n theme,\n video,\n } = props;\n return {\n altText,\n favoritesManager,\n guid,\n hoverImage,\n id,\n image,\n isCollectionCategoryList,\n isHoverStateV2,\n name,\n overlayProps,\n preventLazyLoad,\n theme,\n video,\n };\n };\n\n handleMouseEnter = () => {\n const { hoverImage, isHoverStateV2, overlayProps, toggleNetworkIcon, video } = this.props;\n let nextState = {};\n if (video && !isHoverStateV2) {\n nextState = {\n ...nextState,\n renderPreviewVideo: true,\n renderImage: false,\n isPlaying: true,\n };\n } else if (hoverImage) {\n nextState = { ...nextState, isHoverImage: true };\n }\n\n if (overlayProps) {\n nextState = { ...nextState, renderImageOverlay: true };\n toggleNetworkIcon(false);\n }\n if (!_.isEmpty(nextState)) this.setState(nextState);\n };\n\n handleMouseLeave = () => {\n const { toggleNetworkIcon } = this.props;\n const { renderImageOverlay } = this.state;\n this.setState(\n {\n isHoverImage: false,\n isPlaying: false,\n renderImage: true,\n renderImageOverlay: false,\n renderPreviewVideo: false,\n },\n () => {\n if (renderImageOverlay) toggleNetworkIcon(true);\n },\n );\n };\n\n renderPreviewVideo() {\n const { isPlaying, renderPreviewVideo } = this.state;\n const { altText, image, renderImage, video } = this.props;\n\n return (\n <HoverVideoTile\n altText={altText}\n image={image}\n play={isPlaying}\n rendered={renderPreviewVideo}\n renderImage={renderImage}\n video={video}\n />\n );\n }\n\n renderLiveVideo() {\n const { isPlaying, renderLiveVideo } = this.state;\n const { altText, image, renderImage, video } = this.props;\n\n return (\n <HoverVideoTile\n altText={altText}\n image={image}\n play={isPlaying}\n rendered={renderLiveVideo}\n renderImage={renderImage}\n video={video}\n />\n );\n }\n\n renderImage() {\n const { renderImage, isHoverImage } = this.state;\n const {\n altText,\n hoverImage,\n image,\n isCollectionCategoryList,\n isTileGrid,\n name,\n preventLazyLoad,\n renderImage: renderDynamicImage,\n theme,\n } = this.props;\n let imageToRender = image || hoverImage;\n\n if (isHoverImage && hoverImage) {\n imageToRender = hoverImage;\n }\n\n return (\n <ImageTile\n altText={altText}\n image={imageToRender}\n isCollectionCategoryList={isCollectionCategoryList}\n isHover={isHoverImage}\n isTileGrid={isTileGrid}\n name={name}\n preventLazyLoad={preventLazyLoad}\n rendered={renderImage}\n renderImage={renderDynamicImage}\n theme={theme}\n />\n );\n }\n\n renderImageOverlay() {\n const { renderImageOverlay } = this.state;\n const {\n favoritesManager,\n isCollectionCategoryList,\n isMobileDevice,\n overlayProps,\n theme,\n } = this.props;\n const shouldRenderOverlay = !isCollectionCategoryList && !isMobileDevice;\n\n return (\n shouldRenderOverlay && (\n <ImageOverlay\n {...overlayProps}\n data-test=\"tile-image-overlay\"\n favoritesManager={favoritesManager}\n renderImageOverlay={renderImageOverlay}\n theme={theme}\n />\n )\n );\n }\n\n render() {\n const previewVideo = this.renderPreviewVideo();\n const liveVideo = this.renderLiveVideo();\n const tileImage = this.renderImage();\n const imageOverlay = this.renderImageOverlay();\n\n const tileHoverProps = {\n onMouseEnter: () => this.handleMouseEnter(),\n onMouseLeave: () => this.handleMouseLeave(),\n };\n\n return (\n <div {...tileHoverProps}>\n {previewVideo}\n {liveVideo}\n {tileImage}\n {imageOverlay}\n </div>\n );\n }\n}\n\nTileContent.defaultProps = {\n altText: '',\n favoritesManager: null,\n guid: null,\n hoverImage: null,\n id: null,\n image: null,\n isHoverStateV2: false,\n isMobileDevice: false,\n isTileGrid: false,\n name: null,\n overlayProps: null,\n preventLazyLoad: false,\n renderImage: () => {},\n theme: {},\n toggleNetworkIcon: () => {},\n video: null,\n};\n\nTileContent.propTypes = {\n altText: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n guid: PropTypes.string,\n hoverImage: PropTypes.string,\n id: PropTypes.string,\n image: PropTypes.string,\n isCollectionCategoryList: PropTypes.bool,\n isHoverStateV2: PropTypes.bool,\n isMobileDevice: PropTypes.bool,\n isTileGrid: PropTypes.bool,\n name: PropTypes.string,\n overlayProps: PropTypes.shape({}),\n preventLazyLoad: PropTypes.bool,\n renderImage: PropTypes.func,\n theme: PropTypes.shape({}),\n toggleNetworkIcon: PropTypes.func,\n video: PropTypes.string,\n};\n\nexport default React.memo(TileContent);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Icon from 'components/Icon';\n\nconst ToggleDetail = props => {\n const {\n theme,\n link,\n descriptionElement,\n seeAllText,\n trackButtonClick,\n account,\n title,\n subtitleName,\n onSeeAllClick,\n itemIndex,\n gridIndex,\n gridTitle,\n render,\n toggle,\n } = props;\n\n if (!render) return null;\n\n const showSeeAll = link && seeAllText;\n const seeAllLink = showSeeAll && (\n <Link\n data-test=\"shared-tile-see-all-link\"\n className={theme.descLink}\n onClick={() => {\n if (trackButtonClick) {\n trackButtonClick({\n text: seeAllText,\n title,\n subtitle: subtitleName,\n account,\n });\n }\n if (onSeeAllClick) {\n onSeeAllClick({\n itemIndex,\n gridIndex,\n gridTitle,\n });\n }\n }}\n to={link}\n >\n {seeAllText}\n </Link>\n );\n return (\n <div className={theme.moreInfo} data-test=\"shared-tile-toggle-detail-content\">\n <div className={theme.content}>\n {descriptionElement}\n {seeAllLink}\n </div>\n <button\n aria-label=\"close\"\n className={theme.x}\n name=\"closeButton\"\n onClick={() => {\n if (trackButtonClick) {\n trackButtonClick({\n text: 'collapse details',\n title,\n subtitle: subtitleName,\n account,\n });\n }\n toggle();\n }}\n >\n <Icon size=\"full\" color=\"black\" icon=\"close\" ariaLabel=\"close\" />\n </button>\n </div>\n );\n};\n\nToggleDetail.propTypes = {\n theme: PropTypes.shape({}),\n link: PropTypes.string,\n descriptionElement: PropTypes.shape({}),\n seeAllText: PropTypes.string,\n trackButtonClick: PropTypes.func,\n account: PropTypes.shape({}),\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n subtitleName: PropTypes.string,\n onSeeAllClick: PropTypes.func,\n itemIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n gridIndex: PropTypes.number,\n gridTitle: PropTypes.string,\n render: PropTypes.bool,\n toggle: PropTypes.func,\n};\n\nToggleDetail.defaultProps = {\n theme: null,\n link: null,\n descriptionElement: null,\n seeAllText: null,\n trackButtonClick: () => {},\n account: null,\n title: null,\n subtitleName: null,\n onSeeAllClick: () => {},\n itemIndex: null,\n gridIndex: null,\n gridTitle: null,\n render: null,\n toggle: () => {},\n};\n\nexport default ToggleDetail;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Link } from 'react-router';\nimport { isInternalLink } from 'helpers/ContentHelper';\n\nexport const SERIES_DETAIL_OVERLAY = 'SERIES_DETAIL_OVERLAY';\nexport const PLAYABLE_OVERLAY = 'PLAYABLE_OVERLAY';\nexport const Overlay = props => {\n const {\n children,\n isHoverStateV2,\n isUpcoming,\n isSeries,\n isSeriesDetailAvailable,\n link,\n playButtonClick,\n theme,\n type,\n onMouseDown,\n } = props;\n\n switch (type) {\n case SERIES_DETAIL_OVERLAY:\n return (\n <Link\n className={classNames(theme.playButtonOverlay, theme.playButtonScale)}\n onClick={playButtonClick}\n onMouseDown={onMouseDown}\n to={link}\n >\n <div className={classNames([theme.playButton])}>{children}</div>\n </Link>\n );\n case PLAYABLE_OVERLAY:\n if (isInternalLink(link)) {\n return (\n <div\n className={classNames(\n theme.playButtonOverlay,\n isHoverStateV2 && !isUpcoming && !isSeries && theme.playButtonOverlayHoverStateV2,\n )}\n >\n <Link\n aria-label=\"play button\"\n onClick={playButtonClick}\n onMouseDown={onMouseDown}\n className={classNames([\n theme.playButton,\n isHoverStateV2 && theme.playButtonV2,\n isHoverStateV2 && (isSeries || isUpcoming) && theme.playableShowTile,\n !isSeriesDetailAvailable && isUpcoming && theme.cursorDefault,\n ])}\n to={link}\n >\n {!isUpcoming && !isSeries && children}\n </Link>\n </div>\n );\n }\n return (\n <div\n className={classNames(\n theme.playButtonOverlay,\n isHoverStateV2 && !isUpcoming && !isSeries && theme.playButtonOverlayHoverStateV2,\n )}\n >\n <a\n aria-label=\"play button\"\n onClick={playButtonClick}\n onMouseDown={onMouseDown}\n className={classNames([\n theme.playButton,\n isHoverStateV2 && theme.playButtonV2,\n isHoverStateV2 && (isSeries || isUpcoming) && theme.playableShowTile,\n !isSeriesDetailAvailable && isUpcoming && theme.cursorDefault,\n ])}\n href={link}\n >\n {!isUpcoming && !isSeries && children}\n </a>\n </div>\n );\n default:\n return null;\n }\n};\n\nOverlay.propTypes = {\n children: PropTypes.node.isRequired,\n isHoverStateV2: PropTypes.bool,\n isUpcoming: PropTypes.bool,\n isSeries: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n link: PropTypes.string,\n playButtonClick: PropTypes.func,\n theme: PropTypes.shape({}),\n type: PropTypes.string,\n onMouseDown: PropTypes.func,\n};\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport { Link, browserHistory } from 'react-router';\nimport { getActivePlayer, getPlayerState } from 'helpers/PlayerHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport {\n callSegmentPlayerEvent,\n Events,\n handleAnalytics,\n SegmentPageActionTypes,\n SegmentPlayerStates,\n SegmentUiElements,\n SegmentVideoEvents,\n} from '@foxcorp/delta-web-analytics';\nimport { helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport {\n isDesktopBreakpoint,\n isLargeDesktopBreakpoint,\n isMobileBreakpoint,\n isTabletBreakpoint,\n} from 'helpers/BreakpointHelper';\nimport {\n COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST,\n COLLECTION_TYPE_GENRE,\n COLLECTION_TYPE_LOCAL_CLIPS,\n LOCAL_CHANNEL_STATION_PICKER,\n setLocalChannelCookies,\n setOutOfMarketLocalCookies,\n isInternalLink,\n} from 'helpers/ContentHelper';\nimport { SHOW_STATE_UPCOMING, SHOW_STATE_LIVE, SHOW_STATE_CLIP } from 'helpers/BadgeHelper';\nimport { getDynamicImage, COLLECTION_THUMBNAIL_IMAGE } from 'helpers/ImageHelper';\nimport { mergeStyles, noop } from 'helpers/GlobalHelper';\nimport { getCookie, setCookie } from 'helpers/Storage';\nimport Badge from 'components/Badge';\nimport ProgressBar from 'components/ProgressBar';\nimport Icon from 'components/Icon';\nimport WatchList, {\n FAVORITE_PLUS_HOVER,\n FAVORITE_HEART,\n FAVORITE_TYPE_WATCHLIST,\n} from 'components/Favorite';\nimport ActionButtons from './components/ActionButtons';\nimport Description from './components/Description';\nimport Subtitle from './components/Subtitle';\nimport TileContent from './components/TileContent';\nimport ToggleDetail from './components/ToggleDetail';\nimport { Overlay, SERIES_DETAIL_OVERLAY, PLAYABLE_OVERLAY } from './components/Overlay';\nimport {\n TileUpsellCTA,\n TileTitle,\n TilePlayButton,\n TileNetworkIcon,\n TileMetaData,\n TileLinkWrapper,\n TileWrapper,\n TileUpsellDogEar,\n TileNetworkBubble,\n} from './TilePartials';\nimport Style from './TileLegacy.module.scss';\n\nclass Tile extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n showNetworkIcon: true,\n toggled: false,\n favorited: false,\n };\n this.toggle = this.toggle.bind(this);\n this.toggleNetworkIcon = this.toggleNetworkIcon.bind(this);\n }\n\n componentDidMount() {\n const { shouldDisplayNetworkLogo } = this.props;\n this.setState({ showNetworkIcon: shouldDisplayNetworkLogo });\n }\n\n toggle() {\n const { toggled } = this.state;\n this.setState({\n toggled: !toggled,\n });\n }\n\n toggleNetworkIcon(value) {\n const { shouldDisplayNetworkLogo } = this.props;\n if (shouldDisplayNetworkLogo) {\n this.setState({ showNetworkIcon: value });\n }\n }\n\n playButtonClick(link) {\n const {\n collectionType,\n contentId,\n headline,\n name,\n isUserOutOfMarket,\n livePlayerScreenUrl,\n panelCount,\n playerScreenUrl,\n playlist,\n searchCompleted,\n setSearchCompleted,\n searchTerm,\n segmentPlaylistButtonAction,\n image,\n } = this.props;\n const isCollectionTypeLocalClip = collectionType === COLLECTION_TYPE_LOCAL_CLIPS;\n if (isUserOutOfMarket) {\n setOutOfMarketLocalCookies({ livePlayerScreenUrl, image });\n }\n if (isCollectionTypeLocalClip) {\n setLocalChannelCookies({\n headline,\n playerScreenUrl,\n playlist,\n videoId: contentId,\n });\n }\n segmentPlaylistButtonAction();\n const currentPlayerState = getPlayerState(getActivePlayer());\n if (currentPlayerState === 'PLAYING' || currentPlayerState === 'AD') {\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props: {\n method: 'browser action',\n video_player_state: SegmentPlayerStates.PAUSE,\n },\n });\n }\n if (searchTerm) {\n handleAnalytics({\n event: Events.SEARCH_RESULT_SELECTED,\n payload: {\n page_category_title: headline,\n page_item_title: name,\n page_num_search_results: panelCount,\n page_search_term: searchTerm,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n if (searchCompleted === false) {\n handleAnalytics({\n event: Events.SEARCH_COMPLETED,\n payload: {\n page_search_term: searchTerm,\n page_num_search_results: panelCount,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n setSearchCompleted(true);\n }\n }\n }\n\n render() {\n const {\n account,\n affiliateLogo,\n anonymousCTAClick,\n anonymousCTAText,\n applyInlineBackground,\n badge,\n bookmarkSeconds,\n breakpoint,\n categoryType,\n callSign,\n collectionItemViewed,\n collectionType,\n contentId,\n context,\n ctaData,\n ctaPosition,\n customTileClick,\n description,\n descriptionLines,\n descriptionLink,\n disableDescriptions,\n disableHoverStateActionButtons,\n displayTemplate,\n displayUpsellCTA,\n durationInSeconds,\n endDate,\n fadeTile,\n gridIndex,\n gridTitle,\n headline,\n hoverImage,\n image,\n imageAltText,\n inlineStyle,\n isAnonymous,\n isDisabled,\n isHoverStateV2,\n isLocked,\n isPlayable,\n isPrimeTime,\n isRedirect,\n isSeries,\n isSeriesDetailAvailable,\n isSeasons,\n isTileGrid,\n itemIndex,\n link,\n metadata,\n name,\n network,\n networkIcon,\n onSeeAllClick,\n onTileClick,\n onTileMouseDown,\n onTitleClick,\n originalItem,\n overlay,\n overlayProps,\n overridePlayButtonClick,\n panelCount,\n percentWatched,\n playButton,\n preventLazyLoad,\n preventToggle,\n recommendationIdData,\n renderImage,\n searchCompleted,\n setSearchCompleted,\n searchTerm,\n seeAllText,\n segmentPlaylistButtonAction,\n shouldInvertTitleOrder,\n showCode,\n showLiveProgressBar,\n startDate,\n seriesScreenUrl,\n seriesName,\n seriesType,\n subtitle,\n subtitleLines,\n subtitleLink,\n subtitleName,\n subtitleText,\n target,\n tealiumActions,\n theme,\n tileType,\n title,\n titleLines,\n titleLink,\n titleText,\n toggleEnabled,\n trackButtonClick,\n truncateSubtitle,\n upsellButtonClick,\n upsellButtonIcon,\n upsellButtonText,\n upsellDogEarImage,\n upsellDogEarText,\n isLiveTileV2,\n usePlayButtonThin,\n video,\n videoType,\n scaleFromLeft,\n scaleFromRight,\n favoritesManager,\n } = this.props;\n const style = mergeStyles(_.cloneDeep(Style), theme);\n const { showNetworkIcon, toggled, favorited } = this.state;\n const titleLinkVal = titleLink || link;\n const subtitleLinkVal = subtitleLink || link;\n const isMobileDevice = isMobileBreakpoint(breakpoint) || isTabletBreakpoint(breakpoint);\n const clickableClass =\n link && context !== 'SearchResults' ? style.clickable : style.clickDisabled;\n const tileTypeClass = tileType && style[tileType];\n const contentLocked = fadeTile && style.fadeAnimatedUnauthorized;\n const hasActionButtons = !_.isEmpty(ctaData);\n const isUpcoming = badge === SHOW_STATE_UPCOMING;\n const showPlayButton =\n (isMobileDevice && !isUpcoming) ||\n (playButton && (!hasActionButtons || ctaPosition !== 'image'));\n const tileActionButtonClass = hasActionButtons && style.withActionButtons;\n const favorites = _.get(favoritesManager, 'favorites');\n const favoriteData = _.get(overlayProps, 'favoriteData', {});\n const hideNewBadge = displayTemplate === 'latestEpisodes' && badge === 'NEW';\n const isLive = badge === SHOW_STATE_LIVE;\n const isClip = badge === SHOW_STATE_CLIP;\n const isPersonality = categoryType === 'personality';\n const isLocalClip = collectionType === COLLECTION_TYPE_LOCAL_CLIPS;\n const isCollectionCategoryList = collectionType === COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST;\n const isGenre = collectionType === COLLECTION_TYPE_GENRE;\n\n let shouldShowNetworkIcon;\n\n if (isLocalClip) {\n shouldShowNetworkIcon = false;\n } else {\n shouldShowNetworkIcon = isHoverStateV2\n ? showNetworkIcon && (isUpcoming || isLive)\n : showNetworkIcon;\n }\n if (overlayProps) {\n overlayProps.onTitleClick = onTileClick;\n overlayProps.titleLink = titleLink;\n overlayProps.isHoverStateV2 = isHoverStateV2;\n }\n const tileImageProps = {\n altText: imageAltText,\n favoritesManager,\n hoverImage,\n image,\n isCollectionCategoryList,\n isHoverStateV2,\n isMobileDevice,\n isTileGrid,\n name,\n overlayProps,\n preventLazyLoad,\n renderImage,\n theme: style,\n toggleNetworkIcon: this.toggleNetworkIcon,\n video,\n };\n const anonymousOverlay = isAnonymous && (\n <div className={style.anonymousOverlay}>\n <button className={style.anonymousUpsellCTA} onClick={anonymousCTAClick}>\n {anonymousCTAText}\n </button>\n </div>\n );\n let playButtonLink = isHoverStateV2 && isSeries ? titleLinkVal : link;\n if (overridePlayButtonClick) {\n playButtonLink = null;\n }\n const onMouseDownHandler = e => (e.button === 1 ? segmentPlaylistButtonAction() : noop);\n\n const playButtonOverlay = !isMobileDevice &&\n !isGenre &&\n !isCollectionCategoryList &&\n (isPlayable || usePlayButtonThin || (isHoverStateV2 && !isAnonymous)) && (\n <Overlay\n theme={style}\n type={isSeasons && !isUpcoming ? SERIES_DETAIL_OVERLAY : PLAYABLE_OVERLAY}\n isHoverStateV2={isHoverStateV2}\n isSeries={isSeries}\n isUpcoming={isUpcoming}\n isSeriesDetailAvailable={isSeriesDetailAvailable}\n playButtonClick={() => {\n if (overridePlayButtonClick) {\n handleAnalytics({\n event: Events.SEARCH_RESULT_SELECTED,\n payload: {\n page_category_title: headline,\n page_item_title: name,\n page_num_search_results: panelCount,\n page_search_term: searchTerm,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n if (searchCompleted === false) {\n handleAnalytics({\n event: Events.SEARCH_COMPLETED,\n payload: {\n page_search_term: searchTerm,\n page_num_search_results: panelCount,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n setSearchCompleted(true);\n }\n overridePlayButtonClick();\n } else {\n this.playButtonClick(playButtonLink);\n }\n }}\n onMouseDown={onMouseDownHandler}\n link={playButtonLink}\n >\n <Icon icon=\"play-button-thin\" color=\"white\" size=\"full\" viewBox=\"1 1 36 36\" />\n </Overlay>\n );\n\n const upsellDogEar =\n !upsellDogEarImage && !upsellDogEarText ? null : (\n <TileUpsellDogEar {...{ theme: style, image: upsellDogEarImage, text: upsellDogEarText }} />\n );\n const hoverStateToolTip = (label, toolTipClassName, isRightJustified) => (\n <div\n className={classNames([\n style.hoverStateToolTip,\n toolTipClassName,\n isRightJustified && style.hoverStateToolTipRight,\n ])}\n >\n <div className={style.hoverStateToolTipLabel}>{label}</div>\n <div className={style.hoverStateToolTipTip} />\n </div>\n );\n const isOnlyInfo = !favorites || isClip;\n const isOnlyWatchList = isSeries || isSeriesDetailAvailable === false;\n const handleSetFavorite = set => {\n this.setState({ favorited: !!set });\n };\n const isFavorited = favorited || _.find(favorites, ({ favoriteID }) => favoriteID === showCode);\n const moreText = videoType === 'clip' ? 'More Info' : 'More Episodes';\n const seriesUrl = seriesScreenUrl\n ? helperGetRelativeUrl({ url: seriesScreenUrl })\n : titleLinkVal;\n let hoverStateWatchlistText = isFavorited ? 'Added to Watchlist' : 'Add to Watchlist';\n if (isPersonality) {\n hoverStateWatchlistText = isFavorited ? 'Added to Favorites' : 'Add to Favorites';\n }\n const hoverStateActionButtons = !isGenre &&\n !isMobileDevice &&\n !isCollectionCategoryList &&\n !disableHoverStateActionButtons &&\n !isLocalClip &&\n !isAnonymous &&\n isHoverStateV2 && (\n <div className={style.hoverStateActionButtons}>\n {!isSeries && isSeriesDetailAvailable !== false && (\n <div\n className={classNames([\n style.infoButton,\n isOnlyInfo ? style.rightActionButton : style.leftActionButton,\n ])}\n >\n <Link\n onClick={() => {\n segmentPlaylistButtonAction({\n actionType: SegmentPageActionTypes.MORE_EPISODES,\n uiElement: SegmentUiElements.INFO,\n });\n }}\n onMouseDown={e =>\n e.button === 1\n ? segmentPlaylistButtonAction({\n actionType: SegmentPageActionTypes.MORE_EPISODES,\n uiElement: SegmentUiElements.INFO,\n })\n : noop\n }\n to={seriesUrl}\n className={classNames(style.infoButtonLink)}\n >\n <Icon\n icon=\"info-thin\"\n color=\"white\"\n size=\"full\"\n viewBox=\"0 0 26 26\"\n ariaLabel={`${moreText} ${seriesName}`}\n role=\"link\"\n />\n </Link>\n {hoverStateToolTip(moreText, style.infoToolTip, isOnlyInfo)}\n </div>\n )}\n {!isOnlyInfo && (\n <div className={classNames([style.watchListButton, style.rightActionButton])}>\n <span className={style.watchListButtonContainer}>\n <WatchList\n type={FAVORITE_TYPE_WATCHLIST}\n stopNavigationOnClick\n manager={favoritesManager}\n iconType={isPersonality ? FAVORITE_HEART : FAVORITE_PLUS_HOVER}\n favorites={favorites}\n data={{ ...favoriteData, titleText: seriesName, subtitleText }}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n setFavorite={handleSetFavorite}\n />\n </span>\n {hoverStateToolTip(hoverStateWatchlistText, style.watchListToolTip, isOnlyWatchList)}\n </div>\n )}\n </div>\n );\n const renderBadge = (\n <Badge\n {...{\n theme: style,\n badge,\n startDate,\n durationInSeconds,\n bookmarkSeconds,\n isHoverStateV2: isHoverStateV2 || badge === SHOW_STATE_CLIP,\n isSeasons,\n }}\n />\n );\n\n const imageContent = (\n <div>\n <TileContent\n data-test=\"tile-image\"\n {...tileImageProps}\n guid={originalItem.guid}\n id={originalItem.id}\n />\n {ctaPosition === 'image' && <ActionButtons {...{ theme: style, ctaData }} />}\n {!usePlayButtonThin && <TilePlayButton {...{ theme: style, playButton: showPlayButton }} />}\n <TileUpsellCTA\n display={displayUpsellCTA}\n theme={style}\n upsellButtonText={upsellButtonText}\n upsellButtonIcon={upsellButtonIcon}\n upsellButtonClick={upsellButtonClick}\n />\n {!hideNewBadge && (\n <Badge\n {...{\n theme: style,\n badge,\n startDate,\n durationInSeconds,\n bookmarkSeconds,\n isHoverStateV2: isHoverStateV2 || badge === SHOW_STATE_CLIP,\n }}\n />\n )}\n {isLiveTileV2 && <div className={style.liveTileV2Shadow} />}\n {isLocked ? (\n <div className={style.lockIcon}>\n <Icon icon=\"lock\" color=\"white\" viewBox=\"1 1 36 36\" />\n </div>\n ) : null}\n <TileNetworkIcon\n {...{\n theme: style,\n networkIcon,\n showNetworkIcon: !isLiveTileV2 && (shouldShowNetworkIcon || isPrimeTime),\n isHoverStateV2,\n }}\n />\n {upsellDogEar}\n </div>\n );\n const localStationPickerId = getCookie({ name: LOCAL_CHANNEL_STATION_PICKER });\n const affiliateLogoImage = isCollectionCategoryList && affiliateLogo && (\n <div className={style.affiliateLogoContainer}>\n <img className={style.affiliateLogo} src={affiliateLogo} alt=\"affiliate logo\" />\n {originalItem?.id === localStationPickerId && (\n <Icon color=\"white\" icon=\"checkmark-circle\" viewBox=\"0 0 71 71\" />\n )}\n </div>\n );\n const thumbActionType = _.get(tealiumActions, 'thumbActionType', 'show details');\n const tileLinkWrapperOptions = {\n account,\n customTileClick,\n gridIndex,\n imageContent,\n isRedirect,\n itemIndex,\n link,\n name,\n onTileClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n target,\n theme: style,\n title,\n titleText,\n titleLink,\n networkIcon,\n };\n const imageContainerContent = isDisabled\n ? TileWrapper({ ...tileLinkWrapperOptions })\n : TileLinkWrapper({ ...tileLinkWrapperOptions });\n const classes = [\n style.tile,\n tileTypeClass,\n clickableClass,\n contentLocked,\n tileActionButtonClass,\n ];\n let toggleElement;\n\n const videoHasPercentWatched = typeof percentWatched === 'number' && percentWatched >= 0;\n const showProgressBar = videoHasPercentWatched || showLiveProgressBar;\n let dynamicTileImage;\n if (breakpoint) {\n dynamicTileImage = getDynamicImage({\n breakpoint,\n context: COLLECTION_THUMBNAIL_IMAGE,\n url: image,\n });\n }\n const progressBarElement = showProgressBar ? (\n <ProgressBar\n data-test=\"tile-progress-bar\"\n endDate={endDate}\n percentWatched={percentWatched}\n startDate={startDate}\n theme={style}\n isHoverStateV2={isHoverStateV2}\n />\n ) : null;\n\n const imageContainerClasses = [style.imageContainer];\n if (hasActionButtons && ctaPosition === 'image') {\n imageContainerClasses.push(style.imageContainerWithButtons);\n }\n if (!video && hoverImage) {\n imageContainerClasses.push(style.maintainRatioContainer);\n }\n if (isSeasons) imageContainerClasses.push(style.scaleImage);\n if (isHoverStateV2) imageContainerClasses.push(style.imageContainerV2);\n if (scaleFromLeft) imageContainerClasses.push(style.scaleFromLeft);\n if (scaleFromRight) imageContainerClasses.push(style.scaleFromRight);\n if (isCollectionCategoryList) imageContainerClasses.push(style.categoryListContainer);\n let tilebackgroundSize = 'cover';\n let categoryListBackground = isCollectionCategoryList\n ? 'linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))'\n : '';\n if (originalItem?.id === localStationPickerId && isCollectionCategoryList) {\n categoryListBackground = 'linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6))';\n }\n if (isCollectionCategoryList) {\n if (isTabletBreakpoint(breakpoint)) {\n tilebackgroundSize = '140px 140px';\n }\n if (isDesktopBreakpoint(breakpoint) || isLargeDesktopBreakpoint(breakpoint)) {\n tilebackgroundSize = '174px 174px';\n }\n }\n const backgroundImage = `url('${dynamicTileImage || image}')`;\n const inlineContainerStyle = applyInlineBackground\n ? {\n backgroundImage,\n backgroundColor: categoryListBackground,\n backgroundSize: tilebackgroundSize,\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center center',\n }\n : {};\n const showImageContents = !applyInlineBackground || video;\n const mobilePlayIcon = isSeasons && isMobileDevice && (\n <div className={style.play}>\n <Icon icon=\"play-button\" color=\"white\" size=\"full\" />\n </div>\n );\n const imageElement = image && image.length && (\n <div\n className={classNames(imageContainerClasses)}\n style={inlineContainerStyle}\n onClick={() => {\n if (isMobileDevice && showPlayButton && isInternalLink(link)) {\n browserHistory.push(link);\n }\n if (isCollectionCategoryList) {\n setCookie({\n name: LOCAL_CHANNEL_STATION_PICKER,\n options: { path: '/' },\n value: originalItem?.id,\n });\n window.location.reload();\n }\n if (trackButtonClick) {\n trackButtonClick({\n text: thumbActionType,\n title: _.get(originalItem, 'seriesName', title) || name,\n subtitle: _.get(originalItem, 'name', subtitleName),\n account,\n contentType: videoType || seriesType,\n });\n }\n }}\n >\n {isSeasons && renderBadge}\n {overlay}\n {showImageContents && imageContainerContent}\n {progressBarElement}\n {anonymousOverlay}\n {playButtonOverlay}\n {affiliateLogoImage}\n {hoverStateActionButtons}\n {mobilePlayIcon}\n </div>\n );\n const className = classNames(\n toggled ? style.toggled : null,\n isCollectionCategoryList ? style.categoryListDetails : null,\n style.details,\n toggleEnabled ? style.toggleEnabled : null,\n );\n const dotDotDotLink = (\n <button\n onClick={() => {\n if (trackButtonClick) {\n trackButtonClick({\n text: 'show details',\n title: _.get(originalItem, 'seriesName', title),\n subtitle: _.get(originalItem, 'name', subtitleName),\n account,\n });\n }\n if (collectionItemViewed) {\n const collectionItemViewedProps = {\n collectionName: gridTitle,\n collectionIndex: gridIndex,\n collectionItemIndex: itemIndex,\n contentId,\n collectionSeriesId: showCode,\n collectionSeriesName: seriesName,\n collectionVideoTitle: subtitleName,\n recommendationId: recommendationIdData,\n };\n collectionItemViewed(collectionItemViewedProps);\n }\n this.toggle();\n }}\n className={style.dotdotdot}\n >\n • • •\n </button>\n );\n if (fadeTile) classes.push(style.fadeTile);\n if (displayUpsellCTA) classes.push(style.networkUpsell);\n\n const descriptionElement = (\n <Description\n theme={style}\n description={description}\n link={descriptionLink}\n onTileClick={onTileClick}\n descriptionLines={descriptionLines}\n target={target}\n itemIndex={itemIndex}\n originalItem={originalItem}\n gridIndex={gridIndex}\n name={name}\n render={toggleEnabled || preventToggle ? toggled : true}\n recommendationIdData={recommendationIdData}\n subtitleText={subtitleText}\n titleText={titleText}\n />\n );\n if (toggleEnabled) toggleElement = dotDotDotLink;\n\n const titleOptions = {\n account,\n gridIndex,\n gridTitle,\n isCollectionCategoryList,\n isDisabled,\n isHoverStateV2,\n isRedirect,\n isSeriesDetailAvailable,\n isUpcoming,\n itemIndex,\n link: titleLinkVal,\n name,\n network,\n onTileClick,\n onTileMouseDown,\n onTitleClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n target,\n theme: style,\n title,\n titleLines,\n titleText,\n };\n const infoStyle = isLiveTileV2 ? [style.info, style.infoExtended] : [style.info];\n return (\n <div className={classNames(classes)} style={inlineStyle} data-test=\"inline-style\">\n {imageElement}\n {!disableDescriptions && (\n <div className={className}>\n <div className={classNames(infoStyle)}>\n {isLiveTileV2 && (\n <TileNetworkBubble\n {...{\n callSign,\n theme: style,\n link,\n showNetworkIcon: shouldShowNetworkIcon || isPrimeTime,\n }}\n />\n )}\n <div className={shouldInvertTitleOrder({ videoType }) ? style.titleReverse : null}>\n <TileTitle {...titleOptions} />\n {!isHoverStateV2 || (isHoverStateV2 && !isSeries) ? (\n <Subtitle\n account={account}\n gridIndex={gridIndex}\n isDisabled={isDisabled}\n isRedirect={isRedirect}\n itemIndex={itemIndex}\n link={subtitleLinkVal}\n name={name}\n onTileClick={onTileClick}\n onTileMouseDown={onTileMouseDown}\n originalItem={originalItem}\n percentWatched={percentWatched}\n recommendationIdData={recommendationIdData}\n subtitle={subtitle}\n subtitleLines={subtitleLines}\n subtitleText={subtitleText}\n target={target}\n theme={style}\n titleText={titleText}\n truncateSubtitle={truncateSubtitle}\n />\n ) : null}\n </div>\n {ctaPosition === 'middle' && <ActionButtons {...{ theme: style, ctaData }} />}\n {descriptionElement}\n <TileMetaData {...{ theme: style, metadata }} />\n {toggleElement}\n </div>\n <ToggleDetail\n theme={style}\n link={titleLinkVal}\n descriptionElement={descriptionElement}\n seeAllText={seeAllText}\n title={title}\n subtitleName={subtitleName}\n account={account}\n trackButtonClick={trackButtonClick}\n onSeeAllClick={onSeeAllClick}\n itemIndex={itemIndex}\n gridIndex={gridIndex}\n gridTitle={gridTitle}\n name={name}\n percentWatched={percentWatched}\n render={toggleEnabled}\n toggle={this.toggle}\n data-test=\"shared-tile-toggle-detail\"\n />\n {ctaPosition === 'end' && <ActionButtons {...{ theme: style, ctaData }} />}\n </div>\n )}\n </div>\n );\n }\n}\n\nTile.propTypes = {\n account: PropTypes.shape({}),\n affiliateLogo: PropTypes.string,\n anonymousCTAClick: PropTypes.func,\n anonymousCTAText: PropTypes.string,\n applyInlineBackground: PropTypes.bool,\n badge: PropTypes.string,\n bookmarkSeconds: PropTypes.number,\n breakpoint: PropTypes.string,\n categoryType: PropTypes.string,\n callSign: PropTypes.string,\n collectionItemViewed: PropTypes.func,\n collectionType: PropTypes.string,\n contentId: PropTypes.string,\n context: PropTypes.string,\n ctaData: PropTypes.arrayOf(PropTypes.node),\n ctaPosition: PropTypes.string,\n customTileClick: PropTypes.func,\n description: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n descriptionLines: PropTypes.number,\n descriptionLink: PropTypes.string,\n disableDescriptions: PropTypes.bool,\n disableHoverStateActionButtons: PropTypes.bool,\n displayTemplate: PropTypes.string,\n displayUpsellCTA: PropTypes.bool,\n durationInSeconds: PropTypes.number,\n endDate: PropTypes.string,\n fadeTile: PropTypes.bool,\n favoritesManager: PropTypes.shape({}),\n gridIndex: PropTypes.number,\n gridTitle: PropTypes.string,\n headline: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.string]),\n hoverImage: PropTypes.string,\n image: PropTypes.string,\n imageAltText: PropTypes.string,\n inlineStyle: PropTypes.shape({}),\n isAnonymous: PropTypes.bool,\n isDisabled: PropTypes.bool,\n isHoverStateV2: PropTypes.bool,\n isLocked: PropTypes.bool,\n isPlayable: PropTypes.bool,\n isPrimeTime: PropTypes.bool,\n isRedirect: PropTypes.bool,\n isSeries: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n isSeasons: PropTypes.bool,\n isTileGrid: PropTypes.bool,\n isUserOutOfMarket: PropTypes.bool,\n itemIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n lazyLoadEnabled: PropTypes.bool,\n link: PropTypes.string,\n livePlayerScreenUrl: PropTypes.string,\n metadata: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n name: PropTypes.string,\n network: PropTypes.string,\n networkIcon: PropTypes.string,\n onSeeAllClick: PropTypes.func,\n onTileClick: PropTypes.func,\n onTitleClick: PropTypes.func,\n onTileMouseDown: PropTypes.func,\n originalItem: PropTypes.shape({}),\n overlay: PropTypes.string,\n overlayProps: PropTypes.shape({}),\n overridePlayButtonClick: PropTypes.func,\n panelCount: PropTypes.number,\n percentWatched: PropTypes.number,\n playButton: PropTypes.bool,\n playerScreenUrl: PropTypes.string,\n playlist: PropTypes.string,\n preventLazyLoad: PropTypes.bool,\n preventToggle: PropTypes.bool,\n recommendationIdData: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.string]),\n renderImage: PropTypes.func,\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n seeAllText: PropTypes.string,\n searchCompleted: PropTypes.bool,\n setSearchCompleted: PropTypes.func,\n searchTerm: PropTypes.string,\n segmentPlaylistButtonAction: PropTypes.func,\n seriesName: PropTypes.string,\n seriesScreenUrl: PropTypes.string,\n seriesType: PropTypes.string,\n shouldDisplayNetworkLogo: PropTypes.bool,\n shouldInvertTitleOrder: PropTypes.func,\n showCode: PropTypes.string,\n showLiveProgressBar: PropTypes.bool,\n startDate: PropTypes.string,\n subtitle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n subtitleLines: PropTypes.number,\n subtitleLink: PropTypes.string,\n subtitleName: PropTypes.string,\n subtitleText: PropTypes.string,\n tab: PropTypes.shape({}),\n target: PropTypes.string,\n tealiumActions: PropTypes.shape({}),\n theme: PropTypes.shape({}).isRequired,\n tileType: PropTypes.string,\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n titleLines: PropTypes.number,\n titleLink: PropTypes.string,\n titleText: PropTypes.string,\n toggleEnabled: PropTypes.bool,\n trackButtonClick: PropTypes.func,\n truncateSubtitle: PropTypes.bool,\n upsellButtonClick: PropTypes.func,\n upsellButtonIcon: PropTypes.node,\n upsellButtonText: PropTypes.string,\n upsellDogEarImage: PropTypes.string,\n upsellDogEarText: PropTypes.string,\n isLiveTileV2: PropTypes.bool,\n usePlayButtonThin: PropTypes.bool,\n video: PropTypes.string,\n videoType: PropTypes.string,\n};\n\nTile.defaultProps = {\n account: {},\n affiliateLogo: '',\n anonymousCTAClick: noop,\n anonymousCTAText: '',\n applyInlineBackground: false,\n badge: null,\n bookmarkSeconds: 0,\n breakpoint: '',\n categoryType: null,\n collectionItemViewed: null,\n collectionType: null,\n contentId: null,\n context: '',\n ctaData: null,\n ctaPosition: 'image',\n customTileClick: null,\n description: null,\n descriptionLines: null,\n descriptionLink: null,\n disableDescriptions: false,\n disableHoverStateActionButtons: false,\n displayUpsellCTA: false,\n durationInSeconds: 0,\n endDate: null,\n fadeTile: null,\n favoritesManager: {},\n gridIndex: null,\n gridTitle: null,\n headline: null,\n hoverImage: null,\n image: null,\n imageAltText: '',\n inlineStyle: {},\n isAnonymous: false,\n isDisabled: null,\n isHoverStateV2: false,\n isLocked: false,\n isPlayable: false,\n isPrimeTime: false,\n isRedirect: false,\n isSeries: false,\n isSeriesDetailAvailable: undefined,\n isTileGrid: false,\n isUserOutOfMarket: false,\n lazyLoadEnabled: true,\n link: null,\n livePlayerScreenUrl: '',\n metadata: null,\n name: null,\n network: null,\n networkIcon: null,\n onSeeAllClick: noop,\n onTileClick: noop,\n onTitleClick: noop,\n onTileMouseDown: noop,\n originalItem: {},\n overlay: null,\n overlayProps: null,\n overridePlayButtonClick: null,\n panelCount: 0,\n percentWatched: null,\n playButton: null,\n playerScreenUrl: null,\n playlist: '',\n preventLazyLoad: false,\n preventToggle: false,\n recommendationIdData: null,\n renderImage: noop,\n scaleFromLeft: null,\n scaleFromRight: null,\n searchTerm: '',\n seeAllText: null,\n segmentPlaylistButtonAction: noop,\n seriesName: null,\n seriesScreenUrl: null,\n seriesType: null,\n shouldDisplayNetworkLogo: true,\n shouldInvertTitleOrder: noop,\n showCode: null,\n showLiveProgressBar: false,\n startDate: null,\n subtitle: null,\n subtitleLines: null,\n subtitleLink: null,\n subtitleName: null,\n subtitleText: null,\n tab: null,\n target: null,\n tealiumActions: {},\n tileType: null,\n title: null,\n titleLines: null,\n titleLink: '',\n titleText: null,\n toggleEnabled: false,\n trackButtonClick: noop,\n truncateSubtitle: false,\n upsellButtonClick: noop,\n upsellButtonIcon: null,\n upsellButtonText: null,\n upsellDogEarImage: null,\n upsellDogEarText: null,\n isLiveTileV2: false,\n usePlayButtonThin: false,\n video: null,\n videoType: null,\n};\n\nexport default Tile;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport { noop } from 'helpers/GlobalHelper';\nimport Tile from 'components/TileLegacy';\nimport { Tile as TileV2 } from 'components/TileV2';\n\nimport Style from './TileGrid.module.scss';\n\nconst EXPAND_BEHAVIOR_PAGINATION = 'pagination';\nconst EXPAND_BEHAVIOR_TOGGLE = 'toggle';\nconst EXPAND_BEHAVIOR_FROM_COLLAPSED_SET = 'toggleFromCollapsedSet';\n\nclass TileGrid extends Component {\n constructor() {\n super();\n this.state = {\n hasMore: false,\n expanded: false,\n page: 1,\n };\n this.toggleShowMore = this.toggleShowMore.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { items, toggleLimit, scrollSeeLess } = this.props;\n const { expanded, hasMore } = this.state;\n const { expanded: prevExpanded } = prevState;\n const count = items && items.length ? items.length : 0;\n\n const newHasMore = toggleLimit < count;\n if (hasMore !== newHasMore) {\n this.setState({ hasMore: newHasMore });\n }\n\n if (!expanded && prevExpanded && scrollSeeLess) {\n this.targetDiv.scrollIntoView(false);\n }\n }\n\n toggleShowMore() {\n const {\n expandBehavior,\n items,\n toggleLimit,\n tileGridTrackButtonClick,\n onToggleShowMore,\n } = this.props;\n const { expanded, page } = this.state;\n const {\n paginationLessButton: toggleLessText,\n paginationMoreButton: toggleMoreText,\n } = window.Language;\n const toggleText = expanded ? toggleLessText : toggleMoreText;\n const newToggleLimit = toggleLimit * page;\n const count = items && items.length ? items.length : 0;\n\n if (onToggleShowMore) onToggleShowMore();\n\n if (tileGridTrackButtonClick) {\n tileGridTrackButtonClick({ text: _.trim(toggleText) });\n }\n\n if (expandBehavior === EXPAND_BEHAVIOR_PAGINATION) {\n // handle pagination.\n if (!expanded && newToggleLimit + toggleLimit >= count) {\n this.setState({ expanded: true });\n return;\n }\n if (expanded && newToggleLimit + toggleLimit >= count) {\n this.setState({ expanded: false, page: 1 });\n return;\n }\n // increase pages on pagination.\n this.setState({ page: page + 1 });\n return;\n }\n\n this.setState({\n expanded: !expanded,\n });\n }\n\n filteredItems() {\n const { itemsCollapsed, expandBehavior, items, toggleLimit } = this.props;\n const { page } = this.state;\n const togglePaginated = toggleLimit ? toggleLimit * page : null;\n\n switch (expandBehavior) {\n case EXPAND_BEHAVIOR_FROM_COLLAPSED_SET:\n return itemsCollapsed;\n default:\n return items.slice(0, togglePaginated);\n }\n }\n\n render() {\n const {\n account,\n collectionItemViewed,\n collectionType,\n context,\n customTileClick,\n disableDescriptions,\n disableHoverStateActionButtons,\n displayUpsellCTA,\n expandBehavior,\n getButtons,\n gridIndex,\n gridStyle,\n gridTitle,\n gridType,\n isAuthenticated,\n isSeriesDetailPage,\n items,\n onSeeAllClick,\n onTileClick,\n onTitleClick,\n padding,\n preventLazyLoad,\n processor,\n renderImage,\n segmentPlaylistButtonAction,\n separator,\n shouldDisplayNetworkLogo,\n showSeriesName,\n tab,\n tealiumActions,\n tileDetailToggle,\n tileIndexOffset,\n tileTheme,\n tileType,\n tileV2Type,\n toggleLimit,\n toggleVideoModal,\n usePlayButtonThin,\n } = this.props;\n\n const { expanded, page } = this.state;\n const classes = classNames(Style.container, Style[gridType]);\n const togglePaginated = toggleLimit ? toggleLimit * page : null;\n const filteredItems = !expanded && togglePaginated ? this.filteredItems() : items;\n // Toggle count would be the number of items to show initially\n const toggleCount = toggleLimit || 0;\n const count = items && items.length ? items.length : 0;\n const hasMore = toggleLimit < count;\n let loadMoreElement = null;\n let itemIndex = -1;\n\n if (\n hasMore ||\n (count > toggleCount && toggleCount > 0) ||\n expandBehavior === EXPAND_BEHAVIOR_TOGGLE ||\n expandBehavior === EXPAND_BEHAVIOR_PAGINATION\n ) {\n const suppressMore =\n expandBehavior === EXPAND_BEHAVIOR_PAGINATION &&\n !(hasMore || (count > toggleCount && toggleCount > 0));\n const params = {\n theme: Style,\n toggleFunction: this.toggleShowMore,\n expanded,\n hasMore,\n suppressMore,\n };\n loadMoreElement = getButtons && typeof getButtons === 'function' ? getButtons(params) : null;\n } else if (tileIndexOffset) {\n itemIndex -= tileIndexOffset;\n }\n return (\n <div\n className={classes}\n ref={div => {\n this.targetDiv = div;\n }}\n >\n <div className={Style.grid} style={gridStyle}>\n {_.flatMap(filteredItems, item => {\n if (!item) return null;\n const modifiedItem = item;\n modifiedItem.theme = tileTheme;\n modifiedItem.displayUpsellCTA = displayUpsellCTA;\n const processed = processor({\n gridIndex,\n item: modifiedItem,\n itemIndex,\n isAuthenticated,\n toggleVideoModal,\n theme: tileTheme,\n showSeriesName,\n });\n if (!processed) return null;\n\n itemIndex += 1;\n\n const tileProps = {\n ...processed,\n account,\n collectionItemViewed,\n collectionType,\n context,\n customTileClick,\n disableDescriptions,\n disableHoverStateActionButtons,\n displayUpsellCTA,\n gridIndex,\n gridTitle,\n isSeriesDetailPage,\n itemIndex,\n key: `${processed?.id}-${context}`,\n onSeeAllClick,\n onTileClick,\n onTitleClick,\n preventLazyLoad,\n renderImage,\n segmentPlaylistButtonAction,\n shouldDisplayNetworkLogo,\n tab,\n tealiumActions,\n theme: tileTheme,\n tileType,\n toggleEnabled: tileDetailToggle && !processed?.preventToggle,\n upsellButtonClick: onTitleClick,\n usePlayButtonThin,\n };\n\n return tileV2Type ? (\n <TileV2 type={tileV2Type} {...tileProps} />\n ) : (\n <Tile {...tileProps} isTileGrid />\n );\n })}\n </div>\n {loadMoreElement}\n {separator ? <hr className={Style.hr} /> : null}\n {padding && <div className={Style.padding} />}\n </div>\n );\n }\n}\n\nTileGrid.propTypes = {\n account: PropTypes.shape({}),\n collectionItemViewed: PropTypes.func,\n collectionType: PropTypes.string,\n context: PropTypes.string,\n customTileClick: PropTypes.func,\n disableDescriptions: PropTypes.bool,\n disableHoverStateActionButtons: PropTypes.bool,\n displayUpsellCTA: PropTypes.bool,\n expandBehavior: PropTypes.string,\n getButtons: PropTypes.func,\n gridIndex: PropTypes.number,\n gridStyle: PropTypes.shape({}),\n gridTitle: PropTypes.string,\n gridType: PropTypes.oneOf([\n 'grid-2-1',\n 'grid-3-1',\n 'grid-3-2',\n 'grid-4-1',\n 'grid-4-2',\n 'grid-4-2-1',\n 'grid-4-3',\n 'grid-4-3-1',\n 'grid-5-4-2-1',\n 'grid-5-4-3-1',\n 'grid-horizontal-3',\n ]).isRequired,\n isAuthenticated: PropTypes.bool,\n isSeriesDetailPage: PropTypes.bool,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n itemsCollapsed: PropTypes.bool,\n onSeeAllClick: PropTypes.func,\n onTileClick: PropTypes.func,\n onTitleClick: PropTypes.func,\n onToggleShowMore: PropTypes.func,\n padding: PropTypes.bool,\n preventLazyLoad: PropTypes.bool,\n processor: PropTypes.func,\n renderImage: PropTypes.func,\n scrollSeeLess: PropTypes.bool,\n segmentPlaylistButtonAction: PropTypes.func,\n separator: PropTypes.bool,\n shouldDisplayNetworkLogo: PropTypes.bool,\n showSeriesName: PropTypes.bool,\n tab: PropTypes.shape({}),\n tealiumActions: PropTypes.shape({}),\n tileDetailToggle: PropTypes.bool,\n tileGridTrackButtonClick: PropTypes.func,\n tileIndexOffset: PropTypes.number,\n tileTheme: PropTypes.shape({}),\n tileType: PropTypes.string,\n tileV2Type: PropTypes.string,\n toggleLimit: PropTypes.number,\n toggleVideoModal: PropTypes.func,\n usePlayButtonThin: PropTypes.bool,\n};\n\nTileGrid.defaultProps = {\n account: {},\n collectionItemViewed: noop,\n collectionType: null,\n context: null,\n customTileClick: null, // This needs to remain null and not noop as it break logic further down.\n disableDescriptions: false,\n disableHoverStateActionButtons: false,\n displayUpsellCTA: false,\n expandBehavior: null,\n getButtons: noop,\n gridIndex: null,\n gridStyle: {},\n gridTitle: null,\n isAuthenticated: null,\n isSeriesDetailPage: false,\n items: [],\n itemsCollapsed: null,\n onSeeAllClick: noop,\n onTileClick: noop,\n onTitleClick: noop,\n onToggleShowMore: null,\n padding: false,\n preventLazyLoad: false,\n processor: noop,\n renderImage: noop,\n scrollSeeLess: null,\n segmentPlaylistButtonAction: noop,\n separator: false,\n shouldDisplayNetworkLogo: true,\n showSeriesName: false,\n tab: null,\n tealiumActions: {},\n tileDetailToggle: true,\n tileGridTrackButtonClick: noop,\n tileIndexOffset: null,\n tileTheme: {},\n tileType: '',\n tileV2Type: '',\n toggleLimit: null,\n toggleVideoModal: noop,\n usePlayButtonThin: false,\n};\n\nexport default TileGrid;\n","import _ from 'lodash';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Icon from 'components/Icon';\nimport classNames from 'classnames';\nimport { noop } from 'helpers/GlobalHelper';\nimport { SegmentUiElements } from '@foxcorp/delta-web-analytics';\n\n/**\n * List Component\n * @param {Object} items - Items to be displayed\n * @returns {Component} - React Component\n */\nclass List extends Component {\n constructor() {\n super();\n this.state = {\n expanded: false,\n expandedItemId: null,\n };\n this.renderListItem = this.renderListItem.bind(this);\n this.toggleItem = this.toggleItem.bind(this);\n this.toggleShowMore = this.toggleShowMore.bind(this);\n }\n\n renderListItem(item) {\n if (!item) return;\n const { onLinkClick, onTitleClick, onPlayClick, theme } = this.props;\n const { expandedItemId } = this.state;\n const {\n id,\n isLive,\n title,\n titleLink,\n tileDetailToggle,\n link,\n isDisabled,\n iconUrl,\n icon,\n playButton,\n subtitle,\n description,\n percentWatched,\n badge,\n requiresAuth,\n isAuthenticated,\n isAuthorized,\n target,\n rel,\n originalItem,\n name,\n } = item;\n\n let titleElement = null;\n if (title) {\n if (!titleLink || isDisabled) {\n titleElement = (\n <div key={`title-div-${id}`} className={theme?.title}>\n {title}\n </div>\n );\n } else {\n titleElement = (\n <Link\n key={`title-link-${id}`}\n to={titleLink}\n className={theme?.title}\n onClick={() => {\n if (onLinkClick) {\n onLinkClick({\n originalItem,\n titleText: name,\n uiElement: SegmentUiElements.SERIES_TITLE,\n });\n } else if (onTitleClick) {\n onTitleClick();\n }\n }}\n target={target}\n rel={rel}\n >\n <span>{title}</span>\n </Link>\n );\n }\n }\n\n const playButtonElement =\n playButton === true ? (\n <div className={requiresAuth ? classNames(theme?.play, theme?.playDimmed) : theme?.play}>\n <Link\n key={`link-${id}`}\n to={link}\n onClick={() => {\n if (onPlayClick) {\n onPlayClick({ title, originalItem, uiElement: SegmentUiElements.PLAY });\n } else if (onLinkClick) {\n onLinkClick({ title, originalItem });\n }\n }}\n className={theme?.link}\n >\n <Icon icon=\"play-button\" color=\"white\" size=\"full\" />\n </Link>\n </div>\n ) : null;\n let badgeElement = null;\n if (!playButton && badge) {\n const badgeClasses = [theme?.badge];\n if (isLive) badgeClasses.push(theme?.liveBadge);\n if (badge === 'UPCOMING') badgeClasses.push(theme?.otherBadge);\n badgeElement = (\n <div className={classNames(badgeClasses)}>\n <span>{badge}</span>\n </div>\n );\n }\n const subtitleElement = subtitle && (\n <span key=\"list-subtitle\" className={theme?.subtitle}>\n {subtitle}\n </span>\n );\n const descriptionElement = description && (\n <span className={theme?.description}>{description}</span>\n );\n let percentWatchedUsed = percentWatched;\n if (percentWatchedUsed > 100) percentWatchedUsed = 100;\n let progressBarElement = null;\n\n if (!Number.isNaN(percentWatchedUsed) && percentWatchedUsed > 0 && percentWatchedUsed <= 100) {\n const progressClassSuffix =\n percentWatchedUsed % 5 === 0\n ? percentWatchedUsed\n : percentWatchedUsed - (percentWatchedUsed % 5);\n progressBarElement = (\n <div className={classNames(theme?.progress, `progress-${progressClassSuffix}`)}>\n <div\n className={classNames(theme?.done, `done-${progressClassSuffix}`)}\n style={{ width: `${percentWatchedUsed}%` }}\n />\n </div>\n );\n }\n\n const rightElement = playButtonElement || badgeElement;\n const centerElement = [];\n\n if (titleElement) centerElement.push(titleElement);\n if (subtitleElement) centerElement.push(subtitleElement);\n if (descriptionElement && expandedItemId === id) centerElement.push(descriptionElement);\n if (progressBarElement) centerElement.push(progressBarElement);\n\n const dotDotDotLink = (\n <button\n className={theme?.dotdotdot}\n onClick={() => {\n this.toggleItem(id);\n }}\n >\n • • •\n </button>\n );\n const xLink = (\n <button\n className={theme?.x}\n onClick={() => {\n this.toggleItem(null);\n }}\n >\n <Icon size=\"full\" color=\"black\" icon=\"close\" />\n </button>\n );\n const leftLink = expandedItemId === id ? xLink : dotDotDotLink;\n\n let leftIcon = null;\n if (icon) leftIcon = icon;\n if (iconUrl) {\n leftIcon = (\n <div key={`icon-${id}`} className={theme?.icon}>\n <img src={iconUrl} alt={title || ''} />\n </div>\n );\n }\n\n const leftElement = tileDetailToggle ? leftLink : leftIcon;\n const classes =\n (requiresAuth && !isAuthenticated) || !isAuthorized\n ? classNames(theme?.listItem, theme?.requiresAuth)\n : theme?.listItem;\n\n // eslint-disable-next-line consistent-return\n return (\n <li key={`li-${id}`} className={classes}>\n {rightElement ? <div className={theme?.right}>{rightElement}</div> : null}\n {centerElement ? <div className={theme?.center}>{centerElement}</div> : null}\n {leftElement ? <div className={theme?.left}>{leftElement}</div> : null}\n </li>\n );\n }\n\n toggleItem(id) {\n this.setState({ expandedItemId: id });\n }\n\n toggleShowMore() {\n const { expanded } = this.state;\n this.setState({ expanded: !expanded });\n }\n\n render() {\n const { expanded } = this.state;\n const {\n items,\n processor,\n theme = {},\n tileDetailToggle,\n toggleLimit,\n toggleMoreText,\n toggleLessText,\n } = this.props;\n if (!items) return null;\n const key = _.get(items, '0.id', 0);\n const itemsLength = _.get(items, 'length');\n const itemsLimited = toggleLimit && expanded === false ? items.slice(0, toggleLimit) : items;\n const btnText = expanded === false ? toggleMoreText : toggleLessText;\n\n return (\n <div key={`key-${key}`} className={theme?.list}>\n <ul className={theme?.listUl}>\n {_.map(itemsLimited, item => {\n const processedItem = processor ? processor({ item }) : item;\n processedItem.tileDetailToggle = tileDetailToggle;\n processedItem.originalItem = item;\n return this.renderListItem(processedItem);\n })}\n {toggleLimit && itemsLength > toggleLimit ? (\n <li className={theme?.buttonsContainer}>\n <button onClick={this.toggleShowMore} className={theme?.button}>\n {btnText}\n </button>\n </li>\n ) : null}\n </ul>\n </div>\n );\n }\n}\n\nList.propTypes = {\n items: PropTypes.arrayOf(PropTypes.shape({})),\n onLinkClick: PropTypes.func,\n onPlayClick: PropTypes.func,\n onTitleClick: PropTypes.func,\n processor: PropTypes.func,\n theme: PropTypes.shape({\n list: PropTypes.string,\n listUl: PropTypes.string,\n listItem: PropTypes.string,\n title: PropTypes.string,\n icon: PropTypes.string,\n }).isRequired,\n tileDetailToggle: PropTypes.bool,\n toggleLimit: PropTypes.number,\n toggleMoreText: PropTypes.string,\n toggleLessText: PropTypes.string,\n};\n\nList.defaultProps = {\n items: [],\n onLinkClick: noop,\n onPlayClick: noop,\n onTitleClick: noop,\n processor: noop,\n tileDetailToggle: false,\n toggleLimit: null,\n toggleMoreText: null,\n toggleLessText: null,\n};\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TileGrid from 'components/TileGrid';\nimport List from 'components/List';\n\nexport const getTileGridButtons = ({ theme, expanded, toggleFunction, toggleMoreTextOverride }) => {\n const {\n paginationLessButton: toggleLessText,\n paginationMoreButton: toggleMoreText,\n } = window.Language;\n const seeMoreText = toggleMoreTextOverride || toggleMoreText;\n const caption = expanded ? toggleLessText : seeMoreText;\n return (\n <div className={theme.buttonsContainer}>\n <button onClick={toggleFunction} className={theme.button} type=\"button\">\n {caption}\n </button>\n </div>\n );\n};\n\nconst getTileGridButtonsAll = ({ theme, expanded, toggleFunction }) => {\n const { tileGrid_seeAllButtonText: seeAllText } = window.Language;\n return getTileGridButtons({\n theme,\n expanded,\n toggleFunction,\n toggleMoreTextOverride: seeAllText,\n });\n};\n\nexport function renderGrid({\n collectionType,\n context,\n gridProcessor,\n gridType,\n isAuthenticated,\n items,\n itemsCollapsed,\n key,\n listProcessor,\n listTheme,\n onLinkClick,\n onPlayClick,\n onTileClick,\n onTitleClick,\n onToggleShowMore,\n paginationLessButton,\n paginationMoreButton,\n preauthorizedResources,\n renderImage,\n renderList,\n scrollSeeLess,\n shouldRenderButtons,\n showSeriesName,\n style,\n tileDetailToggle,\n tileGridTheme,\n tileGridTrackButtonClick,\n tileIndexOffset,\n tileTheme,\n tileType,\n toggleLimit,\n expandBehavior,\n}) {\n const getTileGridButtonsCall = getTileGridButtonsAll;\n const getButtons = shouldRenderButtons ? getTileGridButtonsCall : null;\n if (renderList) {\n return (\n <List\n key={key}\n theme={listTheme}\n items={items}\n processor={listProcessor}\n onLinkClick={onLinkClick}\n tileDetailToggle={tileDetailToggle}\n onTitleClick={onTitleClick}\n onPlayClick={onPlayClick}\n tileTheme={tileTheme}\n toggleLimit={toggleLimit}\n toggleMoreText={paginationMoreButton}\n toggleLessText={paginationLessButton}\n />\n );\n }\n return (\n <TileGrid\n collectionType={collectionType}\n context={context}\n expandBehavior={expandBehavior}\n getButtons={getButtons}\n gridType={gridType}\n isAuthenticated={isAuthenticated}\n items={items}\n itemsCollapsed={itemsCollapsed}\n key={key}\n onTileClick={onTileClick}\n onTitleClick={onTitleClick}\n onToggleShowMore={onToggleShowMore}\n preauthorizedResources={preauthorizedResources}\n processor={gridProcessor}\n renderImage={renderImage}\n scrollSeeLess={scrollSeeLess}\n showSeriesName={showSeriesName}\n style={style}\n theme={tileGridTheme}\n tileDetailToggle={tileDetailToggle}\n tileGridTrackButtonClick={tileGridTrackButtonClick}\n tileIndexOffset={tileIndexOffset}\n tileTheme={tileTheme}\n tileType={tileType}\n toggleLessText={paginationLessButton}\n toggleLimit={toggleLimit}\n toggleMoreText={paginationMoreButton}\n />\n );\n}\n\nrenderGrid.defaultProps = {\n collectionType: null,\n context: null,\n expandBehavior: () => {},\n isAuthenticated: false,\n itemsCollapsed: true,\n key: null,\n listTheme: null,\n onLinkClick: null,\n onPlayClick: () => {},\n onTileClick: null,\n paginationLessButton: null,\n paginationMoreButton: null,\n preauthorizedResources: null,\n scrollSeeLess: null,\n shouldRenderButtons: null,\n showSeriesName: false,\n tileGridTheme: null,\n tileGridTrackButtonClick: () => {},\n toggleLimit: null,\n};\n\nrenderGrid.propTypes = {\n collectionType: PropTypes.string,\n context: PropTypes.shape({}),\n expandBehavior: PropTypes.func,\n gridProcessor: PropTypes.func.isRequired,\n gridType: PropTypes.string.isRequired,\n isAuthenticated: PropTypes.func,\n items: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n itemsCollapsed: PropTypes.bool,\n key: PropTypes.string,\n listProcessor: PropTypes.func.isRequired,\n listTheme: PropTypes.string,\n onLinkClick: PropTypes.func,\n onPlayClick: () => {},\n onTileClick: PropTypes.func,\n onTitleClick: PropTypes.func.isRequired,\n onToggleShowMore: PropTypes.func.isRequired,\n paginationLessButton: PropTypes.shape({}),\n paginationMoreButton: PropTypes.shape({}),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n renderImage: PropTypes.func.isRequired,\n renderList: PropTypes.bool.isRequired,\n scrollSeeLess: PropTypes.bool,\n shouldRenderButtons: PropTypes.bool,\n showSeriesName: PropTypes.bool,\n style: PropTypes.shape({}).isRequired,\n tileDetailToggle: PropTypes.bool.isRequired,\n tileGridTheme: PropTypes.string,\n tileGridTrackButtonClick: PropTypes.func,\n tileIndexOffset: PropTypes.number.isRequired,\n tileTheme: PropTypes.shape({}).isRequired,\n tileType: PropTypes.string.isRequired,\n toggleLimit: PropTypes.bool,\n};\n\ngetTileGridButtons.defaultProps = {\n theme: {},\n expanded: false,\n toggleFunction: () => {},\n toggleMoreTextOverride: () => {},\n};\n\ngetTileGridButtons.propTypes = {\n theme: PropTypes.shape({}),\n expanded: PropTypes.bool,\n toggleFunction: PropTypes.func,\n toggleMoreTextOverride: PropTypes.func,\n};\n","import _ from 'lodash';\nimport { anonymousLogin as helperAnonymousLogin } from 'helpers/Account';\nimport {\n getCookie,\n setCookie,\n getPaginatedStorage,\n setPaginatedStorage,\n removePaginatedStorage,\n} from 'helpers/Storage';\nimport { initSegmentDeviceIdCookie } from '@foxcorp/delta-web-analytics';\nimport { addYears, now } from 'helpers/DateTimeHelper';\nimport { helperGetApiAccountRoute, helperGetApiHeaders } from 'helpers/ApiHelper';\nimport v4 from 'uuid';\n\nconst generateCookie = (name, value, expires) => {\n const options = { name, value, options: { path: '/', expires } };\n setCookie(options);\n};\n\nexport const ANONYMOUS_ACCOUNT_TYPE = 'anonymous';\nconst ANONYMOUS_ID_COOKIE = 'ajs_anonymous_id';\nconst ANONYMOUS_FAVORITES_STORAGE_NAME = _.get(\n window.ExternalConfig,\n 'anonymousUser.favoritesCookie',\n);\nexport const getAnonymousIdCookie = () => getCookie({ name: ANONYMOUS_ID_COOKIE });\nexport const initAnonymousId = () => {\n const anonymousIdCookie = getAnonymousIdCookie();\n let anonymousId = anonymousIdCookie || v4();\n anonymousId = anonymousId.replace(/\"/g, '');\n const yearsToAdd = 1;\n const expires = addYears(now(), yearsToAdd);\n\n initSegmentDeviceIdCookie({ deviceId: anonymousId, expires, generateCookie });\n\n return anonymousId;\n};\n\nexport function setAnonymousFavoritesInStorage({ anonymousFavorites }) {\n setPaginatedStorage({\n key: ANONYMOUS_FAVORITES_STORAGE_NAME,\n value: anonymousFavorites,\n options: { path: '/', limit: 10 },\n });\n}\n\nexport function getAnonymousFavoritesFromStorage() {\n return getPaginatedStorage({\n key: ANONYMOUS_FAVORITES_STORAGE_NAME,\n });\n}\n\nexport function resetAnonymous(options) {\n const { copyFavoritesToAccount } = options || {};\n if (!copyFavoritesToAccount) return;\n removePaginatedStorage({ key: ANONYMOUS_FAVORITES_STORAGE_NAME });\n}\n\nexport function handleAnonymousLogin({ authorizationToken, deviceId, setUserAuthData, profile }) {\n const headers = helperGetApiHeaders({ accessToken: authorizationToken, deviceId });\n const req = {\n route: helperGetApiAccountRoute('login'),\n headers,\n setUserAuthData,\n };\n const body = { deviceId };\n return helperAnonymousLogin(req, body, profile);\n}\n\nexport function isHiddenForAnonymous({ hideIfNotLoggedIn }) {\n return hideIfNotLoggedIn;\n}\n\nexport function parseJwt(token) {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map(c => `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`)\n .join(''),\n );\n\n return JSON.parse(jsonPayload);\n}\n\nexport async function getCurrentAccount({ account, anonymousAccount, anonymousLogin, deviceId }) {\n let newAnonymousAccount = {};\n\n if (!account && !anonymousAccount && deviceId) {\n const result = await anonymousLogin({ deviceId });\n newAnonymousAccount = result ? result.data : null;\n newAnonymousAccount.isNew = true;\n }\n const selectedAccount = account || anonymousAccount || newAnonymousAccount;\n return selectedAccount;\n}\n","/* global DeepLinkFavoriting, FavoritesEnabled, FetchV1Favorites */\n/* eslint-disable import/no-unused-modules */\nimport React from 'react';\nimport _ from 'lodash';\nimport {\n helperGetApiAccountRoute,\n helperGetApiHeaders,\n helperGetApiKey,\n helperGetFavoriteDetailsApiRoute,\n} from 'helpers/ApiHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport { renderGrid } from 'helpers/GridHelper';\nimport style from 'screens/Shows/Shows.css';\nimport { getDisplayBrand, getNetworkLogoUrl } from 'helpers/ContentHelper';\nimport { helperGetRelativeUrl, helperGetAccountUrl } from 'helpers/RouteHelper';\nimport {\n setAnonymousFavoritesInStorage,\n getAnonymousFavoritesFromStorage,\n ANONYMOUS_ACCOUNT_TYPE,\n} from 'helpers/AnonymousHelper';\nimport {\n getFavorites,\n getV1Favorites,\n setFavorites,\n setFavoritesIE,\n deleteFavorites,\n deleteFavoritesIE,\n getAccountCookie,\n} from 'helpers/Account';\nimport { upgradeJWT as helperUpgradeJWT } from 'helpers/auth.clientless';\nimport { setLocalStorageItem, getLocalStorageItem, removeLocalStorageItem } from 'helpers/Storage';\nimport Favorite, { FAVORITE_TYPE_ICON, FAVORITE_PLUS_CIRCLE } from 'components/Favorite';\nimport tileGridTheme from 'themes/TileGridAccountFavorites.css';\nimport tileTheme from 'themes/TileAccountFavorites.css';\nimport favoriteTheme from 'themes/FavoriteAccount.css';\nimport listStyle from 'themes/ListAccountFavorites.module.scss';\nimport {\n FAVORITES_TYPE_PERSONALITY,\n getAccountAnalyticsEvents,\n PageNames,\n SegmentSources,\n tealiumEventPageTypes,\n TrackEvents,\n} from '@foxcorp/delta-web-analytics';\nimport { COLLECTION_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\n\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { userAttributeEvents } from 'helpers/OptimizelyHelper';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n renderList: false,\n },\n [SITE_PLATFORM_WEB]: {\n renderList: false,\n },\n [SITE_PLATFORM_TABLET]: {\n renderList: true,\n },\n [SITE_PLATFORM_MOBILE]: {\n renderList: true,\n },\n};\nexport const helperGetPerks = () => _.get(window.ExternalConfig, 'profile.perks');\nconst FAVORITES_STORAGE_NAME = 'FOX_FAVORITES';\n\nconst DEEP_LINK_FAVORITE = 'favorite=true';\nconst DEEP_LINK_FAVORITE_NOT_AUTHED = 'DEEP_LINK_FAVORITED';\n\nfunction gridItemProcessor(theme, favoritesManager, options) {\n const { item } = options;\n if (!item) return null;\n\n const {\n id: showID,\n network,\n images: { HD: defaultImage, still: fallbackImageObject },\n screenUrl: url,\n name: title,\n recommendationId,\n favoritableItems,\n } = item;\n let image = defaultImage;\n if (!defaultImage && fallbackImageObject) {\n const { HD: fallbackImage } = fallbackImageObject;\n image = fallbackImage;\n }\n const pageType = _.get(tealiumEventPageTypes, PageNames.SETTINGS);\n const favoriteData = {\n showID,\n source: SegmentSources.MY_ACCOUNT,\n location: pageType,\n networkId: network,\n seriesName: title,\n recommendationId,\n favoritableItems,\n };\n\n const overlay = (\n <Favorite\n manager={favoritesManager}\n data={favoriteData}\n theme={theme}\n type={FAVORITE_TYPE_ICON}\n iconType={FAVORITE_PLUS_CIRCLE}\n />\n );\n\n const displayBrand = getDisplayBrand(item);\n const networkIcon = getNetworkLogoUrl(displayBrand, 25);\n return {\n id: showID,\n title,\n titleLink: helperGetRelativeUrl({ url }),\n networkIcon,\n image,\n overlay,\n };\n}\n\nfunction listItemProcessor(theme, favoritesManager, options) {\n const { item } = options;\n if (!item) return null;\n const {\n id: showID,\n screenUrl: url,\n name: title,\n network,\n recommendationId,\n favoritableItems,\n } = item;\n const pageType = _.get(tealiumEventPageTypes, PageNames.SETTINGS);\n const favoriteData = {\n showID,\n source: SegmentSources.MY_ACCOUNT,\n location: pageType,\n networkId: network,\n seriesName: title,\n recommendationId,\n favoritableItems,\n };\n const icon = (\n <Favorite\n manager={favoritesManager}\n data={favoriteData}\n theme={theme}\n type={FAVORITE_TYPE_ICON}\n iconType={FAVORITE_PLUS_CIRCLE}\n />\n );\n\n return {\n id: showID,\n title,\n icon,\n titleLink: helperGetRelativeUrl({ url }),\n };\n}\n\nexport function renderFavorites({ breakpoint, favoritesManager, onTitleClick, onTileClick }) {\n const { renderList } = BREAKPOINTS[breakpoint];\n if (!FavoritesEnabled) return null;\n return renderGrid({\n renderImage: image =>\n renderImage({\n breakpoint,\n imageType: COLLECTION_THUMBNAIL_IMAGE,\n ...image,\n }),\n key: 'favorite',\n items: favoritesManager.favoritesDetails,\n listProcessor: listItemProcessor.bind(this, favoriteTheme, favoritesManager),\n gridProcessor: gridItemProcessor.bind(this, favoriteTheme, favoritesManager),\n gridType: 'grid-3-1',\n style,\n tileDetailToggle: false,\n tileTheme,\n renderList,\n listTheme: listStyle,\n tileGridTheme,\n onTitleClick,\n onLinkClick: null,\n onTileClick,\n });\n}\n\nconst getFavoriteRequestOptions = ({ account, favoritableItems, profileFavorites }) => {\n const { accessToken, deviceId } = account;\n const headers = helperGetApiHeaders({ pathKey: 'showsQuery', accessToken, deviceId });\n const route = helperGetApiAccountRoute('favorites');\n const options = { route, headers, favoritableItems, profileFavorites };\n return options;\n};\n\nconst setFavoritesInStorage = favorites => {\n const stringifiedFavorites = JSON.stringify(favorites);\n setLocalStorageItem({ key: FAVORITES_STORAGE_NAME, value: stringifiedFavorites });\n};\n\nexport const getFavoritesFromStorage = () => {\n const favorites = getLocalStorageItem({ key: FAVORITES_STORAGE_NAME });\n return JSON.parse(favorites);\n};\n\nconst addFavoriteToStorage = favorite => {\n const { favoritableItems } = favorite;\n const favorites = getFavoritesFromStorage();\n\n favoritableItems.forEach(favoriteItem => {\n const { id } = favoriteItem;\n const filter = favorites?.filter(item => item.favoriteID === id);\n if (!filter?.length) favorites?.push({ favoriteID: id });\n });\n\n setFavoritesInStorage(favorites);\n return favorites;\n};\n\nconst removeFavoriteFromStorage = favorite => {\n const { favoritableItems } = favorite;\n let filtered = getFavoritesFromStorage() || [];\n\n favoritableItems.forEach(favoriteItem => {\n filtered = filtered.filter(item => item.favoriteID !== favoriteItem.id);\n });\n\n setFavoritesInStorage(filtered);\n return filtered;\n};\n\nconst mergeV1Favorites = (profileId, v1, v2) => {\n const v2FavoriteIds = v2.map(fav => fav.favoriteID);\n\n v1.map(favorite => {\n const alreadyInV2 = v2FavoriteIds.indexOf(favorite.showID) !== -1;\n if (alreadyInV2) return null;\n const v2favorite = {\n '@type': 'FavoritesV1',\n favoriteID: favorite.showID,\n id: `${profileId}-${favorite.showID}`,\n };\n v2.push(v2favorite);\n return null;\n });\n return v2;\n};\n\nexport const getFavoritesForAccount = account =>\n new Promise(async resolve => {\n const options = getFavoriteRequestOptions({ account });\n const { profileId, accountType } = account;\n const v2Favorites = await getFavorites(options);\n const v1Favorites = FetchV1Favorites ? await getV1Favorites({ ...options, account }) : [];\n const result = mergeV1Favorites(profileId, v1Favorites, v2Favorites);\n setFavoritesInStorage(result);\n if (accountType === ANONYMOUS_ACCOUNT_TYPE)\n setAnonymousFavoritesInStorage({ anonymousFavorites: result });\n resolve(result);\n });\n\nexport const getFavoritesDetailsForAccount = (account, favorites) => {\n const favoritesShowIds = favorites.map(item => item.favoriteID);\n const route = helperGetFavoriteDetailsApiRoute(favoritesShowIds);\n const options = { ...getFavoriteRequestOptions({ account }), route };\n\n return new Promise((resolve, reject) => {\n if (!favorites || !favorites.length || !route) {\n resolve([]);\n return;\n }\n getFavorites(options)\n .then(result => {\n const items = _.get(result, 'member', []);\n resolve(items);\n })\n .catch(reject);\n });\n};\n\nexport const createFavorite = (account, favorite, profileFavorites) => {\n const { favoritableItems } = favorite;\n if (!favoritableItems) return null;\n const { profileId, accountType } = account;\n const { foxProfileState } = userAttributeEvents();\n const { [TrackEvents.ON_FAVORITE]: onFavoriteAnalytics } = getAccountAnalyticsEvents({\n foxProfileState,\n profileId,\n });\n\n return new Promise((resolve, reject) => {\n const { location, networkId, showID, seriesName, recommendationId } = favorite;\n const isPersonality = favorite.favoriteType === FAVORITES_TYPE_PERSONALITY;\n const options = getFavoriteRequestOptions({ account, favoritableItems, profileFavorites });\n if (accountType === ANONYMOUS_ACCOUNT_TYPE) {\n const anonymousFavorites = getAnonymousFavoritesFromStorage() || [];\n favoritableItems.forEach(favoriteItem => {\n const filter = anonymousFavorites.filter(item => item.showID === favoriteItem.favoriteID);\n if (!filter.length) anonymousFavorites.push(favoriteItem);\n });\n setAnonymousFavoritesInStorage({ anonymousFavorites });\n }\n\n const setFavoritesAction = isBrowserIE() ? setFavoritesIE : setFavorites;\n setFavoritesAction(options, isPersonality)\n .then(result => {\n addFavoriteToStorage(favorite);\n onFavoriteAnalytics({\n location,\n networkId,\n seriesId: showID,\n seriesName,\n status: 'Yes',\n recommendationId,\n });\n resolve(result);\n })\n .catch(reject);\n });\n};\n\nexport const deleteFavoritesForAccount = (account, favorite, profileFavorites) => {\n const { profileId, accountType } = account;\n const { favoritableItems } = favorite;\n const { foxProfileState } = userAttributeEvents();\n const { [TrackEvents.ON_UNFAVORITE]: onUnfavoriteAnalytics } = getAccountAnalyticsEvents({\n foxProfileState,\n profileId,\n });\n const options = getFavoriteRequestOptions({ account, favoritableItems, profileFavorites });\n return new Promise((resolve, reject) => {\n const { location, networkId, showID, seriesName, recommendationId } = favorite;\n\n if (accountType === ANONYMOUS_ACCOUNT_TYPE) {\n const anonymousFavorites = getAnonymousFavoritesFromStorage() || [];\n let filtered = anonymousFavorites;\n favoritableItems.forEach(favoriteItem => {\n filtered = filtered.filter(item => item.favoriteID !== favoriteItem.id);\n });\n setAnonymousFavoritesInStorage({ anonymousFavorites: filtered });\n }\n\n const deleteFavoritesAction = isBrowserIE() ? deleteFavoritesIE : deleteFavorites;\n deleteFavoritesAction(options)\n .then(result => {\n removeFavoriteFromStorage(favorite);\n onUnfavoriteAnalytics({\n location,\n networkId,\n seriesId: showID,\n seriesName,\n status: 'No',\n recommendationId,\n });\n resolve(result);\n })\n .catch(reject);\n });\n};\n\nexport const upgradeJWT = (accessToken, deviceId) => {\n const authEndpointConfig = _.get(window.ExternalConfig, 'api.auth');\n const upgradeJWTOptions = {\n authEndpointConfig: { ...authEndpointConfig, apiKey: helperGetApiKey() },\n accessToken,\n deviceId,\n };\n return helperUpgradeJWT(upgradeJWTOptions);\n};\n\nexport function deepLinkFavoriteSeries({ props, setDeepLinkFavorited }) {\n const { account } = props;\n const querystring = window.location.search.substring(1);\n const hasFavorite = querystring.includes(DEEP_LINK_FAVORITE);\n const favoriteDeepLinkEnabled = FavoritesEnabled && DeepLinkFavoriting;\n if (hasFavorite && favoriteDeepLinkEnabled) {\n if (!account) {\n // If no account, redirect to account login screen with query string\n // Store favorite info in local storage\n const {\n params: { showId: showID },\n seriesData,\n recommendationId,\n } = props;\n const network = _.get(seriesData, 'network');\n const seriesName = _.get(seriesData, 'name');\n const favoriteData = {\n showID,\n source: SegmentSources.DETAIL,\n location: _.get(tealiumEventPageTypes, PageNames.FAVORITES_DETAIL),\n networkId: network,\n seriesName,\n recommendationId,\n seriesId: showID,\n };\n setLocalStorageItem({\n key: DEEP_LINK_FAVORITE_NOT_AUTHED,\n value: JSON.stringify(favoriteData),\n });\n // Redirect to account page\n window.location = `${helperGetAccountUrl()}`;\n return null;\n }\n // If account, add show to users favorites\n return setDeepLinkFavorited(true);\n }\n return null;\n}\n\nexport function checkDeepLinkFavorite() {\n const account = getAccountCookie();\n const profileId = _.get(account, 'profileId');\n const favoriteDeepLinkEnabled = FavoritesEnabled && DeepLinkFavoriting;\n if (favoriteDeepLinkEnabled) {\n const deepLinkFavoriteData = getLocalStorageItem({ key: DEEP_LINK_FAVORITE_NOT_AUTHED });\n if (deepLinkFavoriteData) {\n const favorite = JSON.parse(deepLinkFavoriteData);\n const options = getFavoriteRequestOptions({ account, favorite });\n const { foxProfileState } = userAttributeEvents();\n const { [TrackEvents.ON_FAVORITE]: onFavoriteAnalytics } = getAccountAnalyticsEvents({\n foxProfileState,\n profileId,\n });\n return new Promise((resolve, reject) => {\n const setFavoriteAction = isBrowserIE() ? setFavoritesIE : setFavorites;\n setFavoriteAction(options)\n .then(result => {\n addFavoriteToStorage(favorite);\n onFavoriteAnalytics(favorite);\n removeLocalStorageItem({ key: DEEP_LINK_FAVORITE_NOT_AUTHED });\n resolve(result);\n })\n .catch(reject);\n });\n }\n }\n return null;\n}\n\nexport const accountPathMappings = id => {\n const mappings = {\n eProfile: 'edit-profile',\n changePassword: 'change-password',\n manageFavorites: 'manage-favorites',\n parentalControls: 'parental-controls',\n signOut: 'sign-out',\n };\n return mappings[id] || id;\n};\n\nexport function getCommonTealiumProps() {\n const path = window?.location?.pathname;\n let pageName = window?.utag_data?.page_name;\n let pageType = window?.utag_data?.page_type;\n if (path.includes('/watch')) {\n pageName = 'delta:web:player';\n pageType = 'player';\n }\n if (path.includes('/live-news')) {\n pageName = 'delta:web:live tv:landing';\n pageType = 'live tv';\n }\n return {\n pageName,\n pageType,\n };\n}\n","import _ from 'lodash';\nimport { getCookie } from 'helpers/Storage';\nimport { VCHIP_RATINGS } from 'helpers/auth.clientless';\n\nexport const resetState = {\n mvpdBuythroughData: null,\n renderContentBlackout: null,\n renderSignIn: null,\n renderMVPDExpireSignIn: null,\n renderMvpdDirectSignInRedirect: null,\n renderMVPDRetry: null,\n renderMVPDStart: null,\n renderMVPDSearch: null,\n renderMVPDIncomplete: null,\n renderNotEntitled: null,\n renderSuccess: null,\n renderLoading: null,\n renderFailure: null,\n renderPlaybackError: null,\n renderPreviewPassWelcome: null,\n renderUpsellError: null,\n isAuthenticated: null,\n preauthorizedResources: null,\n successResources: null,\n playbackErrorText: null,\n iFrameHeight: 400,\n signInTrigger: null,\n previewPassSignIn: false,\n renderProfilePcsError: false,\n renderResumeWithProfile: null,\n renderResumeWithoutProfile: null,\n successTimeout: null,\n};\n\nexport const defaultState = {\n ...resetState,\n renderExpiredPreviewPass: null,\n resumeWithProfileRendered: false,\n renderNoSportsOnMobileError: null,\n baseChannel: null,\n renderUnlockUpsell: false,\n};\n\nexport const OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT =\n 'OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT';\nexport const OVERLAY_AUTH_MVPD_START = 'OVERLAY_AUTH_MVPD_START';\nexport const OVERLAY_AUTH_MVPD_SEARCH = 'OVERLAY_AUTH_MVPD_SEARCH';\nexport const OVERLAY_AUTH_SUCCESS = 'OVERLAY_AUTH_MVPD_SUCCESS';\nexport const OVERLAY_AUTH_LOADING = 'OVERLAY_AUTH_MVPD_LOADING';\nexport const OVERLAY_AUTH_FAILURE = 'OVERLAY_AUTH_FAILURE';\nexport const OVERLAY_AUTH_UPSELL_ERROR = 'OVERLAY_AUTH_UPSELL_ERROR';\nexport const OVERLAY_AUTH_UPSELL_CONFIRM = 'OVERLAY_AUTH_UPSELL_CONFIRM';\n\nexport function isRatingAuthorized(contentRating, userRating) {\n if (!userRating || !contentRating) return true;\n const contentIndex = VCHIP_RATINGS.indexOf(contentRating.toLowerCase());\n const userIndex =\n userRating && _.isString(userRating) ? VCHIP_RATINGS.indexOf(userRating.toLowerCase()) : null;\n const invalidContentRating = contentIndex === -1;\n const invalidUserIndex = userIndex === -1 || userIndex === null;\n const invalidComparison = invalidUserIndex || invalidContentRating;\n if (invalidComparison) return true;\n return contentIndex <= userIndex;\n}\n\nexport function isContentAuthorized(authorizedNetworkNames, contentNetworkNames, networks) {\n if (!authorizedNetworkNames || !authorizedNetworkNames.length) return false;\n\n const updatedContentNetworkNames = contentNetworkNames.map(networkName => {\n const networkNameOverride = _.get(networks, networkName);\n if (networkNameOverride) return networkNameOverride.resourceId;\n return networkName;\n });\n const isAuthorized = !!_.intersection(authorizedNetworkNames, updatedContentNetworkNames).length;\n\n return isAuthorized;\n}\n\nexport function mvpdUser(mvpdCookieName) {\n return !!getCookie({ name: mvpdCookieName });\n}\n\nexport function getAuthorizedResources(authorizedNetworks, additionalNetworks) {\n if (!authorizedNetworks) return [];\n if (!additionalNetworks || _.isEmpty(additionalNetworks) || authorizedNetworks.length === 0) {\n return authorizedNetworks;\n }\n const newAuthorizedNetworks = [];\n authorizedNetworks.forEach(network => {\n if (_.has(additionalNetworks, network)) {\n additionalNetworks[network].forEach(netw => {\n newAuthorizedNetworks.push(netw);\n });\n }\n });\n return _.union(newAuthorizedNetworks, authorizedNetworks);\n}\n","import axios from 'axios';\nimport _ from 'lodash';\nimport { createProfile } from 'helpers/ContentHelper';\nimport { axiosErrorHandler, helperGetApiHeaders, helperGetApiRoute } from 'helpers/ApiHelper';\n\nexport const SET_GOOGLE_ONE_TAP = 'SET_GOOGLE_ONE_TAP';\nexport const SET_GOOGLE_EMAIL_AND_TOKEN = 'SET_GOOGLE_EMAIL_AND_TOKEN';\nexport const SET_IS_GOOGLE_SIGN_IN = 'SET_IS_GOOGLE_SIGN_IN';\nexport const SET_IS_GOOGLE_ONE_TAP_DISPLAYED = 'SET_IS_GOOGLE_ONE_TAP_DISPLAYED';\nexport const SET_IS_GOOGLE_SIGNED_IN_BROWSER = 'SET_IS_GOOGLE_SIGNED_IN_BROWSER';\nexport const SET_MVPD_PROVIDERS = 'SET_MVPD_PROVIDERS';\nexport const SET_NEXT_MVPD_PROVIDERS_PAGE = 'SET_NEXT_MVPD_PROVIDERS_PAGE';\nexport const SET_PREAUTHORIZED_RESOURCES = 'SET_PREAUTHORIZED_RESOURCES';\nexport const SET_RECOMMENDATION_ID = 'SET_RECOMMENDATION_ID';\nexport const SET_USER_AUTH_DATA = 'SET_USER_AUTH_DATA';\nexport const SET_USER_PROFILE_CONFIG = 'SET_USER_PROFILE_CONFIG';\n\nconst setNextMVPDProvidersPage = request => ({\n type: SET_NEXT_MVPD_PROVIDERS_PAGE,\n payload: request,\n});\n\nconst fetchNextMVPDProvidersPageAction = (url, deviceId) => dispatch => {\n const pageType = 'mvpds';\n axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, deviceId }))\n .then(results => {\n const nextPage = _.get(results, 'data.view.next');\n if (nextPage) dispatch(fetchNextMVPDProvidersPageAction(nextPage, deviceId));\n dispatch(setNextMVPDProvidersPage(results));\n })\n .catch(axiosErrorHandler);\n};\n\nconst setMVPDProviders = request => ({\n type: SET_MVPD_PROVIDERS,\n payload: request,\n});\n\nexport const fetchMVPDProvidersAction = deviceId => dispatch => {\n const pageType = 'mvpds';\n axios\n .get(helperGetApiRoute(pageType), helperGetApiHeaders({ pathKey: pageType, deviceId }))\n .then(results => {\n const nextPage = _.get(results, 'data.view.next');\n if (nextPage) dispatch(fetchNextMVPDProvidersPageAction(nextPage, deviceId));\n dispatch(setMVPDProviders(results));\n })\n .catch(axiosErrorHandler);\n};\n\nexport const setPreauthorizedResourcesAction = (resources = []) => ({\n type: SET_PREAUTHORIZED_RESOURCES,\n payload: resources,\n});\n\nexport const setRecommendationIdAction = (recommendationId = null) => ({\n type: SET_RECOMMENDATION_ID,\n payload: recommendationId,\n});\n\nexport const setUserAuthData = data => ({\n type: SET_USER_AUTH_DATA,\n payload: data,\n});\n\nexport function setUserProfileConfig(data) {\n return async dispatch => {\n const { accessToken, profileId } = data;\n const { profile, profileConfig } = await createProfile(accessToken, profileId);\n dispatch({\n type: SET_USER_PROFILE_CONFIG,\n payload: { profile, profileConfig },\n });\n };\n}\n\nexport const setIsGoogleSignIn = val => ({\n type: SET_IS_GOOGLE_SIGN_IN,\n payload: val,\n});\n\nexport const setIsGoogleOneTapDisplayed = val => ({\n type: SET_IS_GOOGLE_ONE_TAP_DISPLAYED,\n payload: val,\n});\n\nexport const setGoogleOneTap = ({ googleToken, googleOneTapEmail, isGoogleOneTap }) => ({\n type: SET_GOOGLE_ONE_TAP,\n googleToken,\n googleOneTapEmail,\n isGoogleOneTap,\n});\n\nexport const setNewGoogleEmailAndToken = ({ googleEmail, googleToken }) => ({\n type: SET_GOOGLE_EMAIL_AND_TOKEN,\n googleEmail,\n googleToken,\n});\n\nexport const setIsGoogleSignedInBrowser = ({ googleEmail, googleToken, isSignedIn }) => ({\n type: SET_IS_GOOGLE_SIGNED_IN_BROWSER,\n googleEmail,\n googleToken,\n isSignedIn,\n});\n\nexport const setEmailSubmissionSFMC = ({ url, email, accessToken, deviceId, cb }) => {\n const headers = helperGetApiHeaders({ accessToken, deviceId });\n const apiUrl = window?.ExternalConfig?.api?.auth?.baseUrl;\n axios\n .post(\n `${apiUrl}prospect`,\n {\n email,\n url,\n prospect: 'foxnow',\n platform: 'web',\n },\n headers,\n )\n .then(result => cb(result))\n .catch(axiosErrorHandler);\n};\n","import axios from 'axios';\nimport _ from 'lodash';\nimport {\n checkAuthentication,\n getAccessToken,\n getTokenExpiration,\n isTimestampExpired,\n isTokenExpired,\n} from 'helpers/auth.clientless';\nimport {\n getAccountCookie,\n getAnonymousAccountCookie,\n removeAccountCookie,\n setAnonymousAccountCookie,\n} from 'helpers/Account';\nimport {\n getCookie,\n getLocalStorageItem,\n removeLocalStorageItem,\n removeCookie,\n} from 'helpers/Storage';\nimport { upgradeJWT } from 'helpers/AccountHelper';\nimport {\n ANONYMOUS_ACCOUNT_TYPE,\n getCurrentAccount,\n handleAnonymousLogin,\n initAnonymousId,\n} from 'helpers/AnonymousHelper';\nimport { helperGetApiKey, helperGetApiHeaders, helperGetApiAccountRoute } from 'helpers/ApiHelper';\nimport {\n BUYTHROUGH_DATA_COOKIE_NAME as buythroughDataCookieName,\n MVPD_COOKIE_NAME as mvpdCookieName,\n MVPD_LOGOUT_COOKIE_NAME as mvpdLogoutCookieName,\n SUCCESS_COOKIE_NAME as mvpdSuccessCookieName,\n} from 'helpers/AuthHelper';\nimport {\n getDeviceIdOverride,\n getRequestorId,\n getAuthEndpointConfig,\n getDeviceType,\n clientlessTokenExpireRefresh,\n tveEnabled,\n} from 'helpers/ConfigHelper';\nimport { helperGoToRelativeUrl, redirectToExternalUrl } from 'helpers/RouteHelper';\nimport {\n clearLongTimeout,\n getMVPDCookie,\n getMVPDFromCookie,\n getMVPDLogoutCookie,\n setLongTimeout,\n isMvpdSubscription,\n urlIsExternal,\n} from 'helpers/ContentHelper';\nimport {\n AUTH_EXPIRED,\n userAttributeEvents as optimizelyUserAttributeEvents,\n} from 'helpers/OptimizelyHelper';\nimport { isPreviewPass } from 'helpers/PlayerHelper';\nimport { getSegmentDeviceIdCookie } from '@foxcorp/delta-web-analytics';\nimport { setUserAuthData } from 'index/AppActions';\n\nconst MILLISECONDS = 1000;\nconst TIME_BEFORE_TOKEN_EXPIRE_MS = 10 * 60 * MILLISECONDS;\nconst getDeviceIdFromCookies = (cookies = []) => {\n const deviceIdCookie = cookies.find(cookie => _.get(cookie, 'deviceId'));\n return _.get(deviceIdCookie, 'deviceId', initAnonymousId());\n};\n\nconst login = function login(deviceId, accessToken = null) {\n const headers = helperGetApiHeaders({ accessToken, deviceId });\n const route = helperGetApiAccountRoute('login');\n const body = { deviceId };\n if (!route || !headers || !body || !deviceId) {\n return Promise.reject(new Error('Login - requires route, headers, body, or device id'));\n }\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axios.post(route, body, headers);\n const data = _.get(response, 'data');\n const status = _.get(response, 'status');\n const dataStatus = _.get(data, 'status', status);\n if (!data || dataStatus !== 200) {\n return reject(new Error('Login - No Data or response status is not 200'));\n }\n return resolve(data);\n } catch (e) {\n return reject(e);\n }\n });\n};\n\nexport const getDefaultClientlessOptions = () => {\n const authEndpointConfig = getAuthEndpointConfig();\n const apiKey = helperGetApiKey();\n const requestor = getRequestorId();\n const deviceType = getDeviceType();\n\n const options = {\n authEndpointConfig: { ...authEndpointConfig, apiKey },\n deviceType,\n requestor,\n mvpdCookieName,\n };\n\n return options;\n};\n\nconst checkAuth = async ({ accessToken, deviceId, setMVPDToAppState }) => {\n try {\n const authEndpointConfig = _.get(window.ExternalConfig, 'api.auth');\n const apiKey = helperGetApiKey();\n const checkAuthOptions = {\n authEndpointConfig: { ...authEndpointConfig, apiKey },\n accessToken,\n deviceId,\n mvpdCookieName,\n setMVPDToAppState,\n };\n return await checkAuthentication(checkAuthOptions);\n } catch (e) {\n console.error(e);\n return null;\n }\n};\n\nexport const fetchAnonymousDataAfterLogout = async ({\n anonymousLogin,\n deviceId,\n setMVPDToAppState,\n}) => {\n const anonymousLoginResult = await anonymousLogin({ deviceId });\n const newAnonymousAccount = _.get(anonymousLoginResult, 'data');\n const anonymousAccountAccessToken = getAccessToken(newAnonymousAccount);\n if (!tveEnabled()) return anonymousAccountAccessToken;\n\n const newMvpdData = await checkAuth({\n accessToken: anonymousAccountAccessToken,\n deviceId,\n setMVPDToAppState,\n });\n const newAuthData = newMvpdData || newAnonymousAccount;\n const newAccessToken = getAccessToken(newAuthData);\n return newAccessToken;\n};\n\nexport async function handleRefreshToken(currentAuthData) {\n const { refreshTokenTimeout } = this.state || {};\n const { deviceId, setUserAuthData } = this.props || {};\n const tokenExpiration = getTokenExpiration(currentAuthData);\n if (!tokenExpiration) return;\n\n if (refreshTokenTimeout) clearLongTimeout(refreshTokenTimeout);\n const currentTime = new Date().getTime();\n const refreshOverride = clientlessTokenExpireRefresh();\n const defaultRefresh =\n (tokenExpiration - currentTime - TIME_BEFORE_TOKEN_EXPIRE_MS) * MILLISECONDS;\n const refreshJWTDelay = refreshOverride > MILLISECONDS ? refreshOverride : defaultRefresh;\n\n const timeoutCallback = async () => {\n let accountResponse;\n try {\n accountResponse = await login(deviceId);\n setAnonymousAccountCookie(accountResponse);\n removeAccountCookie();\n setUserAuthData({\n account: null,\n anonymousAccount: accountResponse,\n });\n } catch (e) {\n console.error('refresh jwt anon login failed');\n }\n\n const shouldCheckAuth = accountResponse && tveEnabled();\n if (!shouldCheckAuth) return;\n const accountAccessToken = getAccessToken(accountResponse);\n\n try {\n const options = {\n ...getDefaultClientlessOptions(),\n accessToken: accountAccessToken,\n deviceId,\n setMVPDToAppState: this.setMVPDToAppState,\n };\n await checkAuthentication(options);\n // check auth sets the mvpd cookie and fires setMVPDToAppState for us\n } catch (e) {\n console.error('refresh jwt mvpd authentication was unsuccessful');\n }\n };\n\n const newRefreshTokenTimeout = setLongTimeout(timeoutCallback, refreshJWTDelay);\n this.setState({ refreshTokenTimeout: newRefreshTokenTimeout });\n}\n\nexport const getStoredAuthenticatedMVPD = () => {\n const mvpd = getMVPDFromCookie();\n const isAuthenticated = mvpd && !isPreviewPass(mvpd);\n return isAuthenticated;\n};\n\nconst clearExpiredTokens = async ({\n anonymousLogin,\n deviceId,\n initialAccount,\n initialAnonymousAccount,\n initialMvpd,\n initialMvpdLogoutData,\n}) => {\n let account = initialAccount;\n let anonymousAccount = initialAnonymousAccount;\n let mvpd = initialMvpd;\n let mvpdLogoutData = initialMvpdLogoutData;\n\n if (initialAccount && isTokenExpired(initialAccount)) {\n removeAccountCookie();\n account = null;\n anonymousAccount = await anonymousLogin({ deviceId });\n }\n\n if (!initialAccount && initialAnonymousAccount && isTokenExpired(initialAnonymousAccount)) {\n anonymousAccount = await anonymousLogin({ deviceId });\n }\n\n if (initialMvpd && isTokenExpired(initialMvpd)) {\n removeCookie({ key: mvpdCookieName, options: { path: '/' } });\n removeCookie({ key: mvpdSuccessCookieName, options: { path: '/' } });\n optimizelyUserAttributeEvents().authState(AUTH_EXPIRED);\n mvpd = null;\n }\n\n if (initialMvpdLogoutData && isTokenExpired(initialMvpdLogoutData)) {\n removeCookie({ key: mvpdLogoutCookieName, options: { path: '/' } });\n mvpdLogoutData = null;\n }\n\n return {\n account,\n anonymousAccount,\n mvpd,\n mvpdLogoutData,\n };\n};\n\nconst getStoredAuthData = (props = {}) => {\n const initialAnonymousAccount = getAnonymousAccountCookie();\n const initialAccount = getAccountCookie();\n const initialMvpd = getMVPDCookie();\n const initialMvpdLogoutData = getMVPDLogoutCookie();\n const { currentDeviceId } = props;\n let deviceId = currentDeviceId;\n let segmentDeviceId;\n if (!currentDeviceId) {\n const deviceIdCookie = getSegmentDeviceIdCookie();\n const cookies = [\n deviceIdCookie,\n initialMvpd,\n initialMvpdLogoutData,\n initialAccount,\n initialAnonymousAccount,\n ];\n segmentDeviceId = getDeviceIdFromCookies(cookies);\n deviceId = getDeviceIdOverride() || segmentDeviceId;\n }\n\n return {\n deviceId,\n initialAccount,\n initialAnonymousAccount,\n initialMvpd,\n initialMvpdLogoutData,\n segmentDeviceId,\n };\n};\n\nexport const getLatestAuthData = async ({ anonymousLogin, currentDeviceId }) => {\n const {\n deviceId,\n initialAnonymousAccount,\n initialAccount,\n initialMvpd,\n initialMvpdLogoutData,\n segmentDeviceId,\n } = getStoredAuthData({ currentDeviceId });\n\n const newAuthData = await clearExpiredTokens({\n anonymousLogin,\n deviceId,\n initialAccount,\n initialAnonymousAccount,\n initialMvpd,\n initialMvpdLogoutData,\n });\n const {\n account: storedAccount,\n anonymousAccount: storedAnonymousAccount,\n mvpd: storedMvpd,\n mvpdLogoutData: storedMvpdLogoutData,\n } = newAuthData;\n\n const useAnonymousAccount = !storedAccount && storedAnonymousAccount;\n const prioritizedAccountData = useAnonymousAccount ? storedAnonymousAccount : storedAccount;\n const mvpdTokenExpiration = getTokenExpiration(storedMvpd);\n const accountExpiration = getTokenExpiration(prioritizedAccountData);\n const mvpdLogoutExpiration = getTokenExpiration(storedMvpdLogoutData);\n\n const mvpdExpired = isTimestampExpired(mvpdTokenExpiration);\n const mvpdLogoutExpired = isTimestampExpired(mvpdLogoutExpiration);\n const accountExpired = isTimestampExpired(accountExpiration);\n\n let latestStoredData = null;\n\n if (mvpdTokenExpiration || accountExpiration || mvpdLogoutExpiration) {\n const mvpdExpirationLongerThanAccount = mvpdTokenExpiration >= accountExpiration;\n const mvpdExpirationLongerThanLogout = mvpdTokenExpiration > mvpdLogoutExpiration;\n const accountExpirationLongerThanLogout = accountExpiration > mvpdLogoutExpiration;\n\n if (mvpdExpirationLongerThanAccount && mvpdExpirationLongerThanLogout && !mvpdExpired) {\n latestStoredData = storedMvpd;\n } else if (\n !mvpdExpirationLongerThanAccount &&\n accountExpirationLongerThanLogout &&\n !accountExpired\n ) {\n latestStoredData = prioritizedAccountData;\n } else if (\n !accountExpirationLongerThanLogout &&\n !mvpdExpirationLongerThanLogout &&\n !mvpdLogoutExpired\n ) {\n latestStoredData = storedMvpdLogoutData;\n }\n }\n\n return {\n storedAccount,\n storedAnonymousAccount,\n deviceId,\n latestStoredData,\n segmentDeviceId,\n storedMvpd,\n storedMvpdLogoutData,\n };\n};\n\nexport const getUserData = async (store, profile) => {\n if (isMvpdSubscription()) {\n const { url: signOutUrl } =\n _.get(window.ExternalConfig, 'profile.dropdownMenu', []).find(\n option => option.id === 'signOut',\n ) || {};\n const currentTime = Date.now();\n const lastClosedTime = getLocalStorageItem({ key: 'app_closed' }) || currentTime;\n const amountOfSecondsSinceClosed = (currentTime - lastClosedTime) / 1000;\n removeLocalStorageItem({ key: 'app_closed' });\n if (amountOfSecondsSinceClosed > 15) {\n if (urlIsExternal(signOutUrl)) {\n redirectToExternalUrl(signOutUrl);\n } else {\n helperGoToRelativeUrl(signOutUrl);\n }\n }\n }\n\n const saveData = data => store.dispatch(setUserAuthData(data));\n const anonymousLogin = ({ deviceId }) =>\n handleAnonymousLogin({\n authorizationToken: null,\n deviceId,\n setUserAuthData: saveData,\n profile,\n });\n\n const {\n storedAccount,\n storedAnonymousAccount,\n deviceId,\n latestStoredData,\n segmentDeviceId,\n storedMvpd,\n storedMvpdLogoutData,\n } = await getLatestAuthData({ anonymousLogin });\n\n const buythroughScenario = _.get(getCookie({ name: buythroughDataCookieName }), 'scenario');\n const anonymousId = deviceId;\n let account = storedAccount;\n let anonymousAccount = storedAnonymousAccount;\n const mvpd = storedMvpd;\n const mvpdLogoutData = storedMvpdLogoutData;\n let currentAccount = await getCurrentAccount({\n account,\n anonymousAccount,\n anonymousLogin,\n deviceId,\n });\n const latestAuthData = latestStoredData || currentAccount || {};\n let authorizationToken = getAccessToken(latestAuthData);\n const isAuthenticated = getStoredAuthenticatedMVPD();\n\n if (authorizationToken && !_.isEmpty(currentAccount)) {\n try {\n const upgradedAccountAccessToken = await upgradeJWT(authorizationToken, deviceId);\n if (upgradedAccountAccessToken) {\n authorizationToken = upgradedAccountAccessToken;\n currentAccount = {\n ...currentAccount,\n accessToken: upgradedAccountAccessToken,\n };\n }\n const accountType = _.get(currentAccount, 'accountType');\n if (accountType === ANONYMOUS_ACCOUNT_TYPE) {\n anonymousAccount = currentAccount;\n account = null;\n } else {\n anonymousAccount = null;\n account = currentAccount;\n }\n } catch (e) {\n console.log('account token upgrade failed', e);\n }\n }\n\n saveData({\n account,\n anonymousAccount,\n anonymousId,\n authorizationToken,\n buythroughScenario,\n deviceId,\n isAuthenticated,\n mvpd,\n mvpdLogoutData,\n segmentDeviceId,\n });\n\n return authorizationToken;\n};\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { helperGetStaticContentUrl } from 'helpers/RouteHelper';\nimport Style from './Img.module.scss';\n\nconst Loader = props => {\n const {\n buttonLoader = false,\n center = false,\n className = null,\n collections = false,\n setLoading = () => null,\n } = props;\n\n const classes = !buttonLoader\n ? classNames([className, center ? Style.centerLoader : Style.loadingContainer])\n : null;\n\n useEffect(() => {\n if (setLoading) setLoading(true);\n return () => {\n if (setLoading) setLoading(false);\n };\n }, [setLoading]);\n\n return (\n <div className={collections ? '' : classes}>\n <img\n className={classNames(Style.imgContainer, buttonLoader && Style.buttonLoader)}\n src={helperGetStaticContentUrl('images', 'loader.png')}\n alt=\"Loading...\"\n />\n </div>\n );\n};\n\n/* eslint react/require-default-props: 0 */\nLoader.propTypes = {\n buttonLoader: PropTypes.bool,\n center: PropTypes.bool,\n className: PropTypes.string,\n collections: PropTypes.bool,\n setLoading: PropTypes.func,\n};\n\nexport default Loader;\n","/* global NetworkConfig, DefaultLogoSize */\nimport PropTypes from 'prop-types';\nimport { getNetworkLogoUrl } from 'helpers/ContentHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { NETWORK_LOGO_IMAGE, renderImage } from 'helpers/ImageHelper';\n\nconst DEFAULT_IMAGE_SIZE = DefaultLogoSize || 50;\n\nconst BREAKPOINTS = breakpoint => {\n switch (breakpoint) {\n case SITE_PLATFORM_WEB_LARGE:\n case SITE_PLATFORM_WEB:\n return 'desktop';\n case SITE_PLATFORM_TABLET:\n case SITE_PLATFORM_MOBILE:\n return 'mobile';\n default:\n return 'desktop';\n }\n};\n\nconst NetworkImage = (props = {}) => {\n const getTitle = () => {\n const { network, title } = props;\n const { branding, name } = NetworkConfig;\n if (title) return title;\n if (network === branding) return name;\n return network;\n };\n\n const getNetworkLogoUrlFromConfig = () => {\n const { breakpoint } = props;\n const { appLogo } = window.ExternalConfig;\n if (!appLogo) return null;\n if (typeof appLogo === 'string') return appLogo;\n\n const appLogoPath = BREAKPOINTS(breakpoint);\n const logo = appLogo[appLogoPath] || null;\n return logo;\n };\n\n const getUrl = (network, size) => {\n const { extended } = props;\n const { extendedNetworkLogo } = window.ExternalConfig;\n if (extended) {\n return getNetworkLogoUrl(network, size, extendedNetworkLogo);\n }\n return getNetworkLogoUrlFromConfig();\n };\n\n const { breakpoint, network, size, alt, url, lazyLoad = true } = props;\n const src = url || getUrl(network, size);\n const altText = alt || `${network} logo`;\n const title = getTitle();\n return renderImage({\n alt: altText,\n breakpoint,\n imageType: NETWORK_LOGO_IMAGE,\n lazyLoad,\n src,\n title,\n });\n};\n\nNetworkImage.defaultProps = {\n network: NetworkConfig.branding,\n size: DEFAULT_IMAGE_SIZE,\n title: null,\n alt: null,\n url: null,\n extended: false,\n};\n\nNetworkImage.propTypes = {\n network: PropTypes.string,\n url: PropTypes.string,\n title: PropTypes.string,\n alt: PropTypes.string,\n size: PropTypes.number,\n extended: PropTypes.bool,\n breakpoint: PropTypes.string.isRequired,\n lazyLoad: PropTypes.bool,\n};\n\nexport default NetworkImage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IndexLink } from 'react-router';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport { getNetworkLogoUrl } from 'helpers/ContentHelper';\nimport { helperGetHomeUrl } from 'helpers/RouteHelper';\nimport { SITE_PLATFORM_WEB } from 'helpers/BreakpointHelper';\nimport NetworkImage from 'components/NetworkImage';\nimport Style from './NetworkLink.module.scss';\n\nconst NetworkLink = props => {\n const { breakpoint, clickEvent, disableLink, isHeader } = props;\n\n const to = helperGetHomeUrl();\n const onClick = clickEvent;\n\n const classes = [];\n const indexIsSlash = to === '/';\n\n classes.push(Style.logo);\n const className = classNames(classes);\n const linkProps = {\n className,\n onClick,\n };\n const network = _.get(window.ExternalConfig, 'brand.headerLogo', null);\n const networkImageProps = { breakpoint, lazyLoad: false };\n\n if (isHeader && network) {\n networkImageProps.url = getNetworkLogoUrl(network);\n }\n if (network) networkImageProps.network = network;\n if (!disableLink) {\n linkProps.href = to;\n linkProps.to = to;\n }\n const networkImage = <NetworkImage {...networkImageProps} />;\n\n if (!indexIsSlash && !isHeader) return <a {...linkProps}>{networkImage}</a>;\n\n return <IndexLink {...linkProps}>{networkImage}</IndexLink>;\n};\n\nNetworkLink.defaultProps = {\n breakpoint: SITE_PLATFORM_WEB,\n clickEvent: () => {},\n disableLink: false,\n hideNetworkLogo: false,\n isHeader: null,\n preauthorizedResources: null,\n};\n\nNetworkLink.propTypes = {\n breakpoint: PropTypes.string,\n clickEvent: PropTypes.func,\n disableLink: PropTypes.bool,\n hideNetworkLogo: PropTypes.bool,\n isHeader: PropTypes.bool,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default NetworkLink;\n","import React from 'react';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Style from './UpsellProgressBar.module.scss';\n\nconst UpsellProgressBar = ({ currentStep }) => {\n const {\n landingPage_breadcrumb1: breadcrumb1,\n landingPage_breadcrumb2: breadcrumb2,\n landingPage_breadcrumb3: breadcrumb3,\n } = window.Language;\n const steps = [breadcrumb1, breadcrumb2, breadcrumb3];\n return (\n <div className={Style.container}>\n {_.map(steps, (stepLabel, idx) => {\n const stepClasses = [Style.step];\n const filled = currentStep >= idx;\n const completed = currentStep > idx;\n if (filled) stepClasses.push(Style.filled);\n if (completed) stepClasses.push(Style.completed);\n return (\n <div\n data-test=\"progress-bar-step\"\n key={`step-${idx}`}\n className={classNames(stepClasses)}\n >\n {idx > 0 && <div className={Style.connector} />}\n <div className={Style.anchor}>\n <div className={Style.label}>{stepLabel}</div>\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default UpsellProgressBar;\n\nUpsellProgressBar.defaultProps = {\n currentStep: 0,\n};\n\nUpsellProgressBar.propTypes = {\n currentStep: PropTypes.number,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { connect } from 'react-redux';\nimport Icon from 'components/Icon';\nimport helperMarkdownToComponent from 'helpers/Data';\nimport { sendEmail } from './EmailSubmissionFormActions';\n\nimport Style from './EmailSubmissionForm.module.scss';\n\nclass EmailSubmissionForm extends Component {\n constructor(props) {\n super(props);\n this.state = {\n emailInput: '',\n };\n }\n\n componentDidUpdate(prevProps) {\n const { emailSent, onSubmitCallback } = this.props;\n const { emailSent: prevEmailSent } = prevProps;\n const emailWasSent = !prevEmailSent && emailSent;\n if (emailWasSent) onSubmitCallback();\n }\n\n onEmailChange = e => {\n const emailInput = e.target.value;\n this.setState({ emailInput });\n };\n\n onEmailSubmit = submitButtonText => {\n const { emailInput } = this.state;\n const { accessToken, deviceId, sendEmail } = this.props;\n if (!emailInput) return;\n sendEmail({ email: emailInput, accessToken, deviceId });\n };\n\n renderForm() {\n const { render } = this.props;\n const { emailInput } = this.state;\n if (!render) return null;\n\n const {\n auth_legalAgreement: legalCopy,\n mvpdEmailCapture_button: submitButtonText,\n mvpdEmailCapture_header: emailHeaderText,\n mvpdEmailCapture_placeholder: emailPlaceholderText,\n } = window.Language;\n\n const buttonEnabled = emailInput.length > 0;\n const buttonClasses = [Style.emailSubmitButton];\n if (buttonEnabled) buttonClasses.push(Style.enabled);\n\n return (\n <div className={Style.emailFormContainer} data-test=\"email-form-container\">\n <div className={Style.emailFormHeader} data-test=\"email-form-header\">\n {emailHeaderText}\n </div>\n <div className={Style.emailInputContainer}>\n <input\n className={Style.emailInput}\n data-test=\"email-form-input\"\n type=\"email\"\n placeholder={emailPlaceholderText}\n value={emailInput}\n onChange={this.onEmailChange}\n />\n <button\n className={classNames(buttonClasses)}\n data-test=\"email-form-submit-button\"\n disabled={!buttonEnabled}\n onClick={() => {\n this.onEmailSubmit(submitButtonText);\n }}\n type=\"button\"\n >\n {submitButtonText}\n </button>\n </div>\n <div className={Style.legalDisclaimer} data-test=\"email-form-disclaimer\">\n {helperMarkdownToComponent(legalCopy, null, {\n Paragraph: props => {\n const { children } = props;\n if (!children) return null;\n return <p className={Style.legalDisclaimerText}>{children}</p>;\n },\n Link: props => (\n <a\n href={props.href}\n className={Style.legalDisclaimerLink}\n target=\"noopener noreferrer\"\n >\n {props.children}\n </a>\n ),\n })}\n </div>\n </div>\n );\n }\n\n renderSuccess = () => {\n const { mvpdEmailCapture_success: headerText } = window.Language;\n\n return (\n <div className={Style.emailSuccessContainer} data-test=\"email-success-message\">\n <div className={Style.emailFormHeader} data-test=\"email-form-header\">\n {headerText}\n </div>\n <div className={Style.emailSuccessIcon}>\n <Icon\n size=\"large\"\n color=\"white\"\n icon=\"checkmark-circle\"\n theme={Style}\n viewBox=\"0 0 71 71\"\n />\n </div>\n </div>\n );\n };\n\n render() {\n const { emailSent } = this.props;\n return emailSent ? this.renderSuccess() : this.renderForm();\n }\n}\n\nconst mapStateToProps = ({ emailSubmissionForm }) => ({\n emailAccessToken: emailSubmissionForm.emailAccessToken,\n emailSent: emailSubmissionForm.emailSent,\n});\n\nexport default connect(\n mapStateToProps,\n {\n sendEmail,\n },\n)(EmailSubmissionForm);\n\nEmailSubmissionForm.defaultProps = {\n accessToken: null,\n account: {},\n deviceId: null,\n onSubmitCallback: () => {},\n render: true,\n};\n\nEmailSubmissionForm.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n deviceId: PropTypes.string,\n emailSent: PropTypes.bool.isRequired,\n onSubmitCallback: PropTypes.func,\n render: PropTypes.bool,\n sendEmail: PropTypes.func.isRequired,\n};\n","import axios from 'axios';\nimport { helperGetApiHeaders, axiosErrorHandler } from 'helpers/ApiHelper';\nimport { getEmailSubmissionBody, getEmailSubmissionUrl } from './EmailSubmissionFormHelpers';\n\nexport const SEND_EMAIL = 'SEND_EMAIL';\n\nexport function sendEmail({ email, accessToken, deviceId }) {\n const pathKey = 'emailCapture';\n const url = getEmailSubmissionUrl(pathKey);\n const body = getEmailSubmissionBody(email);\n const headers = helperGetApiHeaders({ pathKey, accessToken, deviceId });\n const request = axios.post(url, body, headers).catch(axiosErrorHandler);\n\n return {\n type: SEND_EMAIL,\n payload: request,\n };\n}\n","import _ from 'lodash';\nimport { getBaseContentUrl } from 'helpers/ApiHelper';\n\nexport const getEmailSubmissionBody = email => {\n if (!email) return {};\n return {\n email,\n prospect: 'fxplus',\n };\n};\n\nexport const getEmailSubmissionUrl = pathKey => {\n const authConfig = _.get(window.ExternalConfig, 'api.auth');\n const uri = _.get(authConfig, pathKey);\n return `${getBaseContentUrl()}${uri}`;\n};\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\nimport { forceHttps } from 'helpers/ContentHelper';\nimport { onEnterKeyPress } from 'helpers/Account';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport {\n BUILD_VERSION,\n callTealiumEvent,\n getSegmentMVPDEvents,\n getTealiumSourceAuth,\n setSegmentPageStartSource,\n setTealiumProfileId,\n TEALIUM_EVENT_PREFIX,\n TealiumOnboardingActions,\n} from '@foxcorp/delta-web-analytics';\nimport {\n SUCCESS_COOKIE_NAME,\n LOCKED_CONTENT_SOURCE,\n checkAuthStartSource,\n getAuthPlayerLinks,\n generateLinkTag,\n} from 'helpers/AuthHelper';\nimport EmailSubmissionForm from 'components/EmailSubmissionForm';\nimport Style from './Providers.module.scss';\n\nclass Providers extends Component {\n constructor(props) {\n super(props);\n this.providerDialogRef = createRef();\n }\n\n componentDidMount() {\n const { topMVPDProviders } = this.props;\n const MVPDEvents = getSegmentMVPDEvents();\n if (!topMVPDProviders) {\n MVPDEvents.authenticationSelectProviderError({\n description: 'provider list failed to load',\n type: 'server-side',\n });\n }\n\n if (this.providerDialogRef) this.providerDialogRef.current?.focus();\n }\n\n render() {\n const {\n accessToken,\n account,\n deviceId,\n isLive,\n onAllProvidersClick,\n onProviderClick,\n previewPassExpired,\n previewPassSignIn,\n selectedChannel,\n showEmailForm,\n topMVPDProviders,\n } = this.props;\n\n if (!topMVPDProviders || !topMVPDProviders.length) return null;\n const {\n auth_selectProviderHeader: headerText,\n auth_selectProviderMessage: descriptionText,\n auth_seeAllProviders: seeAllProvidersText,\n } = window.Language;\n const profileId = _.get(account, 'profileId');\n const playerLinks = getAuthPlayerLinks();\n const { noProvider, needHelp } = playerLinks;\n const noProviderTag = generateLinkTag(Style, noProvider);\n const needHelpTag = generateLinkTag(Style, needHelp, () => {});\n const seeAllProvidersOnClick = () => {\n onAllProvidersClick();\n };\n\n const providerTags = () => {\n const isOptimizelyExperiment = window.optimizelyAllProvidersFocalPoint;\n const maxProviders = isOptimizelyExperiment ? 8 : 7;\n return topMVPDProviders.slice(0, maxProviders).map(provider => {\n const { name, logos, adobePassId } = provider;\n const logo = forceHttps(_.get(logos, '1.url', ''));\n\n const handleClick = () => {\n const id = adobePassId;\n const channel = isLive && selectedChannel ? selectedChannel : null;\n const cookie = {\n name: SUCCESS_COOKIE_NAME,\n value: {\n selectedChannel: channel,\n provider: id,\n },\n options: {\n path: '/',\n },\n };\n const action = 'authentication_select_provider';\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n const onboardSrc = checkAuthStartSource(previewPassSignIn, previewPassExpired);\n const onboardingStartSource = onboardSrc;\n setSegmentPageStartSource({ previewPassSignIn, previewPassExpired });\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n mvpd_select_type: 'primary mvpd list',\n mvpd: id,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n onboarding_start_source: onboardingStartSource,\n platform_version: BUILD_VERSION,\n profile_start_source: undefined,\n ...getCommonTealiumProps(),\n });\n onProviderClick(id, cookie);\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n };\n return (\n <div className={Style.providerContainer} key={`provider-${name}`}>\n <Link\n className={Style.provider}\n tabIndex=\"0\"\n title={name}\n onKeyPress={e => {\n onEnterKeyPress(e, handleClick);\n }}\n onClick={() => {\n handleClick();\n }}\n >\n <div className={Style.providerLogoContainer}>\n <img className={Style.providerLogo} src={logo} alt={name} />\n </div>\n </Link>\n </div>\n );\n });\n };\n\n const isOptimizelyExperiment = window.optimizelyAllProvidersFocalPoint;\n let allProvidersButton;\n let seeAllProviders = (\n <div className={Style.providerContainer} key=\"provider\">\n <Link\n role=\"button\"\n tabIndex=\"0\"\n title={seeAllProvidersText}\n className={Style.provider}\n onClick={seeAllProvidersOnClick}\n >\n <span className={Style.allProviders}>{seeAllProvidersText}</span>\n </Link>\n </div>\n );\n if (isOptimizelyExperiment) {\n seeAllProviders = null;\n allProvidersButton = (\n <div className={Style.allProvidersButtonContainer}>\n <button\n type=\"button\"\n onClick={seeAllProvidersOnClick}\n className={Style.allProvidersButton}\n >\n {seeAllProvidersText}\n </button>\n </div>\n );\n }\n\n return (\n <div\n className={Style.providerDialog}\n role=\"link\"\n tabIndex=\"0\"\n id=\"provider-dialog\"\n ref={this.providerDialogRef}\n >\n <div key=\"header-text\" className={Style.headerText}>\n {headerText}\n </div>\n <div key=\"description-text\" className={Style.descriptionText}>\n {descriptionText}\n </div>\n <div key=\"providers-grid\" className={Style.providersContainer}>\n {providerTags()}\n {seeAllProviders}\n </div>\n <EmailSubmissionForm\n accessToken={accessToken}\n account={account}\n deviceId={deviceId}\n key=\"email-form\"\n render={showEmailForm}\n location=\"authentication flow\"\n />\n {allProvidersButton}\n <div key=\"links\" className={Style.links}>\n {noProviderTag}\n <span className={Style.linkSeparator} />\n {needHelpTag}\n </div>\n </div>\n );\n }\n}\n\nexport default Providers;\n\nProviders.defaultProps = {\n accessToken: null,\n account: {},\n deviceId: null,\n isLive: PropTypes.bool,\n onAllProvidersClick: () => {},\n onProviderClick: () => {},\n previewPassExpired: null,\n previewPassSignIn: false,\n selectedChannel: null,\n showEmailForm: false,\n topMVPDProviders: [],\n};\n\nProviders.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n deviceId: PropTypes.string,\n isLive: PropTypes.bool,\n onAllProvidersClick: PropTypes.func,\n onProviderClick: PropTypes.func,\n previewPassExpired: PropTypes.bool,\n previewPassSignIn: PropTypes.bool,\n selectedChannel: PropTypes.number,\n showEmailForm: PropTypes.bool,\n topMVPDProviders: PropTypes.arrayOf(PropTypes.shape({})),\n};\n","/* eslint-disable react/jsx-no-target-blank */\n/* eslint-disable react/prop-types */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport axios from 'axios';\nimport { Link } from 'react-router';\nimport Icon from 'components/Icon';\nimport {\n getCookie,\n removeCookie,\n setCookie,\n getSessionStorageItem,\n setSessionStorageItem,\n} from 'helpers/Storage';\nimport helperMarkdownToComponent from 'helpers/Data';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { isContentAuthorized } from 'components/AuthClientless/AuthHelper';\nimport { logout as helperAuthLogoutClientless } from 'helpers/auth.clientless';\nimport {\n forceHttps,\n getNetworkLogoUrl,\n getMVPDCookie,\n getMVPDFromCookie,\n isMvpdSubscription,\n LINK_REL,\n removeMVPDCookie,\n} from 'helpers/ContentHelper';\nimport { getDefaultClientlessOptions } from 'helpers/AuthClientlessHelper';\nimport {\n BUILD_VERSION,\n callTealiumEvent,\n getPreviewPassAnalyticsEvents,\n getSegmentAuthTrackEvents,\n getSegmentMVPDEvents,\n getTealiumSourceAuth,\n setSegmentPageStartSource,\n setTealiumProfileId,\n setTealiumProfileStartSource,\n setTealiumSourceAuth,\n TEALIUM_EVENT_PREFIX,\n TealiumOnboardingActions,\n TrackEvents,\n} from '@foxcorp/delta-web-analytics';\nimport { helperGetApiRouteById, helperGetApiHeaders, axiosErrorHandler } from 'helpers/ApiHelper';\nimport {\n getAuthNetworksConfig,\n getPreviewPassImage,\n previewPassEnabled,\n} from 'helpers/ConfigHelper';\nimport {\n helperGetHomeUrl,\n goToExternalSignIn,\n redirectToExternalUrl,\n refreshPage,\n} from 'helpers/RouteHelper';\nimport { isPreviewPass } from 'helpers/PlayerHelper';\nimport classNames from 'classnames';\nimport Loader from 'components/Loader';\nimport NetworkImage from 'components/NetworkImage';\nimport NetworkLink from 'components/NetworkLink';\nimport UpsellProgressBar from 'components/UpsellProgressBar';\nimport MVPDStartProviders from 'components/Auth/MVPDStart/Providers';\nimport GeolocationError from 'components/Auth/PlaybackError/Geolocation';\nimport {\n ATTEMPTED_AUTH,\n SUCCESS_AUTH,\n SIGN_OUT_SUCCESS_AUTH,\n SIGN_OUT_ATTEMPTED_AUTH,\n userAttributeEvents as optimizelyUserAttributeEvents,\n} from './OptimizelyHelper';\n\nconst PROVIDER_COMCAST = 'Comcast_SSO';\nexport const SUCCESS_COOKIE_NAME = 'mvpd-success';\nconst PREVIEW_PASS_COOKIE_NAME = 'pp-auth-token';\nexport const MVPD_COOKIE_NAME = 'mvpd-auth';\nexport const BUYTHROUGH_DATA_COOKIE_NAME = 'buythrough-scenario-data';\nexport const MVPD_LOGOUT_COOKIE_NAME = 'mvpd-auth-logout';\nexport const MVPD_MANUAL_LOGOUT = 'mvpd-manual-logout';\nexport const PREVIEW_PASS_60 = 'TempPass_fbcfox_60min';\nexport const PREVIEW_PASS_5 = 'TempPass_fbcfox_5min';\nexport const PREVIEW_PASS_EXPIRED = 'PREVIEW_PASS_EXPIRED';\nexport const LOCKED_CONTENT_SOURCE = 'Locked Content';\nexport const GOOGLE_AUTO_SIGN_IN = 'GOOGLE_AUTO_SIGN_IN';\n\nexport const adobeAuthOptions = {\n callSetConfig: true,\n backgroundLogin: true,\n backgroundLogout: true,\n};\nconst isLive = _.includes(_.get(window, 'location.pathname', ''), '/live');\nconst helperGetPerks = () => _.get(window.ExternalConfig, 'auth.perks', []);\nconst helperGetProfilePerks = () => _.get(window.ExternalConfig, 'profile.resumeUpsell', []);\nexport function getAuthPlayerLinks() {\n return _.get(window.ExternalConfig, 'auth.playerLinks', {});\n}\nexport function generateLinkTag(theme, linkObj, onClick = () => {}) {\n const { url, text } = linkObj;\n if (!url || !text) return null;\n return (\n <Link className={theme.link} target=\"_blank\" rel={LINK_REL} onClick={onClick} to={url}>\n {text}\n </Link>\n );\n}\nconst getNetworkLogo = ({ theme, onClick, key }) => (\n <Link className={theme.logo} to=\"/\" onClick={onClick}>\n <NetworkImage network={key} />\n </Link>\n);\ngetNetworkLogo.propTypes = {\n theme: PropTypes.shape({}).isRequired,\n onClick: PropTypes.func,\n key: PropTypes.string,\n};\ngetNetworkLogo.defaultProps = {\n onClick: () => {},\n key: '',\n};\n\nexport const getPreviewPassLengthFromName = mvpd => {\n const previewPasses = [PREVIEW_PASS_5, PREVIEW_PASS_60];\n if (_.includes(previewPasses, mvpd)) {\n const duration = _.compact(_.split(mvpd, 'TempPass_fbcfox_')).pop();\n switch (duration) {\n case '60min':\n return '60 min';\n case '5min':\n return '5 min';\n default:\n break;\n }\n }\n return null;\n};\n\nexport const checkAuthStartSource = (previewPassSignIn, previewPassExpired) => {\n if (previewPassSignIn) {\n if (previewPassExpired) {\n return 'preview pass:expiration';\n }\n return 'preview pass:activation';\n }\n return 'none';\n};\n\nexport function getProfileSignInProps({ theme }) {\n const {\n profileResumeUpsell_signInButton: signInButtonText,\n profileResumeUpsell_signUpButton: signUpButtonText,\n profileResumeUpsell_restart: restartButtonText,\n profileResumeUpsell_benefits: moreBenefitsText,\n } = window.Language;\n const perks = helperGetProfilePerks();\n if (!perks || perks.length === 0) return null;\n const { icon: headerIcon, text: headerText } = perks[0];\n const perksHeader = (\n <div className={theme.perkHeaderContainer} key={`perk-${headerText}`}>\n <div className={theme.perksHeader}>\n <img className={theme.perkIcon} src={headerIcon} alt={`Perk ${headerText}`} />\n </div>\n <div className={theme.headerPerkText}>{headerText}</div>\n </div>\n );\n\n const profilePerks = [];\n for (let index = 1; index < perks.length; index += 1) {\n const { icon, text } = perks[index];\n profilePerks.push(\n <div className={theme.perkContainer} key={`perk-separator-container-${text}`}>\n <div className={theme.perkInnerContainer} key={`perk-${text}`}>\n <div className={theme.perkImageContainer}>\n <img className={theme.perkIcon} src={icon} alt={`Perk ${text}`} />\n </div>\n <div className={theme.perkText}>{text}</div>\n </div>\n </div>,\n );\n\n const separator =\n perks.length > index && index !== 0 && perks.length !== index + 1 ? (\n <div key={`separator-${text}`} className={theme.perksSeparator}>\n +\n </div>\n ) : null;\n profilePerks.push(separator);\n }\n\n return {\n signInButtonText,\n signUpButtonText,\n restartButtonText,\n moreBenefitsText,\n profileSignInTheme: theme,\n profilePerks,\n perksHeader,\n };\n}\n\nexport function getSignInProps({ theme, account, previewPassExpired, previewPassSignIn }) {\n const {\n auth_signInHeader: signInWithProviderText,\n global_signInButton: globalSignInText,\n } = window.Language;\n const signInText = signInWithProviderText;\n const signInButtonText = globalSignInText;\n const signInInvertContent = false;\n const profileId = _.get(account, 'profileId');\n const perks = helperGetPerks();\n\n const signInPerks = (\n <div className={theme.perksContainer}>\n {perks.map((perk, index) => {\n const { icon, text } = perk;\n const separator =\n perks.length > index && perks.length !== index + 1 ? (\n <div key={`separator-${text}`} className={theme.perksSeparator}>\n +\n </div>\n ) : null;\n\n return (\n <div className={theme.perkContainer} key={`perk-separator-container-${text}`}>\n <div className={theme.perkInnerContainer} key={`perk-${text}`}>\n <div className={theme.perkImageContainer}>\n <img className={theme.perkIcon} src={icon} alt={`Perk ${text}`} />\n </div>\n <div className={theme.perkText}>{text}</div>\n </div>\n {separator}\n </div>\n );\n })}\n </div>\n );\n const signInOnButtonClick = () => {\n const action = 'authentication_start';\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n const onboardSrc = checkAuthStartSource(previewPassSignIn, previewPassExpired);\n setTealiumProfileStartSource('other');\n const onboardingStartSource = onboardSrc;\n const data = setTealiumProfileId(profileId, {\n auth_start_source: authStartSource,\n profile_start_source: undefined,\n onboarding_start_source: onboardingStartSource,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n action,\n platform_version: BUILD_VERSION,\n dcg_profile_id: profileId,\n mvpd: 'no mvpd',\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n };\n\n const signInOnCloseClick = () => {\n const action = 'authentication_start';\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n const onboardSrc = checkAuthStartSource(previewPassSignIn, previewPassExpired);\n setTealiumProfileStartSource('other');\n const onboardingStartSource = onboardSrc;\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n mvpd: 'no mvpd',\n onboarding_action: TealiumOnboardingActions.SKIP,\n onboarding_start_source: onboardingStartSource,\n platform_version: BUILD_VERSION,\n profile_start_source: undefined,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n };\n\n return {\n signInInvertContent,\n signInText,\n signInButtonText,\n signInTheme: theme,\n signInPerks,\n signInOnButtonClick,\n signInOnCloseClick,\n };\n}\n\nexport function getCookiesBlockedProps({ options }) {\n const {\n playback_cookieErrorHeader: headerText,\n playback_cookieErrorMessage: descriptionText,\n global_signInButton: signInButtonText,\n } = window.Language;\n const { theme, showCookiesBlocked, resetShowCookiesBlocked } = options;\n\n const headerTag = (\n <div key=\"header\" className={theme.header}>\n {headerText}\n </div>\n );\n\n const descriptionTag = (\n <div key=\"description\" className={theme.description}>\n {helperMarkdownToComponent(descriptionText)}\n </div>\n );\n\n const getButtonTag = ({ onSignInButtonClick }) => (\n <button\n onClick={() => {\n onSignInButtonClick();\n resetShowCookiesBlocked();\n }}\n >\n {signInButtonText}\n </button>\n );\n\n const getCookiesBlockedChildren = ({ onSignInButtonClick }) => {\n const hasButton = !!onSignInButtonClick;\n return [headerTag, descriptionTag, hasButton ? getButtonTag({ onSignInButtonClick }) : null];\n };\n\n return {\n getCookiesBlockedChildren,\n cookiesBlockedTheme: theme,\n renderCookiesBlocked: showCookiesBlocked,\n };\n}\n\nexport function getFailureProps({ sharedTheme, theme }) {\n const {\n auth_failedHeader: headerText,\n auth_failedMessage: descriptionText,\n authFailedContinueButton: buttonText,\n } = window.Language;\n\n const confirmTag = ({ onConfirmClick }) => (\n <div key=\"confirm-button\" className={sharedTheme.confirmContainer}>\n <button onClick={onConfirmClick} className={sharedTheme.confirm} type=\"button\">\n <span>{buttonText}</span>\n </button>\n </div>\n );\n confirmTag.propTypes = {\n onConfirmClick: PropTypes.func.isRequired,\n };\n\n const headerTag = (\n <div key=\"header\" className={theme.header}>\n {headerText}\n </div>\n );\n\n const descriptionTag = (\n <div key=\"description\" className={theme.description}>\n {descriptionText}\n </div>\n );\n\n const contentChildren = ({ onConfirmClick }) => [\n headerTag,\n descriptionTag,\n confirmTag({ onConfirmClick }),\n ];\n\n return {\n contentChildren,\n failureTheme: theme,\n };\n}\n\nexport function getContentBlackoutProps({ theme }) {\n const {\n blackout_default_title: defaultHeaderText,\n blackout_default: defaultDescriptionText,\n } = window.Language;\n\n const headerTag = headerTextOverride => (\n <div key=\"header\" className={theme.header}>\n {headerTextOverride || defaultHeaderText}\n </div>\n );\n\n const descriptionTag = descriptionTextOverride => (\n <div key=\"description\" className={theme.description}>\n {descriptionTextOverride || defaultDescriptionText}\n </div>\n );\n\n const contentBlackoutChildren = (headerTextOverrideKey, descriptionTextOverrideKey) => {\n const headerText = _.get(window.Language, headerTextOverrideKey);\n const descriptionText = _.get(window.Language, descriptionTextOverrideKey);\n\n return [headerTag(headerText), descriptionTag(descriptionText)];\n };\n\n return {\n contentBlackoutChildren,\n contentBlackoutTheme: theme,\n };\n}\n\nexport function getPlaybackErrorProps({ theme, provider }) {\n const isComcast = _.get(provider, 'adobePassId') === PROVIDER_COMCAST;\n const { pcs_ctaButtonLabel: label } = window.Language;\n const { pcsComcastInfo: link } = window.ExternalConfig;\n const playbackErrorChildren = ({ errorText }) => (\n <div className={`${theme.errorContainer} ft-playback-error`}>\n <div className={theme.headerText}>{_.get(errorText, 'header')}</div>\n <div className={theme.bodyText}>{_.get(errorText, 'body')}</div>\n {isComcast && (\n <div className={theme.actions}>\n <a href={link} target=\"_blank\" rel={LINK_REL}>\n <button type=\"button\">{label}</button>\n </a>\n </div>\n )}\n </div>\n );\n playbackErrorChildren.propTypes = {\n errorText: PropTypes.shape({\n header: PropTypes.any,\n body: PropTypes.any,\n }),\n };\n playbackErrorChildren.defaultProps = {\n errorText: {},\n };\n\n return {\n playbackErrorChildren,\n playbackErrorTheme: theme,\n };\n}\n\nexport function getPreviewPassWelcomeProps() {\n const {\n previewPass_welcome_heading_60_min: heading_60_min,\n previewPass_welcome_heading_5_min: heading_5_min,\n } = window.Language;\n\n const previewPassWelcomeText = ({ mvpd }) => {\n if (!mvpd) return null;\n const heading = mvpd === PREVIEW_PASS_5 ? heading_5_min : heading_60_min;\n return <div className={previewPassWelcomeText}>{heading}</div>;\n };\n const image = getPreviewPassImage();\n\n return {\n previewPassWelcomeText,\n previewPassWelcomeNetworkLogo: image,\n };\n}\n\nexport function getProfilePcsErrorProps({ theme }) {\n const profilePcsErrorChildren = ({ errorText }) => (\n <div className={`${theme.errorContainer} ft-playback-error`}>\n <div className={theme.headerText}>{_.get(errorText, 'header')}</div>\n <div className={theme.bodyText}>{_.get(errorText, 'body')}</div>\n </div>\n );\n profilePcsErrorChildren.propTypes = {\n errorText: PropTypes.shape({\n header: PropTypes.any,\n body: PropTypes.any,\n }),\n };\n profilePcsErrorChildren.defaultProps = {\n errorText: {},\n };\n\n return {\n profilePcsErrorChildren,\n profilePcsErrorTheme: theme,\n };\n}\n\nexport function getGeoLocationErrorProps({ theme, isGeolocationEnabled }) {\n if (!isGeolocationEnabled) return null;\n const geoLocationErrorChildren = ({ primaryActionCallback, geoLocationTimeoutFail }) => {\n const {\n livePlayer_geoLocationErrorHeader: headerText,\n livePlayer_geoLocationErrorBody: bodyText,\n livePlayer_geoLocationFailBody: failBodyText,\n livePlayer_geoLocationErrorPrompt: actionButtonText,\n supportCta: linkText,\n } = window.Language;\n\n const errorText = geoLocationTimeoutFail ? failBodyText : bodyText;\n\n return (\n <GeolocationError\n headerText={headerText}\n bodyText={errorText}\n actionButtonText={actionButtonText}\n linkText={linkText}\n primaryActionCallback={primaryActionCallback}\n geoLocationTimeoutFail={geoLocationTimeoutFail}\n />\n );\n };\n\n return {\n geoLocationErrorChildren,\n playbackErrorTheme: theme,\n };\n}\n\nexport function getNoSportsOnMobileProps({ theme }) {\n const noSportsOnMobileErrorChildren = ({ errorText, primaryActionCallback }) => (\n <div className={theme.errorContainer}>\n <div className={theme.headerText}>{_.get(errorText, 'header')}</div>\n <div className={theme.bodyText}>{_.get(errorText, 'body')}</div>\n <div className={theme.actions}>\n {!primaryActionCallback ? null : (\n <button\n onClick={() => {\n primaryActionCallback();\n }}\n className={theme.primaryAction}\n type=\"button\"\n >\n {_.get(errorText, 'primaryAction')}\n </button>\n )}\n </div>\n </div>\n );\n noSportsOnMobileErrorChildren.propTypes = {\n errorText: PropTypes.shape({\n header: PropTypes.any,\n body: PropTypes.any,\n primaryAction: PropTypes.any,\n }),\n primaryActionCallback: PropTypes.func,\n };\n noSportsOnMobileErrorChildren.defaultProps = {\n errorText: {},\n primaryActionCallback: () => {},\n };\n\n return {\n noSportsOnMobileErrorChildren,\n playbackErrorTheme: theme,\n };\n}\n\nexport function getNotEntitledProps({ sharedTheme, theme, onLogout }) {\n const {\n auth_notEntitledButton: notEntitledCTAButtonText,\n auth_notEntitledError,\n auth_notEntitledInfo,\n auth_xfinity_notEntitledError,\n auth_xfinity_notEntitledInfo,\n } = window.Language;\n\n let notEntitledErrorText;\n let notEntitledErrorInfoText;\n\n const closeOverlay = () => {\n if (isMvpdSubscription()) {\n redirectToExternalUrl(helperGetHomeUrl());\n } else {\n onLogout();\n }\n };\n\n const { preauthorizedResources, provider } = this.props;\n\n if (provider) {\n if (provider.name === 'Xfinity') {\n notEntitledErrorText = auth_xfinity_notEntitledError;\n notEntitledErrorInfoText = auth_xfinity_notEntitledInfo;\n } else {\n notEntitledErrorText = auth_notEntitledError;\n notEntitledErrorInfoText = auth_notEntitledInfo;\n }\n }\n\n const headerBarTag = () => (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n closeOverlay();\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n closeOverlay();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n\n const notEntitledCTAButton = () => (\n <button onClick={closeOverlay} className={theme.notEntitledCTAButton} type=\"button\">\n {notEntitledCTAButtonText}\n </button>\n );\n\n const secondaryLogo = _.get(provider, 'logos[0].url');\n const providerLogoUrl = forceHttps(_.get(provider, 'logos[1].url', secondaryLogo));\n const providerLogoImg = providerLogoUrl ? (\n <img src={providerLogoUrl} alt={_.get(provider, 'name', 'Cable Provider Logo')} />\n ) : null;\n\n const logo = <div className={theme.notEntitledLogo}>{providerLogoImg}</div>;\n const error = <div className={theme.notEntitledError}>{notEntitledErrorText}</div>;\n const info = <div className={theme.notEntitledErrorInfo}>{notEntitledErrorInfoText}</div>;\n\n const notEntitledChildren = () => {\n const content = (\n <div className={classNames(sharedTheme.content, theme.errorDetails)}>\n {logo}\n {error}\n {info}\n {notEntitledCTAButton()}\n </div>\n );\n return [headerBarTag(), content];\n };\n\n return {\n notEntitledChildren,\n notEntitledTheme: theme,\n };\n}\n\nexport function getSuccessProps({ sharedTheme, theme, networkList }) {\n const {\n auth_successTitle: titleText,\n auth_allAccessMessage: allAccessText,\n auth_limitedAccessMessage: limitedAccessText,\n auth_noEntitlements: noAccessText,\n auth_successButton: buttonText,\n } = window.Language;\n\n const closeOverlay = () => {\n window.location.reload();\n };\n\n const headerBarTag = (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n closeOverlay();\n }}\n />\n </div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n closeOverlay();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n const headerTag = ({ preauthorizedResources }) => {\n const authResourcesLength = _.size(preauthorizedResources);\n const networkListLength = _.size(networkList);\n const isFullAuth = authResourcesLength >= networkListLength && authResourcesLength !== null;\n const isPartialAuth =\n authResourcesLength < networkListLength &&\n authResourcesLength !== 0 &&\n authResourcesLength !== null;\n if (!isFullAuth && !isPartialAuth) {\n return null;\n }\n return (\n <div key=\"header-text\" className={classNames(sharedTheme.headerText, theme.headerText)}>\n {titleText}\n </div>\n );\n };\n const noAccessTextAddOn = (\n <span>\n  Just look for shows without the\n <div className={theme.noAccessLockIcon}>\n <Icon icon=\"lock\" color=\"white\" size=\"full\" viewBox=\"1 1 36 36\" />\n </div>\n icon.\n </span>\n );\n const descriptionTag = ({ preauthorizedResources }) => {\n const authResourcesLength = _.size(preauthorizedResources);\n const networkListLength = _.size(networkList);\n const isFullAuth = authResourcesLength >= networkListLength && authResourcesLength !== null;\n const isPartialAuth =\n authResourcesLength < networkListLength &&\n authResourcesLength !== 0 &&\n authResourcesLength !== null;\n\n const accessText =\n (isFullAuth && allAccessText) || (isPartialAuth && limitedAccessText) || noAccessText;\n\n const specialFormatting = isFullAuth ? null : theme.descriptionTextLimitedAccess;\n\n return (\n <div\n key=\"description\"\n className={classNames(\n sharedTheme.descriptionText,\n theme.descriptionText,\n specialFormatting,\n !isFullAuth && !isPartialAuth && theme.noAccessDescription,\n )}\n >\n {accessText}\n {!isFullAuth && !isPartialAuth && noAccessTextAddOn}\n </div>\n );\n };\n\n descriptionTag.propTypes = {\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string).isRequired,\n };\n\n const networksTag = ({ preauthorizedResources, networkList }) => {\n const networks = networkList.map(item => {\n const isAuthorized = isContentAuthorized(\n preauthorizedResources,\n [item],\n getAuthNetworksConfig(),\n );\n const url = getNetworkLogoUrl(item, 35);\n if (!url) return null;\n let containerClass = theme.networkLogoContainer;\n if (!isAuthorized) {\n containerClass = classNames(containerClass, theme.networkLogoContainerFade);\n }\n const lockIcon = !isAuthorized && (\n <div className={theme.lockIcon}>\n <Icon icon=\"lock\" color=\"white\" size=\"full\" viewBox=\"1 1 36 36\" />\n </div>\n );\n const networkLogo = (\n <div className={theme.logoImage}>\n <img\n className={theme.networkLogoImage}\n key={`network-${item}-img`}\n src={url}\n alt={`${item} logo`}\n />\n </div>\n );\n return (\n <div key={item} className={containerClass}>\n {lockIcon}\n {networkLogo}\n </div>\n );\n });\n\n const data = (\n <div key=\"networks\" className={theme.networkContainer2}>\n {networks}\n </div>\n );\n\n return data;\n };\n\n const continueButton = (\n <button\n className={theme.authSuccessButton}\n onClick={() => {\n closeOverlay();\n }}\n >\n Continue\n </button>\n );\n\n networksTag.propTypes = {\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n networkList: PropTypes.arrayOf(PropTypes.string),\n mvpd: PropTypes.string,\n };\n networksTag.defaultProps = {\n preauthorizedResources: [],\n networkList: [],\n mvpd: null,\n };\n\n const innerContainerChildren = ({ preauthorizedResources, mvpd }) => (\n <>\n {headerBarTag}\n {headerTag({ preauthorizedResources })}\n {descriptionTag({ preauthorizedResources })}\n {networksTag({ preauthorizedResources, networkList, mvpd })}\n {continueButton}\n </>\n );\n\n return {\n successInnerContainerChildren: innerContainerChildren,\n successButtonItem: buttonText,\n successTheme: theme,\n };\n}\n\nexport function getLoadingProps({ sharedTheme, theme, onOverlayClose }) {\n const { auth_loadingTitle: titleText } = window.Language;\n const { preauthorizedResources } = this.props;\n const headerBarTag = ({ onClose }) => (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n onClose();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n\n headerBarTag.propTypes = {\n onClose: PropTypes.func.isRequired,\n };\n\n const headerTag = (\n <div key=\"header-text\" className={classNames(sharedTheme.content, theme.content)}>\n <div className={classNames(sharedTheme.headerText, theme.headerText)}>{titleText}</div>\n <Loader />\n </div>\n );\n\n const loadingOnClose = () => {\n if (onOverlayClose) onOverlayClose();\n };\n\n const innerContainerChildren = ({ onClose }) => [headerBarTag({ onClose }), headerTag];\n\n return {\n loadingInnerContainerChildren: innerContainerChildren,\n loadingBackgroundClass: 'withBackground',\n loadingTheme: theme,\n loadingOnClose,\n };\n}\n\nexport function getMVPDSearchProps({\n theme,\n sharedTheme,\n topMVPDProviders,\n mvpdProviders,\n account,\n onOverlayClose,\n previewPassExpired,\n previewPassSignIn,\n}) {\n const {\n auth_searchProviderHeader: headerBarText,\n auth_searchProviderTopProvidersHeader: providersText,\n } = window.Language;\n const profileId = _.get(account, 'profileId');\n const mvpdSearchInnerContainerChildren = ({ onClose, onBack }) => {\n const headerBarTag = (\n <div key=\"header-bar\" className={classNames(sharedTheme.headerBarBorder, theme.headerBar)}>\n <div key=\"logo\" className={classNames(sharedTheme.headerLogo, sharedTheme.hideMobile)}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n }}\n preauthorizedResources={this.props.preauthorizedResources}\n />\n </div>\n <Link\n key=\"back\"\n onClick={() => {\n onBack();\n }}\n className={classNames(theme.back, theme.hideDesktop)}\n />\n <div className={theme.headerBarText}>{headerBarText}</div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n if (onClose) onClose();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n );\n return [headerBarTag];\n };\n const providerTags = (onClick, selectedChannel, providers) => {\n if (!providers || !providers.length) return null;\n return providers.map(provider => {\n const { name, adobePassId, '@id': providerId } = provider;\n return (\n <div className={theme.providerContainer} key={`provider-${providerId}`}>\n <Link\n className={theme.provider}\n onClick={() => {\n const channel = isLive && selectedChannel ? selectedChannel : null;\n const id = adobePassId;\n const cookie = {\n name: SUCCESS_COOKIE_NAME,\n value: {\n selectedChannel: channel,\n provider: id,\n },\n options: {\n path: '/',\n },\n };\n onClick(id, cookie);\n const action = 'authentication_select_provider';\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n const onboardSrc = checkAuthStartSource(previewPassSignIn, previewPassExpired);\n const onboardingStartSource = onboardSrc;\n setSegmentPageStartSource({ previewPassSignIn, previewPassExpired });\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n mvpd_select_type: 'other mvpd',\n mvpd: id,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n onboarding_start_source: onboardingStartSource,\n platform_version: BUILD_VERSION,\n profile_start_source: undefined,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n }}\n >\n {name}\n </Link>\n </div>\n );\n });\n };\n const providersTag = ({\n onProviderClick,\n selectedChannel,\n providers,\n header,\n containerClass,\n }) => (\n <div key=\"providers\" className={containerClass}>\n {header}\n {providerTags(onProviderClick, selectedChannel, providers)}\n </div>\n );\n providersTag.propTypes = {\n onProviderClick: PropTypes.func,\n selectedChannel: PropTypes.number,\n providers: PropTypes.arrayOf(PropTypes.shape({})),\n header: PropTypes.shape({}),\n containerClass: PropTypes.string,\n };\n providersTag.defaultProps = {\n onProviderClick: () => {},\n selectedChannel: null,\n providers: [],\n header: {},\n containerClass: null,\n };\n\n const mvpdSearchInput = ({ input, onInputChange, onBackClick }) => (\n <div key=\"search-input\">\n <div className={theme.desktopBack}>\n <Link\n onClick={onBackClick}\n className={classNames(theme.back, theme.hideMobile, theme.backDesktop)}\n />\n </div>\n <div className={theme.inputContainer}>\n <input\n type=\"text\"\n className={theme.input}\n placeholder=\"Search\"\n value={input}\n onChange={onInputChange}\n />\n </div>\n </div>\n );\n mvpdSearchInput.propTypes = {\n input: PropTypes.string.isRequired,\n onInputChange: PropTypes.func.isRequired,\n onBackClick: PropTypes.func.isRequired,\n };\n const mvpdSearchResults = ({ onProviderClick, selectedChannel, input }) => {\n const { auth_noProvidersText: noProvidersText } = window.Language;\n const previewPasses = [PREVIEW_PASS_5, PREVIEW_PASS_60];\n const previewPassRemovedProviders = _.clone(mvpdProviders);\n _.remove(previewPassRemovedProviders, mvpd => {\n const id = _.get(mvpd, 'adobePassId');\n return _.includes(previewPasses, id);\n });\n const filteredProviders = _.filter(previewPassRemovedProviders, provider => {\n const lowercaseInput = input.toLowerCase();\n const name = _.get(provider, 'name', '').toLowerCase();\n const alternateNames = _.get(provider, 'alternateNames', []);\n const nameMatch = name.indexOf(lowercaseInput) > -1;\n const alternateNamesMatch = _.find(\n alternateNames,\n n => n.toLowerCase().indexOf(lowercaseInput) > -1,\n );\n return nameMatch || alternateNamesMatch || false;\n }).slice(0, 7);\n const isResults = !!filteredProviders.length && !!input;\n const isEmptyFilteredResults = !filteredProviders.length && !!input;\n const defaultProviders =\n topMVPDProviders && topMVPDProviders.length ? topMVPDProviders.slice(0, 7) : topMVPDProviders;\n const defaultProvidersTags = providersTag({\n onProviderClick,\n selectedChannel,\n providers: defaultProviders,\n header: <div className={theme.providersText}> {providersText} </div>,\n containerClass: theme.providersContainer,\n });\n const filteredProvidersTags = isResults\n ? providersTag({\n onProviderClick,\n selectedChannel,\n providers: filteredProviders,\n containerClass: theme.filteredProvidersContainer,\n })\n : null;\n const noProvidersTags = (\n <div className={theme.filteredProvidersContainer}>\n <div className={theme.providerContainer}>{noProvidersText}</div>\n </div>\n );\n let renderTags;\n\n if (isResults) {\n renderTags = filteredProvidersTags;\n } else if (isEmptyFilteredResults) {\n renderTags = noProvidersTags;\n } else {\n renderTags = defaultProvidersTags;\n }\n\n return (\n <div key=\"search-results\" className={theme.resultsContainer}>\n {renderTags}\n </div>\n );\n };\n mvpdSearchResults.propTypes = {\n onProviderClick: PropTypes.func.isRequired,\n selectedChannel: PropTypes.number,\n input: PropTypes.string,\n };\n mvpdSearchResults.defaultProps = {\n selectedChannel: null,\n input: null,\n };\n\n const needHelpTag = (\n <div key=\"need-help\" className={theme.helpLinkContainer}>\n {generateLinkTag(theme, _.get(window.ExternalConfig, 'auth.playerLinks.needHelp', null))}\n </div>\n );\n const mvpdSearchChildren = [needHelpTag];\n function mvpdSearchOnInputChange(event) {\n const value = _.get(event, 'target.value', '');\n this.setState({ input: value });\n }\n\n return {\n mvpdSearchTheme: theme,\n mvpdSearchInnerContainerChildren,\n mvpdSearchBackgroundClass: 'withBackground',\n mvpdSearchInput,\n mvpdSearchResults,\n mvpdSearchOnInputChange,\n mvpdSearchChildren,\n mvpdSearchOnClose: () => {\n let action = 'authentication_incomplete';\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n setTealiumSourceAuth(null);\n setTealiumProfileStartSource(null);\n let data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n error_message: 'auth flow aborted',\n platform_version: BUILD_VERSION,\n profile_start_source: undefined,\n sso_permission: 'not allowed',\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n optimizelyUserAttributeEvents().authState(ATTEMPTED_AUTH);\n action = 'authentication_select_provider';\n const onboardSrc = checkAuthStartSource(previewPassSignIn, previewPassExpired);\n const onboardingStartSource = onboardSrc;\n data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n mvpd_select_type: 'primary mvpd list',\n mvpd: 'no mvpd',\n onboarding_action: TealiumOnboardingActions.SKIP,\n onboarding_start_source: onboardingStartSource,\n platform_version: BUILD_VERSION,\n profile_start_source: undefined,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n if (onOverlayClose) onOverlayClose();\n },\n };\n}\n\nexport function getMVPDIframeProps({ theme, sharedTheme }) {\n const mvpdIframeInnerContainerChildren = ({ onClose }) => {\n const headerBarTag = (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n }}\n />\n </div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n onClose();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n return [headerBarTag];\n };\n return {\n mvpdIframeTheme: theme,\n mvpdIframeInnerContainerChildren,\n };\n}\n\nexport function getMVPDStartProps({\n accessToken,\n account,\n deviceId,\n onOverlayClose,\n previewPassExpired,\n previewPassSignIn,\n sharedTheme,\n showEmailForm,\n showUpsellProgressBar,\n theme,\n topMVPDProviders,\n}) {\n const { preauthorizedResources } = this.props;\n const profileId = _.get(account, 'profileId');\n const mvpdStartChildren = ({\n onProviderClick,\n onAllProvidersClick,\n onClose,\n selectedChannel,\n }) => (\n <MVPDStartProviders\n onProviderClick={onProviderClick}\n accessToken={accessToken}\n account={account}\n deviceId={deviceId}\n onClose={onClose}\n onOverlayClose={onOverlayClose}\n previewPassExpired={previewPassExpired}\n previewPassSignIn={previewPassSignIn}\n sharedTheme={sharedTheme}\n showEmailForm={showEmailForm}\n showUpsellProgressBar={showUpsellProgressBar}\n topMVPDProviders={topMVPDProviders}\n onAllProvidersClick={onAllProvidersClick}\n isLive={isLive}\n selectedChannel={selectedChannel}\n />\n );\n const mvpdStartInnerContainerChildren = ({ onClose }) => {\n const headerBarTag = (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n {showUpsellProgressBar && <UpsellProgressBar />}\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n onClose();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n return [headerBarTag];\n };\n\n return {\n mvpdStartTheme: theme,\n mvpdStartChildren,\n mvpdStartInnerContainerChildren,\n mvpdStartBackgroundClass: 'withBackground',\n mvpdStartOnClose: () => {\n const action = 'authentication_incomplete';\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n setTealiumSourceAuth(null);\n setTealiumProfileStartSource(null);\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n error_message: 'auth flow aborted',\n mvpd: 'no mvpd',\n platform_version: BUILD_VERSION,\n profile_start_source: undefined,\n sso_permission: 'not allowed',\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n optimizelyUserAttributeEvents().authState(ATTEMPTED_AUTH);\n if (onOverlayClose) onOverlayClose();\n },\n };\n}\n\nexport function getMVPDIncompleteProps({ theme }) {\n const {\n playback_mvpdAuthIncompleteHeader: headerText,\n playback_mvpdAuthIncompleteMessage: descriptionText,\n global_signInButton: signInButtonText,\n } = window.Language;\n\n const signInButton = buttonOnClick => (\n <button onClick={buttonOnClick} className={theme.mvpdIncompleteButton} type=\"button\">\n {signInButtonText}\n </button>\n );\n\n const headerTag = (\n <div key=\"mvpdIncompleteHeader\" className={theme.mvpdIncompleteHeading}>\n {headerText}\n </div>\n );\n\n const descriptionTag = (\n <div key=\"mvpdIncompleteDescription\" className={theme.mvpdIncompleteSubheading}>\n {descriptionText}\n </div>\n );\n\n const mvpdIncompleteChildren = buttonOnClick => [\n headerTag,\n descriptionTag,\n signInButton(buttonOnClick),\n ];\n\n return {\n mvpdIncompleteChildren,\n mvpdIncompleteTheme: theme,\n };\n}\n\nexport function getMVPDRetryProps({ sharedTheme, theme }) {\n const {\n mvpdSignIn_error: signInErrorText,\n mvpdSignIn_retry: retryText,\n mvpdSignIn_other: tryOtherProviderText,\n } = window.Language;\n const { preauthorizedResources } = this.props;\n const headerBarTag = onClose => (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n onClose();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n\n const tryAgainButton = buttonOnClick => (\n <button onClick={buttonOnClick} className={theme.mvpdRetryButton} type=\"button\">\n {retryText}\n </button>\n );\n\n const otherProviderButton = onClick => (\n <span onClick={onClick} className={theme.maybeLaterLink}>\n {tryOtherProviderText}\n </span>\n );\n\n const headerTag = (\n <div key=\"mvpdRetryHeader\" className={theme.mvpdRetryHeading}>\n {signInErrorText}\n </div>\n );\n\n const mvpdRetryChildren = ({ retryButtonClick, otherProviderClick, onCloseClick }) => {\n const content = (\n <div className={classNames(sharedTheme.content, theme.errorDetails)}>\n {headerTag}\n {tryAgainButton(retryButtonClick)}\n {otherProviderButton(otherProviderClick)}\n </div>\n );\n return [headerBarTag(onCloseClick), content];\n };\n\n return {\n mvpdRetryChildren,\n mvpdRetryTheme: theme,\n };\n}\n\nexport function getUpsellErrorProps({ onAuthCheckComplete, onOverlayClose, sharedTheme, theme }) {\n const { preauthorizedResources } = this.props;\n const upsellErrorOnClose = () => {\n if (onOverlayClose) onOverlayClose();\n if (onAuthCheckComplete) onAuthCheckComplete({ complete: true, success: true });\n };\n\n const upsellErrorChildren = ({ onClick, upsellConfirmClicked }) => {\n const {\n auth_ineligibleHeader: headerTextIneligible,\n auth_ineligibleMessage: descriptionTextIneligible,\n authFailedContinueButton: buttonTextIneligible,\n auth_confirmSubscriptionErrorHeader: headerTextConfirmError,\n auth_confirmSubscriptionErrorMessage: descriptionTextConfirmError,\n auth_confirmSubscriptionProviderCTA: buttonTextConfirmError,\n } = window.Language;\n\n let headerText;\n let descriptionText;\n let buttonText;\n\n if (upsellConfirmClicked) {\n headerText = headerTextConfirmError;\n descriptionText = descriptionTextConfirmError;\n buttonText = buttonTextConfirmError;\n } else {\n headerText = headerTextIneligible;\n descriptionText = descriptionTextIneligible;\n buttonText = buttonTextIneligible;\n }\n\n const headerTextTag = (\n <div key=\"header-text\" className={classNames(sharedTheme.headerText, theme.headerText)}>\n {headerText}\n </div>\n );\n\n const descriptionTextTag = (\n <div\n key=\"description-text\"\n className={classNames(sharedTheme.descriptionText, theme.descriptionText)}\n >\n {helperMarkdownToComponent(descriptionText)}\n </div>\n );\n\n const actionButtonTag = (\n <div\n key=\"confirm-button\"\n className={classNames(sharedTheme.confirmContainer, theme.confirmContainer)}\n >\n <button\n onClick={onClick}\n className={classNames(sharedTheme.confirm, theme.confirm)}\n type=\"button\"\n >\n <span>{buttonText}</span>\n </button>\n </div>\n );\n\n return [headerTextTag, descriptionTextTag, actionButtonTag];\n };\n\n const upsellErrorInnerContainerChildren = ({ onClose }) => {\n const headerBarTag = (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n onClose();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n return [headerBarTag];\n };\n return {\n upsellErrorTheme: theme,\n upsellErrorChildren,\n upsellErrorBackgroundClass: 'withBackground',\n upsellErrorInnerContainerChildren,\n upsellErrorOnClose,\n };\n}\n\nexport function getUpsellConfirmProps({ account, onOverlayClose, sharedTheme, theme, profileId }) {\n const { preauthorizedResources } = this.props;\n const upsellConfirmOnClose = () => {\n if (onOverlayClose) onOverlayClose();\n };\n\n const {\n auth_confirmSubscriptionHeader: headerText,\n auth_confirmSubscriptionMessage: descriptionText,\n auth_confirmSubscriptionButton: buttonText,\n } = window.Language;\n\n const upsellConfirmChildren = ({ onClick }) => {\n const upsellConfirmButtonClick = () => {\n onClick();\n const action = 'authentication_start';\n setTealiumProfileStartSource('other');\n const data = setTealiumProfileId(profileId, {\n action,\n dcg_profile_id: profileId,\n mvpd: 'no mvpd',\n onboarding_start_source: 'none',\n platform_version: BUILD_VERSION,\n profile_start_source: 'other',\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n };\n const headerTextTag = (\n <div key=\"header-text\" className={classNames(sharedTheme.headerText, theme.headerText)}>\n {headerText}\n </div>\n );\n\n const descriptionTextTag = (\n <div\n key=\"description-text\"\n className={classNames(sharedTheme.descriptionText, theme.descriptionText)}\n >\n {descriptionText}\n </div>\n );\n\n const actionButtonTag = (\n <div\n key=\"confirm-button\"\n className={classNames(sharedTheme.confirmContainer, theme.confirmContainer)}\n >\n <button\n onClick={upsellConfirmButtonClick}\n className={classNames(sharedTheme.confirm, theme.confirm)}\n type=\"button\"\n >\n <span>{buttonText}</span>\n </button>\n </div>\n );\n\n return [headerTextTag, descriptionTextTag, actionButtonTag];\n };\n\n const upsellConfirmInnerContainerChildren = ({ onClose }) => {\n const headerBarTag = (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n onClose();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n return [headerBarTag];\n };\n return {\n upsellConfirmTheme: theme,\n upsellConfirmChildren,\n upsellConfirmBackgroundClass: 'withBackground',\n upsellConfirmInnerContainerChildren,\n upsellConfirmOnClose,\n };\n}\n\nexport function getAdditionalAuthorizedNetworks() {\n const authNetworksConfig = _.get(window.ExternalConfig, 'auth.networks');\n const additionalAuthorizedNetworks = {};\n _.forOwn(authNetworksConfig, (networkInfo, network) => {\n if (networkInfo.additionalAuthorizedNetworks.length) {\n additionalAuthorizedNetworks[network] = networkInfo.additionalAuthorizedNetworks;\n }\n });\n return additionalAuthorizedNetworks;\n}\n\nexport const getProviderObjectFromList = (mvpdProvidersList, mvpdId) =>\n _.find(mvpdProvidersList, { adobePassId: mvpdId });\n\nexport function findProvider(mvpdProvidersList, account, mvpdId) {\n const providerObject = getProviderObjectFromList(mvpdProvidersList, mvpdId);\n if (isPreviewPass(mvpdId)) {\n // check if our cookie exists, if it does do nothing\n // if no cookie, set a cookie and call the started event\n const previewPassCookie = getCookie({ name: PREVIEW_PASS_COOKIE_NAME });\n const cookieMvpd = _.get(previewPassCookie, 'mvpd');\n const cookieAnalyticsStarted = _.get(previewPassCookie, TrackEvents.PREVIEW_PASS_STARTED);\n const isCookieProviderCurrent = cookieMvpd === mvpdId;\n if (!isCookieProviderCurrent && !cookieAnalyticsStarted) {\n const newPpCookie = {\n name: PREVIEW_PASS_COOKIE_NAME,\n value: {\n ...previewPassCookie,\n [TrackEvents.PREVIEW_PASS_STARTED]: true,\n },\n options: { path: '/' },\n };\n setCookie(newPpCookie);\n const profileId = _.get(account, 'profileId');\n const previewPassEvents = getPreviewPassAnalyticsEvents({\n previewPassLength: getPreviewPassLengthFromName(mvpdId),\n profileId,\n });\n const onPreviewPassStarted = _.get(\n previewPassEvents,\n TrackEvents.PREVIEW_PASS_STARTED,\n _.noop,\n );\n onPreviewPassStarted();\n }\n }\n return providerObject;\n}\n\nexport function getDefaultAuthProps({ account, previewPassExpired, previewPassSignIn }) {\n const {\n pcs_contentRestrictedTitle: ratingHeader,\n pcs_contentRestrictedMessage: ratingBody,\n auth_noEntitlements: contentHeader,\n auth_limitedAccessMessage: authLimitedAccessMessage,\n auth_failedMessage: authFailedMessage,\n error_generic: genericError,\n nfl_restrictedMessage_subText: noSportsOnMobileErrorHeader,\n nfl_restrictedMessage_detailText: noSportsOnMobileErrorBody,\n } = window.Language;\n const { provider, authorizingNetwork } = this.props;\n let mvpdBlackoutMessage;\n\n if (provider && authorizingNetwork) {\n mvpdBlackoutMessage = `${authorizingNetwork.toUpperCase()} is no longer available. Please contact your TV provider, ${\n provider.name\n }, for more information.`;\n }\n\n const authZErrorMapping = {\n 403: {\n 1000: { header: authLimitedAccessMessage, body: '' },\n 1002: { header: ratingBody, body: '' },\n 1003: { header: ratingBody, body: '' },\n 1005: { header: authFailedMessage, body: '' },\n 1007: { header: mvpdBlackoutMessage, body: '' },\n },\n default: { header: genericError, body: '' },\n };\n\n const {\n auth: { networks },\n } = window.ExternalConfig;\n const additionalAuthorizedNetworks = getAdditionalAuthorizedNetworks();\n const onAuthFailure = ({ err }) => {\n const profileId = _.get(account, 'profileId');\n const action = 'authentication_incomplete';\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n setTealiumSourceAuth(null);\n setTealiumProfileStartSource(null);\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n error_message: err,\n mvpd: 'no mvpd',\n network_entitlement_list: '',\n profile_start_source: undefined,\n sso_permission: 'not allowed',\n platform_version: BUILD_VERSION,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n optimizelyUserAttributeEvents().authState(ATTEMPTED_AUTH);\n };\n\n const onAuthSuccess = ({ provider, entitlements = null, providerClick = false }) => {\n const profileId = _.get(account, 'profileId');\n const action = 'authentication_complete';\n const onboardSrc = checkAuthStartSource(previewPassSignIn, previewPassExpired);\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n const networkEntitlements = !_.isEmpty(entitlements)\n ? entitlements.sort().join()\n : 'no entitlements';\n const mvpd = _.get(provider, 'MVPD', 'no mvpd');\n const onboardingStartSource = onboardSrc;\n setTealiumSourceAuth(null);\n setTealiumProfileStartSource(null);\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n authentication_complete_type: 'direct authentication',\n dcg_profile_id: profileId,\n mvpd,\n network_entitlement_list: networkEntitlements,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n onboarding_start_source: onboardingStartSource,\n platform_version: BUILD_VERSION,\n profile_start_source: undefined,\n sso_permission: 'not allowed',\n ...getCommonTealiumProps(),\n });\n const isPreviewPassLogin = isPreviewPass(mvpd);\n if (isPreviewPassLogin) {\n const previewPassLength = mvpd === PREVIEW_PASS_60 ? 60 : 5;\n getSegmentMVPDEvents().previewPassStarted({\n page_preview_pass_length: previewPassLength,\n });\n } else {\n optimizelyUserAttributeEvents().authState(SUCCESS_AUTH);\n }\n if (providerClick) {\n // Only fire events upon original authentication\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n getSegmentAuthTrackEvents().authSuccess();\n }\n };\n\n return {\n onAuthFailure,\n onAuthSuccess,\n contentNoAuthZText: {\n header: contentHeader,\n body: '',\n },\n ratingNoAuthZText: { header: ratingHeader, body: ratingBody },\n noSportsText: { header: noSportsOnMobileErrorHeader, body: noSportsOnMobileErrorBody },\n additionalAuthorizedNetworks,\n authNetworks: networks,\n authZErrorMapping,\n };\n}\n\nexport function getMVPDUpsellRedirectingProps({ sharedTheme, theme, onOverlayClose }) {\n const { preauthorizedResources } = this.props;\n const {\n auth_redirectHeader: headerText,\n auth_redirectMessage: messageText,\n auth_redirectCTA: buttonText,\n } = window.Language;\n\n const headerBarTag = ({ onClose }) => (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n <button\n aria-label=\"close\"\n key=\"close\"\n onClick={() => {\n onClose();\n }}\n className={sharedTheme.close}\n type=\"button\"\n />\n </div>\n </div>\n );\n\n headerBarTag.propTypes = {\n onClose: PropTypes.func.isRequired,\n };\n\n const headerTag = ({ onConfirm }) => (\n <div key=\"header-text\" className={classNames(sharedTheme.content, theme.content)}>\n <div className={classNames(sharedTheme.headerText, theme.headerText)}>\n {headerText}\n <div className={classNames(sharedTheme.descriptionText, theme.descriptionText)}>\n {messageText}\n </div>\n <div\n key=\"confirm-button\"\n className={classNames(sharedTheme.confirmContainer, theme.confirmContainer)}\n >\n <button\n onClick={onConfirm}\n className={classNames(sharedTheme.confirm, theme.confirm)}\n type=\"button\"\n >\n <span>{buttonText}</span>\n </button>\n </div>\n </div>\n </div>\n );\n\n const redirectingOnClose = () => {\n if (onOverlayClose) onOverlayClose();\n };\n\n const innerContainerChildren = ({ onClose, onConfirm }) => [\n headerBarTag({ onClose }),\n headerTag({ onConfirm }),\n ];\n\n return {\n redirectingBackgroundClass: 'withBackground',\n redirectingInnerContainerChildren: innerContainerChildren,\n redirectingOnClose,\n redirectingTheme: theme,\n };\n}\n\nexport async function getDesignatedMarketingAreaData(options) {\n return new Promise(async (resolve, reject) => {\n try {\n const { deviceId, zipCode } = options;\n if (!zipCode) throw new Error('zip code must be provided');\n const endpointPathKey = 'dmaService';\n const route = helperGetApiRouteById(endpointPathKey, zipCode, '{zipCode}');\n const headers = helperGetApiHeaders({ pathKey: endpointPathKey, deviceId });\n const designatedMarketingAreaResponse = await axios\n .get(route, headers)\n .catch(axiosErrorHandler);\n const designatedMarketingAreaData = _.get(designatedMarketingAreaResponse, 'data.member', []);\n resolve(designatedMarketingAreaData);\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport const getPreviewPassTime = () => {\n if (!previewPassEnabled()) return 0;\n const cookie = getMVPDCookie();\n return _.get(cookie, 'authn_expire', 0);\n};\n\nexport const getMVPDExpireTime = () => {\n const cookie = getMVPDCookie();\n return _.get(cookie, 'authn_expire', 0);\n};\n\nexport function getMvpdDirectSignInRedirectProps({ onOverlayClose, sharedTheme, theme }) {\n const { preauthorizedResources } = this.props;\n const mvpdDirectSignInChildren = ({ onUpgradeClick }) => {\n const {\n auth_mvpdRedirctHeader: headerText,\n auth_mvpdRedirctMessage: descriptionText,\n auth_mvpdRedirctCTA: primaryButtonText,\n auth_mvpdRedirctSignIn: secondaryButtonText,\n } = window.Language;\n\n const iconTag = (\n <div key=\"header-icon\">\n <Icon color=\"white\" icon=\"checkmark-circle\" theme={theme} viewBox=\"0 0 71 71\" />\n </div>\n );\n\n const headerTextTag = (\n <div key=\"header-text\" className={classNames(sharedTheme.headerText, theme.headerText)}>\n {headerText}\n </div>\n );\n\n const descriptionTextTag = (\n <div\n key=\"description-text\"\n className={classNames(sharedTheme.descriptionText, theme.descriptionText)}\n >\n {helperMarkdownToComponent(descriptionText)}\n </div>\n );\n\n const actionButtonTag = (\n <div\n key=\"redirect-buttons\"\n className={classNames(sharedTheme.confirmContainer, theme.buttonContainer)}\n >\n <button\n onClick={onUpgradeClick}\n className={classNames(sharedTheme.confirm, theme.primaryButton)}\n type=\"button\"\n >\n {primaryButtonText}\n </button>\n <button\n onClick={goToExternalSignIn}\n className={classNames(sharedTheme.confirm, theme.secondaryButton)}\n type=\"button\"\n >\n {secondaryButtonText}\n </button>\n </div>\n );\n\n return [iconTag, headerTextTag, descriptionTextTag, actionButtonTag];\n };\n\n const mvpdDirectSignInInnerContainerChildren = () => {\n const headerBarTag = (\n <div key=\"header-bar\" className={sharedTheme.headerBarExtraPadding}>\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={sharedTheme.headerLogo}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n if (onOverlayClose) onOverlayClose();\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n </div>\n </div>\n );\n return [headerBarTag];\n };\n return {\n mvpdDirectSignInTheme: theme,\n mvpdDirectSignInChildren,\n mvpdDirectSignInBackgroundClass: 'withBackground',\n mvpdDirectSignInInnerContainerChildren,\n };\n}\n\nexport async function previewPassLogout() {\n const {\n accessToken,\n deviceId,\n setAuthorizationToken,\n setMVPDLogoutDataToAppState,\n setMVPDToAppState,\n } = this.props;\n\n const mvpdCookie = getMVPDCookie();\n\n let logoutResponse;\n const logoutOptions = {\n ...getDefaultClientlessOptions(),\n setMVPDToAppState,\n setMVPDLogoutDataToAppState,\n accessToken: mvpdCookie?.accessToken || accessToken,\n deviceId,\n };\n if (mvpdCookie?.accessToken || accessToken) {\n logoutResponse = await helperAuthLogoutClientless(logoutOptions);\n if (logoutResponse) {\n const { accessToken: logoutAccessToken } = logoutResponse;\n removeMVPDCookie({ options: { path: '/' } });\n setAuthorizationToken(logoutAccessToken);\n }\n }\n\n return logoutResponse;\n}\n\nexport async function authMVPDLogout() {\n const {\n accessToken,\n deviceId,\n setAuthorizationToken,\n setMVPDLogoutDataToAppState,\n setMVPDToAppState,\n } = this.props;\n\n const mvpdCookie = getMVPDCookie();\n\n const logoutOptions = {\n ...getDefaultClientlessOptions(),\n setMVPDToAppState,\n setMVPDLogoutDataToAppState,\n accessToken: mvpdCookie?.accessToken || accessToken,\n deviceId,\n };\n\n let logoutResponse;\n\n try {\n logoutResponse = await helperAuthLogoutClientless(logoutOptions);\n if (logoutResponse) {\n const { accessToken: logoutAccessToken } = logoutResponse;\n logoutOptions.accessToken = logoutAccessToken;\n const MVPDEvents = getSegmentMVPDEvents();\n MVPDEvents.authenticationLoggedOut();\n removeCookie({ key: BUYTHROUGH_DATA_COOKIE_NAME, options: { path: '/' } });\n removeMVPDCookie({ options: { path: '/' } });\n removeCookie({ key: SUCCESS_COOKIE_NAME, options: { path: '/' } });\n this.setState({ providerSet: false, mvpd: null, mvpdLogoutData: logoutResponse });\n setCookie({ name: MVPD_MANUAL_LOGOUT, value: true, options: { path: '/' } });\n optimizelyUserAttributeEvents().authState(SIGN_OUT_SUCCESS_AUTH);\n if (logoutAccessToken) {\n setAuthorizationToken(logoutAccessToken);\n }\n }\n\n refreshPage();\n } catch (error) {\n optimizelyUserAttributeEvents().authState(SIGN_OUT_ATTEMPTED_AUTH);\n }\n}\n\n// TODO: authMVPDLogoutV2 is a duplicate of authMVPDLogout to be used in Functional Components.\nexport async function authMVPDLogoutV2(\n { accessToken, deviceId, setAuthorizationToken, setMVPDLogoutDataToAppState, setMVPDToAppState },\n callback,\n) {\n const mvpdCookie = getMVPDCookie();\n const logoutOptions = {\n ...getDefaultClientlessOptions(),\n setMVPDToAppState,\n setMVPDLogoutDataToAppState,\n accessToken: mvpdCookie?.accessToken || accessToken,\n deviceId,\n };\n let logoutResponse;\n try {\n logoutResponse = await helperAuthLogoutClientless(logoutOptions);\n if (logoutResponse) {\n const { accessToken: logoutAccessToken } = logoutResponse;\n logoutOptions.accessToken = logoutAccessToken;\n const MVPDEvents = getSegmentMVPDEvents();\n MVPDEvents.authenticationLoggedOut();\n removeCookie({ key: BUYTHROUGH_DATA_COOKIE_NAME, options: { path: '/' } });\n removeMVPDCookie({ options: { path: '/' } });\n removeCookie({ key: SUCCESS_COOKIE_NAME, options: { path: '/' } });\n setCookie({ name: MVPD_MANUAL_LOGOUT, value: true, options: { path: '/' } });\n if (callback) {\n callback();\n }\n optimizelyUserAttributeEvents().authState(SIGN_OUT_SUCCESS_AUTH);\n if (logoutAccessToken) {\n setAuthorizationToken(logoutAccessToken);\n }\n }\n refreshPage();\n } catch (error) {\n optimizelyUserAttributeEvents().authState(SIGN_OUT_ATTEMPTED_AUTH);\n }\n}\n\nexport const getDmaFromVideo = video => {\n const dma = _.get(video, 'trackingData.context.location.dma', null);\n return dma === '999' ? null : dma;\n};\n\nexport function setIsGoogleAutoSignIn(value) {\n setSessionStorageItem({ key: GOOGLE_AUTO_SIGN_IN, value });\n}\n\nexport function getIsGoogleAutoSignIn() {\n const value = getSessionStorageItem({ key: GOOGLE_AUTO_SIGN_IN });\n if (!value) return true;\n return JSON.parse(value);\n}\n\nexport function setPreviewPassExpired(value) {\n setSessionStorageItem({ key: PREVIEW_PASS_EXPIRED, value });\n}\n\nfunction getPreviewPassExpired() {\n const value = getSessionStorageItem({ key: PREVIEW_PASS_EXPIRED });\n if (!value) return value;\n return JSON.parse(value);\n}\n\nexport const isPreviewPassAvailable = () => {\n const mvpd = getMVPDFromCookie();\n const isExpired = getPreviewPassExpired();\n\n if (!mvpd || isExpired) {\n return false;\n }\n\n return true;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Style from './Geolocation.module.scss';\n\nconst supportUrl = _.get(window.ExternalConfig, 'support.url');\n\nconst Geolocation = props => {\n const {\n headerText,\n bodyText,\n linkText,\n actionButtonText,\n primaryActionCallback,\n geoLocationTimeoutFail,\n url,\n } = props;\n const actionButton = primaryActionCallback ? (\n <button\n onClick={() => {\n primaryActionCallback();\n }}\n className={Style.primaryAction}\n type=\"button\"\n >\n {actionButtonText}\n </button>\n ) : null;\n\n const bodyClass = geoLocationTimeoutFail ? Style.failBodyText : Style.bodyText;\n\n return (\n <div className={classNames([Style.errorContainer, Style.location])}>\n <div className={Style.headerText}>{headerText}</div>\n <div className={bodyClass}>{bodyText}</div>\n <div className={Style.actions}>{actionButton}</div>\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={Style.issues}\n type=\"button\"\n >\n {linkText}\n </a>\n </div>\n );\n};\n\nexport default Geolocation;\n\nGeolocation.defaultProps = {\n actionButtonText: '',\n bodyText: '',\n geoLocationTimeoutFail: false,\n headerText: '',\n linkText: '',\n primaryActionCallback: () => {},\n url: supportUrl,\n};\n\nGeolocation.propTypes = {\n actionButtonText: PropTypes.string,\n bodyText: PropTypes.string,\n geoLocationTimeoutFail: PropTypes.bool,\n headerText: PropTypes.string,\n linkText: PropTypes.string,\n primaryActionCallback: PropTypes.func,\n url: PropTypes.string,\n};\n","/* global SearchVideosEnabled NODE_ENV */\n\n/* eslint-disable import/prefer-default-export, import/no-unused-modules */\nimport _ from 'lodash';\nimport Regex from 'helpers/Regex';\nimport { SITE_PLATFORM_MOBILE, SITE_PLATFORM_TABLET } from 'helpers/BreakpointHelper';\nimport { isPreviewPass } from 'helpers/PlayerHelper';\nimport { getMVPDCookie, isClip } from 'helpers/ContentHelper';\nimport { getLocalStorageItem, setLocalStorageItem, getCookie, removeCookie } from 'helpers/Storage';\nimport { tveEnabled, isNationEntitled } from './ConfigHelper';\nimport { MVPD_MANUAL_LOGOUT } from './AuthHelper';\n\n/* User Attributes */\nconst APP_SECTION_VISITED = 'app_section_visited';\nconst COLLECTION_VISITED = 'collection_visited';\nconst CURRENT_PAGE_URL = 'current_page_url';\nconst AUTH_STATE = 'authentication_state';\nconst FOX_PROFILE_STATE = 'fox_profile_state';\nconst FIRST_SITE_VISIT = 'is_first_visit';\nconst NUM_VISITS = 'num_visits';\nconst VIDEO_50_PERCENT_WATCHING = '50_percent_watching';\n\n// Auth States\nconst NOT_AUTHED = 'never attempted';\nexport const ATTEMPTED_AUTH = 'authentication attempted';\nexport const SUCCESS_AUTH = 'authentication successful';\nexport const SIGN_OUT_ATTEMPTED_AUTH = 'sign out attempted';\nexport const SIGN_OUT_SUCCESS_AUTH = 'manually signed out';\nexport const AUTH_EXPIRED = 'automatically signed out';\n// Fox Profile States\nconst FP_NEVER_ATTEMPTED = 'never attempted';\n\n// local storage\nconst PERCENT_WATCHING = 'PERCENT_WATCHING';\nconst APP_VISITED = 'APP_VISITED';\nconst FP_STATE = 'FP_STATE';\nconst LOGGED_OUT_AUTH = 'LOGGED_OUT_AUTH';\n\n/**\n * Activate optimizely experiment(s)\n * If no param provided it manually activates all optimizely experiments\n * WARNING: The experiment must be in Manual mode for activating all to work!\n * @param {Array} [keys] - experiment ids\n */\n\nexport const activateOptimizely = keys => {\n window.optimizely = window.optimizely || [];\n\n if (keys) {\n keys.forEach(key => {\n window.optimizely.push(['activate', key]);\n });\n } else {\n const experiments = _.get(window, 'optimizely.data.state.activeExperiments', []);\n experiments.forEach(experimentId => {\n window.optimizely.push(['activate', experimentId]);\n });\n }\n};\n\nexport const getOptimizely = () => _.get(window, 'optimizely');\nexport const getOptimizelyExperiment = experimentName => _.get(window, experimentName, null);\nconst getOptimizelyBehavior = () => _.get(getOptimizely(), 'get', _.noop)('behavior');\nexport const getOptimizelyPlayerExperiments = () => _.get(window, 'playerABTest');\nexport const getOptimizelyPreviewPassExperiments = () =>\n _.get(window, 'previewPassExperiments', {});\nexport const getOptimizelyRedesignExperiments = () => _.get(window, 'redesignExperiments', {});\nexport const getOptimizelyRedesignDisabledPages = () =>\n _.get(getOptimizelyRedesignExperiments(), 'disabledPages', []);\n\nexport const getOptimizelyFakeCollectionData = () =>\n _.get(window, 'optimizelyFakeCollectionData', {});\nexport const getOptimizelyNationFooterUpsell = () => _.get(window, 'optimizelyRenderFooterUpsell');\nexport const getOptimizelyRedesignCollections = () =>\n _.get(window, 'optimizelyRedesignCollections', false);\nexport const getOptimizelyResultsOverrideEnabled = () => window?.optimizelyResultsOverride;\nexport const getOptimizelySearchVideoEnabled = () =>\n typeof window.searchVideosEnabled !== 'undefined'\n ? window.searchVideosEnabled\n : SearchVideosEnabled;\n\nexport const triggerWatchInitVariables = (videoFormat, showCode, videoType, network) => {\n window.video_content_type = videoFormat;\n window.video_series_id = showCode;\n window.video_content_length_format = isClip(videoType) ? 'short-form' : 'long-form';\n window.video_network = network;\n window.optimizely = window?.optimizely || [];\n window.optimizely.push({\n type: 'page',\n pageName: 'watch_page_with_window_init_variables',\n tags: {\n page_url: window.location.href,\n page_title: document.title,\n video_content_type: window.video_content_type,\n video_series_id: window.video_series_id,\n video_content_length_format: window.video_content_length_format,\n video_network: window.video_network,\n },\n });\n};\n\nexport const deactivateWatchInitVariables = () => {\n if (window?.video_content_type) window.video_content_type = null;\n if (window?.video_series_id) window.video_series_id = null;\n if (window?.video_content_length_format) window.video_content_length_format = null;\n if (window?.video_network) window.video_network = null;\n};\n\n/*\n * Optimizely User Attributes\n * Variables added to window to allow access in the Optimizely dashboard\n */\n\nconst setUserAttributes = ({ name, value }) => {\n window.optimizely = window.optimizely || [];\n // Default attribute value to true, but allow for false values if explicitly provided\n const attributeValue = value === false ? value : value || true;\n const attrData = {\n type: 'user',\n attributes: { [name]: attributeValue },\n };\n window.optimizely.push(attrData);\n};\n\nexport const getSdkUserAttributes = ({ breakpoint, seriesId = '' }) => {\n let deviceType = '';\n switch (breakpoint) {\n case SITE_PLATFORM_TABLET:\n deviceType = 'tablet';\n break;\n case SITE_PLATFORM_MOBILE:\n deviceType = 'mobile';\n break;\n default:\n deviceType = 'desktop';\n break;\n }\n return {\n page_url: window.location.href,\n series_id: seriesId,\n is_debug_build: NODE_ENV !== 'production',\n is_trialist_subscriber: !!isNationEntitled(),\n device_type: deviceType,\n browser_name_version: window.navigator.userAgent,\n user_cookies: document.cookie,\n };\n};\n\nexport const userAttributeEvents = () => ({\n home: () => {\n setUserAttributes({ name: `${APP_SECTION_VISITED}_home` });\n },\n // Browse Event is for both home & movies pages\n browse: () => {\n setUserAttributes({ name: `${APP_SECTION_VISITED}_browse` });\n },\n currentPageUrl: () => {\n const url = window.location.href;\n setUserAttributes({ name: CURRENT_PAGE_URL, value: url });\n },\n live: () => {\n setUserAttributes({ name: `${APP_SECTION_VISITED}_live_tv` });\n },\n settings: () => {\n setUserAttributes({ name: `${APP_SECTION_VISITED}_settings` });\n },\n collectionItem: collectionName => {\n const formattedName = collectionName.toLowerCase().replace(/[^a-zA-Z0-9_\\s]/g, '');\n const apiName = formattedName.replace(Regex.SPACE, '_');\n setUserAttributes({ name: `${COLLECTION_VISITED}_${apiName}` });\n },\n foxProfileState: profileState => {\n if (profileState === FP_NEVER_ATTEMPTED || !profileState) {\n const lastState = getLocalStorageItem({ key: FP_STATE });\n if (lastState) {\n setUserAttributes({\n name: FOX_PROFILE_STATE,\n value: lastState,\n });\n return setLocalStorageItem({ key: FP_STATE, value: profileState });\n }\n }\n setUserAttributes({\n name: FOX_PROFILE_STATE,\n value: profileState,\n });\n return setLocalStorageItem({ key: FP_STATE, value: profileState });\n },\n authState: authState => {\n if (authState === SUCCESS_AUTH) {\n removeCookie({ key: MVPD_MANUAL_LOGOUT, options: { path: '/' } });\n setLocalStorageItem({ key: LOGGED_OUT_AUTH, value: false });\n }\n if (authState === SIGN_OUT_SUCCESS_AUTH)\n setLocalStorageItem({ key: LOGGED_OUT_AUTH, value: true });\n if (authState === NOT_AUTHED && getLocalStorageItem({ key: LOGGED_OUT_AUTH })) {\n const manualLogout = getCookie({ name: MVPD_MANUAL_LOGOUT });\n const value = !manualLogout ? AUTH_EXPIRED : SIGN_OUT_SUCCESS_AUTH;\n return setUserAttributes({ name: AUTH_STATE, value });\n }\n return setUserAttributes({ name: AUTH_STATE, value: authState });\n },\n appVisitState: () => {\n const appVisited = getLocalStorageItem({ key: APP_VISITED });\n setLocalStorageItem({ key: APP_VISITED, value: true });\n return setUserAttributes({ name: FIRST_SITE_VISIT, value: !appVisited });\n },\n numVisits: () => {\n const numVisits = _.get(\n getOptimizelyBehavior(),\n 'query',\n _.noop,\n )({\n version: '0.2',\n filter: [\n {\n field: ['type'],\n value: 'pageview',\n },\n {\n field: ['name'],\n value: 'all_nation_pages',\n comparator: 'eq',\n },\n ],\n });\n const sessionIndex = _.get(numVisits, '0.session_index', -1) + 1;\n if (sessionIndex > 0) {\n return setUserAttributes({ name: NUM_VISITS, value: sessionIndex });\n }\n return null;\n },\n video50PercentWatching: (hasWatched50Percent = false) => {\n const stored50PercentWatched = getLocalStorageItem({ key: PERCENT_WATCHING });\n if (stored50PercentWatched) {\n return setUserAttributes({ name: VIDEO_50_PERCENT_WATCHING, value: true });\n }\n if (hasWatched50Percent) {\n setLocalStorageItem({ key: PERCENT_WATCHING, value: true });\n return setUserAttributes({ name: VIDEO_50_PERCENT_WATCHING, value: true });\n }\n return setUserAttributes({ name: VIDEO_50_PERCENT_WATCHING, value: false });\n },\n});\n\n/**\n * Sets user attributes for Optimizely on app load\n * @param {Boolean} isAuthenticated - user authentication status\n * @param {Boolean} foxProfileAccount - user is logged into fox profile account\n */\n\nexport const setInitOptimizelyAttributes = (isAuthenticated, foxProfileAccount) => {\n userAttributeEvents().appVisitState();\n userAttributeEvents().currentPageUrl();\n\n const mvpdCookie = getMVPDCookie();\n const mvpdName = _.get(mvpdCookie, 'mvpd');\n const isPreviewPassMVPD = isPreviewPass(mvpdName);\n if (isAuthenticated && !isPreviewPassMVPD) {\n userAttributeEvents().authState(SUCCESS_AUTH);\n } else {\n userAttributeEvents().authState(NOT_AUTHED);\n }\n if (foxProfileAccount) {\n userAttributeEvents().foxProfileState();\n } else {\n userAttributeEvents().foxProfileState(FP_NEVER_ATTEMPTED);\n }\n};\n\n/*\n * Optimizely Experiment Helpers\n * Variables added to window to allow access in the Optimizely dashboard\n */\n\nexport const modifyBreakpoints = (breakpoints, screen) => {\n if (window.modifyBreakpoints && window.newBreakpoints) {\n const screenBreakpoints = _.get(window.newBreakpoints, screen, false);\n if (screenBreakpoints) {\n return _.merge(breakpoints, screenBreakpoints);\n }\n }\n return breakpoints;\n};\n\nexport const modifyTileImage = () => {\n let currentScreen = window.location.pathname.replace(/\\//g, '');\n currentScreen = currentScreen || 'home';\n\n const modifyTileImages = _.get(window, 'modifyTileImages', null);\n const modifiedScreen = _.get(modifyTileImages, currentScreen, null);\n const modifiedImageType = _.get(modifiedScreen, 'imageType', null);\n\n if (modifyTileImages && modifiedScreen && modifiedImageType) {\n return modifiedImageType;\n }\n return null;\n};\n\nexport const replaceScreenUrl = (pathKey, screenName) => {\n if (window.modifyScreenUrl) {\n return window.modifyScreenUrl(pathKey, screenName);\n }\n return false;\n};\n\nexport const showShowsTileCTAs = () => !!window.modifyShowsPageTiles;\nexport const modifyShowsPageTileCTAS = () => _.get(window, 'modifyShowsPageTiles.watchText', false);\n\nexport const useMVPDLoginProfile = () => {\n if (tveEnabled()) return _.get(window, 'optimizelyUseMVPDLoginProfile', false);\n return false;\n};\n\nexport const optimizelyLanguageStrings = () => _.get(window, 'optimizelyLanguageStrings', {});\n\nexport const getOptimizelyUnlockedVideoPage = () => {\n const exemptValue = _.get(window, 'expmt_unlocked_video_page', null);\n return exemptValue === 'treatment';\n};\n\nexport const getOptimizelyRemovedSeries = seriesName => {\n const isValidSeries = _.get(window, 'check_optimizely_removed_series', () => true);\n return isValidSeries(seriesName);\n};\n","import _ from 'lodash';\nimport {\n concatToUrl,\n DEBUG_PANEL_CITY_LAT,\n DEBUG_PANEL_CITY_LONG,\n sportsFeatures,\n} from 'helpers/ContentHelper';\nimport { marineAPIKeyEnabled, previewModeEnabled } from 'helpers/ConfigHelper';\nimport { getCookie } from 'helpers/Storage';\nimport { getUserDevice } from 'helpers/BreakpointHelper';\nimport { isTestEnvironment } from 'helpers/TestHelper';\nimport { getLocationCookies } from 'helpers/GeoLocationHelper';\nimport { logError } from 'helpers/LogReportHelpers';\nimport { replaceScreenUrl as OptimizelyReplaceScreenUrl } from './OptimizelyHelper';\n\nfunction baseContentUrl() {\n const overrideBaseName = getCookie({ name: 'DEBUG_PANEL_API_BASEURL' });\n const overrideBaseUrl = _.get(window.ExternalConfig.api, `content.baseUrls.${overrideBaseName}`);\n const defaultBase = _.get(window.ExternalConfig, 'api.content.baseUrls.default');\n const tomatoBase = _.get(window.ExternalConfig, 'api.content.baseUrls.Tomato');\n\n function baseUrl() {\n return overrideBaseUrl || tomatoBase || defaultBase;\n }\n return baseUrl;\n}\n\nexport const getBaseContentUrl = baseContentUrl();\n\nconst getNetworksParam = () => null;\nconst getPremiumPackageParam = () => null;\n\nconst getGeoLatLongParams = () => {\n const latitude = getCookie({ name: DEBUG_PANEL_CITY_LAT });\n const longitude = getCookie({ name: DEBUG_PANEL_CITY_LONG });\n const { latitude: geoCookieLatitude, longitude: geoCookieLongitude } = getLocationCookies() || {};\n\n const debugLocationAvailable = latitude && longitude;\n const geoCookieLocationAvailable = geoCookieLatitude && geoCookieLongitude;\n const locationCoordinatesAvailable = debugLocationAvailable || geoCookieLocationAvailable;\n\n if (!locationCoordinatesAvailable) return null;\n\n if (debugLocationAvailable) {\n return `geoLatitude=${latitude}&geoLongitude=${longitude}`;\n }\n return `geoLatitude=${geoCookieLatitude}&geoLongitude=${geoCookieLongitude}`;\n};\n\nconst helperAddParams = apiURL => {\n const networks = getNetworksParam();\n const geoLatLong = getGeoLatLongParams();\n const premiumPackage = getPremiumPackageParam();\n const params = [networks, geoLatLong, premiumPackage];\n const queryString = params.filter(i => i).join('&');\n const apiURLParts = _.split(apiURL, '?');\n const paramsPreExist = apiURLParts.length >= 2;\n\n if (!queryString) return apiURL;\n if (paramsPreExist) return `${apiURLParts[0]}?${queryString}&${apiURLParts[1]}`;\n return `${apiURL}?${queryString}`;\n};\n\n/**\n * Return an Api Key imported from the external config\n * @return {String} - API Key of a given Environment/Platform\n */\nexport const helperGetApiKey = () => {\n const userDevice = getUserDevice();\n const defaultKey = _.get(window.ExternalConfig, 'api.keys.desktop');\n const deviceKey = _.get(window.ExternalConfig, `api.keys.${userDevice}`, defaultKey);\n const overrideKey =\n marineAPIKeyEnabled() && _.get(window.ExternalConfig, `api.marine.${userDevice}`);\n const apiKey = overrideKey || deviceKey;\n\n return apiKey;\n};\n\n/**\n * Return an Api Key imported from the external config\n * @return {String} - API Key of a given Environment/Platform\n */\nconst helperGetStubsApiKey = () => window.ExternalConfig.api.contentStub.key;\n\n/**\n * Return Api Headers for the given call, based on the content of the external config\n * @param {Object} opts\n * @param {String} pathKey - Relative path for the API call\n * @param {String} accessToken - header accessToken for the API call\n * @param {String} apiKey - header apiKey for the API call\n * @return {Object} - API Key of a given Environment/Platform\n */\nexport const helperGetApiHeaders = ({ pathKey, accessToken, apiKey, deviceId, segmentId } = {}) => {\n const inStatic = _.get(window.ExternalConfig, `api.static.${pathKey}`);\n const inStubs =\n _.get(window.ExternalConfig, `api.contentStub.endpoints.${pathKey}`) && sportsFeatures();\n const apiKeyHeaderName = 'x-api-key';\n const accessTokenHeaderName = 'Authorization';\n const skipApiKey =\n !{}.hasOwnProperty.call(window.ExternalConfig.api.content, pathKey) && inStatic && !inStubs;\n let headers = {};\n if (skipApiKey) return null;\n if (inStubs) {\n headers = { [apiKeyHeaderName]: helperGetStubsApiKey() };\n } else {\n headers = { [apiKeyHeaderName]: helperGetApiKey() };\n }\n if (previewModeEnabled()) headers['x-dcg-publish-state'] = 'preview';\n if (accessToken) headers[accessTokenHeaderName] = `Bearer ${accessToken}`;\n if (apiKey) headers[apiKeyHeaderName] = apiKey;\n if (deviceId) headers['x-dcg-udid'] = deviceId;\n if (segmentId) headers['x-dcg-segment-id'] = segmentId;\n\n return { headers };\n};\n\nexport const helperAppendToUrl = ({ url, network, dateRange, coordinates }) => {\n const lat = _.get(coordinates, 'latitude', null);\n const lng = _.get(coordinates, 'longitude', null);\n\n let newUrl = url;\n if (network) newUrl = concatToUrl(newUrl, `network=${network}`);\n if (dateRange) newUrl = concatToUrl(newUrl, `dateRange=${dateRange}`);\n if (lat && lng) newUrl = concatToUrl(newUrl, `geoLatitude=${lat}&geoLongitude=${lng}`);\n\n return newUrl;\n};\n\nexport const helperConvertPathToApiRoute = (path, coordinates) =>\n helperAppendToUrl({ url: `${getBaseContentUrl()}${path}`, coordinates });\n\n/**\n * Return the full Api URL based on the path provided\n * @param {String} pathKey - Relative path for the API call\n * @return {String} - Absolute path for the API call\n */\nexport const helperGetApiRoute = pathKey => {\n const stubBaseUrl = _.get(window.ExternalConfig, 'api.contentStub.baseUrl');\n const stubEndpoint = _.get(window.ExternalConfig, `api.contentStub.endpoints.${pathKey}`);\n\n const getContentUrl = pathString => {\n const pathKeyRoute = _.get(window.ExternalConfig, `api.content.${pathString}`);\n if (pathKeyRoute) {\n const replaceUrl = OptimizelyReplaceScreenUrl(pathKey);\n if (pathKeyRoute.indexOf('https') > -1) {\n // \"upNext\": \"https://api-staging.fox.com/fbc-content/_qa_v3/epglistings/{epgListingId}/next\"\n // currently has different base url\n // allows for paths to be overwritten by config if full url included\n return pathKeyRoute;\n }\n return `${getBaseContentUrl()}${replaceUrl || pathKeyRoute}`;\n }\n return false;\n };\n\n let apiURL =\n getContentUrl(pathKey) ||\n _.get(window.ExternalConfig, `api.static.${pathKey}`) ||\n `${getBaseContentUrl()}screens/${pathKey}`;\n\n if (stubEndpoint && sportsFeatures()) {\n apiURL = `${stubBaseUrl}${stubEndpoint}`;\n }\n\n apiURL = helperAddParams(apiURL);\n return apiURL;\n};\n\nexport const helperConvertApiRoute = uri => {\n if (!uri) return null;\n const tests = [\n { txt: '/screens/', base: getBaseContentUrl(), offset: 1 },\n { txt: '/seasons/', base: getBaseContentUrl(), offset: 1 },\n { txt: '/screenpanels/', base: getBaseContentUrl(), offset: 1 },\n // note: intentionally doesn't have trailing slash \"/\"\n { txt: '/search', base: getBaseContentUrl(), offset: 1 },\n ];\n\n let newUri = uri;\n _.forEach(tests, test => {\n const { txt, base, offset } = test;\n const txtLocation = uri.indexOf(txt);\n if (txtLocation > 0) {\n const relativeScreen = uri.substr(txtLocation + offset);\n if (txtLocation <= 0 || !relativeScreen) return;\n newUri = `${base}${relativeScreen}`;\n }\n });\n\n newUri = helperAddParams(newUri);\n return newUri;\n};\n\n/**\n * Return the full Api URL based on the path provided\n * @param {String} pathKey - Relative path for the API call\n * @param {String} id - Resource Identifier\n * @param {String} placeholder - String in API path that needs to be replaced by id\n * @return {String} - Absolute path for the API call\n */\nexport const helperGetApiRouteById = (pathKey, id, placeholder) => {\n if (!id) {\n return helperGetApiRoute(pathKey);\n }\n const contentHasKey = {}.hasOwnProperty.call(window.ExternalConfig.api.content, pathKey);\n const staticList = _.get(window.ExternalConfig, 'api.static');\n const stubBaseUrl = _.get(window.ExternalConfig, 'api.contentStub.baseUrl');\n const stubList = _.get(window.ExternalConfig, 'api.contentStub.endpoints');\n let apiRouteURL;\n if (stubList && sportsFeatures()) {\n const stubKey = _.get(stubList, pathKey);\n if (stubKey) apiRouteURL = `${stubBaseUrl}${stubList[pathKey]}`;\n }\n if (!apiRouteURL && contentHasKey) {\n const contentPath = window.ExternalConfig.api.content[pathKey];\n const route =\n contentPath.indexOf('https') > -1 ? contentPath : `${getBaseContentUrl()}${contentPath}`;\n apiRouteURL = route.replace(placeholder, id);\n }\n if (!apiRouteURL && staticList) {\n const staticHasKey = {}.hasOwnProperty.call(staticList, pathKey);\n const staticHasKeyAndId =\n staticHasKey &&\n typeof staticList[pathKey] === 'object' &&\n {}.hasOwnProperty.call(staticList[pathKey], id);\n if (staticHasKeyAndId) {\n apiRouteURL = staticList[pathKey][id];\n } else if (staticHasKey) {\n apiRouteURL = staticList[pathKey];\n }\n }\n\n if (!apiRouteURL) apiRouteURL = `${getBaseContentUrl()}${pathKey}/${id}`;\n\n apiRouteURL = helperAddParams(apiRouteURL);\n return apiRouteURL;\n};\n\n/**\n * Return the full API route for Series screenURL with provided showId\n * @param {String} showId - showId to be added to the mvpds route\n * @return {String} - Absolute path for the API call\n */\n\nexport const helperGetApiSeriesUrlRoute = showId => {\n const showsQueryRoute = _.get(window.ExternalConfig, 'api.content.showsQuery');\n const route = `${getBaseContentUrl()}${showsQueryRoute}/${showId}`;\n return helperAddParams(route);\n};\n\nexport const helperGetApiCategoryUrlRoute = categoryId => {\n const categoryQueryRoute = _.get(window.ExternalConfig, 'api.content.categoriesQuery');\n const categoryIdRoute = categoryQueryRoute.replace('{categoryId}', categoryId);\n const route = `${getBaseContentUrl()}${categoryIdRoute}`;\n return helperAddParams(route);\n};\n\n/**\n * Return the full account route with provided params\n * @param {String} pathKey - params to be added to the mvpds route\n * @return {String} - Absolute path for the API call\n */\n\nexport const helperGetApiAccountRoute = pathKey => {\n const pathKeyRoute = _.get(window.ExternalConfig, `api.profiles.${pathKey}`);\n\n return `${getBaseContentUrl()}${pathKeyRoute}`;\n};\n\n/**\n * Return the full route that replaces {profile_id} with the profileId provided\n * @param {String} profileId - profileId is added to the route\n * @return {String} - Absolute path for the API call\n */\nexport const helperGetApiProfileIDRoute = ({ pathKey, profileId }) => {\n const pathKeyRoute = _.get(window.ExternalConfig, `api.profiles.${pathKey}`);\n let route = `${getBaseContentUrl()}${pathKeyRoute}`;\n if (pathKeyRoute) route = route.replace('{profile_id}', profileId);\n return helperAddParams(route);\n};\n\nexport const helperGetFavoriteDetailsApiRoute = favoritesShowIds => {\n if (!favoritesShowIds && !favoritesShowIds.length) return null;\n\n const params = [];\n params.push(`showCode=${favoritesShowIds}`);\n params.push(`itemsPerPage=${favoritesShowIds.length}`);\n\n const apiRoute = helperGetApiRoute('showsQuery');\n const networksParams = getNetworksParam();\n let url = apiRoute.replace(networksParams, '');\n url = url.replace(/\\?\\s*$/, '');\n const apiURLParts = _.split(url, '?');\n const paramsPreExist = apiURLParts.length >= 2;\n if (paramsPreExist) return `${apiURLParts[0]}?${params.join('&')}&${apiURLParts[1]}`;\n\n return `${url}?${params.join('&')}`;\n};\n\nexport const helperGetLiveUpNextUrl = ({ videoId }) => {\n const pageType = 'upNextTomato';\n const placeholder = '{epgListingId}';\n\n const url = helperGetApiRouteById(pageType, videoId, placeholder);\n return { url, pageType };\n};\n\nexport const axiosErrorHandler = error => {\n const url = _.get(error, 'config.url');\n const silenceLogsForTests = isTestEnvironment();\n\n if (silenceLogsForTests) return null;\n\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n const responseError = 'API response error';\n console.log(responseError, url, error.response.status);\n logError(error, { url, responseStatus: error.response.status, name: responseError });\n return error;\n }\n\n if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n const requestError = 'API response error';\n logError(error, { url, name: requestError });\n return console.log(requestError, url);\n }\n\n // Something happened in setting up the request that triggered an Error\n const apiError = 'API error';\n logError(error, { url, name: apiError });\n return console.log('API error', url, error.message);\n};\n","import _ from 'lodash';\nimport { getCookie } from 'helpers/Storage';\nimport {\n isAMobileDevice,\n isATabletDevice,\n largeTabletView as isLargeScreenTablet,\n} from 'helpers/BreakpointHelper';\nimport { appDownloadPromptEnabled } from 'helpers/ConfigHelper';\nimport { msToDate, now, differenceInMilliseconds } from 'helpers/DateTimeHelper';\nimport { getPreviewPassTime } from 'helpers/AuthHelper';\n\nconst SMARTBANNER_CLOSED = 'smartbanner-closed';\nconst SMARTBANNER_INSTALLED = 'smartbanner-installed';\nconst WATCH = 'watch';\nconst LIVE = 'live';\n\nconst { afSub2, afPrt, referral, afChannel, afSub1, afWebDPBase, isRetargeting, app } = _.get(\n window.ExternalConfig,\n 'appDownload',\n {},\n);\n\nconst DEFAULT_DEVICE = {\n afSub2,\n afPrt,\n referral,\n afChannel,\n afSub1,\n afWebDPBase,\n isRetargeting,\n app,\n c: '',\n};\n\nconst IOS = {\n ...DEFAULT_DEVICE,\n c: _.get(window.ExternalConfig, 'appDownload.c.ios'),\n};\nconst CHROME_OPERA = {\n ...DEFAULT_DEVICE,\n c: _.get(window.ExternalConfig, 'appDownload.c.chrome_opera'),\n};\nconst ANDROID = {\n ...DEFAULT_DEVICE,\n c: _.get(window.ExternalConfig, 'appDownload.c.android'),\n};\nconst ANDROID_VOD = {\n ...DEFAULT_DEVICE,\n c: _.get(window.ExternalConfig, 'appDownload.c.android_vod'),\n};\nconst LIVE_IOS_ANDROID = {\n ...DEFAULT_DEVICE,\n c: _.get(window.ExternalConfig, 'appDownload.c.live_ios_android'),\n};\n\nconst APP_DOWNLOAD_CONFIG = _.get(window.ExternalConfig, 'appDownload', {});\n\nconst getAppUrlForDevice = ({ device, url, campaignOverrides }) => {\n const calcDevice = {\n ...device,\n ...campaignOverrides,\n };\n const {\n afSub2,\n afPrt,\n referral,\n afChannel,\n c,\n afSub1,\n afWebDPBase,\n isRetargeting,\n app,\n } = calcDevice;\n const afWebDp = `${afWebDPBase}cmpid=org=${afSub2}::mc=${referral}::src=${afChannel}::cmp=${c}::add=${afSub1}`;\n const afDp = `${app}://home?cmpid=org=${afSub2}::mc=${referral}::src=${afChannel}::cmp=${c}::add=${afSub1}&af_web_dp=${afWebDp}`;\n return `${url}?af_sub2=${afSub2}&af_prt=${afPrt}&pid=${referral}&af_channel=${afChannel}&c=${c}&af_sub1=${afSub1}&is_retargeting=${isRetargeting}&af_dp=${afDp}`;\n};\n\nexport const getAppUrlList = ({ campaignOverrides }) => {\n const { promoUrl: url } = APP_DOWNLOAD_CONFIG;\n return {\n android: {\n default: getAppUrlForDevice({ device: ANDROID, url, campaignOverrides }),\n chrome: getAppUrlForDevice({ device: CHROME_OPERA, url, campaignOverrides }),\n opera: getAppUrlForDevice({ device: CHROME_OPERA, url, campaignOverrides }),\n watch: getAppUrlForDevice({ device: ANDROID_VOD, url, campaignOverrides }),\n live: getAppUrlForDevice({ device: LIVE_IOS_ANDROID, url, campaignOverrides }),\n },\n kindle: {\n default: getAppUrlForDevice({ device: ANDROID, url, campaignOverrides }),\n chrome: getAppUrlForDevice({ device: CHROME_OPERA, url, campaignOverrides }),\n opera: getAppUrlForDevice({ device: CHROME_OPERA, url, campaignOverrides }),\n },\n ios: {\n default: getAppUrlForDevice({ device: IOS, url, campaignOverrides }),\n chrome: getAppUrlForDevice({ device: CHROME_OPERA, url, campaignOverrides }),\n opera: getAppUrlForDevice({ device: CHROME_OPERA, url, campaignOverrides }),\n live: getAppUrlForDevice({ device: LIVE_IOS_ANDROID, url, campaignOverrides }),\n },\n default: getAppUrlForDevice({ device: DEFAULT_DEVICE, url, campaignOverrides }),\n };\n};\n\nexport const determineDeviceType = ({ campaignOverrides }) => {\n const UA = navigator.userAgent;\n const appUrlList = getAppUrlList({ campaignOverrides });\n let type;\n\n if (UA.match(/Windows Phone 8/i) != null && UA.match(/Touch/i) !== null) {\n type = 'windows';\n } else if (UA.match(/iPhone|iPod/i) != null || (UA.match(/iPad/) && _.get(appUrlList, 'ios'))) {\n type = 'ios'; // Check webview and native smart banner support (iOS 6+)\n } else if (\n UA.match(/\\bSilk\\/(.*\\bMobile Safari\\b)?/) ||\n UA.match(/\\bKF\\w/) ||\n UA.match('Kindle Fire')\n ) {\n type = 'kindle';\n } else if (UA.match(/Android/i) != null) {\n type = 'android';\n }\n return type;\n};\n\nexport const determineBrowser = () => {\n const UA = navigator.userAgent;\n let browser;\n if (!UA) return browser;\n // Detect browser to use the right tracking URL\n if (UA.match(/CriOS/i) != null || UA.match(/Chrome/i)) {\n if (UA.match(/(Version\\/)\\d(.)\\d/) || UA.match(/(SamsungBrowser\\/)\\d(.)\\d/)) {\n browser = null;\n } else {\n browser = 'chrome';\n }\n } else if (UA.match(/OPiOS/i) || UA.match(/Opera Mini/i)) {\n browser = 'opera';\n } else if (UA.match(/Safari/i)) {\n browser = 'safari';\n }\n return browser;\n};\n\nexport const getAppUrl = ({ isLive, isWatch, campaignOverrides }) => {\n let page;\n const { promoUrl: defaultUrl } = APP_DOWNLOAD_CONFIG;\n const url = {\n ios: '',\n android: '',\n windows: '',\n kindle: '',\n };\n const urlList = getAppUrlList({ campaignOverrides });\n const urlKeys = Object.keys(url);\n urlKeys.forEach(key => {\n if (isLive) page = LIVE;\n if (isWatch) page = WATCH;\n url[key] = urlList[key]?.[page || 'default'] ?? defaultUrl;\n });\n return url;\n};\n\nexport const appIconUrl = ({ campaignOverrides }) => {\n const deviceType = determineDeviceType({ campaignOverrides });\n const { iosImage: iosImageUrl, androidImage: androidImageUrl } = APP_DOWNLOAD_CONFIG;\n if (deviceType === 'android') return androidImageUrl;\n return iosImageUrl;\n};\n\nexport const smartBannerPresent = breakpoint => {\n if (!(isAMobileDevice() || isATabletDevice())) {\n return isLargeScreenTablet(breakpoint);\n }\n const smartBannerClosedCookie = getCookie({ name: SMARTBANNER_CLOSED });\n const smartBannerInstalledCookie = getCookie({ name: SMARTBANNER_INSTALLED });\n return appDownloadPromptEnabled() && !smartBannerClosedCookie && !smartBannerInstalledCookie;\n};\n\nexport const getPreviewPassTimeDiff = (previewPassTime = null) => {\n const ppTime = previewPassTime || getPreviewPassTime();\n const ppDate = ppTime ? msToDate(ppTime) : null;\n const timeDiff = ppDate ? differenceInMilliseconds(ppDate, now()) : null;\n\n return timeDiff;\n};\n","import _ from 'lodash';\nimport { getAuthNetworksConfig } from 'helpers/ConfigHelper';\n\nexport const defaultChannelId = 'fbc-fox';\n\nexport const getChannelId = ({ network, authorizingNetwork }) => {\n const networks = getAuthNetworksConfig();\n const resourceId = _.get(networks, `${network}.resourceId`);\n return resourceId || defaultChannelId;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Style from './DropdownIcon.module.scss';\n\n/**\n * DropdownIcon Component\n *\n * @param {Boolean} opened - is the dropdown open?\n * @param {Function} onClick - action to occur on click\n * @returns {Component} - React Component\n */\nconst DropdownIcon = ({ opened, onClick, disabled }) => {\n const iconStatusClass = opened ? Style.iconUp : Style.iconDown;\n const classes = [Style.icon, iconStatusClass];\n\n if (disabled) classes.push(Style.iconDisabled);\n\n return (\n <span data-testid=\"dropdown icon toggle\" className={classNames(classes)} onClick={onClick} />\n );\n};\n\nDropdownIcon.propTypes = {\n opened: PropTypes.bool,\n onClick: PropTypes.func,\n disabled: PropTypes.bool,\n};\nDropdownIcon.defaultProps = {\n opened: null,\n onClick: () => {},\n disabled: null,\n};\n\nexport default DropdownIcon;\n","import React from 'react';\nimport _ from 'lodash';\nimport {\n formatAiredDate,\n formatDurationInSeconds,\n formatMetadata,\n formatMovieMetadata,\n formatRating,\n formatSubRatings,\n getItemBadge,\n} from 'helpers/VideoHelper';\nimport { isEpgv2Enabled } from 'helpers/ConfigHelper';\nimport {\n FOX,\n getNetworkLogoUrl,\n getDisplayBrand,\n isStaticRender,\n sportsFeatures,\n checkContentLabel,\n isSportsContent,\n getRequiresAuth,\n TAB_PRIMETIME,\n TAB_SCHEDULE,\n} from 'helpers/ContentHelper';\nimport {\n FORMAT_TIME,\n FORMAT_WEEKDAY_MONTH_DAY,\n FORMAT_MONTH_DAY,\n FORMAT_DAY_OF_WEEK,\n now,\n format,\n formatToAPIRange,\n formatToTwoDigitsString,\n formatToTwoDigitsTimezone,\n getTimeZoneAbbr,\n startOfDay,\n addMinutes,\n addHours,\n addDays,\n endOfDay,\n getDayOfYear,\n guessTZ,\n stringToDate,\n isAfter,\n isBetween,\n isBefore,\n isSameDay,\n isSameSecond,\n differenceInSeconds,\n differenceInMinutes,\n setMinutes,\n subMinutes,\n} from 'helpers/DateTimeHelper';\nimport { helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport { getLiveStatusBadge, SHOW_STATE_REPLAY } from 'helpers/BadgeHelper';\nimport { getChannelId } from 'components/VideoContainer/VideoContainerHelper';\nimport DropdownIcon from 'components/DropdownIcon';\nimport { RESTART_TYPE_LIVE } from 'screens/Watch/WatchHelpers';\nimport dropdownIconTheme from 'screens/Live/styles/DropdownIcon.css';\n\nexport const PANEL_TYPE_LISTING = 'listing';\nconst TYPE_MOVIE = 'movie';\nexport const TYPE_SHOW = 'fullEpisode';\nconst HALF_HOUR_MINUTES = 30;\nconst WIDTH_HALF_HOUR = 252;\nexport const MINUTES_INTERVAL = 30;\nexport const CHANNEL_PRESELECT = 'channel';\n\nconst GRID_COUNT = 4;\nconst BADGE_NEW = 'NEW';\nconst BADGE_SERIES_PREMIERE = 'SERIES PREMIERE';\nconst EPG_FUTURE_DATE = ' ddd M/D, h:mm A';\n\nexport const EPG_TOTAL_DAYS = 7;\n\nconst primetimeNetworks = [FOX];\n\nexport const getLocalNetworkUrl = (network, callSign) => {\n if (!callSign || (network && network !== FOX)) return null;\n return window.ExternalConfig.affiliateLogo.replace('{callSign}', callSign);\n};\n\nexport const epgLinks = _.get(window.ExternalConfig, 'epgLinks', {\n tabOrder: [TAB_PRIMETIME, TAB_SCHEDULE],\n defaultTab: TAB_PRIMETIME,\n navLinkTab: TAB_SCHEDULE,\n scheduleLinkTab: TAB_PRIMETIME,\n});\n\nexport const getNetworkLogo = ({ callSign, network = FOX, isStatic }) => {\n if (!callSign) return null;\n const channel = callSign.toLowerCase();\n\n const { networkLogo, epgNetworkLogoMapping } = window.ExternalConfig;\n\n let channelName = _.get(epgNetworkLogoMapping, network, null);\n if (!isStaticRender() && !isStatic) {\n channelName = _.get(epgNetworkLogoMapping, channel, null);\n }\n\n const channelLogo = networkLogo.replace('{network}', channelName);\n const affiliateLogo = getLocalNetworkUrl(network, callSign);\n\n const networkLogoUrl = channelName ? channelLogo : affiliateLogo;\n\n // append akamai resize params.\n const defaultSize = 60;\n if (!networkLogoUrl) return null;\n return `${networkLogoUrl}?resize=*:${defaultSize}px`;\n};\n\nconst getTs = () => Math.floor(new Date().getTime() / 1000);\n\nexport const getTsMinutes = () => Math.floor(getTs() / 60);\n\n// TODO: Remove this function when EPG Schedule is no longer used\nexport const getHourInterval = (selectedDate, interval = MINUTES_INTERVAL, count = GRID_COUNT) => {\n let current = stringToDate(selectedDate);\n const hourIntervals = [];\n for (let i = 0; i < count; i += 1) {\n const minute = format(current, 'mm');\n\n const currentDate = format(current, 'MM/DD');\n const currentHour = format(current, 'h');\n const currentAmPM = format(current, 'a');\n const currentMinute = i === 0 ? minute - (minute % interval) : minute;\n\n current = setMinutes(current, currentMinute);\n\n const minuteStr = formatToTwoDigitsString(currentMinute);\n\n const hour = `${currentHour}${currentAmPM}`;\n const hourMinute = `${currentHour}:${minuteStr}${currentAmPM}`;\n const displayMinutes = currentMinute !== 0;\n const timeString = displayMinutes ? hourMinute : hour;\n\n const dateTimeString = `${currentDate}@${timeString}`;\n\n hourIntervals.push({ timeString, dateTimeString, current });\n\n current = addMinutes(current, interval);\n }\n\n return hourIntervals;\n};\n\nexport const getEPGHourInterval = (\n selectedDate,\n interval = MINUTES_INTERVAL,\n count = GRID_COUNT,\n) => {\n let current = stringToDate(selectedDate);\n const hourIntervals = [];\n for (let i = 0; i < count; i += 1) {\n const minute = format(current, 'mm');\n\n const currentDate = format(current, 'MM/DD');\n const currentHour = format(current, 'h');\n const currentAmPM = format(current, 'a');\n const currentMinute = i === 0 ? minute - (minute % interval) : minute;\n\n current = setMinutes(current, currentMinute);\n\n const minuteStr = formatToTwoDigitsString(currentMinute);\n\n const hourMinute = `${currentHour}:${minuteStr}${currentAmPM}`;\n const timeString = hourMinute;\n\n const dateTimeString = `${currentDate}@${timeString}`;\n\n hourIntervals.push({ timeString, dateTimeString, current });\n\n current = addMinutes(current, interval);\n }\n\n return hourIntervals;\n};\n\nexport const getStartingTs = current => {\n const currentDate = current ? stringToDate(current) : now();\n const hourIntervals = getHourInterval(currentDate, MINUTES_INTERVAL, 1);\n const { current: currentInterval } = hourIntervals[0];\n return Math.round(currentInterval.getTime() / 1000);\n};\n\nexport const calculateDurationWidth = duration => {\n const halfHours = Math.round(duration / HALF_HOUR_MINUTES);\n const padding = halfHours > 1 ? (halfHours - 1) * 20 : 0;\n return (duration * WIDTH_HALF_HOUR) / HALF_HOUR_MINUTES + padding;\n};\n\nexport const calculateWidthByDuration = duration => {\n const halfHours = Math.round(duration / HALF_HOUR_MINUTES);\n const padding = halfHours > 1 ? (halfHours - 1) * 10 : 0;\n return (duration * WIDTH_HALF_HOUR) / HALF_HOUR_MINUTES + padding;\n};\n\nexport const getVideoTimeData = ({\n video,\n current = null,\n gridTotalHours = null,\n canScrollGrid = false,\n breakpointIsMobile = false,\n}) => {\n if (!video) {\n return null;\n }\n const currentDate = current || now();\n const totalHours = gridTotalHours || 2;\n const { startDate, endDate } = video;\n\n const starts = startDate ? stringToDate(startDate) : currentDate;\n const ends = endDate ? stringToDate(endDate) : currentDate;\n\n const startOfCurrentDay = startOfDay(currentDate);\n const endOfGrid =\n isEpgv2Enabled() && breakpointIsMobile\n ? addHours(startOfCurrentDay, totalHours)\n : addHours(currentDate, totalHours);\n const endOfNextDay = addDays(endOfDay(currentDate), 1);\n\n const startFormated = format(starts, FORMAT_TIME);\n const endFormated = format(ends, FORMAT_TIME);\n\n const duration = differenceInMinutes(ends, starts);\n\n const startsInFuture = isAfter(starts, currentDate);\n const isInFutureAndDateRange =\n isAfter(currentDate, endOfDay(now())) && isBetween(starts, startOfCurrentDay, endOfNextDay);\n\n const startsWithGrid =\n (isInFutureAndDateRange && !canScrollGrid) || isSameSecond(currentDate, starts);\n\n const isCurrent = startsWithGrid || isBetween(currentDate, starts, ends);\n const isPast = isAfter(currentDate, ends);\n\n const shouldBeVisible =\n startsWithGrid || isCurrent || (startsInFuture && !isAfter(starts, endOfGrid));\n const withinSameDay = isSameDay(starts, currentDate);\n\n const secUntilStart = startsInFuture\n ? Math.floor(differenceInSeconds(starts, currentDate))\n : null;\n\n return {\n startDate,\n endDate,\n starts: startFormated,\n ends: endFormated,\n duration,\n startsInFuture,\n isCurrent,\n isPast,\n shouldBeVisible,\n withinSameDay,\n startsWithGrid,\n secUntilStart,\n };\n};\n\nexport const calculateTimeTil = (currentTime, startDate, startTime) => {\n const minutes = differenceInMinutes(startDate, currentTime);\n const start = stringToDate(startDate);\n const twoDaysLater = addDays(startOfDay(currentTime), 2);\n const startsAfterTwoDays = isAfter(start, twoDaysLater);\n let duration;\n const timeAtStart = addMinutes(currentTime, minutes);\n if (isSameDay(currentTime, timeAtStart)) {\n const hrs = Math.floor(minutes / 60);\n const min = Math.floor(minutes % 60);\n const hourLabel = hrs > 1 ? `hrs` : `hr`;\n const hoursText = hrs > 0 ? `${hrs} ${hourLabel},` : '';\n const minsText = min && `${min} min`;\n duration = [`in`, hoursText, minsText].filter(text => text).join(' ');\n } else if (startsAfterTwoDays) {\n duration = startDate ? format(startDate, EPG_FUTURE_DATE) : '';\n } else {\n duration = startTime !== '' ? `tomorrow, ${startTime}` : '';\n }\n return duration;\n};\n\nexport const isGapFiller = video => _.get(video, 'showCode') === 'gapFiller';\n\nexport const isVideoLive = video => {\n if (isGapFiller(video)) return false;\n\n const startDate = _.get(video, 'startDate', null);\n const endDate = _.get(video, 'endDate', null);\n const minutesBeforeStart = 5;\n\n // Allow live content to start 5 minutes before\n const start = startDate ? subMinutes(stringToDate(startDate), minutesBeforeStart) : null;\n const end = endDate ? stringToDate(endDate) : null;\n\n const result = start && end ? isBetween(now(), start, end) : false;\n\n return result;\n};\n\nexport const getLiveVideo = ({ panel, isOverFlow, upNext, epgListingId = null }) => {\n const upNextItems = _.get(upNext, 'member', null);\n const items = _.get(panel, 'items.member', upNextItems);\n if (!items) return null;\n const liveItems = items.filter(item => isVideoLive(item));\n let epgItem = [];\n if (epgListingId) {\n epgItem = _.filter(liveItems, { id: epgListingId });\n }\n const nonOverFlowItems = epgItem[0] || liveItems[0];\n return isOverFlow ? liveItems[1] : nonOverFlowItems;\n};\n\nexport const checkSameDayOfYear = (oldDate, newDate) => {\n const oldDateTmp = oldDate || now();\n const newDateTmp = newDate || now();\n\n const oldDay = getDayOfYear(oldDateTmp);\n const newDay = getDayOfYear(newDateTmp);\n\n const isSameDay = oldDay === newDay;\n return isSameDay;\n};\n\nconst formatDuration = durationInSeconds => {\n const hours = Math.floor(durationInSeconds / 3600);\n const minutes = Math.floor((durationInSeconds - hours * 3600) / 60);\n let duration = hours > 0 ? `${hours}h` : '';\n if (minutes > 0) duration += `${minutes}m`;\n return duration;\n};\n\nexport const formatTimeLeft = durationInSeconds => {\n const hours = Math.floor(durationInSeconds / 3600);\n const minutes = Math.ceil((durationInSeconds - hours * 3600) / 60);\n const hourLabel = hours > 1 ? `hrs` : `hr`;\n const hourText = hours && `${hours} ${hourLabel}`;\n const minText = minutes && `${minutes} min left`;\n return [hourText, minText].filter(text => text).join(`${hourText && minText ? ',' : ''} `);\n};\n\nexport const getVideoData = (video, dontRetrieveNetworkLogo = false) => {\n if (!video) {\n return null;\n }\n\n const {\n '@id': id,\n images,\n livePlayerScreenUrl,\n name,\n secondaryTitle,\n seriesName,\n seriesScreenUrl,\n originalAirDate,\n contentRating,\n subRatings,\n description: originalDescription,\n network,\n startDate,\n endDate,\n videoType,\n fullEpisodeCount,\n playerScreenUrl,\n callSign,\n contentLabel,\n sportTag,\n durationInSeconds,\n } = video;\n\n const requiresAuthLive = getRequiresAuth({ video, isLive: true });\n const channel = getChannelId({ network });\n const networks = [channel];\n const { programNotAvailable_text: dummyTitle } = window.Language;\n const starts = startDate ? format(stringToDate(startDate), FORMAT_TIME) : null;\n const ends = endDate ? format(stringToDate(endDate), FORMAT_TIME) : null;\n\n const isLiveNow = isVideoLive(video);\n\n const fallbackImage = _.get(images, 'seriesList.raw', null);\n const image = _.get(images, 'videoList.raw', fallbackImage);\n let title = seriesName;\n let airDate = formatAiredDate(originalAirDate);\n const rating = formatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n const ratingText = !rating && !subRating ? null : `${rating} ${subRating}`;\n const moreInfoUrl = helperGetRelativeUrl({ url: seriesScreenUrl });\n const hashCallSign = callSign ? `-${callSign}` : '';\n const watchUrl = helperGetRelativeUrl({\n url: playerScreenUrl,\n hash: `${RESTART_TYPE_LIVE}${hashCallSign}`,\n });\n const displayBrand = getDisplayBrand(video);\n const networkIcon = !dontRetrieveNetworkLogo && getNetworkLogoUrl(displayBrand);\n let seasonAndEpisode = null;\n let subtitle = null;\n let metadata = null;\n let description = null;\n let upNext = false;\n\n let badge = getItemBadge(video);\n if (badge) badge = badge.toUpperCase();\n\n // If it's not NEW then ONLY show 'Replay'\n if (badge !== BADGE_NEW && badge !== BADGE_SERIES_PREMIERE && sportsFeatures()) {\n badge = getLiveStatusBadge(video.contentLabel);\n if (badge !== SHOW_STATE_REPLAY) badge = null;\n }\n\n switch (videoType) {\n case TYPE_SHOW: {\n const { seasonNumber, episodeNumber, displaySeasonAndEpisodeCounts } = video;\n subtitle =\n seasonNumber && episodeNumber\n ? `S${seasonNumber} E${episodeNumber} ${secondaryTitle || ''}`\n : secondaryTitle;\n seasonAndEpisode =\n displaySeasonAndEpisodeCounts && seasonNumber && episodeNumber\n ? `S${seasonNumber} E${episodeNumber}`\n : '';\n\n airDate = badge === BADGE_NEW ? formatAiredDate(startDate, '', FORMAT_TIME) : airDate;\n metadata = formatMetadata([airDate, ratingText]);\n description = originalDescription;\n break;\n }\n case TYPE_MOVIE:\n subtitle = starts;\n metadata = formatMovieMetadata(video);\n description = originalDescription;\n break;\n default:\n subtitle = name;\n break;\n }\n\n if (isSportsContent(video)) {\n subtitle = sportTag || starts;\n description = originalDescription;\n const labels = ['Live', 'Up Next'];\n\n let isBeforeOriginalAirDate = false;\n if (originalAirDate && startDate) {\n isBeforeOriginalAirDate = isBefore(stringToDate(originalAirDate), stringToDate(startDate));\n }\n\n airDate =\n checkContentLabel({ video, labels }) ||\n !originalAirDate ||\n (originalAirDate && !isBeforeOriginalAirDate)\n ? formatAiredDate(startDate, '', FORMAT_TIME)\n : airDate;\n const duration = formatDuration(durationInSeconds);\n metadata = formatMetadata([airDate, ratingText, duration]);\n upNext = contentLabel && _.includes(contentLabel, 'Up Next') ? true : upNext;\n }\n\n if (!title) {\n if (subtitle) {\n title = subtitle;\n subtitle = null;\n } else {\n title = dummyTitle;\n }\n }\n\n const shouldRenderLiveCta = livePlayerScreenUrl && isLiveNow;\n const isTimeShiftedLiveRestart = _.get(video, 'timeShiftedLiveRestart', true);\n const hideVODCta = isTimeShiftedLiveRestart && !isLiveNow;\n const shouldRenderVODCta = watchUrl && livePlayerScreenUrl && !hideVODCta;\n\n const videoData = {\n badge,\n callSign,\n description,\n endDate,\n ends,\n fullEpisodeCount,\n id,\n image,\n isLiveNow,\n metadata,\n moreInfoUrl,\n networkIcon,\n network,\n networks,\n playerScreenUrl,\n shouldRenderLiveCta,\n shouldRenderVODCta,\n requiresAuthLive,\n seasonAndEpisode,\n subtitle,\n subtitleName: name,\n startDate,\n starts,\n title,\n upNext,\n videoType,\n watchUrl,\n };\n\n return videoData;\n};\n\nexport const getMobileVideoMetadata = video => {\n const {\n startDate,\n endDate,\n originalAirDate,\n available,\n datePublished,\n durationInSeconds,\n contentRating,\n subRatings,\n contentLabel,\n } = video;\n\n const dateDiff = differenceInSeconds(stringToDate(endDate), stringToDate(startDate));\n const isNew = _.lowerCase(_.get(contentLabel, '0')) === 'new';\n const primaryAirDate = isNew ? startDate : originalAirDate;\n const airDate = formatAiredDate(primaryAirDate || datePublished || available, '', 'MM-DD-YY');\n const duration = formatDurationInSeconds(durationInSeconds || dateDiff);\n const rating = formatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n const ratingStr = rating || subRating ? `${rating} ${subRating}` : null;\n let metadata = [];\n if (airDate) metadata.push(airDate);\n if (ratingStr) metadata.push(ratingStr);\n if (duration) metadata.push(duration);\n metadata = formatMetadata(metadata);\n return metadata;\n};\n\nconst mapDayToPrimeTimeMessage = day => {\n const {\n epg_prePrimetimeText_Monday: textMonday,\n epg_prePrimetimeText_Tuesday: textTuesday,\n epg_prePrimetimeText_Wednesday: textWednesday,\n epg_prePrimetimeText_Thursday: textThursday,\n epg_prePrimetimeText_Friday: textFriday,\n epg_prePrimetimeText_Saturday: textSaturday,\n epg_prePrimetimeText_Sunday: textSunday,\n epg_prePrimetimeText: textDefault,\n } = window.Language;\n switch (day) {\n case 'Monday':\n return textMonday;\n case 'Tuesday':\n return textTuesday;\n case 'Wednesday':\n return textWednesday;\n case 'Thursday':\n return textThursday;\n case 'Friday':\n return textFriday;\n case 'Saturday':\n return textSaturday;\n case 'Sunday':\n return textSunday;\n default:\n return textDefault;\n }\n};\n\nexport const getPrimeTimeMessage = ({ panels, selectedChannel, selectedDate }) => {\n const now = stringToDate(selectedDate);\n const day = format(now, FORMAT_DAY_OF_WEEK);\n\n const selectedChannelPanel = _.get(panels, `member.${selectedChannel}`, null);\n const firstPanel = _.get(panels, 'member.0', null);\n\n const panel = selectedChannel ? selectedChannelPanel : firstPanel;\n const primeTimeMessage = mapDayToPrimeTimeMessage(day);\n return _.get(panel, 'additionalInformation', primeTimeMessage);\n};\n\nexport const displayPrimeTimeMessage = video => {\n const network = _.get(video, 'network', null);\n return network === FOX;\n};\n\nexport const getPrimeTimeNetworkFilter = () => _.join(primetimeNetworks, ',');\n\nexport const isInEPGDateRange = date => {\n if (!date) return false;\n const startDate = stringToDate(date);\n const today = startOfDay(now());\n const epgEndDate = endOfDay(addDays(now(), EPG_TOTAL_DAYS));\n const result = isBetween(startDate, today, epgEndDate);\n return result;\n};\n\nexport const isToday = date => {\n if (!date) return false;\n return isSameDay(stringToDate(date), now());\n};\n\nexport const isTomorrow = dateArg => {\n const date = stringToDate(dateArg);\n const tomorrow = addDays(now(), 1);\n return isSameDay(date, tomorrow);\n};\n\nexport const isDayAfter = dateArg => {\n const date = stringToDate(dateArg);\n const dayAfter = addDays(now(), 2);\n return isSameDay(date, dayAfter);\n};\n\nexport const getDayLabel = date => {\n const { epg_todayHeader: todayLabel, epg_tomorrowHeader: tomorrowLabel } = window.Language;\n if (isToday(date)) return todayLabel;\n if (isTomorrow(date)) return tomorrowLabel;\n return null;\n};\n\nexport const getTimeLeft = date => {\n const minutes = 1000 * 60;\n const startTime = new Date(date).getTime();\n const currentTime = new Date().getTime();\n if (currentTime > startTime) return '';\n const timeLeft = Math.ceil((startTime - currentTime) / minutes);\n const timeLeftHours = Math.floor(timeLeft / 60);\n const timeLeftMinutes = timeLeft % 60;\n let timeLeftText = '';\n const timeSepartor = timeLeftHours === 0 ? '' : ' ';\n if (timeLeftHours === 1) timeLeftText = `${timeLeftHours} HR`;\n if (timeLeftHours > 1) timeLeftText = `${timeLeftHours} HRS`;\n if (timeLeftMinutes === 1) timeLeftText = `${timeLeftText}${timeSepartor}${timeLeftMinutes} MIN`;\n if (timeLeftMinutes > 1) timeLeftText = `${timeLeftText}${timeSepartor}${timeLeftMinutes} MINS`;\n return timeLeftText;\n};\n\nexport const getTimezone = () => {\n let timezone = guessTZ();\n if (!timezone || timezone.length < 3) {\n timezone = 'America/Los_Angeles';\n }\n const abbr = getTimeZoneAbbr(now(), 'z', timezone);\n const shortAbbr = formatToTwoDigitsTimezone(abbr);\n return shortAbbr || '';\n};\n\nexport const checkForOverlap = panel => {\n const listings = _.get(panel, 'items.member', null);\n let liveListing = null;\n let overFlowProgramIdx = -1;\n let lateProgramIdx = -1;\n let overFlowPrograms = [];\n if (!listings || listings.length === 1) return { lateProgramIdx, overFlowProgramIdx };\n const liveListings = listings.filter(listing => isVideoLive(listing) === true);\n if (liveListings.length > 1) {\n const lateProgram = liveListings[0];\n const overFlowProgram = liveListings[1];\n liveListing = lateProgram;\n overFlowPrograms = liveListings.splice(1);\n lateProgramIdx = _.findIndex(listings, lateProgram);\n overFlowProgramIdx = _.findIndex(listings, overFlowProgram);\n }\n return { lateProgramIdx, overFlowProgramIdx, overFlowPrograms, liveListing };\n};\n\nexport const getDateDropdownFormat = isCondensed =>\n isCondensed ? FORMAT_WEEKDAY_MONTH_DAY : FORMAT_MONTH_DAY;\n\nexport const getDateDropdownIcon = isOpen => onClick =>\n isOpen ? null : <DropdownIcon theme={dropdownIconTheme} onClick={onClick} opened={isOpen} />;\n\nexport const getTodaysDate = () => format(now(), FORMAT_WEEKDAY_MONTH_DAY);\n\nexport const isLastPanel = (rowIdx, panels) => {\n if (!panels || !panels.member || panels.length === 0) return null;\n return rowIdx === panels.member.length - 1;\n};\n\nexport const isReturningVistor = location => _.get(location, 'action', null) === 'POP';\n\nexport const parseLiveVideoResponse = data => {\n const liveVideo = data;\n const panel = data;\n\n return { liveVideo, panel };\n};\n\nconst getEndDate = ({ startDate, days = 0, hours = 0 }) =>\n addHours(addDays(startOfDay(startDate), days), hours);\n\nexport const getThirtySixHourInterval = selectedDate => {\n if (!selectedDate) return null;\n\n const daysToAdd = 1;\n const hoursToAdd = 12;\n\n const startDate = startOfDay(selectedDate);\n const endDate = getEndDate({ startDate, hours: hoursToAdd, days: daysToAdd });\n const range = formatToAPIRange(startDate, endDate);\n\n return range;\n};\n\nconst getSeventyTwoHourInterval = selectedDate => {\n if (!selectedDate) return null;\n\n const daysToAdd = 2;\n const hoursToAdd = 23;\n\n const endDate = getEndDate({ startDate: selectedDate, hours: hoursToAdd, days: daysToAdd });\n const range = formatToAPIRange(selectedDate, endDate);\n\n return range;\n};\n\nexport const getLiveDateRange = selectedDate => {\n if (isEpgv2Enabled()) return getSeventyTwoHourInterval(selectedDate);\n return getThirtySixHourInterval(selectedDate);\n};\n\nexport const getSingleStationSchedulePanels = panels => {\n if (!panels) return null;\n const panelSchedule = {\n ...panels,\n member: [],\n };\n const member = _.get(panels, 'member', []);\n member.forEach((panel, index) => {\n const items = _.get(panel, 'items', {});\n const videos = _.get(items, 'member', []);\n const now = new Date();\n\n let upcomingVideos = videos;\n\n if (index === 0) {\n upcomingVideos = _.filter(videos, video => video.startDate && isAfter(video.startDate, now));\n }\n panelSchedule.member.push({\n ...panel,\n items: {\n ...items,\n member: upcomingVideos,\n },\n });\n });\n return panelSchedule;\n};\n","import _ from 'lodash';\nimport classNames from 'classnames';\nimport { isEpisode, isClip, isMovie } from 'helpers/ContentHelper';\n\nexport const RESTART_TYPE_LIVE = 'restart-live';\nexport const RESTART_TYPE_HOME = 'restart-home';\n\nexport const PANEL_TYPE_VIDEOS = 'videos';\nexport const VIDEO_TYPE_CLIP = 'clip';\nexport const VIDEO_TYPE_FULLEPISODE = 'fullEpisode';\nexport const VIDEO_TYPE_MOVIE = 'movie';\nexport const VIDEO_TYPE_GAME = 'game';\nexport const RELEASE_TYPE_LIVE = 'live';\n\nexport const getSectionTitleData = ({\n member,\n theme,\n primary,\n forceGrid,\n isPlaylist,\n sectionItems,\n}) => {\n if (!member) return null;\n\n const {\n videoPage_headerEpisodes: headerEpisodes,\n videoPage_headerClips: headerClips,\n videoPage_headerMovies: headerMovies,\n } = window.Language;\n const headline = _.get(member, 'headline') || _.get(member, 'name');\n const items = _.get(member, 'items.member', null);\n const seriesName = _.get(items, '0.seriesName');\n const videoType = _.get(items, '0.videoType');\n const episodeCount = sectionItems ? `(${sectionItems.length})` : null;\n const sectionTitleClass = classNames([\n primary ? theme.sectionTitlePrimary : null,\n forceGrid ? theme.sectionTitleGridForced : null,\n theme.sectionTitle,\n ]);\n const isEpisodeType = isEpisode(videoType);\n const isClipType = isClip(videoType);\n const isMovieType = isMovie(videoType);\n\n if (isPlaylist) return { sectionTitleClass, sectionTitle: headline };\n if (isEpisodeType)\n return { sectionTitleClass, sectionTitle: `${seriesName} ${headerEpisodes} ${episodeCount}` };\n if (isClipType) return { sectionTitleClass, sectionTitle: `${seriesName} ${headerClips}` };\n if (isMovieType) return { sectionTitleClass, sectionTitle: headerMovies };\n if (headline) return { sectionTitleClass, sectionTitle: headline };\n return null;\n};\n","/* global BaseUrl, EpgEnabled, SalesforceMobileLinksRedirect */\nimport { browserHistory } from 'react-router';\nimport _ from 'lodash';\nimport { getBaseContentUrl } from 'helpers/ApiHelper';\nimport { setOptOutCCPACookie } from 'helpers/ConfigHelper';\nimport { getSessionStorageItem, setSessionStorageItem, setCookie } from 'helpers/Storage';\nimport { getAppUrlList } from 'components/Header/HeaderHelpers';\nimport { CHANNEL_PRESELECT } from '../screens/Live/LiveHelpers';\n\nconst APPVIEW_EXCLUDE = ['Account', 'Header', 'Footer'];\nexport const LAST_SESSION_PATH = 'lastFoxPath';\nconst LAST_SETTING_PATH = 'lastSettingPath';\nconst COOKIE_SET_PATH_FOR_RE_ENTRY_REDIRECT = 'COOKIE_SET_PATH_FOR_RE_ENTRY_REDIRECT';\n\nexport const cleanString = string => _.toLower(string).replace(/[^a-z0-9\\s()-]/g, '');\n\n/**\n * Returns the base url slug, if it exists\n */\nexport const helperGetBaseUrlSlug = () => _.get(window.ExternalConfig, 'baseUrlSlug', '');\n\n/**\n * Navigates to a direct page uri\n * @param {String} uri - Code for the show page to load\n */\nexport const helperGetShowUrl = uri => `${helperGetBaseUrlSlug()}/${uri}/`;\n\nexport const helperGetPersonalityUrl = uri => `${helperGetBaseUrlSlug()}/personalities/${uri}/`;\n\nexport const helperGetShowClipsUrl = uri => `${helperGetShowUrl(uri)}clips/`;\n\nexport const helperGetFNCLiveUrl = () => '/live-news/';\n/**\n * Navigates to a watch page\n * @param {String} uri - Video code that represents the video page to load\n */\nexport const helperGetVideoUrl = (uri, hash = null) => {\n const hasQueryString = uri && _.includes(uri, '?');\n const trailingSlash = hasQueryString ? '' : '/';\n const watchUrl = `${helperGetBaseUrlSlug()}/watch/${uri}${trailingSlash}`;\n if (hash) {\n return `${watchUrl}${hash}`;\n }\n return watchUrl;\n};\n\n/**\n * Navigates to the live page\n */\nexport const helperGetLiveUrl = ({ callSign, videoId = '' } = {}) => {\n let slug = '';\n if (callSign && EpgEnabled) {\n const id = videoId ? `?id=${videoId}` : '';\n slug = `${CHANNEL_PRESELECT}/${callSign}/${id}`;\n } else if (videoId && !EpgEnabled) {\n slug = `${videoId}/`;\n }\n return `${helperGetBaseUrlSlug()}/live/${slug}`;\n};\n\nexport const helperGetLiveScheduleUrl = callSign => {\n const liveUri = helperGetLiveUrl({ callSign });\n return `${liveUri}schedule/`;\n};\n\n/**\n * Link to static content\n */\nexport const helperGetStaticContentUrl = (contentType, contentName) => {\n let url = `${helperGetBaseUrlSlug()}/static/`;\n if (contentType) url = `${url}${contentType}/`;\n if (contentName) url = `${url}${contentName}`;\n return url;\n};\n\n/**\n * Navigates to the home page\n */\nexport const helperGetHomeUrl = () => `${helperGetBaseUrlSlug()}/`;\n\n/**\n * Navigates to the shows landing page\n */\nexport const helperGetShowsUrl = () => `${helperGetBaseUrlSlug()}/shows/`;\nexport const helperGetNewsUrl = () => `${helperGetBaseUrlSlug()}/news/`;\nexport const helperGetSportsUrl = () => `${helperGetBaseUrlSlug()}/sports/`;\n\n/**\n * Navigates to the personalities landing page\n */\nexport const helperGetPersonalitiesUrl = () => `${helperGetBaseUrlSlug()}/personalities/`;\n\n/**\n * Navigates to a movie page\n * @param {String} uri - Video code that represents the movie page to load\n */\nconst helperGetMovieUrl = uri => `${helperGetBaseUrlSlug()}/${uri}/`;\n\n/**\n * Navigates to the account page\n */\nexport const helperGetAccountUrl = () => `${helperGetBaseUrlSlug()}/account/`;\n\n/**\n * Navigates to the networkUpsell page\n */\nexport const helperGetNetworkUpsellUrl = () => `${helperGetBaseUrlSlug()}/`;\n\n/**\n * Navigates to the find page\n */\nexport const helperGetFindUrl = (originalCollection, filter, campaignCodes) => {\n let collectionElement = '';\n if (originalCollection) {\n const decodedCollection = decodeURIComponent(originalCollection);\n const collection = encodeURIComponent(cleanString(decodedCollection));\n collectionElement = `${collection}/`;\n }\n const queryParams = campaignCodes ? `${campaignCodes}` : '';\n const filterElement = filter ? `filter/${filter}/` : '';\n return `${helperGetBaseUrlSlug()}/find/${collectionElement}${filterElement}${queryParams}`;\n};\n\n/**\n * Navigates to an article page\n * @param {String} uri - Article code that represents the article page to load\n */\nexport const helperGetArticleUrl = uri => `${helperGetBaseUrlSlug()}/article/${uri}/`;\n\nexport const helperGetSeriesArticleUrl = uri => `${helperGetBaseUrlSlug()}/${uri}/`;\n\n/**\n * Navigates to a photo gallery page\n * @param {String} uri - Photo gallery code that represents the Photo gallery page to load\n */\nconst helperGetGalleryUrl = uri => `${helperGetBaseUrlSlug()}/photo-gallery/${uri}/`;\n\n/**\n * Navigates to a show's article page\n * @param {String} showUri - Show code that represents the show to use\n * @param {String} articleUri - Article code that represents the article page to load\n */\nconst helperGetShowArticleUrl = (showUri, articleUri) =>\n `${helperGetShowUrl(showUri)}article/${articleUri}/`;\n\n/**\n * Navigates to a show's photo gallery page\n * @param {String} showUri - Show code that represents the show to use\n * @param {String} galleryUri - Photo gallery code that represents the gallery page to load\n */\nconst helperGetShowGalleryUrl = (showUri, galleryUri) =>\n `${helperGetShowUrl(showUri)}photo-gallery/${galleryUri}/`;\n\n/**\n * Navigates to a show's page detail\n * @param {String} showUri - Show code that represents the show to use\n * @param {String} pageUri - Page code to load\n */\nconst helperGetShowPageUrl = (showUri, pageUri) => {\n const show = helperGetShowUrl(showUri);\n if (pageUri) return `${show}${pageUri}/`;\n return show;\n};\n\n/**\n * Navigates to a show bio landing page\n * @param {String} showUri - Show Uri\n */\nexport const helperGetBioLandingUrl = showUri => `${helperGetShowUrl(showUri)}credits/`;\nexport const helperGetCharacterLandingUrl = showUri => `${helperGetShowUrl(showUri)}characters/`;\n\n/**\n * Navigates to a show bio page of a cast member\n * @param {String} showUri - Show Uri\n * @param {String} bioUri - Bio Uri\n */\nexport const helperGetBioUrl = (showUri, bioUri) => `${helperGetBioLandingUrl(showUri)}${bioUri}/`;\nexport const helperGetCharUrl = (showUri, bioUri) =>\n `${helperGetCharacterLandingUrl(showUri)}${bioUri}/`;\n\nconst helperGetCollectionFilterUrl = (baseUri, collectionId, filterId) => {\n if (collectionId && filterId) {\n return `${baseUri}collection/${collectionId}/filter/${filterId}/`;\n }\n\n if (collectionId) {\n return `${baseUri}collection/${collectionId}/`;\n }\n\n if (filterId) {\n return `${baseUri}filter/${filterId}/`;\n }\n\n return baseUri;\n};\n\nexport const helperGetShowsCollectionFilterUrl = (collectionId, filterId) => {\n const baseUri = helperGetShowsUrl();\n return helperGetCollectionFilterUrl(baseUri, collectionId, filterId);\n};\n\nexport const helperGetSeriesDetailUrl = seriesUri => helperGetShowPageUrl(seriesUri, '');\n\n/**\n * Navigates to a show page uri\n * @param {String} uri - Code for the show page to load\n */\nexport const helperGoToShowDetail = uri => {\n browserHistory.push(helperGetShowUrl(uri));\n};\n\n/**\n * Navigates to a watch page\n * @param {String} uri - Video code that represents the video page to load\n */\nexport const helperGoToVideoDetail = (uri, hash = null) => {\n browserHistory.push(helperGetVideoUrl(uri, hash));\n};\n\n/**\n * Navigates to bio landing page\n * @param {String} showUri - the show id\n */\nexport const helperGoToBioLanding = showUri => {\n browserHistory.push(helperGetBioLandingUrl(showUri));\n};\n\n/**\n * Navigates to a uri\n * @param {String} uri - Uri to go to\n */\nexport const helperGoToRelativeUrl = uri => {\n browserHistory.push(uri);\n};\n\nconst helperRouteMapper = route => {\n const map = {\n 'video-detail': helperGetVideoUrl,\n 'movie-detail': helperGetMovieUrl,\n 'show-landing': helperGetShowUrl,\n 'article-detail': helperGetArticleUrl,\n 'gallery-detail': helperGetGalleryUrl,\n 'clip-detail': helperGetVideoUrl,\n player: helperGetVideoUrl,\n vodplayer: helperGetVideoUrl,\n 'series-detail': helperGetShowUrl,\n 'series-collection-detail': helperGetShowUrl,\n 'special-detail': helperGetShowUrl,\n categories: helperGetPersonalityUrl,\n };\n\n if (route) return map[route];\n return null;\n};\n\nconst map = {\n 'article-detail': helperGetShowArticleUrl,\n 'gallery-detail': helperGetShowGalleryUrl,\n};\nconst helperRouteShowMapper = route => {\n if (route) return map[route] || helperGetShowPageUrl;\n return null;\n};\n\n/**\n * Takes a fully-qualified URL as an argument and returns a relative URL\n * if the fully-qualified URL begins with window.ExternalConfig's baseScreenUrl\n */\nexport const helperGetRelativeUrl = ({ url = null, showCode = '', hash = '' }) => {\n if (!url) return null;\n const urlComponents = url.split('?');\n const uri = _.get(urlComponents, '0');\n let params = null;\n const screenTxt = '/screens/';\n const screenLocation = uri.indexOf(screenTxt);\n const isWatchUrl = url?.indexOf('/v2.0/watch') >= 0;\n const baseContentUrl = getBaseContentUrl();\n if (screenLocation > 0) {\n params = uri.substr(screenTxt.length + screenLocation).split('/');\n } else if (isWatchUrl) {\n const { videoId } = getUrlParams(url);\n params = ['vodplayer', videoId];\n } else if (baseContentUrl && uri.startsWith(baseContentUrl)) {\n params = uri\n .split(baseContentUrl)\n .pop()\n .split('/');\n }\n if (params) {\n const [key, id] = params;\n if (key && id) {\n let getRelativeUrl;\n let relativeUrl;\n if (showCode) {\n getRelativeUrl = helperRouteShowMapper(key);\n if (getRelativeUrl) relativeUrl = getRelativeUrl(showCode, id);\n } else {\n getRelativeUrl = helperRouteMapper(key);\n if (getRelativeUrl) relativeUrl = getRelativeUrl(id);\n }\n if (!relativeUrl) return null;\n if (hash) relativeUrl = `${relativeUrl}#${hash}`;\n return relativeUrl;\n }\n }\n return null;\n};\n\n/**\n * Checks to see if a trailing slash exist, if not, a trailing slash is added of the current url\n * @param {Function} replace - react router's helper function\n */\nconst helperForceTrailingSlash = replace => {\n const path = window.location.pathname;\n if (path.slice(-1) !== '/') {\n replace({\n ...window.location,\n pathname: `${path}/`,\n });\n }\n};\n\n/**\n * Checks if any of the matching routes has appView property set to true\n * @param {Array} - all Matching routes\n * @return {Boolean} - returns true or false based on whether any of the matching Routes is true\n */\nexport const isAppView = routes => _.some(routes, { appView: true });\nexport const isMaintenance = routes => _.some(routes, { maintenance: true });\nexport const isGeoLocationBlocked = routes => _.some(routes, { geolocationBlocked: true });\n\n/**\n * Checks if a component exists in the list of components that should be excluded when\n * appView is enabled\n * @param {String} - Component name\n * @return {Boolean} - True if component name exists in APPVIEW_EXCLUDE array. False otherwise.\n */\nexport const isAppViewExcluded = componentName => _.includes(APPVIEW_EXCLUDE, componentName);\n\nexport const getLocation = href => {\n const loc = document.createElement('a');\n loc.href = href;\n const { hostname, pathname } = loc;\n return {\n hostname,\n pathname,\n };\n};\n\nexport const refreshPage = () => {\n if (window && window.location && window.location.href) {\n window.location.href = window.location.href.replace(window.location.hash, '');\n }\n};\n\nexport const redirectToExternalUrl = externalUrl => {\n if (window && window.location && window.location.href) {\n window.location.href = externalUrl;\n }\n};\n\nexport const getCampaignOverrides = () => {\n const search = _.get(window, 'location.search');\n if (!search) return {};\n const searchParts = _.split(_.trimStart(search, '?'), '::');\n const overrides = {};\n const urlParamTypes = [\n { from: 'cmpid=org=', to: 'afSub2' },\n { from: 'ag=', to: 'afPrt' },\n { from: 'mc=', to: 'referral' },\n { from: 'src=', to: 'afChannel' },\n { from: 'cmp=', to: 'c' },\n { from: 'add=', to: 'afSub1' },\n ];\n _.forEach(searchParts, searchPart => {\n const typeIndex = _.findIndex(urlParamTypes, urlParamType =>\n _.startsWith(searchPart, urlParamType.from),\n );\n if (typeIndex >= 0) {\n const urlParamType = urlParamTypes[typeIndex];\n const paramValue = searchPart.substr(urlParamType.from.length);\n overrides[urlParamType.to] = paramValue;\n }\n });\n return overrides;\n};\n\nexport function onRouteChange(prevState, nextState, replace) {\n if (!window.player) window.player = {};\n const prevPath = _.get(prevState, 'location.pathname');\n helperForceTrailingSlash(replace);\n setOptOutCCPACookie();\n setSessionStorageItem({ key: LAST_SESSION_PATH, value: prevPath });\n}\n\nexport function getPreviousPathname() {\n return getSessionStorageItem({ key: LAST_SESSION_PATH });\n}\n\nexport function setSettingsPath(path) {\n setSessionStorageItem({ key: LAST_SETTING_PATH, value: path });\n}\n\nexport function getPreviousSettingPath() {\n return getSessionStorageItem({ key: LAST_SETTING_PATH });\n}\n\nexport const getDomain = () => {\n const urlItems = BaseUrl && BaseUrl.split('.');\n if (_.isEmpty(urlItems)) return null;\n urlItems.shift();\n const domain = urlItems.join('.');\n return domain;\n};\n\nconst urlAppParser = (locationObj, appUrl) => {\n if (!appUrl) return null;\n const url = locationObj.pathname;\n // Video Url\n if (_.includes(url, '/watch/')) {\n const watchUrl = url.slice(1);\n return `${appUrl}${watchUrl}`;\n }\n // Movie Url\n if (_.includes(url, '/movies/')) {\n const movieUrl = url.replace('/movies', 'movieDetail');\n return `${appUrl}${movieUrl}`;\n }\n // Series Detail Url - any character within / /\n if (url.match(/^\\/([^/]*)\\/$/)) {\n return `${appUrl}seriesDetail${url}`;\n }\n return appUrl;\n};\n\nexport const redirectSalesForceLinksiOS = () => {\n const brand = _.get(window.ExternalConfig, 'brand.businessUnit');\n const appLinks = {\n fox: 'foxapp://',\n };\n const appUrl = appLinks[brand];\n if (appUrl === undefined || !SalesforceMobileLinksRedirect) return;\n // iOS mobile devices only\n const UA = navigator.userAgent;\n const appUrlList = getAppUrlList({});\n const originalLink = window.location.href;\n const currentLocation = window.location;\n if (UA.match(/iPhone|iPod/i) != null || (UA.match(/iPad/) && _.get(appUrlList, 'ios'))) {\n // Only redirect email campaigns, prevent loop with hash\n // Redirect if the appLink fails\n if (\n _.includes(window.location.search, 'mc=email') &&\n !_.includes(window.location.search, '#noApp')\n ) {\n const deepLink = urlAppParser(currentLocation, appUrl);\n setTimeout(() => {\n window.location = `${originalLink}#noApp`;\n }, 200);\n window.location = deepLink;\n }\n }\n};\n\nconst getExternalSignInUrl = () => _.get(window.ExternalConfig, 'externalSignInUrl');\n\nexport const goToExternalSignIn = () => {\n const signInUrl = getExternalSignInUrl();\n window.location = signInUrl;\n};\n\nexport const getAuthRedirectUrl = () => {\n const baseUrlSlug = helperGetBaseUrlSlug();\n return `${BaseUrl}${baseUrlSlug}/static/html/auth_success_landing.html`;\n};\n\nexport const getUrlParamsFromHash = hash => {\n const hashString = _.replace(hash, '#', '');\n const hashSegments = hashString.split('&');\n const params = {};\n _.forEach(hashSegments, param => {\n const items = param.split('=');\n const key = items[0];\n const value = items[1];\n params[key] = value;\n });\n return params;\n};\n\nexport const getUrlParams = url => {\n const params = {};\n if (!url || !_.includes(url, '?')) return params;\n const paramString = url.split('?').pop();\n const paramPairs = paramString.split('&');\n _.forEach(paramPairs, pair => {\n const pairArray = pair.split('=');\n const key = pairArray[0];\n const value = pairArray[1];\n if (key && value) params[key] = value;\n });\n return params;\n};\n\nexport const removeUnsafeUrlParams = () => {\n const searchString = window.location.search;\n if (searchString) {\n const params = getUrlParams(searchString);\n const removeUnsafeEmailParam = _.get(params, 'email');\n if (removeUnsafeEmailParam) {\n _.unset(params, 'email');\n const newSearchParams = _.map(params, (value, key) => `${key}=${value}`);\n const newSearchString = _.isEmpty(newSearchParams) ? '' : `?${newSearchParams.join('&')}`;\n if (newSearchString !== searchString) {\n const newUrl = window.location.href.replace(searchString, newSearchString);\n window.location.replace(newUrl);\n }\n }\n }\n};\nconst getCurrentPath = () => _.get(window, 'location.pathname');\n\nexport const isUrlPath = path => {\n const currentPath = getCurrentPath();\n return currentPath === path;\n};\n\nexport const isHomeRoute = str => {\n const featuredPath = /\\/featured((\\/\\w+)+|\\/?)$/;\n const homePath = /^\\/$/;\n return [featuredPath, homePath].some(regex => regex.test(str));\n};\n\nexport const setPathForReEntryRedirect = (path = null) => {\n if (path === '/') return;\n const currentPath = getCurrentPath();\n const value = path || currentPath;\n setCookie({ name: COOKIE_SET_PATH_FOR_RE_ENTRY_REDIRECT, value, options: { path: '/' } });\n};\n\nexport const isFoxSoulResetPasswordPage = window.location.pathname.includes(\n 'reset-password/fox-soul',\n);\n\nexport const isResetPage = window.location.pathname.includes('reset-password/');\n","import _ from 'lodash';\nimport {\n formatAiredDate,\n formatDurationInSeconds,\n formatMetadata,\n formatMovieMetadata,\n formatRating,\n formatSeasonEpisode,\n formatSubRatings,\n getItemBadge,\n} from 'helpers/VideoHelper';\nimport {\n getNetworkLogoUrl,\n getContentTypeName,\n getVideoTypeName,\n isClip,\n isMovie,\n getDisplayBrand,\n isSportsContent,\n} from 'helpers/ContentHelper';\nimport { stringToDate, isBetween, now } from 'helpers/DateTimeHelper';\nimport { isPlayerTypeHero } from 'helpers/PlayerHelper';\nimport videoContainerHeroTheme from './VideoContainerHero.module.scss';\nimport videoContainerStandardTheme from './VideoContainerStandard.module.scss';\n\nexport const getVideoContainerTheme = type =>\n isPlayerTypeHero(type) ? videoContainerHeroTheme : videoContainerStandardTheme;\nexport const getShouldCheckPreviewPass = type => !isPlayerTypeHero(type);\nexport const getShouldDisablePreviewPassRender = type => isPlayerTypeHero(type);\n\nexport const getVideoDetailProps = item => {\n if (!item) return null;\n\n const type = _.get(item, 'videoType', null);\n const name = _.get(item, 'name');\n const showCode = _.get(item, 'showCode');\n const description = _.get(item, 'description');\n const dateCreated = _.get(item, 'dateCreated');\n const originalAirDate = _.get(item, 'originalAirDate');\n const durationInSeconds = _.get(item, 'durationInSeconds');\n const subRatings = _.get(item, 'subRatings', []);\n const releaseYear = _.get(item, 'releaseYear');\n const contentRating = _.get(item, 'contentRating');\n const contentSKU = _.get(item, 'contentSKU') || _.get(item, 'contentSKUResolved', []);\n const network = _.get(item, 'network');\n const showNetworkBug = _.get(item, 'showNetworkBug', false);\n const seriesName = _.get(item, 'seriesName', name);\n const seriesType = _.get(item, 'seriesType');\n const sportTag = _.get(item, 'sportTag', null);\n const tuneIn = _.get(item, 'tuneIn', null);\n const actors = _.get(item, 'actors', null);\n const videoName = _.get(item, 'headline', name);\n const seriesScreenUrl = _.get(item, 'seriesScreenUrl');\n const creditCuePoint = _.get(item, 'creditCuePoint', null);\n const recommendationId = _.get(item, 'trackingData.properties.recommendationId', null);\n const displaySeasonAndEpisodeCounts = _.get(item, 'displaySeasonAndEpisodeCounts', true);\n const favoritableItems = _.get(item, 'favoritableItems');\n const videoTypeName = getVideoTypeName(type);\n const displayBrand = getDisplayBrand(item);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const duration = formatDurationInSeconds(durationInSeconds);\n const originalDate = isClip(type) ? dateCreated : originalAirDate;\n const seasonEpisode = displaySeasonAndEpisodeCounts\n ? formatSeasonEpisode(item.seasonNumber, item.episodeNumber)\n : '';\n const airDate = formatAiredDate(originalDate, '', 'M-D-YYYY');\n const rating = formatRating(contentRating);\n const badge = getItemBadge(item);\n const formatedSubRating = formatSubRatings(subRatings);\n const isSeriesDetailAvailable = _.get(item, 'isSeriesDetailAvailable', true);\n const ratingText = !rating && !formatedSubRating ? null : `${rating} ${formatedSubRating}`;\n const movieMetadataParams = { releaseYear, contentRating, subRatings, durationInSeconds };\n const movieMetadata = formatMovieMetadata(movieMetadataParams);\n const seriesMetadata = formatMetadata([airDate, ratingText, duration]);\n const metadata = isMovie(type) ? movieMetadata : seriesMetadata;\n const itemType = getContentTypeName(type);\n const title = seriesName;\n const subTitle = `${seasonEpisode}${videoName}`;\n const sportsSubTitle = isSportsContent(item) ? sportTag : null;\n const selectedSubtitle = sportsSubTitle || subTitle;\n const showSubtitle =\n title && title.toLowerCase() === selectedSubtitle.toLowerCase() ? null : selectedSubtitle;\n\n const props = {\n showCode,\n title,\n showSubtitle,\n metadata,\n description,\n badge,\n networkIcon,\n videoTypeName,\n tuneIn,\n actors,\n itemType,\n isSeriesDetailAvailable,\n type,\n network,\n seriesName,\n seriesType,\n seriesScreenUrl,\n showNetworkBug,\n creditCuePoint,\n contentSKU,\n recommendationId,\n favoritableItems,\n };\n return props;\n};\n\nexport const getEndCardDuration = video => {\n if (!video) return null;\n const { creditCuePoint, videoType } = video;\n\n const {\n upNextDurationSeries,\n upNextDurationMovie,\n upNextDurationDefault,\n } = window.ExternalConfig;\n\n const noCreditCuePointUpNextDuration = 30;\n\n if (!creditCuePoint) return noCreditCuePointUpNextDuration;\n if (creditCuePoint <= upNextDurationSeries - 1) return creditCuePoint;\n if (creditCuePoint) return upNextDurationDefault;\n return isMovie(videoType) ? upNextDurationMovie : upNextDurationSeries;\n};\n\nexport const isVideoLive = video => {\n const startDate = _.get(video, 'startDate', null);\n const endDate = _.get(video, 'endDate', null);\n\n if (!startDate || !endDate) return false;\n\n const starts = stringToDate(startDate);\n const ends = stringToDate(endDate);\n const current = now();\n const result = isBetween(current, starts, ends);\n\n return result;\n};\n\nexport const getLiveVideo = ({ nextVideos }) => {\n if (!nextVideos) return null;\n const liveVideos = nextVideos.filter(video => isVideoLive(video));\n return liveVideos[0];\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport WatchList, { FAVORITE_TYPE_WATCHLIST } from 'components/Favorite';\nimport { noop } from 'helpers/GlobalHelper';\nimport Style from './ActionButtons.module.scss';\n\nconst ActionButtons = ({\n favoriteData = null,\n favorites = null,\n favoritesManager = null,\n handleSetFavorite = () => {},\n hasSeries = false,\n hoverStateWatchlistText = '',\n iconType = '',\n isOnlyInfo = false,\n isOnlyWatchList = false,\n link = '',\n moreInfoAria = '',\n moreInfoText = '',\n onMoreInfoClick = () => {},\n render = true,\n segmentPlaylistButtonAction = () => {},\n}) => {\n const hoverStateToolTip = (label, toolTipClassName, isRightJustified) => (\n <div\n className={classNames([\n Style.hoverStateToolTip,\n toolTipClassName,\n isRightJustified && Style.hoverStateToolTipRight,\n ])}\n >\n <div className={Style.hoverStateToolTipLabel}>{label}</div>\n <div className={Style.hoverStateToolTipTip} />\n </div>\n );\n return (\n render && (\n <div className={Style.hoverStateActionButtons}>\n {hasSeries && (\n <div\n className={classNames([\n Style.infoButton,\n isOnlyInfo ? Style.rightActionButton : Style.leftActionButton,\n ])}\n >\n <Link\n onClick={onMoreInfoClick}\n onMouseDown={e => (e.button === 1 ? onMoreInfoClick() : noop)}\n to={link}\n className={classNames(Style.infoButtonLink)}\n >\n <Icon\n ariaLabel={moreInfoAria}\n color=\"white\"\n icon=\"info-thin\"\n role=\"link\"\n size=\"full\"\n viewBox=\"0 0 26 26\"\n />\n </Link>\n {hoverStateToolTip(moreInfoText, Style.infoToolTip, isOnlyInfo)}\n </div>\n )}\n {!isOnlyInfo && (\n <div className={classNames([Style.watchListButton, Style.rightActionButton])}>\n <span className={Style.watchListButtonContainer}>\n <WatchList\n type={FAVORITE_TYPE_WATCHLIST}\n stopNavigationOnClick\n manager={favoritesManager}\n iconType={iconType}\n favorites={favorites}\n data={favoriteData}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n setFavorite={handleSetFavorite}\n />\n </span>\n {hoverStateToolTip(hoverStateWatchlistText, Style.watchListToolTip, isOnlyWatchList)}\n </div>\n )}\n </div>\n )\n );\n};\n\nActionButtons.propTypes = {\n favoriteData: PropTypes.shape({}),\n favorites: PropTypes.arrayOf(PropTypes.shape({})),\n favoritesManager: PropTypes.shape({}),\n handleSetFavorite: PropTypes.func,\n hasSeries: PropTypes.bool,\n hoverStateWatchlistText: PropTypes.string,\n iconType: PropTypes.string,\n isOnlyInfo: PropTypes.bool,\n isOnlyWatchList: PropTypes.bool,\n link: PropTypes.string,\n moreInfoAria: PropTypes.string,\n moreInfoText: PropTypes.string,\n onMoreInfoClick: PropTypes.func,\n render: PropTypes.bool,\n segmentPlaylistButtonAction: PropTypes.func,\n};\n\nexport default ActionButtons;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Detail = ({ children, theme }) => <div className={theme.details}>{children}</div>;\n\nexport default Detail;\n\nDetail.propTypes = {\n children: PropTypes.node,\n theme: PropTypes.shape({}),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Metadata = ({ metadata, theme }) => <div className={theme.metadata}>{metadata}</div>;\n\nMetadata.propTypes = {\n metadata: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n};\n\nexport default Metadata;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport { noop } from 'helpers/GlobalHelper';\n\nconst MobilePlayButton = ({ theme, text, render, link = null, playButtonClick = noop }) => {\n if (!render) return null;\n return (\n <div className={theme.play}>\n <div\n aria-label=\"play button\"\n onMouseDown={e => (e.button === 1 ? playButtonClick() : noop)}\n onClick={playButtonClick}\n >\n <Icon icon=\"play-button\" color=\"white\" size=\"full\" />\n {text && <div className={theme.playText}>{text}</div>}\n </div>\n </div>\n );\n};\n\nMobilePlayButton.propTypes = {\n link: PropTypes.string,\n playButtonClick: PropTypes.func,\n render: PropTypes.bool,\n text: PropTypes.string,\n theme: PropTypes.shape({}),\n};\n\nexport default MobilePlayButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Link } from 'react-router';\nimport CallSign from 'components/CallSign';\nimport { redirectToExternalUrl, helperGoToRelativeUrl } from 'helpers/RouteHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport { isInternalLink } from 'helpers/ContentHelper';\nimport Style from './NetworkBubble.module.scss';\n\nconst NetworkBubble = ({ callSign = '', link = '', showNetworkIcon = false }) => {\n if (!callSign || !showNetworkIcon) return null;\n const networkLogoStyle = [Style.networkLogoBubble];\n if (isBrowserIE()) networkLogoStyle.push(Style.networkLogoBubbleIE);\n const navigateToURL = () => {\n if (isInternalLink(link)) {\n helperGoToRelativeUrl(link);\n }\n redirectToExternalUrl(link);\n };\n return (\n <Link\n onClick={navigateToURL}\n className={Style.networkLogoBubbleContainer}\n style={link ? null : { pointerEvents: 'none' }}\n >\n <div className={classNames(networkLogoStyle)}>\n <div className={Style.networkLogoBubbleIcon}>\n <CallSign callSign={callSign} color=\"white\" />\n </div>\n </div>\n </Link>\n );\n};\n\nexport default NetworkBubble;\n\nNetworkBubble.propTypes = {\n callSign: PropTypes.string,\n link: PropTypes.string,\n showNetworkIcon: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Overlay = ({ children, render, theme }) =>\n render ? <div className={theme.overlayContainer}>{children}</div> : null;\n\nexport default Overlay;\n\nOverlay.propTypes = {\n children: PropTypes.node,\n render: PropTypes.bool,\n theme: PropTypes.shape({}),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { noop } from 'helpers/GlobalHelper';\n\nconst PlayButton = ({\n playButtonClick = () => {},\n render = false,\n theme = {},\n thinIcon = true,\n}) => {\n if (!render) return null;\n let icon = 'play-button';\n let viewBox = null;\n if (thinIcon) {\n icon = 'play-button-thin';\n viewBox = '1 1 36 36';\n }\n return (\n <div className={theme.playButtonOverlay}>\n <div\n aria-label=\"play button\"\n className={classNames([theme.playButton])}\n onMouseDown={e => (e.button === 1 ? playButtonClick() : noop)}\n onClick={playButtonClick}\n >\n <Icon icon={icon} color=\"white\" size=\"full\" viewBox={viewBox} />\n </div>\n </div>\n );\n};\n\nPlayButton.propTypes = {\n playButtonClick: PropTypes.func,\n render: PropTypes.bool,\n theme: PropTypes.shape({}),\n thinIcon: PropTypes.bool,\n};\n\nexport default PlayButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SharedProgressBar from 'components/ProgressBar';\n\nconst ProgressBar = ({\n endDate = '',\n startDate = '',\n percentWatched = null,\n showProgressBar: renderProgressBar = false,\n theme = {},\n}) => {\n const videoHasPercentWatched = typeof percentWatched === 'number' && percentWatched >= 0;\n const showProgressBar = videoHasPercentWatched || renderProgressBar;\n if (!showProgressBar) return null;\n\n return (\n <SharedProgressBar\n data-test=\"tile-progress-bar\"\n endDate={endDate}\n percentWatched={percentWatched}\n startDate={startDate}\n theme={theme}\n />\n );\n};\n\nProgressBar.propTypes = {\n endDate: PropTypes.string,\n startDate: PropTypes.string,\n percentWatched: PropTypes.number,\n showProgressBar: PropTypes.bool,\n theme: PropTypes.shape({}),\n};\n\nexport default ProgressBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Dotdotdot from 'react-dotdotdot';\nimport classNames from 'classnames';\nimport ReadMore from 'components/ReadMore';\nimport { isInternalLink } from 'helpers/ContentHelper';\n\nconst Subtitle = props => {\n const {\n isDisabled,\n isRedirect,\n link,\n onSubtitleClick,\n onTileMouseDown,\n subtitle,\n subtitleLines,\n target,\n theme,\n truncateSubtitle,\n } = props;\n let subtitleLink = link;\n const subTitleClasses = [theme.subtitle];\n if (!subtitle || subtitle.length === 0) return null;\n let subtitleText;\n if (truncateSubtitle) {\n subtitleText = (\n <ReadMore moreText=\"More\" lessText=\"Less\" lines={subtitleLines || 2} theme={theme}>\n {subtitle}\n </ReadMore>\n );\n } else {\n subtitleText = subtitleLines ? (\n <Dotdotdot clamp={subtitleLines}>{subtitle}</Dotdotdot>\n ) : (\n subtitle\n );\n }\n if (!link || truncateSubtitle || isDisabled) {\n return <div className={classNames([theme.subtitle, theme.disabled])}>{subtitleText}</div>;\n }\n if (isRedirect) {\n subtitleLink = null;\n subTitleClasses.push(theme.redirectLink);\n }\n const onClick = () => {\n if (onSubtitleClick) {\n onSubtitleClick();\n }\n };\n\n if (isInternalLink(subtitleLink)) {\n return (\n <Link\n to={subtitleLink}\n target={target}\n className={classNames(subTitleClasses)}\n onClick={onClick}\n onMouseDown={onTileMouseDown}\n >\n {subtitleText}\n </Link>\n );\n }\n\n return (\n <a\n href={subtitleLink}\n className={classNames(subTitleClasses)}\n onClick={onClick}\n onMouseDown={onTileMouseDown}\n >\n {subtitleText}\n </a>\n );\n};\n\nSubtitle.defaultProps = {\n isDisabled: false,\n isRedirect: false,\n link: null,\n onSubtitleClick: () => {},\n subtitle: null,\n subtitleLines: null,\n target: null,\n theme: {},\n truncateSubtitle: null,\n};\n\nSubtitle.propTypes = {\n isDisabled: PropTypes.bool,\n isRedirect: PropTypes.bool,\n link: PropTypes.string,\n onSubtitleClick: PropTypes.func,\n onTileMouseDown: PropTypes.func,\n subtitle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n subtitleLines: PropTypes.number,\n target: PropTypes.string,\n theme: PropTypes.shape({}),\n truncateSubtitle: PropTypes.bool,\n};\n\nexport default Subtitle;\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { renderImage, getDynamicImage, COLLECTION_THUMBNAIL_IMAGE } from 'helpers/ImageHelper';\n\nconst TileImage = ({\n altText = '',\n breakpoint,\n context = COLLECTION_THUMBNAIL_IMAGE,\n image,\n name,\n theme,\n}) => {\n const imageTagClasses = [theme.image];\n const tileImage = renderImage({\n alt: altText || name,\n className: classNames(imageTagClasses),\n dataTest: 'tile-image',\n style: {\n background:\n 'linear-gradient(0deg, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0) 80%, rgba(0, 0, 0, 0))',\n },\n src: getDynamicImage({\n breakpoint,\n url: image,\n context,\n }),\n });\n return tileImage;\n};\n\nTileImage.propTypes = {\n altText: PropTypes.string,\n breakpoint: PropTypes.string,\n context: PropTypes.string,\n image: PropTypes.string,\n isHover: PropTypes.bool,\n name: PropTypes.string,\n theme: PropTypes.shape({}),\n};\n\nexport default TileImage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Dotdotdot from 'react-dotdotdot';\nimport classNames from 'classnames';\nimport { isMobileBreakpoint } from 'helpers/BreakpointHelper';\nimport { isInternalLink } from 'helpers/ContentHelper';\n\nconst TileTitle = ({\n breakpoint,\n isDisabled,\n isRedirect,\n isSeriesDetailAvailable,\n isUpcoming,\n link,\n onClick,\n onTileMouseDown,\n Style,\n target,\n title,\n titleLines,\n}) => {\n if (!title || title.length === 0) return null;\n let titleLink = link;\n const titleClasses = [Style.title];\n const shouldUseNativeClamp = isMobileBreakpoint(breakpoint);\n const titleClass = isDisabled ? classNames([Style.title, Style.disabled]) : Style.title;\n const text = titleLines ? (\n <div className={Style.ellipsisTitle} data-test=\"dotdotdot-container\">\n <Dotdotdot useNativeClamp={shouldUseNativeClamp} clamp={titleLines}>\n {title}\n </Dotdotdot>\n </div>\n ) : (\n title\n );\n if (!link || isDisabled) return <div className={titleClass}>{text}</div>;\n if (isRedirect) {\n titleLink = null;\n titleClasses.push(Style.redirectLink);\n }\n\n if (isUpcoming && isSeriesDetailAvailable === false) {\n titleLink = null;\n } else {\n titleClasses.push(Style.titleV2);\n }\n\n if (isInternalLink(titleLink)) {\n return (\n <Link\n onClick={onClick}\n onMouseDown={onTileMouseDown}\n to={titleLink}\n target={target}\n className={classNames(titleClasses)}\n >\n {text}\n </Link>\n );\n }\n return (\n <a\n onClick={onClick}\n onMouseDown={onTileMouseDown}\n href={titleLink}\n className={classNames(titleClasses)}\n >\n {text}\n </a>\n );\n};\n\nexport default TileTitle;\n\nTileTitle.propTypes = {\n breakpoint: PropTypes.string,\n isDisabled: PropTypes.bool,\n isRedirect: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n isUpcoming: PropTypes.bool,\n link: PropTypes.string,\n onClick: PropTypes.func,\n onTileMouseDown: PropTypes.func,\n Style: PropTypes.shape({}).isRequired,\n target: PropTypes.string,\n title: PropTypes.node,\n titleLines: PropTypes.number,\n};\n","/* eslint-disable import/prefer-default-export */\nimport {\n COLLECTION_TYPE_LOCAL_CLIPS,\n setLocalChannelCookies,\n setOutOfMarketLocalCookies,\n} from 'helpers/ContentHelper';\nimport {\n callSegmentPlayerEvent,\n SegmentPlayerStates,\n SegmentVideoEvents,\n} from '@foxcorp/delta-web-analytics';\nimport { getActivePlayer, getPlayerState } from 'helpers/PlayerHelper';\nimport { isTabletBreakpoint, isMobileBreakpoint } from 'helpers/BreakpointHelper';\nimport { SEARCH_TILE, LIVE_TILE } from '../index';\n\nexport const titleProcessor = ({\n breakpoint,\n isDisabled,\n isRedirect,\n isSeriesDetailAvailable,\n isUpcoming,\n target,\n title,\n titleLines,\n type,\n}) => {\n let titleInfo = {\n isDisabled,\n isRedirect,\n isSeriesDetailAvailable,\n isUpcoming,\n target,\n title,\n titleLines,\n };\n\n switch (type) {\n case SEARCH_TILE:\n break;\n case LIVE_TILE:\n titleInfo = {\n ...titleInfo,\n breakpoint,\n };\n break;\n default:\n }\n return titleInfo;\n};\n\nconst defaultPlayButtonClick = props => {\n const { segmentPlaylistButtonAction } = props;\n segmentPlaylistButtonAction();\n const currentPlayerState = getPlayerState(getActivePlayer());\n if (currentPlayerState === 'PLAYING' || currentPlayerState === 'AD') {\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props: {\n method: 'browser action',\n video_player_state: SegmentPlayerStates.PAUSE,\n },\n });\n }\n};\n\nconst playButtonClickLive = props => {\n const { collectionType, contentId, headline, isUserOutOfMarket, playerScreenUrl } = props;\n const isCollectionTypeLocalClip = collectionType === COLLECTION_TYPE_LOCAL_CLIPS;\n\n if (isUserOutOfMarket) {\n setOutOfMarketLocalCookies(props?.originalItem);\n }\n\n if (isCollectionTypeLocalClip) {\n setLocalChannelCookies({ headline, playerScreenUrl, videoId: contentId });\n }\n};\n\nexport const playButtonClickProcessor = ({ type, props }) => {\n let result = () => {};\n switch (type) {\n case LIVE_TILE:\n result = () => {\n playButtonClickLive(props);\n defaultPlayButtonClick(props);\n };\n break;\n default:\n result = () => defaultPlayButtonClick(props);\n break;\n }\n return result;\n};\n\nexport const isMobileDevice = breakpoint =>\n isMobileBreakpoint(breakpoint) || isTabletBreakpoint(breakpoint);\n","import React, { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport { browserHistory } from 'react-router';\nimport { SegmentUiElements, SegmentPageActionTypes } from '@foxcorp/delta-web-analytics';\nimport { SHOW_STATE_CLIP, SHOW_STATE_UPCOMING } from 'helpers/BadgeHelper';\nimport {\n helperGetRelativeUrl,\n redirectToExternalUrl,\n LAST_SESSION_PATH,\n} from 'helpers/RouteHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { COLLECTION_THUMBNAIL_LIVE_IMAGE } from 'helpers/ImageHelper';\nimport {\n COLLECTION_TYPE_GENRE,\n COLLECTION_TYPE_LIVE,\n COLLECTION_TYPE_LOCAL_CLIPS,\n isInternalLink,\n} from 'helpers/ContentHelper';\nimport { setSessionStorageItem } from 'helpers/Storage';\nimport { isVideoLive } from 'components/VideoPlayerGlobal/Helper';\nimport { FAVORITE_PLUS_HOVER } from 'components/Favorite';\nimport Badge from 'components/Badge';\nimport {\n ActionButtons,\n Detail,\n MobilePlayButton,\n NetworkBubble,\n Overlay,\n PlayButton,\n ProgressBar,\n Subtitle,\n TileImage,\n TileTitle,\n} from '../../../components';\nimport {\n isMobileDevice,\n playButtonClickProcessor,\n titleProcessor,\n} from '../../../helpers/processorHelper';\nimport Style from '../../../Styles/LiveTile.module.scss';\n\nconst LiveTile = props => {\n const {\n account,\n altText,\n badge,\n breakpoint,\n callSign,\n collectionType,\n disableHoverStateActionButtons,\n endDate,\n favoritesManager,\n gridIndex,\n gridTitle,\n hoverImage,\n image,\n isAnonymous,\n isRedirect,\n isSeries,\n isSeriesDetailAvailable,\n itemIndex,\n link,\n name,\n network,\n onTileClick,\n onTitleClick,\n onTileMouseDown,\n originalItem,\n overlayProps,\n percentWatched,\n recommendationIdData,\n scaleFromLeft,\n scaleFromRight,\n segmentPlaylistButtonAction,\n seriesName,\n seriesScreenUrl,\n showCode,\n showLiveProgressBar,\n startDate,\n subtitle,\n subtitleLines,\n subtitleText,\n target,\n theme,\n title,\n titleLink,\n titleText,\n truncateSubtitle,\n type,\n videoType,\n } = props;\n const [favorited, setFavorited] = useState(false);\n const titleLinkVal = titleLink || link;\n const imageContainerClasses = [Style.imageContainer, Style.maintainAspectRatio];\n if (scaleFromLeft) imageContainerClasses.push(Style.scaleFromLeft);\n if (scaleFromRight) imageContainerClasses.push(Style.scaleFromRight);\n\n const onSubtitleOnClick = useCallback(() => {\n if (onTileClick) {\n onTileClick({\n account,\n name,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n titleText,\n uiElement: SegmentUiElements.SERIES_EPISODE,\n });\n }\n }, [\n onTileClick,\n originalItem,\n name,\n percentWatched,\n account,\n subtitleText,\n titleText,\n recommendationIdData,\n ]);\n\n const onTileTitleClick = useCallback(() => {\n setSessionStorageItem({ key: LAST_SESSION_PATH, value: window.location.pathname });\n onTileClick({ uiElement: SegmentUiElements.SERIES_EPISODE });\n if (onTitleClick) {\n onTitleClick({\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n uiElement: SegmentUiElements.SERIES_TITLE,\n });\n }\n }, [\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n onTileClick,\n onTitleClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n ]);\n\n const onMoreInfoClick = () => {\n segmentPlaylistButtonAction({\n actionType: SegmentPageActionTypes.MORE_EPISODES,\n uiElement: SegmentUiElements.INFO,\n });\n };\n\n const titleOptions = {\n ...titleProcessor(props),\n link: titleLinkVal,\n onClick: onTileTitleClick,\n onTileMouseDown,\n Style,\n };\n const isMobile = isMobileDevice(breakpoint);\n const isNotUpcoming = badge !== SHOW_STATE_UPCOMING;\n const favorites = _.get(favoritesManager, 'favorites');\n const moreInfoText = videoType === 'clip' ? 'More Info' : 'More Episodes';\n const isLocalClip = collectionType === COLLECTION_TYPE_LOCAL_CLIPS;\n const seriesUrl = seriesScreenUrl ? helperGetRelativeUrl({ url: seriesScreenUrl }) : titleLinkVal;\n const isGenre = collectionType === COLLECTION_TYPE_GENRE;\n const isLiveCollection = collectionType === COLLECTION_TYPE_LIVE;\n const isFavorited = favorited || _.find(favorites, ({ favoriteID }) => favoriteID === showCode);\n const currentLink = isSeries ? titleLinkVal : link;\n const shouldRenderPlayButton =\n !isMobile && !isGenre && (!isLiveCollection || (isLiveCollection && isVideoLive(originalItem)));\n\n const favoriteData = {\n ...(overlayProps?.favoriteData || {}),\n titleText: seriesName,\n subtitleText,\n };\n const playButtonClick = () => {\n playButtonClickProcessor({ type, props })();\n if (isInternalLink(currentLink)) {\n browserHistory.push(currentLink);\n } else {\n redirectToExternalUrl(currentLink);\n }\n };\n\n return (\n <div className={theme.tile}>\n <div\n className={classNames(imageContainerClasses)}\n onClick={() => {\n if (isMobile) {\n playButtonClick();\n }\n }}\n >\n <TileImage\n breakpoint={breakpoint}\n context={COLLECTION_THUMBNAIL_LIVE_IMAGE}\n image={image || hoverImage}\n altText={altText}\n theme={Style}\n />\n <div className={Style.liveTileShadow} />\n <Badge theme={Style} badge={badge} />\n <ProgressBar\n endDate={endDate}\n percentWatched={percentWatched}\n showProgressBar={showLiveProgressBar}\n startDate={startDate}\n />\n <Overlay theme={Style} render={!isMobile}>\n <ActionButtons\n favoriteData={favoriteData}\n favorites={favorites}\n favoritesManager={favoritesManager}\n handleSetFavorite={fav => setFavorited(!!fav)}\n hasSeries={!isSeries && isSeriesDetailAvailable !== false}\n hoverStateWatchlistText={isFavorited ? 'Added to Watchlist' : 'Add to Watchlist'}\n iconType={FAVORITE_PLUS_HOVER}\n isOnlyInfo={!favorites || badge === SHOW_STATE_CLIP}\n isOnlyWatchList={isSeries || isSeriesDetailAvailable === false}\n link={seriesUrl}\n moreInfoAria={`${moreInfoText} ${seriesName}`}\n moreInfoText={moreInfoText}\n onMoreInfoClick={onMoreInfoClick}\n render={!isGenre && !disableHoverStateActionButtons && !isLocalClip && !isAnonymous}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n />\n <PlayButton\n playButtonClick={playButtonClick}\n render={shouldRenderPlayButton}\n theme={Style}\n />\n </Overlay>\n {isNotUpcoming && (\n <MobilePlayButton theme={Style} render={isMobile} playButtonClick={playButtonClick} />\n )}\n </div>\n <Detail theme={Style}>\n <div className={classNames([Style.info, Style.infoExtended])}>\n <NetworkBubble callSign={callSign} link={link} showNetworkIcon />\n <div className={Style.rightDetails}>\n <TileTitle {...titleOptions} />\n <Subtitle\n isDisabled={false}\n isRedirect={isRedirect}\n link={link}\n onClick={onSubtitleOnClick}\n onTileMouseDown={onTileMouseDown}\n subtitle={subtitle}\n subtitleLines={subtitleLines}\n target={target}\n theme={Style}\n truncateSubtitle={truncateSubtitle}\n />\n </div>\n </div>\n </Detail>\n </div>\n );\n};\n\nexport default LiveTile;\n\nLiveTile.propTypes = {\n account: PropTypes.shape({}),\n altText: PropTypes.string,\n badge: PropTypes.string,\n breakpoint: PropTypes.string.isRequired,\n callSign: PropTypes.string,\n collectionType: PropTypes.string,\n disableHoverStateActionButtons: PropTypes.bool,\n endDate: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n gridIndex: PropTypes.number,\n gridTitle: PropTypes.string,\n hoverImage: PropTypes.string,\n image: PropTypes.string,\n isAnonymous: PropTypes.bool,\n isRedirect: PropTypes.bool,\n isSeries: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n itemIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n link: PropTypes.string,\n name: PropTypes.string,\n network: PropTypes.string,\n onTileClick: PropTypes.func,\n onTitleClick: PropTypes.func,\n onTileMouseDown: PropTypes.func,\n originalItem: PropTypes.shape({}),\n overlayProps: PropTypes.shape({}),\n percentWatched: PropTypes.number,\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n segmentPlaylistButtonAction: PropTypes.func,\n seriesName: PropTypes.string,\n seriesScreenUrl: PropTypes.string,\n showCode: PropTypes.string,\n showLiveProgressBar: PropTypes.bool,\n startDate: PropTypes.string,\n subtitle: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n subtitleLines: PropTypes.number,\n subtitleText: PropTypes.string,\n target: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n titleLink: PropTypes.string,\n titleText: PropTypes.string,\n truncateSubtitle: PropTypes.bool,\n type: PropTypes.string,\n videoType: PropTypes.string,\n};\n\nLiveTile.defaultProps = {\n account: {},\n altText: null,\n badge: null,\n callSign: null,\n collectionType: null,\n disableHoverStateActionButtons: false,\n endDate: null,\n favoritesManager: {},\n gridIndex: null,\n gridTitle: null,\n hoverImage: null,\n image: null,\n isAnonymous: false,\n isRedirect: false,\n isSeries: false,\n isSeriesDetailAvailable: false,\n itemIndex: null,\n link: null,\n name: null,\n network: null,\n onTileClick: noop,\n onTitleClick: noop,\n onTileMouseDown: noop,\n originalItem: null,\n overlayProps: null,\n percentWatched: null,\n recommendationIdData: null,\n scaleFromLeft: false,\n scaleFromRight: false,\n segmentPlaylistButtonAction: noop,\n seriesName: null,\n seriesScreenUrl: null,\n showCode: null,\n showLiveProgressBar: false,\n startDate: null,\n subtitle: null,\n subtitleLines: null,\n subtitleText: null,\n target: null,\n title: null,\n titleLink: null,\n titleText: null,\n truncateSubtitle: false,\n type: null,\n videoType: null,\n};\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Link } from 'react-router';\nimport { SegmentUiElements } from '@foxcorp/delta-web-analytics';\nimport { LAST_SESSION_PATH } from 'helpers/RouteHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { COLLECTION_TYPE_GENRE, COLLECTION_TYPE_LIVE, isInternalLink } from 'helpers/ContentHelper';\nimport { setSessionStorageItem } from 'helpers/Storage';\n\nimport Badge from 'components/Badge';\nimport {\n Detail,\n Metadata,\n MobilePlayButton,\n Overlay,\n PlayButton,\n ProgressBar,\n Subtitle,\n TileImage,\n TileTitle,\n} from '../../../components';\nimport {\n isMobileDevice,\n playButtonClickProcessor,\n titleProcessor,\n} from '../../../helpers/processorHelper';\nimport Style from '../../../Styles/SeasonTile.module.scss';\n\nconst SeasonTile = props => {\n const {\n account,\n altText,\n badge,\n breakpoint,\n collectionType,\n gridIndex,\n gridTitle,\n hoverImage,\n image,\n isRedirect,\n isSeasons,\n isSeries,\n itemIndex,\n link,\n metadata,\n name,\n network,\n onTileClick,\n onTitleClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n scaleFromLeft,\n scaleFromRight,\n subtitle,\n subtitleLines,\n subtitleText,\n target,\n theme,\n title,\n titleLink,\n titleText,\n truncateSubtitle,\n type,\n } = props;\n const titleLinkVal = titleLink || link;\n const imageContainerClasses = [Style.imageContainer, Style.maintainAspectRatio];\n if (scaleFromLeft) imageContainerClasses.push(Style.scaleFromLeft);\n if (scaleFromRight) imageContainerClasses.push(Style.scaleFromRight);\n\n const onSubtitleOnClick = useCallback(() => {\n if (onTileClick) {\n onTileClick({\n account,\n name,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n titleText,\n uiElement: SegmentUiElements.SERIES_EPISODE,\n });\n }\n }, [\n onTileClick,\n originalItem,\n name,\n percentWatched,\n account,\n subtitleText,\n titleText,\n recommendationIdData,\n ]);\n\n const onTileTitleClick = useCallback(() => {\n setSessionStorageItem({ key: LAST_SESSION_PATH, value: window.location.pathname });\n onTileClick({ uiElement: SegmentUiElements.SERIES_EPISODE });\n if (onTitleClick) {\n onTitleClick({\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n uiElement: SegmentUiElements.SERIES_TITLE,\n });\n }\n }, [\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n onTileClick,\n onTitleClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n ]);\n\n const titleOptions = {\n ...titleProcessor(props),\n link: titleLinkVal,\n onClick: onTileTitleClick,\n Style,\n };\n\n const isMobile = isMobileDevice(breakpoint);\n const isGenre = collectionType === COLLECTION_TYPE_GENRE;\n const isLiveCollection = collectionType === COLLECTION_TYPE_LIVE;\n const isLiveNow = originalItem?.isLiveNow;\n const shouldRenderPlayButton =\n !isMobile && !isGenre && (!isLiveCollection || (isLiveCollection && isLiveNow));\n\n const content = (\n <>\n <TileImage image={image || hoverImage} altText={altText} theme={Style} />\n <Badge theme={Style} badge={badge} isSeasons={isSeasons} />\n <ProgressBar percentWatched={percentWatched} theme={Style} />\n <Overlay theme={Style} render={!isMobile}>\n <PlayButton\n playButtonClick={playButtonClickProcessor({ type, props })}\n render={shouldRenderPlayButton}\n theme={Style}\n />\n </Overlay>\n <MobilePlayButton\n render={isMobile}\n theme={Style}\n link={isSeries ? titleLinkVal : link}\n playButtonClick={playButtonClickProcessor({ type, props })}\n />\n </>\n );\n return (\n <div className={theme.tile}>\n {isInternalLink(link || titleLink) ? (\n <Link\n to={link || titleLink}\n className={classNames(imageContainerClasses)}\n onClick={() => (isMobile ? playButtonClickProcessor({ type, props }) : noop)}\n >\n {content}\n </Link>\n ) : (\n <a\n href={link || titleLink}\n className={classNames(imageContainerClasses)}\n onClick={() => (isMobile ? playButtonClickProcessor({ type, props }) : noop)}\n >\n {content}\n </a>\n )}\n <Detail theme={Style}>\n <div className={Style.info}>\n <TileTitle {...titleOptions} />\n <Subtitle\n isDisabled={false}\n isRedirect={isRedirect}\n link={link}\n onClick={onSubtitleOnClick}\n subtitle={subtitle}\n subtitleLines={subtitleLines}\n target={target}\n theme={Style}\n truncateSubtitle={truncateSubtitle}\n />\n <Metadata theme={Style} metadata={metadata} />\n </div>\n </Detail>\n </div>\n );\n};\n\nexport default SeasonTile;\n\nSeasonTile.propTypes = {\n account: PropTypes.shape({}).isRequired,\n altText: PropTypes.string,\n badge: PropTypes.string,\n breakpoint: PropTypes.string.isRequired,\n callSign: PropTypes.string,\n collectionType: PropTypes.string,\n disableHoverStateActionButtons: PropTypes.bool,\n endDate: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n gridIndex: PropTypes.number,\n gridTitle: PropTypes.string,\n hoverImage: PropTypes.string,\n image: PropTypes.string,\n isAnonymous: PropTypes.bool,\n isRedirect: PropTypes.bool,\n isSeries: PropTypes.bool,\n isSeasons: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n itemIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n link: PropTypes.string,\n metadata: PropTypes.string,\n name: PropTypes.string,\n network: PropTypes.string,\n onTileClick: PropTypes.func,\n onTitleClick: PropTypes.func,\n originalItem: PropTypes.shape({}),\n overlayProps: PropTypes.shape({}),\n percentWatched: PropTypes.number,\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n segmentPlaylistButtonAction: PropTypes.func,\n seriesName: PropTypes.string,\n seriesScreenUrl: PropTypes.string,\n showCode: PropTypes.string,\n showLiveProgressBar: PropTypes.bool,\n startDate: PropTypes.string,\n subtitle: PropTypes.string,\n subtitleLines: PropTypes.number,\n subtitleText: PropTypes.string,\n target: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n title: PropTypes.string,\n titleLink: PropTypes.string,\n titleText: PropTypes.string,\n truncateSubtitle: PropTypes.bool,\n type: PropTypes.string,\n videoType: PropTypes.string,\n};\n\nSeasonTile.defaultProps = {\n altText: null,\n badge: null,\n callSign: null,\n collectionType: null,\n disableHoverStateActionButtons: false,\n endDate: null,\n favoritesManager: {},\n gridIndex: null,\n gridTitle: null,\n hoverImage: null,\n image: null,\n isAnonymous: false,\n isRedirect: false,\n isSeries: false,\n isSeasons: false,\n isSeriesDetailAvailable: false,\n itemIndex: null,\n link: null,\n metadata: null,\n name: null,\n network: null,\n onTileClick: noop,\n onTitleClick: noop,\n originalItem: null,\n overlayProps: null,\n percentWatched: null,\n recommendationIdData: null,\n scaleFromLeft: false,\n scaleFromRight: false,\n segmentPlaylistButtonAction: noop,\n seriesName: null,\n seriesScreenUrl: null,\n showCode: null,\n showLiveProgressBar: false,\n startDate: null,\n subtitle: null,\n subtitleLines: null,\n subtitleText: null,\n target: null,\n title: null,\n titleLink: null,\n titleText: null,\n truncateSubtitle: false,\n type: null,\n videoType: null,\n};\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Link } from 'react-router';\nimport { SegmentUiElements } from '@foxcorp/delta-web-analytics';\nimport { LAST_SESSION_PATH } from 'helpers/RouteHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { COLLECTION_TYPE_GENRE, COLLECTION_TYPE_LIVE, isInternalLink } from 'helpers/ContentHelper';\nimport { setSessionStorageItem } from 'helpers/Storage';\n\nimport Badge from 'components/Badge';\nimport {\n Detail,\n Metadata,\n MobilePlayButton,\n Overlay,\n PlayButton,\n Subtitle,\n TileImage,\n TileTitle,\n} from '../../../components';\nimport {\n titleProcessor,\n playButtonClickProcessor,\n isMobileDevice,\n} from '../../../helpers/processorHelper';\nimport Style from '../../../Styles/ClipTile.module.scss';\n\nconst ClipTile = props => {\n const {\n account,\n altText,\n badge,\n breakpoint,\n collectionType,\n durationInSeconds,\n gridIndex,\n gridTitle,\n hoverImage,\n image,\n isRedirect,\n isSeries,\n itemIndex,\n link,\n name,\n network,\n metadata,\n onTileClick,\n onTitleClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n scaleFromLeft,\n scaleFromRight,\n subtitle,\n subtitleLines,\n subtitleText,\n target,\n theme,\n title,\n titleLink,\n titleText,\n truncateSubtitle,\n type,\n } = props;\n const titleLinkVal = titleLink || link;\n const imageContainerClasses = [Style.imageContainer, Style.maintainAspectRatio];\n if (scaleFromLeft) imageContainerClasses.push(Style.scaleFromLeft);\n if (scaleFromRight) imageContainerClasses.push(Style.scaleFromRight);\n\n const onSubtitleOnClick = useCallback(() => {\n if (onTileClick) {\n onTileClick({\n account,\n name,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n titleText,\n uiElement: SegmentUiElements.SERIES_EPISODE,\n });\n }\n }, [\n onTileClick,\n originalItem,\n name,\n percentWatched,\n account,\n subtitleText,\n titleText,\n recommendationIdData,\n ]);\n\n const onTileTitleClick = useCallback(() => {\n setSessionStorageItem({ key: LAST_SESSION_PATH, value: window.location.pathname });\n onTileClick({ uiElement: SegmentUiElements.SERIES_EPISODE });\n if (onTitleClick) {\n onTitleClick({\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n uiElement: SegmentUiElements.SERIES_TITLE,\n });\n }\n }, [\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n onTileClick,\n onTitleClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n ]);\n\n const titleOptions = {\n ...titleProcessor(props),\n link: titleLinkVal,\n onClick: onTileTitleClick,\n Style,\n };\n const isMobile = isMobileDevice(breakpoint);\n const isGenre = collectionType === COLLECTION_TYPE_GENRE;\n const isLiveCollection = collectionType === COLLECTION_TYPE_LIVE;\n const isLiveNow = originalItem?.isLiveNow;\n const shouldRenderPlayButton =\n !isMobile && !isGenre && (!isLiveCollection || (isLiveCollection && isLiveNow));\n\n const content = (\n <>\n <TileImage image={image || hoverImage} altText={altText} theme={Style} />\n <Badge theme={Style} badge={badge} durationInSeconds={durationInSeconds} isHoverStateV2 />\n <Overlay theme={Style} render={!isMobile}>\n <PlayButton\n link={isSeries ? titleLinkVal : link}\n playButtonClick={playButtonClickProcessor({ type, props })}\n render={shouldRenderPlayButton}\n theme={Style}\n />\n </Overlay>\n <MobilePlayButton\n render={isMobile}\n theme={Style}\n link={isSeries ? titleLinkVal : link}\n playButtonClick={playButtonClickProcessor({ type, props })}\n />\n </>\n );\n\n return (\n <div className={theme.tile}>\n {isInternalLink(link || titleLink) ? (\n <Link\n to={link || titleLink}\n className={classNames(imageContainerClasses)}\n onClick={() => (isMobile ? playButtonClickProcessor({ type, props }) : noop)}\n >\n {content}\n </Link>\n ) : (\n <a\n href={link || titleLink}\n className={classNames(imageContainerClasses)}\n onClick={() => (isMobile ? playButtonClickProcessor({ type, props }) : noop)}\n >\n {content}\n </a>\n )}\n <Detail theme={Style}>\n <div className={Style.info}>\n <TileTitle {...titleOptions} />\n <Subtitle\n isDisabled={false}\n isRedirect={isRedirect}\n link={link}\n onClick={onSubtitleOnClick}\n subtitle={subtitle}\n subtitleLines={subtitleLines}\n target={target}\n theme={Style}\n truncateSubtitle={truncateSubtitle}\n />\n <Metadata theme={Style} metadata={metadata} />\n </div>\n </Detail>\n </div>\n );\n};\n\nexport default ClipTile;\n\nClipTile.propTypes = {\n account: PropTypes.shape({}),\n altText: PropTypes.string,\n badge: PropTypes.string,\n breakpoint: PropTypes.string.isRequired,\n callSign: PropTypes.string,\n collectionType: PropTypes.string,\n disableHoverStateActionButtons: PropTypes.bool,\n durationInSeconds: PropTypes.number,\n endDate: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n gridIndex: PropTypes.number,\n gridTitle: PropTypes.string,\n hoverImage: PropTypes.string,\n image: PropTypes.string,\n isAnonymous: PropTypes.bool,\n isRedirect: PropTypes.bool,\n isSeries: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n itemIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n link: PropTypes.string,\n metadata: PropTypes.string,\n name: PropTypes.string,\n network: PropTypes.string,\n onTileClick: PropTypes.func,\n onTitleClick: PropTypes.func,\n originalItem: PropTypes.shape({}),\n overlayProps: PropTypes.shape({}),\n percentWatched: PropTypes.number,\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n segmentPlaylistButtonAction: PropTypes.func,\n seriesName: PropTypes.string,\n seriesScreenUrl: PropTypes.string,\n showCode: PropTypes.string,\n showLiveProgressBar: PropTypes.bool,\n startDate: PropTypes.string,\n subtitle: PropTypes.string,\n subtitleLines: PropTypes.number,\n subtitleText: PropTypes.string,\n target: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n title: PropTypes.string,\n titleLink: PropTypes.string,\n titleText: PropTypes.string,\n truncateSubtitle: PropTypes.bool,\n type: PropTypes.string,\n videoType: PropTypes.string,\n};\n\nClipTile.defaultProps = {\n account: {},\n altText: null,\n badge: null,\n callSign: null,\n collectionType: null,\n disableHoverStateActionButtons: false,\n durationInSeconds: 0,\n endDate: null,\n favoritesManager: {},\n gridIndex: null,\n gridTitle: null,\n hoverImage: null,\n image: null,\n isAnonymous: false,\n isRedirect: false,\n isSeries: false,\n isSeriesDetailAvailable: false,\n itemIndex: null,\n link: null,\n metadata: null,\n name: null,\n network: null,\n onTileClick: noop,\n onTitleClick: noop,\n originalItem: null,\n overlayProps: null,\n percentWatched: null,\n recommendationIdData: null,\n scaleFromLeft: false,\n scaleFromRight: false,\n segmentPlaylistButtonAction: noop,\n seriesName: null,\n seriesScreenUrl: null,\n showCode: null,\n showLiveProgressBar: false,\n startDate: null,\n subtitle: null,\n subtitleLines: null,\n subtitleText: null,\n target: null,\n title: null,\n titleLink: null,\n titleText: null,\n truncateSubtitle: false,\n type: null,\n videoType: null,\n};\n","import React, { useCallback } from 'react';\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { SegmentUiElements } from '@foxcorp/delta-web-analytics';\nimport { LAST_SESSION_PATH } from 'helpers/RouteHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { setSessionStorageItem } from 'helpers/Storage';\nimport { titleProcessor } from '../../../helpers/processorHelper';\nimport Style from '../../../Styles/SeeAllTile.module.scss';\n\nconst SeeAllTile = props => {\n const {\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n link,\n name,\n network,\n onTileClick,\n onTitleClick,\n onTileMouseDown,\n originalItem,\n percentWatched,\n recommendationIdData,\n scaleFromLeft,\n scaleFromRight,\n subtitleText,\n theme,\n titleLink,\n } = props;\n const titleLinkVal = titleLink || link;\n const imageContainerClasses = [Style.imageContainer, Style.maintainAspectRatio];\n if (scaleFromLeft) imageContainerClasses.push(Style.scaleFromLeft);\n if (scaleFromRight) imageContainerClasses.push(Style.scaleFromRight);\n const { target, title, titleText } = titleProcessor(props);\n const onTileTitleClick = useCallback(() => {\n setSessionStorageItem({ key: LAST_SESSION_PATH, value: window.location.pathname });\n onTileClick({ uiElement: SegmentUiElements.SERIES_EPISODE });\n if (onTitleClick) {\n onTitleClick({\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n uiElement: SegmentUiElements.SERIES_TITLE,\n });\n }\n }, [\n account,\n gridIndex,\n gridTitle,\n itemIndex,\n name,\n network,\n onTileClick,\n onTitleClick,\n originalItem,\n percentWatched,\n recommendationIdData,\n subtitleText,\n title,\n titleText,\n ]);\n\n return (\n <Link\n className={(theme.tile, Style.tile)}\n onClick={onTileTitleClick}\n onMouseDown={onTileMouseDown}\n to={titleLinkVal}\n target={target}\n >\n <div className={classNames(imageContainerClasses)} onClick={onTileTitleClick}>\n <div className={Style.content}>{title}</div>\n </div>\n </Link>\n );\n};\n\nexport default SeeAllTile;\n\nSeeAllTile.propTypes = {\n account: PropTypes.shape({}),\n gridIndex: PropTypes.number,\n gridTitle: PropTypes.string,\n itemIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n link: PropTypes.string,\n name: PropTypes.string,\n network: PropTypes.string,\n onTileClick: PropTypes.func,\n onTitleClick: PropTypes.func,\n onTileMouseDown: PropTypes.func,\n originalItem: PropTypes.shape({}),\n percentWatched: PropTypes.number,\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n subtitleText: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n titleLink: PropTypes.string,\n};\n\nSeeAllTile.defaultProps = {\n account: {},\n gridIndex: null,\n gridTitle: null,\n itemIndex: null,\n link: null,\n name: null,\n network: null,\n onTileClick: noop,\n onTitleClick: noop,\n onTileMouseDown: noop,\n originalItem: null,\n percentWatched: null,\n recommendationIdData: null,\n scaleFromLeft: false,\n scaleFromRight: false,\n subtitleText: null,\n titleLink: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport Badge from 'components/Badge';\nimport { isInternalLink } from 'helpers/ContentHelper';\nimport { TileImage, TileTitle, Detail } from '../../../components';\nimport { titleProcessor } from '../../../helpers/processorHelper';\nimport Style from '../../../Styles/SearchTile.module.scss';\n\nconst SearchTile = ({\n altText,\n badge,\n hoverImage,\n image,\n link,\n onTileClick,\n startDate,\n theme,\n titleLink,\n isTubi,\n ...rest\n}) => {\n const tubiLogo = window?.ExternalConfig?.tubiLogo;\n const titleOptions = {\n ...titleProcessor(rest),\n link: titleLink || link,\n onClick: onTileClick,\n Style,\n };\n\n const content = (\n <>\n {isTubi && <img className={Style.tubiBadge} src={tubiLogo} alt=\"tubi badge\" />}\n <TileImage image={image || hoverImage} altText={altText} theme={Style} />\n <Badge theme={Style} badge={badge} startDate={startDate} />\n </>\n );\n\n const linkClasses = [Style.imageContainer, Style.maintainRatioContainer, isTubi && Style.tubi];\n\n return (\n <div className={classNames(theme.tile, Style.tile)}>\n {isInternalLink(titleLink || link) ? (\n <Link to={link || titleLink} onClick={onTileClick} className={classNames(linkClasses)}>\n {content}\n </Link>\n ) : (\n <a href={link || titleLink} onClick={onTileClick} className={classNames(linkClasses)}>\n {content}\n </a>\n )}\n <Detail theme={Style}>\n <div className={Style.info}>\n <TileTitle {...titleOptions} />\n </div>\n </Detail>\n </div>\n );\n};\n\nexport default SearchTile;\n\nSearchTile.propTypes = {\n altText: PropTypes.string,\n badge: PropTypes.string,\n hoverImage: PropTypes.string,\n image: PropTypes.string,\n isTubi: PropTypes.bool,\n link: PropTypes.string,\n onTileClick: PropTypes.func,\n startDate: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n titleLink: PropTypes.string,\n};\n\nSearchTile.defaultProps = {\n altText: null,\n badge: null,\n hoverImage: null,\n image: null,\n link: null,\n startDate: null,\n titleLink: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LiveTile from './views/Carousel/LiveTile';\nimport SeasonTile from './views/Carousel/SeasonTile';\nimport ClipTile from './views/Carousel/ClipTile';\nimport SeeAllTile from './views/Carousel/SeeAllTile';\nimport SearchTile from './views/Grid/SearchTile';\n\nconst LIVE_TILE = 'live';\nconst SEARCH_TILE = 'search';\nconst SERIES_CLIP_TILE = 'seriesClip';\nconst SERIES_SEASON_TILE = 'seriesSeason';\nconst SEE_ALL_TILE = 'seeMore';\n\nconst Tile = ({ type, ...rest }) => {\n const components = {\n [LIVE_TILE]: LiveTile,\n [SEARCH_TILE]: SearchTile,\n [SEE_ALL_TILE]: SeeAllTile,\n [SERIES_CLIP_TILE]: ClipTile,\n [SERIES_SEASON_TILE]: SeasonTile,\n };\n if (!type) return null;\n const Component = components[type];\n if (!Component) return null;\n return <Component type={type} {...rest} />;\n};\n\nTile.propTypes = { type: PropTypes.string.isRequired };\n\nexport { LIVE_TILE, SEE_ALL_TILE, SEARCH_TILE, SERIES_CLIP_TILE, SERIES_SEASON_TILE, Tile };\n","/* global BaseUrl */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport {\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB_LARGE,\n} from 'helpers/BreakpointHelper';\nimport { getNetworkBranding, urlIsExternal } from 'helpers/ContentHelper';\nimport style from './Error404.css';\n\nconst {\n notFoundPage_button: button,\n notFoundPage_header: header,\n notFoundPage_message: message,\n} = window.Language;\n\nconst Error404 = (props = {}) => {\n const { breakpoint, branding } = props;\n const notFoundPage = _.get(window, 'ExternalConfig.notFoundPage', {});\n const logo = _.get(notFoundPage, 'logo', null);\n const colors = _.get(notFoundPage, 'color', []);\n const imageDesktop = _.get(notFoundPage, 'background.desktop', null);\n const imageMobile = _.get(notFoundPage, 'background.mobile.portrait', null);\n const homePageUrl = _.get(notFoundPage, 'url', null);\n const currentBranding = branding || getNetworkBranding();\n const wrapper = classNames([style.screen, style[currentBranding]]);\n const images = {\n [SITE_PLATFORM_WEB_LARGE]: imageDesktop,\n [SITE_PLATFORM_WEB]: imageDesktop,\n [SITE_PLATFORM_TABLET]: imageMobile,\n [SITE_PLATFORM_MOBILE]: imageMobile,\n };\n const image = _.get(images, breakpoint, null);\n const isColorBackground = colors && colors.length > 0;\n const isImageBackground = !isColorBackground && image;\n\n const renderCharacter = () => {\n if (isColorBackground || (isImageBackground && logo)) {\n const character = logo || image;\n return (\n <div className={classNames([style.character, logo && style.logo])}>\n <img src={character} alt=\"Background character\" />\n </div>\n );\n }\n return null;\n };\n\n const renderBackground = () => {\n if (isColorBackground) {\n const gradientBG =\n colors.length === 2 ? `radial-gradient(circle at 50% 0, ${colors.join(', ')})` : null;\n const flatBG = colors.length === 1 ? colors[0] : null;\n if (!gradientBG && !flatBG) return null;\n\n const background = flatBG || gradientBG;\n return <div className={style.background} style={{ background }} />;\n }\n if (isImageBackground) {\n const backgroundStyle = { backgroundImage: `url(${image})` };\n return <div className={style.background} style={backgroundStyle} />;\n }\n return null;\n };\n\n const renderCTAButton = () => {\n const buttonClass = classNames([style.button, logo && style.logoButton]);\n return (\n <a href={homePageUrl === '/' ? BaseUrl : homePageUrl} className={buttonClass}>\n {button}\n </a>\n );\n };\n\n const renderMessage = () => {\n const words = message.split(' ');\n const leftWords = [];\n const rightWords = [];\n let linkIndex;\n let messageLink;\n words.forEach((word, index) => {\n if (urlIsExternal(word)) {\n linkIndex = index;\n messageLink = (\n <a className={style.messageLink} href={`https://${word}`}>\n {word}\n </a>\n );\n words.slice(index, 1);\n } else if (!linkIndex) {\n leftWords.push(word);\n } else if (linkIndex) {\n rightWords.push(word);\n }\n });\n if (messageLink) {\n return (\n <div className={style.message}>\n {leftWords.join(' ')} {messageLink} {rightWords.join(' ')}\n </div>\n );\n }\n return <div className={style.message}>{message}</div>;\n };\n\n return (\n <div className={wrapper}>\n {renderBackground()}\n <div className={style.info}>\n {renderCharacter()}\n <div className={style.innerBackground} />\n <div className={style.header}>{header}</div>\n {renderMessage()}\n {renderCTAButton()}\n </div>\n </div>\n );\n};\n\nError404.defaultProps = {\n breakpoint: SITE_PLATFORM_WEB,\n branding: null,\n};\n\nError404.propTypes = {\n breakpoint: PropTypes.string,\n branding: PropTypes.string,\n};\n\nexport default Error404;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport {\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_WEB_LARGE,\n} from 'helpers/BreakpointHelper';\nimport { getNetworkBranding } from 'helpers/ContentHelper';\nimport style from './Error500.css';\n\nconst {\n maintenancePage_header: headerText,\n maintenancePage_message: messageText,\n} = window.Language;\n\nconst Error500 = (props = {}) => {\n const { breakpoint, branding } = props;\n const maintenancePage = _.get(window, 'ExternalConfig.maintenancePage', {});\n const colors = _.get(maintenancePage, 'color', []);\n const imageDesktop = _.get(maintenancePage, 'background.desktop', null);\n const imageMobile = _.get(maintenancePage, 'background.mobile.portrait', null);\n const currentBranding = branding || getNetworkBranding();\n const wrapper = classNames([style.screen, style[currentBranding]]);\n\n const isFullBGImage = !!(colors.length === 0);\n\n const images = {\n [SITE_PLATFORM_WEB_LARGE]: imageDesktop,\n [SITE_PLATFORM_WEB]: imageDesktop,\n [SITE_PLATFORM_TABLET]: imageMobile,\n [SITE_PLATFORM_MOBILE]: imageMobile,\n };\n\n const renderCharacter = () => {\n const character = _.get(images, breakpoint, null);\n if (!character || isFullBGImage) return null;\n\n return (\n <div className={style.character}>\n <img src={character} alt=\"Background character\" />\n </div>\n );\n };\n\n const renderColorBackground = () => {\n const gradientBG =\n colors.length === 2 ? `radial-gradient(circle at 50% 0, ${colors.join(', ')})` : null;\n const flatBG = colors.length === 1 ? colors[0] : null;\n if (!gradientBG && !flatBG) return null;\n\n const background = flatBG || gradientBG;\n return <div className={style.background} style={{ background }} />;\n };\n\n const renderImageBackground = () => {\n const image = _.get(images, breakpoint, null);\n const backgroundStyle = {\n backgroundImage: `url(${image})`,\n };\n\n return <div className={style.background} style={backgroundStyle} />;\n };\n\n return (\n <div className={wrapper}>\n <div className={style.backgroundOverlay} />\n {isFullBGImage ? renderImageBackground() : renderColorBackground()}\n <div className={style.info}>\n {renderCharacter()}\n <div className={style.header}>{headerText}</div>\n <div className={style.message}>{messageText}</div>\n </div>\n </div>\n );\n};\n\nError500.defaultProps = {\n breakpoint: SITE_PLATFORM_WEB,\n branding: null,\n};\n\nError500.propTypes = {\n breakpoint: PropTypes.string,\n branding: PropTypes.string,\n};\n\nexport default Error500;\n","/*\n global documentFake, SportsFeatures,\n NetworkConfig, BaseUrl, FontName, SingleSignOnEnvironment, Version\n*/\nimport React from 'react';\nimport _ from 'lodash';\nimport axios from 'axios';\nimport { MORE_LIKE_POSTER, SIMPLIFIED_POSTER } from 'components/PosterV2';\nimport { SERIES_CLIP_TILE, SERIES_SEASON_TILE } from 'components/TileV2';\nimport {\n FORMAT_DAY_OF_WEEK,\n FORMAT_MONTH_DAY_YEAR,\n FORMAT_MONTH_SLASH_DAY,\n FORMAT_TIME,\n addDays,\n differenceInDays,\n differenceInMilliseconds,\n differenceInSeconds,\n format,\n getTimestamp,\n isAfter,\n isSameDay,\n msToDate,\n now,\n stringToDate,\n} from 'helpers/DateTimeHelper';\nimport Error404 from 'screens/Error404';\nimport Error500 from 'screens/Error500';\nimport { formatDurationInSeconds, formatMetadata } from 'helpers/VideoHelper';\nimport { setCookie, getCookie, removeCookie, cookieFactory } from 'helpers/Storage';\nimport Regex from 'helpers/Regex';\nimport { parseJwt } from 'helpers/AnonymousHelper';\nimport { MVPD_COOKIE_NAME, MVPD_LOGOUT_COOKIE_NAME } from 'helpers/AuthHelper';\nimport { getSitePlatform } from 'helpers/BreakpointHelper';\nimport { NETWORK_LOGO_IMAGE, getDynamicImage } from 'helpers/ImageHelper';\nimport { helperGetStaticContentUrl } from 'helpers/RouteHelper';\nimport { getBaseContentUrl, helperGetApiKey } from 'helpers/ApiHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\n\nexport const FNC = 'fnc';\nexport const FOX = 'fox';\nexport const NATION = 'foxnation'; //eslint-disable-line\n\nexport const LABEL_CLIPS_AND_EXTRAS = 'Clips & Extras';\nexport const LABEL_CLIPS = 'Clips';\n\nexport const TYPE_EPG_LISTING = 'EPGListing';\nconst TYPE_FULL_EPISODE = 'fullEpisode';\nconst TYPE_SPORTING_EVENT = 'sportingEvent';\n\nexport const PAGE_TYPE_ARTICLE = 'article';\nexport const PAGE_TYPE_CHARACTERS = 'characters';\nexport const PAGE_TYPE_CLIPS = 'clips';\nexport const PAGE_TYPE_CREDITS = 'credits';\nexport const PAGE_TYPE_PROMO_LIST = 'promo';\nexport const PAGE_TYPE_WATCH_FREE = 'watch-free';\n\nconst PREVIEW_PASS_5_MVPD = 'TempPass_fbcfox_5min';\nconst PREVIEW_PASS_60_MVPD = 'TempPass_fbcfox_60min';\n\nexport const COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST = 'affiliateCategoryList';\nexport const COLLECTION_TYPE_FTSLOCAL = 'ftsLocal';\nexport const COLLECTION_TYPE_LOCAL_CLIPS = 'localClips';\nexport const COLLECTION_TYPE_SHOWCASE = 'showcase';\nexport const COLLECTION_TYPE_SHOWCASE_CAROUSEL = 'showcaseCarousel';\nconst COLLECTION_TYPE_SHOWCASE_CAROUSEL_CONTENT = 'showcaseCarouselContent';\n\nexport const isCarouselShowcase = collectionType =>\n collectionType === COLLECTION_TYPE_SHOWCASE_CAROUSEL ||\n collectionType === COLLECTION_TYPE_SHOWCASE_CAROUSEL_CONTENT;\n\nexport const COLLECTION_TYPE_LOCAL_LIVE = 'live around the country';\nexport const COLLECTION_TYPE_GENRE = 'genre';\nexport const COLLECTION_TYPE_LIVE = 'live';\nexport const NEWS_GENRE = 'News';\nexport const VIDEO_TYPE = 'clip';\n\nexport const TAB_PRIMETIME = _.get(window.Language, 'global_primetimeTab');\nexport const TAB_SCHEDULE = _.get(window.Language, 'global_scheduleTab');\n\nconst NO_AUTHORIZING_NETWORK = 'no authorizing network';\nexport const FOX_WEATHER_NETWORK = 'foxweather';\n\nexport const NAME_RECOMMENDED_SERIES = 'You May Also Like';\n\nexport const LINK_REL = 'noopener noreferrer';\n\nexport const PANEL_TYPE_PLAYER_BANNER = 'playerBanner';\nexport const PANEL_TYPE_PROMOS = 'promos';\nexport const PANEL_TYPE_VIDEOS = 'videos';\nexport const PANEL_TYPE_SHOWS = 'shows';\nexport const PANEL_TYPE_PARTNER_SHOWS = 'partnerShowPanel';\nexport const PANEL_TYPE_PARTNER_VIDEO = 'partnerVideoPanel';\n\nconst AD_BLOCK_DETECTED_COOKIE_NAME = 'ad-block-detected';\nconst NETWORKS_DISPLAY_ORDER_NAME = 'network-display-order';\nconst MVPD_SUBSCRIPTION_COOKIE_NAME = 'mvpd-subscription';\nexport const NATION_ENTITLED_COOKIE_NAME = 'nation-entitled';\nexport const CCPA_VERIFY_COOKIE_NAME = 'ccpa-verified';\nexport const CCPA_OPT_OUT_COOKIE_NAME = 'usprivacy';\nexport const OOM_LIVE_PLAYER_URL_COOKIE_NAME = 'oom-live-player-url';\nexport const OOM_LIVE_PLAYER_IMAGE_COOKIE_NAME = 'oom-live-player-image';\nexport const LOCAL_CLIP_PAGE_COOKIE_NAME = 'local-clip-page';\nexport const LOCAL_CLIP_INITIAL_ID = 'local-clip-initial-id';\nexport const LOCAL_CLIP_INITIAL_PLAYER_URL = 'local-clip-player-url';\nconst LOCAL_CLIP_PLAYLIST = 'local-clip-playlist';\nconst LOCAL_CLIP_SECTION_TITLE = 'local-clip-title';\nexport const LOCAL_CHANNEL_STATION_PICKER = 'local-channel-station-picker';\nexport const LOCAL_IN_MARKET = 'localInMarket';\nexport const CCPA_DO_NOT_SELL_NOT_SEEN = '1---';\nexport const CCPA_DO_NOT_SELL_SEEN = '1YNN';\nexport const CCPA_DO_NOT_SELL_CHECKED = '1YYN';\n\nexport const HTML_ENTITY_BULLET = String.fromCharCode(8226);\n\nconst WATCH_ON_FOX_NOW_ARTICLE_ID = '598b6e18311288001fef0f04';\n\nexport const v1Override = { 'X-Delegated-Auth-Flow-Off': true };\n\nexport const isFoxNowAppPage = articleId => articleId.indexOf(WATCH_ON_FOX_NOW_ARTICLE_ID) !== -1;\n\nexport const getNetworkBranding = () => _.get(NetworkConfig, 'branding');\n\nexport const getNetworkBrandingName = () => _.get(NetworkConfig, 'name');\n\nexport const isFox = () => getNetworkBranding() === FOX;\n\nexport const isHomePage = () => window.location.pathname === '/';\n\nexport const getNetworksDisplayOrder = () => {\n let networkDisplayOrder = getNetworkDisplayOrder();\n if (!networkDisplayOrder) {\n networkDisplayOrder = _.get(window.ExternalConfig, 'auth.success.networksDisplayOrder', []);\n if (networkDisplayOrder.length > 0) {\n setNetworkDisplayOrder({ value: networkDisplayOrder });\n }\n }\n return networkDisplayOrder;\n};\n\nexport const getNetworkList = () =>\n _.get(window.ExternalConfig, 'auth.success.networksDisplayOrder', []);\n\nexport const getMVPDLogoutCookie = () => getCookie({ name: MVPD_LOGOUT_COOKIE_NAME });\n\nexport const getMVPDFromCookie = () => {\n const mvpdCookie = getMVPDCookie();\n const mvpd = _.get(mvpdCookie, 'mvpd', null);\n return mvpd;\n};\n\n/* eslint-disable */\nexport const getPurchaseSourceCookie = () => {\n const purchaseSource = getCookie({ name: 'purchaseSource' });\n return purchaseSource || '';\n};\n/* eslint-enable */\nexport const hasEntitlementOverride = () => {\n const entitlementCookieName = _.get(window.ExternalConfig, 'entitlementCookieName');\n const entitlementCookie = getCookie({ name: entitlementCookieName });\n if (entitlementCookie) {\n const isNation = _.get(window.ExternalConfig, 'analytics.app_name', false) === NATION;\n if (isNation) return 'foxnation';\n }\n return false;\n};\n\nexport const parseJSON = data => {\n try {\n return JSON.parse(data);\n } catch (e) {\n return null;\n }\n};\n\nexport const getFontClassName = style => _.get(style, `${FontName}Font`);\n\nexport const isClip = videoType => videoType === 'clip';\nexport const isClipTrailer = clipType => clipType === 'Trailer';\nexport const isEpisode = videoType => videoType === TYPE_FULL_EPISODE;\nexport const isLive = type => type === TYPE_EPG_LISTING;\nexport const isMovie = videoType => videoType === 'movie';\nexport const isMovieSeries = seriesType => seriesType === 'movie';\nconst isNews = seriesType => seriesType === 'news';\nexport const isSeries = seriesType => seriesType === 'series';\nconst isSeriesCollection = seriesType => seriesType === 'seriesCollection';\nexport const isSpecial = seriesType => seriesType === 'special' || seriesType === 'other';\nconst isCategoryTypePersonality = categoryType => categoryType === 'personality';\nconst isTypeCategory = type => type === 'Category';\nexport const isTypePromo = type => type === 'Promo';\nexport const isTypeSeries = type => type === 'Series';\nexport const isTypeEPGListing = type => type === 'EPGListing';\nexport const isTypeVideo = type => type?.toLowerCase() === 'video';\nexport const isSports = seriesType => seriesType === 'sportingEvent';\n\nexport const DEVICE_ANDROID = 'DEVICE_ANDROID';\nexport const DEVICE_IOS = 'DEVICE_IOS';\n\nexport const sportsFeatures = () => SportsFeatures;\nconst SPORTS_MAX_DESC_LENGTH = 150;\n\nexport const API_BASEURL_OVERRIDE = 'API_BASEURL_OVERRIDE';\nexport const DEBUG_PANEL_AD_DEBUG = 'DEBUG_PANEL_AD_DEBUG';\nexport const DEBUG_PANEL_AD_SITE_SECTION = 'DEBUG_PANEL_AD_SITE_SECTION';\nexport const DEBUG_PANEL_API_BASEURL = 'DEBUG_PANEL_API_BASEURL';\nexport const DEBUG_PANEL_BLACKOUT_FETCH_INTERVAL = 'DEBUG_PANEL_BLACKOUT_FETCH_INTERVAL';\nexport const DEBUG_PANEL_CITY = 'DEBUG_PANEL_CITY';\nexport const DEBUG_PANEL_CITY_LAT = 'DEBUG_PANEL_CITY_LAT';\nexport const DEBUG_PANEL_CITY_LONG = 'DEBUG_PANEL_CITY_LONG';\nexport const DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH =\n 'DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH';\nexport const DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH =\n 'DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH';\nexport const DEBUG_PANEL_DESIGN_VERSION = 'DEBUG_PANEL_DESIGN_VERSION';\nexport const DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_CURRENT_HOVER =\n 'DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_CURRENT_HOVER';\nexport const DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_SIMPLIFIED_HOVER =\n 'DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_SIMPLIFIED_HOVER';\nexport const DEBUG_PANEL_FLAG_BLACKOUT = 'DEBUG_PANEL_FLAG_BLACKOUT';\nexport const DEBUG_PANEL_FLAG_BUYTHROUGH_EXTERNAL_SIGNUP_LOGIN =\n 'DEBUG_PANEL_FLAG_BUYTHROUGH_EXTERNAL_SIGNUP_LOGIN';\nexport const DEBUG_PANEL_FLAG_CCPA_OPT_OUT = 'DEBUG_PANEL_FLAG_CCPA_OPT_OUT';\nexport const DEBUG_PANEL_FLAG_EPGV2 = 'DEBUG_PANEL_FLAG_EPGV2';\nexport const DEBUG_PANEL_FLAG_EPG_MINI_PLAYER = 'DEBUG_PANEL_FLAG_EPG_MINI_PLAYER';\nexport const DEBUG_PANEL_FLAG_EPG_SEARCH = 'DEBUG_PANEL_FLAG_EPG_SEARCH';\nexport const DEBUG_PANEL_FLAG_GLOBAL_PLAYER = 'DEBUG_PANEL_FLAG_GLOBAL_PLAYER';\nexport const DEBUG_PANEL_FLAG_GLOBAL_PLAYER_AUTOPLAY = 'DEBUG_PANEL_FLAG_GLOBAL_PLAYER_AUTOPLAY';\nexport const DEBUG_PANEL_FLAG_HERO_CAROUSEL = 'DEBUG_PANEL_FLAG_HERO_CAROUSEL';\nexport const DEBUG_PANEL_FLAG_MVPD_DEEPLINK = 'DEBUG_PANEL_FLAG_MVPD_DEEPLINK';\nexport const DEBUG_PANEL_FLAG_PREVIEW_MODE = 'DEBUG_PANEL_FLAG_PREVIEW_MODE';\nexport const DEBUG_PANEL_FLAG_PREVIEW_PASS = 'DEBUG_PANEL_FLAG_PREVIEW_PASS';\nexport const DEBUG_PANEL_FLAG_CONSOLIDATED_SIGNIN = 'DEBUG_PANEL_FLAG_CONSOLIDATED_SIGNIN';\nexport const DEBUG_PANEL_FLAG_PREVIEW_PASS_60_MIN = 'DEBUG_PANEL_FLAG_PREVIEW_PASS_60_MIN';\nexport const DEBUG_PANEL_FLAG_SECOND_SCREEN_PROFILE = 'DEBUG_PANEL_FLAG_SECOND_SCREEN_PROFILE';\nexport const DEBUG_PANEL_FLAG_SERIES_ANONYMOUS = 'DEBUG_PANEL_FLAG_SERIES_ANONYMOUS';\nexport const DEBUG_PANEL_FLAG_SERIES_V2 = 'DEBUG_PANEL_FLAG_SERIES_V2';\nexport const DEBUG_PANEL_FLAG_SSA_REDIRECT = 'DEBUG_PANEL_FLAG_SSA_REDIRECT';\nexport const DEBUG_PANEL_FLAG_STRIKE_BANNER = 'DEBUG_PANEL_FLAG_STRIKE_BANNER';\nexport const DEBUG_PANEL_FLAG_TILE_LIVE_TILE_V2 = 'DEBUG_PANEL_FLAG_TILE_LIVE_TILE_V2';\nexport const DEBUG_PANEL_FLAG_USE_MARINE_API_KEY = 'DEBUG_PANEL_FLAG_USE_MARINE_API_KEY';\nexport const DEBUG_PANEL_LOCATION_COOKIE_DURATION = 'DEBUG_PANEL_LOCATION_COOKIE_DURATION';\nexport const DEBUG_PANEL_TIMEOUT_DISABLED = 'DEBUG_PANEL_TIMEOUT_DISABLED';\nexport const DEBUG_PANEL_USER = 'DEBUG_PANEL_USER';\nexport const DEBUG_PANEL_VIDEO_CDN = 'DEBUG_PANEL_VIDEO_CDN';\nexport const DEBUG_PANEL_VIDEO_ORIGIN = 'DEBUG_PANEL_VIDEO_ORIGIN';\nconst {\n getValue: getLocalClipPage,\n setValue: setLocalClipPage,\n removeValue: removeLocalClipPage,\n} = cookieFactory(LOCAL_CLIP_PAGE_COOKIE_NAME);\nconst {\n getValue: getOomLivePlayerEnabled,\n setValue: setOomLivePlayerEnabled,\n removeValue: removeOomLivePlayerEnabled,\n} = cookieFactory(OOM_LIVE_PLAYER_URL_COOKIE_NAME);\nconst {\n getValue: getLocalClipSectionTitle,\n setValue: setLocalClipSectionTitle,\n removeValue: removeLocalClipSectionTitle,\n} = cookieFactory(LOCAL_CLIP_SECTION_TITLE);\nconst {\n getValue: getLocalClipPlaylist,\n setValue: setLocalClipPlaylist,\n removeValue: removeLocalClipPlaylist,\n} = cookieFactory(LOCAL_CLIP_PLAYLIST);\n\nconst { getValue: getAdDebug } = cookieFactory(DEBUG_PANEL_AD_DEBUG);\nconst { getValue: getAdSiteSection } = cookieFactory(DEBUG_PANEL_AD_SITE_SECTION);\nconst { getValue: getPrivacyParameterCookie, setValue: setPrivacyParameterCookie } = cookieFactory(\n CCPA_OPT_OUT_COOKIE_NAME,\n);\nconst { getValue: getLatitude, setValue: setLatitude } = cookieFactory('COOKIE_GEO_LOCATION_LAT');\nconst { getValue: getLongitude, setValue: setLongitude } = cookieFactory(\n 'COOKIE_GEO_LOCATION_LONG',\n);\nconst { getValue: getCookieTimestamp, setValue: setCookieTimeStamp } = cookieFactory(\n 'COOKIE_GEO_LOCATION_DATE_MS',\n);\nconst { setValue: setCookieModalTimeStamp } = cookieFactory('COOKIE_GEO_LOCATION_MODAL_MS');\nconst {\n getValue: getMVPDCookie,\n setValue: setMVPDCookie,\n removeValue: removeMVPDCookie,\n} = cookieFactory(MVPD_COOKIE_NAME);\nconst { setValue: setMVPDLogoutCookie } = cookieFactory(MVPD_LOGOUT_COOKIE_NAME);\nconst { getValue: getNetworkDisplayOrder, setValue: setNetworkDisplayOrder } = cookieFactory(\n NETWORKS_DISPLAY_ORDER_NAME,\n);\nconst { getValue: isMvpdSubscription } = cookieFactory(MVPD_SUBSCRIPTION_COOKIE_NAME);\nconst {\n getValue: getAdBlockDetectCookie,\n setValue: setAdBlockDetectCookie,\n removeValue: removeAdBlockDetectCookie,\n} = cookieFactory(AD_BLOCK_DETECTED_COOKIE_NAME);\n\nexport async function createProfile(accessToken = null, profileId = null) {\n let profileConfig = null;\n let profile = null;\n if (!isStaticRender() && !isBrowserIE()) {\n const module = await import('@foxcorp/foxkit-profile-js');\n const baseConfigUrl = getBaseContentUrl();\n const baseUrl =\n baseConfigUrl.substring(baseConfigUrl.length - 1, baseConfigUrl.length) === '/'\n ? baseConfigUrl.substring(0, baseConfigUrl.length - 1)\n : baseConfigUrl;\n const config = {\n appName: 'FOX NOW',\n appVersion: Version,\n apiKey: helperGetApiKey(),\n environment: SingleSignOnEnvironment,\n accessToken, // optional user accessToken\n profileId, // optional user profileId\n baseUrl,\n };\n profileConfig = new module.ProfileConfig(config);\n profile = new module.Profile(profileConfig);\n }\n return { profileConfig, profile };\n}\n\nexport {\n getAdBlockDetectCookie,\n getAdDebug,\n getAdSiteSection,\n getCookieTimestamp,\n getLatitude,\n getLocalClipPage,\n getLocalClipPlaylist,\n getLocalClipSectionTitle,\n getLongitude,\n getMVPDCookie,\n getOomLivePlayerEnabled,\n getPrivacyParameterCookie,\n isMvpdSubscription,\n removeAdBlockDetectCookie,\n removeMVPDCookie,\n setAdBlockDetectCookie,\n setCookieModalTimeStamp,\n setCookieTimeStamp,\n setLatitude,\n setLocalClipPage,\n setLocalClipPlaylist,\n setLongitude,\n setMVPDCookie,\n setMVPDLogoutCookie,\n setPrivacyParameterCookie,\n};\n\nexport const isDescTooLong = description => {\n if (!sportsFeatures() || !description) return false;\n if (description.length > SPORTS_MAX_DESC_LENGTH) return true;\n return false;\n};\n\nexport const getContentTypeName = videoType => {\n if (isMovie(videoType)) return 'Movie';\n return 'Show';\n};\n\nexport const getVideoTypeName = type => {\n if (isMovie(type)) return 'Movie';\n if (isClip(type)) return 'Clip';\n return 'Episode';\n};\n\nexport const getDisplayBrand = item => {\n const displayBrand = _.get(item, 'displayBrand');\n if (displayBrand) return displayBrand;\n const network = _.get(item, 'network');\n\n return network;\n};\n\nexport const getNetworkLogoUrl = (network, size, logo = window.ExternalConfig.networkLogo) => {\n if (!network || !network.length || !logo) return null;\n const breakpoint = getSitePlatform();\n let networkTemp = network;\n if (networkTemp === 'fbc-fox') networkTemp = FOX;\n const networkComma = network.indexOf(',');\n const networkId = networkComma > 0 ? network.substring(0, networkComma) : networkTemp;\n const url = logo.replace('{network}', networkId);\n return getDynamicImage({\n breakpoint,\n context: NETWORK_LOGO_IMAGE,\n url,\n });\n};\n\nexport const getConfigNetworkLogoUrl = (network, logo = window.ExternalConfig.networkLogo) => {\n if (!logo) return null;\n return logo.replace('{network}', network);\n};\n\n// export const getHeaderLogo = network => {\n// const breakpoint = getSitePlatform();\n// const url = _.get(network, 'images.header.raw', null);\n\n// if (!url) return null;\n\n// return getDynamicImage({\n// breakpoint,\n// context: NETWORK_LOGO_IMAGE,\n// url,\n// });\n// }; Disabling till CPEWEB-2522 is resolved with consistent images\n\nexport const mobileDeviceType = () => {\n const userAgent = _.get(window, 'navigator.userAgent', null);\n if (!userAgent) return null;\n if (userAgent.match(/Android/i)) return DEVICE_ANDROID;\n if (userAgent.match(/iPhone|iPad|iPod/i)) return DEVICE_IOS;\n return null;\n};\n\nexport const disableSmoothScrollMSIE = () => {\n const userAgent = _.get(window, 'navigator.userAgent', null);\n if (!userAgent) return null;\n if (userAgent.match(/TRIDENT/i)) {\n window.addEventListener('mousewheel', e => {\n e.preventDefault();\n window.scrollTo(0, window.pageYOffset - e.wheelDelta);\n });\n }\n return null;\n};\n\nexport const getUrlParameter = name => {\n const urlName = name.replace(/\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n const regex = new RegExp(`[\\\\?&]${urlName}=([^&#]*)`);\n const results = regex.exec(window.location.search) || regex.exec(window.location.href);\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n};\n\nexport const nonFoxNowSkus = [\n 'us.fs1',\n 'us.fs2',\n 'us.foxdep',\n 'us.btn-btn2go',\n 'us.foxSports',\n 'us.FoxNews',\n 'us.FoxBusiness',\n];\n\nexport const filterMissingDeepLinkItems = (items, deepLinkSkus) =>\n items.filter(item => {\n const deepLinkWeb = item?.deeplinkWeb;\n if (deepLinkWeb?.length > 0) return true;\n const filteredSkus =\n item?.contentSKUResolved?.reduce((acc, sku) => {\n if (deepLinkSkus?.includes(sku?.name)) {\n acc.push(sku);\n }\n return acc;\n }, []) ?? [];\n return filteredSkus.length === 0;\n });\n\nexport const isStaticRender = () => typeof documentFake === 'boolean';\n\nexport const getAuthZEntitlementIssues = response => {\n if (!response) return null;\n const responseStatus = response?.status;\n const errorStatus = response?.error?.errorCode;\n let authZEntitlementIssues;\n if (responseStatus) authZEntitlementIssues = _.get(response, 'data.entitlementIssues', []);\n else if (errorStatus) authZEntitlementIssues = _.get(response, 'error.entitlementIssues', []);\n\n const isAuthZ = authZEntitlementIssues.length > 0;\n if (!isAuthZ) return null;\n\n const entitlementIssues = _.map(authZEntitlementIssues, i => ({\n ...i,\n statusCode: responseStatus || errorStatus,\n }));\n return entitlementIssues;\n};\n\nexport const determineErrorFromResponse = action => {\n if (isStaticRender()) return null;\n\n const response = _.get(action, 'payload.response');\n const responseStatus = _.get(response, 'status');\n\n const authZEntitlementIssues = getAuthZEntitlementIssues(response);\n if (authZEntitlementIssues) return authZEntitlementIssues;\n\n const is400Error = responseStatus >= 400 && responseStatus <= 499;\n if (is400Error) return 404;\n\n const is500Error = responseStatus >= 500 && responseStatus <= 599;\n if (is500Error) return 500;\n\n return null;\n};\n\nexport const determineErrorIfStaticRender = () => {\n if (isStaticRender()) return null;\n return 404;\n};\n\nconst getError500Component = () => {\n const breakpoint = getSitePlatform();\n const branding = getNetworkBranding();\n\n const props = {\n className: 'ft-error',\n breakpoint,\n branding,\n };\n return <Error500 data-test=\"error-500\" {...props} />;\n};\n\nconst getError404Component = () => {\n const breakpoint = getSitePlatform();\n const branding = getNetworkBranding();\n\n const props = {\n className: 'ft-error',\n breakpoint,\n branding,\n };\n return <Error404 data-test=\"error-404\" {...props} />;\n};\n\nexport const getErrorComponent = errorCode => {\n if (errorCode === 500) return getError500Component();\n if (errorCode === 404) return getError404Component();\n return null;\n};\n\nexport const forceHttps = url => _.replace(url, 'http://', '//');\n\nexport const getSocialLinksFromContent = content => {\n const socialIconPath = icon => `https://static-media.fox.com/foxnow/web/v2-0/img/${icon}.png`;\n const socialIconPathLocal = icon => `${helperGetStaticContentUrl('images', `${icon}.png`)}`;\n const socialLinkStructure = [\n {\n name: 'Facebook',\n key: 'facebookId',\n icon: 'fb-logo',\n format: id => `https://www.facebook.com/${id}/`,\n },\n {\n name: 'Twitter',\n key: 'twitterId',\n icon: 'twitter',\n format: id => `https://twitter.com/${id}`,\n },\n {\n name: 'Instagram',\n key: 'instagramId',\n localIcon: 'ig-logo',\n format: id => `https://www.instagram.com/${id}/`,\n },\n {\n name: 'Youtube',\n key: 'youtubeId',\n icon: 'youtube',\n format: id => `https://www.youtube.com/c/${id}/`,\n },\n ];\n return _.map(socialLinkStructure, structure => {\n const id = _.get(content, structure.key);\n\n if (!id) return null;\n const { key, name } = structure;\n const url = structure.format(id);\n let icon = socialIconPath(structure.icon);\n if (!structure.icon && structure.localIcon) icon = socialIconPathLocal(structure.localIcon);\n return { key, name, url, icon };\n });\n};\n\nexport const urlIsExternal = url => {\n if (_.startsWith(url, 'http')) return true;\n if (_.startsWith(url, 'www')) return true;\n return false;\n};\n\nexport const formatDirectUrl = url => {\n if (_.startsWith(url, 'www')) return `http://${url}`;\n return url;\n};\n\nexport const getUrlTarget = url => {\n if (urlIsExternal(url)) {\n return {\n target: '_blank',\n rel: LINK_REL,\n };\n }\n return {};\n};\n\nexport const truncateText = (text, charCount = 30, append = '...') => {\n if (!text) return null;\n if (text.length < charCount) return text;\n const truncatedText = text.substr(0, charCount + append.length);\n const truncatedTextWithoutBrokenWords = truncatedText\n .split(' ')\n .slice(0, -1)\n .join(' ');\n const result = `${truncatedTextWithoutBrokenWords}${append}`;\n return result;\n};\n\nexport const truncateDesc = (description, enableFeature) => {\n if (isDescTooLong(description) && enableFeature) {\n return `${description.substring(0, SPORTS_MAX_DESC_LENGTH)}...`;\n }\n return description;\n};\n\nexport const isArticleTab = tab => {\n const { url } = tab;\n return url && url.indexOf('article/') !== -1;\n};\n\nexport const isSportsVideoLive = video => {\n const status = _.get(video, 'contentLabel[0]', '');\n return status.toLowerCase() === 'live';\n};\n\nexport const isSportsContent = video => {\n const seriesType = _.get(video, 'seriesType');\n const isSportsType = seriesType === TYPE_SPORTING_EVENT;\n const hasSportsFeatures = sportsFeatures();\n return !!(isSportsType && hasSportsFeatures);\n};\n\nexport const isSportsCollection = videos => {\n if (!videos || !videos.length) return false;\n let isSports = true;\n // only return true if ALL videos are sports content\n _.forEach(videos, v => {\n if (!isSportsContent(v)) isSports = false;\n });\n return isSports;\n};\n\nexport const concatToUrl = (url, stringToConcat) => {\n if (!url || !stringToConcat) return url;\n // remove empty question mark at the end.\n let newUrl = url.replace(/\\?$/, '');\n const hasQuery = newUrl.indexOf('?') === -1;\n const queryGlue = hasQuery ? '?' : '&';\n // replace && to &\n newUrl = `${newUrl}${queryGlue}${stringToConcat}`.replace(/&&/, '&');\n return newUrl;\n};\n\nexport const checkContentLabel = ({ video, label, labels }) => {\n const contentLabel = _.get(video, 'contentLabel', null);\n if (!contentLabel) return false;\n const contentLabels = _.map(contentLabel, l => l.toLowerCase());\n let hasLabel = false;\n if (label && _.includes(contentLabels, label.toLowerCase())) hasLabel = true;\n if (labels) {\n _.forEach(labels, l => {\n if (_.includes(contentLabels, l.toLowerCase())) hasLabel = true;\n });\n }\n return hasLabel;\n};\n\nexport const videoIsLive = video => {\n const livePlayerScreenUrl = _.get(video, 'livePlayerScreenUrl', null);\n return !!livePlayerScreenUrl;\n};\n\nexport const isInternalLink = (link = '', base) => {\n const baseLink = base || BaseUrl;\n if (!link || !baseLink) return false;\n\n const http = 'http://';\n const https = 'https://';\n const startsWith = _.startsWith(link.replace(https, http), baseLink.replace(https, http));\n return !!startsWith;\n};\n\nexport const updateNextPanels = ({ panels, upNextVideos }) => {\n const newPanels = _.cloneDeep(panels);\n const member = _.get(newPanels, 'member', []);\n const currentVideo = upNextVideos[0];\n const currentVideoId = _.get(currentVideo, 'id', null);\n if (!member || !member.length || !currentVideoId) return null;\n\n const currentVideoEndDate = _.get(currentVideo, 'endDate', null);\n\n const currentVideoStillValid =\n currentVideoEndDate && isAfter(stringToDate(currentVideoEndDate), now());\n\n const nextVideo = currentVideoStillValid ? upNextVideos[0] : upNextVideos[1] || null;\n const nextVideoStartDate = _.get(nextVideo, 'startDate', null);\n const nextVideoStarted = nextVideoStartDate\n ? !isAfter(stringToDate(nextVideoStartDate), now())\n : false;\n newPanels.member = _.map(member, panel => {\n const newPanel = _.cloneDeep(panel);\n const items = _.get(newPanel, 'items.member', []);\n const itemIdx = _.findIndex(items, i => currentVideoId === _.get(i, 'id'));\n if (itemIdx === -1) return newPanel;\n if (nextVideoStarted) {\n newPanel.items.member[itemIdx] = nextVideo;\n } else {\n newPanel.items.member.splice(itemIdx, 1);\n }\n return newPanel;\n });\n return newPanels;\n};\n\nconst getUpNextFetchData = ({ video, isUpNext }) => {\n const { id: videoId, startDate, endDate } = video;\n const fetchDate = isUpNext ? startDate : endDate;\n if (!videoId || !fetchDate) return null;\n const fetchInMs = differenceInMilliseconds(stringToDate(fetchDate), now());\n return { videoId, fetchInMs };\n};\n\nconst setFetchUpNextTimeout = ({ fetchData, fetchCb, setTimeoutCb }) => {\n if (!fetchData) return null;\n const { accessToken, deviceId, videoId, fetchInMs } = fetchData;\n let newTimeout = null;\n if (fetchInMs < 0) {\n fetchCb({ videoId, accessToken, deviceId });\n } else {\n newTimeout = setTimeoutCb(() => {\n fetchCb({ videoId });\n }, fetchInMs);\n }\n return newTimeout;\n};\n\nexport const setLocalChannelCookies = ({\n videoId = '',\n playerScreenUrl = '',\n headline = '',\n playlist = '',\n resetCookies = false,\n}) => {\n const path = { path: '/' };\n if (resetCookies) {\n removeLocalClipPage({ options: path });\n removeLocalClipPlaylist({ options: path });\n removeCookie({ key: LOCAL_CLIP_INITIAL_ID, options: path });\n removeCookie({ key: LOCAL_CLIP_INITIAL_PLAYER_URL, options: path });\n removeLocalClipSectionTitle({ options: path });\n removeOomLivePlayerEnabled({ key: OOM_LIVE_PLAYER_URL_COOKIE_NAME, options: path });\n return;\n }\n\n setCookie({\n name: LOCAL_CLIP_INITIAL_ID,\n value: videoId,\n options: path,\n });\n setCookie({\n name: LOCAL_CLIP_INITIAL_PLAYER_URL,\n value: playerScreenUrl,\n options: path,\n });\n setLocalClipPage({\n value: playerScreenUrl,\n options: path,\n });\n setLocalClipSectionTitle({\n value: headline,\n options: path,\n });\n setLocalClipPlaylist({\n value: playlist,\n options: path,\n });\n};\n\nexport const setOutOfMarketLocalCookies = ({ resetCookies = false, ...item }) => {\n const path = { path: '/' };\n\n if (resetCookies) {\n removeOomLivePlayerEnabled({ key: OOM_LIVE_PLAYER_URL_COOKIE_NAME, options: path });\n removeCookie({ key: OOM_LIVE_PLAYER_IMAGE_COOKIE_NAME, options: path });\n return;\n }\n\n setOomLivePlayerEnabled({\n name: OOM_LIVE_PLAYER_URL_COOKIE_NAME,\n value: {\n contentRating: item.contentRating,\n description: item.description,\n headline: item.headline,\n images: item.images,\n name: item.name,\n originalAirDate: item.originalAirDate,\n },\n options: path,\n });\n setCookie({\n name: OOM_LIVE_PLAYER_IMAGE_COOKIE_NAME,\n value: item.image,\n options: path,\n });\n};\n\nconst fetchedLive = [];\nconst fetchedUpNext = [];\nexport const getUpNextTimeouts = ({ accessToken, deviceId, panels, fetchCb, setTimeoutCb }) => {\n const newTimeouts = [];\n _.forEach(panels, panel => {\n const items = _.get(panel, 'items.member');\n if (!items || !items.length) return;\n _.forEach(items, item => {\n const isLive = videoIsLive(item);\n const isUpNext = checkContentLabel({ video: item, label: 'up next' });\n const id = _.get(item, 'id');\n const didFetchLive = _.includes(fetchedLive, id);\n const didFetchUpNext = _.includes(fetchedUpNext, id);\n const excluded = (isLive && didFetchLive) || (isUpNext && didFetchUpNext);\n\n if (!excluded && item && (isLive || isUpNext)) {\n if (isLive) {\n fetchedLive.push(id);\n } else if (isUpNext) {\n fetchedUpNext.push(id);\n }\n\n const upNextFetchData = getUpNextFetchData({ video: item, isUpNext });\n const fetchData = { ...upNextFetchData, accessToken, deviceId };\n const newTimeout = setFetchUpNextTimeout({ fetchData, fetchCb, setTimeoutCb });\n if (newTimeout) newTimeouts.push(newTimeout);\n }\n });\n });\n return newTimeouts;\n};\n\nexport const getSeasonEpisodeCounts = ({ currentSeason, seasonCount, episodeCount, useComma }) => {\n if (!seasonCount && !episodeCount) return null;\n let seasonString = '';\n let episodeString = '';\n if (seasonCount) {\n const seasonLabel = seasonCount > 1 ? 'Seasons' : 'Season';\n if (seasonCount > 1 || !currentSeason) {\n seasonString = `${seasonCount} ${seasonLabel}`;\n } else {\n seasonString = `${seasonLabel} ${currentSeason.seasonNumber}`;\n }\n }\n if (episodeCount) {\n const episodeLabel = episodeCount > 1 ? 'Episodes' : 'Episode';\n episodeString = `${episodeCount} ${episodeLabel}`;\n }\n const hideSeparator = !seasonCount || !episodeCount;\n let separator = '';\n if (!hideSeparator) separator = useComma ? ', ' : ' ';\n return `${seasonString}${separator}${episodeString}`;\n};\n\nexport const getShowType = ({ videoType = '', seriesType }) => {\n if (isSeries(seriesType) || isSpecial(seriesType) || isNews(seriesType)) return 'Show';\n if (isMovie(videoType) || isMovie(seriesType)) return 'Movie';\n return '';\n};\n\nexport const getLiveMetaData = ({ startDate, durationInSeconds }) => {\n const startTime = startDate ? format(stringToDate(startDate), FORMAT_TIME) : '';\n const formattedDuration = formatDurationInSeconds(durationInSeconds);\n return formatMetadata([startTime, formattedDuration]);\n};\n\nexport const getMovieMetadata = ({ releaseYear = '', durationInSeconds }) => {\n const formattedDuration = formatDurationInSeconds(durationInSeconds);\n return formatMetadata([releaseYear, formattedDuration]);\n};\n\nexport const getOriginalAirdateMetaData = ({ originalAirDate, durationInSeconds }) => {\n const airDate = originalAirDate\n ? format(stringToDate(originalAirDate), FORMAT_MONTH_DAY_YEAR)\n : '';\n const formattedDuration = formatDurationInSeconds(durationInSeconds);\n return formatMetadata([airDate, formattedDuration]);\n};\n\nexport const castProcessor = actor => {\n const name = _.get(actor, 'name', null);\n return name;\n};\n\nexport const getVideoIdFromUrl = url => {\n if (!url) return null;\n const urlParts = url.split('/');\n const videoId = urlParts[2];\n return videoId;\n};\n\nexport const getEPGListingIdFromPlayerScreenUrl = url => {\n const splitUrl = url.split(/=|&/);\n const epgListingIndex = splitUrl.indexOf('epgListingId') + 1;\n const epgListingId = epgListingIndex ? splitUrl[epgListingIndex] : null;\n return epgListingId;\n};\n\nexport const getRequiresAuth = ({ video, isLive = false }) => {\n let requiresAuthVod = _.get(video, 'requiresAuth', false);\n let requiresAuthLive = _.get(video, 'requiresAuthLive', false);\n\n const requiredEntitlements = _.get(video, 'requiredEntitlements', null);\n if (requiredEntitlements) {\n const vodRequirements = _.get(requiredEntitlements, 'vod', []);\n const liveRequirements = _.get(requiredEntitlements, 'live', []);\n requiresAuthVod = vodRequirements.length > 0 || requiresAuthVod;\n requiresAuthLive = liveRequirements.length > 0 || requiresAuthLive;\n }\n\n return isLive ? requiresAuthLive : requiresAuthVod;\n};\n\nexport const getAuthForPanelVideo = (item, isLive, accessToken) => {\n let mvpdid = '';\n if (accessToken) mvpdid = parseJwt(accessToken)?.mvpdid;\n\n return (\n getRequiresAuth({ video: item, isLive }) ||\n mvpdid === PREVIEW_PASS_60_MVPD ||\n mvpdid === PREVIEW_PASS_5_MVPD\n );\n};\n\nexport const getAuthorizingNetwork = (item, isLive, accessToken) => {\n const requiresAuth = getAuthForPanelVideo(item, isLive, accessToken);\n if (!requiresAuth) return NO_AUTHORIZING_NETWORK;\n\n const network = _.get(item, 'network');\n return network || NO_AUTHORIZING_NETWORK;\n};\n\nexport const setLongTimeout = function setLongTimeout(...params) {\n const [callback, milliseconds] = params;\n if (typeof callback !== 'function') {\n throw new Error('Callback must be a function');\n }\n const ms = parseInt(milliseconds, 10);\n if (Number.isNaN(ms)) {\n throw new Error('Delay must be an integer');\n }\n\n const args = Array.prototype.slice.call(params, 2);\n const cb = callback.bind(...[this].concat(args));\n\n const longTimeout = {\n timer: null,\n clear: function clear() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n },\n };\n\n const max = 2147483647;\n if (ms <= max) {\n longTimeout.timer = setTimeout(cb, ms);\n } else {\n let count = Math.floor(ms / max); // the number of times we need to delay by max\n const rem = ms % max; // the length of the final delay\n (function delay() {\n if (count > 0) {\n count -= 1;\n longTimeout.timer = setTimeout(delay, max);\n } else {\n longTimeout.timer = setTimeout(cb, rem);\n }\n })();\n }\n return longTimeout;\n};\n\nexport const clearLongTimeout = longTimeoutObject => {\n const isFunction = longTimeoutObject && typeof longTimeoutObject.clear === 'function';\n if (isFunction) {\n longTimeoutObject.clear();\n }\n};\n\nexport const plurarize = ({ count, singular, plural, separator = ' ', reverse = false }) => {\n const label = count === 1 ? singular : plural;\n const text = reverse ? `${label}${separator}${count}` : `${count}${separator}${label}`;\n return text;\n};\n\nexport const slugify = text => {\n const slug = text || '';\n const a = 'àáäâèéëêìíïîòóöôùúüûñçßÿœæŕśńṕẃǵǹḿǘẍźḧ·/_,:;άαβγδεέζήηθιίϊΐκλμνξοόπρσςτυϋύΰφχψωώ';\n const b = 'aaaaeeeeiiiioooouuuuncsyoarsnpwgnmuxzh------aavgdeeziitiiiiklmnxooprsstyyyyfhpoo';\n const p = new RegExp(a.split('').join('|'), 'g');\n\n return slug\n .toString()\n .trim()\n .toLowerCase()\n .replace(/ου/g, 'ou')\n .replace(/ευ/g, 'eu')\n .replace(/θ/g, 'th')\n .replace(/ψ/g, 'ps')\n .replace(/\\//g, '-')\n .replace(Regex.SPACES, '-') // Replace spaces with -\n .replace(p, c => b.charAt(a.indexOf(c))) // Replace special chars\n .replace(/&/g, '-and-') // Replace & with 'and'\n .replace(Regex.NON_WORD_CHARACTERS, '') // Remove all non-word chars\n .replace(Regex.MULTIPLE_DASHES, '-') // Replace multiple - with single -\n .replace(Regex.LEADING_DASH, '') // Trim - from start of text\n .replace(Regex.TRAILING_DASH, ''); // Trim - from end of text\n};\n\nexport const formatUpcomingDate = dateString => {\n const startingDate = stringToDate(dateString);\n if (!startingDate) return null;\n const { epg_todayHeader: labelToday, epg_tomorrowHeader: labelTomorrow } = window.Language;\n const today = now();\n const tomorrow = addDays(today, 1);\n const videoStartsToday = isSameDay(startingDate, today);\n const videoStartsTomorrow = isSameDay(startingDate, tomorrow);\n const videoStartsNextWeek = differenceInDays(startingDate, today) >= 7;\n\n let dateLabel;\n if (videoStartsToday) {\n dateLabel = labelToday;\n } else if (videoStartsTomorrow) {\n dateLabel = labelTomorrow;\n } else if (videoStartsNextWeek) {\n dateLabel = format(startingDate, FORMAT_MONTH_SLASH_DAY);\n } else {\n dateLabel = format(startingDate, FORMAT_DAY_OF_WEEK);\n }\n const formattedTime = format(startingDate, FORMAT_TIME);\n\n return `${dateLabel}, ${formattedTime}`;\n};\n\nexport const isUpcomingContent = item => {\n if (!item) return false;\n const { '@type': type, startDate } = item;\n const isLiveItem = isLive(type);\n const isInFuture = isAfter(startDate, now());\n const isUpcoming = isLiveItem && isInFuture;\n return isUpcoming;\n};\n\nexport const isLiveVideoExpired = endDate => isAfter(now(), endDate);\n\nexport const isCurrentLiveContent = item => {\n if (!item) return false;\n const { '@type': type, endDate } = item;\n const itemIsLive = isLive(type);\n const itemIsExpired = isLiveVideoExpired(endDate);\n const itemIsUpcoming = isUpcomingContent(item);\n if (itemIsLive && !itemIsExpired && !itemIsUpcoming) return true;\n return false;\n};\n\nconst getSecUntilTimestamp = time => differenceInSeconds(msToDate(time), now());\n\nexport const calculateNextRefreshForPanel = panel => {\n if (isStaticRender()) return false;\n const items = _.get(panel, 'items.member', []);\n const liveContent = _.filter(items, item => isCurrentLiveContent(item));\n const upcomingContent = _.filter(items, item => isUpcomingContent(item));\n if (!liveContent.length && !upcomingContent.length) return false;\n\n const dateStringToTimestamp = str => getTimestamp(stringToDate(str));\n const endTimestamps = liveContent.map(item => dateStringToTimestamp(item.endDate));\n const startTimestamps = upcomingContent.map(item => dateStringToTimestamp(item.startDate));\n const STARTING_SOON_TRESHOLD_MS = 5 * 60 * 1000;\n\n const startingSoonTimestamps = upcomingContent\n .map(item => dateStringToTimestamp(item.startDate) - STARTING_SOON_TRESHOLD_MS)\n .filter(timestamp => isAfter(msToDate(timestamp), now()));\n\n const timestamps = [...endTimestamps, ...startTimestamps, ...startingSoonTimestamps];\n let nextTimestamp = Math.min(...timestamps);\n let secUntilNextTimestamp = getSecUntilTimestamp(nextTimestamp);\n if (secUntilNextTimestamp === 0) {\n _.remove(timestamps, t => t === nextTimestamp);\n nextTimestamp = Math.min(...timestamps);\n secUntilNextTimestamp = getSecUntilTimestamp(nextTimestamp);\n }\n return secUntilNextTimestamp + 1; // add 1 to prevent refetching data too soon\n};\n\nexport const getPreviewVideoCTAText = panel => {\n if (!panel) return null;\n const {\n previewVideoCTA_movie: movie,\n previewVideoCTA_personality: personality,\n previewVideoCTA_series: series,\n previewVideoCTA_seriesCollection: seriesCollection,\n previewVideoCTA_special: special,\n } = window.Language;\n const type = _.get(panel, '@type');\n const isSeriesPanel = isTypeSeries(type);\n const isCategoryPanel = isTypeCategory(type);\n if (isSeriesPanel) {\n const seriesType = _.get(panel, 'seriesType');\n\n if (isMovie(seriesType)) return movie;\n if (isSeries(seriesType)) return series;\n if (isSeriesCollection(seriesType)) return seriesCollection;\n if (isSpecial(seriesType)) return special;\n } else if (isCategoryPanel) {\n const categoryType = _.get(panel, 'categoryType');\n\n if (isCategoryTypePersonality(categoryType)) return personality;\n }\n\n return null;\n};\n\nexport const shouldBlockEndcardsForTrailer = (video, preauthorizedResources) => {\n if (!video) return null;\n const { clipType, videoType, isTrailer } = video;\n const videoIsTrailer = (isClip(videoType) && isClipTrailer(clipType)) || isTrailer;\n if (videoIsTrailer) return true;\n return false;\n};\n\nexport const getStickBannerData = state => {\n const members = _.get(state, 'collection.panels.member', []);\n const promoPanels = members.filter(member => member && member.panelType === PANEL_TYPE_PROMOS);\n const stickyBannerPanel = promoPanels.find(panel => {\n const promoType = _.get(panel, 'items.member.0.promoType', null);\n return promoType === 'stickyBanner';\n });\n const stickyBannerData = _.get(stickyBannerPanel, 'items.member.0', null);\n return stickyBannerData;\n};\n\n// Determines if the user is using an ad blocker extension by attempting to fetch\n// Google's ad file, any ad blocker should block this request.\nexport async function checkAdBlocker() {\n let isBlocked;\n async function tryRequest() {\n try {\n return axios\n .get('https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js', {\n method: 'HEAD',\n mode: 'no-cors',\n })\n .then(() => {\n isBlocked = false;\n return isBlocked;\n })\n .catch(() => {\n isBlocked = true;\n return isBlocked;\n });\n } catch (error) {\n console.log(error);\n isBlocked = true;\n return isBlocked;\n }\n }\n\n if (isBlocked !== undefined) {\n return isBlocked;\n }\n\n try {\n return await tryRequest();\n } catch (error) {\n console.log(error);\n }\n\n return false;\n}\n\nexport const getCarouselBreakpoint = ({ type }) => {\n switch (type) {\n case 'poster':\n return [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n },\n },\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n },\n },\n {\n breakpoint: 1439,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n },\n },\n {\n breakpoint: 2559,\n settings: {\n slidesToShow: 5,\n slidesToScroll: 5,\n },\n },\n {\n breakpoint: 2560,\n settings: {\n slidesToShow: 6,\n slidesToScroll: 6,\n },\n },\n ];\n case MORE_LIKE_POSTER:\n return [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n },\n },\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n },\n },\n {\n breakpoint: 1439,\n settings: {\n slidesToShow: 5,\n slidesToScroll: 5,\n },\n },\n {\n breakpoint: 2560,\n settings: {\n slidesToShow: 6,\n slidesToScroll: 6,\n },\n },\n ];\n case SIMPLIFIED_POSTER:\n return [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n },\n },\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n },\n },\n {\n breakpoint: 1439,\n settings: {\n slidesToShow: 5,\n slidesToScroll: 5,\n },\n },\n {\n breakpoint: 2560,\n settings: {\n slidesToShow: 6,\n slidesToScroll: 6,\n },\n },\n ];\n case SERIES_CLIP_TILE:\n case SERIES_SEASON_TILE:\n return [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n },\n },\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n },\n },\n {\n breakpoint: 1439,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n },\n },\n {\n breakpoint: 2559,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n },\n },\n {\n breakpoint: 2561,\n settings: {\n slidesToShow: 5,\n slidesToScroll: 5,\n },\n },\n ];\n default:\n return [];\n }\n};\n","import cookie from 'react-cookie';\nimport _ from 'lodash';\n\nimport { parseJSON } from 'helpers/ContentHelper';\n\nexport function getCookie({ name, doNotParse = false }) {\n window.cookie = cookie;\n if (!name) return null;\n return cookie.load(name, doNotParse);\n}\n\nexport function setCookie({ name, value, options = {} }) {\n if (!name || value === undefined) return null;\n cookie.save(name, value, options);\n return true;\n}\n\nexport function getCookieExpires() {\n const expires = new Date();\n expires.setMonth(expires.getMonth() + 1);\n return expires;\n}\n\nexport function removeCookie({ key, options }) {\n if (!key) return null;\n const defaultOptions = { path: '/' };\n const opts = options || {};\n cookie.remove(key, { ...defaultOptions, ...opts });\n return null;\n}\n\nexport const setLocalStorageItem = ({ key, value = null }) => {\n if (isLocalStorageNameSupported()) {\n const localStorage = getLocalStorage();\n if (!localStorage || !key || value === null) return;\n localStorage.setItem(key, value);\n return;\n }\n if (!key || !value) return;\n const expires = new Date();\n expires.setFullYear(expires.getFullYear() + 1);\n const options = {\n path: '/',\n expires,\n };\n setCookie({ name: key, value, options });\n};\n\nexport const getLocalStorageItem = ({ key }) => {\n if (!key) return null;\n if (isLocalStorageNameSupported()) {\n const localStorage = getLocalStorage();\n if (!localStorage) return null;\n return localStorage.getItem(key);\n }\n return getCookie({ name: key, doNotParse: true }) || null;\n};\n\nexport const removeLocalStorageItem = ({ key }) => {\n if (!key) return null;\n if (isLocalStorageNameSupported()) {\n const localStorage = getLocalStorage();\n if (!localStorage || !key) return null;\n return localStorage.removeItem(key);\n }\n return removeCookie({ name: key });\n};\n\n/* eslint-disable */\nexport const getLocalStorage = () => {\n try {\n return _.get(window, 'localStorage');\n } catch (error) {\n console.log('Local storage error', error);\n }\n return null;\n};\n/* eslint-enable */\n\nexport const setSessionStorageItem = ({ key, value }) => {\n if (!key) return null;\n if (isLocalStorageNameSupported()) {\n const sessionStorage = getSessionStorage();\n if (!sessionStorage) {\n return null;\n }\n return sessionStorage.setItem(key, value);\n }\n const options = {\n path: '/',\n };\n return setCookie({ name: key, value, options });\n};\n\nexport const getSessionStorageItem = ({ key }) => {\n if (!key) return null;\n if (isLocalStorageNameSupported()) {\n const sessionStorage = getSessionStorage();\n if (!sessionStorage) {\n return null;\n }\n return sessionStorage.getItem(key);\n }\n return getCookie({ name: key, doNotParse: true }) || null;\n};\n\nconst getSessionStorage = () => window?.sessionStorage;\n\nexport const setPaginatedStorage = ({ key, value, options }) => {\n const limit = options.limit || 10;\n\n if (!(value instanceof Array)) {\n return;\n }\n\n const valueCopy = value.slice();\n\n let remainder = valueCopy.length;\n let counter = 0;\n\n do {\n const slice = valueCopy.splice(0, limit);\n remainder = slice.length;\n\n const storageBlockName = `${key}-${counter}`;\n if (slice.length) {\n const value = JSON.stringify(slice);\n setLocalStorageItem({ key: storageBlockName, value });\n }\n\n counter += 1;\n } while (remainder > 0);\n};\n\nexport const getPaginatedStorage = ({ key }) => {\n let result = [];\n\n let counter = 0;\n let data = null;\n do {\n const storageBlockName = `${key}-${counter}`;\n data = getLocalStorageItem({ key: storageBlockName });\n const parsedData = data ? parseJSON(data) : null;\n if (parsedData) result = result.concat(parsedData);\n counter += 1;\n } while (data);\n\n return result;\n};\n\nexport const removePaginatedStorage = ({ key }) => {\n let data = null;\n let counter = 0;\n do {\n const storageBlockName = `${key}-${counter}`;\n data = getLocalStorageItem({ key: storageBlockName });\n if (data) removeLocalStorageItem({ key: storageBlockName });\n counter += 1;\n } while (data);\n};\n\nexport function cookieFactory(cookieName) {\n let cookie = getCookie({ name: cookieName });\n function getValue() {\n return cookie;\n }\n function setValue({ name, value, options = {} }) {\n cookie = value;\n const key = name || cookieName;\n setCookie({ name: key, value, options });\n }\n function removeValue({ options = {} }) {\n cookie = null;\n removeCookie({ key: cookieName, options });\n }\n\n return {\n getValue,\n setValue,\n removeValue,\n };\n}\n\nexport const getDomain = () => {\n const url = window.location.hostname;\n const urlItems = url.split('.');\n urlItems.shift();\n const domain = urlItems.join('.');\n return `.${domain}`;\n};\n\nconst isLocalStorageNameSupported = () => {\n const testKey = 'testKey';\n const storage = window.localStorage;\n try {\n storage.setItem(testKey, '1');\n storage.removeItem(testKey);\n return true;\n } catch (error) {\n return false;\n }\n};\n","import axios from 'axios';\nimport _ from 'lodash';\nimport {\n getCookie,\n removeCookie,\n setLocalStorageItem,\n getLocalStorageItem,\n removeLocalStorageItem,\n} from 'helpers/Storage';\nimport { setMVPDCookie as setMVPDClosureValue, setMVPDLogoutCookie } from 'helpers/ContentHelper';\nimport { getAccountCookie, setAccountCookie, convertTimestamp } from 'helpers/Account';\nimport { noop } from 'helpers/GlobalHelper';\nimport { differenceInMilliseconds, msToDate, now } from 'helpers/DateTimeHelper';\nimport { getBaseContentUrl } from 'helpers/ApiHelper';\n\nexport const DEVICE_TYPE = 'web';\nconst ENDPOINT_BUYTHROUGH_SCENARIOS = 'buythroughscenarios';\nexport const ENDPOINT_CHECK_AUTHENTICATION = 'checkAuthentication';\nexport const ENDPOINT_GET_AUTHENTICATION = 'getAuthentication';\nexport const ENDPOINT_GET_ENTITLEMENTS = 'getEntitlements';\nexport const ENDPOINT_LOGOUT = 'mvpdLogout';\nconst ENDPOINT_PREVIEW_PASS = 'previewPass';\nconst ENDPOINT_UPGRADE_JWT = 'upgradeToken';\nconst ENDPOINT_USER_METADATA = 'usermetadata';\nexport const MVPD_SCENARIO_DIRECT = 'mvpdDirect';\n\nexport const PREVIEW_PASS_60 = 'TempPass_fbcfox_60min';\nexport const PREVIEW_PASS_5 = 'TempPass_fbcfox_5min';\nexport const VCHIP_RATINGS = ['tv-y', 'tv-y7', 'tv-g', 'tv-pg', 'tv-14', 'tv-ma', 'nr'];\n\nexport const setLocalStorage = (key, data) => {\n try {\n setLocalStorageItem({ key, value: JSON.stringify(data) });\n } catch (error) {\n console.log('Setting cache error', error);\n }\n};\nexport const getLocalStorage = key => {\n let item = null;\n try {\n item = JSON.parse(getLocalStorageItem({ key }));\n } catch (error) {\n console.log('Getting cache error', error);\n }\n return item;\n};\nexport const removeLocalStorage = key => {\n try {\n removeLocalStorageItem({ key });\n } catch (error) {\n console.log('Removing cache error', error);\n }\n};\n\nexport const getAccessToken = data => _.get(data, 'accessToken', null);\nexport const getTokenExpiration = data => _.get(data, 'tokenExpiration', null);\nexport const getAuthNExpiration = data => _.get(data, 'authn_expire', null);\nexport const isTimestampExpired = timestamp => {\n const current = new Date();\n const expiration = new Date(timestamp);\n if (!expiration.getTime() || current > expiration) return true;\n return false;\n};\nexport const isTokenExpired = data => isTimestampExpired(getTokenExpiration(data));\n\nexport function isPreviewPass(id) {\n return id === PREVIEW_PASS_5 || id === PREVIEW_PASS_60 || false;\n}\n\nexport const setMVPDCookie = (name, value) => {\n const tokenExpiration = getTokenExpiration(value);\n const expires = convertTimestamp(tokenExpiration);\n const newCookie = {\n name,\n value,\n options: {\n path: '/',\n expires,\n },\n };\n setMVPDClosureValue(newCookie);\n};\n\nexport const removeMVPDCookie = name => {\n const options = {\n path: '/',\n };\n removeCookie({ key: name, options });\n};\n\nexport const getApiUrl = options => {\n const { endpoint, authEndpointConfig, mvpdId, placeholder, placeholderValue } = options;\n const baseUrl = getBaseContentUrl();\n let baseUri = _.get(authEndpointConfig, endpoint, endpoint);\n if (placeholder && placeholderValue) baseUri = baseUri.replace(placeholder, placeholderValue);\n const completeApiUrl = baseUrl && baseUri;\n\n if (!completeApiUrl) return null;\n\n const urlParams = mvpdId && endpoint === ENDPOINT_BUYTHROUGH_SCENARIOS ? `?mvpdId=${mvpdId}` : '';\n return `${baseUrl}${baseUri}${urlParams}`;\n};\n\nexport const getApiHeaders = options => {\n const apiKey = _.get(options, 'authEndpointConfig.apiKey', null);\n const accessToken = _.get(options, 'accessToken', null);\n const deviceId = _.get(options, 'deviceId', null);\n const xSignatureEnabled = _.get(options, 'xSignatureEnabled', null);\n const headers = {};\n\n if (apiKey) headers['X-Api-Key'] = apiKey;\n if (accessToken) headers.Authorization = accessToken;\n if (deviceId) headers['x-dcg-udid'] = deviceId;\n if (xSignatureEnabled) headers['x-signature-enabled'] = xSignatureEnabled;\n\n return headers;\n};\n\nexport const sendHttpRequest = ({ url, method, params, headers } = {}) =>\n new Promise(async (resolve, reject) => {\n try {\n const result = await axios({ url, method, params, headers });\n const data = _.get(result, 'data');\n resolve(data);\n } catch (error) {\n reject(error);\n }\n });\n\nexport const getPreviewPass = (options = {}) => {\n const { authEndpointConfig, deviceId, accessToken, mvpdId } = options;\n const method = 'GET';\n const endpoint = ENDPOINT_PREVIEW_PASS;\n const url = getApiUrl({ authEndpointConfig, endpoint });\n const headers = getApiHeaders({\n authEndpointConfig,\n endpoint,\n accessToken,\n deviceId,\n xSignatureEnabled: true,\n });\n const params = {\n device_id: deviceId,\n mvpd_id: mvpdId,\n };\n\n return sendHttpRequest({ url, method, params, headers });\n};\n\nexport const checkPreviewPass = async (options = {}) => {\n const { mvpdCookieName, setMVPDToAppState } = options;\n const setMVPDState = setMVPDToAppState || noop;\n\n return new Promise(async (resolve, reject) => {\n try {\n const result = await getPreviewPass(options);\n setMVPDCookie(mvpdCookieName, result);\n setMVPDState(result);\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n};\n\nexport const getAuthentication = (options = {}) => {\n const {\n appVersion,\n authEndpointConfig,\n deviceId,\n deviceType,\n firstScreen,\n accessToken,\n model,\n mvpdId,\n osName,\n redirectUrl,\n requestor,\n } = options;\n const method = 'GET';\n const endpoint = ENDPOINT_GET_AUTHENTICATION;\n const url = getApiUrl({ authEndpointConfig, endpoint });\n const headers = getApiHeaders({\n authEndpointConfig,\n endpoint,\n accessToken,\n deviceId,\n xSignatureEnabled: true,\n });\n const params = {\n device_id: deviceId,\n device_type: deviceType,\n app_version: appVersion,\n mvpd_id: mvpdId,\n first_screen: firstScreen,\n redirect_url: redirectUrl,\n requestor,\n model,\n osName,\n };\n\n return sendHttpRequest({ url, method, params, headers });\n};\n\nconst checkAuthenticationRequest = (options = {}) => {\n const { deviceId, deviceType, requestor } = options;\n\n const apiOptions = {\n ...options,\n endpoint: ENDPOINT_CHECK_AUTHENTICATION,\n xSignatureEnabled: true,\n };\n const method = 'GET';\n const url = getApiUrl(apiOptions);\n const headers = getApiHeaders(apiOptions);\n const params = {\n device_id: deviceId,\n device_type: deviceType,\n requestor,\n };\n return sendHttpRequest({ url, method, params, headers });\n};\n\nexport const checkAuthentication = async (options = {}) => {\n const { mvpdCookieName, setMVPDToAppState, setProvider = noop } = options;\n const setMVPDState = setMVPDToAppState || noop;\n\n return new Promise(async (resolve, reject) => {\n try {\n const result = await checkAuthenticationRequest(options);\n setMVPDCookie(mvpdCookieName, result);\n setMVPDState(result);\n resolve(result);\n } catch (error) {\n const mvpdCookie = getCookie({ name: mvpdCookieName });\n if (mvpdCookie) {\n const mvpd = _.get(mvpdCookie, 'mvpd', null);\n const tokenTTL = _.get(mvpdCookie, 'authn_expire', null);\n const tokenDiff = differenceInMilliseconds(msToDate(tokenTTL), now());\n // If User was logged in with PreviewPass and token is still valid, don't remove cookie\n if (!(isPreviewPass(mvpd) && tokenDiff > 0)) {\n removeMVPDCookie(mvpdCookieName);\n setProvider(null);\n setMVPDState(null);\n }\n }\n reject(error);\n }\n });\n};\n\nexport const getEntitlements = async (options = {}) => {\n try {\n const { setMVPDToAppState, mvpdCookieName } = options;\n const apiOptions = {\n ...options,\n endpoint: ENDPOINT_GET_ENTITLEMENTS,\n xSignatureEnabled: true,\n };\n const setMVPDState = setMVPDToAppState || noop;\n const method = 'GET';\n const url = getApiUrl(apiOptions);\n const headers = getApiHeaders(apiOptions);\n const result = await sendHttpRequest({ url, method, headers });\n const mvpdCookie = getCookie({ name: mvpdCookieName });\n const entitlements = _.get(result, 'entitlements');\n const preauthorizedResources = entitlements && _.keys(entitlements);\n\n if (mvpdCookie) {\n const newMvpdCookie = {\n ...mvpdCookie,\n preauthorizedResources,\n };\n setMVPDCookie(mvpdCookieName, newMvpdCookie);\n setMVPDState(newMvpdCookie);\n }\n\n return result;\n } catch (e) {\n return console.log('Get entitlements error', e);\n }\n};\n\nexport const getMetadata = async (options = {}) => {\n const { setMVPDToAppState, mvpdCookieName } = options;\n const setMVPDState = setMVPDToAppState || noop;\n const apiOptions = {\n ...options,\n endpoint: ENDPOINT_USER_METADATA,\n xSignatureEnabled: true,\n };\n\n const method = 'GET';\n const url = getApiUrl(apiOptions);\n const headers = getApiHeaders(apiOptions);\n const result = await sendHttpRequest({ url, method, headers });\n const mvpdCookie = getCookie({ name: mvpdCookieName });\n\n if (mvpdCookie) {\n const newMvpdCookie = {\n ...mvpdCookie,\n metadata: result,\n };\n setMVPDCookie(mvpdCookieName, newMvpdCookie);\n setMVPDState(newMvpdCookie);\n }\n\n return result;\n};\n\nexport const getBuythroughScenarios = async options => {\n const { mvpdId, setMVPDToAppState } = options;\n const setMVPDState = setMVPDToAppState || noop;\n const apiOptions = {\n ...options,\n endpoint: ENDPOINT_BUYTHROUGH_SCENARIOS,\n mvpdId,\n placeholder: '{packageId}',\n };\n const method = 'GET';\n const url = getApiUrl(apiOptions);\n const headers = getApiHeaders(apiOptions);\n\n const result = await sendHttpRequest({ url, method, headers });\n const upsellUrl = _.get(result, 'url');\n\n const { mvpdCookieName } = options;\n const mvpdCookie = getCookie({ name: mvpdCookieName });\n if (mvpdCookie && upsellUrl) {\n const newMvpdCookie = {\n ...mvpdCookie,\n buythroughData: result,\n };\n setMVPDCookie(mvpdCookieName, newMvpdCookie);\n setMVPDState(newMvpdCookie);\n }\n\n return result;\n};\n\nexport const checkAuthenticationOnWindowFocus = async (options = {}) =>\n new Promise(async (resolve, reject) => {\n let documentFocusTimeout;\n const listener = async () => {\n if (!document.hasFocus()) return;\n clearInterval(documentFocusTimeout);\n try {\n const authResult = await checkAuthentication(options);\n resolve(authResult);\n } catch (e) {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(null);\n }\n };\n documentFocusTimeout = setInterval(listener, 1000);\n });\n\nexport const logout = async (options = {}) => {\n const { setMVPDLogoutDataToAppState } = options;\n const apiOptions = {\n ...options,\n endpoint: ENDPOINT_LOGOUT,\n xSignatureEnabled: true,\n };\n const method = 'DELETE';\n const url = getApiUrl(apiOptions);\n const headers = getApiHeaders(apiOptions);\n return new Promise(async (resolve, reject) => {\n try {\n const result = await sendHttpRequest({ method, url, headers });\n setMVPDLogoutCookie({ value: result });\n setMVPDLogoutDataToAppState(result);\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n};\n\nexport const upgradeJWT = async options => {\n const apiOptions = {\n ...options,\n endpoint: ENDPOINT_UPGRADE_JWT,\n };\n const method = 'GET';\n const url = getApiUrl(apiOptions);\n const headers = getApiHeaders(apiOptions);\n\n const callback = async (resolve, reject) => {\n try {\n const result = await sendHttpRequest({ method, url, headers });\n const accessToken = _.get(result, 'accessToken');\n const tokenExpiration = _.get(result, 'tokenExpiration');\n const shouldUpdateCookie = accessToken && tokenExpiration;\n if (shouldUpdateCookie) {\n const account = getAccountCookie();\n const newAccountData = { ...account, accessToken, tokenExpiration };\n setAccountCookie(newAccountData);\n return resolve(accessToken);\n }\n return resolve(options.accessToken);\n } catch (error) {\n return reject(error);\n }\n };\n return new Promise(callback);\n};\n","import {\n getCookie as helperGetCookie,\n removeCookie as helperRemoveCookie,\n setCookie as helperSetCookie,\n} from 'helpers/Storage';\n\nconst CAN_I_AUTOPLAY = 'CAN_I_AUTOPLAY';\nconst name = CAN_I_AUTOPLAY;\nexport const getCookie = () => helperGetCookie({ name });\nexport const setCookie = value => helperSetCookie({ name, value, options: { path: '/' } });\nexport const removeCookie = () => helperRemoveCookie({ name });\n","/* global AdditionalPosterCurrentHover, AdditionalPosterSimplifiedHover, AppDownloadPromptEnabled, ConsolidatedLoginEnabled, Epgv2Enabled,EpgSearchEnabled,\n LiveTileV2, EpgLiveMiniPlayerEnabled, MVPDDeeplinkEnabled, PreviewPassEnabled, SecondScreenProfileEnabled,\n ThumbnailNetworkLogoEnabled, TveEnabled, AutoplayEnabled, RetiredShowsEnabled, SearchVideosEnabled,\n CCPAOptOutEnabled, SeriesAnonymousEnabled, SeriesDetailV2Enabled, SSARedirectEnabled, StrikeBannerEnabled */\nimport _ from 'lodash';\nimport { DEVICE_TYPE } from 'helpers/auth.clientless';\nimport { getCookie, setCookie, removeCookie } from 'helpers/Storage';\nimport {\n CCPA_DO_NOT_SELL_CHECKED,\n CCPA_DO_NOT_SELL_NOT_SEEN,\n CCPA_DO_NOT_SELL_SEEN,\n DEBUG_PANEL_AD_DEBUG,\n DEBUG_PANEL_AD_SITE_SECTION,\n DEBUG_PANEL_BLACKOUT_FETCH_INTERVAL,\n DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH,\n DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH,\n DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_CURRENT_HOVER,\n DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_SIMPLIFIED_HOVER,\n DEBUG_PANEL_FLAG_CCPA_OPT_OUT,\n DEBUG_PANEL_FLAG_GLOBAL_PLAYER_AUTOPLAY,\n DEBUG_PANEL_FLAG_SERIES_ANONYMOUS,\n DEBUG_PANEL_FLAG_STRIKE_BANNER,\n DEBUG_PANEL_LOCATION_COOKIE_DURATION,\n DEBUG_PANEL_USER,\n getPrivacyParameterCookie,\n NATION_ENTITLED_COOKIE_NAME,\n setPrivacyParameterCookie,\n} from 'helpers/ContentHelper';\nimport { toBoolean } from 'helpers/GlobalHelper';\nimport { getDomain, getUrlParamsFromHash } from 'helpers/RouteHelper';\nimport { getOptimizelyExperiment } from 'helpers/OptimizelyHelper';\nimport { getCookie as getCanIAutoplayCookie } from 'components/CanIAutoplay/Helper';\n\nlet ccpaOptOutCookie = null;\nexport const ccpaOptOutEnabled = () => {\n if (ccpaOptOutCookie === null) {\n ccpaOptOutCookie = getCookie({ name: DEBUG_PANEL_FLAG_CCPA_OPT_OUT });\n }\n if (ccpaOptOutCookie !== undefined) return toBoolean(ccpaOptOutCookie);\n return CCPAOptOutEnabled;\n};\n\nexport const tveEnabled = () => toBoolean(TveEnabled);\n\nexport const appDownloadPromptEnabled = () => AppDownloadPromptEnabled;\n\nfunction cookieCheck({ cookieName, feature, isGlobalSetTrue, optimizelyExperimentName }) {\n const cookie = getCookie({ name: cookieName });\n function checkCookie() {\n const activeExperiment = getOptimizelyExperiment(optimizelyExperimentName);\n if (activeExperiment !== null) return activeExperiment;\n if (isGlobalSetTrue) return isGlobalSetTrue;\n if (cookie === undefined) {\n return feature;\n }\n return toBoolean(cookie);\n }\n return checkCookie;\n}\n\nexport const clearAllCookies = () => {\n const cookies = document.cookie.split(';');\n cookies.forEach(cookie => {\n const cookieName = cookie.split('=')[0];\n if (cookieName) {\n removeCookie({ key: cookieName, options: { path: '/' } });\n }\n });\n};\n\nexport const autoplayEnabled = getCanIAutoplayCookie()\n ? cookieCheck({\n cookieName: DEBUG_PANEL_FLAG_GLOBAL_PLAYER_AUTOPLAY,\n feature: AutoplayEnabled,\n })\n : () => false;\n\nexport const blackoutEnabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_BLACKOUT',\n feature: null,\n});\n\nexport const secondScreenProfileEnabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_SECOND_SCREEN_PROFILE',\n feature: SecondScreenProfileEnabled,\n});\n\nlet currentPosterHoverEnabledCookie = null;\nexport const currentPosterHoverEnabled = () => {\n const isGlobalSetTrue = _.get(window, 'additionalPosterCurrentHoverEnabled', false);\n if (isGlobalSetTrue) return true;\n if (currentPosterHoverEnabledCookie === null) {\n currentPosterHoverEnabledCookie = getCookie({\n name: DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_CURRENT_HOVER,\n });\n }\n if (currentPosterHoverEnabledCookie === undefined) return AdditionalPosterCurrentHover;\n return toBoolean(currentPosterHoverEnabledCookie);\n};\n\nlet simplifiedPosterHoverEnabledCookie = null;\nexport const simplifiedPosterHoverEnabled = () => {\n const isGlobalSetTrue = _.get(window, 'additionalPosterSimplifiedHoverEnabled', false);\n if (isGlobalSetTrue) return true;\n if (simplifiedPosterHoverEnabledCookie === null) {\n simplifiedPosterHoverEnabledCookie = getCookie({\n name: DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_SIMPLIFIED_HOVER,\n });\n }\n if (simplifiedPosterHoverEnabledCookie === undefined) return AdditionalPosterSimplifiedHover;\n return toBoolean(simplifiedPosterHoverEnabledCookie);\n};\n\nexport const additionalPosterEnabled = () => currentPosterHoverEnabled();\n\nexport const getBlackoutConfig = () => {\n const externalBlackoutConfig = _.get(window.ExternalConfig, 'blackout');\n const blackoutEnabledOverride = blackoutEnabled();\n const blackoutConfig = { ...externalBlackoutConfig };\n\n if (blackoutEnabledOverride !== null && externalBlackoutConfig) {\n blackoutConfig.enabled = blackoutEnabledOverride;\n }\n\n return blackoutConfig;\n};\n\nexport const blackoutDurationOverride = () => {\n const cookie = getCookie({ name: DEBUG_PANEL_BLACKOUT_FETCH_INTERVAL });\n if (cookie === undefined) return null;\n return _.toInteger(cookie);\n};\n\n// Keeping buythroughEnabled for analytics calls.\nexport const buythroughEnabled = () => false; // eslint-disable-line\n\nlet nationEntitledCookie = null;\n\nexport const isNationEntitled = () => {\n if (nationEntitledCookie === null) {\n nationEntitledCookie = getCookie({ name: NATION_ENTITLED_COOKIE_NAME });\n }\n return nationEntitledCookie;\n};\n\nexport const thumbnailNetworkLogoEnabled = () => ThumbnailNetworkLogoEnabled;\n\nexport const getAuthNetworksConfig = () => _.get(window.ExternalConfig, 'auth.networks');\nconst getUserOverrides = () => {\n const cookie = getCookie({ name: DEBUG_PANEL_USER });\n return cookie;\n};\nexport const getDeviceIdOverride = () => _.get(getUserOverrides(), 'deviceId', null);\n\nexport const clientlessTokenExpireRefresh = () => {\n const cookie = getCookie({ name: DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH });\n if (cookie === undefined) return null;\n return _.toInteger(cookie);\n};\n\nexport const clientlessRecurringPreAuthZRefresh = () => {\n const defaultValue = _.get(window.ExternalConfig, 'recurringPreAuthZRefreshInMs');\n const cookie = getCookie({ name: DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH });\n if (cookie === undefined) return defaultValue;\n return _.toInteger(cookie);\n};\n\nexport const geolocationEnabled = () =>\n toBoolean(_.get(window.ExternalConfig, 'locationGate.enabled'));\n\nexport const previewModeEnabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_PREVIEW_MODE',\n feature: false,\n});\n\nexport const previewPassEnabled = tveEnabled()\n ? cookieCheck({ cookieName: 'DEBUG_PANEL_FLAG_PREVIEW_PASS', feature: PreviewPassEnabled })\n : () => false;\n\nexport const previewPass60MinDisabled = tveEnabled()\n ? cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_PREVIEW_PASS_60_MIN',\n feature: false,\n })\n : () => false;\n\nexport const mvpdDeeplinkEnabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_MVPD_DEEPLINK',\n feature: MVPDDeeplinkEnabled,\n});\n\nexport const marineAPIKeyEnabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_USE_MARINE_API_KEY',\n feature: false,\n});\n\nexport const getRequestorId = () => _.get(window.ExternalConfig, 'requestorId');\n\nexport const getAuthEndpointConfig = () => _.get(window.ExternalConfig, 'api.auth', {});\n\nexport const getDeviceType = () => DEVICE_TYPE;\n\nexport const getThumbnailBug = () => _.get(window.ExternalConfig, 'upsellPromo.thumbnailBug', {});\n\nexport const getPreviewPassImage = () =>\n _.get(window.ExternalConfig, 'auth.previewPass.image', null);\n\nexport const getPreviewPassWelcomeDelay = () =>\n _.get(window.ExternalConfig, 'auth.previewPass.welcomeOverlayDelay', 0);\n\nexport const getFormattedDomain = () => {\n const domain = getDomain();\n if (!domain) return null;\n return `.${domain}`;\n};\n\nexport const setDebugCookie = ({ name, value }) => {\n const domain = getFormattedDomain();\n const options = { domain, path: '/' };\n setCookie({ name, value, options });\n};\n\nexport const setDebugFromUrl = hash => {\n const params = getUrlParamsFromHash(hash);\n const adDebug = _.get(params, 'adzone');\n const adSiteSection = _.get(params, 'adSiteSection');\n if (adDebug) setDebugCookie({ name: DEBUG_PANEL_AD_DEBUG, value: adDebug });\n if (adSiteSection) setDebugCookie({ name: DEBUG_PANEL_AD_SITE_SECTION, value: adSiteSection });\n};\n\nexport const setOptOutCCPACookie = () => {\n const options = { path: '/' };\n if (ccpaOptOutEnabled()) {\n const isOptedOutCCPA = getPrivacyParameterCookie() === CCPA_DO_NOT_SELL_CHECKED;\n const isOptedOutSeenCCPA = getPrivacyParameterCookie() === CCPA_DO_NOT_SELL_SEEN;\n\n if (!isOptedOutCCPA && !isOptedOutSeenCCPA) {\n setPrivacyParameterCookie({ value: CCPA_DO_NOT_SELL_NOT_SEEN, options });\n } else if (isOptedOutCCPA) {\n setPrivacyParameterCookie({ value: CCPA_DO_NOT_SELL_CHECKED, options });\n } else if (isOptedOutSeenCCPA) {\n setPrivacyParameterCookie({ value: CCPA_DO_NOT_SELL_SEEN, options });\n }\n }\n};\n\nexport const isRetiredShowsEnabled = () => toBoolean(RetiredShowsEnabled);\n\nexport const getLocationCookieDuration = () => {\n const locationCookieOverride = getCookie({ name: DEBUG_PANEL_LOCATION_COOKIE_DURATION });\n const configCookieDuration = _.get(window, 'ExternalConfig.geolocation.promptIntervalDays', 14);\n const durationInDays = locationCookieOverride || configCookieDuration;\n return 3600 * 1000 * 24 * durationInDays;\n};\n\nexport const searchVideosEnabled = () => toBoolean(SearchVideosEnabled);\n\nexport const getBadgeConfig = () => _.get(window, 'ExternalConfig.badges', {});\n\nexport const isEpgv2Enabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_EPGV2',\n feature: Epgv2Enabled,\n optimizelyExperimentName: 'enableEPGRedesign',\n});\n\nexport const isEpgSearchEnabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_EPG_SEARCH',\n feature: EpgSearchEnabled,\n});\n\nexport const isEpgLiveMiniPlayerEnabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_EPG_MINI_PLAYER',\n feature: EpgLiveMiniPlayerEnabled,\n});\n\nexport const isConsolidatedLogin = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_CONSOLIDATED_SIGNIN',\n feature: ConsolidatedLoginEnabled,\n});\n\nexport const isSSARedirect = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_SSA_REDIRECT',\n feature: SSARedirectEnabled,\n});\n\nexport const seriesAnonymousEnabled = () => {\n const cookie = getCookie({ name: DEBUG_PANEL_FLAG_SERIES_ANONYMOUS });\n const hasCookie = cookie !== undefined;\n if (hasCookie) return toBoolean(cookie);\n return SeriesAnonymousEnabled;\n};\n\nexport const seriesV2Enabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_SERIES_V2',\n feature: SeriesDetailV2Enabled,\n});\n\nexport const liveTileCollectionV2Enabled = cookieCheck({\n cookieName: 'DEBUG_PANEL_FLAG_TILE_LIVE_TILE_V2',\n feature: LiveTileV2,\n});\n\nexport const strikeBannerEnabled = () => {\n const cookie = getCookie({ name: DEBUG_PANEL_FLAG_STRIKE_BANNER });\n const hasCookie = cookie !== undefined;\n if (hasCookie) return toBoolean(cookie);\n if (window.StrikeBannerEnabled !== undefined) return toBoolean(window.StrikeBannerEnabled);\n return StrikeBannerEnabled;\n};\n","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Style from './Links.module.scss';\n\nclass Links extends Component {\n constructor(props) {\n super(props);\n this.getLinks = this.getLinks.bind(this);\n }\n\n getLinks(item, index) {\n const { data, theme } = this.props;\n const isLastItem = data.length === index + 1;\n const { '@id': url, name } = item;\n const lastLinkStyle = classNames(Style.lastLink, theme.lastLink);\n const linkStyle = classNames(Style.link, theme.link);\n const linkClassNames = isLastItem ? lastLinkStyle : linkStyle;\n if (!url || !name) return null;\n return (\n <li data-test=\"links-item\" className={linkClassNames} key={`breadcrumb-${index}-${name}`}>\n <Link to={url} title={name} onlyActiveOnIndex>\n {name}\n </Link>\n </li>\n );\n }\n\n render() {\n const { data } = this.props;\n if (!data) return null;\n const links = data.map(this.getLinks);\n return <ol data-test=\"links\">{links}</ol>;\n }\n}\n\nLinks.defaultProps = {\n data: [],\n theme: {},\n};\n\nLinks.propTypes = {\n data: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.shape({}), PropTypes.bool])),\n theme: PropTypes.shape({}),\n};\nexport default Links;\n","/* global BaseUrl, SeasonPagesEnabled */\nimport React from 'react';\nimport { isClip, isMovie, isSports } from 'helpers/ContentHelper';\nimport {\n helperGetArticleUrl,\n helperGetBioLandingUrl,\n helperGetBioUrl,\n helperGetCharUrl,\n helperGetCharacterLandingUrl,\n helperGetLiveScheduleUrl,\n helperGetPersonalityUrl,\n helperGetSeriesArticleUrl,\n helperGetShowClipsUrl,\n helperGetShowsCollectionFilterUrl,\n helperGetShowUrl,\n helperGetVideoUrl,\n} from 'helpers/RouteHelper';\n\nconst {\n seriesDetail_clipsHeader: clipsLabel,\n epg_headerLiveScheduleText: primetimeLabel,\n seriesDetail_castHeader: creditsLabel,\n seriesDetail_characterHeader: characterHeader,\n global_seasonLabel: seasonLabel,\n global_watchButton: watchLabel,\n} = window.Language;\n\nconst preprendWatchLabel = data => {\n const name = `${watchLabel} ${data.name}`;\n return { ...data, name };\n};\n\nexport const generateItem = (id, name) => ({ '@id': id, name });\n\nexport const getShowData = ({ showId, showName, isPersonality, seriesType }) => {\n if (isSports(seriesType)) return null;\n const showUri = isPersonality ? helperGetPersonalityUrl(showId) : helperGetShowUrl(showId);\n return generateItem(showUri, showName);\n};\n\nexport const getShowsData = (tab, collectionId) => {\n const { headline } = tab;\n const uri = helperGetShowsCollectionFilterUrl(collectionId);\n return generateItem(uri, headline);\n};\nexport const getShowsFilterData = (collectionId, filterId, selectedFilter) => {\n const uri = helperGetShowsCollectionFilterUrl(collectionId, filterId);\n return generateItem(uri, selectedFilter);\n};\n\nexport const getArticleData = (article, params) => {\n const { headline } = article;\n const { pageId, articleId } = params;\n const id = pageId || articleId;\n const uri = helperGetArticleUrl(id);\n return generateItem(uri, headline);\n};\n\nexport const getSeriesArticleData = article => {\n const { siteScanUrl, headline } = article;\n const uri = helperGetSeriesArticleUrl(siteScanUrl);\n return generateItem(uri, headline);\n};\n\nexport const getEpisodeName = video => {\n const { name, episodeNumber, seasonNumber, displaySeasonAndEpisodeCounts } = video;\n if (seasonNumber && episodeNumber && displaySeasonAndEpisodeCounts) {\n return `S${seasonNumber}-E${episodeNumber} - ${name}`;\n }\n return name;\n};\n\nexport const getCreditsData = showId => {\n const bioUri = helperGetBioLandingUrl(showId);\n return generateItem(bioUri, creditsLabel);\n};\n\nexport const getCharactersData = showId => {\n const charUri = helperGetCharacterLandingUrl(showId);\n return generateItem(charUri, characterHeader);\n};\n\nexport const getCreditsDetailData = (showId, pageId, creditsData) => {\n const { name } = creditsData;\n const bioUri = helperGetBioUrl(showId, pageId);\n return generateItem(bioUri, name);\n};\n\nexport const getCharactersDetailData = (showId, pageId, creditsData) => {\n const { name } = creditsData;\n const charUri = helperGetCharUrl(showId, pageId);\n return generateItem(charUri, name);\n};\n\nexport const getMovieData = (showId, showName) => {\n const showUri = helperGetShowUrl(showId);\n return generateItem(showUri, showName);\n};\n\nexport const getClipsData = showId => {\n const showUri = helperGetShowClipsUrl(showId);\n return generateItem(showUri, clipsLabel);\n};\n\nexport const getEpisodeData = (episodeId, episodeName) => {\n const watchUri = helperGetVideoUrl(episodeId);\n return generateItem(watchUri, episodeName);\n};\n\nexport const getPrimetimeData = () => {\n const liveScheduleUri = helperGetLiveScheduleUrl();\n return generateItem(liveScheduleUri, primetimeLabel);\n};\n\nexport const getSeasonData = (showId, seasonNumber) => {\n const addSeasonData = SeasonPagesEnabled && seasonNumber;\n if (!addSeasonData) return null;\n const currentSeasonLabel = `${seasonLabel} ${seasonNumber}`;\n const showUri = helperGetShowUrl(showId);\n const seasonSlug = `season-${seasonNumber}`;\n const seasonUri = `${showUri}${seasonSlug}/`;\n return generateItem(seasonUri, currentSeasonLabel);\n};\n\nexport const getWatchData = video => {\n const { seriesName: showName, id: episodeId, videoType, seriesType } = video;\n\n const episodeName = getEpisodeName(video);\n const isMovieData = isMovie(videoType) || isMovie(seriesType);\n const shouldAddWatchLabel = isMovieData && !isClip(videoType);\n const name = isMovieData ? showName : episodeName;\n const data = getEpisodeData(episodeId, name);\n const watchData = shouldAddWatchLabel ? preprendWatchLabel(data) : data;\n\n return watchData;\n};\n\nexport const getHelmentItem = (item, index) => {\n const { '@id': id, name } = item;\n const position = index + 1;\n\n return {\n '@type': 'ListItem',\n position,\n item: generateItem(`${BaseUrl}${id}`, name),\n };\n};\n\nexport const getHelmetData = screenData => {\n const itemListElement = screenData.map(getHelmentItem);\n const json = {\n '@context': 'http://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement,\n };\n\n return <script type=\"application/ld+json\">{JSON.stringify(json)}</script>;\n};\n","import _ from 'lodash';\nimport {\n getNetworkBrandingName,\n isClip,\n isMovie,\n NEWS_GENRE,\n PAGE_TYPE_ARTICLE,\n PAGE_TYPE_CHARACTERS,\n PAGE_TYPE_CLIPS,\n PAGE_TYPE_CREDITS,\n TAB_PRIMETIME,\n} from 'helpers/ContentHelper';\nimport {\n helperGetHomeUrl,\n helperGetLiveUrl,\n helperGetNewsUrl,\n helperGetPersonalitiesUrl,\n helperGetSportsUrl,\n} from 'helpers/RouteHelper';\nimport {\n generateItem,\n getArticleData,\n getCharactersData,\n getCharactersDetailData,\n getClipsData,\n getCreditsData,\n getCreditsDetailData,\n getMovieData,\n getPrimetimeData,\n getSeasonData,\n getSeriesArticleData,\n getShowData,\n getShowsData,\n getShowsFilterData,\n getWatchData,\n} from './BreadcrumbsHelper';\n\nconst {\n personalitiesPage_header: personalitiesLabel,\n badge_liveText: liveLabel,\n newsPage_header: newsLabel,\n sportsPage_header: sportsLabel,\n} = window.Language;\n\nconst BRANDING_NAME = getNetworkBrandingName();\n\nconst HOME_ITEM = generateItem(helperGetHomeUrl(), BRANDING_NAME);\nconst LIVE_ITEM = videoId => generateItem(helperGetLiveUrl({ videoId }), liveLabel);\nconst FOX_LIVE_NAME = `Schedule`;\nconst FOX_LIVE_ITEM = videoId => generateItem(helperGetLiveUrl({ videoId }), FOX_LIVE_NAME);\nconst PERSONALITIES_ITEM = generateItem(helperGetPersonalitiesUrl(), personalitiesLabel);\nconst NEWS_ITEM = generateItem(helperGetNewsUrl(), newsLabel);\nconst SPORTS_ITEM = generateItem(helperGetSportsUrl(), sportsLabel);\n\nexport const articleDetailParser = (articleData, params) => {\n if (!articleData) return null;\n const data = [HOME_ITEM];\n data.push(getArticleData(articleData, params));\n return data;\n};\n\nexport const collectionParser = route => {\n const { path } = route;\n if (path.includes('local')) {\n return [HOME_ITEM, generateItem(`/local/`, 'Local')];\n }\n return [HOME_ITEM, generateItem(`/${path}/`, _.capitalize(path))];\n};\n\nexport const showsParser = ({ tab, params, selectedFilter }) => {\n const data = [HOME_ITEM];\n const { collectionId, filterId } = params;\n if (collectionId) {\n data.push(getShowsData(tab, collectionId));\n }\n if (filterId) {\n data.push(getShowsFilterData(collectionId, filterId, selectedFilter));\n }\n\n return data;\n};\n\nexport const liveParser = (selectedTab, savedVideo) => {\n const liveItem = LIVE_ITEM(_.get(savedVideo, 'id', null));\n const liveData = [HOME_ITEM, liveItem];\n if (selectedTab === TAB_PRIMETIME) {\n liveData.push(getPrimetimeData());\n }\n return liveData;\n};\n\nexport const foxLiveParser = savedVideo => {\n const liveItem = FOX_LIVE_ITEM(_.get(savedVideo, 'id', null));\n const liveData = [HOME_ITEM, liveItem];\n return liveData;\n};\n\nexport const seriesDetailParser = (params, seriesData, articleData, creditsData, isPersonality) => {\n if (!seriesData) return null;\n const { pageType, pageId } = params;\n const {\n id: showId,\n name: showName,\n seriesType,\n seriesDisplayType,\n genres,\n subGenres,\n } = seriesData;\n const siteScanUrl = articleData?.siteScanUrl;\n const shouldDisplayNews =\n seriesDisplayType === 'news' || _.includes(subGenres, 'News and Information');\n const shouldDisplaySports = _.some(\n genres,\n genre => genre.toLowerCase() === 'sports' || genre === 'Sports and Fitness',\n );\n const showData = getShowData({ showId, showName, isPersonality, seriesType });\n let secondLevelBreadcrumb;\n if (isPersonality) secondLevelBreadcrumb = PERSONALITIES_ITEM;\n if (shouldDisplayNews && NEWS_ITEM) secondLevelBreadcrumb = NEWS_ITEM;\n if (shouldDisplaySports && SPORTS_ITEM) secondLevelBreadcrumb = SPORTS_ITEM;\n const seriesDetailData = [HOME_ITEM, secondLevelBreadcrumb, showData];\n\n const shouldAddClips = pageType === PAGE_TYPE_CLIPS && showId;\n const shouldAddArticle = pageType === PAGE_TYPE_ARTICLE && articleData;\n const shouldAddSeriesArticle = siteScanUrl && siteScanUrl.split('/').pop() === pageType;\n const shouldAddCredits = pageType === PAGE_TYPE_CREDITS && showId;\n const shouldAddCharacters = pageType === PAGE_TYPE_CHARACTERS && showId;\n const shouldAddCreditsDetail = shouldAddCredits && creditsData;\n const shouldAddCharactersDetails = shouldAddCharacters && creditsData;\n const shouldAddSeason = _.includes(pageType, 'season-');\n\n if (shouldAddClips) {\n seriesDetailData.push(getClipsData(showId));\n }\n\n if (shouldAddArticle) {\n seriesDetailData.push(getArticleData(articleData, params));\n }\n\n if (shouldAddSeriesArticle) {\n seriesDetailData.push(getSeriesArticleData(articleData));\n }\n\n if (shouldAddCredits) {\n seriesDetailData.push(getCreditsData(showId));\n }\n\n if (shouldAddCharacters) {\n seriesDetailData.push(getCharactersData(showId));\n }\n\n if (shouldAddCreditsDetail) {\n seriesDetailData.push(getCreditsDetailData(showId, pageId, creditsData));\n }\n\n if (shouldAddCharactersDetails) {\n seriesDetailData.push(getCharactersDetailData(showId, pageId, creditsData));\n }\n\n if (shouldAddSeason) {\n const seasonNumber = _.replace(pageType, 'season-', '');\n seriesDetailData.push(getSeasonData(showId, seasonNumber));\n }\n\n return seriesDetailData;\n};\n\nexport const watchParser = (video, isLocalClip, localClipHeadline) => {\n if (!video) return null;\n const {\n contentSKU,\n currentSeason,\n genres,\n id,\n name,\n seasonNumber,\n seriesDisplayType,\n seriesName: showName,\n seriesType,\n showCode: showId,\n subGenres,\n videoType,\n } = video;\n\n const localHeadline = localClipHeadline || name;\n\n const shouldDisplayNews =\n seriesDisplayType === 'news' ||\n _.includes(subGenres, NEWS_GENRE) ||\n _.some(genres, genre => genre === NEWS_GENRE) ||\n _.some(contentSKU, sku => sku === 'us.FoxNews');\n\n const shouldDisplaySports = _.some(\n genres,\n genre => genre.toLowerCase() === 'sports' || genre === 'Sports and Fitness',\n );\n const isMovieData = isMovie(videoType) || isMovie(seriesType);\n const isClipData = isClip(videoType) && showId;\n\n let secondLevelBreadcrumb;\n if (shouldDisplayNews && NEWS_ITEM) secondLevelBreadcrumb = NEWS_ITEM;\n if (shouldDisplaySports && SPORTS_ITEM) secondLevelBreadcrumb = SPORTS_ITEM;\n\n const showData = getShowData({ showId, showName, seriesType });\n const movieData = getMovieData(showId, showName);\n const seasonData = currentSeason === seasonNumber ? null : getSeasonData(showId, seasonNumber);\n const showTabData = isClipData ? getClipsData(showId) : seasonData;\n const watchData = getWatchData(video);\n\n if (isMovieData) {\n return [HOME_ITEM, movieData, watchData];\n }\n\n if (isLocalClip) {\n return [\n HOME_ITEM,\n generateItem(`/local/`, 'Local'),\n generateItem(`/watch/${id}`, localHeadline),\n ];\n }\n\n return [HOME_ITEM, secondLevelBreadcrumb, showData, showTabData, watchData];\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Links from './Links';\nimport { getHelmetData } from './BreadcrumbsHelper';\nimport {\n articleDetailParser,\n collectionParser,\n liveParser,\n foxLiveParser,\n seriesDetailParser,\n showsParser,\n watchParser,\n} from './BreadcrumbsDataParsers';\nimport Style from './Breadcrumbs.module.scss';\n\nexport const breadcrumbsArticleDetailParser = articleDetailParser;\nexport const breadcrumbsCollectionParser = collectionParser;\nexport const breadcrumbsLiveParser = liveParser;\nexport const breadcrumbsFoxLiveParser = foxLiveParser;\nexport const breadcrumbsSeriesDetailParser = seriesDetailParser;\nexport const breadcrumbsShowsParser = showsParser;\nexport const breadcrumbsWatchParser = watchParser;\n\nconst Breadcrumbs = ({ data, theme = null, customStyle = null }) => {\n if (!data) return null;\n const filteredData = _.filter(data, value => !_.isEmpty(value));\n const helmetData = getHelmetData(filteredData);\n return (\n <div\n data-testid=\"breadcrumbs\"\n className={classNames([Style.container, theme.container, customStyle])}\n >\n <Helmet>{helmetData}</Helmet>\n <Links data={filteredData} theme={theme} />\n </div>\n );\n};\n\nBreadcrumbs.defaultProps = {\n data: [],\n theme: {},\n customStyle: '',\n};\n\nBreadcrumbs.propTypes = {\n data: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.shape({}), PropTypes.bool])),\n theme: PropTypes.shape({}),\n customStyle: PropTypes.string,\n};\n\nexport default Breadcrumbs;\n","/* global FontName, FontTypekitId */\n/* eslint-disable import/prefer-default-export */\n\nimport React from 'react';\nimport { Helmet } from 'react-helmet';\nimport _ from 'lodash';\nimport { isStaticRender } from 'helpers/ContentHelper';\nimport { helperGetStaticContentUrl } from 'helpers/RouteHelper';\n\nconst metaNameTags = {\n robots: 'robots',\n description: 'description',\n viewport: 'viewport',\n appleMediaServiceSubscription: 'apple-media-service-subscription',\n twitterCard: 'twitter:card',\n twitterSite: 'twitter:site',\n twitterUrl: 'twitter:url',\n twitterTitle: 'twitter:title',\n twitterDescription: 'twitter:description',\n twitterImage: 'twitter:image',\n appleItunesApp: 'apple-itunes-app-pseudo',\n googlePlayApp: 'google-play-app',\n kindleFireApp: 'kindle-fire-app',\n msApplicationId: 'msApplication-ID',\n msApplicationPackageFamilyName: 'msApplication-PackageFamilyName',\n};\n\nconst linkRelTags = {\n canonicalUrl: 'canonical',\n shortUrl: 'shortlink',\n appleTouchIcon: 'apple-touch-icon',\n androidTouchIcon: 'android-touch-icon',\n windowsTouchIcon: 'windows-touch-icon',\n favIcon: 'shortcut icon',\n};\n\nconst metaPropertyTags = {\n fbAppId: 'fb:app_id',\n ogSiteName: 'og:site_name',\n ogType: 'og:type',\n ogUrl: 'og:url',\n ogTitle: 'og:title',\n ogDescription: 'og:description',\n ogImage: 'og:image',\n};\n\n/**\n * Set Helmet Tags on the page Head\n * @param {String} title - the page title\n * @param {Object} meta tags - the key value pair for <meta name={key} content={value} />\n * @param {Object} og tags - the key value pair for <meta property={key} content={value} />\n * @param {Array} raw tags - array of react <meta /> component tags.\n */\nexport const setHelmetTags = data => {\n const tagItems = _.map(data, (value, key) => {\n if (key === 'title')\n return (\n <title key=\"meta-title\" className=\"ft-seo-tag-title\" data-test=\"web-seo-tag-title\">\n {value}\n \n );\n\n const metaNameTag = metaNameTags[key];\n if (metaNameTag)\n return ;\n\n const linkRelTag = linkRelTags[key];\n if (linkRelTag) return ;\n\n const metaPropertyTag = metaPropertyTags[key];\n if (metaPropertyTag)\n return (\n \n );\n\n return null;\n });\n const extraTags = _.get(data, 'tags', null);\n return (\n \n \n {tagItems}\n {extraTags}\n \n );\n};\n\nexport const getFontHelmetTag = () => {\n const staticFontWeights = {\n graphik: [400, 500],\n };\n const staticWeights = _.get(staticFontWeights, FontName);\n const defaultWeight = _.first(staticWeights);\n let fontEmbeds = null;\n if (FontTypekitId) {\n fontEmbeds = (\n \n );\n } else if (staticWeights && FontName !== 'graphik') {\n fontEmbeds = _.map(staticWeights, weight => {\n if (isStaticRender() && weight !== defaultWeight) return null;\n return (\n \n );\n });\n }\n if (!fontEmbeds) return null;\n return {fontEmbeds};\n};\n\nexport const brandOverrideMetaTags = contentNetwork => {\n if (!contentNetwork) return null;\n const allowedNetworks = _.get(window.ExternalConfig, 'networkContentWhitelist');\n const isNetworkAllowed = _.includes(allowedNetworks, contentNetwork);\n if (!isNetworkAllowed) {\n return (\n \n \n \n );\n }\n return null;\n};\n","import axios from 'axios';\nimport { helperGetApiHeaders, helperGetApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_FOOTER = 'FETCH_FOOTER';\nexport const FETCH_FOOTER_PROMOS = 'FETCH_FOOTER_PROMOS';\n\nexport function fetchFooter(deviceId) {\n const pageType = 'footer';\n const url = helperGetApiRoute(pageType);\n const headers = helperGetApiHeaders({ pathKey: pageType, deviceId });\n\n const request = axios.get(url, headers).catch(axiosErrorHandler);\n\n return {\n type: FETCH_FOOTER,\n payload: request,\n };\n}\n\nexport function fetchFooterPromos(accessToken, deviceId) {\n const pageType = 'globalPromos';\n const request = axios\n .get(\n helperGetApiRoute(pageType),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_FOOTER_PROMOS,\n payload: request,\n };\n}\n","import axios from 'axios';\nimport _ from 'lodash';\nimport {\n axiosErrorHandler,\n helperConvertApiRoute,\n helperGetApiHeaders,\n helperGetApiRoute,\n helperGetApiRouteById,\n helperAppendToUrl,\n} from 'helpers/ApiHelper';\n\nimport { getPrimetimeDateRange } from 'helpers/DateTimeHelper';\nimport { fetchFooter } from 'components/Footer/FooterActions';\nimport { getPrimeTimeNetworkFilter } from './LiveHelpers';\n\nexport const FETCH_LIVE = 'FETCH_LIVE';\nexport const FETCH_LIVE_PANEL = 'FETCH_LIVE_PANEL';\nexport const FETCH_LIVE_NEXT_PAGE = 'FETCH_LIVE_NEXT_PAGE';\nexport const FETCH_LIVESTREAM = 'FETCH_LIVESTREAM';\nexport const FETCH_PRIME_TIME = 'FETCH_PRIME_TIME';\nexport const SET_SUGGESTED_CHANNEL = 'SET_SUGGESTED_CHANNEL';\nexport const CLEAR_LIVE = 'CLEAR_LIVE';\nexport const SAVE_LIVE_VIDEO = 'SAVE_LIVE_VIDEO';\nexport const RESTORE_LIVE_GRID_STATE = 'RESTORE_LIVE_GRID_STATE';\n\nfunction fetchNextPage({ accessToken, nextUrl: url, deviceId }) {\n const data = axios\n .get(url, helperGetApiHeaders({ accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_LIVE_NEXT_PAGE,\n payload: data,\n };\n}\n\nfunction fetchLive({ accessToken, dateRange, network, deviceId }) {\n const pageType = 'live';\n let url = helperGetApiRoute(pageType);\n url = helperAppendToUrl({ url, network, dateRange });\n\n const request = axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_LIVE,\n payload: request,\n };\n}\n\nexport function fetchLiveAction({ accessToken, dateRange, coordinates, network, deviceId }) {\n return dispatch =>\n dispatch(fetchLive({ accessToken, dateRange, coordinates, network, deviceId }))\n .then(response => {\n const member = _.get(response, 'payload.data.panels.member', []);\n member.forEach(item => {\n const nextView = item?.items?.view?.next;\n if (nextView) {\n dispatch(fetchNextPage({ accessToken, nextUrl: nextView, deviceId }));\n }\n });\n })\n .then(() => dispatch(fetchFooter()));\n}\n\nexport function fetchLivePanel({ accessToken, panelUrl, dateRange, network, deviceId }) {\n const pageType = 'live';\n let url = helperConvertApiRoute(panelUrl);\n url = helperAppendToUrl({ url, network, dateRange });\n\n const request = axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_LIVE_PANEL,\n payload: request,\n };\n}\n\nexport function fetchLivestream(accessToken, livestreamId, deviceId) {\n const pageType = 'live';\n const url = helperGetApiRouteById('livestream', livestreamId, '{epgListingId}', true);\n const request = axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_LIVESTREAM,\n payload: request,\n };\n}\n\nexport function fetchPrimeTime(accessToken, deviceId) {\n const pageType = 'foxPrimetime';\n const dateRange = getPrimetimeDateRange();\n let url = helperGetApiRoute(pageType);\n const network = getPrimeTimeNetworkFilter();\n\n url = helperAppendToUrl({ url, network, dateRange });\n\n const request = axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_PRIME_TIME,\n payload: request,\n };\n}\n\nexport function saveLiveVideo(video) {\n return {\n type: SAVE_LIVE_VIDEO,\n payload: video,\n };\n}\n\nexport function setSuggestedChannel({ network, videoId, programId }) {\n return {\n type: SET_SUGGESTED_CHANNEL,\n payload: {\n data: {\n network,\n videoId,\n programId,\n },\n },\n };\n}\n\nexport function clearLive() {\n return {\n type: CLEAR_LIVE,\n };\n}\n\nexport function restoreLiveGridState(prevOpenRow, prevRowIdx) {\n return {\n type: RESTORE_LIVE_GRID_STATE,\n payload: {\n prevOpenRow,\n prevRowIdx,\n },\n };\n}\n","/* global SingleSignOnEnvironment */\nimport React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { strikeBannerEnabled } from 'helpers/ConfigHelper';\nimport { CCPA_OPT_OUT_COOKIE_NAME } from 'helpers/ContentHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { getCookie } from 'helpers/Storage';\nimport Style from './StrikeBanner.module.scss';\n\nexport const STRIKE_PAGE_TYPE_HOME = 'homepage';\nexport const STRIKE_PAGE_TYPE_SECTION_FRONT = 'section-front';\nexport const STRIKE_PAGE_TYPE_SCHEDULE = 'schedule';\n\nconst StrikeBanner = ({ index, pageType, breakpoint = null }) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [isInitialized, setIsInitialized] = useState(false);\n const scriptId = 'script-strikebanner';\n const uspString = getCookie({ name: CCPA_OPT_OUT_COOKIE_NAME });\n\n const styles = {\n [SITE_PLATFORM_MOBILE]: `mobile-ad ${Style.mobile}`,\n [SITE_PLATFORM_TABLET]: `tablet-ad ${Style.tablet}`,\n [SITE_PLATFORM_WEB]: `desktop-ad ${Style.desktop}`,\n [SITE_PLATFORM_WEB_LARGE]: `desktop-ad ${Style.desktop}`,\n };\n\n const ids = {\n [SITE_PLATFORM_MOBILE]: `mw-ad-ban${index}`,\n [SITE_PLATFORM_TABLET]: `tw-ad-lb${index}`,\n [SITE_PLATFORM_WEB]: `desk-ad-lb${index}`,\n [SITE_PLATFORM_WEB_LARGE]: `desk-ad-lb${index}`,\n };\n\n const afterLoad = () => {\n window.foxstrike = window.foxstrike || {};\n window.foxstrike.cmd = window.foxstrike.cmd || [];\n window.foxstrike.config = window.foxstrike.config || {};\n window.foxstrike.config.meta = window.foxstrike.config.meta || {};\n\n window.foxstrike.cmd.push(Strike => {\n Strike.pageReady();\n });\n setIsLoaded(true);\n };\n\n const addScript = useCallback(() => {\n if (document.getElementById(scriptId)) {\n afterLoad();\n return;\n }\n const prefixes = { production: '', stage: '', qa: 'dev-', dev: 'dev-' };\n const env = prefixes[SingleSignOnEnvironment];\n const scriptUrl = `https://${env}strike.fox.com/static/ent/display/loader.js`;\n\n const scriptTag = document.createElement('script');\n scriptTag.type = 'text/javascript';\n scriptTag.id = scriptId;\n scriptTag.src = scriptUrl;\n scriptTag.onload = afterLoad;\n scriptTag.onerror = () => {};\n document.head.appendChild(scriptTag);\n }, []);\n\n const finalize = () => {\n if (isLoaded) {\n window.foxstrike.cmd.push(Strike => {\n Strike.destroy();\n });\n }\n };\n\n useEffect(() => {\n addScript();\n return finalize;\n }, [index, addScript]);\n\n if (isLoaded && !isInitialized) {\n setIsInitialized(true);\n\n window.foxstrike.cmd.push(Strike => {\n Strike.setSection(pageType);\n Strike.setUSPValue(uspString);\n });\n\n window.foxstrike.cmd.push(Strike => {\n Strike.insertAd('mobile', `ban${index}`, ids[SITE_PLATFORM_MOBILE], pageType);\n });\n window.foxstrike.cmd.push(Strike => {\n Strike.insertAd('tablet', `lb${index}`, ids[SITE_PLATFORM_TABLET], pageType);\n });\n window.foxstrike.cmd.push(Strike => {\n Strike.insertAd('desktop', `lb${index}`, ids[SITE_PLATFORM_WEB], pageType);\n });\n }\n if (!strikeBannerEnabled()) return null;\n\n if (breakpoint) {\n return (\n
\n
\n
\n );\n }\n\n return (\n
\n
\n
\n
\n
\n );\n};\n\nStrikeBanner.propTypes = {\n index: PropTypes.number,\n pageType: PropTypes.oneOf([\n STRIKE_PAGE_TYPE_HOME,\n STRIKE_PAGE_TYPE_SECTION_FRONT,\n STRIKE_PAGE_TYPE_SCHEDULE,\n ]),\n breakpoint: PropTypes.string,\n};\nexport default StrikeBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Style from './Close.module.scss';\n\nconst CloseButton = ({ onClick }) => (\n
\n
\n);\n\nCloseButton.propTypes = {\n onClick: PropTypes.func.isRequired,\n};\n\nexport default CloseButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport { renderImage, FUTURE_EPG_MODAL_IMAGE } from 'helpers/ImageHelper';\nimport { SITE_PLATFORM_WEB } from 'helpers/BreakpointHelper';\nimport { helperGetStaticContentUrl } from 'helpers/RouteHelper';\nimport CallSign from 'components/CallSign';\nimport Style from './ModalImage.module.scss';\n\nconst foxFallbackImg = helperGetStaticContentUrl('images', 'FallBack-FOX.jpg');\n\nconst ModalImage = ({\n showPlayButton,\n callSign,\n breakpoint = SITE_PLATFORM_WEB,\n image,\n onPlayButtonClick,\n}) => (\n
\n
\n \n
\n
\n {renderImage({\n alt: 'EPG modal image',\n breakpoint,\n className: Style.image,\n imageType: FUTURE_EPG_MODAL_IMAGE,\n src: image || foxFallbackImg,\n })}\n {showPlayButton && (\n \n )}\n
\n
\n);\n\nModalImage.propTypes = {\n breakpoint: PropTypes.string,\n callSign: PropTypes.string,\n image: PropTypes.string,\n onPlayButtonClick: PropTypes.func,\n showPlayButton: PropTypes.bool,\n};\n\nexport default ModalImage;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { formatUpcomingTime } from 'helpers/VideoHelper';\nimport { getDayLabel, getTimeLeft } from '../../../../LiveHelpers';\nimport Style from './TuneInMeta.module.scss';\n\nconst days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nconst TuneInMeta = props => {\n const { tuneIn, retired, startDate } = props;\n const [timeLeftText, setTimeLeftText] = useState(getTimeLeft(startDate));\n useEffect(() => {\n setTimeLeftText(getTimeLeft(startDate));\n const timer = setInterval(() => setTimeLeftText(getTimeLeft(startDate)), 1000);\n return () => clearInterval(timer);\n }, [props, timeLeftText, startDate]);\n const airDate = formatUpcomingTime({ startDate });\n const { seriesDetail_retiredShowTuneInLabel: retiredTuneInLabel } = window.Language;\n let dayLabelText = getDayLabel(startDate);\n if (!dayLabelText) dayLabelText = days[new Date(startDate).getDay()];\n let tuneInText = retired ? tuneIn || retiredTuneInLabel : tuneIn;\n if (!tuneInText) tuneInText = airDate.replace(/-/g, '/');\n const metaText = dayLabelText\n ? `${dayLabelText}, ${tuneInText}${timeLeftText && ' · IN '}${timeLeftText}`\n : tuneInText;\n return (\n \n {metaText?.toUpperCase() || ''}\n \n );\n};\n\nTuneInMeta.propTypes = {\n tuneIn: PropTypes.string,\n retired: PropTypes.bool,\n startDate: PropTypes.string,\n};\n\nexport default TuneInMeta;\n","import _ from 'lodash';\nimport { helperGetApiRouteById } from 'helpers/ApiHelper';\n\nexport const getArticleApiId = articleUrl => {\n const contentId = _.split(articleUrl, '/').pop();\n return _.split(contentId, '-').pop();\n};\n\nexport const getArticleApiUrl = articleUrl =>\n helperGetApiRouteById('articleDetail', getArticleApiId(articleUrl), '{articleId}');\n\nexport const getArticleFromAlternateUrl = ({ articles, altUrl }) =>\n _.find(articles, article => {\n const siteScanUrl = _.get(article, 'siteScanUrl', null);\n return !!siteScanUrl && siteScanUrl.split('/').pop() === altUrl;\n });\n\nexport const getPurifyConfig = () => ({\n USE_PROFILES: {\n html: true,\n },\n FORCE_BODY: true,\n ADD_ATTR: ['target'],\n});\n\nexport const IFRAME_TEST_PATTERN = //im;\nexport const SCRIPT_TEST_PATTERN = /(.*)<\\/script>/im;\n","import _ from 'lodash';\nimport { helperGetPersonalityUrl } from 'helpers/RouteHelper';\nimport Regex from 'helpers/Regex';\nimport {\n PANEL_TYPE_CAST,\n PANEL_TYPE_CLIPS,\n PANEL_TYPE_EPISODES,\n getTabPageId,\n getTabName,\n isTabGrouped,\n} from './SeriesDetailHelpers';\n\nexport const getPersonalityTabSlug = ({ tab, tabs, noTabHomepage, seriesType }) => {\n if (!tab) return null;\n const { '@type': type, seasonNumber } = tab;\n const headline = getTabName({ tab, seriesType });\n\n if (tab && tabs) {\n if (!noTabHomepage && tabs.indexOf(tab) === 0) {\n return '';\n }\n const tabType = _.get(tab, '@type', null);\n const firstTabType = _.get(tabs, '0.@type', null);\n if (tabType === firstTabType && isTabGrouped({ tabType, seriesType })) {\n return tabType === PANEL_TYPE_EPISODES ? `season-${seasonNumber}` : '';\n }\n }\n if (type === PANEL_TYPE_CLIPS) return 'clips';\n if (type === PANEL_TYPE_EPISODES) return 'episodes';\n if (type === PANEL_TYPE_CAST) return 'credits';\n if (!headline) return null;\n return headline\n .toString()\n .toLowerCase()\n .replace(Regex.SPACES, '-') // Replace spaces with -\n .replace(Regex.NON_WORD_CHARACTERS, '') // Remove all non-word chars\n .replace(Regex.MULTIPLE_DASHES, '-') // Replace multiple - with single -\n .replace(Regex.LEADING_DASH, '') // Trim - from start of text\n .replace(Regex.TRAILING_DASH, ''); // Trim - from end of text;\n};\n\nexport const getPersonalityTabUrl = ({\n showId,\n tab,\n tabs,\n noTabHomepage,\n seriesType,\n isSubmenu,\n isPersonality,\n}) => {\n const tabSlug = getPersonalityTabSlug({\n tab,\n tabs,\n noTabHomepage,\n seriesType,\n isSubmenu,\n isPersonality,\n });\n const tabPageId = getTabPageId({ noTabHomepage, tab, tabs });\n let url = helperGetPersonalityUrl(showId);\n if (tabSlug) url = `${url}${tabSlug}${tabPageId}/`;\n return url;\n};\n","import Scroll from 'react-scroll';\nimport _ from 'lodash';\nimport {\n formatDirectUrl,\n isSpecial,\n isArticleTab,\n slugify,\n urlIsExternal,\n PAGE_TYPE_CREDITS,\n PANEL_TYPE_PROMOS,\n LABEL_CLIPS_AND_EXTRAS,\n} from 'helpers/ContentHelper';\nimport { getArticleApiId } from 'components/Article/ArticleHelpers';\n\nimport { helperGetShowUrl } from 'helpers/RouteHelper';\nimport Regex from 'helpers/Regex';\nimport { isHiddenForAnonymous } from 'helpers/AnonymousHelper';\nimport { getPersonalityTabSlug } from './PersonalityDetailHelpers';\n\nconst SERIES_TYPE_SPECIAL = 'special';\nexport const SERIES_TYPE_SERIES = 'series';\nexport const SERIES_TYPE_CREDITS = 'credits';\nexport const SERIES_TYPE_SERIES_COLLECTION = 'seriesCollection';\n\nexport const isSeriesCollection = seriesType => seriesType === SERIES_TYPE_SERIES_COLLECTION;\n\nexport const PANEL_TYPE_EPISODES = 'Season';\nexport const PANEL_TYPE_CLIPS = 'VideoList';\nexport const PANEL_TYPE_SCREEN_PANEL = 'ScreenPanel';\nexport const PANEL_TYPE_CAST = 'Cast';\nconst PANEL_TYPE_SERIES = 'Series';\n\nexport const PROMO_TYPE_FEATURED_TEXT = 'featuredText';\nexport const PROMO_TYPE_LEAD = 'lead';\nexport const PROMO_TYPE_INSET = 'inset';\nexport const PROMO_TYPE_MARKETING_VIDEO = 'marketingVideoBanner';\nconst PROMO_TYPE_NAV_ITEM = 'nav-item';\nexport const PROMO_TYPE_FEATURED_OVERRIDE = 'featured-override';\nexport const PROMO_TYPE_HEADER = 'vote';\nconst PROMO_TYPE_CALENDAR = 'calendar';\nexport const PROMO_TYPE_GALLERY = 'gallery';\nexport const PROMO_TYPE_HERO = 'hero';\nexport const PROMO_MARKETING_PERKS = 'marketing-perks';\n\nexport const NO_TAB_STATE_TRAILER = 'NO_TAB_STATE_TRAILER';\n\nexport const SERIES_SCROLL_ELEMENT = 'SERIES_SCROLL_ELEMENT';\nexport const ARTICLE_SCROLL_ELEMENT = 'ARTICLE_SCROLL_ELEMENT';\n\nexport const TILE_TYPE_CONTINUE_WATCHING = 'CONTINUE_WATCHING';\nexport const TILE_TYPE_LIVE = 'LIVE';\nexport const TILE_TYPE_SERIES_PROMO = 'SERIES_PROMO';\nexport const TILE_TYPE_LATEST = 'LATEST';\nexport const TILE_TYPE_LATEST_PERSONALITY = 'LATEST_PERSONALITY';\n\nconst GROUPED_PANELS = [PANEL_TYPE_EPISODES, PANEL_TYPE_SERIES];\n\nconst enableBioLanding = true;\n\nexport const isTabGrouped = ({ tabType, seriesType }) => {\n if (seriesType === SERIES_TYPE_SERIES_COLLECTION || isSpecial(seriesType)) return false;\n return GROUPED_PANELS.indexOf(tabType) >= 0;\n};\n\nexport const getTabName = ({ tab, seriesType }) => {\n if (!tab) return null;\n const {\n '@type': type,\n seasonNumber,\n name,\n ctaText,\n headline,\n displaySeasonAndEpisodeCounts,\n } = tab;\n const {\n seriesDetail_seasonLabel: seasonLabel,\n seriesDetail_castHeader: creditsLabel,\n } = window.Language;\n\n if (type === PANEL_TYPE_CAST) return creditsLabel;\n if (seriesType === SERIES_TYPE_SERIES_COLLECTION) return name;\n if (type === PANEL_TYPE_EPISODES && headline && !displaySeasonAndEpisodeCounts) return headline;\n if (type === PANEL_TYPE_EPISODES && !headline) return `${seasonLabel} ${seasonNumber}`;\n return headline || ctaText || name;\n};\n\nexport const getTabSlug = ({ tab, tabs, noTabHomepage, seriesType, isSubmenu }) => {\n if (!tab) return null;\n const { '@type': type } = tab;\n const headline = getTabName({ tab, seriesType })\n .toString()\n .toLowerCase()\n .replace(Regex.SPACES, '-') // Replace spaces with -\n .replace(Regex.NON_WORD_CHARACTERS, '') // Remove all non-word chars\n .replace(Regex.MULTIPLE_DASHES, '-') // Replace multiple - with single -\n .replace(Regex.LEADING_DASH, '') // Trim - from start of text\n .replace(Regex.TRAILING_DASH, ''); // Trim - from end of text\n const directUrl = _.get(tab, 'url');\n if (directUrl) {\n const firstDirectUrl = _.get(tabs, '0.url');\n if (directUrl && !urlIsExternal(directUrl) && firstDirectUrl === directUrl && !isSubmenu)\n return '';\n }\n if (tab && tabs) {\n if (!noTabHomepage && tabs.indexOf(tab) === 0) {\n return '';\n }\n const tabType = _.get(tab, '@type', null);\n const firstTabType = _.get(tabs, '0.@type', null);\n if (tabType === firstTabType && isTabGrouped({ tabType, seriesType })) {\n return tabType === PANEL_TYPE_EPISODES ? headline : '';\n }\n }\n if (type === PANEL_TYPE_CLIPS) return 'clips';\n if (type === PANEL_TYPE_EPISODES) return 'episodes';\n if (type === PANEL_TYPE_CAST) return 'credits';\n if (!headline) return null;\n return headline;\n};\n\nexport const getTabPageId = ({ noTabHomepage, tab, tabs }) => {\n const { '@type': type, name, filter } = tab;\n if (!noTabHomepage && tabs.indexOf(tab) === 0) return '';\n if (type === PANEL_TYPE_CLIPS && filter) return `/${_.kebabCase(name)}`;\n return '';\n};\n\nexport const getTabUrl = ({ showId, tab, tabs, noTabHomepage, seriesType, isSubmenu }) => {\n const directUrl = _.get(tab, 'url');\n if (directUrl && urlIsExternal(directUrl)) return formatDirectUrl(directUrl);\n const tabSlug = getTabSlug({ tab, tabs, noTabHomepage, seriesType, isSubmenu });\n const tabPageId = getTabPageId({ noTabHomepage, tab, tabs });\n let url = helperGetShowUrl(showId);\n if (tabSlug) url = `${url}${tabSlug}${tabPageId}/`;\n return url;\n};\n\nconst isTabSelected = ({\n isPersonality,\n tab,\n tabs,\n noTabState,\n noTabHomepage,\n seriesType,\n pageId,\n}) => {\n if (!tab) return false;\n const tabSlug = isPersonality\n ? getPersonalityTabSlug({ tab, tabs, noTabHomepage, seriesType })\n : getTabSlug({ tab, tabs, noTabHomepage, seriesType });\n const tabPageId = getTabPageId({ noTabHomepage, tab, tabs });\n if (pageId === tabSlug) return true;\n if (tabSlug === PAGE_TYPE_CREDITS && _.includes(pageId, tabSlug)) return true;\n if (pageId === `${tabSlug}${tabPageId}`) return true;\n if (noTabState) return false;\n if (!pageId) return true;\n return false;\n};\n\nexport const hasChildren = tab => {\n const children = _.get(tab, 'children', null);\n return children && children.length > 0;\n};\n\nexport const getSelectedTabIndex = ({\n isPersonality,\n pageId,\n tabs,\n noTabState,\n noTabHomepage,\n seriesType,\n}) => {\n let subTabIndex = false;\n const tabIndex = tabs.findIndex(tab => {\n let selected = false;\n selected = isTabSelected({\n pageId,\n tab,\n tabs,\n noTabState,\n noTabHomepage,\n seriesType,\n isPersonality,\n });\n if (!selected && hasChildren(tab)) {\n const childTabs = _.get(tab, 'children');\n const { tabIndex: childIndex } = getSelectedTabIndex({\n pageId,\n tabs: childTabs,\n noTabState,\n noTabHomepage,\n seriesType,\n });\n if (childIndex !== false) {\n subTabIndex = childIndex;\n selected = true;\n }\n }\n return selected;\n });\n if (tabIndex < 0) {\n return false;\n }\n return { tabIndex, subTabIndex };\n};\n\nexport const getPromoData = ({ data, promoType }) =>\n _.find(data, promo => {\n if (promoType === PROMO_MARKETING_PERKS) {\n const collectionType = _.get(promo, 'collectionType', '');\n return collectionType === PROMO_MARKETING_PERKS;\n }\n const type = _.get(promo, 'items.member[0].promoType', '');\n return type === promoType;\n });\n\nexport function clearFetchNodeInterval() {\n const { currentFetchNode } = this.state;\n const currentFetchInterval = _.get(currentFetchNode, 'fetch');\n if (currentFetchNode) {\n clearInterval(currentFetchInterval);\n this.setState({ currentFetchNode: null });\n }\n}\n\nexport function checkForDOMNode(nextNodeId, duration, offsetTop) {\n const { currentFetchNode } = this.state;\n const currentNodeId = _.get(currentFetchNode, 'id');\n const currentFetchInterval = _.get(currentFetchNode, 'fetch');\n const nodeIdsMatch = currentNodeId === nextNodeId;\n if (!nodeIdsMatch) {\n if (currentFetchNode) {\n clearInterval(currentFetchInterval);\n this.setState({ currentFetchNode: null });\n }\n let count = 0;\n const fetchNodeInterval = setInterval(() => {\n count += 1;\n const node = document.getElementById(nextNodeId);\n if (node) {\n const nodeTop = node.offsetTop;\n Scroll.animateScroll.scrollTo(nodeTop + offsetTop);\n clearInterval(fetchNodeInterval);\n this.setState({ currentFetchNode: null });\n }\n\n const isExpired = count === duration;\n if (isExpired) {\n clearInterval(currentFetchInterval);\n this.setState({ currentFetchNode: null });\n }\n }, 1000);\n this.setState({ currentFetchNode: { id: nextNodeId, fetch: fetchNodeInterval } });\n }\n}\n\nexport const scrollToElement = ({ slug, nodeFetcher, duration, clearNodeFetcher, offsetTop }) => {\n const elementId = slug;\n if (duration && nodeFetcher) return nodeFetcher(elementId, duration, offsetTop);\n\n const node = document.getElementById(elementId);\n if (!node) return null;\n clearNodeFetcher();\n const nodeTop = node.offsetTop;\n return Scroll.animateScroll.scrollTo(nodeTop + offsetTop);\n};\n\nexport const hasPrePremiereVideo = item =>\n _.get(item, '0.items.member.0.previewVideo.@populated', false);\n\nexport const isInlineComponent = elem => elem && elem.panelType === 'showBranding';\nexport const isContinueWatchingComponent = elem => elem && elem.panelType === 'continueWatching';\nconst isVideoComponent = elem => elem && elem.panelType === 'videos';\nexport const isPromoItem = elem => elem && elem['@type'] === 'Promo';\n\nexport const isUngatedVideo = video => {\n const { availabilityTags } = video?.trackingData?.properties || [];\n return (\n availabilityTags &&\n availabilityTags.map(text => text.toLowerCase()).find(text => text === 'free')\n );\n};\n\nconst isValidPromoItem = elem =>\n elem &&\n elem['@type'] === 'Promo' &&\n (elem.promoType === PROMO_TYPE_NAV_ITEM ||\n elem.promoType === PROMO_TYPE_GALLERY ||\n elem.promoType === 'nftRewards' ||\n elem.promoType === 'nftCountdown') &&\n (elem.url || hasChildren(elem));\nexport const isCreditsItem = elem => elem && elem['@type'] === PANEL_TYPE_CAST;\n\nexport const getCTAUrl = directUrl => {\n if (directUrl && urlIsExternal(directUrl)) return formatDirectUrl(directUrl);\n return directUrl;\n};\n\nconst isNFT = elem =>\n elem &&\n elem['@type'] === 'Promo' &&\n (elem.promoType === 'nftRewards' || elem.promoType === 'nftCountdown');\n\nexport const getAnonymousCTAText = ({ item }) => {\n const {\n seriesDetailAnonymous_promoUngatedCTA,\n seriesDetailAnonymous_promoGatedCTA,\n } = window.Language;\n return isUngatedVideo(item)\n ? seriesDetailAnonymous_promoUngatedCTA\n : seriesDetailAnonymous_promoGatedCTA;\n};\n\nexport const getAnonymousTuneIn = seriesType => {\n const {\n seriesDetailAnonymous_tuneIn: anonymousTuneInSeries,\n seriesDetailAnonymous_tuneInDocumentary: anonymousTuneInDocumentary,\n } = window.Language;\n if (seriesType === SERIES_TYPE_SPECIAL) {\n return anonymousTuneInDocumentary;\n }\n return anonymousTuneInSeries;\n};\n\nexport const getTabDataUrl = item => {\n const videos = _.get(item, 'items.member', null);\n if (videos) return null;\n let url = _.get(item, 'episodes.@id', null);\n if (!url) url = _.get(item, 'items.@id', null);\n return url;\n};\n\n// @todo: Make it better, instead of checking if the name contains clips & extras\nexport const isPlaylist = tab => {\n const tabType = _.get(tab, '@type', null);\n const name = _.get(tab, 'name', null);\n return tabType === PANEL_TYPE_CLIPS && name && name.indexOf(LABEL_CLIPS_AND_EXTRAS) === -1;\n};\n\nexport const isSeasonPanel = panel => _.get(panel, '@type') === PANEL_TYPE_EPISODES;\n\nexport const getSeasonCount = ({ tabs }) =>\n tabs ? _.size(_.filter(tabs, t => t['@type'] === 'Season')) : 0;\n\nexport const getCreditIdFromUrl = ({ credits, pageId }) => {\n const selectedCredit = _.find(credits, credit => _.get(credit, 'alternateId') === pageId);\n return _.get(selectedCredit, 'id');\n};\n\nexport const getFeaturedBio = (pageId, bioProfiles) => {\n const pageIdMatch = _.get(bioProfiles, `${pageId}.featured`, null);\n if (pageIdMatch) return pageIdMatch;\n let foundObject = null;\n if (bioProfiles) {\n Object.keys(bioProfiles).forEach(key => {\n const featured = _.get(bioProfiles, `${key}.featured`, null);\n if (pageId === _.get(featured, 'alternateId')) {\n foundObject = featured;\n }\n return null;\n });\n }\n return foundObject;\n};\n\nconst isAboutSection = section =>\n _.get(section, 'siteScanUrl', '')\n .split('/')\n .pop() === 'about-the-show';\n\nconst getSectionOrder = sections => {\n let sectionOrder = [];\n const nftItems = [];\n sections.forEach(section => {\n const type = _.get(section, '@type', '').toLowerCase();\n const promoType = _.get(section, 'promoType', '').toLowerCase();\n const isAbout = isAboutSection(section);\n const isClips = type === 'videolist' || type === 'screenpanel';\n const isHowTo = promoType === 'how-to';\n const isNFTRewards = promoType === 'nftrewards';\n const isNFTCountdown = promoType === 'nftcountdown';\n if (isNFTRewards) nftItems.push({ section, type: 'nftRewards' });\n if (isNFTCountdown) nftItems.push({ section, type: 'nftCountdown' });\n const isUniq = type =>\n type &&\n !_.find(sectionOrder, ({ type: sectionType }) => sectionType === type) &&\n !isHowTo &&\n !isNFTRewards &&\n !isNFTCountdown;\n if (!isClips && isUniq(type)) sectionOrder.push({ section, type });\n if (isClips) sectionOrder.push({ section, type: 'clips' });\n if (isAbout && isUniq('about')) sectionOrder.push({ section, type: 'about' });\n });\n const seasonIndex = sectionOrder.findIndex(elem => elem?.type === 'season');\n const clipsIndex = sectionOrder.findIndex(elem => elem?.type === 'clips');\n\n if (nftItems.length) nftItems.sort((a, b) => b?.type?.localeCompare(a?.type));\n\n if (typeof seasonIndex === 'number' && nftItems.length) {\n sectionOrder = [\n ...sectionOrder.slice(seasonIndex, seasonIndex + 1),\n ...nftItems,\n ...sectionOrder.slice(seasonIndex + 1, sectionOrder.length),\n ];\n } else if (\n !typeof seasonIndex === 'number' &&\n typeof clipsIndex === 'number' &&\n nftItems.length\n ) {\n sectionOrder = [\n ...sectionOrder.slice(clipsIndex, clipsIndex + 1),\n ...nftItems,\n ...sectionOrder.slice(clipsIndex + 1, sectionOrder.length),\n ];\n } else if (nftItems.length) {\n sectionOrder = [...nftItems, ...sectionOrder];\n }\n return sectionOrder;\n};\nconst buildArticle = item => {\n const isArticle = isArticleTab(item);\n const articleId = isArticle ? getArticleApiId(item.url) : null;\n return {\n ...item,\n isArticle,\n articleId,\n };\n};\n\nconst getLinks = sections => {\n const aboutLink = _.filter(sections, section => isAboutSection(section)).map(item =>\n buildArticle(item),\n );\n const links = _.filter(\n sections,\n section => isValidPromoItem(section) && !isAboutSection(section) && !isNFT(section),\n ).map(item => buildArticle(item));\n return aboutLink ? [...links, ...aboutLink] : links;\n};\n\nexport const getDetailData = ({\n data,\n inlineComponent,\n latestEpisode,\n panels,\n screenTypeId,\n seriesData,\n}) => {\n const oldestEpisode = _.get(seriesData, 'oldestEpisode');\n const promos = _.filter(panels, { panelType: PANEL_TYPE_PROMOS });\n const calendar = _.find(_.get(promos, 'items.member'), { promoType: PROMO_TYPE_CALENDAR });\n const latestEpisodeBadges = _.get(latestEpisode, 'contentLabel');\n const isLatestEpisodeLive =\n latestEpisodeBadges && latestEpisodeBadges.find(badge => badge.toLowerCase() === 'live');\n const videoComponents = panels.filter(elem => isVideoComponent(elem));\n const continueWatchingComponents = panels.filter(elem => isContinueWatchingComponent(elem));\n const continueWatchingItems =\n continueWatchingComponents.length > 0\n ? _.get(continueWatchingComponents, '0.items.member')\n : [];\n const continueWatching = continueWatchingItems.slice(0, 1);\n const seo = _.get(data, 'SEO', null);\n const isPersonality = _.get(data, 'categoryType') === 'personality';\n let seriesType;\n switch (screenTypeId) {\n case 'special-detail':\n seriesType = 'special';\n break;\n case 'movie-detail':\n seriesType = 'movie';\n break;\n case 'series-detail':\n default:\n seriesType = 'show';\n }\n let favoritableItems = null;\n if (isPersonality) {\n favoritableItems = _.get(data, 'favoritableItems');\n } else {\n const showBrandingPanel = _.find(panels, isInlineComponent);\n favoritableItems = _.get(showBrandingPanel, 'items.member.0.favoritableItems');\n }\n let tabComponents = panels.filter(\n elem =>\n !isInlineComponent(elem) &&\n !isContinueWatchingComponent(elem) &&\n !isVideoComponent(elem) &&\n !isHiddenForAnonymous(elem),\n );\n if (!isPersonality) {\n tabComponents = _.flatten(tabComponents.map(item => _.get(item, 'items.member')));\n }\n\n const nonPromoComponents = _.filter(tabComponents, tab => !isPromoItem(tab));\n let promoComponents = _.filter(tabComponents, tab => isValidPromoItem(tab));\n promoComponents = _.sortBy(promoComponents, ['featuredWeight']);\n tabComponents = _.concat(nonPromoComponents, promoComponents);\n tabComponents = _.concat(videoComponents, tabComponents);\n\n const credits = _.get(inlineComponent, 'items.member.0.credits');\n\n if (credits && enableBioLanding) {\n credits.id = 'pseudo-tab-credits';\n credits['@type'] = PANEL_TYPE_CAST;\n const castMembersWithImages = _.get(credits, 'member', []).filter(\n item => !!_.get(item, 'images.bioDetail'),\n );\n const castMembers = _.groupBy(castMembersWithImages, 'category');\n\n credits.member = castMembers;\n\n if (credits) {\n tabComponents.push(credits);\n }\n }\n const links = getLinks(tabComponents);\n\n const seriesSortOrder = getSectionOrder(tabComponents);\n return {\n calendar,\n continueWatching,\n continueWatchingItems,\n favoritableItems,\n isLatestEpisodeLive,\n links,\n oldestEpisode,\n promos,\n seo,\n seriesSortOrder,\n seriesType,\n tabComponents,\n };\n};\n\nexport const getTabsOfMultipleTypes = (tabs = [], types = []) =>\n tabs?.filter(tab => {\n const { '@type': tabType } = tab;\n return _.includes(types, tabType);\n });\n\nexport const getSelectedItem = tabs => {\n const path = window.location.pathname;\n const selectedItem = _.find(tabs, tab => {\n const urlMatches = path.includes(tab.url);\n const slugMatches = path.includes(slugify(tab.name));\n return urlMatches || slugMatches;\n });\n\n return selectedItem || tabs[0];\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { SERIES_TYPE_SERIES } from 'screens/SeriesDetail/SeriesDetailHelpers';\n\nimport Style from './Title.module.scss';\n\nconst Title = ({ seriesType, seriesName, episodeNumber, seasonNumber, name }) => {\n if (seriesType !== SERIES_TYPE_SERIES) return null;\n const seasonText = seasonNumber && `S${seasonNumber}`;\n const episodeText = episodeNumber && `E${episodeNumber}`;\n const nameText = name === seriesName ? '' : name;\n const tuneIn = [seasonText, episodeText, nameText].filter(text => text).join(' ');\n if (!tuneIn) return null;\n return
{tuneIn}
;\n};\n\nTitle.propTypes = {\n seriesType: PropTypes.string,\n seriesName: PropTypes.string,\n episodeNumber: PropTypes.number,\n seasonNumber: PropTypes.number,\n name: PropTypes.string,\n};\n\nexport default Title;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getDurationText } from 'helpers/VideoHelper';\nimport Style from './DescriptionMeta.module.scss';\n\nconst DescriptionMeta = ({ durationInSeconds, contentRating }) => {\n const durationText = getDurationText(durationInSeconds);\n const rating = contentRating?.toUpperCase();\n const meta = [durationText, rating].filter(text => text).join(' · ');\n return
{meta}
;\n};\n\nDescriptionMeta.propTypes = {\n durationInSeconds: PropTypes.number,\n contentRating: PropTypes.string,\n};\n\nexport default DescriptionMeta;\n","import React from 'react';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport Style from './ActionButton.module.scss';\n\nconst ActionButton = ({\n clickHandler = () => {},\n icon = null,\n shouldRender = true,\n text = null,\n url = null,\n}) => {\n if (!shouldRender) return null;\n return url ? (\n \n \n
\n \n
\n \n \n \n ) : (\n
\n \n
\n \n
\n \n \n
\n );\n};\n\nActionButton.propTypes = {\n clickHandler: PropTypes.func,\n icon: PropTypes.string,\n shouldRender: PropTypes.bool,\n text: PropTypes.string,\n url: PropTypes.string,\n};\n\nexport default ActionButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Favorite, { FAVORITE_PLUS } from 'components/Favorite';\nimport { getShowType } from 'helpers/ContentHelper';\nimport { PageNames, SegmentSources, tealiumEventPageTypes } from '@foxcorp/delta-web-analytics';\nimport Style from './ActionButton.module.scss';\n\nconst FavoriteButton = ({\n manager,\n seriesName,\n showCode,\n favoritableItems,\n network,\n seriesType,\n recommendationId,\n}) => {\n const { global_watchlistButton, global_watchlistSetButton } = window.Language;\n\n const actionLocation = tealiumEventPageTypes?.[PageNames.LIVE];\n const location = tealiumEventPageTypes?.[PageNames.FAVORITES_LIVE];\n const showType = getShowType({ seriesType });\n const defaultText = global_watchlistButton;\n const favoritedText = global_watchlistSetButton;\n const iconType = FAVORITE_PLUS;\n\n const data = {\n actionLocation,\n favoritableItems,\n favoriteType: showType,\n location,\n networkId: network,\n recommendationId,\n seriesName,\n showID: showCode,\n source: SegmentSources.DETAIL,\n };\n\n const favorites = manager?.favorites;\n\n const favoriteButtonProps = {\n data,\n defaultText,\n favoritedText,\n favorites,\n iconType,\n isEpgFavorite: true,\n manager,\n theme: Style,\n };\n\n return (\n
\n
\n \n
\n
\n );\n};\n\nFavoriteButton.propTypes = {\n manager: PropTypes.shape({}).isRequired,\n favoritableItems: PropTypes.arrayOf(PropTypes.shape({})),\n showCode: PropTypes.string,\n seriesName: PropTypes.string,\n network: PropTypes.string,\n seriesType: PropTypes.string,\n recommendationId: PropTypes.string,\n};\n\nexport default FavoriteButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport CloseButton from './components/CloseButton';\nimport ModalImage from './components/ModalImage';\nimport TuneInMeta from './components/TuneInMeta';\nimport Title from './components/Title';\nimport DescriptionMeta from './components/DescriptionMeta';\nimport ActionButton from './components/ActionButton';\nimport FavoriteButton from './components/ActionButton/FavoriteButton';\nimport Style from './FutureCellModal.module.scss';\n\nconst FutureCellModal = ({\n favoritesManager = {},\n onClose = () => null,\n recommendationId,\n showPlayButton,\n video = {},\n visibility,\n}) => {\n const { callSign, seriesName, description, images, isSeriesDetailAvailable, seriesScreenUrl } =\n video || {};\n const { raw: image } = images?.seriesList || {};\n const { global_moreInfoButton: moreInfoText } = window.Language;\n\n return (\n
\n
e.stopPropagation()}>\n \n \n
\n \n
{seriesName}
\n \n <div className={Style.description}>{description}</div>\n <DescriptionMeta {...video} />\n <FavoriteButton\n {...video}\n manager={favoritesManager}\n recommendationId={recommendationId}\n />\n <ActionButton\n shouldRender={isSeriesDetailAvailable !== false}\n url={helperGetRelativeUrl({ url: seriesScreenUrl })}\n text={moreInfoText}\n icon=\"info\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nFutureCellModal.propTypes = {\n favoritesManager: PropTypes.shape({}),\n onClose: PropTypes.func,\n recommendationId: PropTypes.string,\n video: PropTypes.shape({}),\n visibility: PropTypes.bool,\n showPlayButton: PropTypes.bool,\n};\n\nexport default FutureCellModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tile from 'components/TileLegacy';\nimport { Tile as TileV2, LIVE_TILE, SEE_ALL_TILE } from 'components/TileV2';\nimport { isUpcomingContent } from 'helpers/ContentHelper';\nimport { noop } from 'helpers/GlobalHelper';\n\nconst CarouselItem = React.memo(\n ({\n applyInlineBackground,\n breakpoint,\n collectionType,\n disableHoverStateActionButtons,\n displayTemplate,\n favoritesManager,\n headline,\n isHoverStateV2,\n isLiveTileV2,\n isSeasons,\n isSeriesDetailAvailable,\n isSeriesDetailPage,\n item,\n itemIndex,\n onTileClick,\n onTileMouseDown,\n panelCount,\n playlist,\n preventLazyLoad,\n processed,\n renderImage,\n scaleFromLeft,\n scaleFromRight,\n searchCompleted,\n searchTerm,\n segmentPlaylistButtonAction,\n setSearchCompleted,\n shouldDisplayNetworkLogo,\n shouldInvertTitleOrder,\n subtitleLines,\n tileTheme,\n tileType,\n truncateSubtitle,\n upcomingOverlay,\n }) => {\n const callSignMap = window?.ExternalConfig?.callSignRedirects || {};\n const { seriesRedirectMap } = window?.ExternalConfig || {};\n let linkOverride = null;\n if (!item || item.length === 0 || !processed) return null;\n\n const upcomingOverlayClick = isUpcomingContent(item) ? upcomingOverlay : null;\n const { id, livePlayerScreenUrl } = processed || {};\n const key = `${id}-${itemIndex}`;\n const callSign = item?.callSign;\n const deepLinkWeb = item?.deeplinkWeb;\n\n if (callSignMap[callSign] && livePlayerScreenUrl) {\n linkOverride = callSignMap[callSign];\n }\n\n if (item?.seriesType === 'series' && seriesRedirectMap?.[item?.showCode]) {\n linkOverride = seriesRedirectMap?.[item?.showCode];\n }\n\n if (deepLinkWeb) {\n linkOverride = deepLinkWeb;\n }\n\n const tileProps = {\n ...processed,\n link: linkOverride || processed?.link,\n subtitleLink: linkOverride || processed?.subtitleLink,\n titleLink: linkOverride || processed?.titleLink,\n applyInlineBackground,\n breakpoint,\n callSign,\n collectionType,\n customTileClick: upcomingOverlayClick,\n 'data-test': 'carousel-tile',\n disableHoverStateActionButtons,\n displayTemplate,\n favoritesManager,\n headline,\n isSeasons,\n isSeriesDetailAvailable,\n isSeriesDetailPage,\n itemIndex,\n key,\n preventLazyLoad,\n panelCount,\n playlist,\n onTileClick,\n onTileMouseDown,\n renderImage,\n scaleFromLeft,\n scaleFromRight,\n searchCompleted,\n setSearchCompleted,\n searchTerm,\n segmentPlaylistButtonAction,\n shouldDisplayNetworkLogo,\n shouldInvertTitleOrder,\n subtitleLines,\n theme: tileTheme,\n tileImageIndex: key,\n truncateSubtitle,\n };\n return isLiveTileV2 || tileType ? (\n <TileV2 {...tileProps} type={id === SEE_ALL_TILE ? SEE_ALL_TILE : tileType || LIVE_TILE} />\n ) : (\n <Tile {...tileProps} isHoverStateV2={isHoverStateV2} isLiveTileV2={isLiveTileV2} />\n );\n },\n);\n\nconst CarouselItemWrapper = props => <CarouselItem {...props} />;\n\nCarouselItem.defaultProps = {\n applyInlineBackground: false,\n breakpoint: '',\n collectionType: null,\n disableHoverStateActionButtons: false,\n favoritesManager: null,\n headline: {},\n isHoverStateV2: false,\n isLiveTileV2: false,\n isSeriesDetailPage: false,\n item: null,\n itemIndex: 0,\n onTileClick: noop,\n onTileMouseDown: noop,\n panelCount: 0,\n playlist: '',\n preventLazyLoad: false,\n processed: {},\n renderImage: noop,\n scaleFromLeft: false,\n scaleFromRight: false,\n searchCompleted: false,\n searchTerm: '',\n segmentPlaylistButtonAction: noop,\n setSearchCompleted: noop,\n shouldDisplayNetworkLogo: true,\n shouldInvertTitleOrder: noop,\n slideIndex: null,\n tileTheme: {},\n tileType: null,\n upcomingOverlay: noop,\n};\n\nCarouselItem.propTypes = {\n applyInlineBackground: PropTypes.bool,\n breakpoint: PropTypes.string,\n collectionType: PropTypes.string,\n disableHoverStateActionButtons: PropTypes.bool,\n displayTemplate: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n headline: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.string]),\n isHoverStateV2: PropTypes.bool,\n isLiveTileV2: PropTypes.bool,\n isSeasons: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n isSeriesDetailPage: PropTypes.bool,\n item: PropTypes.shape(),\n itemIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onTileClick: PropTypes.func,\n onTileMouseDown: PropTypes.func,\n panelCount: PropTypes.number,\n playlist: PropTypes.string,\n preventLazyLoad: PropTypes.bool,\n processed: PropTypes.shape({}),\n renderImage: PropTypes.func,\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n searchCompleted: PropTypes.bool,\n searchTerm: PropTypes.string,\n segmentPlaylistButtonAction: PropTypes.func,\n setSearchCompleted: PropTypes.func,\n shouldDisplayNetworkLogo: PropTypes.bool,\n shouldInvertTitleOrder: PropTypes.func,\n slideIndex: PropTypes.number,\n subtitleLines: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n tileTheme: PropTypes.shape(),\n tileType: PropTypes.string,\n truncateSubtitle: PropTypes.bool,\n upcomingOverlay: PropTypes.func,\n};\n\nexport default React.memo(CarouselItemWrapper);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Dotdotdot from 'react-dotdotdot';\n\nconst Description = props => {\n const { description, descriptionLines, name, theme } = props;\n if (!description || description.length === 0) return null;\n const episodeTitle = name ? (\n <div className={theme.episodeTitle}>\n <Dotdotdot clamp={1}>{name}</Dotdotdot>\n </div>\n ) : null;\n\n const text = descriptionLines ? (\n <Dotdotdot clamp={descriptionLines}>{description}</Dotdotdot>\n ) : (\n description\n );\n return (\n <div className={theme.descriptionBlock}>\n {episodeTitle}\n <div className={theme.description}>{text}</div>\n </div>\n );\n};\n\nDescription.defaultProps = {\n description: null,\n descriptionLines: 4,\n name: null,\n theme: {},\n};\n\nDescription.propTypes = {\n description: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n descriptionLines: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n name: PropTypes.string,\n theme: PropTypes.shape({}),\n};\n\nexport default Description;\n","import Description from './Description';\n\nexport default Description;\n","import PropTypes from 'prop-types';\nimport { renderImage, POSTER_OVERLAY_LOGO_IMAGE } from 'helpers/ImageHelper';\n\nconst Logo = ({ breakpoint, logo, showName, theme }) => {\n if (!logo) return null;\n\n return renderImage({\n alt: showName,\n breakpoint,\n className: theme.logo,\n imageType: POSTER_OVERLAY_LOGO_IMAGE,\n src: logo,\n });\n};\n\nLogo.propTypes = {\n breakpoint: PropTypes.string,\n logo: PropTypes.string,\n showName: PropTypes.string,\n theme: PropTypes.shape({}),\n};\n\nLogo.defaultProps = {\n breakpoint: null,\n logo: null,\n showName: null,\n theme: {},\n};\n\nexport default Logo;\n","import Logo from './Logo';\n\nexport default Logo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { SegmentPageActionTypes, SegmentUiElements } from '@foxcorp/delta-web-analytics';\n\nconst PosterCTA = ({ linkText, segmentPlaylistButtonAction, theme, url }) => (\n <Link\n onClick={() => {\n segmentPlaylistButtonAction({\n actionType: SegmentPageActionTypes.MORE_EPISODES,\n uiElement: SegmentUiElements.MORE_EPISODES,\n });\n }}\n to={url}\n >\n <button className={theme.posterCTA}>{linkText}</button>\n </Link>\n);\n\nPosterCTA.propTypes = {\n linkText: PropTypes.string,\n segmentPlaylistButtonAction: PropTypes.func,\n theme: PropTypes.shape({}),\n url: PropTypes.string,\n};\n\nPosterCTA.defaultProps = {\n linkText: '',\n segmentPlaylistButtonAction: () => {},\n theme: {},\n url: null,\n};\n\nexport default PosterCTA;\n","import PosterCTA from './PosterCTA';\n\nexport default PosterCTA;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Icon from 'components/Icon';\n\nconst PlayButton = ({ text, route, seriesName, theme, thinIcon, segmentPlaylistButtonAction }) => {\n let icon = 'play-button';\n let viewBox = null;\n if (thinIcon) {\n icon = 'play-button-thin';\n viewBox = '1 1 36 36';\n }\n const url = route;\n const onClick = segmentPlaylistButtonAction;\n return (\n <div className={theme.play}>\n <Link aria-label={`play ${seriesName}`} to={url} onClick={onClick}>\n <Icon icon={icon} color=\"white\" size=\"full\" viewBox={viewBox} />\n {text && <div className={theme.playText}>{text}</div>}\n </Link>\n </div>\n );\n};\n\nPlayButton.defaultProps = {\n text: null,\n thinIcon: false,\n route: null,\n segmentPlaylistButtonAction: () => {},\n};\n\nPlayButton.propTypes = {\n text: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n thinIcon: PropTypes.bool,\n route: PropTypes.string,\n segmentPlaylistButtonAction: PropTypes.func,\n seriesName: PropTypes.string,\n};\n\nexport default PlayButton;\n","import PlayButton from './PlayButton';\n\nexport default PlayButton;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport VideoTile from 'components/VideoTile';\nimport { renderImage, POSTER_IMAGE } from 'helpers/ImageHelper';\nimport PlayButton from '../PlayButton';\n\nconst Video = ({\n image,\n isHover,\n placeholder,\n play,\n route,\n segmentPlaylistButtonAction,\n seriesName,\n theme,\n video,\n breakpoint,\n}) => {\n const [initalRender, setInitialRender] = useState(false);\n if (isHover && !initalRender) setInitialRender(true);\n const imageRenderer = opts => renderImage({ breakpoint, imageType: POSTER_IMAGE, ...opts });\n\n return (\n <div className={theme.videoContainer}>\n <div className={theme.previewContainer}>\n <div className={theme.imageContainer}>\n {initalRender && (\n <span className={!isHover ? theme.invisible : ''}>\n <VideoTile\n data-test=\"tile-video\"\n id={`tile-video-${video}`}\n image={image}\n load\n loop\n play={play}\n renderImage={renderImage}\n timer={0}\n video={video}\n videoPosterStyle={theme.videoPoster}\n />\n </span>\n )}\n <span className={isHover ? theme.invisible : ''}>\n <VideoTile\n data-test=\"tile-video\"\n id={`tile-video-${video}`}\n image={placeholder}\n renderImage={imageRenderer}\n videoPosterStyle={theme.videoPoster}\n />\n </span>\n </div>\n <PlayButton\n route={route}\n seriesName={seriesName}\n theme={theme}\n thinIcon\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n />\n </div>\n <div className={theme.shadowOverlay} />\n </div>\n );\n};\n\nVideo.propTypes = {\n breakpoint: PropTypes.string,\n image: PropTypes.string,\n isHover: PropTypes.bool,\n placeholder: PropTypes.string,\n play: PropTypes.bool,\n route: PropTypes.string,\n segmentPlaylistButtonAction: PropTypes.func,\n seriesName: PropTypes.string,\n theme: PropTypes.shape({}),\n video: PropTypes.string,\n};\n\nVideo.defaultProps = {\n breakpoint: '',\n image: '',\n isHover: false,\n placeholder: '',\n play: false,\n route: null,\n segmentPlaylistButtonAction: () => {},\n theme: {},\n video: null,\n};\n\nexport default Video;\n","import Video from './Video';\n\nexport default Video;\n","import React, { useState } from 'react';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { simplifiedPosterHoverEnabled } from 'helpers/ConfigHelper';\nimport { isSeries, isTypeSeries } from 'helpers/ContentHelper';\nimport { getDynamicImage, POSTER_OVERLAY_IMAGE } from 'helpers/ImageHelper';\nimport { helperGetRelativeUrl, helperGetVideoUrl } from 'helpers/RouteHelper';\nimport WatchList, { FAVORITE_PLUS_HOVER, FAVORITE_TYPE_WATCHLIST } from 'components/Favorite';\nimport Description from '../Description';\nimport Logo from '../Logo';\nimport PosterCTA from '../PosterCTA';\nimport Video from '../Video';\n\nconst Overlay = ({\n breakpoint = null,\n descriptionLines = 4,\n favoritesManager = {},\n isHover = false,\n item = {},\n moreRoute = '',\n overlayProps = {},\n play = false,\n route = null,\n segmentPlaylistButtonAction,\n theme = {},\n video = null,\n}) => {\n const [isFavorite, setFavorite] = useState(false);\n const isSimplifiedHoverEnabled = simplifiedPosterHoverEnabled();\n const autoPlayStill = getDynamicImage({\n breakpoint,\n context: POSTER_OVERLAY_IMAGE,\n url: _.get(item, 'autoPlayStill.default.url'),\n });\n const favoriteData = _.get(overlayProps, 'favoriteData', {});\n const {\n description = '',\n latestEpisodeId,\n latestFullEpisodeId,\n playerScreenUrl,\n screenUrl,\n seriesName: showName,\n seriesScreenUrl,\n isSeriesDetailAvailable,\n showCode,\n } = item;\n const isCollectionSeries = isTypeSeries(_.get(item, '@type', ''));\n const showUrl = isCollectionSeries ? screenUrl : seriesScreenUrl;\n const episodeId = latestEpisodeId || latestFullEpisodeId;\n const latestEpisodeRoute = episodeId ? helperGetVideoUrl(episodeId) : route;\n const playerRoute = isCollectionSeries ? playerScreenUrl || latestEpisodeRoute : route;\n const isVideoSeries = isSeries(item.seriesType);\n const url = moreRoute || `${helperGetRelativeUrl({ url: showUrl })}`;\n const linkText = isVideoSeries && !isCollectionSeries ? 'More Episodes' : 'More Info';\n const lines = isVideoSeries && !isCollectionSeries ? descriptionLines - 1 : descriptionLines;\n const name = isVideoSeries && !isCollectionSeries ? _.get(item, 'name') : null;\n const favorites = _.get(favoritesManager, 'favorites');\n const logo = _.get(item, 'images.logoCenter.raw', null);\n const placeholder = _.get(item, 'images.videoList.raw');\n const isOnlyWatchList = isSeries || isSeriesDetailAvailable === false;\n const isFavorited = isFavorite || _.find(favorites, ({ favoriteID }) => favoriteID === showCode);\n const hoverStateWatchlistText = `Add${isFavorited ? 'ed' : ''} to Watchlist`;\n const hoverStateToolTip = (label, toolTipClassName, isRightJustified) => (\n <div\n className={classNames([\n theme.hoverStateToolTip,\n toolTipClassName,\n isRightJustified && theme.hoverStateToolTipRight,\n ])}\n >\n <div className={theme.hoverStateToolTipLabel}>{label}</div>\n <div className={theme.hoverStateToolTipTip} />\n </div>\n );\n\n return (\n <>\n <div className={theme.overlayHeader}>\n {!isSimplifiedHoverEnabled && (\n <Video\n image={autoPlayStill}\n isHover={isHover}\n placeholder={placeholder}\n play={play}\n name={name}\n route={playerRoute}\n seriesName={showName}\n theme={theme}\n video={video}\n breakpoint={breakpoint}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n />\n )}\n <span className={theme.watchList}>\n <span className={!isHover ? theme.invisible : ''}>\n <span className={theme.watchListButtonContainer}>\n <WatchList\n type={FAVORITE_TYPE_WATCHLIST}\n stopNavigationOnClick\n manager={favoritesManager}\n iconType={FAVORITE_PLUS_HOVER}\n setFavorite={setFavorite}\n favorites={favorites}\n data={{ ...favoriteData, titleText: name, subtitleText: description }}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n />\n </span>\n {hoverStateToolTip(hoverStateWatchlistText, theme.watchListToolTip, isOnlyWatchList)}\n </span>\n </span>\n {!isSimplifiedHoverEnabled && (\n <div className={theme.logoContainer}>\n <Logo breakpoint={breakpoint} logo={logo} showName={showName} theme={theme} />\n </div>\n )}\n </div>\n {!isSimplifiedHoverEnabled && (\n <>\n <Description\n description={description}\n descriptionLines={lines}\n name={name}\n theme={theme}\n />\n <span className={!isHover ? theme.invisible : ''}>\n <PosterCTA\n linkText={linkText}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n theme={theme}\n url={url}\n />\n </span>\n </>\n )}\n </>\n );\n};\n\nOverlay.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n descriptionLines: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n favoritesManager: PropTypes.shape({}).isRequired,\n isHover: PropTypes.bool.isRequired,\n item: PropTypes.shape({}).isRequired,\n moreRoute: PropTypes.string.isRequired,\n overlayProps: PropTypes.shape({}).isRequired,\n play: PropTypes.bool.isRequired,\n route: PropTypes.string.isRequired,\n segmentPlaylistButtonAction: PropTypes.func,\n theme: PropTypes.shape({}).isRequired,\n video: PropTypes.string,\n};\n\nexport default Overlay;\n","import Overlay from './Overlay';\n\nexport default Overlay;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Badge from 'components/Badge';\nimport { simplifiedPosterHoverEnabled } from 'helpers/ConfigHelper';\nimport Overlay from '../Overlay';\n\nconst PosterContent = props => {\n const [isHover, setIsHover] = useState(false);\n const [play, setPlay] = useState(false);\n const isSimplifiedHoverEnabled = simplifiedPosterHoverEnabled();\n\n const {\n badge,\n displayTemplate,\n hasOverlay,\n image,\n isHoverStateV2,\n noPreview,\n renderImage,\n segmentPlaylistButtonAction,\n theme,\n video,\n } = props;\n const posterImage = renderImage(image);\n\n const handleMouseEnter = () => {\n if (video) {\n setPlay(true);\n }\n setIsHover(true);\n };\n\n const handleMouseLeave = () => {\n setIsHover(false);\n setPlay(false);\n };\n\n const posterHoverProps = {\n onMouseEnter: () => handleMouseEnter(),\n onMouseLeave: () => handleMouseLeave(),\n };\n\n if (!hasOverlay) return posterImage;\n\n const hideLatestBadge = displayTemplate === 'latestEpisodes' && badge === 'NEW';\n\n return (\n <div className={theme.posterContents} {...posterHoverProps}>\n {noPreview ? (\n <Overlay\n {...props}\n isHover={isHover}\n play={play}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n />\n ) : (\n <>\n {isSimplifiedHoverEnabled ? (\n <div className={theme.simplifiedHover}>{posterImage}</div>\n ) : (\n <div className={isHover ? theme.invisible : ''}>{posterImage}</div>\n )}\n <div className={!isHover ? theme.invisible : theme.posterVisible}>\n <Overlay {...props} isHover={isHover} play={play} />\n </div>\n </>\n )}\n {!hideLatestBadge && (\n <Badge\n isPoster\n badge={badge}\n title={video?.seriesName}\n isHoverStateV2={isHoverStateV2}\n theme={theme}\n />\n )}\n </div>\n );\n};\n\nPosterContent.defaultProps = {\n badge: '',\n hasOverlay: false,\n image: '',\n isHoverStateV2: false,\n item: {},\n noPreview: false,\n renderImage: () => {},\n segmentPlaylistButtonAction: () => {},\n theme: {},\n video: null,\n};\n\nPosterContent.propTypes = {\n badge: PropTypes.string,\n displayTemplate: PropTypes.string,\n hasOverlay: PropTypes.bool,\n image: PropTypes.string,\n isHoverStateV2: PropTypes.bool,\n item: PropTypes.shape({}),\n noPreview: PropTypes.bool,\n renderImage: PropTypes.func,\n segmentPlaylistButtonAction: PropTypes.func,\n theme: PropTypes.shape({}),\n video: PropTypes.string,\n};\n\nexport default PosterContent;\n","import PosterContent from './PosterContent';\n\nexport default PosterContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport { additionalPosterEnabled } from 'helpers/ConfigHelper';\nimport { urlIsExternal } from 'helpers/ContentHelper';\nimport { renderImage as renderDynamicImage, POSTER_IMAGE } from 'helpers/ImageHelper';\nimport Badge from 'components/Badge';\nimport PosterContent from './components/PosterContent';\nimport Style from './Poster.module.scss';\n\nconst Poster = ({\n badge,\n breakpoint,\n descriptionLines,\n displayTemplate,\n favoritesManager,\n hasOverlay,\n isHoverStateV2,\n isSeriesDetailAnonymous,\n item,\n itemIndex,\n link: route,\n maxItems,\n moreLink: moreRoute,\n noPreview,\n onPosterClick,\n overlayProps,\n overrideAdditionalPosterStyle,\n overrideTheme,\n posterAltText,\n posterImage,\n preventLazyLoad,\n scaleFromLeft,\n scaleFromRight,\n segmentPlaylistButtonAction,\n video,\n}) => {\n const theme = overrideTheme || Style;\n const renderImage = image => {\n if (!image) return null;\n const dynamicImage = renderDynamicImage({\n alt: posterAltText,\n breakpoint,\n className: theme.carouselPosterImage,\n imageType: POSTER_IMAGE,\n preventLazyLoad,\n src: image,\n });\n if (route) {\n const redirect = urlIsExternal(route) ? { href: route } : { to: route };\n const ariaLabel = `${item.seriesName || item.name}, new`;\n return (\n <Link key={route} {...redirect} onClick={onPosterClick} aria-label={ariaLabel}>\n {dynamicImage}\n <Badge badge={badge} theme={theme} title={item?.seriesName} />\n </Link>\n );\n }\n return dynamicImage;\n };\n const getCarouselPosterClasses = [\n additionalPosterEnabled() && !overrideAdditionalPosterStyle && theme.additionalPoster,\n isSeriesDetailAnonymous && theme.seriesDetailAnonymous,\n ];\n\n if (itemIndex === 0 || scaleFromLeft) {\n getCarouselPosterClasses.push(theme.carouselPosterFirst);\n } else if (itemIndex === maxItems - 1 || scaleFromRight) {\n getCarouselPosterClasses.push(theme.carouselPosterEnd);\n if (item.id === 'seeMore') {\n getCarouselPosterClasses.push(theme.invisible);\n }\n } else {\n getCarouselPosterClasses.push(theme.carouselPoster);\n }\n\n return (\n <div className={classNames(getCarouselPosterClasses)}>\n <PosterContent\n badge={badge}\n breakpoint={breakpoint}\n descriptionLines={descriptionLines}\n displayTemplate={displayTemplate}\n favoritesManager={favoritesManager}\n hasOverlay={hasOverlay}\n image={posterImage}\n isHoverStateV2={isHoverStateV2}\n item={item}\n moreRoute={moreRoute}\n noPreview={noPreview}\n onPosterClick={onPosterClick}\n overlayProps={overlayProps}\n renderImage={renderImage}\n route={route}\n segmentPlaylistButtonAction={segmentPlaylistButtonAction}\n theme={theme}\n video={video}\n />\n </div>\n );\n};\n\nPoster.defaultProps = {\n badge: null,\n breakpoint: null,\n descriptionLines: 5,\n favoritesManager: {},\n hasOverlay: false,\n isHoverStateV2: false,\n isSeriesDetailAnonymous: false,\n item: {},\n itemIndex: 0,\n link: '',\n maxItems: 0,\n moreLink: '',\n noPreview: false,\n onPosterClick: () => {},\n overlayProps: {},\n overrideTheme: null,\n posterImage: '',\n posterAltText: '',\n preventLazyLoad: false,\n segmentPlaylistButtonAction: () => {},\n theme: {},\n video: null,\n};\n\nPoster.propTypes = {\n badge: PropTypes.string,\n breakpoint: PropTypes.string,\n descriptionLines: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n displayTemplate: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n hasOverlay: PropTypes.bool,\n isHoverStateV2: PropTypes.bool,\n isSeriesDetailAnonymous: PropTypes.bool,\n item: PropTypes.shape({}),\n itemIndex: PropTypes.number,\n link: PropTypes.string,\n maxItems: PropTypes.number,\n moreLink: PropTypes.string,\n noPreview: PropTypes.bool,\n onPosterClick: PropTypes.func,\n overlayProps: PropTypes.shape({}),\n overrideAdditionalPosterStyle: PropTypes.bool,\n overrideTheme: PropTypes.shape({}),\n posterImage: PropTypes.string,\n posterAltText: PropTypes.string,\n preventLazyLoad: PropTypes.bool,\n scaleFromLeft: PropTypes.number,\n scaleFromRight: PropTypes.number,\n segmentPlaylistButtonAction: PropTypes.func,\n theme: PropTypes.shape({}),\n video: PropTypes.string,\n};\n\nexport default Poster;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Poster from 'components/Poster';\nimport { PosterV2, SIMPLIFIED_POSTER } from 'components/PosterV2';\nimport { simplifiedPosterHoverEnabled } from 'helpers/ConfigHelper';\n\nconst CarouselPoster = ({\n breakpoint,\n descriptionLines,\n displayTemplate,\n favoritesManager,\n isHoverStateV2,\n isSeriesDetailAnonymous,\n item,\n itemIndex,\n maxItems,\n noPreview,\n onPosterClick,\n overrideAdditionalPosterStyle,\n overrideTheme,\n preventLazyLoad,\n processed,\n posterType,\n renderImage,\n scaleFromLeft,\n scaleFromRight,\n segmentPlaylistButtonAction,\n theme,\n}) => {\n const key = `${itemIndex} ${item.id}`;\n const carouselItemContainerStyle = overrideTheme\n ? overrideTheme.carouselItemContainer\n : theme.carouselItemContainer;\n const posterProps = {\n ...processed,\n breakpoint,\n descriptionLines,\n displayTemplate,\n favoritesManager,\n isHoverStateV2,\n isSeriesDetailAnonymous,\n item,\n itemIndex,\n preventLazyLoad,\n maxItems,\n noPreview,\n overrideAdditionalPosterStyle,\n onPosterClick,\n overrideTheme,\n renderImage,\n scaleFromLeft,\n scaleFromRight,\n segmentPlaylistButtonAction,\n };\n let type = posterType;\n if (!type) type = simplifiedPosterHoverEnabled() ? SIMPLIFIED_POSTER : null;\n return (\n <div key={key} className={carouselItemContainerStyle}>\n {type ? <PosterV2 {...posterProps} type={type} /> : <Poster {...posterProps} />}\n </div>\n );\n};\n\nCarouselPoster.defaultProps = {\n breakpoint: null,\n descriptionLines: 5,\n favoritesManager: {},\n isHoverStateV2: false,\n isSeriesDetailAnonymous: false,\n item: {},\n itemIndex: 0,\n maxItems: 0,\n noPreview: false,\n onPosterClick: () => {},\n overrideAdditionalPosterStyle: false,\n overrideTheme: null,\n preventLazyLoad: false,\n processed: {},\n posterType: '',\n renderImage: () => {},\n segmentPlaylistButtonAction: () => {},\n theme: {},\n};\n\nCarouselPoster.propTypes = {\n breakpoint: PropTypes.string,\n descriptionLines: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n displayTemplate: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n headline: PropTypes.string,\n isHoverStateV2: PropTypes.bool,\n isSeriesDetailAnonymous: PropTypes.bool,\n item: PropTypes.shape({}),\n itemIndex: PropTypes.number,\n maxItems: PropTypes.number,\n noPreview: PropTypes.bool,\n onPosterClick: PropTypes.func,\n overrideAdditionalPosterStyle: PropTypes.bool,\n overrideTheme: PropTypes.shape({}),\n preventLazyLoad: PropTypes.bool,\n processed: PropTypes.shape({}),\n posterType: PropTypes.string,\n renderImage: PropTypes.func,\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n segmentPlaylistButtonAction: PropTypes.func,\n theme: PropTypes.shape({}),\n};\n\nexport default CarouselPoster;\n","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Slider from 'react-slick';\nimport _ from 'lodash';\nimport Icon from 'components/Icon';\nimport { isBrowserIE, noop } from 'helpers/GlobalHelper';\nimport { additionalPosterEnabled } from 'helpers/ConfigHelper';\nimport {\n COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST,\n filterMissingDeepLinkItems,\n nonFoxNowSkus,\n PANEL_TYPE_PARTNER_SHOWS,\n PANEL_TYPE_PARTNER_VIDEO,\n} from 'helpers/ContentHelper';\nimport {\n Events,\n getSegmentModelMetadata,\n handleAnalytics,\n SegmentPageActionTypes,\n SegmentSources,\n SegmentUiElements,\n} from '@foxcorp/delta-web-analytics';\nimport CarouselItem from './CarouselItem';\nimport CarouselPoster from './CarouselPoster';\n\nimport Style from './Carousel.module.scss';\n\nconst { MORE_EPISODES, SEARCH, WATCH } = SegmentPageActionTypes;\nconst { MORE_EPISODES: MORE_EPISODES_ELEMENT, PLAY, SERIES_TITLE } = SegmentUiElements;\n\nclass Carousel extends Component {\n constructor(props) {\n super(props);\n this.state = {\n slideIndex: 0,\n };\n this.nextSlide = this.nextSlide.bind(this);\n this.previousSlide = this.previousSlide.bind(this);\n this.shouldShowArrows = this.shouldShowArrows.bind(this);\n }\n\n componentDidMount() {\n const { lastSlidePaginated } = this.props;\n if (lastSlidePaginated) {\n const doNotAnimate = true;\n this.slider.slickGoTo(lastSlidePaginated, doNotAnimate);\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const { breakpoint, favoritesManager, headline, items } = this.props;\n const { slideIndex } = this.state;\n const {\n breakpoint: newBreakpoint,\n favoritesManager: newFavoritesManager,\n headline: newHeadline,\n items: newItems,\n } = nextProps;\n\n const { slideIndex: newSlideIndex } = nextState;\n\n if (!_.isEqual(favoritesManager, newFavoritesManager)) return true;\n if (!_.isEqual(items, newItems)) return true;\n if (breakpoint && newBreakpoint && breakpoint !== newBreakpoint) return true;\n if (headline && newHeadline && headline !== newHeadline) return true;\n if (slideIndex !== newSlideIndex) return true;\n\n return false;\n }\n\n getPrevArrow() {\n const { slideIndex } = this.state;\n if (!this.shouldShowArrows() || slideIndex === 0) return null;\n const { roundArrows, carouselArrowOnClick } = this.props;\n const prevArrowIcon = roundArrows ? (\n <Icon color=\"white\" viewBox=\"0 0 43 44\" icon=\"carousel-arrow-left\" ariaHidden />\n ) : (\n <Icon color=\"white\" icon=\"arrow-left\" ariaHidden />\n );\n return (\n <button\n className=\"slick-arrow slick-prev\"\n type=\"button\"\n data-role=\"none\"\n aria-label=\"show previous content\"\n onClick={() => {\n this.previousSlide();\n carouselArrowOnClick();\n }}\n >\n {prevArrowIcon}\n </button>\n );\n }\n\n getNextArrow(itemsLength) {\n const { slideIndex } = this.state;\n const { roundArrows, carouselArrowOnClick, slidesToShow, onLastSlide } = this.props;\n const difference = itemsLength - slideIndex;\n\n if (!this.shouldShowArrows() || difference <= slidesToShow) {\n const lastSlideIndex = slideIndex;\n onLastSlide(lastSlideIndex);\n return null;\n }\n\n const nextArrowIcon = roundArrows ? (\n <Icon color=\"white\" viewBox=\"0 0 43 44\" icon=\"carousel-arrow-right\" ariaHidden />\n ) : (\n <Icon color=\"white\" icon=\"arrow-right\" ariaHidden />\n );\n return (\n <button\n className=\"slick-arrow slick-next\"\n type=\"button\"\n aria-label=\"show next content\"\n data-role=\"none\"\n onClick={() => {\n this.nextSlide();\n carouselArrowOnClick();\n }}\n >\n {nextArrowIcon}\n </button>\n );\n }\n\n nextSlide() {\n this.slider.slickNext();\n }\n\n previousSlide() {\n this.slider.slickPrev();\n }\n\n shouldShowArrows() {\n const { items, showCarouselArrows, slidesToShow, useScrollableDiv, isPosters } = this.props;\n const itemsLength =\n isPosters && _.last(items).id === 'seeMore'\n ? _.get(items, 'length') - 1\n : _.get(items, 'length');\n const moreSlides = itemsLength > slidesToShow;\n const hideArrows = showCarouselArrows === false;\n const showArrows = useScrollableDiv || !items || hideArrows ? false : moreSlides;\n return showArrows;\n }\n\n seoHeaderWrapper = (seoElement, isFirst) => {\n if (isFirst) {\n return <h1>{seoElement}</h1>;\n }\n return seoElement;\n };\n\n renderItems() {\n const {\n addCarouselPlaceholders,\n applyInlineBackground,\n breakpoint,\n collectionCount,\n collectionName,\n playlistLength,\n collectionType,\n collectionVerticalPosition,\n descriptionLines,\n disableHoverStateActionButtons,\n favoritesManager,\n headline,\n isHoverStateV2,\n isPosters,\n isSeriesDetailAnonymous,\n isSeriesDetailPage,\n isSeasons,\n items,\n preventLazyLoad,\n noPreview,\n onTileClick,\n overrideAdditionalPosterStyle,\n overrideTheme,\n panel,\n panelCount,\n processor,\n posterType,\n renderImage,\n searchCompleted,\n setSearchCompleted,\n searchTerm,\n shouldDisplayNetworkLogo,\n shouldInvertTitleOrder,\n slidesToShow,\n subtitleLines,\n truncateSubtitle,\n theme,\n tileTheme,\n tileType,\n upcomingOverlay,\n isLiveTileV2,\n } = this.props;\n\n const { displayTemplate } = panel;\n const { slideIndex } = this.state;\n const itemsLength = items && items.length;\n if (!items || itemsLength === 0) return null;\n const { global_moreInfoButton: moreInfoText } = window.Language;\n const remainder = slideIndex % itemsLength;\n let itemToScaleFromLeft;\n let itemToScaleFromRight;\n if (remainder === 0) {\n itemToScaleFromRight = slidesToShow - 1;\n } else if (remainder >= slidesToShow) {\n const remainingItems = itemsLength - slideIndex;\n if (remainingItems > slidesToShow) {\n itemToScaleFromLeft = slideIndex;\n itemToScaleFromRight = slidesToShow + slideIndex - 1;\n } else {\n itemToScaleFromLeft = itemsLength - slidesToShow;\n }\n } else {\n itemToScaleFromLeft = itemsLength - slidesToShow;\n itemToScaleFromRight = itemsLength - 1;\n }\n let filteredItems = items;\n if (panel?.panelType === 'videos') {\n filteredItems = filterMissingDeepLinkItems(items, nonFoxNowSkus);\n }\n\n const carouselItems = filteredItems.map((item, idx) => {\n const customizedItem = {\n ...item,\n itemIndex: idx,\n slideIndex,\n };\n const { isSeriesDetailAvailable } = item;\n const processed = processor(customizedItem);\n if (processed.link === 'undefined') return null;\n const { description, link, isRedirect, overlayProps = {}, subtitle } = processed;\n\n const segmentPlaylistButtonAction = (props = {}) => {\n const { currentSeason, name, seriesName, showCode, uID } = item;\n const seasonNumber = currentSeason;\n let collectionTitle = null;\n if (headline) {\n collectionTitle =\n typeof headline === 'string'\n ? headline\n : _.get(headline, 'props.clipsSections[0].name');\n } else if (isSeriesDetailPage && isSeasons) {\n collectionTitle = `Season ${seasonNumber}`;\n }\n const itemSubtitle = _.isString(subtitle) ? subtitle : description;\n const seriesDetailVerticalPosition = isSeriesDetailPage && (isSeasons ? 1 : 2);\n const { actionType = '', uiElement = '' } = props;\n const actionLink =\n uiElement &&\n (uiElement === SERIES_TITLE || uiElement === MORE_EPISODES_ELEMENT) &&\n MORE_EPISODES;\n const actionSearch = !itemSubtitle && SEARCH;\n const pageActionType = actionSearch || actionLink || actionType || WATCH;\n const actionLocation = collectionName || SegmentSources.HOME;\n\n handleAnalytics({\n event: Events.PLAYLIST_BUTTON_ACTION,\n payload: {\n page_action_type: pageActionType,\n page_action_location: isSeriesDetailPage ? SegmentSources.DETAIL : actionLocation,\n page_collection_count: isSeriesDetailPage ? 2 : collectionCount,\n page_collection_id: panel?.id,\n page_collection_title: collectionTitle,\n page_item_horizontal_position: idx + 1,\n page_item_vertical_position: seriesDetailVerticalPosition || collectionVerticalPosition,\n page_item_title: seriesName || name,\n page_item_subtitle: itemSubtitle,\n page_playlist_length: playlistLength || _.get(this.props, 'items.length', 0),\n page_recs_collection: panel?.recommended,\n page_ui_element: uiElement || PLAY,\n page_video_uid: uID || showCode,\n ...getSegmentModelMetadata(),\n },\n });\n };\n\n const handleClick = (opts = {}) => {\n const { uiElement } = opts;\n const {\n title: titleText,\n description: fallbackSubtitle,\n subtitle: subtitleText,\n playButtonText,\n titleLink,\n } = overlayProps;\n const eventAction = isRedirect\n ? 'Exit Link'\n : playButtonText || (titleLink ? moreInfoText : undefined);\n onTileClick({\n item,\n idx,\n isRedirect,\n titleText,\n subtitleText: subtitleText || fallbackSubtitle,\n eventAction,\n link,\n uiElement,\n });\n\n segmentPlaylistButtonAction({ uiElement });\n };\n\n const onTileMouseDown = ({ uiElement }) => {\n segmentPlaylistButtonAction({ uiElement });\n };\n\n const key = `${item.id}-${idx}`;\n const itemProps = {\n applyInlineBackground,\n breakpoint,\n collectionType,\n disableHoverStateActionButtons,\n displayTemplate,\n favoritesManager,\n headline,\n isHoverStateV2,\n isLiveTileV2,\n isSeasons,\n isSeriesDetailAvailable,\n isSeriesDetailPage,\n item,\n itemIndex: idx,\n onTileClick: handleClick,\n onTileMouseDown,\n panelCount,\n playlist: panel?.playlist,\n preventLazyLoad,\n processed,\n renderImage,\n scaleFromLeft: idx === itemToScaleFromLeft,\n scaleFromRight: idx === itemToScaleFromRight,\n searchCompleted,\n searchTerm,\n segmentPlaylistButtonAction,\n setSearchCompleted,\n shouldDisplayNetworkLogo,\n shouldInvertTitleOrder,\n subtitleLines,\n tileTheme,\n tileType,\n truncateSubtitle,\n upcomingOverlay,\n };\n const posterProps = {\n breakpoint,\n descriptionLines,\n displayTemplate,\n favoritesManager,\n guid: item.guid,\n id: item.id,\n isHoverStateV2,\n isSeriesDetailAnonymous,\n item,\n itemIndex: idx,\n preventLazyLoad,\n posterType,\n maxItems: items.length,\n noPreview,\n overrideAdditionalPosterStyle,\n onPosterClick: handleClick,\n onTileClick: handleClick,\n overrideTheme,\n processed,\n renderImage,\n scaleFromLeft: idx === itemToScaleFromLeft,\n scaleFromRight: idx === itemToScaleFromRight,\n segmentPlaylistButtonAction,\n theme,\n };\n\n const { seriesRedirectMap } = window?.ExternalConfig || {};\n\n if (item?.seriesType === 'series' && seriesRedirectMap?.[item?.showCode]) {\n processed.link = seriesRedirectMap?.[item?.showCode];\n }\n\n if (item?.deeplinkWeb) {\n processed.link = item.deeplinkWeb;\n }\n\n if (isPosters) {\n const poster = (\n <div\n className={classNames(theme.carouselPosterContainer, Style.carouselPosterContainer)}\n key={key}\n >\n <CarouselPoster {...posterProps} />\n </div>\n );\n return item.id === 'seeMore' ? null : poster;\n }\n return (\n <div\n className={classNames(theme.carouselItemContainer, Style.carouselItemContainer)}\n key={key}\n >\n <CarouselItem {...itemProps} />\n </div>\n );\n });\n if (addCarouselPlaceholders && itemsLength < slidesToShow) {\n const placeholderCount = slidesToShow - itemsLength;\n for (let i = 0; i < placeholderCount; i += 1) {\n carouselItems.push(<div key={`placeholder-${i}`} className=\"carouselPlaceholder\" />);\n }\n }\n return carouselItems;\n }\n\n renderHeader() {\n const {\n featuredTitleImage,\n headline,\n seeAll,\n isFirst,\n theme: defaultTheme,\n overrideTheme,\n } = this.props;\n const theme = overrideTheme || defaultTheme;\n let header = null;\n if (featuredTitleImage) {\n header = this.seoHeaderWrapper(\n <div className={theme.imageOnly}>\n <img className={theme.headlineImg} src={featuredTitleImage} alt={headline} />\n </div>,\n isFirst,\n );\n } else if (headline) {\n header = (\n <h2 aria-label={`${headline} heading`} className={theme.headline}>\n {headline}\n </h2>\n );\n } else {\n header = <div className={classNames(theme.emptyHeader, Style.emptyHeader)} />;\n }\n\n if (seeAll) {\n header = (\n <div className={theme.headlineWithSeeAll}>\n {header}\n {seeAll}\n </div>\n );\n }\n\n return header;\n }\n\n renderSliderDesktop() {\n const {\n autoplaySpeed,\n allowScrollLock,\n isInfinite,\n items,\n panel,\n responsive,\n slidesToShow,\n disableScroll,\n updateVisibleSlides,\n slidesToScroll,\n } = this.props;\n const { slideIndex } = this.state;\n\n let autoplaySettings = {};\n if (autoplaySpeed) {\n autoplaySettings = {\n autoplay: true,\n autoplaySpeed,\n };\n }\n const isIE = isBrowserIE();\n const useTransform = !isIE;\n const useCSS = !isIE;\n const itemsLength = _.get(items, 'length');\n const isHalfWay = Math.floor(itemsLength / 2) <= slideIndex;\n const settings = {\n afterChange: () => {\n if (allowScrollLock) {\n disableScroll({ disableScroll: false, bodyOnly: true });\n }\n },\n arrows: false,\n draggable: this.shouldShowArrows(),\n dots: false,\n beforeChange: (prevSlide, nextSlide) => {\n this.setState({ slideIndex: nextSlide });\n updateVisibleSlides(prevSlide, nextSlide, panel, isHalfWay);\n },\n infinite: isInfinite,\n slidesToScroll,\n responsive,\n slidesToShow,\n speed: 500,\n test: 'carousel-wrapper',\n ...autoplaySettings,\n useTransform,\n useCSS,\n };\n return (\n <>\n {this.renderHeader()}\n <Slider\n ref={s => {\n this.slider = s;\n }}\n {...settings}\n data-test=\"shared-carousel\"\n >\n {this.renderItems()}\n </Slider>\n </>\n );\n }\n\n renderSliderMobile() {\n const { theme: defaultTheme, overrideTheme, collectionType } = this.props;\n const theme = overrideTheme || defaultTheme;\n const isCollectionCategoryList = collectionType === COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST;\n return (\n <div>\n {this.renderHeader()}\n <div\n className={classNames([\n theme.scrollableDiv,\n isCollectionCategoryList && theme.categoryListDiv,\n ])}\n >\n {this.renderItems()}\n </div>\n </div>\n );\n }\n\n render() {\n const {\n isPosters,\n items,\n overrideAdditionalPosterStyle,\n panel,\n roundArrows,\n slidesToShow,\n theme,\n useScrollableDiv,\n } = this.props;\n const itemsLength = _.get(items, 'length');\n const isPartnerCollection =\n panel?.panelType === PANEL_TYPE_PARTNER_VIDEO ||\n panel?.panelType === PANEL_TYPE_PARTNER_SHOWS;\n const sliderContainer = [\n theme.container,\n Style.container,\n theme.redesignCollections,\n Style.redesignCollections,\n ];\n\n if (slidesToShow > itemsLength) {\n sliderContainer.push(theme.justifyLeft, Style.justifyLeft);\n }\n if (roundArrows) sliderContainer.push(theme.roundArrows, Style.roundArrows);\n const slider = useScrollableDiv ? this.renderSliderMobile() : this.renderSliderDesktop();\n return (\n <div\n className={classNames([\n theme.carouselContainer,\n Style.carouselContainer,\n isPosters && [\n theme.carouselPosterWrapper,\n Style.carouselPosterWrapper,\n isPartnerCollection && Style.partnerPosterWrapper,\n ],\n additionalPosterEnabled() && !overrideAdditionalPosterStyle && theme.additionalPoster,\n ])}\n >\n {this.getPrevArrow()}\n <div className={classNames(sliderContainer)}>{slider}</div>\n {this.getNextArrow(itemsLength)}\n </div>\n );\n }\n}\n\nCarousel.defaultProps = {\n addCarouselPlaceholders: false,\n allowScrollLock: false,\n applyInlineBackground: false,\n autoplaySpeed: null,\n breakpoint: null,\n carouselArrowOnClick: noop,\n collectionCount: null,\n collectionName: null,\n collectionType: null,\n collectionVerticalPosition: null,\n descriptionLines: 5,\n disableHoverStateActionButtons: false,\n disableScroll: noop,\n favoritesManager: null,\n featuredTitleImage: null,\n headline: null,\n isFirst: false,\n isHoverStateV2: false,\n isInfinite: true,\n isLiveTileV2: false,\n isPosters: false,\n isSeriesDetailAnonymous: false,\n isSeriesDetailPage: false,\n items: [],\n lastSlidePaginated: null,\n noPreview: false,\n onLastSlide: noop,\n onPosterClick: noop,\n onTileClick: noop,\n overrideAdditionalPosterStyle: false,\n overrideTheme: null,\n panel: {},\n panelCount: 0,\n playlistLength: null,\n preventLazyLoad: false,\n processor: item => item,\n posterType: '',\n renderImage: noop,\n responsive: [],\n roundArrows: false,\n searchCompleted: false,\n searchTerm: '',\n seeAll: null,\n segmentPlaylistButtonAction: noop,\n setSearchCompleted: noop,\n shouldDisplayNetworkLogo: true,\n shouldInvertTitleOrder: noop,\n showCarouselArrows: true,\n slidesToScroll: 1,\n slidesToShow: 3,\n theme: {},\n tileTheme: {},\n tileType: '',\n upcomingOverlay: noop,\n updateVisibleSlides: noop,\n useScrollableDiv: false,\n};\nCarousel.propTypes = {\n addCarouselPlaceholders: PropTypes.bool,\n allowScrollLock: PropTypes.bool,\n applyInlineBackground: PropTypes.bool,\n autoplaySpeed: PropTypes.number,\n breakpoint: PropTypes.string,\n carouselArrowOnClick: PropTypes.func,\n collectionCount: PropTypes.number,\n collectionName: PropTypes.string,\n collectionType: PropTypes.string,\n collectionVerticalPosition: PropTypes.number,\n descriptionLines: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n disableHoverStateActionButtons: PropTypes.bool,\n disableScroll: PropTypes.func,\n favoritesManager: PropTypes.shape({}),\n featuredTitleImage: PropTypes.string,\n headline: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({})]),\n isFirst: PropTypes.bool,\n isHoverStateV2: PropTypes.bool,\n isInfinite: PropTypes.bool,\n isLiveTileV2: PropTypes.bool,\n isPosters: PropTypes.bool,\n isSeasons: PropTypes.bool,\n isSeriesDetailAnonymous: PropTypes.bool,\n isSeriesDetailPage: PropTypes.bool,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n lastSlidePaginated: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.number]),\n noPreview: PropTypes.bool,\n onLastSlide: PropTypes.func,\n onPosterClick: PropTypes.func,\n onTileClick: PropTypes.func,\n overrideAdditionalPosterStyle: PropTypes.bool,\n overrideTheme: PropTypes.shape({}),\n panel: PropTypes.shape({}),\n panelCount: PropTypes.number,\n playlistLength: PropTypes.number,\n preventLazyLoad: PropTypes.bool,\n processor: PropTypes.func,\n posterType: PropTypes.string,\n renderImage: PropTypes.func,\n responsive: PropTypes.arrayOf(PropTypes.shape({})),\n roundArrows: PropTypes.bool,\n searchCompleted: PropTypes.bool,\n searchTerm: PropTypes.string,\n seeAll: PropTypes.node,\n segmentPlaylistButtonAction: PropTypes.func,\n setSearchCompleted: PropTypes.func,\n shouldDisplayNetworkLogo: PropTypes.bool,\n shouldInvertTitleOrder: PropTypes.func,\n showCarouselArrows: PropTypes.bool,\n slidesToScroll: PropTypes.number,\n slidesToShow: PropTypes.number,\n subtitleLines: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n theme: PropTypes.shape({}),\n tileTheme: PropTypes.shape(),\n tileType: PropTypes.string,\n truncateSubtitle: PropTypes.bool,\n upcomingOverlay: PropTypes.func,\n updateVisibleSlides: PropTypes.func,\n useScrollableDiv: PropTypes.bool,\n};\nexport default Carousel;\n","import _ from 'lodash';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport {\n getBadgeLabel,\n SHOW_STATE_AUDIO,\n SHOW_STATE_CLIP,\n SHOW_STATE_LIVE,\n SHOW_STATE_UPCOMING,\n} from 'helpers/BadgeHelper';\nimport {\n formatAiredDate,\n formatDurationInSeconds,\n formatMetadata,\n formatMovieMetadata,\n formatRating as helperFormatRating,\n formatSeasonEpisode,\n formatSeasonEpisodeExtended,\n formatSubRatings,\n getItemBadge as helperGetItemBadge,\n} from 'helpers/VideoHelper';\nimport {\n getAuthorizedResources,\n isContentAuthorized,\n isRatingAuthorized,\n} from 'components/AuthClientless/AuthHelper';\nimport { isMobileBreakpoint } from 'helpers/BreakpointHelper';\nimport {\n COLLECTION_TYPE_LOCAL_CLIPS,\n formatUpcomingDate,\n getDisplayBrand,\n getMVPDCookie,\n getNetworkLogoUrl,\n getRequiresAuth,\n getSeasonEpisodeCounts,\n isClip,\n isCurrentLiveContent,\n isEpisode,\n isLive,\n isMovie,\n isSpecial,\n isSportsContent,\n isStaticRender,\n isTypeEPGListing,\n isTypeSeries,\n isTypeVideo,\n isUpcomingContent,\n LINK_REL,\n TYPE_EPG_LISTING,\n videoIsLive,\n} from 'helpers/ContentHelper';\nimport { getDynamicImage } from 'helpers/ImageHelper';\nimport { CONTINUOUS, PLAYLIST } from 'helpers/PlayerHelper';\nimport NetworkImage from 'components/NetworkImage';\nimport {\n getUrlParams,\n helperGetLiveUrl,\n helperGetRelativeUrl,\n helperGetSeriesDetailUrl,\n helperGetStaticContentUrl,\n helperGetVideoUrl,\n} from 'helpers/RouteHelper';\nimport tileTheme from 'components/TileLegacy/TileLegacy.module.scss';\nimport { getAdditionalAuthorizedNetworks, isPreviewPassAvailable } from 'helpers/AuthHelper';\n\nimport { getAuthNetworksConfig, getThumbnailBug } from 'helpers/ConfigHelper';\nimport {\n getRecommendationIdDataForItem,\n handleTealiumButtonAction,\n} from '@foxcorp/delta-web-analytics';\nimport {\n modifyShowsPageTileCTAS as optimizelyModifyShowsTileCTA,\n modifyTileImage as optimizelyModifyTileImage,\n showShowsTileCTAs as optimizelyShowsTileCTAs,\n} from './OptimizelyHelper';\nimport {\n FORMAT_TIME,\n FORMAT_DISTANCE,\n now,\n stringToDate,\n isBefore,\n isBetween,\n differenceInSeconds,\n addSeconds,\n} from './DateTimeHelper';\n\nexport const TYPE_SERIES = 'Series';\n\nconst networkFallbackImages = {\n fox: helperGetStaticContentUrl('images', 'FallBack-FOX-min.jpg'),\n foxnation: helperGetStaticContentUrl('images', 'FallBack-FOXNATION-min.jpg'),\n fs1: helperGetStaticContentUrl('images', 'FallBack-FOX-min.jpg'),\n fs2: helperGetStaticContentUrl('images', 'FallBack-FOX-min.jpg'),\n};\n\nconst externalRedirectProcessing = videoData => {\n const newVideoData = videoData;\n const { externalRedirectMapping: redirectRules } = window.ExternalConfig;\n if (Array.isArray(redirectRules)) {\n redirectRules.forEach(rule => {\n const testLink = videoData.link || videoData.titleLink;\n if (rule.path === testLink || `${rule.path}/` === testLink) {\n const newLink = rule.destination;\n newVideoData.link = newLink;\n newVideoData.titleLink = newLink;\n newVideoData.subtitleLink = newLink;\n if (!_.startsWith(newLink, '/')) {\n newVideoData.target = '_blank';\n newVideoData.rel = LINK_REL;\n }\n }\n });\n }\n return newVideoData;\n};\n\nexport const requiresAuthElement = ({ requiresAuth, lockClass, isAuthenticated, viewBox }) => {\n if (!requiresAuth || isAuthenticated) return null;\n return (\n <div className={classNames([tileTheme.lock, lockClass])}>\n <Icon icon=\"lock\" color=\"white\" size=\"full\" viewBox={viewBox} />\n </div>\n );\n};\n\nexport const titleElement = ({\n title,\n requiresAuth,\n theme,\n isAuthenticated,\n hideLockIcon,\n isHoverStateV2,\n video = {},\n}) => {\n if (!title || title.length === 0) return null;\n const { seasonNumber = '', episodeNumber = '', isLiveNow = false } = video;\n const type = _.get(video, '@type', null);\n const displaySeasonAndEpisodeCounts = _.get(video, 'displaySeasonAndEpisodeCounts', null);\n const titleTheme = theme || tileTheme || {};\n\n const isSeasonEpisode = seasonNumber && episodeNumber;\n const isLiveSeasonEpisode = isLive(type) && displaySeasonAndEpisodeCounts && isSeasonEpisode;\n\n let element = (\n <span>\n {title}\n {isLiveSeasonEpisode && ` - ${formatSeasonEpisode(seasonNumber, episodeNumber)}`}\n </span>\n );\n\n if (requiresAuth && !isPreviewPassAvailable()) {\n const lockClasses = [\n titleTheme.lock,\n titleTheme.titleLock,\n isHoverStateV2 && titleTheme.hoverStateV2Lock,\n isLiveNow && tileTheme.isLiveNow,\n ];\n const lockElement =\n !hideLockIcon &&\n requiresAuthElement({\n requiresAuth,\n lockClass: classNames(lockClasses),\n isAuthenticated,\n });\n\n const titleParts = _.split(title, '-');\n const lastWord = titleParts.splice(-1);\n\n element = (\n <>\n <span>\n {`${titleParts.join(' ')} ${lastWord}`}\n {isLiveSeasonEpisode && ` - ${formatSeasonEpisode(seasonNumber, episodeNumber)}`}\n </span>\n {lockElement}\n </>\n );\n }\n const titleClasses = classNames([\n tileTheme && tileTheme.titleWrapper,\n theme && theme.titleWrapper,\n ]);\n return <div className={titleClasses}>{element}</div>;\n};\n\nexport const getHomeSubtitleText = (video, isHoverStateV2) => {\n const {\n '@type': type,\n durationInSeconds,\n episodeNumber,\n fullEpisodeCount: episodeCount,\n name,\n releaseYear,\n seriesType,\n seasonCount,\n seasonNumber,\n sportTag,\n startDate,\n videoType,\n } = video;\n const displaySeasonAndEpisodeCounts = _.get(video, 'displaySeasonAndEpisodeCounts', true);\n const currentSeason = _.get(video, 'currentSeason') || _.get(video, 'oldestEpisode.seasonNumber');\n const currentSeasonNumber = currentSeason ? currentSeason.seasonNumber : null;\n const seasonEpisodeFormats = {\n short: displaySeasonAndEpisodeCounts\n ? formatSeasonEpisode(seasonNumber, episodeNumber, isHoverStateV2)\n : '',\n regular: displaySeasonAndEpisodeCounts\n ? getSeasonEpisodeCounts({ currentSeason, seasonCount, episodeCount, useComma: true })\n : '',\n extended: displaySeasonAndEpisodeCounts\n ? formatSeasonEpisodeExtended(seasonCount, currentSeasonNumber, episodeCount)\n : '',\n };\n\n const videoIsClip = isClip(videoType);\n const videoIsSeries = isTypeSeries(type);\n\n if (isLive(type) && startDate) {\n const videoIsUpcoming = isBefore(now(), stringToDate(startDate));\n if (videoIsUpcoming) return formatUpcomingDate(startDate);\n return formatMovieMetadata({\n releaseYear: formatAiredDate(startDate, '', FORMAT_TIME),\n durationInSeconds,\n continuesStreamCheck: true,\n });\n }\n\n if (videoIsClip) {\n return name;\n }\n\n if (isSpecial(seriesType)) {\n return null;\n }\n\n if (isMovie(videoType)) {\n return _.toString(releaseYear);\n }\n\n if (videoIsSeries) {\n return seasonEpisodeFormats.extended;\n }\n\n if (isEpisode(videoType) || videoIsClip) {\n if (isHoverStateV2 && seasonEpisodeFormats.short)\n return `${seasonEpisodeFormats.short}- ${name}`;\n return `${seasonEpisodeFormats.short}${name}`;\n }\n\n if (isSportsContent(video)) {\n return sportTag || null;\n }\n\n return null;\n};\n\nexport const subtitleElement = (subtitle, date, shouldHideVideoSubtitle) => {\n if (!subtitle || subtitle.length === 0) return null;\n const subtitleParts = subtitle.split(' ');\n const lastWord =\n subtitleParts.length > 1 && !shouldHideVideoSubtitle ? subtitleParts.splice(-1) : null;\n const dot = shouldHideVideoSubtitle ? '' : '·';\n const subtitleDate = date && (\n <span>\n {dot} {date}\n </span>\n );\n const subtitleTags = (\n <span>\n {!shouldHideVideoSubtitle && subtitleParts.join(' ')}\n <div className={tileTheme.subtitleLastWord}>\n {lastWord} {subtitleDate}\n </div>\n </span>\n );\n return (\n <div className={tileTheme.subtitleWrapper}>\n <div className={tileTheme.subtitleText}>{subtitleTags}</div>\n </div>\n );\n};\n\nexport const isAuthorized = ({\n prioritizedNetwork,\n preauthorizedResources,\n isAuthenticated,\n videoType,\n contentRating,\n requiresAuth,\n}) => {\n const mvpdCookie = getMVPDCookie();\n const userRating = _.get(mvpdCookie, 'userRating');\n if (isAuthenticated && videoType !== 'clip') {\n const authNetworksConfig = getAuthNetworksConfig();\n const additionalAuthorizedNetworks = getAdditionalAuthorizedNetworks();\n const authorizedNetworks = getAuthorizedResources(\n preauthorizedResources,\n additionalAuthorizedNetworks,\n );\n const isNetworkAuthorized = requiresAuth\n ? isContentAuthorized(authorizedNetworks, [prioritizedNetwork], authNetworksConfig)\n : true;\n const isVideoAuthorized = isRatingAuthorized(contentRating, userRating);\n return isNetworkAuthorized && isVideoAuthorized;\n }\n return true;\n};\n\nexport const getVideoObjectImages = ({ images, defaultImage }) => {\n if (!images) return null;\n const tileImageType = optimizelyModifyTileImage() || defaultImage;\n const image =\n _.get(images, tileImageType, null) ||\n _.get(images, 'seriesList', null) ||\n _.get(images, 'showList', null) ||\n _.get(images, 'videoList', null) ||\n _.get(images, 'seriesDetail', null) ||\n _.get(images, 'seriesStill', null) ||\n _.get(images, 'still', null) ||\n images;\n return image;\n};\n\nexport const getVideoObjectImage = ({ breakpoint, context, image, network }) => {\n const fallbackImage = _.get(networkFallbackImages, network, null);\n if (!image) return fallbackImage;\n let imageUrl = image.raw;\n if (breakpoint && context) {\n imageUrl = getDynamicImage({ breakpoint, context, url: imageUrl });\n }\n return imageUrl || fallbackImage;\n};\n\nexport const getItemBadge = (item, isLiveItem, isHoverStateV2, isPosters, isLocalClips) => {\n if (!item) return null;\n const { audioOnly, contentFlags, startDate, durationInSeconds, '@type': type, videoType } = item;\n if (isLiveItem) return getBadgeLabel(SHOW_STATE_LIVE);\n if (isLocalClips || videoType === 'clip') return getBadgeLabel(SHOW_STATE_CLIP);\n\n const isAudio = audioOnly || _.includes(contentFlags, 'AUDIO ONLY');\n const isContinueListening = isAudio\n ? _.includes(contentFlags, 'Continue Watching') ||\n _.includes(contentFlags, 'Continue Listening')\n : false;\n if (isContinueListening) return getBadgeLabel('Continue Listening');\n if (isAudio) return getBadgeLabel(SHOW_STATE_AUDIO);\n\n const originalDate = item.startDate;\n const isEpgListing = type === TYPE_EPG_LISTING;\n\n const startsAt = stringToDate(originalDate);\n const endsAt = addSeconds(stringToDate(startDate), durationInSeconds);\n\n if (isEpgListing && startsAt && endsAt) {\n const videoIsUpcoming = isBefore(now(), startsAt);\n const videoIsLive = isBetween(now(), startsAt, endsAt);\n if (videoIsUpcoming) return getBadgeLabel(SHOW_STATE_UPCOMING);\n if (videoIsLive) return getBadgeLabel(SHOW_STATE_LIVE);\n return null;\n }\n\n const itemBadge = helperGetItemBadge(item, isHoverStateV2, isPosters);\n return getBadgeLabel(itemBadge);\n};\n\nconst getPrimetimeScheduleItemBadge = item => {\n if (!item) return null;\n\n const { startDate, durationInSeconds, '@type': type } = item;\n const isEpgListing = type === TYPE_EPG_LISTING;\n const currentDate = now();\n const starts = startDate ? stringToDate(startDate) : null;\n const ends = starts ? addSeconds(starts, durationInSeconds) : null;\n const isLive = starts && ends ? isBetween(currentDate, starts, ends) : false;\n\n if (isEpgListing && starts && ends) {\n if (isLive) return getBadgeLabel(SHOW_STATE_AUDIO);\n }\n\n return helperGetItemBadge(item);\n};\nexport const isTileFaded = (video, prioritizedNetwork) => {\n const { preauthorizedResources, videoType, contentRating, isAuthenticated } = video;\n\n const requiresAuth = getRequiresAuth({ video });\n const isVideoAuthorized = isAuthorized({\n preauthorizedResources,\n videoType,\n prioritizedNetwork,\n contentRating,\n isAuthenticated,\n requiresAuth,\n });\n\n return !isVideoAuthorized;\n};\n\nconst formatRating = (contentRating, subRatings) => {\n const rating = helperFormatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n return rating || subRating ? `${rating} ${subRating}` : null;\n};\n\nconst getPlaylistHash = playerScreenUrl => {\n if (!_.includes(playerScreenUrl, 'playlist')) return null;\n const urlParams = getUrlParams(playerScreenUrl);\n const playlistId = _.get(urlParams, 'playlist');\n return `${PLAYLIST}=${playlistId}`;\n};\n\nexport const homeVideoProcessor = ({\n account,\n breakpoint,\n collectionInfo,\n isCollectionCategoryList = false,\n isHoverStateV2,\n isLocalClips,\n isPosters,\n item,\n}) => {\n if (!item) return null;\n const {\n '@id': id,\n '@type': type,\n bookmarkSeconds,\n callSign,\n categoryType,\n contentLabel,\n contentRating,\n description,\n descriptionLines,\n detailUrl,\n durationInSeconds,\n endDate,\n episodeNumber,\n fullEpisodeCount,\n guid,\n id: videoId,\n images,\n isAuthenticated,\n isLiveNow,\n isReplay,\n isSeriesDetailAvailable,\n isSeriesPromo,\n livePlayerScreenUrl,\n name,\n originalAirDate,\n percentWatched,\n playerScreenUrl,\n releaseYear,\n seasonNumber,\n seriesName,\n seriesScreenUrl,\n seriesType,\n showCode,\n startDate,\n subRatings,\n theme,\n trackingData,\n uID,\n videoType,\n } = item;\n const { global_watchButton: watchButtonText } = window.Language;\n const requiresAuth = getRequiresAuth({ video: item, isLive: !!livePlayerScreenUrl });\n const displayBrand = getDisplayBrand(item);\n const imageObj = getVideoObjectImages({ images, defaultImage: 'seriesList' });\n const hoverImageObj = getVideoObjectImages({ images, defaultImage: 'videoList' });\n const imageAltText = _.get(imageObj, 'altText', '');\n const fadeTile = isTileFaded(item, displayBrand);\n const badge = getItemBadge(item, false, isHoverStateV2, isPosters, isLocalClips);\n const airDate = formatAiredDate(originalAirDate);\n const formattedRating = formatRating(contentRating, subRatings);\n const seasonEpisode = formatSeasonEpisode(seasonNumber, episodeNumber);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const videoIsMovieType = isMovie(videoType);\n const videoIsSpecialType = isSpecial(seriesType);\n const videoIsTypeLive = isLive(type);\n const showLiveProgressBar = videoIsTypeLive && !isStaticRender();\n const subtitle = getHomeSubtitleText(item, isHoverStateV2);\n const isSportingEvent = isSportsContent(item);\n const affiliateLogoFallback = helperGetStaticContentUrl('images', 'fox-network-logo.png');\n const affiliateLogo = images?.affiliateLogoAlt?.raw ?? affiliateLogoFallback;\n let image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n let hoverImage = getVideoObjectImage({ image: hoverImageObj, network: displayBrand });\n let metadata = formatMetadata([airDate, formattedRating]);\n let titleLink = helperGetRelativeUrl({ url: seriesScreenUrl });\n let preventToggle = isSportingEvent;\n let playButton = true;\n const ctaData = [];\n const autoPlayVideo = _.get(item, 'autoPlayVideo.default.url');\n const playlistHash = getPlaylistHash(playerScreenUrl);\n let link = helperGetRelativeUrl({\n hash: playlistHash,\n url: playerScreenUrl || seriesScreenUrl || detailUrl,\n });\n const isUpcoming = isUpcomingContent(item);\n if (videoIsTypeLive) {\n const secUntilStart = differenceInSeconds(stringToDate(startDate), now());\n const videoStartsWithinFiveMinutes = isUpcoming && secUntilStart && secUntilStart <= 300;\n const videoIsCurrentlyLive = isCurrentLiveContent(item);\n const linkToLive =\n livePlayerScreenUrl && (videoStartsWithinFiveMinutes || videoIsCurrentlyLive);\n if (linkToLive) {\n link = helperGetLiveUrl({ callSign, videoId });\n if (isSportingEvent) titleLink = link;\n } else if (isSportingEvent) {\n link = null;\n titleLink = null;\n } else if (seriesScreenUrl) {\n link = helperGetRelativeUrl({ url: seriesScreenUrl });\n } else {\n link = null;\n }\n }\n let subtitleLink = link;\n\n if (videoIsMovieType) {\n metadata = formatMovieMetadata({\n releaseYear,\n contentRating,\n subRatings,\n durationInSeconds,\n });\n }\n\n if (\n isSeriesPromo &&\n (isEpisode(videoType) || isClip(videoType)) &&\n !isSportsContent(item) &&\n playerScreenUrl &&\n !livePlayerScreenUrl\n ) {\n const showLock = requiresAuth && !isAuthenticated;\n const showResume =\n typeof percentWatched === 'number' && percentWatched > 0 && percentWatched <= 90;\n const ctaText = showResume ? 'Resume' : watchButtonText;\n ctaData.push({\n icon: showLock ? 'lock' : 'play-button',\n viewBox: showLock ? '-7 -1 30 30' : null,\n text: `${ctaText} ${seasonEpisode}`,\n url: link,\n });\n }\n let seriesSeasonEpisode = '';\n let seriesPlayerScreenUrl = null;\n if (isTypeSeries(type)) {\n titleLink = helperGetSeriesDetailUrl(showCode);\n const oldestEpisode = _.get(item, 'oldestEpisode');\n seriesPlayerScreenUrl = _.get(oldestEpisode, 'playerScreenUrl');\n const seriesRating = _.get(oldestEpisode, 'contentRating');\n const seriesSubRating = _.get(oldestEpisode, 'subRatings');\n const seriesFormattedRating = formatRating(seriesRating, seriesSubRating);\n metadata = formatMetadata([seriesFormattedRating]);\n subtitleLink = titleLink;\n preventToggle = true;\n if (seriesPlayerScreenUrl) {\n link = helperGetRelativeUrl({ url: seriesPlayerScreenUrl });\n const seasonNumberOldestEpisode = _.get(oldestEpisode, 'seasonNumber');\n const episodeNumberOldestEpisode = _.get(oldestEpisode, 'episodeNumber');\n seriesSeasonEpisode =\n seasonNumberOldestEpisode && episodeNumberOldestEpisode\n ? formatSeasonEpisode(seasonNumberOldestEpisode, episodeNumberOldestEpisode)\n : null;\n } else {\n link = titleLink;\n playButton = false;\n }\n }\n\n const lines = descriptionLines === undefined ? 2 : descriptionLines;\n const {\n global_moreInfoButton: moreInfoText,\n global_moreSeriesDeeplinkButton: moreEpisodesText,\n } = window.Language;\n const seeAllText = fullEpisodeCount > 1 ? moreEpisodesText : moreInfoText;\n const hideLockIcon = (!videoIsMovieType && !videoIsSpecialType) || videoIsTypeLive;\n let titleValue = videoIsMovieType ? name : seriesName || name;\n\n if (isCollectionCategoryList) {\n const seriesSquareFallback = helperGetStaticContentUrl('images', 'series-square-fallback.jpg');\n image = images?.seriesSquare?.raw ?? seriesSquareFallback;\n hoverImage = images?.seriesSquare?.raw ?? seriesSquareFallback;\n titleValue = item?.headline;\n }\n\n const title = titleElement({\n hideLockIcon,\n isAuthenticated,\n isHoverStateV2,\n requiresAuth,\n theme,\n title: titleValue,\n });\n const recommendationIdData = _.get(trackingData, 'properties.recommendationIdData', '');\n const trackingContentId = _.get(trackingData, 'properties.contentId', null);\n const contentId = trackingContentId || (videoType === 'clip' ? guid : uID);\n\n const tealiumTileType = (() => {\n if (videoIsTypeLive) return 'live tile';\n if (isTypeVideo(type)) return 'video tile';\n return 'show tile';\n })();\n const videoData = {\n account,\n affiliateLogo,\n badge,\n bookmarkSeconds,\n categoryType,\n contentId,\n contentLabel,\n ctaData,\n ...collectionInfo,\n description,\n descriptionLines: lines,\n durationInSeconds,\n endDate,\n fadeTile,\n hoverImage,\n id,\n image,\n imageAltText,\n isReplay,\n isSeries: isTypeSeries(type),\n isSeriesDetailAvailable,\n link,\n metadata,\n name,\n networkIcon,\n percentWatched,\n playButton,\n preventToggle,\n recommendationIdData,\n requiresAuth,\n seeAllText,\n seriesName,\n seriesPlayerScreenUrl,\n seriesSeasonEpisode,\n showCode,\n showLiveProgressBar,\n startDate,\n tealiumTileType,\n subtitle: subtitleElement(subtitle),\n subtitleLink,\n subtitleName: name,\n title,\n titleLink,\n titleLines: isLiveNow && isMobileBreakpoint(breakpoint) ? 1 : 3,\n toggleEnabled: false,\n trackButtonClick: handleTealiumButtonAction,\n videoType,\n };\n videoData.video = autoPlayVideo;\n return videoData;\n};\n\nexport const seriesVideoProcessor = ({ item, isLive }) => {\n if (!item) return null;\n const {\n '@id': id,\n '@type': type,\n bookmarkSeconds,\n contentLabel,\n contentRating,\n description,\n displaySeasonAndEpisodeCounts,\n displayUpsellCTA,\n durationInSeconds,\n episodeNumber,\n id: videoId,\n images,\n isAuthenticated,\n isLiveNow,\n isSeriesDetailAvailable,\n name,\n originalAirDate,\n percentWatched,\n playerScreenUrl,\n seasonNumber,\n subRatings,\n theme,\n } = item;\n const requiresAuth = getRequiresAuth({ video: item });\n const displayBrand = getDisplayBrand(item);\n const fadeTile = isTileFaded(item, displayBrand);\n const imageObj = getVideoObjectImages({ images, defaultImage: 'videoList' });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const badge = getItemBadge(item, isLive);\n const airDate = formatAiredDate(originalAirDate);\n const rating = helperFormatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n const ratingStr = rating || subRating ? `${rating} ${subRating}` : null;\n const metadata = formatMetadata([airDate, ratingStr]);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n let titleText;\n if (displaySeasonAndEpisodeCounts) {\n const seasonNumFormat = item.seasonNumber ? `S${item.seasonNumber}` : '';\n const episodeNumFormat = item.episodeNumber ? ` E${item.episodeNumber}` : '';\n titleText = `${seasonNumFormat}${episodeNumFormat} ${name}`;\n } else {\n titleText = name;\n }\n const title = titleElement({ title: titleText, requiresAuth, theme, isAuthenticated });\n const liveLink = helperGetLiveUrl({ videoId });\n const subtitleLines = isLive ? 2 : 0;\n const seasonEpisode = formatSeasonEpisode(seasonNumber, episodeNumber);\n const episodeSeasonAndTitle = `${seasonEpisode}${name}`;\n\n let link = '';\n if (isTypeVideo(type)) {\n link = playerScreenUrl\n ? helperGetRelativeUrl({ url: playerScreenUrl })\n : helperGetVideoUrl(videoId);\n } else if (isTypeEPGListing(type) && isLiveNow) {\n link = helperGetLiveUrl({ videoId });\n } else {\n link = helperGetRelativeUrl({ url: playerScreenUrl });\n }\n\n const videoData = {\n badge,\n bookmarkSeconds,\n contentLabel,\n displayUpsellCTA,\n durationInSeconds,\n episodeSeasonAndTitle,\n fadeTile,\n id,\n image,\n isLive,\n isSeries: isTypeSeries(type),\n isSeriesDetailAvailable,\n link,\n liveLink,\n metadata,\n networkIcon,\n originalItem: item,\n percentWatched,\n playButton: true,\n subtitle: description,\n subtitleLines,\n title,\n titleText,\n trackButtonClick: handleTealiumButtonAction,\n };\n\n const { upsellPromoThumbnailBug, upsellPromoThumbnailButton } = window.Language;\n\n const upsellVideoData = {\n ...videoData,\n title: titleElement({ title: titleText, requiresAuth: false, theme, isAuthenticated }),\n playButton: false,\n networkIcon: null,\n upsellDogEarImage: getThumbnailBug(),\n upsellDogEarText: upsellPromoThumbnailBug,\n upsellButtonText: upsellPromoThumbnailButton,\n upsellButtonIcon: <NetworkImage />,\n episodeSeasonAndTitle,\n };\n return displayUpsellCTA ? upsellVideoData : videoData;\n};\n\nexport const clipsVideoProcessor = ({ item }) => {\n if (!item) return null;\n\n const {\n '@id': id,\n '@type': type,\n available,\n bookmarkSeconds,\n contentLabel,\n datePublished,\n durationInSeconds,\n images,\n isSeriesDetailAvailable,\n name,\n originalAirDate,\n percentWatched,\n playerScreenUrl,\n } = item;\n const displayBrand = getDisplayBrand(item);\n\n const imageObj = getVideoObjectImages({ images, defaultImage: 'videoList' });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n\n const badge = getItemBadge(item);\n const airDate = formatAiredDate(\n originalAirDate || datePublished || available,\n 'Published ',\n 'MM-DD-YY',\n );\n const duration = formatDurationInSeconds(durationInSeconds);\n const metadata = formatMetadata([airDate, duration]);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const recommendationIdData = getRecommendationIdDataForItem(item);\n\n const videoData = {\n badge,\n bookmarkSeconds,\n contentLabel,\n durationInSeconds,\n id,\n image,\n isSeries: isTypeSeries(type),\n isSeriesDetailAvailable,\n link: helperGetRelativeUrl({ url: playerScreenUrl }),\n metadata,\n networkIcon,\n percentWatched,\n playButton: true,\n recommendationIdData,\n title: name,\n titleLines: 2,\n titleLink: helperGetRelativeUrl({ url: playerScreenUrl }),\n trackButtonClick: handleTealiumButtonAction,\n };\n\n return videoData;\n};\n\nexport const prePremiereVideoProcessor = ({ item }) => {\n if (!item) return null;\n const videoData = seriesVideoProcessor({ item });\n if (!videoData) return null;\n\n const { name } = item;\n const requiresAuth = getRequiresAuth({ video: item });\n videoData.title = titleElement({ title: name, requiresAuth });\n return videoData;\n};\n\nexport const watchVideoProcessor = ({\n collectionType = '',\n item,\n showSeriesName = false,\n theme,\n}) => {\n if (!item) return null;\n\n const {\n '@id': id,\n '@type': type,\n available,\n bookmarkSeconds,\n contentLabel,\n contentRating,\n datePublished,\n description,\n displaySeasonAndEpisodeCounts,\n durationInSeconds,\n episodeNumber,\n images,\n isAuthenticated,\n isSeriesDetailAvailable,\n name,\n originalAirDate,\n percentWatched,\n playerScreenUrl,\n seasonNumber,\n seriesName,\n seriesScreenUrl,\n subRatings,\n } = item;\n const requiresAuth = getRequiresAuth({ video: item });\n const displayBrand = getDisplayBrand(item);\n const imageObj = getVideoObjectImages({ images, defaultImage: 'videoList' });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const seasonEpisode = formatSeasonEpisode(seasonNumber, episodeNumber);\n let title = displaySeasonAndEpisodeCounts ? `${seasonEpisode} ${name}` : name;\n title = showSeriesName ? `${seriesName} - ${title}` : title;\n const selectedDate = originalAirDate || datePublished || available;\n const airDate = formatAiredDate(selectedDate, '', 'MM-DD-YY');\n const duration = formatDurationInSeconds(durationInSeconds);\n const rating = helperFormatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n const ratingStr = rating || subRating ? `${rating} ${subRating}` : null;\n const badge = getItemBadge(item);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const fadeTile = isTileFaded(item, displayBrand);\n const timeSinceAired = formatAiredDate(originalAirDate, '', FORMAT_DISTANCE);\n let metadata = [];\n if (airDate) metadata.push(airDate);\n if (ratingStr) metadata.push(ratingStr);\n if (duration) metadata.push(duration);\n metadata = formatMetadata(metadata);\n\n if (collectionType === COLLECTION_TYPE_LOCAL_CLIPS) {\n metadata = `${item?.headline} · ${timeSinceAired}`;\n }\n\n const recommendationIdData = getRecommendationIdDataForItem(item);\n const videoData = {\n badge,\n id,\n image,\n bookmarkSeconds,\n contentLabel,\n isSeries: isTypeSeries(type),\n description,\n descriptionLines: 2,\n durationInSeconds,\n fadeTile,\n isSeriesDetailAvailable,\n link: helperGetRelativeUrl({ url: playerScreenUrl }),\n metadata,\n networkIcon,\n originalItem: item,\n percentWatched,\n playButton: true,\n recommendationIdData,\n seriesScreenUrl,\n subtitleText: metadata,\n tileType: 'tile-text-center',\n title: titleElement({ title, requiresAuth, isAuthenticated, theme }),\n titleLines: 4,\n titleLink: helperGetRelativeUrl({ url: playerScreenUrl }),\n titleText: title,\n toggleEnabled: true,\n trackButtonClick: handleTealiumButtonAction,\n };\n return videoData;\n};\n\nexport const watchListVideoProcessor = ({ item }) => {\n if (!item) return null;\n\n const { badge_nowPlaying: badgeNowPlaying } = window.Language;\n\n const {\n '@id': id,\n name,\n images,\n description,\n seasonNumber,\n episodeNumber,\n displaySeasonAndEpisodeCounts,\n durationInSeconds,\n originalAirDate,\n playerScreenUrl,\n seriesScreenUrl,\n available,\n datePublished,\n contentRating,\n network,\n subRatings,\n percentWatched,\n isAuthenticated,\n preauthorizedResources,\n videoType,\n } = item;\n\n const requiresAuth = getRequiresAuth({ video: item });\n const isVideoAuthorized = isAuthorized({\n preauthorizedResources,\n videoType,\n prioritizedNetwork: network,\n contentRating,\n isAuthenticated,\n requiresAuth,\n });\n const displayBrand = getDisplayBrand(item);\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const seasonEpisode = formatSeasonEpisode(seasonNumber, episodeNumber);\n const title = `${displaySeasonAndEpisodeCounts ? seasonEpisode : ''} ${name}`;\n const selectedDate = originalAirDate || datePublished || available;\n const airDate = formatAiredDate(selectedDate, '', 'MM-DD-YY');\n const duration = formatDurationInSeconds(durationInSeconds);\n const rating = helperFormatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n const ratingStr = rating || subRating ? `${rating} ${subRating}` : null;\n const badge = getItemBadge(item);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n\n let metadata = [];\n if (airDate) metadata.push(airDate);\n if (ratingStr) metadata.push(ratingStr);\n if (duration) metadata.push(duration);\n metadata = formatMetadata(metadata);\n\n const playButton = badgeNowPlaying !== badge;\n const videoData = {\n id,\n image,\n toggleEnabled: true,\n description,\n descriptionLines: 2,\n tileType: 'tile-text-center',\n subtitle: metadata,\n title: titleElement({ title, requiresAuth, isAuthenticated }),\n playButton,\n link: helperGetRelativeUrl({ url: playerScreenUrl }),\n titleLink: helperGetRelativeUrl({ url: playerScreenUrl }),\n seriesScreenUrl,\n badge,\n networkIcon,\n percentWatched,\n requiresAuth: isAuthenticated ? false : requiresAuth,\n isAuthorized: isVideoAuthorized,\n originalItem: item,\n };\n return videoData;\n};\n\nexport const searchListVideoProcessor = ({ item }) => {\n if (!item) return null;\n const {\n '@id': id,\n badge,\n name,\n images,\n playerScreenUrl,\n screenUrl,\n seriesScreenUrl,\n detailUrl,\n } = item;\n\n const { seriesRedirectMap } = window?.ExternalConfig || {};\n const displayBrand = getDisplayBrand(item);\n const recommendationIdData = getRecommendationIdDataForItem(item);\n const imageObj = getVideoObjectImages({ images, defaultImage: 'videoList' });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const url = playerScreenUrl || screenUrl || seriesScreenUrl || detailUrl;\n\n let linkOverride = null;\n\n if (item?.seriesType === 'series' && seriesRedirectMap?.[item?.showCode]) {\n linkOverride = seriesRedirectMap?.[item?.showCode];\n }\n\n if (item?.deeplinkWeb) {\n linkOverride = item.deeplinkWeb;\n }\n\n return {\n badge,\n id,\n image,\n link: linkOverride || helperGetRelativeUrl({ url }),\n title: name,\n networkIcon,\n originalItem: item,\n playButton: false,\n titleLines: 1,\n titleLink: linkOverride || helperGetRelativeUrl({ url }),\n titleText: name,\n recommendationIdData,\n };\n};\n\nexport const watchPlaylistVideoProcessor = (playlist, { item }) => {\n const returnValue = watchVideoProcessor({ item });\n const { link, titleLink } = returnValue;\n return {\n ...returnValue,\n link: `${link}#playlist=${playlist}`,\n titleLink: `${titleLink}#playlist=${playlist}`,\n };\n};\n\nexport const watchListPlaylistVideoProcessor = (playlist, { item }) => {\n const returnValue = watchListVideoProcessor({ item });\n const { link, titleLink } = returnValue;\n return {\n ...returnValue,\n link: `${link}#playlist=${playlist}`,\n titleLink: `${titleLink}#playlist=${playlist}`,\n };\n};\n\nexport const replayVideoProcessor = ({ item }) => {\n if (!item) return null;\n\n const { '@id': id, badge, images, name, oldestEpisode, screenUrl } = item;\n\n const displayBrand = getDisplayBrand(item);\n const recommendationIdData = getRecommendationIdDataForItem(item);\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const networkIcon = getNetworkLogoUrl(displayBrand);\n let subtitle;\n const originalAirDate = _.get(oldestEpisode, 'originalAirDate');\n if (originalAirDate) {\n subtitle = formatAiredDate(originalAirDate, 'Aired ', 'MM/DD/YYYY');\n }\n return {\n badge,\n id,\n image,\n link: helperGetRelativeUrl({ url: screenUrl }),\n name,\n networkIcon,\n originalItem: item,\n playButton: false,\n subtitle,\n title: name,\n titleLines: 1,\n titleLink: helperGetRelativeUrl({ url: screenUrl }),\n titleText: name,\n recommendationIdData,\n };\n};\n\nexport const listProcessor = ({ item, isAuthenticated }) => {\n if (!item) return null;\n const {\n '@id': id,\n '@type': type,\n id: videoId,\n badge,\n callSign,\n detailUrl,\n fullEpisodeCount,\n images,\n name,\n playerScreenUrl,\n screenUrl,\n seriesName,\n seriesScreenUrl,\n theme,\n videoType,\n } = item;\n const { seriesRedirectMap } = window?.ExternalConfig || {};\n const isTubi = item?.contentSKU?.[0]?.includes('tubi');\n const requiresAuth = getRequiresAuth({ video: item });\n const displayBrand = getDisplayBrand(item);\n let titleLines = 1;\n const titleValue = seriesName || name;\n let title = isMovie(videoType)\n ? titleElement({ title: titleValue, requiresAuth, theme, isAuthenticated })\n : titleValue;\n\n if (fullEpisodeCount) {\n title = name;\n titleLines = 0; // set it to 0 so Tile skips sending it to React-dotdotdot.\n }\n const recommendationIdData = getRecommendationIdDataForItem(item);\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const networkIcon = getNetworkLogoUrl(displayBrand);\n\n const callSignMap = window?.ExternalConfig?.callSignRedirects || {};\n let linkOverride = null;\n\n if (item?.seriesType === 'series' && seriesRedirectMap?.[item?.showCode]) {\n linkOverride = seriesRedirectMap?.[item?.showCode];\n }\n\n if (item.deeplinkWeb) {\n linkOverride = item.deeplinkWeb;\n }\n\n const url = screenUrl || seriesScreenUrl || playerScreenUrl || detailUrl;\n let videoData = {\n badge,\n id,\n image,\n link: linkOverride || helperGetRelativeUrl({ url }),\n name,\n networkIcon,\n originalItem: item,\n playButton: false,\n title,\n titleLines,\n titleLink: linkOverride || helperGetRelativeUrl({ url }),\n titleText: name,\n seriesScreenUrl: url,\n recommendationIdData,\n };\n\n if (callSignMap[callSign] && isLive(type)) {\n linkOverride = callSignMap[callSign];\n }\n\n if (isTubi) {\n videoData.image = item?.images?.landscape;\n videoData.link = item?.deeplink_url;\n videoData.isTubi = true;\n }\n\n if (isLive(type)) {\n const liveUrl = helperGetLiveUrl({ callSign, videoId });\n const requiresAuthLive = getRequiresAuth({ video: item, isLive: true });\n videoData.link = linkOverride || liveUrl;\n videoData.titleLink = linkOverride || liveUrl;\n videoData = externalRedirectProcessing(videoData);\n videoData.badge = SHOW_STATE_LIVE;\n videoData.title = titleElement({\n title: titleValue,\n requiresAuth: requiresAuthLive,\n theme,\n isAuthenticated,\n });\n\n // Fade tile only if it has a vod asset\n if (playerScreenUrl) videoData.fadeTile = isTileFaded(item, displayBrand);\n }\n\n return videoData;\n};\n\nexport const listProcessorWithAnimation = ({ item, id, isAuthenticated }) => {\n if (!item) return null;\n const {\n global_moreInfoButton: moreInfoText,\n seriesDetail_latestEpisodeHeader: latestEpText,\n } = window.Language;\n const {\n '@type': type,\n latestFullEpisodeId,\n playerScreenUrl,\n requiresAuth,\n seriesScreenUrl,\n } = item;\n\n const isUpcoming = isUpcomingContent(item);\n const videoData = listProcessor({ item, isAuthenticated });\n videoData.isDisabled = false;\n if (isUpcoming) {\n videoData.badge = 'UPCOMING';\n const subTitle = getHomeSubtitleText(item);\n videoData.subtitle = subTitle;\n videoData.isDisabled = true;\n }\n let delay = Math.max(0, id);\n delay *= 0.1;\n if (delay <= 0) {\n videoData.inlineStyle = { opacity: 1, animation: 'none' };\n } else {\n videoData.inlineStyle = { animationDelay: `${delay}s` };\n }\n\n const ctaData = [];\n const showCTAs = optimizelyShowsTileCTAs();\n\n if (showCTAs && type === 'Series' && latestFullEpisodeId) {\n const latestEpisodeLink = helperGetVideoUrl(latestFullEpisodeId);\n const moreInfoLink = helperGetRelativeUrl({ url: playerScreenUrl || seriesScreenUrl });\n const showLock = requiresAuth && !isAuthenticated;\n\n const latestEpisodeText = optimizelyModifyShowsTileCTA() || `Watch ${latestEpText}`;\n\n ctaData.push(\n {\n icon: showLock ? 'lock' : 'play-button',\n text: latestEpisodeText,\n url: latestEpisodeLink,\n viewBox: showLock ? '-7 -1 30 30' : null,\n },\n {\n text: moreInfoText,\n url: moreInfoLink,\n },\n );\n }\n videoData.ctaData = ctaData;\n return videoData;\n};\n\nexport const listItemProcessor = ({ item }) => {\n if (!item) return null;\n\n const { seriesRedirectMap } = window?.ExternalConfig || {};\n\n const {\n '@id': id,\n callSign,\n detailUrl,\n fullEpisodeCount,\n id: videoId,\n images,\n name,\n playerScreenUrl,\n screenUrl,\n seriesName,\n seriesScreenUrl,\n } = item;\n let title = seriesName || name;\n const displayBrand = getDisplayBrand(item);\n const isTubi = item?.contentSKU?.[0]?.includes('tubi');\n\n let linkOverride = null;\n\n if (item?.seriesType === 'series' && seriesRedirectMap?.[item?.showCode]) {\n linkOverride = seriesRedirectMap?.[item?.showCode];\n }\n\n if (item?.deeplinkWeb) {\n linkOverride = item.deeplinkWeb;\n }\n\n if (fullEpisodeCount) {\n title = name;\n }\n const url = linkOverride || screenUrl || seriesScreenUrl || playerScreenUrl || detailUrl;\n const networkLogoUrl = getNetworkLogoUrl(displayBrand, 25);\n const recommendationIdData = getRecommendationIdDataForItem(item);\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n\n let videoData = {\n iconUrl: networkLogoUrl,\n id,\n image,\n name,\n networkIcon: networkLogoUrl,\n recommendationIdData,\n seriesScreenUrl,\n title,\n titleLink: linkOverride || helperGetRelativeUrl({ url }),\n titleText: name,\n };\n\n if (videoIsLive(item)) {\n const isUpcoming = isUpcomingContent(item);\n videoData.isDisabled = false;\n if (isUpcoming) {\n videoData.badge = 'UPCOMING';\n const subTitle = getHomeSubtitleText(item);\n videoData.subtitle = subTitle;\n videoData.isDisabled = true;\n } else {\n videoData.badge = SHOW_STATE_LIVE;\n videoData.isLive = true;\n const liveUrl = helperGetLiveUrl({ callSign, videoId });\n videoData.link = liveUrl;\n videoData.titleLink = liveUrl;\n videoData = externalRedirectProcessing(videoData);\n }\n }\n\n if (isTubi) {\n videoData.image = item?.images?.landscape;\n videoData.link = item?.deeplink_url;\n videoData.isTubi = true;\n }\n\n return videoData;\n};\n\nexport const scheduleItemVideoProcessor = ({ item }) => {\n if (!item) {\n return null;\n }\n const { '@id': id, images } = item;\n const displayBrand = getDisplayBrand(item);\n\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const networkIcon = getNetworkLogoUrl(displayBrand);\n\n const videoData = {\n id,\n image,\n playButton: false,\n networkIcon,\n };\n return videoData;\n};\n\nexport const seriesCollectionVideoProcessor = ({ item }) => {\n if (!item) return null;\n\n const data = seriesVideoProcessor({ item });\n const {\n theme,\n seriesName: title,\n name: subtitle,\n description,\n originalAirDate,\n available,\n datePublished,\n contentRating,\n subRatings,\n durationInSeconds,\n } = item;\n\n const requiresAuth = getRequiresAuth({ video: item });\n const airDate = formatAiredDate(originalAirDate || datePublished || available, '', 'MM-DD-YY');\n const duration = formatDurationInSeconds(durationInSeconds);\n const rating = helperFormatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n const ratingStr = rating || subRating ? `${rating} ${subRating}` : null;\n\n const metadata = [];\n if (airDate) metadata.push(airDate);\n if (ratingStr) metadata.push(ratingStr);\n if (duration) metadata.push(duration);\n\n data.title = titleElement({ title, requiresAuth, theme });\n data.subtitle = subtitle;\n data.description = description;\n data.metadata = formatMetadata(metadata);\n return data;\n};\n\nexport const endcardVideoProcessor = ({ item, account, isAuthenticated }) => {\n if (!item) {\n return null;\n }\n\n const {\n '@id': id,\n id: videoId,\n images,\n name,\n seriesName,\n playerScreenUrl,\n seriesScreenUrl,\n livePlayerScreenUrl,\n originalAirDate,\n contentRating,\n subRatings,\n displaySeasonAndEpisodeCounts,\n episodeNumber,\n seasonNumber,\n videoType,\n releaseYear,\n durationInSeconds,\n percentWatched,\n counter,\n } = item;\n\n const displayBrand = getDisplayBrand(item);\n\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const badgeComponent = getItemBadge(item);\n const airDate = formatAiredDate(originalAirDate);\n const rating = helperFormatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n const ratingStr = rating || subRating ? `${rating} ${subRating}` : null;\n const duration = formatDurationInSeconds(durationInSeconds);\n let metadata = formatMetadata([airDate, ratingStr, duration]);\n const seasonEpisode = formatSeasonEpisode(seasonNumber, episodeNumber);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const requiresAuth = getRequiresAuth({ video: item });\n const lockElement = requiresAuthElement({\n requiresAuth,\n isAuthenticated,\n viewBox: '0 4 24 24',\n });\n\n let subtitle;\n if (isMovie(videoType)) {\n metadata = formatMovieMetadata({\n releaseYear,\n contentRating,\n subRatings,\n durationInSeconds,\n });\n }\n if (isEpisode(videoType) || isClip(videoType)) {\n subtitle = `${displaySeasonAndEpisodeCounts ? seasonEpisode : ''}${name}`;\n }\n\n const title = seriesName || name;\n const titleComponent = (\n <div>\n <span>{counter}</span>\n <span>\n {title}\n {lockElement}\n </span>\n </div>\n );\n\n const linkHash = getPlaylistHash(playerScreenUrl) || CONTINUOUS;\n let link = helperGetRelativeUrl({ url: playerScreenUrl || seriesScreenUrl, hash: linkHash });\n if (livePlayerScreenUrl) link = helperGetLiveUrl({ videoId });\n const videoData = {\n id,\n link,\n title: titleComponent,\n titleLink: link,\n titleText: title,\n subtitle: subtitleElement(subtitle),\n subtitleName: name,\n subtitleText: subtitle,\n image,\n playButton: true,\n badge: badgeComponent,\n description: null,\n descriptionLines: null,\n metadata,\n videoType,\n networkIcon,\n percentWatched,\n trackButtonClick: handleTealiumButtonAction,\n account,\n tileDetailToggle: false,\n isAuthenticated,\n originalItem: item,\n };\n\n return videoData;\n};\n\nexport const collectionsClipsProcessor = ({ item }) => {\n if (!item) return null;\n const {\n '@id': id,\n '@type': type,\n images,\n isSeriesDetailAvailable,\n name,\n network,\n originalAirDate,\n percentWatched,\n playerScreenUrl,\n } = item;\n\n const displayBrand = getDisplayBrand(item);\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const timeSinceAired = formatAiredDate(originalAirDate, '', FORMAT_DISTANCE);\n\n const videoData = {\n id,\n image,\n isSeries: isTypeSeries(type),\n isSeriesDetailAvailable,\n link: helperGetRelativeUrl({ url: playerScreenUrl }),\n network,\n percentWatched,\n timeSinceAired,\n title: name,\n titleLines: 2,\n titleLink: helperGetRelativeUrl({ url: playerScreenUrl }),\n trackButtonClick: handleTealiumButtonAction,\n };\n\n return videoData;\n};\n\nexport const primeTimeVideoProcessor = ({ item }) => {\n if (!item) return null;\n const {\n '@id': id,\n images,\n seriesName,\n secondaryTitle,\n screenUrl,\n seriesScreenUrl,\n contentRating,\n subRatings,\n description,\n network,\n percentWatched,\n isSeriesDetailAvailable,\n } = item;\n\n const displayBrand = getDisplayBrand(item);\n const fadeTile = isTileFaded(item, displayBrand);\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const badge = getPrimetimeScheduleItemBadge(item);\n const rating = helperFormatRating(contentRating);\n const subRating = formatSubRatings(subRatings);\n const ratingStr = rating || subRating ? `${rating} ${subRating}` : null;\n const metadata = ratingStr;\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const seasonNumFormat = item.seasonNumber ? `S${item.seasonNumber}` : '';\n const episodeNumFormat = item.episodeNumber ? ` E${item.episodeNumber}` : '';\n const seasonEpisodeNum = seasonNumFormat ? `${seasonNumFormat}${episodeNumFormat} ` : '';\n const title = seriesName;\n let subtitle = `${seasonEpisodeNum}${secondaryTitle || ''}`;\n if (title === subtitle) subtitle = null;\n const url = screenUrl || seriesScreenUrl;\n\n const titleLink = isSeriesDetailAvailable ? helperGetRelativeUrl({ url }) : null;\n const videoData = {\n id,\n title: seriesName,\n titleLink,\n subtitle,\n description,\n image,\n playButton: true,\n badge,\n metadata,\n networkIcon,\n percentWatched,\n fadeTile,\n network,\n };\n\n return videoData;\n};\n\nexport const singleStationVideoProcessor = ({ item, isAuthenticated }) => {\n if (!item) return null;\n const {\n '@id': id,\n '@type': type,\n images,\n seriesName,\n secondaryTitle,\n description,\n network,\n } = item;\n const videoIsTypeLive = isLive(type);\n const requiresAuth = getRequiresAuth({ video: item });\n const isLocked = requiresAuth && !isAuthenticated;\n const badge = getItemBadge(item, videoIsTypeLive);\n const displayBrand = getDisplayBrand(item);\n const fadeTile = isTileFaded(item, displayBrand);\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network: displayBrand });\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const seasonNumFormat = item.seasonNumber ? `S${item.seasonNumber}` : '';\n const episodeNumFormat = item.episodeNumber ? ` E${item.episodeNumber}` : '';\n const seasonEpisodeNum = seasonNumFormat ? `${seasonNumFormat}${episodeNumFormat} ` : '';\n const title = seriesName;\n let subtitle = `${seasonEpisodeNum}${secondaryTitle || ''}`;\n if (title === subtitle) subtitle = null;\n\n const videoData = {\n badge,\n description,\n fadeTile,\n id,\n image,\n isLocked,\n network,\n networkIcon,\n subtitle,\n title: seriesName,\n };\n\n return videoData;\n};\n\nrequiresAuthElement.defaultProps = {\n isAuthenticated: false,\n lockClass: null,\n requiresAuth: false,\n viewBox: null,\n};\n\nrequiresAuthElement.propTypes = {\n isAuthenticated: PropTypes.bool,\n lockClass: PropTypes.string,\n requiresAuth: PropTypes.bool,\n viewBox: PropTypes.shape({}),\n};\n\ntitleElement.defaultProps = {\n hideLockIcon: false,\n isAuthenticated: false,\n isHoverStateV2: false,\n};\n\ntitleElement.propTypes = {\n hideLockIcon: PropTypes.bool,\n isAuthenticated: PropTypes.bool,\n isHoverStateV2: PropTypes.bool,\n requiresAuth: PropTypes.bool.isRequired,\n theme: PropTypes.shape({}).isRequired,\n title: PropTypes.string.isRequired,\n video: PropTypes.bool,\n};\n","/* global FavoritesEnabled */\nimport _ from 'lodash';\nimport {\n PageNames,\n handleTealiumButtonAction,\n SegmentSources,\n tealiumEventPageTypes,\n} from '@foxcorp/delta-web-analytics';\nimport {\n formatAiredDate,\n formatMovieMetadata,\n formatSeasonEpisode,\n formatSeasonEpisodeExtended,\n} from 'helpers/VideoHelper';\nimport {\n COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST,\n COLLECTION_TYPE_LOCAL_CLIPS,\n formatUpcomingDate,\n getDisplayBrand,\n getNetworkLogoUrl,\n getRequiresAuth,\n getShowType,\n isClip,\n isEpisode,\n isLive,\n isLiveVideoExpired,\n isMovie,\n isSpecial,\n isSports,\n isStaticRender,\n isTypeSeries,\n isTypeVideo,\n isUpcomingContent,\n LOCAL_IN_MARKET,\n PANEL_TYPE_PARTNER_SHOWS,\n PANEL_TYPE_PARTNER_VIDEO,\n PANEL_TYPE_VIDEOS,\n} from 'helpers/ContentHelper';\nimport { FORMAT_TIME, FORMAT_DISTANCE, secondsToHoursMinutesSeconds } from 'helpers/DateTimeHelper';\nimport { getOptimizelyFakeCollectionData } from 'helpers/OptimizelyHelper';\nimport {\n TYPE_SERIES,\n homeVideoProcessor,\n getItemBadge,\n getVideoObjectImage,\n getVideoObjectImages,\n titleElement,\n isTileFaded,\n getHomeSubtitleText,\n subtitleElement,\n} from '../VideoProcessorHelper';\nimport { helperGetBaseUrlSlug, helperGetRelativeUrl } from '../RouteHelper';\n\nfunction getFormattedVideoData(images, prioritizedNetwork) {\n const defaultImage = 'videoList';\n const imageObj = getVideoObjectImages({ images, defaultImage });\n const image = getVideoObjectImage(imageObj, prioritizedNetwork);\n return image;\n}\n\nfunction getTitle({ seriesName, name, type, requiresAuth, theme, isAuthenticated }) {\n const seriesTitle = name;\n const videoTitle = `${seriesName} - ${name}`;\n const title = isTypeVideo(type) ? videoTitle : seriesTitle;\n const element = titleElement({ title, requiresAuth, theme, isAuthenticated });\n return element;\n}\n\nexport function CarouselVideoProcessor(video) {\n if (!video) return null;\n const {\n '@id': id,\n '@type': type,\n images,\n name,\n seriesName,\n playerScreenUrl,\n description,\n theme,\n percentWatched,\n isAuthenticated,\n screenUrl,\n } = video;\n\n const requiresAuth = getRequiresAuth({ video });\n const isVideo = isTypeVideo(type);\n const isSeries = TYPE_SERIES === type;\n\n const title = getTitle({ seriesName, name, type, requiresAuth, theme, isAuthenticated });\n const displayBrand = getDisplayBrand(video);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const fadeTile = isTileFaded(video, displayBrand);\n const image = getFormattedVideoData(images, displayBrand);\n const badge = getItemBadge(video);\n\n const url = isVideo ? playerScreenUrl : screenUrl;\n const link = helperGetRelativeUrl({ url });\n\n const processedVideoData = {\n id,\n link,\n title,\n description,\n image,\n playButton: false,\n trackButtonClick: handleTealiumButtonAction,\n badge,\n networkIcon,\n percentWatched,\n fadeTile,\n descriptionLines: 3,\n preventLazyLoad: false,\n toggleEnabled: false,\n };\n\n const processedSeriesData = {\n id,\n link,\n image,\n playButton: false,\n description: null,\n trackButtonClick: handleTealiumButtonAction,\n badge,\n networkIcon,\n percentWatched,\n fadeTile,\n preventLazyLoad: true,\n toggleEnabled: false,\n };\n\n if (isVideo) return processedVideoData;\n if (isSeries) return processedSeriesData;\n return null;\n}\n\nexport function homeLinkTileCarouselProcessor(item) {\n if (!item) return null;\n\n const { id, images, headline, link: linkData } = item;\n\n const imageUrl = _.get(images, 'seriesDetail');\n const image = imageUrl && `${imageUrl}`;\n const url = _.get(linkData, '0.url');\n const baseUrlSlug = helperGetBaseUrlSlug();\n const link = `${baseUrlSlug}${url?.toLowerCase()}`;\n const title = titleElement({\n title: headline,\n hideLockIcon: true,\n });\n\n return {\n id,\n image,\n link,\n tileType: 'linkTile',\n title,\n titleLink: link,\n };\n}\n\nexport function homeVideoOverlayProcessor(video, processedProps) {\n const {\n '@type': type,\n categoryType,\n contentLabel,\n contentRating,\n description: originalDescription,\n durationInSeconds,\n endDate,\n episodeNumber,\n favoritableItems,\n fullEpisodeCount,\n isSeriesDetailAvailable,\n livePlayerScreenUrl,\n name,\n network,\n playerScreenUrl,\n releaseYear,\n seasonCount,\n seasonNumber,\n seriesName,\n seriesScreenUrl,\n seriesType,\n showCode,\n sportTag,\n startDate,\n subRatings,\n trackingData,\n videoType,\n } = video;\n const { seriesPlayerScreenUrl, seriesSeasonEpisode } = processedProps;\n const hasNetworkLogo = !!window.ExternalConfig.networkLogo;\n const videoIsClip = isClip(videoType);\n const videoIsLive = isLive(type);\n const videoIsUpcoming = isUpcomingContent(video);\n const videoIsEpisode = isEpisode(videoType);\n const videoIsSports = isSports(seriesType);\n const videoIsSpecial = isSpecial(seriesType);\n const videoIsSeries = isTypeSeries(type);\n const videoIsMovie = isMovie(videoType);\n const videoIsContinueWatching =\n contentLabel && _.toLower(contentLabel[0]) === 'continue watching';\n const description = originalDescription || null;\n const displayBrand = getDisplayBrand(video);\n const networkLogoUrl = hasNetworkLogo ? getNetworkLogoUrl(displayBrand) : null;\n const displaySeasonAndEpisodeCounts = _.get(video, 'displaySeasonAndEpisodeCounts', true);\n let badge = getItemBadge(video);\n let title = name;\n let subtitle = null;\n let upcomingDate = null;\n let metadata = null;\n\n if (videoIsClip && seriesName) {\n subtitle = seriesName;\n } else if (videoIsEpisode) {\n title = seriesName;\n if (videoIsSports) {\n subtitle = sportTag;\n } else if (!videoIsSpecial && displaySeasonAndEpisodeCounts) {\n const seasonEpisodeDisplay = formatSeasonEpisode(seasonNumber, episodeNumber);\n subtitle = `${seasonEpisodeDisplay}${name}`;\n }\n }\n\n if (videoIsUpcoming) {\n upcomingDate = formatUpcomingDate(startDate);\n metadata = formatMovieMetadata({\n releaseYear: formatAiredDate(startDate, ''),\n contentRating,\n subRatings,\n durationInSeconds,\n });\n badge = null;\n } else if (videoIsLive) {\n metadata = formatMovieMetadata({\n releaseYear: formatAiredDate(startDate, '', FORMAT_TIME),\n durationInSeconds,\n });\n } else if (videoIsSeries) {\n const currentSeasonNumberFallback = _.get(video, 'oldestEpisode.seasonNumber', null);\n const currentSeasonNumber = _.get(\n video,\n 'currentSeason.seasonNumber',\n currentSeasonNumberFallback,\n );\n metadata = formatSeasonEpisodeExtended(seasonCount, currentSeasonNumber, fullEpisodeCount);\n } else if (videoIsMovie) {\n metadata = formatMovieMetadata({\n releaseYear,\n contentRating,\n subRatings,\n durationInSeconds,\n });\n }\n\n let showPlayButton = true;\n if (\n videoIsUpcoming ||\n (videoIsLive && (!livePlayerScreenUrl || isLiveVideoExpired(endDate))) ||\n (videoIsSeries && !seriesPlayerScreenUrl) ||\n (!videoIsLive && !videoIsSeries && !playerScreenUrl)\n )\n showPlayButton = false;\n\n const {\n global_continueWatchingButton: continueWatchingText,\n global_playLabel: playText,\n global_watchClipButton: watchClipText,\n global_watchLiveButton: watchLiveText,\n global_watchNowButton: watchNowText,\n } = window.Language;\n\n let playButtonText = null;\n if (showPlayButton) {\n if (videoIsLive) {\n playButtonText = watchLiveText;\n } else if (videoIsContinueWatching) {\n playButtonText = continueWatchingText;\n } else if (videoIsClip) {\n playButtonText = watchClipText;\n } else if (videoIsSeries && seriesSeasonEpisode && displaySeasonAndEpisodeCounts) {\n playButtonText = `${playText} ${seriesSeasonEpisode}`;\n } else {\n playButtonText = watchNowText;\n }\n }\n\n let favoriteData = null;\n if (FavoritesEnabled) {\n const showType = getShowType({ videoType, seriesType });\n const isPersonality = categoryType && categoryType === 'personality';\n const recommendationId = _.get(trackingData, 'properties.recommendationId', '');\n favoriteData = {\n actionLocation: 'playlist',\n favoritableItems,\n favoriteType: isPersonality ? 'personality' : showType,\n location: _.get(tealiumEventPageTypes, PageNames.HOME),\n networkId: network,\n recommendationId,\n seriesName: seriesName || name,\n showID: showCode,\n showType,\n source: SegmentSources.DETAIL,\n };\n }\n\n return {\n badge,\n description,\n favoriteData,\n metadata,\n network,\n networkLogoUrl,\n isSeriesDetailAvailable,\n playButtonText,\n seriesScreenUrl,\n showPlayButton,\n subtitle,\n title,\n upcomingDate,\n };\n}\n\nexport function homeCarouselVideoProcessor({\n account,\n breakpoint,\n collectionType,\n displayTemplate,\n isHoverStateV2,\n isMobile,\n isPosters,\n overridePlayButtonClick,\n panelType,\n video,\n}) {\n const {\n '@type': type,\n categoryType,\n id,\n isAuthenticated,\n isNationStubData,\n isSeriesDetailAvailable,\n isUserOutOfMarket,\n livePlayerScreenUrl,\n name,\n originalAirDate,\n playerScreenUrl,\n seriesName,\n seriesScreenUrl,\n theme,\n } = video;\n\n if (type === 'seeMore') return homeLinkTileCarouselProcessor(video);\n const isVideo = isTypeVideo(type);\n const videoIsLive = isLive(type);\n const subtitleText = getHomeSubtitleText(video);\n const isLocalClips = collectionType === COLLECTION_TYPE_LOCAL_CLIPS;\n const isCollectionCategoryList = collectionType === COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST;\n let processedProps = homeVideoProcessor({\n account,\n breakpoint,\n isCollectionCategoryList,\n isHoverStateV2,\n isLocalClips,\n isPosters,\n item: video,\n });\n const requiresAuth = _.get(processedProps, 'requiresAuth');\n const videoTitle = titleElement({\n title: seriesName || name,\n requiresAuth,\n theme,\n isAuthenticated,\n hideLockIcon: false,\n isHoverStateV2,\n video,\n });\n const title = isVideo || videoIsLive ? videoTitle : processedProps.title;\n const shouldHideVideoSubtitle = displayTemplate === LOCAL_IN_MARKET;\n\n let timeSinceAired;\n let posterGenres;\n let posterItemBadge;\n let posterMetaData;\n let posterTitle;\n\n let videosSubtitleText = subtitleText === processedProps.title ? '' : subtitleText;\n\n if (isVideo || videoIsLive) {\n videosSubtitleText = subtitleText === (seriesName || name) ? '' : subtitleText;\n }\n if (collectionType === COLLECTION_TYPE_LOCAL_CLIPS) {\n videosSubtitleText = video?.headline;\n timeSinceAired = formatAiredDate(originalAirDate, '', FORMAT_DISTANCE);\n }\n\n const videosSubtitle = subtitleElement(\n videosSubtitleText,\n timeSinceAired,\n shouldHideVideoSubtitle,\n );\n const subtitle = isVideo ? videosSubtitle : processedProps.subtitle;\n\n processedProps = {\n ...processedProps,\n isSeriesDetailAvailable,\n isUserOutOfMarket,\n livePlayerScreenUrl,\n originalItem: video,\n overridePlayButtonClick,\n preventLazyLoad: true,\n subtitleText,\n toggleEnabled: true,\n };\n\n const { playButton } = processedProps;\n const isPersonality = categoryType === 'personality';\n let showPlayHoverIcon = playButton && !isPersonality && !isUpcomingContent(video);\n let overlayProps = null;\n let posterImage = _.get(video, 'images.dcg-mark-poster.raw', null);\n const posterAltText = _.get(video, 'images.dcg-mark-poster.altText', '');\n showPlayHoverIcon = false;\n overlayProps = homeVideoOverlayProcessor(video, processedProps);\n overlayProps.isPersonality = isPersonality;\n let videoPosterImage = _.get(video, 'images.video-poster');\n\n if (typeof videoPosterImage === 'object') {\n videoPosterImage = _.get(video, 'images.video-poster.raw');\n }\n\n if (panelType === PANEL_TYPE_VIDEOS) {\n posterImage = videoPosterImage || posterImage;\n }\n\n if (panelType === PANEL_TYPE_PARTNER_SHOWS || panelType === PANEL_TYPE_PARTNER_VIDEO) {\n posterImage = video?.images?.poster?.raw;\n posterTitle = video?.name;\n posterGenres = video?.genres?.join(' • ');\n posterItemBadge = video?.ratings?.[0]?.rating.replace('_', '-');\n const posterReleaseYear = video?.releaseYear ? video?.releaseYear : '';\n const { hours, minutes } = secondsToHoursMinutesSeconds(video?.durationSec);\n const posterHours = hours ? `${hours} hr` : '';\n const posterMinutes = minutes ? `${minutes} min` : '';\n const conditionalDot = posterReleaseYear && posterHours ? '•' : '';\n posterMetaData = `${posterReleaseYear} ${conditionalDot} ${posterHours} ${posterMinutes}`;\n processedProps.link = video?.deeplink_url;\n }\n\n processedProps = {\n ...processedProps,\n hasOverlay: !isMobile, // adds overlay for posters except mobile\n itemIndex: id,\n metadata: null,\n overlayProps,\n playButton: showPlayHoverIcon,\n playerScreenUrl,\n posterAltText,\n posterGenres,\n posterImage,\n posterItemBadge,\n posterMetaData,\n posterTitle,\n preventToggle: true, // hides description\n requiresAuth,\n seriesScreenUrl,\n subtitle,\n title,\n toggleEnabled: false,\n };\n\n if (isNationStubData) {\n const fakeCollecitonData = getOptimizelyFakeCollectionData();\n processedProps.isRedirect = true;\n processedProps.link = fakeCollecitonData.collectionLink || 'https://nation.foxnews.com/';\n }\n if (isStaticRender() || isSeriesDetailAvailable === false) {\n processedProps.titleLink = null;\n if (isUpcomingContent(video)) {\n processedProps.link = null;\n }\n }\n return processedProps;\n}\n\nexport function networkUpsellHeroCarouselProcessor(item) {\n const {\n body,\n ctaText,\n onClick,\n description,\n externalLink,\n header,\n id,\n image,\n itemIndex,\n metadata,\n slideIndex,\n url,\n video,\n } = item;\n\n const ctaData = [\n {\n text: ctaText,\n url,\n onClick,\n externalLink,\n },\n ];\n\n const processedData = {\n ctaData,\n ctaPosition: 'middle',\n description,\n id,\n image,\n metadata,\n playButton: false,\n preventLazyLoad: true,\n subtitle: body,\n title: header,\n toggleEnabled: false,\n video,\n videoPlay: itemIndex === slideIndex,\n };\n\n return processedData;\n}\n","import {\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_WEB_LARGE,\n} from 'helpers/BreakpointHelper';\n\nexport const BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n actionButtonsInHeader: false,\n actionButtonsInNav: true,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 0,\n carouselLimit: 4,\n posterLimit: 5,\n posterToScroll: 5,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logo.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 4,\n socialLinks: true,\n subtitleLines: 2,\n tabsInAltHeader: false,\n useScrollableDiv: false,\n videoBackground: true,\n },\n [SITE_PLATFORM_WEB]: {\n actionButtonsInHeader: false,\n actionButtonsInNav: true,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 0,\n carouselLimit: 3,\n descriptionLines: 5,\n posterLimit: 5,\n posterToScroll: 5,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logo.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 3,\n socialLinks: true,\n subtitleLines: 2,\n tabsInAltHeader: false,\n useScrollableDiv: false,\n useSeriesLogo: true,\n videoBackground: true,\n },\n [SITE_PLATFORM_TABLET]: {\n actionButtonsInHeader: true,\n actionButtonsInNav: false,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 4,\n carouselLimit: 2,\n descriptionLines: 5,\n posterLimit: 3,\n posterToScroll: 3,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logoCenter.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 2,\n socialLinks: false,\n subtitleLines: 2,\n tabsInAltHeader: true,\n useScrollableDiv: false,\n useSeriesLogo: true,\n videoBackground: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n actionButtonsInHeader: true,\n actionButtonsInNav: false,\n addCarouselPlaceholders: false,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 3,\n carouselLimit: 2,\n descriptionLines: 5,\n posterLimit: 3,\n posterToScroll: 3,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logoCenter.raw',\n showTileMetadataOnHover: false,\n slidesToScroll: 2,\n socialLinks: false,\n subtitleLines: 2,\n tabsInAltHeader: true,\n useScrollableDiv: true,\n },\n};\n\nexport const FoxContentDensityBreakpoints = {\n [SITE_PLATFORM_WEB_LARGE]: {\n actionButtonsInHeader: false,\n actionButtonsInNav: true,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 0,\n carouselLimit: 4,\n posterLimit: 6,\n posterToScroll: 6,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logo.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 4,\n socialLinks: true,\n subtitleLines: 2,\n tabsInAltHeader: false,\n useScrollableDiv: false,\n videoBackground: true,\n },\n [SITE_PLATFORM_WEB]: {\n actionButtonsInHeader: false,\n actionButtonsInNav: true,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 0,\n carouselLimit: 4,\n descriptionLines: 5,\n posterLimit: 5,\n posterToScroll: 5,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logo.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 4,\n socialLinks: true,\n subtitleLines: 2,\n tabsInAltHeader: false,\n useScrollableDiv: false,\n useSeriesLogo: true,\n videoBackground: true,\n },\n [SITE_PLATFORM_TABLET]: {\n actionButtonsInHeader: true,\n actionButtonsInNav: false,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 4,\n carouselLimit: 3,\n descriptionLines: 5,\n posterLimit: 4,\n posterToScroll: 4,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logoCenter.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 3,\n socialLinks: false,\n subtitleLines: 2,\n tabsInAltHeader: true,\n useScrollableDiv: false,\n useSeriesLogo: true,\n videoBackground: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n actionButtonsInHeader: true,\n actionButtonsInNav: false,\n addCarouselPlaceholders: false,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 3,\n carouselLimit: 2,\n descriptionLines: 5,\n posterLimit: 3,\n posterToScroll: 3,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logoCenter.raw',\n showTileMetadataOnHover: false,\n slidesToScroll: 2,\n socialLinks: false,\n subtitleLines: 1,\n tabsInAltHeader: true,\n useScrollableDiv: true,\n },\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Divider = ({ Style }) => <hr className={Style.dividerLine} />;\n\nDivider.propTypes = {\n Style: PropTypes.shape({}),\n};\n\nexport default React.memo(Divider);\n","/* eslint react/require-default-props: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport Carousel from 'components/Carousel';\nimport { homeCarouselVideoProcessor } from 'helpers/Processor/CarouselVideoProcessor';\nimport CarouselTheme from 'screens/Collection/Carousel.module.scss';\nimport CarouselTileTheme from 'screens/Collection/CarouselTile.module.scss';\nimport { FoxContentDensityBreakpoints } from 'screens/ContentDetail/ContentDetailHelper';\nimport Divider from 'components/Divider';\n\nconst LiveCarouselSection = ({\n accessToken,\n breakpoint,\n collectionCount,\n collectionVerticalPosition,\n dropdownHeadline,\n epgItems,\n favoritesManager,\n selectModalVideo,\n searchCompleted,\n setSearchCompleted,\n searchTerm,\n Style,\n renderImage,\n panel,\n panelCount,\n}) => {\n const {\n addCarouselPlaceholders,\n allowScrollLock,\n applyInlineBackground,\n carouselLimit,\n roundArrows,\n slidesToScroll,\n showCarouselArrows,\n showTileMetadataOnHover,\n subtitleLines,\n truncateSubtitle,\n useScrollableDiv,\n } = FoxContentDensityBreakpoints[breakpoint];\n const headline = dropdownHeadline;\n const items = epgItems || _.get(panel, 'items.member') || _.get(panel, 'member');\n\n if (!items) return null;\n\n const collectionType = _.get(panel, 'collectionType');\n const panelType = _.get(panel, 'panelType');\n\n const getAdditionalVideoProcessProps = item => {\n if (selectModalVideo) {\n return {\n overridePlayButtonClick: () => {\n selectModalVideo(item);\n },\n };\n }\n return {};\n };\n\n const liveCarouselProps = {\n accessToken,\n addCarouselPlaceholders,\n allowScrollLock,\n applyInlineBackground,\n breakpoint,\n collectionCount,\n collectionVerticalPosition,\n favoritesManager,\n headline,\n isHoverStateV2: true,\n usePlayButtonThin: true,\n items,\n panelCount,\n processor: item =>\n homeCarouselVideoProcessor({\n collectionType,\n isHoverStateV2: true,\n panelType,\n video: item,\n ...getAdditionalVideoProcessProps(item),\n }),\n renderImage,\n roundArrows,\n searchCompleted,\n setSearchCompleted,\n searchTerm,\n showCarouselArrows,\n showTileMetadataOnHover,\n slidesToScroll,\n slidesToShow: carouselLimit,\n subtitleLines,\n truncateSubtitle,\n theme: CarouselTheme,\n tileTheme: CarouselTileTheme,\n useScrollableDiv,\n };\n\n return (\n <>\n <Carousel {...liveCarouselProps} />\n <Divider Style={Style} />\n </>\n );\n};\n\nLiveCarouselSection.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string.isRequired,\n collectionCount: PropTypes.number,\n collectionVerticalPosition: PropTypes.number,\n Style: PropTypes.shape({}),\n disableScroll: PropTypes.func,\n dropdownHeadline: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.string]),\n epgItems: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n favoritesManager: PropTypes.shape({}),\n selectModalVideo: PropTypes.func,\n searchCompleted: PropTypes.bool,\n setSearchCompleted: PropTypes.func,\n searchTerm: PropTypes.string,\n isSeasons: PropTypes.bool,\n panel: PropTypes.shape({}).isRequired,\n panelCount: PropTypes.number,\n renderImage: PropTypes.func,\n};\n\nexport default React.memo(LiveCarouselSection);\n","import { useEffect, useState, useCallback } from 'react';\nimport _ from 'lodash';\nimport { isVideoLive } from 'screens/Live/LiveHelpers';\nimport { isUpcomingContent } from 'helpers/ContentHelper';\n\nconst useSearchResults = ({ panels, searchInput, setPanelCount }) => {\n const getPanels = useCallback(() => {\n const currentLivePanels = [];\n const currentUpcomingPanels = [];\n if (!_.isEmpty(panels)) {\n for (let i = 0; i < panels?.member?.length; i += 1) {\n for (let x = 0; x < panels?.member[i]?.items?.member?.length; x += 1) {\n const panelItem = panels?.member[i]?.items?.member[x];\n if (panelItem && searchInput) {\n if (\n panelItem?.headline?.toLowerCase().includes(searchInput.toLowerCase()) ||\n panelItem?.seriesName?.toLowerCase().includes(searchInput.toLowerCase())\n ) {\n if (isVideoLive(panelItem)) {\n currentLivePanels.push(panelItem);\n }\n if (!isVideoLive(panelItem) && isUpcomingContent(panelItem)) {\n currentUpcomingPanels.push(panelItem);\n }\n }\n }\n }\n }\n }\n\n return {\n livePanels: _.uniqBy(currentLivePanels, e => e['@id']),\n upcomingPanels: _.uniqBy(currentUpcomingPanels, e => e['@id']),\n };\n }, [panels, searchInput]);\n const [searchPanels, setPanels] = useState(() => getPanels());\n const { livePanels, upcomingPanels } = searchPanels;\n\n useEffect(() => {\n setPanels(getPanels);\n }, [getPanels, panels, searchInput]);\n\n useEffect(() => {\n const { livePanels, upcomingPanels } = searchPanels;\n setPanelCount(livePanels.length + upcomingPanels.length);\n }, [searchPanels, setPanelCount]);\n\n useEffect(() => () => setPanelCount(0), [setPanelCount]);\n\n const sortedLivePanels = livePanels?.sort((a, b) => {\n const formatA = new Date(a.startDate);\n const formatB = new Date(b.startDate);\n return formatA - formatB;\n });\n\n const sortedUpcomingPanels = upcomingPanels?.sort((a, b) => {\n const formatA = new Date(a.startDate);\n const formatB = new Date(b.startDate);\n return formatA - formatB;\n });\n console.log({ upcomingPanels });\n const shouldRender =\n panels &&\n searchInput?.length > 1 &&\n (sortedLivePanels.length > 0 || sortedUpcomingPanels.length > 0);\n return { sortedLivePanels, sortedUpcomingPanels, shouldRender };\n};\n\nexport default useSearchResults;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { Element } from 'react-scroll';\nimport LiveCarouselSection from 'screens/Live/components/LiveCarouselSection';\nimport { COLLECTION_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport Divider from 'components/Divider';\nimport useSearchResults from './hooks/useSearchResults';\nimport Style from './SearchResults.module.scss';\n\nconst { epg_backToScheduleButton } = window.Language;\n\nconst SearchResults = ({\n accessToken,\n breakpoint,\n favoritesManager,\n onClearSearch,\n panelCount,\n setPanelCount = () => {},\n searchCompleted,\n setSearchCompleted,\n searchInput,\n setCurrentVideo,\n}) => {\n const getNoResultText = searchInput => `D’oh! ${searchInput} isn’t live now. Try again?`;\n const { panels } = useSelector(state => state.live);\n\n const { sortedLivePanels, sortedUpcomingPanels, shouldRender } = useSearchResults({\n panels,\n searchInput,\n setPanelCount,\n });\n const imageRender = image =>\n renderImage({\n breakpoint,\n imageType: COLLECTION_THUMBNAIL_IMAGE,\n ...image,\n });\n\n const epgCarouselProps = {\n accessToken,\n panel: panels,\n renderImage: imageRender,\n breakpoint,\n favoritesManager,\n panelCount,\n searchCompleted,\n setSearchCompleted,\n searchTerm: searchInput,\n };\n\n if (shouldRender) {\n return (\n <Element name=\"searchResults\" className={Style.resultsContainer}>\n <Divider Style={Style} />\n {sortedLivePanels.length > 0 && (\n <LiveCarouselSection\n dropdownHeadline=\"Live Now\"\n epgItems={sortedLivePanels}\n Style={Style}\n {...epgCarouselProps}\n />\n )}\n\n {sortedUpcomingPanels.length > 0 && (\n <LiveCarouselSection\n dropdownHeadline=\"Upcoming\"\n epgItems={sortedUpcomingPanels}\n Style={Style}\n selectModalVideo={setCurrentVideo}\n {...epgCarouselProps}\n />\n )}\n </Element>\n );\n }\n return (\n <Element name=\"searchResults\">\n <div className={Style.resultsContainer}>\n <Divider Style={Style} />\n <div className={Style.noResultsContainer}>\n <span className={Style.noResultsText}>{getNoResultText(searchInput)}</span>\n <button className={Style.returnToScheduleBtn} onClick={onClearSearch}>\n {epg_backToScheduleButton}\n </button>\n </div>\n <Divider Style={Style} />\n </div>\n </Element>\n );\n};\n\nSearchResults.defaultProps = {\n panels: {},\n};\n\nSearchResults.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string,\n epgStyle: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n onClearSearch: PropTypes.func,\n panelCount: PropTypes.number,\n panels: PropTypes.shape({}),\n searchCompleted: PropTypes.bool,\n setSearchCompleted: PropTypes.func,\n searchInput: PropTypes.string,\n setCurrentVideo: PropTypes.func,\n setPanelCount: PropTypes.func,\n};\n\nexport default SearchResults;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Icon from 'components/Icon';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { TABLET_LANDSCAPE_BREAKPOINT } from 'helpers/BreakpointHelper';\nimport { isEpgSearchEnabled } from 'helpers/ConfigHelper';\nimport {\n isBefore,\n isBetween,\n midNightTonightTime,\n now,\n tonight7PMTime,\n tonight830PMTime,\n} from 'helpers/DateTimeHelper';\nimport { Events, handleAnalytics, setPagePropsStorage } from '@foxcorp/delta-web-analytics';\nimport { isDayAfter, isToday, isTomorrow } from '../../LiveHelpers';\n\nimport Style from './FilterSearchBar.module.scss';\n\nconst {\n epg_dayAfterFilterButton,\n epg_liveNowFilterButton,\n epg_tomorrowHeader,\n epg_tonightFilterButton,\n search_inputPlaceholder,\n} = window.Language;\n\nconst FilterSearchBar = ({\n atStartDate,\n atEndDate,\n onFieldChange,\n onClearSearch,\n gridNext,\n gridPrev,\n gridStart,\n gridTonight,\n gridTomorrow,\n gridDayAfter,\n searchInput,\n selectedDate,\n}) => {\n const [focusSearch, setFocusSearch] = useState(false);\n const [trackEventCalled, setTrackEventCalled] = useState(false);\n\n if (!isEpgSearchEnabled()) return null;\n\n const setFocus = (val, clear) => {\n if (!val && document.hasFocus()) {\n setTrackEventCalled(false);\n }\n if (val && !trackEventCalled) {\n handleAnalytics({\n callback: setPagePropsStorage,\n event: Events.SEARCH_STARTED,\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n setTrackEventCalled(true);\n }\n setFocusSearch(val);\n if (clear) {\n onClearSearch();\n }\n };\n\n const focusClass = focusSearch ? Style.focusSearch : null;\n const inputClass = searchInput?.length > 0 ? Style.inputTyped : null;\n const activeClass = Style.active;\n const disabledClass = Style.disabled;\n const currentBreakpoint = _.get(window, 'innerWidth');\n\n return (\n <div className={classNames(Style.filterInputContainer, focusClass)}>\n <div className={Style.btnWrap}>\n <div className={Style.filterContainer}>\n <button\n className={classNames(Style.filterButtons, atStartDate && activeClass)}\n onClick={() => gridStart()}\n >\n {epg_liveNowFilterButton}\n </button>\n {isToday(now()) && isBefore(new Date(now()).getTime(), tonight830PMTime(now())) ? (\n <button\n className={classNames(\n Style.filterButtons,\n isToday(selectedDate) &&\n isBetween(selectedDate, tonight7PMTime(selectedDate), midNightTonightTime) && [\n activeClass,\n disabledClass,\n ],\n )}\n onClick={() => gridTonight()}\n >\n {epg_tonightFilterButton}\n </button>\n ) : null}\n {isDayAfter(selectedDate) && atEndDate ? null : (\n <button\n className={classNames(Style.filterButtons, isTomorrow(selectedDate) && activeClass)}\n onClick={() => gridTomorrow()}\n >\n {epg_tomorrowHeader}\n </button>\n )}\n {isDayAfter(selectedDate) && atEndDate ? null : (\n <button\n className={classNames(Style.filterButtons, isDayAfter(selectedDate) && activeClass)}\n onClick={() => gridDayAfter()}\n >\n {epg_dayAfterFilterButton}\n </button>\n )}\n </div>\n <div className={Style.searchInputBox}>\n <button className={Style.searchIconButton} onClick={() => setFocus(true)}>\n <Icon className={Style.searchIcon} icon=\"search\" />\n </button>\n <>\n <input\n type=\"text\"\n id=\"searchEPG\"\n name=\"searchSchedule\"\n placeholder={search_inputPlaceholder}\n onChange={onFieldChange}\n onFocus={() => setFocus(true)}\n onBlur={() =>\n currentBreakpoint >= TABLET_LANDSCAPE_BREAKPOINT ? setFocus(false) : null\n }\n />\n <button\n className={classNames(Style.closeIconButton, inputClass)}\n onMouseDown={() => onClearSearch()}\n >\n <Icon icon=\"close\" />\n </button>\n </>\n </div>\n </div>\n <div className={Style.arrowContainer}>\n <span\n onClick={() => (!atStartDate ? gridPrev() : null)}\n className={classNames(Style.arrowIcon, atStartDate && disabledClass)}\n >\n <Icon\n color={atStartDate ? 'white25' : 'white50'}\n size=\"medium\"\n viewBox=\"0 2 23 32\"\n icon=\"ios-arrow-left\"\n />\n </span>\n <span\n onClick={() => (!atEndDate ? gridNext() : null)}\n className={classNames(Style.arrowIcon, atEndDate && disabledClass)}\n >\n <Icon\n color={atEndDate ? 'white25' : 'white50'}\n size=\"medium\"\n viewBox=\"0 2 15 32\"\n icon=\"ios-arrow-right\"\n />\n </span>\n </div>\n </div>\n );\n};\n\nFilterSearchBar.propTypes = {\n atStartDate: PropTypes.bool,\n atEndDate: PropTypes.bool,\n gridNext: PropTypes.func,\n gridPrev: PropTypes.func,\n gridStart: PropTypes.func,\n gridTonight: PropTypes.func,\n gridTomorrow: PropTypes.func,\n gridDayAfter: PropTypes.func,\n onClearSearch: PropTypes.func,\n onFieldChange: PropTypes.func,\n searchInput: PropTypes.string,\n selectedDate: PropTypes.instanceOf(Date),\n};\n\nexport default React.memo(FilterSearchBar);\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function () {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","/* eslint-disable import/no-unused-modules */\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\nimport _ from 'lodash';\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _.isEqual);\n\nconst selectLiveData = state => state.live;\n\nconst makeSelectLivePanelsData = createDeepEqualSelector(selectLiveData, live => live.panels);\n\nexport default makeSelectLivePanelsData; // Disabled eslint as this WIP\n","import { useEffect, useState, useCallback } from 'react';\nimport { getTsMinutes } from '../screens/Live/LiveHelpers';\nimport { format, FORMAT_TIME, now } from '../helpers/DateTimeHelper';\n\nexport default function useCurrentPositionAndTime({ ended, startingTs, totalMinutes }) {\n const [minutes, setMinutes] = useState(getTsMinutes());\n const [currentTime, setCurrentTime] = useState(format(now(), FORMAT_TIME));\n\n const getMinutesElapsed = useCallback(minutes => minutes - Math.floor(startingTs / 60), [\n startingTs,\n ]);\n const minutesElapsed = getMinutesElapsed(minutes);\n const currentPosition = Math.floor(100 * (minutesElapsed / totalMinutes));\n\n useEffect(() => {\n const interval = setInterval(() => {\n const newMinutes = getTsMinutes();\n const minutesElapsed = getMinutesElapsed(newMinutes);\n if (minutes !== newMinutes) {\n if (ended && minutesElapsed >= totalMinutes) {\n ended();\n }\n setMinutes(newMinutes);\n setCurrentTime(format(now(), FORMAT_TIME));\n }\n }, 1000);\n\n return () => clearInterval(interval);\n }, [getMinutesElapsed, totalMinutes, startingTs, ended, minutes, currentTime]);\n\n return {\n currentPosition,\n currentTime,\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport useCurrentPositionAndTime from 'hooks/useCurrentPositionAndTime';\n\nimport Style from './EPGCurrentTimer.module.scss';\n\nconst CurrentTimer = props => {\n const { ended, startingTs, totalMinutes } = props;\n const { currentPosition, currentTime } = useCurrentPositionAndTime({\n totalMinutes,\n startingTs,\n ended,\n });\n\n const leftStyle = { left: `${currentPosition}%` };\n\n return (\n <div className={Style.currentTimerContainer}>\n <div style={leftStyle} className={Style.currentTimerTime}>\n {currentTime}\n </div>\n <div style={leftStyle} className={Style.currentTimerArrow} />\n <div style={leftStyle} className={Style.currentTimer} />\n </div>\n );\n};\n\nCurrentTimer.propTypes = {\n ended: PropTypes.func,\n startingTs: PropTypes.number.isRequired,\n totalMinutes: PropTypes.number.isRequired,\n};\n\nexport default CurrentTimer;\n","import React from 'react';\nimport times from 'helpers/utils';\nimport Style from './EPGLoader.module.scss';\n\nconst renderGrid = i => (\n <div className={Style.gridRow} key={i}>\n <div className={Style.left} />\n <div className={Style.right} />\n </div>\n);\n\nconst EPGLoader = () => (\n <div className={Style.epgLoader}>\n <section className={Style.epgWrap}>{times(10, renderGrid)}</section>\n </div>\n);\n\nexport default EPGLoader;\n","/* eslint-disable react-hooks/exhaustive-deps */ // Needed to help reduce rerenders for epgItem\n/* eslint-disable jsx-a11y/no-static-element-interactions, react/no-array-index-key */\n\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n// import Badge from 'components/Badge'; // Need to know what styles to pass\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport { truncateText } from 'helpers/ContentHelper';\n\nimport { isMobileLandscape } from 'helpers/BreakpointHelper';\n\nimport {\n FORMAT_TIME,\n now,\n differenceInMinutes,\n differenceInSeconds,\n isBefore,\n isAfter,\n isSameSecond,\n format,\n stringToDate,\n getHours,\n getMinutes,\n isSameDay,\n msToDate,\n} from 'helpers/DateTimeHelper';\n\nimport {\n calculateTimeTil,\n calculateWidthByDuration,\n formatTimeLeft,\n getVideoData,\n getVideoTimeData,\n isGapFiller,\n isVideoLive,\n MINUTES_INTERVAL,\n} from 'screens/Live/LiveHelpers';\n\nimport useCurrentPositionAndTime from 'hooks/useCurrentPositionAndTime';\n\nimport Style from './EPGItem.module.scss';\n\nconst TYPE_CURRENT = 'current';\nconst TYPE_FUTURE = 'future';\nconst TYPE_DUMMY = 'dummy';\nconst TYPE_OVERLAP = 'overlap';\n\nconst EPGItem = props => {\n const {\n breakpoint,\n ended,\n endingDate,\n isOverFlow,\n lateProgramIdx,\n overFlowProgramIdx,\n selectedDate,\n selectedVideoData,\n startingTs,\n totalMinutes,\n } = props;\n const { currentPosition } = useCurrentPositionAndTime({\n totalMinutes,\n startingTs,\n ended,\n });\n const [startingDate] = useState(now());\n const [renderedItems, setRenderItem] = useState(null);\n const mobileGridHours = 72;\n const GridHours = 8;\n\n useEffect(() => {\n const calculateBlockWidth = (type, videoTimeData, previousTimeData) => {\n const gridStarts = msToDate(startingTs * 1000);\n let timeLeft;\n let width;\n\n const { duration, startDate, endDate } = videoTimeData;\n const starts = stringToDate(startDate);\n const ends = stringToDate(endDate);\n const runsOver = isAfter(ends, endingDate);\n\n let prevEnd = '';\n if (previousTimeData) {\n const { endDate: prevEndDate } = previousTimeData;\n prevEnd = stringToDate(prevEndDate);\n }\n\n switch (type) {\n case TYPE_FUTURE:\n width = calculateWidthByDuration(\n runsOver ? differenceInMinutes(endingDate, startDate) : duration,\n );\n break;\n case TYPE_CURRENT:\n timeLeft = differenceInMinutes(runsOver ? endingDate : ends, gridStarts);\n width = calculateWidthByDuration(timeLeft);\n break;\n case TYPE_DUMMY:\n timeLeft = differenceInMinutes(starts, gridStarts);\n width = calculateWidthByDuration(timeLeft);\n break;\n case TYPE_OVERLAP:\n width = calculateWidthByDuration(\n runsOver\n ? differenceInMinutes(endingDate, startDate)\n : differenceInMinutes(ends, prevEnd),\n );\n break;\n default:\n width = 0;\n break;\n }\n\n return width;\n };\n\n const addDummyBlocks = () => {\n const { item, selectedDate, breakpointIsMobile } = props;\n const gridTotalHours = breakpointIsMobile ? mobileGridHours : GridHours;\n const canScrollGrid = true;\n const member = _.get(item, 'items.member', []);\n\n const blocks = [];\n let currentShown = false;\n member.map((vid, idx) => {\n let video = vid;\n\n // This corrects start dates for overflow channels\n if (!isOverFlow && overFlowProgramIdx !== -1 && idx > lateProgramIdx) {\n const lateProgramEndDateString = member[lateProgramIdx]?.endDate;\n const videoStartDate = stringToDate(video.startDate);\n const videoEndDate = stringToDate(video.endDate);\n const lateProgramEndDate = stringToDate(lateProgramEndDateString);\n\n const isBeforeLateProgram = isBefore(videoStartDate, lateProgramEndDate);\n const isAfterLateProgram = isAfter(videoEndDate, lateProgramEndDate);\n\n if (!isAfterLateProgram) return null;\n if (isBeforeLateProgram) {\n video = _.cloneDeep(video);\n video.startDate = lateProgramEndDateString;\n }\n }\n const videoTimeData = getVideoTimeData({\n video,\n current: selectedDate,\n gridTotalHours: isMobileLandscape() ? mobileGridHours : gridTotalHours,\n canScrollGrid,\n });\n const { description, id, title, seasonAndEpisode, subtitle, badge } = getVideoData(\n video,\n true,\n );\n const {\n endDate,\n ends,\n isCurrent,\n shouldBeVisible,\n startDate,\n starts,\n startsInFuture,\n startsWithGrid,\n withinSameDay,\n } = videoTimeData;\n const videoIsGapFiller = isGapFiller(video);\n let width = null;\n if (!isCurrent && !startsInFuture) {\n return null;\n }\n // if starts in future, calculate the width using duration\n if (startsInFuture && !isCurrent) {\n width = calculateBlockWidth(TYPE_FUTURE, videoTimeData);\n // if its current, calculate the timeLeft until it ends.\n } else if (isCurrent) {\n width = calculateBlockWidth(TYPE_CURRENT, videoTimeData);\n currentShown = true;\n }\n\n // add the dummy block if is there a gap\n if (startsInFuture && !currentShown) {\n const ends = format(stringToDate(video.startDate), FORMAT_TIME);\n blocks.push({\n badge,\n description: '',\n endDate,\n ends,\n id: `dummy-${id}`,\n isDummy: true,\n itemClass: classNames(Style.epgItem, Style.current),\n seasonAndEpisode: '',\n shouldBeVisible: true,\n startDate,\n starts: '',\n subtitle: '',\n title: '',\n video,\n width: calculateBlockWidth(TYPE_DUMMY, videoTimeData),\n });\n currentShown = true;\n }\n if (shouldBeVisible || withinSameDay) {\n const previousBlock = blocks.length !== 0 ? blocks.slice(-1)[0] : {};\n const { startDate: prevStartDate, endDate: prevEndDate } = previousBlock;\n const cellAfterPrev =\n isAfter(startDate, prevStartDate) || isSameSecond(prevStartDate, startDate);\n const cellStartsBeforePrevEnds =\n isBefore(prevEndDate, startDate) || isSameSecond(prevEndDate, startDate);\n const cellEndsAfterPrevEnds = isAfter(endDate, prevEndDate);\n const cellEndsAtGridEnd =\n isAfter(endDate, endingDate) || isSameSecond(endDate, endingDate);\n if (cellAfterPrev && !cellStartsBeforePrevEnds && !isCurrent) {\n // means next cell is contained within previous cell if next cell is not longer than previous do nothing\n if (cellEndsAfterPrevEnds) {\n const { video: prevVideo } = previousBlock;\n const previousTimeData = getVideoTimeData({\n video: prevVideo,\n current: selectedDate,\n gridTotalHours: isMobileLandscape() ? mobileGridHours : gridTotalHours,\n canScrollGrid,\n });\n // this means a sliver of the newest must be shown because that cell ends after previous\n if (!cellEndsAtGridEnd) {\n blocks.push({\n badge,\n description,\n endDate,\n ends,\n id,\n isCurrent,\n isDummy: videoIsGapFiller,\n seasonAndEpisode,\n shouldBeVisible,\n startDate,\n starts,\n startsWithGrid,\n subtitle,\n title,\n video,\n width: calculateBlockWidth(TYPE_OVERLAP, videoTimeData, previousTimeData),\n });\n }\n }\n } else {\n blocks.push({\n badge,\n description,\n endDate,\n ends,\n id,\n isCurrent,\n isDummy: videoIsGapFiller,\n seasonAndEpisode,\n shouldBeVisible,\n startDate,\n starts,\n startsWithGrid,\n subtitle,\n title,\n video,\n width,\n });\n }\n }\n return null;\n });\n\n if (blocks.length === 0) {\n const selectedTime = selectedDate;\n if (selectedTime.getMinutes() < 30) {\n selectedTime.setMinutes(0);\n } else if (selectedTime.getMinutes() > 30) {\n selectedTime.setMinutes(30);\n }\n blocks.push({\n badge: null,\n description: '',\n ends: '',\n id: 'dummy-1',\n isDummy: true,\n itemClass: classNames(Style.epgItem, Style.current),\n seasonAndEpisode: '',\n shouldBeVisible: true,\n startDate: '',\n starts: '',\n subtitle: '',\n title: '',\n width: calculateWidthByDuration(differenceInMinutes(endingDate, selectedTime)),\n });\n } else {\n // add a dummy at the end of a row\n const { endDate: lastBlockEndDate } = blocks.slice(-1)[0] || {};\n const isBeforeLast = isBefore(lastBlockEndDate, endingDate);\n if (isBeforeLast) {\n blocks.push({\n badge: null,\n description: '',\n ends: '',\n id: 'dummy-end',\n isDummy: true,\n itemClass: classNames(Style.epgItem, Style.current),\n seasonAndEpisode: '',\n shouldBeVisible: true,\n startDate: '',\n starts: '',\n subtitle: '',\n title: '',\n width: calculateWidthByDuration(differenceInMinutes(endingDate, lastBlockEndDate)),\n });\n }\n }\n // Adding 6 hours to finish EPG for Tablet and Greater\n if (!breakpointIsMobile) {\n blocks.push({\n badge: null,\n description: '',\n ends: '',\n id: 'dummy-1',\n isDummy: true,\n itemClass: classNames(Style.epgItem, Style.current),\n seasonAndEpisode: '',\n shouldBeVisible: true,\n startDate: '',\n starts: '',\n subtitle: '',\n title: '',\n width: calculateWidthByDuration(360),\n });\n }\n return blocks;\n };\n\n const checkAtStarting = date => {\n const startingHours = getHours(startingDate);\n const startingMinutes = getMinutes(startingDate);\n const startingTime = startingHours * 60 + Math.floor(startingMinutes / MINUTES_INTERVAL);\n\n const dateHours = getHours(date);\n const dateMinutes = getMinutes(startingDate);\n const time = dateHours * 60 + Math.floor(dateMinutes / MINUTES_INTERVAL);\n\n return isSameDay(startingDate, date) && startingTime >= time;\n };\n\n const renderItems = () => {\n const atStartDate = checkAtStarting(selectedDate);\n const blocks = addDummyBlocks();\n\n if (!blocks) return null;\n\n return blocks.map((block, idx) => {\n const {\n description,\n endDate,\n id,\n isDummy,\n seasonAndEpisode,\n startDate,\n starts,\n title,\n video,\n width,\n } = block;\n\n const isLive = isVideoLive(video);\n\n let itemClass =\n selectedVideoData && selectedVideoData['@id'] === id\n ? classNames(Style.epgItem, Style.current)\n : Style.epgItem;\n\n itemClass = isDummy ? classNames(itemClass, Style.dummy) : itemClass;\n\n const itemStyle = {\n left: `${currentPosition}%`,\n width: `${width}px`,\n };\n\n const progressStyle = {\n background: `-webkit-gradient(linear, left top, right top, color-stop(${currentPosition}%, rgba(255, 255, 255, 0.1)), color-stop(${currentPosition}%, transparent))`,\n };\n const currentTime = new Date();\n\n let timeLeft = '';\n let timeTil = '';\n if (isLive) {\n const dateEnd = stringToDate(endDate);\n const runsOver = isAfter(dateEnd, endingDate);\n const secondsLeft = differenceInSeconds(runsOver ? endingDate : dateEnd, currentTime);\n timeLeft = formatTimeLeft(secondsLeft);\n } else {\n timeTil = calculateTimeTil(currentTime, startDate, starts);\n }\n\n let chars;\n switch (width) {\n case 252:\n chars = 30;\n break;\n case 514:\n chars = 60;\n break;\n default:\n chars = 120;\n break;\n }\n const trancatedTitle = truncateText(title, chars);\n\n const subtitleSeason = seasonAndEpisode && <span>{seasonAndEpisode} ·</span>;\n\n return (\n <div key={idx} className={itemClass} style={itemStyle} data-test=\"scheduleitem-item\">\n <div style={progressStyle} className={atStartDate ? Style.progress : null} />\n <div className={Style.timeContainer}>\n <span className={Style.timeMeta}>{isLive ? timeLeft : starts}</span>\n <span className={Style.timeMetaHovered}>\n {isLive ? `started at ${starts}` : timeTil}\n </span>\n </div>\n <div className={Style.titleContainer}>\n <span className={Style.title}>\n <span className={Style.titleText}>\n {trancatedTitle} {seasonAndEpisode && ` - ${seasonAndEpisode}`}\n </span>\n </span>\n </div>\n <div className={Style.subtitleContainer}>\n <span className={Style.subtitle}>\n {subtitleSeason} {description}\n </span>\n </div>\n </div>\n );\n });\n };\n setRenderItem(renderItems());\n }, [selectedDate, endingDate, breakpoint, currentPosition]);\n return (\n <div className={Style.scheduleMain}>\n <div className={Style.container}>{renderedItems}</div>\n </div>\n );\n};\n\nEPGItem.defaultProps = {\n account: {},\n favoritesManager: null,\n location: {},\n router: {},\n selectedDate: {},\n selectedVideoData: null,\n};\n\nEPGItem.propTypes = {\n account: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n ended: PropTypes.func,\n endingDate: PropTypes.instanceOf(Date),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})),\n setFavorites: PropTypes.func,\n deleteFavorites: PropTypes.func,\n }),\n item: PropTypes.shape({\n autoPlayStill: PropTypes.shape({}),\n autoPlayVideo: PropTypes.shape({}),\n cacheSetting: PropTypes.string,\n callSign: PropTypes.string,\n dateModified: PropTypes.string,\n headline: PropTypes.string,\n hideIfLoggedIn: PropTypes.bool,\n hideIfNotLoggedIn: PropTypes.bool,\n id: PropTypes.string,\n imageTypes: PropTypes.arrayOf(PropTypes.string),\n images: PropTypes.shape({}),\n items: PropTypes.shape({}),\n itemsPerPage: PropTypes.number,\n name: PropTypes.string,\n panelType: PropTypes.string,\n validFor: PropTypes.number,\n }).isRequired,\n isOverFlow: PropTypes.bool.isRequired,\n lateProgramIdx: PropTypes.number.isRequired,\n location: PropTypes.shape({}),\n overFlowProgramIdx: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n router: PropTypes.shape({\n push: PropTypes.func,\n }),\n selectedDate: PropTypes.shape({}),\n selectedVideoData: PropTypes.shape({}),\n startingTs: PropTypes.number.isRequired,\n totalMinutes: PropTypes.number.isRequired,\n};\n\nexport default React.memo(EPGItem);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Image = ({ source, sourceUrl, altText, className, style }) => {\n const imgSourceUrl = sourceUrl || source;\n return <img className={className} src={imgSourceUrl} alt={altText} style={style} />;\n};\n\nImage.propTypes = {\n source: PropTypes.string,\n sourceUrl: PropTypes.string,\n altText: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.shape({}),\n};\n\nImage.defaultProps = {\n source: null,\n sourceUrl: null,\n altText: null,\n className: null,\n style: {},\n};\n\nexport default Image;\n","import Image from './Image';\n\nexport default Image;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Image from 'components/Image';\nimport { getLiveProgress } from 'helpers/Live';\nimport { EPG_LIVE_IMAGE, getDynamicImage, FOX_FALLBACK_IMAGE } from 'helpers/ImageHelper';\nimport { SITE_PLATFORM_WEB } from 'helpers/BreakpointHelper';\nimport Style from './LiveImage.module.scss';\n\nconst isOver24HoursAway = endDate => {\n const hours24ms = 24 * 1000 * 60 * 60;\n const currentTime24HoursFromNow = Date.now() + hours24ms;\n return currentTime24HoursFromNow < new Date(endDate);\n};\n\nconst LiveImage = ({\n breakpoint = SITE_PLATFORM_WEB,\n image,\n startDate,\n endDate,\n shouldRender,\n showProgress = true,\n}) => {\n const LIVE_PROGRESS_DELAY_MS = 30000;\n const [liveProgress, setLiveProgress] = useState(0);\n const [imageUrl, setImageUrl] = useState(FOX_FALLBACK_IMAGE);\n\n useEffect(() => {\n if (isOver24HoursAway(endDate)) {\n setLiveProgress(33);\n } else {\n setLiveProgress(getLiveProgress({ startDate, endDate }));\n }\n const timer = setInterval(() => {\n if (!isOver24HoursAway(endDate)) {\n setLiveProgress(getLiveProgress({ startDate, endDate }));\n }\n }, LIVE_PROGRESS_DELAY_MS);\n return () => clearInterval(timer);\n }, [startDate, endDate]);\n\n useEffect(() => {\n setImageUrl(getDynamicImage({ breakpoint, context: EPG_LIVE_IMAGE, url: image }));\n }, [image, breakpoint]);\n if (!shouldRender) return null;\n return (\n <div className={Style.imageContainer}>\n <Image source={imageUrl || FOX_FALLBACK_IMAGE} className={Style.image} />\n {showProgress && (\n <div className={Style.progressBar}>\n <div className={Style.progress} style={{ width: `${liveProgress}%` }} />\n </div>\n )}\n </div>\n );\n};\n\nLiveImage.propTypes = {\n breakpoint: PropTypes.string,\n image: PropTypes.string,\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n shouldRender: PropTypes.bool,\n showProgress: PropTypes.bool,\n};\n\nexport default React.memo(LiveImage);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\n\nimport EPGItem from 'screens/Live/components/EPGItem';\nimport CallSign from 'components/CallSign';\nimport * as Logos from 'components/CallSign/images';\nimport { sportsFeatures, isSportsContent } from 'helpers/ContentHelper';\nimport {\n MINUTES_INTERVAL,\n PANEL_TYPE_LISTING,\n displayPrimeTimeMessage,\n checkForOverlap,\n isVideoLive,\n getLocalNetworkUrl,\n} from 'screens/Live/LiveHelpers';\nimport { now, stringToDate, isAfter } from 'helpers/DateTimeHelper';\nimport { Element } from 'react-scroll';\nimport LiveImage from './components/LiveImage';\nimport Style from './EPGRow.module.scss';\n\nconst EPGRow = ({\n account,\n atStartDate,\n breakpoint,\n breakpointIsMobile,\n defaultProgram,\n endingDate,\n epgGridPage,\n favoritesManager,\n globalVideo,\n gridStart,\n isAuthenticated,\n location,\n overlay,\n preauthorizedResources,\n row,\n rowIdx,\n saveLiveRestart,\n selectedChannel,\n selectedDate,\n selectedVideoData,\n setCurrentVideo,\n setOverlay,\n startingTs,\n}) => {\n const { panelType } = row || {};\n const items = row?.items?.member;\n if (_.isEmpty(items)) return null;\n const firstItem = row?.rows?.member?.[0];\n const currentItem = row?.items?.member?.find(video => isVideoLive(video));\n const { startDate, endDate } = currentItem || {};\n const currentImage = currentItem?.images?.seriesList?.raw;\n\n const hasSports = firstItem && isSportsContent(firstItem);\n\n if (panelType !== PANEL_TYPE_LISTING || (!sportsFeatures() && hasSports)) return null;\n\n const { callSign } = row;\n const network = row?.items?.member?.[0]?.network ?? null;\n\n const { lateProgramIdx, overFlowProgramIdx, overFlowPrograms, liveListing } = checkForOverlap(\n row,\n );\n\n let scheduleRowClassName = Style.scheduleRow;\n\n scheduleRowClassName =\n (!selectedChannel && rowIdx === 0) || rowIdx === selectedChannel\n ? classNames(scheduleRowClassName, Style.scheduleRowSelected)\n : scheduleRowClassName;\n\n const epgItemProps = {\n setOverlay,\n overlay,\n network,\n account,\n startingTs,\n callSign,\n selectedDate,\n displayPrimeTimeMessage,\n epgGridPage,\n endingDate,\n gridStart,\n preauthorizedResources,\n isAuthenticated,\n breakpoint,\n saveLiveRestart,\n breakpointIsMobile,\n lateProgramIdx,\n overFlowProgramIdx,\n selectedVideoData,\n favoritesManager,\n location,\n setCurrentVideo,\n };\n\n const programs = overFlowPrograms || [];\n const overflowRows = [];\n let overflowCount = 0;\n\n const scheduleLeftClasses = !atStartDate\n ? classNames(Style.scheduleLeft, Style.scheduleLeftNotFirst)\n : Style.scheduleLeft;\n\n if (sportsFeatures()) {\n let overFlowScheduleRowClassName = null;\n let overFlowRowIdx = 0;\n programs.forEach(overFlowProgram => {\n overFlowRowIdx += 1;\n epgItemProps.overFlowProgramIdx = overFlowRowIdx;\n const overFlowItem = _.cloneDeep(row);\n const endDateIsAfter = isAfter(stringToDate(overFlowProgram.endDate), selectedDate);\n const isCurrentLiveListingOver = liveListing && isAfter(now(), liveListing?.endDate);\n\n if (endDateIsAfter) {\n overFlowItem.items.member = [_.cloneDeep(overFlowProgram)];\n\n overFlowScheduleRowClassName = Style.scheduleRow;\n\n if (\n defaultProgram === overFlowProgram.id ||\n (selectedVideoData && overFlowProgram.id === selectedVideoData.id)\n ) {\n overFlowScheduleRowClassName = classNames(\n overFlowScheduleRowClassName,\n Style.scheduleRowSelected,\n );\n }\n const { endDate, startDate } = overFlowProgram || {};\n const overflowImage = overFlowProgram?.images?.seriesList?.raw;\n\n overflowRows.push(\n <div\n key={`schedulerow-${rowIdx}-${overFlowRowIdx}`}\n className={overFlowScheduleRowClassName}\n >\n <div className={Style.scheduleLeftContainer}>\n <Link className={scheduleLeftClasses} onlyActiveOnIndex>\n <CallSign\n callSign={isCurrentLiveListingOver && overflowCount === 0 ? callSign : 'FEED'}\n color=\"white\"\n style={Style}\n />\n </Link>\n <div className={Style.liveIndicator} />\n </div>\n <LiveImage\n image={overflowImage}\n shouldRender={atStartDate}\n startDate={startDate}\n endDate={endDate}\n isOverflow\n />\n <Element className={Style.scheduleItemWrapper} name={`${rowIdx}-${overFlowRowIdx}`}>\n <EPGItem\n {...epgItemProps}\n globalVideo={globalVideo}\n isOverFlow\n item={overFlowItem}\n name=\"overflow\"\n overFlowProgramIdx={`${rowIdx}-${overFlowRowIdx}`}\n rowIdx={`${rowIdx}-${overFlowRowIdx}`}\n startingTs={startingTs}\n totalMinutes={MINUTES_INTERVAL}\n />\n </Element>\n </div>,\n );\n overflowCount += 1;\n }\n });\n }\n\n const renderCallSign = (callSign, network) => {\n if (!callSign) return null;\n const channelName = Logos[callSign.replace('-', '')] || null;\n const affiliateLogo = getLocalNetworkUrl(network, callSign);\n\n const networkLogoUrl = channelName ? null : affiliateLogo;\n\n const defaultSize = 60;\n return !networkLogoUrl ? (\n <CallSign callSign={callSign} color=\"white\" style={Style} />\n ) : (\n <img src={`${networkLogoUrl}?resize=*:${defaultSize}px`} alt={callSign} />\n );\n };\n\n return (\n <>\n <div key={`schedulerow-${rowIdx}`}>\n <div className={scheduleRowClassName}>\n <div className={Style.scheduleLeftContainer}>\n <Link className={scheduleLeftClasses} onlyActiveOnIndex>\n {renderCallSign(callSign, network)}\n </Link>\n <div className={Style.liveIndicator} />\n </div>\n <LiveImage\n image={currentImage}\n shouldRender={atStartDate}\n startDate={startDate}\n endDate={endDate}\n />\n <Element className={Style.scheduleItemWrapper} name={`${rowIdx}`}>\n <EPGItem\n {...epgItemProps}\n globalVideo={globalVideo}\n isOverFlow={false}\n item={row}\n rowIdx={rowIdx}\n startingTs={startingTs}\n totalMinutes={MINUTES_INTERVAL}\n />\n </Element>\n </div>\n </div>\n {overflowRows}\n </>\n );\n};\n\nEPGRow.propTypes = {\n account: PropTypes.shape({}),\n atStartDate: PropTypes.bool,\n breakpoint: PropTypes.string,\n breakpointIsMobile: PropTypes.bool,\n defaultProgram: PropTypes.string,\n epgGridPage: PropTypes.number,\n endingDate: PropTypes.instanceOf(Date),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})),\n setFavorites: PropTypes.func,\n deleteFavorites: PropTypes.func,\n }),\n globalVideo: PropTypes.func,\n gridStart: PropTypes.func,\n isAuthenticated: PropTypes.bool,\n isStatic: PropTypes.bool,\n location: PropTypes.shape({}),\n overlay: PropTypes.string,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n row: PropTypes.shape({}),\n rowIdx: PropTypes.number,\n saveLiveRestart: PropTypes.func,\n selectedChannel: PropTypes.number,\n selectedDate: PropTypes.shape({}),\n selectedVideoData: PropTypes.shape({}),\n setOverlay: PropTypes.func,\n setSelectedDate: PropTypes.func,\n startingTs: PropTypes.number,\n setCurrentVideo: PropTypes.func,\n};\n\nexport default EPGRow;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport {\n addDays,\n differenceInMinutes,\n endOfDay,\n getMonthAndDay,\n isAfter,\n now,\n startOfDay,\n} from 'helpers/DateTimeHelper';\n\nimport useCurrentPositionAndTime from 'hooks/useCurrentPositionAndTime';\n\nimport {\n getEPGHourInterval,\n getLiveDateRange,\n isDayAfter,\n isToday,\n isTomorrow,\n MINUTES_INTERVAL,\n} from '../../LiveHelpers';\n\nimport Style from './EPGTimeline.module.scss';\n\nconst EPGTimeline = props => {\n const {\n accessToken,\n breakpoint,\n coordinates,\n checkAtStarting,\n deviceId,\n endingDate,\n ended,\n fetchLiveAction,\n startingTs,\n totalMinutes,\n selectedDate,\n } = props;\n const dateIsInFuture = isAfter(endOfDay(now()));\n const newDate = dateIsInFuture ? startOfDay(selectedDate) : selectedDate;\n const atStartDate = checkAtStarting(selectedDate);\n const timeLeft = differenceInMinutes(endingDate, now());\n const hourIntervals = getEPGHourInterval(newDate, MINUTES_INTERVAL, Math.ceil(timeLeft / 30));\n const timelineClass = atStartDate ? Style.timelineMainStarting : Style.timelineMain;\n\n const { currentTime } = useCurrentPositionAndTime({\n totalMinutes,\n startingTs,\n ended,\n });\n\n const [scrollDate, setScrollDate] = useState(getMonthAndDay(now()));\n const [dateToday, setDateToday] = useState(getMonthAndDay(now()));\n const [dateTomorrow, setDateTomorrow] = useState(getMonthAndDay(addDays(now(), 1)));\n const [dateDayAfter, setDateDayAfter] = useState(getMonthAndDay(addDays(now(), 2)));\n\n useEffect(() => {\n if (currentTime === '12:00 AM') {\n setScrollDate(getMonthAndDay(now()));\n setDateToday(getMonthAndDay(now()));\n setDateTomorrow(getMonthAndDay(addDays(now(), 1)));\n setDateDayAfter(getMonthAndDay(addDays(now(), 2)));\n }\n }, [currentTime]);\n\n useEffect(() => {\n const times = document.querySelectorAll('.times');\n\n const observedTimes = [];\n\n const dateRange = getLiveDateRange(selectedDate);\n\n times.forEach(time => {\n if (time.innerHTML === '12:00am' || time.innerHTML === '11:00pm') {\n time.classList.add('observedTimes');\n observedTimes.push(time);\n }\n });\n\n const handleIntersection = entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting && isToday(entry.target.attributes[1].value)) {\n setScrollDate(dateToday);\n }\n if (entry.isIntersecting && isTomorrow(entry.target.attributes[1].value)) {\n setScrollDate(dateTomorrow);\n fetchLiveAction({ accessToken, dateRange, coordinates, deviceId });\n }\n if (entry.isIntersecting && isDayAfter(entry.target.attributes[1].value)) {\n setScrollDate(dateDayAfter);\n fetchLiveAction({ accessToken, dateRange, coordinates, deviceId });\n }\n });\n };\n\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: 1,\n };\n\n const observer = new IntersectionObserver(handleIntersection, options);\n\n observedTimes.forEach(time => {\n if (window.innerWidth < 768) {\n observer.observe(time);\n } else observer.unobserve(time);\n });\n\n return () => {\n observer.disconnect();\n };\n }, [breakpoint, dateToday, dateTomorrow, dateDayAfter]);\n\n const intervalElement = hourIntervals.map((obj, idx) => (\n <div\n className={classNames(Style.time, 'times')}\n key={`timeline-${obj.dateTimeString}`}\n data-date={obj.current}\n >\n {obj.timeString}\n </div>\n ));\n\n return (\n <div className={Style.timelineWrap}>\n <div className={classNames(Style.scrollDate, 'date')}>{scrollDate}</div>\n <div id=\"timeline-main\" className={timelineClass}>\n {intervalElement}\n </div>\n </div>\n );\n};\n\nEPGTimeline.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string,\n checkAtStarting: PropTypes.func,\n coordinates: PropTypes.shape({}),\n deviceId: PropTypes.string,\n ended: PropTypes.func,\n endingDate: PropTypes.instanceOf(Date),\n fetchLiveAction: PropTypes.func,\n startingTs: PropTypes.number.isRequired,\n selectedDate: PropTypes.instanceOf(Date),\n totalMinutes: PropTypes.number.isRequired,\n};\n\nexport default EPGTimeline;\n","/* eslint-disable jsx-a11y/no-static-element-interactions, react/no-array-index-key */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport { scroller } from 'react-scroll';\n\nimport {\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n isMobileLandscape,\n} from 'helpers/BreakpointHelper';\n\nimport makeSelectLivePanelsData from 'screens/Live/selectors';\nimport { MINUTES_INTERVAL, getStartingTs, isReturningVistor } from 'screens/Live/LiveHelpers';\nimport { now, stringToDate, isSameDay } from 'helpers/DateTimeHelper';\n\nimport EPGCurrentTimer from 'screens/Live/components/EPGCurrentTimer';\nimport EPGLoader from '../EPGLoader';\nimport EPGRow from '../EPGRow';\nimport EPGTimeline from '../EPGTimeline';\n\nimport Style from './EPGGrid.module.scss';\n\nclass EPGGrid extends Component {\n constructor(props) {\n super(props);\n this.currentTimerEnded = this.currentTimerEnded.bind(this);\n this.getSelectedDate = this.getSelectedDate.bind(this);\n }\n\n componentDidMount() {\n const { changeDate, setSelectedDate } = this.props;\n const selectedDate = this.getSelectedDate();\n const breakpointIsMobile = this.isMobile();\n\n changeDate(selectedDate);\n\n if (breakpointIsMobile) {\n setSelectedDate(now());\n }\n\n this.scrollToPreviousGridElement();\n const element = document.getElementById('live-page-overflow');\n element.addEventListener('scroll', this.syncScroll, { passive: true });\n window.addEventListener('resize', this.syncScroll, { passive: true });\n }\n\n componentDidUpdate(prevProps) {\n const { breakpoint: prevBreakpoint } = prevProps;\n const { breakpoint, setStartingTs } = this.props;\n if (prevBreakpoint !== breakpoint) setStartingTs(getStartingTs());\n }\n\n componentWillUnmount() {\n const element = document.getElementById('live-page-overflow');\n element.removeEventListener('scroll', this.syncScroll);\n window.removeEventListener('resize', this.syncScroll);\n }\n\n syncScroll = () => {\n const stickyHeight = document.querySelector('.stickyContainer').clientHeight;\n const panelContainer = document.querySelector('#panelContainer');\n const timeline = document.querySelector('.stickyTimeline');\n\n if (timeline) {\n const topStyle = this.isWeb() ? 90 : 55;\n timeline.style.top = `${stickyHeight + topStyle}px`;\n }\n\n if (window.innerWidth < 768) {\n if (panelContainer) panelContainer.style.overflowX = 'scroll';\n if (timeline) {\n timeline.style.overflowX = 'scroll';\n timeline.scrollLeft = panelContainer.scrollLeft;\n timeline.scrollTop = panelContainer.scrollTop;\n }\n } else {\n if (panelContainer) panelContainer.style.overflowX = 'visible';\n if (timeline) {\n timeline.style.overflowX = 'visible';\n }\n }\n };\n\n getSelectedDate() {\n const { selectedDate } = this.props;\n return selectedDate === null ? now() : stringToDate(selectedDate);\n }\n\n checkSameDay(date) {\n const selectedDate = this.getSelectedDate();\n return isSameDay(selectedDate, date);\n }\n\n currentTimerEnded() {\n const { setStartingTs, setStartingDate, setEpgGridPage, changeDate } = this.props;\n changeDate();\n setStartingTs(getStartingTs());\n setEpgGridPage(1);\n setStartingDate(now());\n }\n\n isWeb() {\n const { breakpoint } = this.props;\n return breakpoint === SITE_PLATFORM_WEB || breakpoint === SITE_PLATFORM_WEB_LARGE;\n }\n\n isMobile() {\n const { breakpoint } = this.props;\n return breakpoint === SITE_PLATFORM_MOBILE || isMobileLandscape();\n }\n\n scrollToPreviousGridElement() {\n const { prevRowIdx, location } = this.props;\n if (prevRowIdx && isReturningVistor(location)) {\n scroller.scrollTo(`${prevRowIdx}`, { duration: 300, offset: 0, smooth: true });\n }\n }\n\n renderPanels() {\n const { endingDate } = this.props;\n const {\n account,\n breakpoint,\n checkAtStarting,\n defaultProgram,\n epgGridPage,\n favoritesManager,\n globalVideo,\n gridStart,\n isAuthenticated,\n isStatic,\n location,\n overlay,\n panels,\n preauthorizedResources,\n saveLiveRestart,\n selectedChannel,\n selectedVideoData,\n setCurrentVideo,\n setOverlay,\n setSelectedDate,\n startingTs,\n } = this.props;\n\n const selectedDate = this.getSelectedDate();\n const breakpointIsMobile = window.innerWidth < 768;\n\n if (!panels || !panels.member || panels.length === 0) return null;\n return panels.member.map((item, rowIdx) => {\n const { callSign, id } = item;\n const EPGRowProps = {\n account,\n atStartDate: checkAtStarting(selectedDate),\n breakpoint,\n breakpointIsMobile,\n defaultProgram,\n endingDate,\n epgGridPage,\n favoritesManager,\n globalVideo,\n gridStart,\n isAuthenticated,\n isStatic,\n key: `${callSign}-${id}`,\n location,\n overlay,\n preauthorizedResources,\n row: item,\n rowIdx,\n saveLiveRestart,\n selectedChannel,\n selectedDate,\n selectedVideoData,\n setCurrentVideo,\n setOverlay,\n setSelectedDate,\n startingTs,\n };\n return <EPGRow {...EPGRowProps} />;\n });\n }\n\n render() {\n const {\n accessToken,\n breakpoint,\n checkAtStarting,\n coordinates,\n deviceId,\n endingDate,\n fetchLiveAction,\n panels,\n setSelectedDate,\n startingTs,\n setStartingTs,\n } = this.props;\n const breakpointIsMobile = this.isMobile();\n const selectedDate = this.getSelectedDate();\n const atStartDate = checkAtStarting ? checkAtStarting(selectedDate) : null;\n\n if (!panels) return <EPGLoader />;\n\n if (breakpointIsMobile) {\n setSelectedDate(now());\n }\n\n return (\n <section\n ref={ref => {\n this.epgWrapElement = ref;\n }}\n className={Style.epgWrap}\n >\n <div className={Style.scheduleGrid}>\n <div className={classNames(Style.timeline, 'stickyTimeline')} onScroll={this.syncScroll}>\n {atStartDate ? (\n <EPGCurrentTimer\n ended={this.currentTimerEnded}\n startingTs={startingTs}\n totalMinutes={MINUTES_INTERVAL}\n />\n ) : null}\n <EPGTimeline\n accessToken={accessToken}\n breakpoint={breakpoint}\n checkAtStarting={checkAtStarting}\n coordinates={coordinates}\n deviceId={deviceId}\n endingDate={endingDate}\n ended={this.currentTimerEnded}\n fetchLiveAction={fetchLiveAction}\n startingTs={startingTs}\n totalMinutes={MINUTES_INTERVAL}\n selectedDate={selectedDate}\n setStartingTs={setStartingTs}\n />\n </div>\n <div className={Style.panelContainer} id=\"panelContainer\" onScroll={this.syncScroll}>\n {this.renderPanels()}\n </div>\n </div>\n </section>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n panels: makeSelectLivePanelsData(state),\n prevRowIdx: state.live?.prevRowIdx,\n };\n}\n\nEPGGrid.defaultProps = {\n account: {},\n breakpoint: null,\n changeDate: () => {},\n favoritesManager: null,\n isAuthenticated: null,\n isStatic: false,\n location: {},\n overlay: null,\n panels: null,\n preauthorizedResources: [],\n prevRowIdx: null,\n selectedChannel: 0,\n setSelectedDate: () => null,\n selectedDate: null,\n selectedVideoData: null,\n defaultProgram: null,\n};\n\nEPGGrid.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n breakpoint: PropTypes.string,\n changeDate: PropTypes.func,\n coordinates: PropTypes.shape({}),\n checkAtStarting: PropTypes.func,\n defaultProgram: PropTypes.string,\n deviceId: PropTypes.string,\n epgGridPage: PropTypes.number,\n endingDate: PropTypes.instanceOf(Date),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})),\n setFavorites: PropTypes.func,\n deleteFavorites: PropTypes.func,\n }),\n fetchLiveAction: PropTypes.func,\n globalVideo: PropTypes.func,\n gridStart: PropTypes.func,\n isAuthenticated: PropTypes.bool,\n isStatic: PropTypes.bool,\n location: PropTypes.shape({}),\n overlay: PropTypes.string,\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n prevRowIdx: PropTypes.number,\n saveLiveRestart: PropTypes.func,\n selectedChannel: PropTypes.number,\n selectedDate: PropTypes.instanceOf(Date),\n selectedVideoData: PropTypes.shape({}),\n setEpgGridPage: PropTypes.func,\n setOverlay: PropTypes.func,\n setSelectedDate: PropTypes.func,\n setStartingDate: PropTypes.func,\n setStartingTs: PropTypes.func,\n setCurrentVideo: PropTypes.func,\n startingTs: PropTypes.number,\n};\n\nexport default React.memo(connect(mapStateToProps)(EPGGrid));\n","import React, { useCallback, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\n\nimport LiveCarouselSection from 'screens/Live/components/LiveCarouselSection';\nimport { COLLECTION_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { PANEL_TYPE_LISTING } from 'screens/Live/LiveHelpers';\nimport { getSegmentLiveCollectionCount } from '@foxcorp/delta-web-analytics';\n\nimport Divider from 'components/Divider';\n\nimport Style from './LiveCollections.module.scss';\n\nconst LiveCollections = ({ accessToken, breakpoint, favoritesManager, panels }) => {\n const imageRender = useCallback(\n image =>\n renderImage({\n breakpoint,\n imageType: COLLECTION_THUMBNAIL_IMAGE,\n ...image,\n }),\n [],\n );\n const collectionVerticalPosition = useRef(0);\n const collectionCount = getSegmentLiveCollectionCount(panels);\n\n const epgCollections = panels?.member?.map((panel, idx) => {\n const panelType = _.get(panel, 'panelType');\n if (panelType === PANEL_TYPE_LISTING) {\n collectionVerticalPosition.current = 0;\n return null;\n }\n\n collectionVerticalPosition.current += 1;\n\n return (\n <LiveCarouselSection\n accessToken={accessToken}\n breakpoint={breakpoint}\n collectionCount={collectionCount}\n collectionVerticalPosition={collectionVerticalPosition.current}\n dropdownHeadline={panel?.headline}\n epgItems={panel?.items?.member}\n favoritesManager={favoritesManager}\n key={`${panel.headline}-carousel`}\n panel={panels}\n renderImage={imageRender}\n Style={Style}\n />\n );\n });\n\n if (!panels?.member) return null;\n\n return (\n <div className={Style.collectionsContainer}>\n <Divider Style={Style} />\n {epgCollections}\n </div>\n );\n};\n\nLiveCollections.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n panels: PropTypes.shape({}),\n};\n\nexport default React.memo(LiveCollections);\n","import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { scroller } from 'react-scroll';\nimport { useSelector } from 'react-redux';\nimport ReactTimeout from 'react-timeout';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\n\nimport {\n Events,\n getRecommendationId,\n handleAnalytics,\n SEARCH_INPUT_TRIGGER_INTERVAL_MS,\n} from '@foxcorp/delta-web-analytics';\n\nimport {\n addDays,\n addHours,\n differenceInMinutes,\n getHours,\n getMinutes,\n isAfter,\n isBefore,\n isSameDay,\n isSameSecond,\n midNightTonightTime,\n msToDate,\n now,\n setDateAndTime,\n SEVEN_PM,\n startOfDay,\n stringToDate,\n subHours,\n tonight7PMTime,\n} from 'helpers/DateTimeHelper';\nimport { isStaticRender, getOomLivePlayerEnabled } from 'helpers/ContentHelper';\nimport StrikeBanner, { STRIKE_PAGE_TYPE_SCHEDULE } from 'components/StrikeBanner';\nimport {\n getStartingTs,\n isDayAfter,\n isToday,\n isTomorrow,\n MINUTES_INTERVAL,\n} from 'screens/Live/LiveHelpers';\n\nimport FutureCellModal from './components/FutureCellModal';\nimport SearchResults from './components/SearchResults';\nimport FilterSearchBar from './components/FilterSearchBar';\nimport EPGGrid from './components/EPGGrid';\nimport LiveCollections from './components/LiveCollections';\nimport Style from './FoxLive.module.scss';\n\nconst FoxLive = ({\n accessToken,\n account,\n breakpoint,\n clearInterval,\n defaultProgram,\n disableScroll,\n favoritesManager,\n fetchLiveAction,\n globalVideo,\n isAuthenticated,\n location,\n overlay,\n preauthorizedResources,\n saveLiveRestart,\n selectedChannel,\n selectedVideo,\n setInterval,\n setOverlay,\n setVideoCountdown,\n ...rest\n}) => {\n let selectedVideoData = null;\n if (globalVideo) {\n selectedVideoData = globalVideo;\n }\n\n const [modalVisibility, setModalVisibility] = useState(false);\n const [currentVideo, setCurrentVideo] = useState({});\n const [panelCount, setPanelCount] = useState(0);\n const [searchInput, setSearchInput] = useState('');\n const [searchCompleted, setSearchCompleted] = useState(false);\n const [selectedDate, setSelectedDateState] = useState(now());\n const [epgGridPage, setEpgGridPage] = useState(1);\n const [startingTs, setStartingTs] = useState(getStartingTs());\n const [startingDate, setStartingDate] = useState(now());\n const [showPlayButton, setShowPlayButton] = useState(false);\n\n const { panels } = useSelector(state => state.live);\n const { recommendationIdData } = useSelector(state => state.app);\n const recommendationId = getRecommendationId(recommendationIdData);\n const EPG_SCROLL_HOUR_JUMP = 1.5;\n const EPG_TOTAL_DAYS = 3;\n const EPG_TOTAL_HOURS = 0;\n const [endingDate] = useState(\n addHours(addDays(startOfDay(now()), EPG_TOTAL_DAYS), EPG_TOTAL_HOURS),\n );\n\n useEffect(() => {\n if (modalVisibility) {\n disableScroll({ disableScroll: true, bodyOnly: true });\n } else {\n disableScroll({ disableScroll: false });\n }\n return () => disableScroll({ disableScroll: false });\n }, [disableScroll, modalVisibility]);\n\n useEffect(() => {\n let inputChangeTimeout = null;\n if (searchInput.length > 1 && !searchCompleted) {\n inputChangeTimeout = setTimeout(() => {\n handleAnalytics({\n event: Events.SEARCH_COMPLETED,\n payload: {\n page_search_term: searchInput,\n page_num_search_results: panelCount,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n setSearchCompleted(true);\n }, SEARCH_INPUT_TRIGGER_INTERVAL_MS);\n } else if (searchInput.length < 2) {\n setSearchCompleted(false);\n }\n return () => clearTimeout(inputChangeTimeout);\n }, [panelCount, searchCompleted, searchInput]);\n\n useEffect(() => {\n let showPlayButtonInterval = null;\n if (!_.isEmpty(currentVideo)) {\n const { startDate } = currentVideo;\n showPlayButtonInterval = setInterval(() => {\n const minutesLeft = differenceInMinutes(startDate, new Date());\n const shouldShowPlayButton = minutesLeft && minutesLeft <= 5;\n if (shouldShowPlayButton) {\n setShowPlayButton(true);\n } else {\n setShowPlayButton(false);\n }\n }, 1000);\n }\n return () => clearInterval(showPlayButtonInterval);\n }, [currentVideo, clearInterval, setInterval]);\n\n const handleOnClearSearch = useCallback(() => {\n setSearchInput('');\n document.getElementById('searchEPG').value = '';\n }, []);\n\n const handleOnSelectVideo = useCallback(video => {\n if (video) {\n setCurrentVideo(video);\n setModalVisibility(true);\n }\n }, []);\n\n const checkAtStarting = useCallback(\n date => {\n const startingHours = getHours(startingDate);\n const startingMinutes = getMinutes(startingDate);\n const startingTime = startingHours * 60 + Math.floor(startingMinutes / MINUTES_INTERVAL);\n const dateHours = getHours(date);\n const dateMinutes = getMinutes(startingDate);\n const time = dateHours * 60 + Math.floor(dateMinutes / MINUTES_INTERVAL);\n return isSameDay(startingDate, date) && startingTime >= time;\n },\n [startingDate],\n );\n\n const atStartDate = checkAtStarting(selectedDate);\n const gridDateStart = msToDate(startingTs * 1000);\n const lastGridStart = addHours(endingDate, -2);\n const atEndDate = gridDateStart >= lastGridStart;\n\n const setSelectedDate = useCallback(\n newSelectedDate => {\n const oldDate = selectedDate || now();\n const newDate = newSelectedDate || now();\n const currentDate = now();\n if (!isSameSecond(oldDate, newDate)) {\n const selectedDate = isBefore(newDate, currentDate) ? currentDate : newDate;\n setSelectedDateState(selectedDate);\n }\n },\n [selectedDate, setSelectedDateState],\n );\n\n const changeDate = useCallback(\n date => {\n setSelectedDate(stringToDate(date));\n setStartingTs(getStartingTs(date));\n },\n [setSelectedDate, setStartingTs],\n );\n\n const gridStart = useCallback(() => {\n changeDate(now());\n setEpgGridPage(1);\n }, [changeDate, setEpgGridPage]);\n\n const gridTonight = useCallback(() => {\n // advances to 7p local time the same day\n if (\n isBefore(new Date(now()).getTime(), tonight7PMTime(selectedDate)) ||\n (isAfter(new Date(selectedDate).getTime(), midNightTonightTime) &&\n isBefore(new Date(now()).getTime(), tonight7PMTime(selectedDate)))\n ) {\n changeDate(addHours(setDateAndTime(now(), SEVEN_PM), 0.1));\n\n if (isToday(selectedDate)) {\n setEpgGridPage(epgGridPage + 1);\n }\n\n if (isTomorrow(selectedDate) || isDayAfter(selectedDate)) {\n setEpgGridPage(epgGridPage - 1);\n }\n }\n }, [changeDate, selectedDate, setEpgGridPage, epgGridPage]);\n\n const gridTomorrow = useCallback(() => {\n // advances to 7p local time the next day\n if (!atEndDate) {\n const tomorrow7PM = addDays(setDateAndTime(now(), SEVEN_PM), 1);\n changeDate(addHours(tomorrow7PM, 0.39));\n\n if (isToday(selectedDate)) {\n setEpgGridPage(epgGridPage + 1);\n }\n\n if (isTomorrow(selectedDate) || isDayAfter(selectedDate)) {\n setEpgGridPage(epgGridPage - 1);\n }\n }\n }, [atEndDate, changeDate, selectedDate, setEpgGridPage, epgGridPage]);\n\n const gridDayAfter = useCallback(() => {\n // advances to 7p local time the day after next (2 days ahead)\n if (!atEndDate) {\n const dayAfter = addDays(setDateAndTime(now(), SEVEN_PM), 2);\n changeDate(addHours(dayAfter, 0.39));\n\n if (isToday(selectedDate) || isTomorrow(selectedDate)) {\n setEpgGridPage(epgGridPage + 1);\n }\n }\n }, [atEndDate, changeDate, selectedDate, setEpgGridPage, epgGridPage]);\n\n const gridNext = useCallback(() => {\n const newDate = addHours(selectedDate, EPG_SCROLL_HOUR_JUMP);\n const newEpgGridPage = epgGridPage + 1;\n changeDate(newDate);\n setEpgGridPage(newEpgGridPage);\n }, [changeDate, selectedDate, setEpgGridPage, epgGridPage]);\n\n const gridPrev = useCallback(() => {\n let newDate = subHours(selectedDate, EPG_SCROLL_HOUR_JUMP);\n const newEpgGridPage = epgGridPage - 1;\n if (checkAtStarting(newDate)) {\n newDate = startingDate;\n changeDate(newDate);\n setEpgGridPage(1);\n } else {\n changeDate(newDate);\n setEpgGridPage(newEpgGridPage);\n }\n }, [changeDate, checkAtStarting, selectedDate, startingDate, setEpgGridPage, epgGridPage]);\n\n const outOfMarketLivePlayerData = getOomLivePlayerEnabled();\n\n const handleOnFieldChange = useCallback(e => {\n const handleOnSearchChange = _.debounce(text => {\n setSearchInput(text);\n scroller.scrollTo('searchResults', {\n duration: 150,\n delay: 0,\n offset: -450,\n smooth: true,\n containerId: 'live-page-overflow',\n });\n }, 500);\n\n return handleOnSearchChange(e.target.value);\n }, []);\n\n const handleOnCloseModal = useCallback(() => {\n setCurrentVideo(null);\n setModalVisibility(false);\n }, []);\n\n return (\n <>\n <div className={classNames(Style.pinnedContentContainer, 'stickyContainer')}>\n {!outOfMarketLivePlayerData && (\n <FilterSearchBar\n atStartDate={atStartDate}\n atEndDate={atEndDate}\n gridNext={gridNext}\n gridPrev={gridPrev}\n gridStart={gridStart}\n gridTonight={gridTonight}\n gridTomorrow={gridTomorrow}\n gridDayAfter={gridDayAfter}\n onFieldChange={handleOnFieldChange}\n onClearSearch={handleOnClearSearch}\n searchInput={searchInput}\n selectedDate={selectedDate}\n />\n )}\n </div>\n {!outOfMarketLivePlayerData && (\n <>\n <FutureCellModal\n favoritesManager={favoritesManager}\n globalVideo={globalVideo}\n onClose={handleOnCloseModal}\n recommendationId={recommendationId}\n setVideoCountdown={setVideoCountdown}\n showPlayButton={showPlayButton}\n video={currentVideo}\n visibility={modalVisibility}\n />\n {!searchInput || searchInput.length < 2 ? (\n <>\n <EPGGrid\n {...rest}\n account={account}\n breakpoint={breakpoint}\n changeDate={changeDate}\n checkAtStarting={checkAtStarting}\n defaultProgram={defaultProgram}\n endingDate={endingDate}\n epgGridPage={epgGridPage}\n favoritesManager={favoritesManager}\n fetchLiveAction={fetchLiveAction}\n globalVideo={globalVideo}\n gridStart={gridStart}\n isAuthenticated={isAuthenticated}\n isStatic={isStaticRender()}\n location={location}\n overlay={overlay}\n preauthorizedResources={preauthorizedResources}\n saveLiveRestart={saveLiveRestart}\n selectedChannel={selectedChannel}\n selectedDate={selectedDate}\n selectedVideoData={selectedVideoData}\n setCurrentVideo={handleOnSelectVideo}\n setEpgGridPage={setEpgGridPage}\n setOverlay={setOverlay}\n setSelectedDate={setSelectedDate}\n setStartingDate={setStartingDate}\n setStartingTs={setStartingTs}\n startingTs={startingTs}\n />\n <LiveCollections\n accessToken={accessToken}\n panels={panels}\n breakpoint={breakpoint}\n favoritesManager={favoritesManager}\n />\n </>\n ) : null}\n\n {searchInput?.length > 1 ? (\n <SearchResults\n accessToken={accessToken}\n breakpoint={breakpoint}\n favoritesManager={favoritesManager}\n onClearSearch={handleOnClearSearch}\n panelCount={panelCount}\n searchInput={searchInput}\n searchCompleted={searchCompleted}\n setSearchCompleted={setSearchCompleted}\n setCurrentVideo={handleOnSelectVideo}\n setPanelCount={setPanelCount}\n />\n ) : null}\n </>\n )}\n <StrikeBanner index={1} pageType={STRIKE_PAGE_TYPE_SCHEDULE} breakpoint={breakpoint} />\n </>\n );\n};\n\nFoxLive.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n breakpoint: PropTypes.string,\n clearInterval: PropTypes.func,\n coordinates: PropTypes.shape({}),\n defaultProgram: PropTypes.string,\n deviceId: PropTypes.string,\n disableScroll: PropTypes.func,\n favoritesManager: PropTypes.shape({}),\n fetchLiveAction: PropTypes.func,\n globalVideo: PropTypes.shape({}),\n isAuthenticated: PropTypes.bool,\n location: PropTypes.shape({}),\n onChannelSelect: PropTypes.func,\n overlay: PropTypes.string,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n saveLiveRestart: PropTypes.func.isRequired,\n selectedChannel: PropTypes.number,\n selectedVideo: PropTypes.string,\n setInterval: PropTypes.func,\n setOverlay: PropTypes.func.isRequired,\n setVideoCountdown: PropTypes.func,\n};\n\nconst getChangingProps = props => {\n const {\n accessToken,\n account,\n breakpoint,\n coordinates,\n defaultProgram,\n deviceId,\n favoritesManager,\n globalVideo,\n isAuthenticated,\n location,\n overlay,\n preauthorizedResources,\n selectedChannel,\n selectedVideo,\n } = props;\n return {\n accessToken,\n account,\n breakpoint,\n coordinates,\n defaultProgram,\n deviceId,\n favoritesManager,\n globalVideo,\n isAuthenticated,\n location,\n overlay,\n preauthorizedResources,\n selectedChannel,\n selectedVideo,\n };\n};\n\nexport default ReactTimeout(\n React.memo(FoxLive, (props, nextProps) => {\n const oldProps = getChangingProps(props);\n const newProps = getChangingProps(nextProps);\n return _.isEqual(oldProps, newProps);\n }),\n);\n","/* global EpgEnabled */\nimport React, { Component } from 'react';\nimport ReactTimeout from 'react-timeout';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport BreadcrumbsComponent, { breadcrumbsFoxLiveParser } from 'components/Breadcrumbs';\nimport Loader from 'components/Loader';\nimport {\n getErrorComponent,\n getOomLivePlayerEnabled,\n isStaticRender,\n setLocalChannelCookies,\n} from 'helpers/ContentHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { now } from 'helpers/DateTimeHelper';\nimport { getLocation, getPreviousPathname } from 'helpers/RouteHelper';\nimport {\n Events,\n getSegmentLivePageName,\n getTealiumSourceCollectionGlobal,\n handleAnalytics,\n PageNames,\n trackPageReferrerAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport { checkSameDayOfYear, getLiveDateRange } from './LiveHelpers';\nimport { clearLive, fetchLiveAction, fetchLivePanel, fetchLivestream } from './LiveActions';\nimport Style from './Live.module.scss';\nimport FoxLive from './FoxLive';\n\nclass Live extends Component {\n constructor(props) {\n super(props);\n const { globalVideo, defaultProgram, defaultChannel } = this.props;\n let selectedVideo = null;\n let selectedVideoData = null;\n if (globalVideo) {\n selectedVideoData = globalVideo;\n selectedVideo = _.get(globalVideo, 'livePlayerScreenUrl');\n }\n\n this.state = {\n selectedChannel: null,\n selectedDate: now(),\n selectedVideo,\n selectedVideoData,\n panelTimeouts: {},\n firstChannelClick: false,\n liveVideoFetched: false,\n newRelicStart: false,\n selectedChannelCallSign: null,\n // trackedAnalyticsReferrer is used in trackPageReferrerAnalytics\n // eslint-disable-next-line react/no-unused-state\n trackedAnalyticsReferrer: false,\n defaultChannel,\n defaultProgram,\n };\n\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.ignoreUnmountReferrerAnalytics = false;\n }\n\n componentDidMount() {\n const { globalVideo, setLivePage, startedPlayback } = this.props;\n if (setLivePage) setLivePage(true);\n this.setPageView();\n const playbackPersistedFromPreviousScreen = !!globalVideo && startedPlayback;\n logEvent('onLiveScreenStart');\n logEvent('onLiveScreenView');\n this.fetchLocalData({ preventGlobalPanelSet: playbackPersistedFromPreviousScreen });\n this.setState({ defaultChannel: null, newRelicStart: true });\n }\n\n // Many props that are not in the default props are causing rerenders\n shouldComponentUpdate(nextProps, nextState) {\n const newProps = this.getChangingProps(nextProps);\n const oldProps = this.getChangingProps(this.props);\n return !_.isEqual(newProps, oldProps) || !_.isEqual(nextState, this.state);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const {\n accessToken,\n clearLive,\n coordinates,\n panels,\n routeParams,\n savedVideo,\n video,\n } = this.props;\n const {\n accessToken: prevAccessToken,\n coordinates: prevCoordinates,\n panels: prevPanels,\n routeParams: prevRouteParams,\n savedVideo: prevSavedVideo,\n video: prevVideo,\n } = prevProps;\n const { newRelicStart } = this.state;\n\n if (newRelicStart) {\n logEvent('onLiveScreenFinished');\n this.setState({ newRelicStart: false });\n }\n const userLocationChanged = !_.isEqual(prevCoordinates, coordinates);\n const panelsChanged = !prevPanels && panels;\n const accessTokenChanged = accessToken !== prevAccessToken;\n const savedVideoChanged = savedVideo !== prevSavedVideo;\n const videoIdChanged = video !== prevVideo;\n const urlVideoId = _.get(routeParams, 'videoId');\n const prevUrlVideoId = _.get(prevRouteParams, 'videoId');\n const urlVideoIdChanged = urlVideoId !== prevUrlVideoId;\n if (userLocationChanged || accessTokenChanged || savedVideoChanged || videoIdChanged) {\n this.fetchLocalData();\n }\n if (panelsChanged) this.setPanelTimeouts();\n if (urlVideoIdChanged) {\n clearLive();\n this.fetchLocalData();\n }\n }\n\n componentWillUnmount() {\n const { clearLive, setLivePage } = this.props;\n setLocalChannelCookies({ resetCookies: true });\n setLivePage(false);\n clearLive();\n }\n\n getChangingProps = props => {\n const {\n accessToken,\n account,\n adblock,\n anonymousId,\n breakpoint,\n campaignOverrides,\n coordinates,\n defaultChannel,\n defaultProgram,\n deviceId,\n errors,\n favoritesManager,\n globalPlayerDisabled,\n globalVideo,\n isAuthenticated,\n isHeader,\n isPlayerLoaded,\n livePanel,\n location,\n mvpdData,\n overlay,\n panels,\n params,\n preauthorizedResources,\n primeTimePanelCount,\n primeTimePanels,\n profileId,\n provider,\n routeParams,\n savedVideo,\n seo,\n startedPlayback,\n streamExit,\n video,\n } = props;\n return {\n accessToken,\n account,\n adblock,\n anonymousId,\n breakpoint,\n campaignOverrides,\n coordinates,\n defaultChannel,\n defaultProgram,\n deviceId,\n errors,\n favoritesManager,\n globalPlayerDisabled,\n globalVideo,\n isAuthenticated,\n isHeader,\n isPlayerLoaded,\n livePanel,\n location,\n mvpdData,\n overlay,\n panels,\n params,\n preauthorizedResources,\n primeTimePanelCount,\n primeTimePanels,\n profileId,\n provider,\n routeParams,\n savedVideo,\n seo,\n startedPlayback,\n streamExit,\n video,\n };\n };\n\n setPageView() {\n const { pageViewEvent, getUseUtagGlobal } = this.props;\n const sourceCollection = getTealiumSourceCollectionGlobal();\n const collection = sourceCollection ? { ...sourceCollection } : null;\n const useUtagGlobal = getUseUtagGlobal();\n\n if (!collection) {\n pageViewEvent({ pageName: PageNames.LIVE, useUtagGlobal });\n const callSign = _.get(window, 'utag_data.call_sign', null);\n handleAnalytics({\n event: Events.TOP_LEVEL_SECTION_LANDING,\n payload: {\n pageName: callSign ? `live tv:landing:${callSign}` : `$live tv:landing`,\n callSign,\n },\n });\n } else {\n pageViewEvent({\n pageName: getSegmentLivePageName({\n location: getLocation(window.referrer),\n previousPath: getPreviousPathname(),\n }),\n useUtagGlobal,\n });\n }\n }\n\n setPanelTimeouts() {\n const { clearTimeout, panels, setTimeout } = this.props;\n if (!panels) return;\n const { panelTimeouts: prevPanelTimeouts, selectedDate } = this.state;\n const currentDate = now();\n const sameDay = checkSameDayOfYear(currentDate, selectedDate);\n let duration = null;\n let timeoutId = null;\n const newTimeouts = {};\n _.forEach(panels.member, panel => {\n duration = panel.validFor;\n timeoutId = `panel-${panel.id}`;\n if (prevPanelTimeouts[timeoutId]) clearTimeout(prevPanelTimeouts[timeoutId]);\n if (sameDay) {\n newTimeouts[timeoutId] = setTimeout(() => {\n this.fetchPanelData(panel);\n }, duration);\n }\n });\n this.setState({ panelTimeouts: newTimeouts });\n }\n\n fetchLocalData = (options = {}) => {\n const { panelUrl } = options;\n const {\n coordinates,\n accessToken,\n deviceId,\n fetchLiveAction,\n fetchLivePanel,\n routeParams,\n savedVideo,\n video,\n } = this.props;\n const { selectedDate } = this.state;\n if (isStaticRender()) return;\n const urlVideoId = _.get(routeParams, 'videoId');\n if (!EpgEnabled && urlVideoId) {\n const selectedVideo =\n _.get(savedVideo, 'livePlayerScreenUrl') || _.get(video, 'livePlayerScreenUrl', null);\n\n this.setState({\n selectedVideo,\n selectedVideoData: savedVideo || video,\n });\n return;\n }\n const dateRange = getLiveDateRange(selectedDate);\n if (panelUrl) {\n fetchLivePanel({ accessToken, panelUrl, dateRange, coordinates, deviceId });\n } else {\n fetchLiveAction({ accessToken, dateRange, coordinates, deviceId });\n }\n };\n\n fetchPanelData(panel) {\n const { clearTimeout, setTimeout } = this.props;\n const url = panel['@id'];\n this.fetchLocalData({ panelUrl: url });\n const { id, validFor } = panel;\n const timeoutId = `panel-${id}`;\n const { panelTimeouts: prevPanelTimeouts } = this.state;\n const newTimeout = {};\n if (prevPanelTimeouts[timeoutId]) clearTimeout(prevPanelTimeouts[timeoutId]);\n newTimeout[timeoutId] = setTimeout(() => {\n this.fetchPanelData(panel);\n }, validFor);\n const panelTimeouts = _.merge(prevPanelTimeouts, newTimeout);\n this.setState({ panelTimeouts });\n }\n\n render() {\n const { coordinates, errors, globalVideo, panels, savedVideo, seo, setLoading } = this.props;\n const { selectedChannel, selectedVideo } = this.state;\n if (errors && !_.isArray(errors)) return getErrorComponent(errors);\n const hasPanels = !!(panels && panels.member && panels.member.length > 0);\n const showLoader = coordinates && EpgEnabled;\n if (showLoader && !hasPanels && !globalVideo) {\n return <Loader setLoading={setLoading} center />;\n }\n const outOfMarketLivePlayerUrl = getOomLivePlayerEnabled();\n const epgContainerClasses = [Style.epgWrap];\n const breadcrumbClasses = [Style.breadcrumbs];\n if (outOfMarketLivePlayerUrl) {\n epgContainerClasses.push(Style.noEpg);\n breadcrumbClasses.push(Style.noEpg);\n }\n const tags = setHelmetTags(seo);\n const breadcrumbsData = breadcrumbsFoxLiveParser(savedVideo);\n const breadcrumbs = (\n <BreadcrumbsComponent data={breadcrumbsData} customStyle={classNames(breadcrumbClasses)} />\n );\n return (\n <div>\n {tags}\n <FoxLive\n {...this.props}\n fetchLiveAction={fetchLiveAction}\n selectedChannel={selectedChannel}\n selectedVideo={selectedVideo}\n />\n {breadcrumbs}\n </div>\n );\n }\n}\n\nLive.defaultProps = {\n accessToken: null,\n account: null,\n adblock: false,\n anonymousId: null,\n campaignOverrides: {},\n clearInterval: noop,\n clearTimeout: noop,\n coordinates: null,\n countdownVideo: {},\n defaultChannel: null,\n defaultProgram: null,\n deviceId: null,\n errors: null,\n fetchLivestream: noop,\n globalPlayerDisabled: true,\n globalVideo: null,\n isAuthenticated: false,\n isHeader: false,\n isPlayerLoaded: false,\n livePanel: null,\n location: {},\n mvpdData: null,\n overlay: null,\n panels: null,\n params: {},\n preauthorizedResources: [],\n primeTimePanelCount: null,\n primeTimePanels: null,\n profileId: null,\n provider: {},\n routeParams: {},\n savedVideo: null,\n seo: null,\n setCoordinates: noop,\n setGlobalShouldResetStillWatching: noop,\n setInterval: noop,\n setIsPlayerLoaded: noop,\n setLivePage: noop,\n setLoading: null,\n setMVPDLogoutDataToAppState: noop,\n setMVPDToAppState: noop,\n setPreauthorizedResources: null,\n setProvider: noop,\n setTimeout: noop,\n startedPlayback: false,\n streamExit: false,\n video: null,\n};\n\nLive.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n adblock: PropTypes.bool,\n anonymousId: PropTypes.string,\n campaignOverrides: PropTypes.shape({}),\n clearInterval: PropTypes.func,\n clearLive: PropTypes.func.isRequired,\n clearTimeout: PropTypes.func,\n coordinates: PropTypes.shape({}),\n countdownVideo: PropTypes.shape({}),\n defaultChannel: PropTypes.string,\n defaultProgram: PropTypes.string,\n deviceId: PropTypes.string,\n errors: PropTypes.number,\n fetchLiveAction: PropTypes.func.isRequired,\n fetchLivePanel: PropTypes.func.isRequired,\n fetchLivestream: PropTypes.func,\n getUseUtagGlobal: PropTypes.func.isRequired,\n globalPlayerDisabled: PropTypes.bool,\n globalVideo: PropTypes.shape({}),\n isAuthenticated: PropTypes.bool,\n isHeader: PropTypes.bool,\n isPlayerLoaded: PropTypes.bool,\n livePanel: PropTypes.shape({}),\n location: PropTypes.shape({}),\n mvpdData: PropTypes.shape({}),\n overlay: PropTypes.string,\n pageViewEvent: PropTypes.func.isRequired,\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n params: PropTypes.shape({}),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n primeTimePanelCount: PropTypes.number,\n primeTimePanels: PropTypes.shape({}),\n profileId: PropTypes.string,\n provider: PropTypes.shape({}),\n routeParams: PropTypes.shape({}),\n savedVideo: PropTypes.shape({}),\n seo: PropTypes.shape({}),\n setCoordinates: PropTypes.func,\n setGlobalShouldResetStillWatching: PropTypes.func,\n setInterval: PropTypes.func,\n setIsPlayerLoaded: PropTypes.func,\n setLivePage: PropTypes.func,\n setLoading: PropTypes.func,\n setMVPDLogoutDataToAppState: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setPreauthorizedResources: PropTypes.func,\n setProvider: PropTypes.func,\n setTimeout: PropTypes.func,\n startedPlayback: PropTypes.bool,\n streamExit: PropTypes.bool,\n video: PropTypes.shape({}),\n};\n\nconst mapStateToProps = ({\n live: {\n currentTime,\n defaultChannel,\n defaultChannelVideo,\n defaultProgram,\n errors,\n panel,\n panels,\n primeTimePanels,\n savedVideo,\n seo,\n video,\n },\n globalVideo: {\n countdownVideo,\n disableRender: globalPlayerDisabled,\n startedPlayback,\n streamExit,\n video: globalVideo,\n },\n}) => {\n const primeTimePanelCount = primeTimePanels && primeTimePanels.length;\n\n return {\n countdownVideo,\n currentTime,\n defaultChannel,\n defaultChannelVideo,\n defaultProgram,\n errors,\n globalPlayerDisabled,\n globalVideo,\n livePanel: panel,\n panels,\n primeTimePanelCount,\n primeTimePanels,\n savedVideo,\n seo,\n startedPlayback,\n streamExit,\n video,\n };\n};\n\nconst TimeoutLive = ReactTimeout(\n connect(mapStateToProps, {\n clearLive,\n fetchLiveAction,\n fetchLivePanel,\n fetchLivestream,\n })(Live),\n);\n\nexport default TimeoutLive;\n","const PAGE_ACCOUNT = 'PAGE_ACCOUNT';\nconst PAGE_ARTICLE_DETAIL = 'PAGE_ARTICLE_DETAIL';\nconst PAGE_HOME = 'PAGE_HOME';\nexport const PAGE_LIVE = 'PAGE_LIVE';\nconst PAGE_MOVIE_DETAIL = 'PAGE_MOVIE_DETAIL';\nconst PAGE_MOVIES = 'PAGE_MOVIES';\nconst PAGE_NETWORK_DETAIL = 'PAGE_NETWORK_DETAIL';\nexport const PAGE_NETWORK_UPSELL = 'PAGE_NETWORK_UPSELL';\nconst PAGE_RESET_PASSWORD = 'PAGE_RESET_PASSWORD';\nconst PAGE_SEARCH = 'PAGE_SEARCH';\nexport const PAGE_SERIES_DETAIL = 'PAGE_SERIES_DETAIL';\nconst PAGE_SHOWS = 'PAGE_SHOWS';\nconst PAGE_SIGNIN = 'PAGE_SIGNIN';\nexport const PAGE_WATCH = 'PAGE_WATCH';\nexport const PAGE_COLLECTION = 'PAGE_COLLECTION';\n\nconst ALL_PAGES = [\n PAGE_ACCOUNT,\n PAGE_ARTICLE_DETAIL,\n PAGE_HOME,\n PAGE_LIVE,\n PAGE_MOVIE_DETAIL,\n PAGE_MOVIES,\n PAGE_NETWORK_DETAIL,\n PAGE_NETWORK_UPSELL,\n PAGE_RESET_PASSWORD,\n PAGE_SEARCH,\n PAGE_SERIES_DETAIL,\n PAGE_SHOWS,\n PAGE_SIGNIN,\n PAGE_WATCH,\n];\n\nexport const isValidPage = page => ALL_PAGES.indexOf(page) !== -1;\n","import axios from 'axios';\nimport _ from 'lodash';\nimport {\n getBaseContentUrl,\n helperGetApiHeaders,\n helperGetApiRouteById,\n helperGetLiveUpNextUrl,\n helperConvertApiRoute,\n axiosErrorHandler,\n} from 'helpers/ApiHelper';\nimport {\n getAuthForPanelVideo,\n getLocalClipPage,\n getLocalClipPlaylist,\n isLive as isTypeLive,\n LOCAL_CLIP_INITIAL_ID,\n} from 'helpers/ContentHelper';\nimport { getCookie } from 'helpers/Storage';\n\nexport const CLEAR_GLOBAL_LIVE_RESTART = 'CLEAR_GLOBAL_LIVE_RESTART';\nexport const CLEAR_GLOBAL_NEXT_VIDEOS_VALID_FOR = 'CLEAR_GLOBAL_NEXT_VIDEOS_VALID_FOR';\nexport const CLEAR_GLOBAL_PERCENT_WATCHED = 'CLEAR_GLOBAL_PERCENT_WATCHED';\nexport const CLEAR_GLOBAL_VIDEO = 'CLEAR_GLOBAL_VIDEO';\nexport const FETCH_GLOBAL_VIDEO = 'FETCH_GLOBAL_VIDEO';\nexport const FETCH_GLOBAL_VIDEO_NEXT_VIDEO = 'FETCH_GLOBAL_VIDEO_NEXT_VIDEO';\nexport const FETCH_GLOBAL_VIDEO_PANEL = 'FETCH_GLOBAL_VIDEO_PANEL';\nexport const FETCH_GLOBAL_VIDEO_UP_NEXT = 'FETCH_GLOBAL_VIDEO_UP_NEXT';\nexport const PLAY_GLOBAL_VIDEO_NEXT_PLAYLIST_VIDEO = 'SET_GLOBAL_VIDEO_NEXT_PLAYLIST_VIDEO';\nexport const RESET_VOD_SECTION_CLICKED = 'RESET_VOD_SECTION_CLICKED';\nexport const SAVE_GLOBAL_PERCENT_WATCHED = 'SAVE_GLOBAL_PERCENT_WATCHED';\nexport const SET_GLOBAL_PORTAL_REF = 'SET_GLOBAL_PORTAL_REF';\nexport const SET_GLOBAL_PORTAL_CONTENT_FINISHED = 'SET_GLOBAL_PORTAL_CONTENT_FINISHED';\nexport const SET_GLOBAL_VIDEO = 'SET_GLOBAL_VIDEO';\nexport const SET_GLOBAL_VIDEO_DISABLE_RENDER = 'SET_GLOBAL_VIDEO_DISABLE_RENDER';\nexport const SET_GLOBAL_VIDEO_ERROR = 'SET_GLOBAL_VIDEO_ERROR';\nexport const SET_GLOBAL_VIDEO_RETRY_ERROR = 'SET_GLOBAL_VIDEO_RETRY_ERROR';\nexport const SET_GLOBAL_VIDEO_PANEL = 'SET_GLOBAL_VIDEO_PANEL';\nexport const SET_GLOBAL_VIDEO_PLAYER_TYPE = 'SET_GLOBAL_VIDEO_PLAYER_TYPE';\nexport const SET_GLOBAL_VIDEO_SCREEN_IN_CONTROL_OF_STATE =\n 'SET_GLOBAL_VIDEO_SCREEN_IN_CONTROL_OF_STATE';\nexport const SET_GLOBAL_VIDEO_SHOULD_RESET_STILL_WATCHING =\n 'SET_GLOBAL_VIDEO_SHOULD_RESET_STILL_WATCHING';\nexport const SET_GLOBAL_VIDEO_SHOW_CONTROLS = 'SET_GLOBAL_VIDEO_SHOW_CONTROLS';\nexport const SET_GLOBAL_LIVE_RESTART = 'SET_GLOBAL_LIVE_RESTART';\nexport const SET_GLOBAL_VIDEO_STARTED_PLAYBACK = 'SET_GLOBAL_VIDEO_STARTED_PLAYBACK';\nexport const SET_GLOBAL_STREAM_EXIT = 'SET_GLOBAL_STREAM_EXIT';\nexport const SET_MINI_PLAYER_ACTIVE = 'SET_MINI_PLAYER_ACTIVE';\nexport const HANDLE_VOD_SECTION_CLICKED = 'HANDLE_VOD_SECTION_CLICKED';\nexport const SET_GLOBAL_PERCENT_WATCHED_50_PERCENT = 'SET_GLOBAL_PERCENT_WATCHED_50_PERCENT';\nexport const SET_GLOBAL_VIDEO_COUNTDOWN = 'SET_GLOBAL_VIDEO_COUNTDOWN';\n\n/**\n *\n * @param {Object} panel\n * @param {Object} video\n * @param {String} source\n * @returns {{payload: {source: string}, type: string}}\n */\nexport function setVideoPanel({ panel, video, source = 'self', optimizelyResults = null } = {}) {\n const firstItem = video || _.get(panel, 'items.member.0', null);\n const payload = { source, optimizelyResults };\n if (firstItem) payload.panel = firstItem;\n\n return {\n type: SET_GLOBAL_VIDEO_PANEL,\n payload,\n };\n}\n\nexport function setDisableRender({ value, source = 'self', playerType, context }) {\n return {\n type: SET_GLOBAL_VIDEO_DISABLE_RENDER,\n payload: { context, value, source, playerType },\n };\n}\n\nexport function setVideoStartedPlayback(value) {\n return {\n type: SET_GLOBAL_VIDEO_STARTED_PLAYBACK,\n payload: { value },\n };\n}\n\nexport function fetchVideoPanel(id, accessToken, deviceId) {\n const pageType = 'videoDetail';\n const request = id\n ? axios\n .get(\n helperGetApiRouteById(pageType, id, '{videoId}'),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler)\n : Promise.resolve();\n\n return {\n type: FETCH_GLOBAL_VIDEO_PANEL,\n payload: request,\n };\n}\n\nfunction setVideo(video) {\n return {\n type: SET_GLOBAL_VIDEO,\n payload: video,\n };\n}\n\nexport function setPortalRef(portalRef) {\n return {\n type: SET_GLOBAL_PORTAL_REF,\n payload: portalRef,\n };\n}\n\nexport function setPortalContentFinished(isContentFinished) {\n return {\n type: SET_GLOBAL_PORTAL_CONTENT_FINISHED,\n payload: isContentFinished,\n };\n}\n\nexport function clearVideo({ source = 'self' } = {}) {\n return {\n type: CLEAR_GLOBAL_VIDEO,\n payload: { source },\n };\n}\n\nexport function setError(errors) {\n return {\n type: SET_GLOBAL_VIDEO_ERROR,\n payload: errors,\n };\n}\n\nexport function handleVodSectionClicked(triggerData) {\n return {\n type: HANDLE_VOD_SECTION_CLICKED,\n payload: triggerData,\n };\n}\n\nexport function resetVodSectionClicked() {\n return {\n type: RESET_VOD_SECTION_CLICKED,\n };\n}\n\nexport function fetchUpNext({ upNextUrl, videoId, accessToken, deviceId }) {\n let url = upNextUrl;\n let pageType = 'videoDetail';\n if (!url && videoId) {\n const data = helperGetLiveUpNextUrl({ videoId });\n ({ url, pageType } = data);\n }\n const request = url\n ? axios\n .get(\n helperConvertApiRoute(url),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler)\n : Promise.resolve();\n\n return {\n type: FETCH_GLOBAL_VIDEO_UP_NEXT,\n payload: request,\n };\n}\n\nexport function fetchVideo({ accessToken, isLive, deviceId, panelVideo }) {\n return dispatch => {\n const newPanelVideo = panelVideo?.originalVideo ? panelVideo?.originalVideo : panelVideo;\n const type = _.get(newPanelVideo, '@type');\n\n const isLiveType = isTypeLive(type) || isLive || newPanelVideo?.isLive;\n\n const { id: videoId } = newPanelVideo;\n\n const requiresAuthLive = isLive && getAuthForPanelVideo(newPanelVideo, isLiveType, accessToken);\n const requiresAuthVod =\n !isLiveType && getAuthForPanelVideo(newPanelVideo, isLiveType, accessToken);\n newPanelVideo.requiresAuthLive = requiresAuthLive;\n newPanelVideo.requiresAuth = requiresAuthVod;\n\n const localClipPlaylist = getLocalClipPlaylist();\n const localClipVideoId = getCookie({ name: LOCAL_CLIP_INITIAL_ID });\n\n const baseUrl = getBaseContentUrl();\n let upNextUrl = isLiveType\n ? `${baseUrl}upnext/epglistings/${videoId}`\n : `${baseUrl}upnext/videos/${videoId}`;\n\n if (localClipPlaylist && localClipVideoId) {\n const localClipPlaylistArr = localClipPlaylist.split('/');\n const localClipPage = getLocalClipPage();\n // Get the next video id from the playerScreenUrl\n const nextVideoId = localClipPage\n .substring(localClipPage.lastIndexOf('vodplayer/'), localClipPage.indexOf('?'))\n .split('/')[1];\n const localClipPanelId = localClipPlaylistArr[0];\n const localClipCallSign = localClipPlaylistArr[2];\n upNextUrl = `${baseUrl}upnext/videos/${nextVideoId ||\n localClipVideoId}?playlist=${localClipPanelId}&playlistContextType=Category&playlistContext=${localClipCallSign}`;\n }\n\n if (newPanelVideo) {\n dispatch(setVideo(newPanelVideo));\n if (upNextUrl) dispatch(fetchUpNext({ upNextUrl, accessToken, deviceId }));\n }\n };\n}\n\nexport function playNextPlaylistVideo() {\n return {\n type: PLAY_GLOBAL_VIDEO_NEXT_PLAYLIST_VIDEO,\n };\n}\n\nexport function fetchNextVideo(url, accessToken, deviceId) {\n const pageType = 'videoDetail';\n const request = url\n ? axios\n .get(\n helperConvertApiRoute(url),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler)\n : Promise.resolve();\n\n return {\n type: FETCH_GLOBAL_VIDEO_NEXT_VIDEO,\n payload: request,\n };\n}\n\nexport function setPlayerType(value) {\n /*\n There is a new method `player.updatePlayerType(TYPE)` you can call for uninterrupted playback\n It will trigger an event called `onPlayerTypeChange` that you can listen to.\n The player listens to it to update mute state and controls\n */\n return {\n type: SET_GLOBAL_VIDEO_PLAYER_TYPE,\n payload: value,\n };\n}\n\nexport function saveLiveRestart(video) {\n return {\n type: SET_GLOBAL_LIVE_RESTART,\n payload: {\n data: video,\n },\n };\n}\n\nexport function clearLiveRestart() {\n return {\n type: CLEAR_GLOBAL_LIVE_RESTART,\n };\n}\n\nexport function setStreamExit(streamExit) {\n return {\n type: 'SET_GLOBAL_STREAM_EXIT',\n payload: streamExit,\n };\n}\n\nexport function setMiniPlayerActive(value) {\n return {\n type: SET_MINI_PLAYER_ACTIVE,\n payload: value,\n };\n}\n\nexport function clearNextVideosValidFor() {\n return {\n type: CLEAR_GLOBAL_NEXT_VIDEOS_VALID_FOR,\n };\n}\n\nexport function setScreenInControlOfState(name) {\n /*\n to prevent race conditions with data fetches on screen mount we set control of the player.\n previously we saw that switching screens quickly leads to the actions from the previous\n screen resolving after the screen changes which causes player updates on the subsequent screen.\n for example: setting collection panels + prefetches and then the global video panel is set AFTER\n transitioning to the live screen. to resolve this immediately set screen control on mount of the\n screen.\n */\n return {\n type: SET_GLOBAL_VIDEO_SCREEN_IN_CONTROL_OF_STATE,\n payload: name,\n };\n}\n\nexport function savePercentWatched() {\n return {\n type: SAVE_GLOBAL_PERCENT_WATCHED,\n };\n}\n\nexport function clearPercentWatched() {\n return {\n type: CLEAR_GLOBAL_PERCENT_WATCHED,\n };\n}\n\nexport function setHasSeenHalfAnyVideo() {\n return {\n type: SET_GLOBAL_PERCENT_WATCHED_50_PERCENT,\n };\n}\n\nexport function setVideoCountdown(video, onChannelSelect) {\n return {\n type: SET_GLOBAL_VIDEO_COUNTDOWN,\n payload: {\n onChannelSelect,\n video,\n },\n };\n}\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport { isStaticRender } from 'helpers/ContentHelper';\nimport { now, startOfHour, addHours, differenceInMilliseconds } from 'helpers/DateTimeHelper';\n\nclass PrimeTimeUpdater extends Component {\n constructor(props) {\n super(props);\n this.forceUpdate = this.forceUpdate.bind(this);\n }\n\n componentDidMount() {\n const { setTimeout, timeout } = this.props;\n if (isStaticRender()) return;\n const { forceUpdate } = this;\n setTimeout(() => {\n forceUpdate();\n }, timeout);\n }\n\n render() {\n const { children } = this.props;\n return children;\n }\n}\n\nconst nextHourInMS = differenceInMilliseconds(addHours(startOfHour(now()), 1), now());\nPrimeTimeUpdater.defaultProps = { timeout: nextHourInMS };\n\nexport default ReactTimeout(PrimeTimeUpdater);\n\nPrimeTimeUpdater.defaultProps = {\n children: null,\n};\n\nPrimeTimeUpdater.propTypes = {\n children: PropTypes.node,\n setTimeout: PropTypes.func.isRequired,\n timeout: PropTypes.number,\n};\n","import PrimeTimeUpdater from './PrimeTimeUpdater';\n\nexport default PrimeTimeUpdater;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Link } from 'react-router';\nimport _ from 'lodash';\nimport { noop } from 'helpers/GlobalHelper';\n\nimport Style from './Dropdown.module.scss';\n\n/**\n * Dropdown Component\n *\n * @param {Object} theme - Theme override sent through CSS Themr\n * @param {Object} expandedHeaderCopy - Style override for the header shown when the dropdown is expanded\n * @param {Array} items - array of objects {name: 'test', onClick: ()=>{}}\n * @param {Function} onOpenDropdown - function to be called when dropdown opens\n * @param {Function} onCloseDropdown - function to be called when dropdown closes\n * @param {String} defaultText - the deault text to display when no item is selected\n * @param {Function} getIcon - function returns icon that has onClick event passed into it\n * @param {Boolean} expanded - is the dropdown expanded?\n * @param {String} getSelected - Returns the name of the clicked menu item\n * @param {String} selected - the currently selected item\n * @param {Bool} preserveTitle - Preserve the original title for the dropdown even when items are selected\n * @param {String} useLabelDetail - Arbitrary text that is adjacent to the item name within the menu\n * @param {Bool} isActive - Indicates that the dropdown is the last one the user interacted with\n * @param {Bool} isError - is there an error with the current field?\n * @returns {Component} - React Component\n */\nclass Dropdown extends Component {\n constructor(props) {\n super(props);\n this.closeWhenOutOfBounds = this.closeWhenOutOfBounds.bind(this);\n }\n\n closeWhenOutOfBounds(e) {\n const { onCloseDropdown } = this.props;\n const height = _.get(e.target.getBoundingClientRect(), 'top');\n const mousePositionOnClick = _.get(e, 'clientY');\n return height > mousePositionOnClick ? onCloseDropdown() : null;\n }\n\n renderMenuItem(item, key) {\n if (!item) return null;\n const {\n linkTo,\n name: originalName,\n group,\n onClickParams,\n onClick,\n labelDetail,\n isSubmenu,\n isSelected,\n } = item;\n const name = originalName === 'Clips & Extras' ? 'Clips' : originalName;\n const {\n accessibilityOverride,\n useLabelDetail,\n getSelected,\n onCloseDropdown,\n theme,\n openSubmenu,\n selected,\n getUrlTarget,\n } = this.props;\n const firstItemName = _.get(item, '[0].name');\n let contentClasses = classNames(theme.itemContent, Style.itemContent);\n let itemClasses = classNames(theme.item, Style.item);\n if (isSelected || selected === name || (!selected && firstItemName === name)) {\n contentClasses = classNames(contentClasses, theme.itemContentActive, Style.itemContentActive);\n itemClasses = classNames(itemClasses, theme.itemActive);\n }\n let target = null;\n let rel = null;\n if (getUrlTarget) {\n target = _.get(getUrlTarget(linkTo), 'target');\n rel = _.get(getUrlTarget(linkTo), 'rel');\n }\n // div's in some context will not be tabbable and will need to be for accessibility\n const content = accessibilityOverride ? (\n <button className={contentClasses}>\n {name}\n {useLabelDetail && <span style={{ marginLeft: 10 }}>{labelDetail}</span>}\n </button>\n ) : (\n <div className={contentClasses}>\n {name}\n {useLabelDetail && <span style={{ marginLeft: 10 }}>{labelDetail}</span>}\n </div>\n );\n return (\n <Link\n key={`${name} + ${key}`}\n className={itemClasses}\n to={linkTo}\n target={target}\n rel={rel}\n onClick={() => {\n if (onClick) {\n onClick(onClickParams);\n }\n\n if (isSubmenu) {\n openSubmenu(group);\n }\n\n if (getSelected) {\n getSelected(name);\n }\n\n if (onCloseDropdown) {\n onCloseDropdown();\n }\n }}\n >\n {content}\n </Link>\n );\n }\n\n renderGroupedItems(items) {\n return _.map(items, (item, key) => this.renderMenuItem(item, key));\n }\n\n render() {\n const {\n accessibilityOverride,\n className,\n defaultText,\n displayResults,\n expanded,\n expandedHeaderCopy,\n getIcon,\n items,\n onCloseDropdown,\n onOpenDropdown,\n selected,\n showMobileCancel,\n theme,\n isActive,\n preserveTitle,\n isError,\n disabled,\n } = this.props;\n const selectedText = selected || defaultText;\n let itemTags;\n\n if (!_.isEmpty(items) && displayResults) {\n const partitionedItems = _.partition(items, ['group', true]);\n const singleMenuItems = _.map(partitionedItems[0], (item, index) =>\n this.renderMenuItem(item, index),\n );\n const groupedItems = this.renderGroupedItems(partitionedItems[1]);\n\n itemTags = [...singleMenuItems, ...groupedItems];\n }\n const onClick = () => {\n if (!disabled) return expanded ? onCloseDropdown() : onOpenDropdown();\n return null;\n };\n const itemContainerClass = expanded\n ? classNames(theme.itemContainer, Style.itemContainer)\n : classNames(theme.hideItemContainer, Style.hideItemContainer);\n const itemContainer = displayResults ? (\n <div className={classNames([itemContainerClass, expandedHeaderCopy])}>{itemTags}</div>\n ) : null;\n let containerClasses = classNames(className, theme.container, Style.container);\n let headerClasses = classNames(theme.header, Style.header);\n const headerInnerContainerClasses = [\n classNames(theme.headerInnerContainer, Style.headerInnerContainer),\n ];\n let selectedTextClasses = isActive\n ? classNames(theme.active, theme.selectedText, Style.selectedText)\n : classNames(theme.selectedText, Style.selectedText);\n\n if (isError) headerInnerContainerClasses.push(theme.headerInnerContainerError);\n if (expanded) {\n containerClasses = classNames(containerClasses, theme.containerOpen);\n headerClasses = classNames(headerClasses, theme.headerOpen, Style.headerOpen);\n selectedTextClasses = classNames(\n selectedTextClasses,\n theme.selectedTextOpen,\n Style.selectedTextOpen,\n );\n headerInnerContainerClasses.push(theme.headerInnerContainerOpen);\n }\n if (disabled) {\n selectedTextClasses = classNames(theme.selectedText, Style.selectedText, theme.disabledText);\n headerClasses = classNames(theme.header, Style.header, theme.headerDisabled);\n }\n\n // div's in some context will not be tabbable and will need to be for accessibility\n const header = accessibilityOverride ? (\n <button className={classNames(headerInnerContainerClasses)}>\n <Link className={selectedTextClasses} onClick={onClick} data-testid=\"dropdown-item\">\n {preserveTitle ? defaultText : selectedText}\n </Link>\n {getIcon(onClick)}\n </button>\n ) : (\n <div className={classNames(headerInnerContainerClasses)}>\n <Link className={selectedTextClasses} onClick={onClick} data-testid=\"dropdown-item\">\n {preserveTitle ? defaultText : selectedText}\n </Link>\n {getIcon(onClick)}\n </div>\n );\n return (\n <>\n <div\n className={containerClasses}\n data-testid=\"dropdown\"\n onClick={expanded ? this.closeWhenOutOfBounds : noop}\n >\n <div className={headerClasses} onClick={onClick}>\n {header}\n </div>\n {itemContainer}\n </div>\n {displayResults && showMobileCancel && (\n <Link\n key=\"cancel\"\n className={Style.cancelButton}\n onClick={() => {\n onCloseDropdown();\n }}\n />\n )}\n </>\n );\n }\n}\n\nDropdown.defaultProps = {\n accessibilityOverride: false,\n className: null,\n defaultText: '',\n disabled: null,\n displayResults: null,\n expanded: null,\n expandedHeaderCopy: {},\n getIcon: noop,\n getSelected: null,\n getUrlTarget: noop,\n isActive: null,\n isError: null,\n items: [],\n onCloseDropdown: noop,\n onOpenDropdown: noop,\n openSubmenu: noop,\n preserveTitle: null,\n selected: null,\n showMobileCancel: null,\n useLabelDetail: false,\n};\n\nDropdown.propTypes = {\n accessibilityOverride: PropTypes.bool,\n className: PropTypes.string,\n defaultText: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({})]),\n disabled: PropTypes.bool,\n displayResults: PropTypes.bool,\n expanded: PropTypes.bool,\n expandedHeaderCopy: PropTypes.shape({}),\n getIcon: PropTypes.func,\n getSelected: PropTypes.string,\n getUrlTarget: PropTypes.func,\n isActive: PropTypes.bool,\n isError: PropTypes.bool,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n onCloseDropdown: PropTypes.func,\n onOpenDropdown: PropTypes.func,\n openSubmenu: PropTypes.func,\n preserveTitle: PropTypes.bool,\n selected: PropTypes.string,\n showMobileCancel: PropTypes.bool,\n theme: PropTypes.shape({}).isRequired,\n useLabelDetail: PropTypes.bool,\n};\n\nexport default Dropdown;\n","import _ from 'lodash';\nimport { animateScroll } from 'react-scroll';\nimport { browserHistory } from 'react-router';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { helperGetBaseUrlSlug, cleanString } from 'helpers/RouteHelper';\n\nexport const OVERLAY_SHOWS_FILTER = 'OVERLAY_SHOWS_FILTER';\nconst OVERLAY_MOVIES_FILTER = 'OVERLAY_MOVIES_FILTER';\nexport const OVERLAY_ACCOUNT = 'OVERLAY_ACCOUNT';\nexport const OVERLAY_HEADER_SEARCH = 'OVERLAY_HEADER_SEARCH';\nexport const OVERLAY_HEADER_DROPDOWN = 'OVERLAY_HEADER_DROPDOWN';\nconst OVERLAY_SEARCH_FILTER = 'OVERLAY_SEARCH_FILTER';\nconst OVERLAY_SHOW_DETAIL_TABS = 'OVERLAY_SHOW_DETAIL_TABS';\nconst OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT = 'OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT';\nexport const OVERLAY_AUTH_MVPD_START = 'OVERLAY_AUTH_MVPD_START';\nconst OVERLAY_AUTH_MVPD_SEARCH = 'OVERLAY_AUTH_MVPD_SEARCH';\nconst OVERLAY_AUTH_SUCCESS = 'OVERLAY_AUTH_MVPD_SUCCESS';\nconst OVERLAY_AUTH_MVPD_IFRAME = 'OVERLAY_AUTH_MVPD_IFRAME';\nconst OVERLAY_AUTH_UPSELL_CONFIRM = 'OVERLAY_AUTH_UPSELL_CONFIRM';\nconst OVERLAY_AUTH_UPSELL_ERROR = 'OVERLAY_AUTH_UPSELL_ERROR';\nexport const OVERLAY_ALL_COLLECTIONS = 'OVERLAY_ALL_COLLECTIONS';\nexport const OVERLAY_SHOW_SEASONS_TAB = 'OVERLAY_SHOW_SEASONS_TAB';\nexport const OVERLAY_SHOW_CLIPS_TAB = 'OVERLAY_SHOW_CLIPS_TAB';\nexport const OVERLAY_SHOW_MORE_TAB = 'OVERLAY_SHOW_MORE_TAB';\nexport const OVERLAY_LIVE_DATES = 'OVERLAY_LIVE_DATES';\nexport const OVERLAY_LIVE_NETWORKS = 'OVERLAY_LIVE_NETWORKS';\nexport const OVERLAY_LIVE_CTA_OVERFLOW = 'OVERLAY_LIVE_CTA_OVERFLOW';\nexport const OVERLAY_PRIMETIME_DATES = 'OVERLAY_PRIMETIME_DATES';\nconst OVERLAY_HOME_CTA_OVERFLOW = 'OVERLAY_HOME_CTA_OVERFLOW';\nexport const OVERLAY_VIDEO_MODAL = 'OVERLAY_VIDEO_MODAL';\nconst OVERLAY_UPCOMING_DETAIL = 'OVERLAY_UPCOMING_DETAIL';\n\nexport const OVERLAY_BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: [\n OVERLAY_ACCOUNT,\n OVERLAY_HEADER_SEARCH,\n OVERLAY_SHOWS_FILTER,\n OVERLAY_MOVIES_FILTER,\n OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT,\n OVERLAY_AUTH_MVPD_START,\n OVERLAY_AUTH_MVPD_SEARCH,\n OVERLAY_AUTH_MVPD_IFRAME,\n OVERLAY_AUTH_SUCCESS,\n OVERLAY_AUTH_UPSELL_CONFIRM,\n OVERLAY_AUTH_UPSELL_ERROR,\n OVERLAY_ALL_COLLECTIONS,\n OVERLAY_VIDEO_MODAL,\n ],\n [SITE_PLATFORM_WEB]: [\n OVERLAY_ACCOUNT,\n OVERLAY_HEADER_SEARCH,\n OVERLAY_SHOWS_FILTER,\n OVERLAY_MOVIES_FILTER,\n OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT,\n OVERLAY_AUTH_MVPD_START,\n OVERLAY_AUTH_MVPD_SEARCH,\n OVERLAY_AUTH_MVPD_IFRAME,\n OVERLAY_AUTH_SUCCESS,\n OVERLAY_AUTH_UPSELL_CONFIRM,\n OVERLAY_AUTH_UPSELL_ERROR,\n OVERLAY_ALL_COLLECTIONS,\n OVERLAY_VIDEO_MODAL,\n ],\n [SITE_PLATFORM_TABLET]: [\n OVERLAY_SHOWS_FILTER,\n OVERLAY_MOVIES_FILTER,\n OVERLAY_ACCOUNT,\n OVERLAY_HEADER_SEARCH,\n OVERLAY_HEADER_DROPDOWN,\n OVERLAY_SEARCH_FILTER,\n OVERLAY_SHOW_DETAIL_TABS,\n OVERLAY_SHOWS_FILTER,\n OVERLAY_MOVIES_FILTER,\n OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT,\n OVERLAY_AUTH_MVPD_START,\n OVERLAY_AUTH_MVPD_SEARCH,\n OVERLAY_AUTH_SUCCESS,\n OVERLAY_AUTH_MVPD_IFRAME,\n OVERLAY_AUTH_UPSELL_CONFIRM,\n OVERLAY_AUTH_UPSELL_ERROR,\n OVERLAY_ALL_COLLECTIONS,\n OVERLAY_SHOW_SEASONS_TAB,\n OVERLAY_SHOW_CLIPS_TAB,\n OVERLAY_SHOW_MORE_TAB,\n OVERLAY_LIVE_DATES,\n OVERLAY_LIVE_NETWORKS,\n OVERLAY_LIVE_CTA_OVERFLOW,\n OVERLAY_PRIMETIME_DATES,\n OVERLAY_VIDEO_MODAL,\n OVERLAY_UPCOMING_DETAIL,\n ],\n [SITE_PLATFORM_MOBILE]: [\n OVERLAY_SHOWS_FILTER,\n OVERLAY_MOVIES_FILTER,\n OVERLAY_ACCOUNT,\n OVERLAY_HEADER_SEARCH,\n OVERLAY_HEADER_DROPDOWN,\n OVERLAY_SEARCH_FILTER,\n OVERLAY_SHOW_DETAIL_TABS,\n OVERLAY_SHOWS_FILTER,\n OVERLAY_MOVIES_FILTER,\n OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT,\n OVERLAY_AUTH_MVPD_START,\n OVERLAY_AUTH_MVPD_SEARCH,\n OVERLAY_AUTH_SUCCESS,\n OVERLAY_AUTH_MVPD_IFRAME,\n OVERLAY_AUTH_UPSELL_CONFIRM,\n OVERLAY_AUTH_UPSELL_ERROR,\n OVERLAY_ALL_COLLECTIONS,\n OVERLAY_SHOW_SEASONS_TAB,\n OVERLAY_SHOW_CLIPS_TAB,\n OVERLAY_SHOW_MORE_TAB,\n OVERLAY_LIVE_DATES,\n OVERLAY_LIVE_NETWORKS,\n OVERLAY_LIVE_CTA_OVERFLOW,\n OVERLAY_PRIMETIME_DATES,\n OVERLAY_HOME_CTA_OVERFLOW,\n OVERLAY_VIDEO_MODAL,\n OVERLAY_UPCOMING_DETAIL,\n ],\n};\n\nexport function shapeFilters(filters, onClick) {\n if (!filters) return null;\n return filters.map((filter, idx) => {\n const newFilter = filter;\n newFilter.onClickParams = {\n url: filter.url,\n name: filter.name,\n idx,\n };\n newFilter.onClick = onClick;\n return newFilter;\n });\n}\n\n/*\n * fetchList should be provided when function is bound\n */\nexport function onFilterClick(fetchList, onClickParams) {\n const { url, name, ignoreUpdatingUrl } = onClickParams;\n const {\n accessToken,\n deviceId,\n location: { pathname },\n params: { collectionId },\n tabs,\n } = this.props;\n this.setState({ selectedFilter: name, openDropdown: false });\n if (!ignoreUpdatingUrl) {\n const baseUrlSlug = helperGetBaseUrlSlug();\n const pageIdLocation = baseUrlSlug.split('/').length;\n const pageId = _.get(pathname.split('/'), pageIdLocation, null);\n const pageElement = pageId ? `/${pageId}` : '';\n const headline = _.get(tabs, `${[0]}.headline`);\n const defaultHeadline = encodeURIComponent(cleanString(headline));\n let collectionElement = '';\n if (pageId && pageId.toLowerCase() !== 'movies') {\n collectionElement = collectionId\n ? `/collection/${collectionId}`\n : `/collection/${defaultHeadline}`;\n }\n const filterElement = name ? `/filter/${encodeURIComponent(_.toLower(name))}` : '';\n const nextUrl = `${baseUrlSlug}${pageElement}${collectionElement}${filterElement}`;\n if (nextUrl.length > 0) browserHistory.push(`${nextUrl}/`);\n }\n if (fetchList) {\n fetchList({ accessToken, deviceId, url });\n this.setState({ showLoader: true });\n }\n animateScroll.scrollToTop();\n}\n\nexport function shouldPausePlayer({ overlay, breakpointDisableScroll }) {\n const preventPauseOverlays = [OVERLAY_LIVE_DATES];\n const preventPause = _.includes(preventPauseOverlays, overlay) && !breakpointDisableScroll;\n return !preventPause;\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport classNames from 'classnames';\nimport { noop } from 'helpers/GlobalHelper';\nimport Style from './CountdownText.module.scss';\n\nclass CountdownText extends Component {\n constructor(props) {\n super(props);\n this.state = {\n duration: props.duration,\n };\n }\n\n componentDidMount() {\n this.startCountdown();\n }\n\n formatDuration = duration => {\n const sec = duration % 60;\n const seconds = sec < 10 ? `0${sec}` : sec;\n const minutes = Math.floor(duration / 60);\n return `${minutes}:${seconds}`;\n };\n\n startCountdown() {\n const { clearInterval, setInterval, onCountdownEnd } = this.props;\n setInterval(() => {\n const { duration } = this.state;\n if (duration <= 0) {\n onCountdownEnd();\n clearInterval();\n } else {\n this.setState({ duration: duration - 1 });\n }\n }, 1000);\n }\n\n render() {\n const { prefix, isVideoContainer } = this.props;\n const { duration } = this.state;\n const timeLeft = this.formatDuration(duration);\n return (\n <div\n className={classNames([\n Style.countdownTime,\n isVideoContainer && Style.countdownVideoContainer,\n ])}\n >\n {prefix}\n {timeLeft}\n </div>\n );\n }\n}\n\nCountdownText.defaultProps = {\n isVideoContainer: false,\n onCountdownEnd: noop,\n prefix: null,\n};\n\nCountdownText.propTypes = {\n clearInterval: PropTypes.func.isRequired,\n duration: PropTypes.number.isRequired,\n isVideoContainer: PropTypes.bool,\n onCountdownEnd: PropTypes.func,\n prefix: PropTypes.string,\n setInterval: PropTypes.func.isRequired,\n};\n\nconst TimeoutCountdownText = ReactTimeout(CountdownText);\n\nexport default TimeoutCountdownText;\n","/* global FavoritesEnabled */\n/* eslint-disable jsx-a11y/no-static-element-interactions, react/no-array-index-key */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, withRouter } from 'react-router';\nimport Icon from 'components/Icon';\nimport Badge from 'components/Badge';\nimport Tile from 'components/TileLegacy';\nimport Dropdown from 'components/Dropdown';\nimport Favorite, {\n FAVORITE_TYPE_ICON,\n FAVORITE_TYPE_BUTTON,\n FAVORITE_PLUS_CIRCLE,\n} from 'components/Favorite';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport { LIVE_EPG_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport {\n Events,\n getTealiumLiveEvents,\n handleAnalytics,\n handleTealiumButtonAction,\n PageNames,\n SegmentSources,\n setSegmentRestartedPlaybackGlobal,\n tealiumEventPageTypes,\n TrackEvents as GeneralTrackEvents,\n} from '@foxcorp/delta-web-analytics';\nimport { scheduleItemVideoProcessor, requiresAuthElement } from 'helpers/VideoProcessorHelper';\nimport {\n getShowType,\n sportsFeatures,\n truncateDesc,\n isSportsContent,\n isSportsVideoLive,\n} from 'helpers/ContentHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport CountdownText from 'components/CountdownText';\nimport {\n FORMAT_TIME,\n now,\n isBefore,\n isAfter,\n differenceInMinutes,\n format,\n stringToDate,\n msToDate,\n} from 'helpers/DateTimeHelper';\nimport { OVERLAY_LIVE_CTA_OVERFLOW } from 'helpers/FilterHelper';\nimport {\n getVideoData,\n getMobileVideoMetadata,\n getVideoTimeData,\n calculateDurationWidth,\n TYPE_SHOW,\n isReturningVistor,\n isGapFiller,\n} from 'screens/Live/LiveHelpers';\nimport { restoreLiveGridState } from 'screens/Live/LiveActions';\nimport dropdownTheme from 'screens/Live/styles/Dropdown.css';\nimport favoriteTheme from 'screens/Live/styles/Favorite.css';\nimport tileTheme from './ScheduleItemTile.css';\nimport Style from './ScheduleItem.module.scss';\n\nconst trackingPageType = _.get(tealiumEventPageTypes, PageNames.LIVE_SCHEDULE);\nconst TYPE_CURRENT = 'current';\nconst TYPE_FUTURE = 'future';\nconst TYPE_DUMMY = 'dummy';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n enableTruncateDesc: false,\n gridTotalHours: 3,\n canScrollGrid: true,\n },\n [SITE_PLATFORM_WEB]: {\n enableTruncateDesc: false,\n gridTotalHours: 2,\n canScrollGrid: true,\n },\n [SITE_PLATFORM_TABLET]: {\n enableTruncateDesc: false,\n canScrollGrid: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n enableTruncateDesc: false,\n canScrollGrid: false,\n },\n};\n\nclass ScheduleItem extends Component {\n constructor(props) {\n super(props);\n this.state = {\n openItemId: null,\n };\n this.toggleOverflowDropdown = this.toggleOverflowDropdown.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { openRow, rowIdx, prevOpenRow, prevRowIdx, location, restoreLiveGridState } = this.props;\n const { openRow: nextOpenRow } = nextProps;\n const { openItemId } = this.state;\n if (openRow === rowIdx && openRow !== nextOpenRow) {\n this.setState({ openItemId: null });\n }\n if (prevOpenRow && openItemId === null && prevRowIdx === rowIdx) {\n if (isReturningVistor(location)) {\n this.toggleItemId(prevOpenRow, prevRowIdx);\n }\n restoreLiveGridState();\n }\n }\n\n shouldComponentUpdate(nextProps) {\n const { openRow, rowIdx, epgGridPage, dropdownDateClosed } = this.props;\n const { openRow: nextOpenRow, epgGridPage: nextEpgGridPage } = nextProps;\n\n if (\n nextOpenRow !== rowIdx &&\n openRow !== rowIdx &&\n epgGridPage === nextEpgGridPage &&\n !dropdownDateClosed\n )\n return false;\n return true;\n }\n\n componentWillUnmount() {\n const { restoreLiveGridState, rowIdx } = this.props;\n const { openItemId } = this.state;\n if (openItemId) {\n restoreLiveGridState(openItemId, rowIdx);\n }\n }\n\n getDummyTitle(startDate) {\n const { displayPrimeTimeMessage, primeTimeMessage, network, loadingGrid } = this.props;\n const {\n global_loading: textLoading,\n programNotAvailable_text: textProgramNotAvailable,\n epg_prePrimetimeText: textPrePrimeTime,\n } = window.Language;\n const dummyVideo = {\n network,\n startDate,\n };\n const showPrimeTimeMessage = displayPrimeTimeMessage(dummyVideo);\n if (loadingGrid) return textLoading;\n if (!showPrimeTimeMessage) return textProgramNotAvailable;\n return primeTimeMessage || textPrePrimeTime;\n }\n\n getVideoById(id) {\n const { item } = this.props;\n const member = _.get(item, 'items.member', null);\n return member.find(x => x['@id'] === id) || null;\n }\n\n addDummyBlocks() {\n const {\n breakpoint,\n breakpointIsMobile,\n isOverFlow,\n item,\n lateProgramIdx,\n overFlowProgramIdx,\n selectedDate,\n } = this.props;\n const { gridTotalHours, canScrollGrid } = BREAKPOINTS[breakpoint];\n const member = _.get(item, 'items.member', null);\n if (!member) return null;\n\n const selectedDateCalc = selectedDate ? stringToDate(selectedDate) : now();\n const blocks = [];\n let currentShown = false;\n member.map((vid, idx) => {\n let video = vid;\n if (!isOverFlow && overFlowProgramIdx !== -1 && idx > lateProgramIdx && !breakpointIsMobile) {\n const lateProgramEndDateString = member[lateProgramIdx].endDate;\n const videoStartDate = stringToDate(video.startDate);\n const videoEndDate = stringToDate(video.endDate);\n const lateProgramEndDate = stringToDate(lateProgramEndDateString);\n\n const isBeforeLateProgram = isBefore(videoStartDate, lateProgramEndDate);\n const isAfterLateProgram = isAfter(videoEndDate, lateProgramEndDate);\n\n if (!isAfterLateProgram) return null;\n if (isBeforeLateProgram) {\n video = _.cloneDeep(video);\n video.startDate = lateProgramEndDateString;\n }\n }\n const videoTimeData = getVideoTimeData({\n video,\n current: selectedDate,\n gridTotalHours,\n canScrollGrid,\n });\n const { id, title, subtitle, badge } = getVideoData(video);\n const {\n starts,\n ends,\n isCurrent,\n startsInFuture,\n shouldBeVisible,\n withinSameDay,\n startsWithGrid,\n } = videoTimeData;\n const videoIsGapFiller = isGapFiller(video);\n let width = null;\n\n if (!isCurrent && !startsInFuture) {\n return null;\n }\n // if starts in future, calculate the width using duration\n if (startsInFuture && !isCurrent) {\n width = this.calculateBlockWidth(TYPE_FUTURE, videoTimeData);\n // if its current, calculate the timeLeft until it ends.\n } else if (isCurrent) {\n width = this.calculateBlockWidth(TYPE_CURRENT, videoTimeData);\n currentShown = true;\n }\n\n // add the dummy block if is there a gap\n if (startsInFuture && !currentShown) {\n const ends = format(stringToDate(video.startDate), FORMAT_TIME);\n blocks.push({\n id: `dummy-${id}`,\n itemClass: classNames(Style.scheduleItem, Style.current),\n width: this.calculateBlockWidth(TYPE_DUMMY, videoTimeData),\n title: isOverFlow ? '' : this.getDummyTitle(selectedDateCalc),\n subtitle: '',\n starts: '',\n ends,\n isDummy: true,\n shouldBeVisible: true,\n badge,\n });\n currentShown = true;\n }\n if (shouldBeVisible || (breakpointIsMobile && withinSameDay)) {\n blocks.push({\n id,\n isCurrent,\n width,\n title,\n subtitle,\n badge,\n starts,\n ends,\n isDummy: videoIsGapFiller,\n shouldBeVisible,\n startsWithGrid,\n });\n }\n return null;\n });\n\n if (blocks.length === 0) {\n blocks.push({\n id: 'dummy-1',\n itemClass: classNames(Style.scheduleItem, Style.current),\n width: calculateDurationWidth(180),\n title: this.getDummyTitle(selectedDateCalc),\n subtitle: '',\n starts: '',\n ends: '',\n isDummy: true,\n shouldBeVisible: true,\n badge: null,\n });\n } else {\n // add a dummy at the end just to fill the gaps if any.\n blocks.push({\n id: 'dummy-end',\n itemClass: classNames(Style.scheduleItem, Style.current),\n width: calculateDurationWidth(180),\n title: isOverFlow ? '' : this.getDummyTitle(selectedDateCalc),\n subtitle: '',\n starts: '',\n ends: '',\n isDummy: true,\n shouldBeVisible: true,\n badge: null,\n });\n }\n return blocks;\n }\n\n calculateBlockWidth(type, video) {\n const { startingTs } = this.props;\n const gridStarts = msToDate(startingTs * 1000);\n let timeLeft;\n let width;\n\n const { duration, startDate, endDate } = video;\n const starts = stringToDate(startDate);\n const ends = stringToDate(endDate);\n\n switch (type) {\n case TYPE_FUTURE:\n width = calculateDurationWidth(duration);\n break;\n case TYPE_CURRENT:\n timeLeft = differenceInMinutes(ends, gridStarts);\n width = calculateDurationWidth(timeLeft);\n break;\n case TYPE_DUMMY:\n timeLeft = differenceInMinutes(starts, gridStarts);\n width = calculateDurationWidth(timeLeft);\n break;\n default:\n width = 0;\n break;\n }\n return width;\n }\n\n toggleItemId(id, newRowIdx) {\n const { rowIdx, scheduleItemDetailsCB, resetStillWatchingTimeout } = this.props;\n const { openItemId } = this.state;\n let newopenItemId = id;\n const row = newRowIdx || rowIdx;\n if (typeof scheduleItemDetailsCB === 'function') {\n if (newopenItemId === openItemId) {\n scheduleItemDetailsCB(row, 'close');\n newopenItemId = null;\n } else {\n scheduleItemDetailsCB(row, 'open');\n const video = this.getVideoById(newopenItemId);\n if (video !== null) {\n const { subtitle, title } = getVideoData(video);\n handleAnalytics({\n event: Events.LIVE_TV_EPG_CELL_TAPPED,\n payload: {\n page_action_type: 'open cell detail',\n page_item_title: title,\n page_item_subtitle: subtitle,\n },\n });\n }\n }\n }\n this.setState({ openItemId: newopenItemId });\n resetStillWatchingTimeout();\n }\n\n toggleOverflowDropdown() {\n const { resetStillWatchingTimeout, setOverlay } = this.props;\n setOverlay(OVERLAY_LIVE_CTA_OVERFLOW);\n resetStillWatchingTimeout();\n }\n\n renderDetails() {\n const {\n account,\n breakpoint,\n breakpointIsMobile,\n callSign,\n isAuthenticated,\n item,\n overFlowProgramIdx,\n resetStillWatchingTimeout,\n rowIdx,\n saveLiveRestart,\n switchChannelCB,\n } = this.props;\n const { enableTruncateDesc, canScrollGrid } = BREAKPOINTS[breakpoint];\n const { openItemId } = this.state;\n if (openItemId === null) return <div className={Style.detailContainer} />;\n\n const {\n global_moreSeriesDeeplinkButton: labelMoreEpisodes,\n global_watchLiveButton: labelWatchLive,\n global_watchButton: labelWatch,\n global_restartButton: labelRestart,\n } = window.Language;\n const video = this.getVideoById(openItemId);\n if (video === null) return null;\n\n const {\n description,\n fullEpisodeCount,\n metadata: metadataSource,\n moreInfoUrl,\n requiresAuthLive,\n shouldRenderVODCta,\n shouldRenderLiveCta,\n subtitle,\n subtitleName,\n title,\n videoType,\n watchUrl,\n } = getVideoData(video);\n const restartData = video;\n const metadata = breakpointIsMobile ? getMobileVideoMetadata(video) : metadataSource;\n const videoIsSportsContent = isSportsContent(video);\n const { isCurrent, secUntilStart } = getVideoTimeData({ video, canScrollGrid });\n\n const isAuthZ = !requiresAuthLive;\n const lockIcon = requiresAuthElement({\n requiresAuth: requiresAuthLive,\n lockClass: Style.lock,\n isAuthenticated,\n viewBox: '0 4 24 20',\n });\n const actionButtons = [];\n const ctaDetails = [];\n const actionButtonsClasses = [Style.actionButtons];\n const handleWatchLive = () => {\n const {\n [GeneralTrackEvents.SCHEDULE_WATCH_LIVE]: tealiumScheduleWatchLive,\n } = getTealiumLiveEvents();\n handleAnalytics({\n event: Events.LIVE_TV_BUTTON_ACTION,\n payload: {\n page_item_title: title,\n page_item_subtitle: subtitle,\n page_action_type: 'watch',\n },\n });\n tealiumScheduleWatchLive({ network: callSign });\n handleTealiumButtonAction({ text: labelWatchLive, title, subtitle: subtitleName, account });\n resetStillWatchingTimeout();\n this.toggleItemId(openItemId);\n };\n\n let watchLiveButton = null;\n const videoIndex = _.findIndex(item.items.member, video);\n const newRowIdx =\n videoIndex === overFlowProgramIdx && breakpointIsMobile ? `${rowIdx}-overFlow` : rowIdx;\n const buttonText =\n videoIsSportsContent && !isSportsVideoLive(video) ? labelWatch : labelWatchLive;\n\n if (shouldRenderLiveCta) {\n let liveBtnClasses = Style.actionButton;\n\n if (!isAuthZ) {\n liveBtnClasses = classNames(\n liveBtnClasses,\n isAuthenticated ? Style.noAuthZActionButton : Style.actionButtonLocked,\n );\n }\n\n watchLiveButton = (\n <Link\n key={`watch-live-${openItemId}`}\n className={liveBtnClasses}\n onClick={() => {\n handleWatchLive();\n switchChannelCB(newRowIdx);\n }}\n >\n {lockIcon} {buttonText}\n </Link>\n );\n\n if (videoIsSportsContent) {\n actionButtons.push(watchLiveButton);\n ctaDetails.push({\n name: buttonText,\n onClick: () => {\n handleWatchLive();\n switchChannelCB(newRowIdx);\n },\n });\n }\n }\n\n if (shouldRenderVODCta) {\n const vodText = isCurrent ? labelRestart : labelWatch;\n let restartBtnClasses = Style.actionButton;\n if (!isAuthZ) {\n restartBtnClasses = classNames(\n restartBtnClasses,\n isAuthenticated ? Style.noAuthZActionButton : Style.actionButtonLocked,\n );\n }\n ctaDetails.push({\n name: vodText,\n onClick: () => {\n const { router } = this.props;\n const {\n [GeneralTrackEvents.SCHEDULE_RESTART]: tealiumScheduleRestart,\n } = getTealiumLiveEvents();\n\n saveLiveRestart(restartData);\n handleTealiumButtonAction({ text: vodText, title, subtitle: subtitleName, account });\n handleAnalytics({\n event: Events.LIVE_TV_BUTTON_ACTION,\n patload: {\n page_item_title: title,\n page_item_subtitle: subtitle,\n page_action_type: 'restart',\n },\n });\n tealiumScheduleRestart({ network: callSign });\n if (isCurrent) setSegmentRestartedPlaybackGlobal(true);\n resetStillWatchingTimeout();\n router.push(watchUrl);\n },\n });\n actionButtons.push(\n <Link\n data-test=\"epg-detail-restart-cta\"\n key={`restart-${openItemId}`}\n className={restartBtnClasses}\n to={watchUrl}\n onClick={() => {\n const {\n [GeneralTrackEvents.SCHEDULE_RESTART]: tealiumScheduleRestart,\n } = getTealiumLiveEvents();\n\n saveLiveRestart(restartData);\n handleTealiumButtonAction({ text: vodText, title, subtitle: subtitleName, account });\n handleAnalytics({\n event: Events.LIVE_TV_BUTTON_ACTION,\n payload: {\n page_item_title: title,\n page_item_subtitle: subtitle,\n page_action_type: 'restart',\n },\n });\n tealiumScheduleRestart({ network: callSign });\n if (isCurrent) setSegmentRestartedPlaybackGlobal(true);\n resetStillWatchingTimeout();\n }}\n >\n {lockIcon} {vodText}\n </Link>,\n );\n }\n\n if (shouldRenderLiveCta && !videoIsSportsContent) {\n actionButtons.push(watchLiveButton);\n ctaDetails.push({\n name: buttonText,\n onClick: () => {\n handleWatchLive();\n switchChannelCB(newRowIdx);\n },\n });\n }\n\n const showCountdownSeconds = _.get(window.ExternalConfig, 'countDownTimerInSeconds', 5 * 60);\n const shouldShowTimer = !isCurrent && secUntilStart && secUntilStart < showCountdownSeconds;\n if (sportsFeatures() && shouldShowTimer) {\n let countdownBtnClasses = Style.actionButton;\n if (!isAuthZ) {\n countdownBtnClasses = classNames(\n countdownBtnClasses,\n isAuthenticated ? Style.noAuthZActionButton : Style.actionButtonLocked,\n );\n }\n actionButtonsClasses.push(Style.buttonGutter);\n const buttonKey = `up-next-${openItemId}`;\n actionButtons.push(\n <Link\n key={buttonKey}\n className={countdownBtnClasses}\n onClick={() => {\n handleWatchLive();\n switchChannelCB(rowIdx);\n }}\n >\n <div className={Style.actionButtonText}>\n {lockIcon}\n Tune In Now\n <span className={Style.secondaryText}>\n <CountdownText prefix=\"Starts in \" duration={secUntilStart} />\n </span>\n </div>\n </Link>,\n );\n ctaDetails.push({\n name: 'Tune In Now',\n onClick: () => {\n handleWatchLive();\n switchChannelCB(rowIdx);\n },\n });\n }\n\n /* SPORT CONTENT DOES NOT CURRENTLY HAVE DESCRIPTIONS\n * If action button below is enabled, a solution must be created to\n * handle adding an option into CtaOverflow DCG-Shared List Comp\n */\n\n // If its greater than 10 characters and its a sports item. Show more info button.\n /*\n if (description &&\n description.length > SPORTS_MAX_DESC_LENGTH &&\n sportsFeatures() &&\n enableTruncateDesc\n ) {\n actionButtons.push(\n <MoreInfoButton\n key={`more-info-${openItemId}`}\n className={theme.actionButton}\n value={labelMoreInfo}\n description={description}\n />,\n );\n }\n */\n\n if (fullEpisodeCount) {\n actionButtons.push(\n <Link\n onClick={() => {\n handleAnalytics({\n event: Events.LIVE_TV_BUTTON_ACTION,\n payload: {\n page_item_title: title,\n page_item_subtitle: subtitle,\n page_action_type: 'more episodes',\n },\n });\n }}\n key={`more-episodes-${openItemId}`}\n className={Style.actionButton}\n to={moreInfoUrl}\n >\n {labelMoreEpisodes}\n </Link>,\n );\n ctaDetails.push({\n name: labelMoreEpisodes,\n onClick: () => {\n const { router } = this.props;\n handleAnalytics({\n event: Events.LIVE_TV_BUTTON_ACTION,\n payload: {\n page_item_title: title,\n page_item_subtitle: subtitle,\n page_action_type: 'more episodes',\n },\n });\n router.push(moreInfoUrl);\n },\n });\n }\n\n const mobileActionButtons =\n actionButtons.length > 2 ? actionButtons.slice(0, 2) : actionButtons;\n\n const tileProps = scheduleItemVideoProcessor({ item: video });\n let descriptionElement = null;\n let rightElement = null;\n let actionButtonsElement = null;\n if (!breakpointIsMobile) {\n descriptionElement = (\n <div className={Style.detailDescription}>\n {truncateDesc(description, enableTruncateDesc)}\n </div>\n );\n rightElement = (\n <div className={Style.detailContainerRight}>\n <Tile\n itemIndex={0}\n {...tileProps}\n theme={tileTheme}\n renderImage={image =>\n renderImage({\n breakpoint,\n imageType: LIVE_EPG_THUMBNAIL_IMAGE,\n ...image,\n })\n }\n />\n </div>\n );\n }\n if (actionButtons && actionButtons.length > 0) {\n actionButtonsElement = (\n <div\n className={classNames(actionButtonsClasses, Style.actionButtons)}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n {breakpointIsMobile ? mobileActionButtons : actionButtons}\n {!breakpointIsMobile && this.renderFavorite(FAVORITE_TYPE_BUTTON)}\n {breakpointIsMobile && this.renderOverflowDropdown(ctaDetails)}\n </div>\n );\n } else {\n actionButtonsElement = (\n <div\n className={classNames(actionButtonsClasses, Style.actionButtons)}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n {!breakpointIsMobile && this.renderFavorite(FAVORITE_TYPE_BUTTON)}\n </div>\n );\n }\n const shouldRenderSubtitle =\n (!videoIsSportsContent && videoType === TYPE_SHOW) || (sportsFeatures() && video.sportTag);\n\n return (\n <div className={Style.detailContainer}>\n <div className={Style.detailContainerLeft}>\n <h2 className={Style.detailTitle}>{title}</h2>\n {breakpointIsMobile && this.renderFavorite(FAVORITE_TYPE_ICON)}\n {shouldRenderSubtitle && <div className={Style.detailSubtitle}>{subtitle}</div>}\n {descriptionElement}\n <div className={Style.detailInfo}>{metadata}</div>\n {actionButtonsElement}\n </div>\n {rightElement}\n </div>\n );\n }\n\n renderFavorite(favoriteType) {\n const { network, favoritesManager } = this.props;\n const { openItemId } = this.state;\n const video = this.getVideoById(openItemId);\n const {\n categoryType,\n showCode: showID,\n seriesName,\n favoritableItems,\n seriesType,\n videoType,\n } = video;\n const isPersonality = categoryType && categoryType === 'personality';\n const showType = getShowType({ seriesType, videoType });\n const { title, subtitle } = getVideoData(video);\n if (!FavoritesEnabled) return null;\n const recommendationId = _.get(video, 'trackingData.properties.recommendationId', null);\n const favoriteData = {\n actionLocation: 'live epg',\n showID,\n networkId: network,\n seriesName,\n showType,\n favoriteType: isPersonality ? 'personality' : showType,\n location: trackingPageType,\n source: SegmentSources.DETAIL,\n recommendationId,\n favoritableItems,\n };\n return (\n <div\n className={favoriteTheme.wrapper}\n onClick={e => {\n handleAnalytics({\n event: Events.LIVE_TV_BUTTON_ACTION,\n payloadd: {\n page_item_title: title,\n page_item_subtitle: subtitle,\n page_action_type: 'favorite',\n },\n });\n e.stopPropagation();\n }}\n >\n <Favorite\n manager={favoritesManager}\n data={favoriteData}\n type={favoriteType}\n theme={favoriteTheme}\n iconType={FAVORITE_PLUS_CIRCLE}\n />\n </div>\n );\n }\n\n renderItems() {\n const { account, openRow, rowIdx, breakpointIsMobile, selectedVideoData } = this.props;\n const { openItemId } = this.state;\n const blocks = this.addDummyBlocks();\n if (!blocks) return null;\n return blocks.map((block, idx) => {\n const { id, width, title, subtitle, badge, starts, ends, isDummy } = block;\n const badgeElement = badge && !isDummy ? <Badge badge={badge} theme={Style} /> : null;\n\n let itemClass =\n selectedVideoData && selectedVideoData['@id'] === id\n ? classNames(Style.scheduleItem, Style.current)\n : Style.scheduleItem;\n const isOpen = openItemId === id && openRow === rowIdx;\n itemClass = isOpen ? classNames(itemClass, Style.scheduleItemActive) : itemClass;\n itemClass = isDummy ? classNames(itemClass, Style.dummy) : itemClass;\n\n const hoverTitle = isDummy ? null : `${title}\\n(${starts} - ${ends})`;\n const styleWidth = breakpointIsMobile ? null : { width: `${width}px` };\n\n const arrow = (\n <Icon color=\"white\" icon={isOpen ? 'keyboard-arrow-up' : 'keyboard-arrow-down'} />\n );\n let detailsElement = (\n <span className={Style.titleContainer}>\n <span className={Style.title}>\n {badgeElement}\n <span className={Style.titleText}>{title}</span>\n </span>\n <span className={Style.subtitle}>{subtitle}</span>\n </span>\n );\n if (breakpointIsMobile && isOpen) {\n detailsElement = this.renderDetails();\n }\n\n return (\n <div\n key={idx}\n className={itemClass}\n style={styleWidth}\n data-test=\"scheduleitem-item\"\n title={hoverTitle}\n onClick={\n isDummy\n ? null\n : () => {\n if (!isOpen) {\n handleTealiumButtonAction({\n text: 'live tv detail',\n title,\n subtitle,\n account,\n });\n }\n this.toggleItemId(id);\n }\n }\n >\n {breakpointIsMobile ? <span className={Style.timestamp}>{starts}</span> : null}\n {detailsElement}\n {breakpointIsMobile ? <span className={Style.caret}>{arrow}</span> : null}\n </div>\n );\n });\n }\n\n renderOverflowDropdown(ctaDetails) {\n const { overlay } = this.props;\n if (ctaDetails.length < 3) return null;\n const isOpen = overlay === OVERLAY_LIVE_CTA_OVERFLOW;\n const overflowHoverEffect = isOpen ? null : dropdownTheme.overflowHoverEffect;\n const items = ctaDetails.slice(2);\n\n return (\n <div\n className={Style.overflowButtonWrapper}\n onClick={() => {\n this.toggleOverflowDropdown();\n }}\n >\n <Dropdown\n theme={dropdownTheme}\n items={items}\n onOpenDropdown={this.toggleOverflowDropdown}\n onCloseDropdown={this.toggleOverflowDropdown}\n displayResults\n showMobileCancel\n expanded={isOpen}\n className={classNames(\n Style.dropdown,\n dropdownTheme.overflowDropdown,\n overflowHoverEffect,\n )}\n getIcon={() => {}}\n defaultText=\"• • •\"\n />\n </div>\n );\n }\n\n render() {\n const { breakpointIsMobile } = this.props;\n return (\n <div className={Style.scheduleMain}>\n <div className={Style.container}>{this.renderItems()}</div>\n {!breakpointIsMobile ? this.renderDetails() : null}\n </div>\n );\n }\n}\n\nScheduleItem.defaultProps = {\n account: {},\n openRow: 0,\n displayPrimeTimeMessage: () => {},\n isAuthenticated: false,\n loadingGrid: false,\n primeTimeMessage: null,\n resetStillWatchingTimeout: () => {},\n selectedDate: {},\n switchChannelCB: () => {},\n breakpointIsMobile: false,\n selectedVideoData: null,\n overlay: null,\n favoritesManager: null,\n location: {},\n prevOpenRow: null,\n prevRowIdx: null,\n restoreLiveGridState: () => {},\n router: {},\n};\n\nScheduleItem.propTypes = {\n account: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n breakpointIsMobile: PropTypes.bool,\n callSign: PropTypes.string.isRequired,\n displayPrimeTimeMessage: PropTypes.func,\n dropdownDateClosed: PropTypes.bool,\n epgGridPage: PropTypes.number,\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})),\n setFavorites: PropTypes.func,\n deleteFavorites: PropTypes.func,\n }),\n isAuthenticated: PropTypes.bool,\n item: PropTypes.shape({\n autoPlayStill: PropTypes.shape({}),\n autoPlayVideo: PropTypes.shape({}),\n cacheSetting: PropTypes.string,\n callSign: PropTypes.string,\n dateModified: PropTypes.string,\n headline: PropTypes.string,\n hideIfLoggedIn: PropTypes.bool,\n hideIfNotLoggedIn: PropTypes.bool,\n id: PropTypes.string,\n imageTypes: PropTypes.arrayOf(PropTypes.string),\n images: PropTypes.shape({}),\n items: PropTypes.shape({}),\n itemsPerPage: PropTypes.number,\n name: PropTypes.string,\n panelType: PropTypes.string,\n validFor: PropTypes.number,\n }).isRequired,\n isOverFlow: PropTypes.bool.isRequired,\n lateProgramIdx: PropTypes.number.isRequired,\n loadingGrid: PropTypes.bool,\n location: PropTypes.shape({}),\n network: PropTypes.string,\n openRow: PropTypes.number,\n overFlowProgramIdx: PropTypes.number.isRequired,\n overlay: PropTypes.string,\n primeTimeMessage: PropTypes.string,\n prevOpenRow: PropTypes.string,\n prevRowIdx: PropTypes.number,\n restoreLiveGridState: PropTypes.func,\n resetStillWatchingTimeout: PropTypes.func,\n rowIdx: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n router: PropTypes.shape({\n push: PropTypes.func,\n }),\n saveLiveRestart: PropTypes.func,\n scheduleItemDetailsCB: PropTypes.func,\n selectedDate: PropTypes.shape({}),\n selectedVideoData: PropTypes.shape({}),\n setOverlay: PropTypes.func,\n startingTs: PropTypes.number.isRequired,\n switchChannelCB: PropTypes.func,\n};\n\nconst mapStateToProps = state => ({\n favorites: state.app.favorites,\n prevOpenRow: state.live.prevOpenRow,\n prevRowIdx: state.live.prevRowIdx,\n});\n\nconst mapDispatchToProps = { restoreLiveGridState };\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ScheduleItem));\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport classNames from 'classnames';\nimport { getTsMinutes } from 'screens/Live/LiveHelpers';\nimport Style from './CurrentTimer.module.scss';\n\nclass CurrentTimer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n minutes: getTsMinutes(),\n };\n }\n\n componentDidMount() {\n const { setInterval } = this.props;\n\n setInterval(() => {\n const { minutes } = this.state;\n const { totalMinutes, ended } = this.props;\n const newMinutes = getTsMinutes();\n const minutesElapsed = this.getMinutesElapsed(newMinutes);\n\n if (minutes !== newMinutes) {\n if (ended && minutesElapsed >= totalMinutes) {\n ended();\n }\n this.setState({ minutes: newMinutes });\n }\n }, 1000);\n }\n\n getMinutesElapsed(minutes) {\n const { startingTs } = this.props;\n return minutes - Math.floor(startingTs / 60);\n }\n\n render() {\n const { totalMinutes, openRow, totalRows } = this.props;\n const { minutes } = this.state;\n const minutesElapsed = this.getMinutesElapsed(minutes);\n const currentPosition = Math.floor(100 * (minutesElapsed / totalMinutes));\n const leftStyle = { left: `${currentPosition}%` };\n const splitStyleTop = { ...leftStyle, height: `calc(${openRow + 1} * 5.625rem - 14px)` };\n const splitStyleBottom = {\n ...leftStyle,\n height: `calc(${totalRows - openRow - 1} * 5.625rem - 20px)`,\n bottom: 0,\n };\n const timerClasses = [Style.container];\n const timerContainerClass = classNames(timerClasses);\n const splitTimer = (\n <>\n <div className={Style.splitTimer} style={splitStyleTop} />\n <div className={Style.splitTimer} style={splitStyleBottom} />\n </>\n );\n const fullTimer = <div style={leftStyle} className={Style.currentTimer} />;\n\n return (\n <div className={timerContainerClass}>\n <div style={leftStyle} className={Style.currentTimerArrow} />\n {openRow !== null ? splitTimer : fullTimer}\n </div>\n );\n }\n}\n\nCurrentTimer.defaultProps = {\n ended: () => {},\n openRow: null,\n totalRows: null,\n};\n\nCurrentTimer.propTypes = {\n ended: PropTypes.func,\n openRow: PropTypes.number,\n setInterval: PropTypes.func.isRequired,\n startingTs: PropTypes.number.isRequired,\n totalMinutes: PropTypes.number.isRequired,\n totalRows: PropTypes.number,\n};\n\nexport default ReactTimeout(CurrentTimer);\n","/* eslint-disable jsx-a11y/no-static-element-interactions, react/no-array-index-key */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Dropdown from 'components/Dropdown';\nimport { Link } from 'react-router';\nimport Loader from 'components/Loader';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport { SITE_PLATFORM_WEB, SITE_PLATFORM_WEB_LARGE } from 'helpers/BreakpointHelper';\nimport { sportsFeatures, isSportsContent } from 'helpers/ContentHelper';\nimport { scroller, Element } from 'react-scroll';\nimport {\n OVERLAY_LIVE_DATES,\n OVERLAY_LIVE_NETWORKS,\n OVERLAY_LIVE_CTA_OVERFLOW,\n} from 'helpers/FilterHelper';\nimport ScheduleItemComponent from 'screens/Live/components/ScheduleItem';\nimport {\n MINUTES_INTERVAL,\n PANEL_TYPE_LISTING,\n getNetworkLogo,\n getHourInterval,\n getStartingTs,\n displayPrimeTimeMessage,\n getPrimeTimeMessage,\n EPG_TOTAL_DAYS,\n checkForOverlap,\n getDateDropdownFormat,\n getDateDropdownIcon,\n isLastPanel,\n isReturningVistor,\n} from 'screens/Live/LiveHelpers';\nimport {\n FORMAT_WEEKDAY_MONTH_DAY,\n format,\n now,\n stringToDate,\n addDays,\n addHours,\n endOfDay,\n startOfDay,\n getHours,\n getMinutes,\n isSameDay,\n isAfter,\n subHours,\n setHours,\n} from 'helpers/DateTimeHelper';\nimport CurrentTimerComponent from 'screens/Live/components/CurrentTimer';\nimport dropdownTheme from 'screens/Live/styles/Dropdown.css';\nimport Style from '../../Live.module.scss';\n\nconst EPG_SCROLL_HOUR_JUMP = 2; // jump two hours.\nconst EPG_JUMPS_PER_DAY = 24 / EPG_SCROLL_HOUR_JUMP;\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n intervalCount: 6,\n },\n [SITE_PLATFORM_WEB]: {\n intervalCount: 4,\n },\n};\n\nclass ScheduleGrid extends Component {\n constructor(props) {\n super(props);\n this.state = {\n startingTs: getStartingTs(),\n openRow: null,\n dropdownDateClosed: null,\n dropdownNetworkOpen: false,\n epgGridPage: 1,\n startingDate: now(),\n endingDate: addDays(now(), EPG_TOTAL_DAYS - 1),\n };\n\n this.toggleNetworkDropdown = this.toggleNetworkDropdown.bind(this);\n this.toggleDateDropdown = this.toggleDateDropdown.bind(this);\n this.currentTimerEnded = this.currentTimerEnded.bind(this);\n this.getSelectedDate = this.getSelectedDate.bind(this);\n this.changeDate = this.changeDate.bind(this);\n }\n\n componentDidMount() {\n const selectedDate = this.getSelectedDate() || now();\n this.changeDate({ date: selectedDate });\n this.scrollToPreviousGridElement();\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const customizer = (objValue, othValue) => {\n if (_.isFunction(objValue) && _.isFunction(othValue)) {\n return true;\n }\n return false;\n };\n if (!_.isEqualWith(this.props, nextProps, customizer)) return true;\n if (!_.isEqual(this.state, nextState, customizer)) return true;\n return false;\n }\n\n getDropdownItems() {\n const items = [];\n const selectedDate = this.getSelectedDate();\n const hour = getHours(selectedDate);\n\n // create the 7 day options.\n for (let i = 0; i < EPG_TOTAL_DAYS; i += 1) {\n const date = setHours(addDays(now(), i), hour);\n const isSelected = isSameDay(selectedDate);\n items.push({\n name: format(date, FORMAT_WEEKDAY_MONTH_DAY),\n onClickParams: date,\n onClick: date => {\n this.changeDate({ date });\n this.toggleDateDropdown();\n },\n isSelected,\n });\n }\n return items;\n }\n\n getSelectedDate() {\n const { selectedDate } = this.props;\n return selectedDate === null ? now() : stringToDate(selectedDate);\n }\n\n changeDate({ date, resetTimer = true }) {\n const { setSelectedDate } = this.props;\n setSelectedDate(stringToDate(date), resetTimer);\n this.setState({ openRow: null, dropdownDateClosed: null, epgGridPage: 1 });\n }\n\n checkAtStarting(date) {\n const { startingDate } = this.state;\n\n const startingHours = getHours(startingDate);\n const startingMinutes = getMinutes(startingDate);\n const startingTime = startingHours * 60 + Math.floor(startingMinutes / MINUTES_INTERVAL);\n\n const dateHours = getHours(date);\n const dateMinutes = getMinutes(startingDate);\n const time = dateHours * 60 + Math.floor(dateMinutes / MINUTES_INTERVAL);\n\n return isSameDay(startingDate, date) && startingTime >= time;\n }\n\n checkSameDay(date) {\n const selectedDate = this.getSelectedDate();\n const result = isSameDay(selectedDate, date);\n return result;\n }\n\n closeDateDropdown() {\n const { overlay } = this.props;\n if (overlay === OVERLAY_LIVE_DATES) {\n this.toggleDateDropdown();\n }\n }\n\n currentTimerEnded() {\n this.changeDate({ resetTimer: false });\n this.setState({\n startingTs: getStartingTs(),\n startingDate: now(),\n epgGridPage: 1,\n openRow: null,\n dropdownDateClosed: null,\n });\n }\n\n gridNext() {\n const { epgGridPage } = this.state;\n const { resetStillWatchingTimeout } = this.props;\n const date = this.getSelectedDate();\n const newDate = addHours(date, EPG_SCROLL_HOUR_JUMP);\n let newEpgGridPage = epgGridPage + 1;\n if (!this.checkSameDay(newDate)) newEpgGridPage = 1;\n\n this.closeDateDropdown();\n this.changeDate({ date: newDate });\n this.setState({ openRow: null, dropdownDateClosed: null, epgGridPage: newEpgGridPage });\n resetStillWatchingTimeout();\n }\n\n gridPrev() {\n const { epgGridPage, startingDate } = this.state;\n const { resetStillWatchingTimeout } = this.props;\n const date = this.getSelectedDate();\n let newDate = subHours(date, EPG_SCROLL_HOUR_JUMP);\n let newEpgGridPage = epgGridPage - 1;\n if (!this.checkSameDay(newDate)) newEpgGridPage = EPG_JUMPS_PER_DAY;\n if (this.checkAtStarting(newDate)) newDate = startingDate;\n\n this.closeDateDropdown();\n this.changeDate({ date: newDate });\n this.setState({ openRow: null, dropdownDateClosed: null, epgGridPage: newEpgGridPage });\n resetStillWatchingTimeout();\n }\n\n isWeb() {\n const { breakpoint } = this.props;\n return breakpoint === SITE_PLATFORM_WEB || breakpoint === SITE_PLATFORM_WEB_LARGE;\n }\n\n scheduleItemDetailsCB(rowIdx, action) {\n const newOpenRow = action === 'close' ? null : rowIdx;\n this.setState({ openRow: newOpenRow, dropdownDateClosed: null });\n }\n\n scrollToPreviousGridElement() {\n const { prevRowIdx, location } = this.props;\n if (prevRowIdx && isReturningVistor(location)) {\n scroller.scrollTo(`${prevRowIdx}`, { duration: 300, offset: 0, smooth: true });\n this.setState({ openRow: prevRowIdx, dropdownDateClosed: null });\n }\n }\n\n toggleDateDropdown(close) {\n const { resetStillWatchingTimeout, setOverlay } = this.props;\n setOverlay(OVERLAY_LIVE_DATES);\n resetStillWatchingTimeout();\n\n if (close) {\n this.setState({ dropdownDateClosed: true });\n }\n }\n\n toggleNetworkDropdown() {\n const { resetStillWatchingTimeout, setOverlay } = this.props;\n setOverlay(OVERLAY_LIVE_NETWORKS);\n resetStillWatchingTimeout();\n }\n\n renderDateDropdown() {\n const { overlay } = this.props;\n const isOpen = overlay === OVERLAY_LIVE_DATES;\n const selectedDate = this.getSelectedDate();\n const dropDownformat = getDateDropdownFormat(isOpen && !this.isWeb());\n const items = this.getDropdownItems();\n const defaultText = selectedDate ? format(selectedDate, dropDownformat) : items[0].name;\n\n return (\n <Dropdown\n theme={dropdownTheme}\n items={items}\n getIcon={getDateDropdownIcon(isOpen)}\n defaultText={defaultText}\n onOpenDropdown={this.toggleDateDropdown}\n onCloseDropdown={() => this.toggleDateDropdown(true)}\n displayResults={isOpen}\n showMobileCancel={!this.isWeb()}\n expanded={isOpen}\n className={classNames(Style.dropdown, dropdownTheme.dateDropdown)}\n />\n );\n }\n\n renderDateLabel() {\n const { overlay } = this.props;\n const { epg_todayHeader: todayHeader, epg_tomorrowHeader: tomorrowHeader } = window.Language;\n const isOpen = overlay === OVERLAY_LIVE_DATES;\n if (isOpen) return null;\n\n let header = null;\n const daysToAdd = 1;\n const selectedDate = this.getSelectedDate();\n const today = now();\n const tomorrow = addDays(now(), daysToAdd);\n const isToday = isSameDay(selectedDate, today);\n const isTomorrow = isSameDay(selectedDate, tomorrow);\n\n if (isToday) header = todayHeader;\n if (isTomorrow) header = tomorrowHeader;\n if (!header) return null;\n return <div className={Style.tabDateLabel}>{header}</div>;\n }\n\n renderNetworkDropdown() {\n const { overlay, setSelectedDate } = this.props;\n const isOpen = overlay === OVERLAY_LIVE_NETWORKS;\n const { panels, isStatic, selectedChannel, onChannelSelect } = this.props;\n let defaultNetworkLogoElement = null;\n const items = panels.member.map((item, rowIdx) => {\n const { panelType } = item;\n const firstItem = _.get(item, 'items.member.0');\n const hasSports = firstItem && isSportsContent(firstItem);\n if (panelType !== PANEL_TYPE_LISTING || (!sportsFeatures() && hasSports)) return null;\n\n const { callSign } = item;\n const network = _.get(item, 'items.member.0.network', null);\n const networkLogo = getNetworkLogo({ callSign, network, isStatic });\n let networkLogoElement = null;\n if (networkLogo) {\n networkLogoElement = (\n <img\n className={Style.networkLogo}\n src={networkLogo}\n alt={callSign}\n aria-label={callSign}\n />\n );\n }\n const isSelected = selectedChannel === rowIdx;\n if (isSelected) defaultNetworkLogoElement = networkLogoElement;\n\n return {\n onClickParams: rowIdx,\n onClick: lclRowIdx => {\n setSelectedDate(now());\n onChannelSelect({ selectedChannel: lclRowIdx });\n this.toggleNetworkDropdown();\n },\n labelDetail: networkLogoElement,\n isSelected,\n };\n });\n const defaultText = defaultNetworkLogoElement;\n\n return (\n <Dropdown\n theme={dropdownTheme}\n items={items}\n getIcon={getDateDropdownIcon(isOpen)}\n defaultText={defaultText}\n onOpenDropdown={this.toggleNetworkDropdown}\n onCloseDropdown={this.toggleNetworkDropdown}\n displayResults={isOpen}\n showMobileCancel={!this.isWeb()}\n expanded={isOpen}\n useLabelDetail\n className={classNames(Style.dropdown, dropdownTheme.networkDropdown)}\n />\n );\n }\n\n renderPanels() {\n const {\n setOverlay,\n overlay,\n panels,\n onChannelSelect,\n selectedChannel,\n account,\n resetStillWatchingTimeout,\n isAuthenticated,\n preauthorizedResources,\n saveLiveRestart,\n breakpoint,\n loadingGrid,\n isStatic,\n setSelectedDate,\n selectedVideoData,\n favoritesManager,\n location,\n defaultProgram,\n } = this.props;\n const { openRow, epgGridPage, dropdownDateClosed } = this.state;\n const selectedDate = this.getSelectedDate();\n const breakpointIsMobile = !this.isWeb();\n const dropdownZIndex =\n overlay === OVERLAY_LIVE_CTA_OVERFLOW\n ? dropdownTheme.openedZIndex\n : dropdownTheme.closedZIndex;\n if (!panels || !panels.member || panels.length === 0) return null;\n return panels.member.map((item, rowIdx) => {\n const { panelType } = item;\n const firstItem = _.get(item, 'items.member.0');\n const hasSports = firstItem && isSportsContent(firstItem);\n if (breakpointIsMobile && selectedChannel !== rowIdx) return null;\n if (panelType !== PANEL_TYPE_LISTING || (!sportsFeatures() && hasSports)) return null;\n const { callSign } = item;\n const network = _.get(item, 'items.member.0.network', null);\n const networkLogo = getNetworkLogo({ callSign, network, isStatic });\n let networkLogoElement = null;\n if (networkLogo) {\n networkLogoElement = (\n <img\n className={Style.networkLogo}\n src={networkLogo}\n alt={callSign}\n aria-label={item.callSign}\n />\n );\n }\n\n const primeTimeMessage = getPrimeTimeMessage({\n panels,\n selectedChannel: rowIdx,\n selectedDate,\n });\n const { lateProgramIdx, overFlowProgramIdx, overFlowPrograms } = checkForOverlap(item);\n\n let scheduleRowClassName =\n openRow === rowIdx\n ? classNames(Style.scheduleRow, Style.scheduleRowOpen)\n : Style.scheduleRow;\n scheduleRowClassName =\n (!selectedChannel && rowIdx === 0) || rowIdx === selectedChannel\n ? classNames(scheduleRowClassName, Style.scheduleRowSelected)\n : scheduleRowClassName;\n\n const scheduleItemProps = {\n setOverlay,\n overlay,\n network,\n account,\n startingTs: getStartingTs(selectedDate),\n openRow,\n scheduleItemDetailsCB: (idx, action) => {\n this.scheduleItemDetailsCB(idx, action);\n },\n switchChannelCB: channel => {\n onChannelSelect({ selectedChannel: channel, clearQuery: true });\n },\n callSign,\n selectedDate,\n displayPrimeTimeMessage,\n dropdownDateClosed,\n epgGridPage,\n primeTimeMessage,\n resetStillWatchingTimeout,\n preauthorizedResources,\n isAuthenticated,\n breakpoint,\n saveLiveRestart,\n loadingGrid,\n breakpointIsMobile,\n lateProgramIdx,\n overFlowProgramIdx,\n selectedVideoData,\n favoritesManager,\n location,\n };\n\n const scheduleGridComponent = (\n <Element className={Style.scheduleItemWrapper} name={`${rowIdx}`}>\n <ScheduleItemComponent\n {...scheduleItemProps}\n item={item}\n rowIdx={rowIdx}\n isOverFlow={false}\n />\n </Element>\n );\n const programs = overFlowPrograms || [];\n const overflowRows = [];\n if (!breakpointIsMobile && sportsFeatures()) {\n let overFlowScheduleRowClassName = null;\n let overFlowRowIdx = 0;\n programs.forEach(overFlowProgram => {\n overFlowRowIdx += 1;\n scheduleItemProps.overFlowProgramIdx = overFlowRowIdx;\n const overFlowItem = _.cloneDeep(item);\n const endDateIsAfter = isAfter(stringToDate(overFlowProgram.endDate), selectedDate);\n\n if (endDateIsAfter) {\n overFlowItem.items.member = [_.cloneDeep(overFlowProgram)];\n\n overFlowScheduleRowClassName =\n openRow === `${rowIdx}-${overFlowRowIdx}`\n ? classNames(Style.scheduleRow, Style.scheduleRowOpen, Style.scheduleRowSelected)\n : Style.scheduleRow;\n if (\n defaultProgram === overFlowProgram.id ||\n (selectedVideoData && overFlowProgram.id === selectedVideoData.id)\n ) {\n overFlowScheduleRowClassName = classNames(\n overFlowScheduleRowClassName,\n Style.scheduleRowSelected,\n );\n }\n\n scheduleItemProps.switchChannelCB = idx => {\n onChannelSelect({\n selectedChannel: idx,\n id: overFlowItem.id,\n programId: overFlowProgram.id,\n overFlowRowIdx: idx,\n clearQuery: false,\n });\n };\n overflowRows.push(\n <div\n key={`schedulerow-${rowIdx}-${overFlowRowIdx}`}\n className={overFlowScheduleRowClassName}\n >\n <Link\n className={Style.scheduleLeft}\n onClick={() => {\n setSelectedDate(now());\n onChannelSelect({\n selectedChannel: `${rowIdx}-${overFlowRowIdx}`,\n id: overFlowItem.id,\n programId: overFlowProgram.id,\n overFlowRowIdx,\n clearQuery: false,\n });\n }}\n >\n {networkLogoElement}\n </Link>\n <Element className={Style.scheduleItemWrapper} name={`${rowIdx}-${overFlowRowIdx}`}>\n <ScheduleItemComponent\n {...scheduleItemProps}\n item={overFlowItem}\n rowIdx={`${rowIdx}-${overFlowRowIdx}`}\n overFlowProgramIdx={`${rowIdx}-${overFlowRowIdx}`}\n isOverFlow\n name=\"overflow\"\n />\n </Element>\n </div>,\n );\n }\n });\n }\n\n return (\n <div key={`schedulerow-${rowIdx}`}>\n <div className={dropdownZIndex}>\n <div className={scheduleRowClassName}>\n <Link\n className={Style.scheduleLeft}\n onClick={() => {\n setSelectedDate(now());\n onChannelSelect({ selectedChannel: rowIdx, clearQuery: true });\n }}\n >\n {networkLogoElement}\n </Link>\n {scheduleGridComponent}\n </div>\n </div>\n {overflowRows}\n </div>\n );\n });\n }\n\n renderTimeline() {\n const { breakpoint } = this.props;\n const { intervalCount } = BREAKPOINTS[breakpoint];\n const selectedDate = this.getSelectedDate();\n const dateIsInFuture = isAfter(endOfDay(now()));\n const newDate = dateIsInFuture ? startOfDay(selectedDate) : selectedDate;\n const hourIntervals = getHourInterval(newDate, MINUTES_INTERVAL, intervalCount);\n const intervalElement = hourIntervals.map((obj, idx) => (\n <div className={Style.time} key={`timeline-${idx}`}>\n {obj.timeString}\n </div>\n ));\n\n return (\n <div id=\"timeline-main\" className={Style.timelineMain}>\n {intervalElement}\n </div>\n );\n }\n\n render() {\n const { loadingGrid, panels, overlay } = this.props;\n const { endingDate, epgGridPage, openRow, startingTs } = this.state;\n const selectedDate = this.getSelectedDate();\n const atStartDate = this.checkAtStarting(selectedDate);\n const atEndDate = epgGridPage >= EPG_JUMPS_PER_DAY && this.checkSameDay(endingDate);\n const noScroll = overlay ? Style.noScroll : null;\n const dropdownZIndex =\n overlay === OVERLAY_LIVE_NETWORKS || overlay === OVERLAY_LIVE_DATES\n ? dropdownTheme.openedZIndex\n : dropdownTheme.closedZIndex;\n if (!panels) return null;\n if (!this.isWeb()) {\n return (\n <div className={classNames(noScroll, [Style.container, Style.scheduleGrid])}>\n <div className={classNames(Style.mobileDropdowns, dropdownZIndex)}>\n {this.renderNetworkDropdown()}\n {this.renderDateLabel()}\n {this.renderDateDropdown()}\n </div>\n {this.renderPanels()}\n </div>\n );\n }\n\n const gridLoadingClass = loadingGrid ? Style.gridLoading : null;\n return (\n <div className={classNames([Style.container, Style.scheduleGrid, noScroll])}>\n <div className={classNames([Style.timeline, gridLoadingClass])}>\n <div className={Style.timelineLeft}>{this.renderDateDropdown()}</div>\n {this.renderTimeline()}\n {atStartDate ? (\n <div className={Style.timelineEmptyArrow} />\n ) : (\n <Link\n aria-label=\"Previous\"\n className={classNames(Style.timelineArrow, Style.timelineLeftArrow)}\n onClick={() => {\n this.gridPrev();\n }}\n />\n )}\n {atEndDate ? (\n <div className={Style.timelineEmptyArrow} />\n ) : (\n <Link\n aria-label=\"Next\"\n className={classNames(Style.timelineArrow, Style.timelineRightArrow)}\n onClick={() => {\n this.gridNext();\n }}\n />\n )}\n </div>\n {loadingGrid ? <Loader className={Style.gridLoader} /> : null}\n <div className={gridLoadingClass}>{this.renderPanels()}</div>\n {atStartDate ? (\n <CurrentTimerComponent\n ended={() => this.currentTimerEnded()}\n startingTs={startingTs}\n totalMinutes={MINUTES_INTERVAL}\n isLastPanel={isLastPanel(openRow, panels)}\n openRow={openRow}\n totalRows={panels.totalItems}\n />\n ) : null}\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const { prevRowIdx } = state.live;\n return { prevRowIdx };\n}\n\nScheduleGrid.defaultProps = {\n account: {},\n breakpoint: null,\n favoritesManager: null,\n isAuthenticated: null,\n isStatic: false,\n loadingGrid: false,\n location: {},\n overlay: null,\n panels: null,\n preauthorizedResources: [],\n prevRowIdx: null,\n selectedChannel: 0,\n selectedDate: null,\n selectedVideoData: null,\n defaultProgram: null,\n};\n\nScheduleGrid.propTypes = {\n account: PropTypes.shape({}),\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n setOverlay: PropTypes.func.isRequired,\n overlay: PropTypes.string,\n onChannelSelect: PropTypes.func.isRequired,\n selectedChannel: PropTypes.number,\n setSelectedDate: PropTypes.func.isRequired,\n saveLiveRestart: PropTypes.func.isRequired,\n selectedDate: PropTypes.shape({}),\n isStatic: PropTypes.bool,\n resetStillWatchingTimeout: PropTypes.func.isRequired,\n isAuthenticated: PropTypes.bool,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n breakpoint: PropTypes.string,\n loadingGrid: PropTypes.bool,\n selectedVideoData: PropTypes.shape({}),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n deleteFavorites: PropTypes.func.isRequired,\n }),\n location: PropTypes.shape({}),\n prevRowIdx: PropTypes.number,\n defaultProgram: PropTypes.string,\n};\n\nexport default connect(mapStateToProps)(ScheduleGrid);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Sticky } from 'react-sticky';\nimport classNames from 'classnames';\nimport Style from './AltHeader.module.scss';\n\nconst AltHeader = ({\n background = null,\n bottomOffset = null,\n children = null,\n className = null,\n isAltHeader = false,\n isNavScheduleRendered = false,\n onTitleClick = null,\n persist = false,\n renderAltHeader = false,\n stickyHeaderCallback = null,\n theme,\n title = null,\n titleClassName = null,\n topOffset = null,\n}) => {\n if (!renderAltHeader) return null;\n const titleClasses = [theme.altHeadline, Style.altHeadline, titleClassName];\n if (onTitleClick) titleClasses.push(Style.pointer);\n const headerWithNav = isNavScheduleRendered\n ? classNames(theme.stickyHeaderWithNavSchedule, Style.stickyHeaderWithNavSchedule)\n : null;\n const stickyClasses = classNames([\n className,\n !isAltHeader && !persist\n ? classNames(theme.hide, Style.hide)\n : classNames(theme.stickyHeader, Style.stickyHeader),\n headerWithNav,\n ]);\n const fallbackBackground = background\n ? null\n : classNames(theme.fallbackBackground, Style.fallbackBackground);\n const titleComponent = title && (\n <a\n href=\"\"\n className={classNames(titleClasses)}\n onClick={onTitleClick}\n data-testid=\"altheader-title\"\n >\n {title}\n </a>\n );\n\n return (\n <Sticky\n className={stickyClasses}\n topOffset={topOffset}\n bottomOffset={bottomOffset}\n onStickyStateChange={stickyHeaderCallback}\n style={{ backfaceVisibility: 'hidden', transform: 'translateZ(null)' }}\n data-testid=\"altheader\"\n >\n <div\n className={classNames([\n 'hideOverflow',\n theme.altHeaderContainer,\n Style.altHeaderContainer,\n fallbackBackground,\n ])}\n >\n {background}\n <div className={classNames(theme.altHeader, Style.altHeader)}>\n {titleComponent}\n {children}\n </div>\n </div>\n </Sticky>\n );\n};\n\nAltHeader.defaultProps = {\n background: null,\n bottomOffset: 0,\n children: null,\n className: null,\n isAltHeader: false,\n isNavScheduleRendered: null,\n onTitleClick: null,\n persist: false,\n renderAltHeader: true,\n stickyHeaderCallback: () => {},\n theme: {},\n title: null,\n titleClassName: null,\n topOffset: 80,\n};\n\nAltHeader.propTypes = {\n background: PropTypes.shape({}),\n bottomOffset: PropTypes.number,\n children: PropTypes.node,\n className: PropTypes.string,\n isAltHeader: PropTypes.bool,\n isNavScheduleRendered: PropTypes.bool,\n onTitleClick: PropTypes.func,\n persist: PropTypes.bool,\n renderAltHeader: PropTypes.bool,\n stickyHeaderCallback: PropTypes.func,\n theme: PropTypes.shape({}),\n title: PropTypes.string,\n titleClassName: PropTypes.string,\n topOffset: PropTypes.number,\n};\n\nexport default AltHeader;\n","//\n// Every component in this repository needs a unique identifier\n// to be used with `react-css-themr`, this opens up the possibility\n// for users of the UI to override default css from the UI and\n// create custom themes / components.\n//\nexport default {\n App: 'fox-com/App',\n Auth: {\n Shared: 'fox-com/Auth/Shared',\n },\n ContentDetail: {\n VideosTab: {\n VideoTile: 'fox-com/ContentDetail/VideosTab/VideoTile',\n },\n },\n HeaderImageTitle: 'fox-com/HeaderImageTitle',\n Live: {\n Dropdown: 'fox-com/Live/Dropdown',\n DropdownPrimetime: 'fox-com/Live/DropdownPrimetime',\n },\n PromoList: 'fox-com/PromoList',\n SeriesDetail: {\n VideosTab: {\n VideoTile: 'fox-com/SeriesDetail/VideosTab/VideoTile',\n default: 'fox-com/SeriesDetail/VideosTab',\n },\n },\n StringList: 'fox-com/StringList',\n VideoPlayer: 'fox-com/VideoPlayer',\n};\n","import React from 'react';\nimport { ThemeProvider } from '@friendsofreactjs/react-css-themr';\nimport webIds from 'components/identifiers';\nimport _ from 'lodash';\n\nconst getDefaultThemes = () => ({\n /* eslint-disable global-require */\n [webIds.Auth.Shared]: require('themes/AuthShared.module.scss'), // NOTE: Auth.Shared must be before all other Auth files\n [webIds.App]: require('themes/styleguide/redesign/v2/App.css'),\n [webIds.HeaderImageTitle]: require('components/HomeImageHeader/HomeImageHeader.css'),\n [webIds.Live.Dropdown]: require('screens/Live/styles/Dropdown.css'),\n [webIds.Live\n .DropdownPrimetime]: require('screens/Live/components/PrimeTimeGrid/DropdownPrimetime.css'),\n [webIds.SeriesDetail.VideosTab\n .VideoTile]: require('screens/SeriesDetail/components/VideosTab/styles/videoTiles.css'),\n [webIds.StringList]: require('themes/StringList.css'),\n});\n\nconst getStyleguideThemes = () => getDefaultThemes();\n\nconst wrapComponentsWithStyleguideThemeProvider = components => {\n const styleguideThemes = getDefaultThemes();\n return <ThemeProvider theme={styleguideThemes}>{components}</ThemeProvider>;\n};\n\nexport const wrapComponentsWithThemeProvider = components =>\n wrapComponentsWithStyleguideThemeProvider(components);\nexport const getTheme = id => _.get(getStyleguideThemes(), id);\nexport const webThemeIds = webIds;\n\nconst addClassesToElement = (classesToAdd, element) => {\n const isValidArray = Array.isArray(classesToAdd);\n const isObject = element && typeof element.classList === 'object';\n const hasAddClass = isObject && typeof element.classList.add === 'function';\n\n if (!hasAddClass || !isValidArray) return;\n\n classesToAdd.map(theClass => {\n if (!theClass) return null;\n element.classList.add(theClass);\n return null;\n });\n};\n\nconst removeClassesFromElement = (classesToRemove, element) => {\n const isValidArray = Array.isArray(classesToRemove);\n const isObject = element && typeof element.classList === 'object';\n const hasRemoveClass = isObject && typeof element.classList.remove === 'function';\n\n if (!hasRemoveClass || !isValidArray) return;\n\n classesToRemove.map(theClass => {\n if (!theClass) return null;\n element.classList.remove(theClass);\n return null;\n });\n};\n\nexport const addBodyClass = classesToAdd => {\n if (!document || !document.body) return;\n addClassesToElement(classesToAdd, document.body);\n};\n\nexport const removeBodyClass = classesToAdd => {\n if (!document || !document.body) return;\n removeClassesFromElement(classesToAdd, document.body);\n};\nexport const addHTMLClass = classesToAdd => {\n const hasElement = document && document.getElementsByTagName('html')[0];\n if (!hasElement) return;\n const element = document.getElementsByTagName('html')[0];\n addClassesToElement(classesToAdd, element);\n};\n\nexport const removeHTMLClass = classesToAdd => {\n const hasElement = document && document.getElementsByTagName('html')[0];\n if (!hasElement) return;\n const element = document.getElementsByTagName('html')[0];\n removeClassesFromElement(classesToAdd, element);\n};\n","/* global FavoritesEnabled */\nimport React, { Component } from 'react';\nimport { Link, withRouter } from 'react-router';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Badge from 'components/Badge';\nimport Icon from 'components/Icon';\nimport Dropdown from 'components/Dropdown';\nimport Favorite, { FAVORITE_TYPE_ICON } from 'components/Favorite';\nimport { requiresAuthElement } from 'helpers/VideoProcessorHelper';\nimport { PageNames, SegmentSources, tealiumEventPageTypes } from '@foxcorp/delta-web-analytics';\nimport { now } from 'helpers/DateTimeHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { OVERLAY_LIVE_CTA_OVERFLOW } from 'helpers/FilterHelper';\nimport { getVideoData, getMobileVideoMetadata, getVideoTimeData } from 'screens/Live/LiveHelpers';\n\nimport favoriteTheme from 'screens/Live/styles/Favorite.css';\nimport dropdownTheme from 'screens/Live/styles/Dropdown.css';\nimport Style from './PrimeTimeItem.module.scss';\n\nconst pageType = _.get(tealiumEventPageTypes, PageNames.LIVE_SCHEDULE);\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n enableOverflowDropdown: false,\n },\n [SITE_PLATFORM_WEB]: {\n enableOverflowDropdown: false,\n },\n [SITE_PLATFORM_TABLET]: {\n enableOverflowDropdown: true,\n },\n [SITE_PLATFORM_MOBILE]: {\n enableOverflowDropdown: true,\n },\n};\n\nclass PrimeTimeItem extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.toggleOverflowDropdown = this.toggleOverflowDropdown.bind(this);\n }\n\n toggleOverflowDropdown() {\n const { resetStillWatchingTimeout, setOverlay } = this.props;\n setOverlay(OVERLAY_LIVE_CTA_OVERFLOW);\n resetStillWatchingTimeout();\n }\n\n renderCTAButtons(video, channelIdx) {\n if (!video) return null;\n\n const {\n fullEpisodeCount,\n id,\n moreInfoUrl,\n requiresAuthLive,\n shouldRenderLiveCta,\n shouldRenderVODCta,\n watchUrl,\n } = getVideoData(video);\n const { isCurrent, isPast } = getVideoTimeData({ video });\n const { isAuthenticated, breakpoint, watchLiveClick, restartClick } = this.props;\n const liveBtnClasses = Style.actionButton;\n const { enableOverflowDropdown } = BREAKPOINTS[breakpoint];\n const {\n global_watchLiveButton: labelWatchLive,\n global_restartButton: labelRestart,\n global_moreSeriesDeeplinkButton: labelMoreEpisodes,\n } = window.Language;\n\n const canRestart = shouldRenderVODCta && (isCurrent || isPast);\n const lockIcon = requiresAuthElement({\n requiresAuth: requiresAuthLive,\n lockClass: Style.lock,\n isAuthenticated,\n viewBox: '0 4 24 20',\n });\n const contentLocked = requiresAuthLive && !isAuthenticated ? Style.contentLocked : null;\n const actionButtons = [];\n const ctaDetails = [];\n\n if (canRestart) {\n actionButtons.push(\n <Link\n key={`restart-button-${id}`}\n to={watchUrl}\n className={classNames(liveBtnClasses, contentLocked)}\n onClick={() => {\n restartClick(video, channelIdx);\n }}\n >\n <span>\n {lockIcon} {labelRestart}\n </span>\n </Link>,\n );\n ctaDetails.push({\n name: labelRestart,\n onClick: () => {\n restartClick(video, channelIdx);\n },\n });\n }\n\n if (shouldRenderLiveCta) {\n actionButtons.push(\n <Link\n key={`watch-live-${id}`}\n className={classNames(liveBtnClasses, contentLocked)}\n onClick={() => {\n watchLiveClick(video, channelIdx);\n }}\n >\n <span>\n {lockIcon} {labelWatchLive}\n </span>\n </Link>,\n );\n ctaDetails.push({\n name: labelWatchLive,\n onClick: () => {\n watchLiveClick(video, channelIdx);\n },\n });\n }\n\n if (fullEpisodeCount) {\n actionButtons.push(\n <Link key={`more-episodes-${id}`} className={liveBtnClasses} to={moreInfoUrl}>\n {labelMoreEpisodes}\n </Link>,\n );\n ctaDetails.push({\n name: labelMoreEpisodes,\n onClick: () => {\n const { router } = this.props;\n router.push(moreInfoUrl);\n },\n });\n }\n\n const mobileActionButtons =\n actionButtons.length > 2 ? actionButtons.slice(0, 2) : actionButtons;\n\n return (\n <div\n className={Style.actionButtons}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n {enableOverflowDropdown ? mobileActionButtons : actionButtons}\n {enableOverflowDropdown && this.renderOverflowDropdown(ctaDetails)}\n </div>\n );\n }\n\n renderDetails({ subtitle, description, title }) {\n const { item } = this.props;\n const metadata = getMobileVideoMetadata(item);\n const actionsButtonsElement = this.renderCTAButtons(item, 0);\n const metadataElement = <div className={Style.detailInfo}>{metadata}</div>;\n\n return (\n <div className={Style.detailContainerLeft}>\n <h2 className={Style.detailTitle}>\n {title} {this.renderFavorite()}\n </h2>\n <div className={Style.detailSubtitle}>{subtitle}</div>\n <div className={Style.detailDescription}>{description}</div>\n {metadataElement}\n {actionsButtonsElement}\n </div>\n );\n }\n\n renderFavorite() {\n const { item, favoritesManager } = this.props;\n const { showCode: showID, network, seriesName, favoritableItems } = item;\n const recommendationId = _.get(item, 'trackingData.properties.recommendationId', null);\n\n const favoriteData = {\n showID,\n networkId: network,\n seriesName,\n source: SegmentSources.LIVE,\n location: pageType,\n recommendationId,\n favoritableItems,\n };\n\n if (!FavoritesEnabled) return null;\n\n return (\n <div\n role=\"button\"\n className={favoriteTheme.wrapper}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n <Favorite\n manager={favoritesManager}\n data={favoriteData}\n theme={favoriteTheme}\n type={FAVORITE_TYPE_ICON}\n />\n </div>\n );\n }\n\n renderItem() {\n const { item, idx, openIdx, date, openIdxDate } = this.props;\n const isOpen = openIdx === idx && openIdxDate === date;\n\n const { starts } = getVideoTimeData({ video: item, current: now() });\n const { title, subtitle, description, badge } = getVideoData(item);\n const arrow = (\n <Icon color=\"white\" icon={isOpen ? 'keyboard-arrow-up' : 'keyboard-arrow-down'} />\n );\n const badgeElement = badge ? <Badge theme={Style} badge={badge} /> : null;\n\n let detailsElement = (\n <span className={Style.titleContainer}>\n <span className={Style.title}>\n {badgeElement}\n <span className={Style.titleText}>{title}</span>\n </span>\n <span className={Style.subtitle}>{subtitle}</span>\n </span>\n );\n if (isOpen) {\n detailsElement = this.renderDetails({ subtitle, description, title });\n }\n\n return (\n <div className={Style.container}>\n <span className={Style.timestamp}>{starts}</span>\n {detailsElement}\n <span className={Style.caret}>{arrow}</span>\n </div>\n );\n }\n\n renderOverflowDropdown(ctaDetails) {\n if (ctaDetails.length < 3) return null;\n const { overlay } = this.props;\n const isOpen = overlay === OVERLAY_LIVE_CTA_OVERFLOW;\n const overflowHoverEffect = isOpen ? null : dropdownTheme.overflowHoverEffect;\n const items = ctaDetails.slice(2);\n\n return (\n <div\n className={Style.overflowButtonWrapper}\n onClick={() => {\n this.toggleOverflowDropdown();\n }}\n >\n <Dropdown\n theme={dropdownTheme}\n items={items}\n onOpenDropdown={this.toggleOverflowDropdown}\n onCloseDropdown={this.toggleOverflowDropdown}\n displayResults\n showMobileCancel\n expanded={isOpen}\n className={classNames(\n Style.dropdown,\n dropdownTheme.overflowDropdown,\n overflowHoverEffect,\n )}\n getIcon={() => {}}\n defaultText=\"• • •\"\n />\n </div>\n );\n }\n\n render() {\n const { item, idx, date, overlay, toggleItem } = this.props;\n const { title } = getVideoData(item);\n const { starts, ends } = getVideoTimeData({ video: item, current: now() });\n const hoverTitle = `${title}\\n(${starts} - ${ends})`;\n const itemZIndex = overlay === OVERLAY_LIVE_CTA_OVERFLOW ? Style.open : Style.closed;\n\n return (\n <div\n className={classNames(Style.primeTimeMain, itemZIndex)}\n title={hoverTitle}\n onClick={() => {\n toggleItem(idx, date);\n }}\n >\n {this.renderItem()}\n </div>\n );\n }\n}\n\nPrimeTimeItem.defaultProps = {\n breakpoint: null,\n favoritesManager: null,\n isAuthenticated: false,\n openIdx: null,\n openIdxDate: null,\n overlay: null,\n resetStillWatchingTimeout: () => {},\n router: {},\n toggleItem: () => {},\n};\n\nPrimeTimeItem.propTypes = {\n breakpoint: PropTypes.string,\n date: PropTypes.string.isRequired,\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n deleteFavorites: PropTypes.func.isRequired,\n }),\n idx: PropTypes.number.isRequired,\n isAuthenticated: PropTypes.bool,\n item: PropTypes.shape({}).isRequired,\n openIdx: PropTypes.number,\n openIdxDate: PropTypes.string,\n overlay: PropTypes.string,\n toggleItem: PropTypes.func,\n resetStillWatchingTimeout: PropTypes.func,\n restartClick: PropTypes.func.isRequired,\n router: PropTypes.shape({\n push: PropTypes.func,\n }),\n setOverlay: PropTypes.func.isRequired,\n watchLiveClick: PropTypes.func.isRequired,\n};\n\nexport default withRouter(PrimeTimeItem);\n","/* eslint-disable react/jsx-no-bind */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport { StickyContainer } from 'react-sticky';\nimport AltHeaderComponent from 'components/AltHeader';\nimport { Waypoint } from 'react-waypoint';\nimport Icon from 'components/Icon';\nimport Tile from 'components/TileLegacy';\nimport Dropdown from 'components/Dropdown';\nimport { Link } from 'react-router';\nimport { scroller, Element } from 'react-scroll';\nimport { noop } from 'helpers/GlobalHelper';\nimport { getTheme, webThemeIds } from 'helpers/ThemeHelper';\nimport { LIVE_EPG_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport {\n getTealiumLiveEvents,\n handleTealiumButtonAction,\n setSegmentRestartedPlaybackGlobal,\n TrackEvents,\n} from '@foxcorp/delta-web-analytics';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { OVERLAY_PRIMETIME_DATES, OVERLAY_LIVE_CTA_OVERFLOW } from 'helpers/FilterHelper';\nimport { requiresAuthElement } from 'helpers/VideoProcessorHelper';\nimport {\n isSameDay,\n addDays,\n getHours,\n setHours,\n stringToDate,\n now,\n format,\n FORMAT_YEAR_MONTH_DAY,\n FORMAT_WEEKDAY_MONTH_DAY,\n parse,\n} from 'helpers/DateTimeHelper';\nimport { isUrlPath, helperGetFNCLiveUrl } from 'helpers/RouteHelper';\nimport {\n isInEPGDateRange,\n getDayLabel,\n getTimezone,\n getVideoData,\n getVideoTimeData,\n getDateDropdownFormat,\n getDateDropdownIcon,\n getTodaysDate,\n} from 'screens/Live/LiveHelpers';\nimport PrimeTimeItemComponent from 'screens/Live/components/PrimeTimeItem';\nimport listStyle from './MobileList.module.scss';\nimport altHeaderTheme from './AltHeaderPrimeTime.css';\nimport Style from './PrimeTimeGrid.module.scss';\n\nconst dropdownSharedTheme = getTheme(webThemeIds.Live.Dropdown);\nconst dropdownPrimetimeTheme = getTheme(webThemeIds.Live.DropdownPrimetime);\nconst dropdownTheme = { ...dropdownSharedTheme, ...dropdownPrimetimeTheme };\nconst PRIME_TIME_GRID_SCROLL_PREFIX = 'PRIME_TIME_GRID_SCROLL_PREFIX';\nconst TILE_IMAGE_LEFT = 'tile-image-left';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n renderStickyHeader: false,\n renderDesktopGrid: true,\n showScrollingDate: false,\n showDesktopTheme: true,\n defaultDateFormat: true,\n showMobileControls: false,\n },\n [SITE_PLATFORM_WEB]: {\n renderStickyHeader: false,\n renderDesktopGrid: true,\n showScrollingDate: false,\n showDesktopTheme: true,\n defaultDateFormat: true,\n showMobileControls: false,\n },\n [SITE_PLATFORM_TABLET]: {\n renderStickyHeader: true,\n renderDesktopGrid: false,\n showScrollingDate: true,\n showDesktopTheme: false,\n defaultDateFormat: false,\n showMobileControls: true,\n },\n [SITE_PLATFORM_MOBILE]: {\n renderStickyHeader: true,\n renderDesktopGrid: false,\n showScrollingDate: true,\n showDesktopTheme: false,\n defaultDateFormat: false,\n showMobileControls: true,\n },\n};\n\nclass PrimeTimeGrid extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n seeAllClicked: false,\n selectedChannelIdx: 0,\n dropdownOpen: false,\n openIdx: null,\n openIdxDate: null,\n dateLabel: [],\n };\n\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.watchLiveClick = this.watchLiveClick.bind(this);\n this.restartClick = this.restartClick.bind(this);\n this.toggleItem = this.toggleItem.bind(this);\n }\n\n componentDidMount() {\n const { scrollToDateOnMount, selectedDate } = this.props;\n const date = selectedDate;\n if (date && scrollToDateOnMount) {\n this.scrollToDate(date, null, -175);\n }\n }\n\n getDropdownItems() {\n const { setSelectedDate, selectedDate } = this.props;\n const { dropdownOpen: isOpen } = this.state;\n const dates = this.uniqueDatesFromPanels(FORMAT_YEAR_MONTH_DAY);\n const dateFormat = getDateDropdownFormat(isOpen);\n\n const items = dates.map((dateString, idx) => {\n const selectedHour = getHours(selectedDate);\n const date = setHours(stringToDate(dateString), selectedHour);\n\n const onClickParams = date;\n const isFirstItem = idx === 0;\n const isDefaultSelected = !selectedDate && isFirstItem;\n const isCurrentlySelected = isSameDay(selectedDate, date);\n const isSelected = isDefaultSelected || isCurrentlySelected || false;\n\n return {\n date,\n name: format(date, dateFormat),\n onClickParams,\n onClick: date => {\n setSelectedDate(date);\n this.scrollToDate(date);\n },\n isSelected,\n };\n });\n return items;\n }\n\n getSelectedDate() {\n const { selectedDate } = this.props;\n return selectedDate === null ? now() : stringToDate(selectedDate);\n }\n\n handleWaypointScroll(dayLabel, dateLabel, { currentPosition, previousPosition }) {\n const { state } = this;\n if (currentPosition === Waypoint.above && previousPosition === Waypoint.inside) {\n this.setState({\n dateLabel: [...state.dateLabel, dateLabel],\n });\n } else if (currentPosition === Waypoint.inside && previousPosition === Waypoint.above) {\n const newDates = _.dropRight(state.dateLabel);\n this.setState({\n dateLabel: newDates,\n });\n }\n }\n\n restartClick(video) {\n const { title, subtitleName, callSign } = getVideoData(video);\n\n const { isCurrent } = getVideoTimeData({ video });\n\n const { account, resetStillWatchingTimeout } = this.props;\n\n const { global_restartButton: labelRestart } = window.Language;\n\n const { [TrackEvents.SCHEDULE_RESTART]: tealiumScheduleRestart } = getTealiumLiveEvents();\n handleTealiumButtonAction({ text: labelRestart, title, subtitle: subtitleName, account });\n tealiumScheduleRestart({ network: callSign });\n if (isCurrent) setSegmentRestartedPlaybackGlobal(true);\n if (resetStillWatchingTimeout) resetStillWatchingTimeout();\n }\n\n scrollToDate(date, scrollDelay, offset) {\n if (!date) return;\n const { setTimeout } = this.props;\n const isFNCPage = isUrlPath(helperGetFNCLiveUrl());\n if (isFNCPage) return;\n\n const delay = scrollDelay || 300;\n\n const dateString = format(date, FORMAT_YEAR_MONTH_DAY);\n let scrollOffset = offset;\n\n if (!offset) {\n const sameDay = isSameDay(date, now());\n scrollOffset = sameDay ? -190 : -100;\n }\n\n const scrollOptions = {\n smooth: true,\n offset: scrollOffset,\n };\n\n const doScroll = () => {\n const elementName = `${PRIME_TIME_GRID_SCROLL_PREFIX}${dateString}`;\n const elementExists = document && document.getElementsByName(elementName).length;\n if (elementExists) scroller.scrollTo(elementName, scrollOptions);\n return null;\n };\n\n setTimeout(doScroll, delay);\n }\n\n toggleDropdown() {\n const { resetStillWatchingTimeout, setOverlay } = this.props;\n const { dropdownOpen } = this.state;\n this.setState({ dropdownOpen: !dropdownOpen });\n setOverlay(OVERLAY_PRIMETIME_DATES);\n resetStillWatchingTimeout();\n }\n\n toggleItem(rowIdx, date) {\n const { openIdx, openIdxDate } = this.state;\n let newOpenIdx = rowIdx;\n let newOpenDate = date;\n if (rowIdx === openIdx && date === openIdxDate) {\n newOpenIdx = null;\n newOpenDate = null;\n }\n this.setState({ openIdx: newOpenIdx, openIdxDate: newOpenDate });\n }\n\n uniqueDatesFromPanels(selectedFormat) {\n const { primeTimePanels } = this.props;\n const items = _.get(primeTimePanels, 'member.0.items.member', []);\n\n // get valid dates;\n const dates = items.map(item => {\n if (!isInEPGDateRange(item.startDate)) return null;\n return format(stringToDate(item.startDate), selectedFormat);\n });\n\n // remove null entries and leave only with unique dates.\n const uniqueDates = _.remove(_.uniq(dates), date => date);\n return uniqueDates;\n }\n\n watchLiveClick(video, channelIdx) {\n const { title, subtitleName, callSign } = getVideoData(video);\n\n const { onChannelSelect, account, resetStillWatchingTimeout } = this.props;\n\n const { global_watchLiveButton: labelWatchLive } = window.Language;\n\n const { [TrackEvents.SCHEDULE_WATCH_LIVE]: tealiumScheduleWatchLive } = getTealiumLiveEvents();\n tealiumScheduleWatchLive({ network: callSign });\n onChannelSelect({ selectedChannel: channelIdx });\n handleTealiumButtonAction({ text: labelWatchLive, title, subtitle: subtitleName, account });\n if (resetStillWatchingTimeout) resetStillWatchingTimeout();\n }\n\n renderCTAButtons({ video, channelIdx }) {\n if (!video) return null;\n\n const { requiresAuthLive, shouldRenderLiveCta, shouldRenderVODCta, watchUrl } = getVideoData(\n video,\n );\n\n const { isCurrent, isPast } = getVideoTimeData({ video });\n const { isAuthenticated } = this.props;\n\n const {\n global_watchLiveButton: labelWatchLive,\n global_restartButton: labelRestart,\n } = window.Language;\n\n const canRestart = shouldRenderVODCta && (isCurrent || isPast);\n const lockIcon = requiresAuthElement({\n requiresAuth: requiresAuthLive,\n lockClass: Style.lock,\n isAuthenticated,\n viewBox: '0 4 24 20',\n });\n\n const restartButton = canRestart ? (\n <div className={Style.restart}>\n <Link\n to={watchUrl}\n onClick={() => {\n this.restartClick(video);\n }}\n >\n <Icon color=\"white\" icon=\"restart\" />\n <span>\n {lockIcon} {labelRestart}\n </span>\n </Link>\n </div>\n ) : null;\n\n const watchLiveButton = shouldRenderLiveCta ? (\n <div className={Style.watchLive}>\n <Link\n onClick={() => {\n this.watchLiveClick(video, channelIdx);\n }}\n >\n <Icon color=\"white\" icon=\"play-button\" />\n <span>\n {lockIcon} {labelWatchLive}\n </span>\n </Link>\n </div>\n ) : null;\n\n return (\n <div>\n {restartButton}\n {watchLiveButton}\n </div>\n );\n }\n\n renderDateLabel() {\n const { dateLabel } = this.state;\n const { breakpoint } = this.props;\n const { showScrollingDate } = BREAKPOINTS[breakpoint];\n const { epg_todayHeader: todayHeader, epg_tomorrowHeader: tomorrowHeader } = window.Language;\n let header = null;\n\n let selectedDate = now();\n const defaultDate = stringToDate(selectedDate);\n\n if (showScrollingDate) {\n const hasDateLabel = dateLabel && dateLabel.length > 1;\n const lastDateLabel = hasDateLabel ? dateLabel[dateLabel.length - 1] : null;\n\n const parsedDate = hasDateLabel ? parse(lastDateLabel, FORMAT_WEEKDAY_MONTH_DAY) : null;\n selectedDate = parsedDate || defaultDate;\n } else {\n selectedDate = this.getSelectedDate();\n }\n\n const today = now();\n const tomorrow = addDays(now(), 1);\n const isToday = isSameDay(selectedDate, today);\n const isTomorrow = isSameDay(selectedDate, tomorrow);\n if (isToday) header = todayHeader;\n if (isTomorrow) header = tomorrowHeader;\n if (!header) return null;\n return <div className={Style.tabDateLabel}>{header}</div>;\n }\n\n renderDesktop() {\n return (\n <div className={Style.container}>\n <div className={Style.headerRow}>{this.renderDropdown()}</div>\n {this.renderPrimeTimePanels()}\n </div>\n );\n }\n\n renderDesktopItems(panels) {\n const { initialDisplayCount, onTitleClick, processor, breakpoint } = this.props;\n const { seeAllClicked, selectedChannelIdx } = this.state;\n\n const grid = panels.map((video, itemIndex) => {\n if (initialDisplayCount && !seeAllClicked && itemIndex >= initialDisplayCount) return null;\n const { id } = video;\n const { startDate, isLiveNow } = getVideoData(video);\n const d = stringToDate(startDate);\n const startTime = `${format(d, 'h')}:${format(d, 'mm')}${format(d, 'a')} ${getTimezone()}`;\n const props = processor({ item: video });\n const tileClassName = isLiveNow ? classNames(Style.tile, Style.isLiveNow) : Style.tile;\n\n props.onTileClick = () => {\n this.watchLiveClick(video, selectedChannelIdx);\n };\n props.onTitleClick = onTitleClick;\n props.itemIndex = itemIndex;\n props.tileType = TILE_IMAGE_LEFT;\n props.renderImage = image =>\n renderImage({\n breakpoint,\n imageType: LIVE_EPG_THUMBNAIL_IMAGE,\n ...image,\n });\n props.theme = Style;\n\n return (\n <div className={Style.row} key={id}>\n <div className={tileClassName}>\n <Tile {...props} />\n </div>\n <div className={Style.cta}>\n {this.renderCTAButtons({ video, channelIdx: selectedChannelIdx })}\n </div>\n <div className={Style.time}>\n <span>{startTime}</span>\n </div>\n </div>\n );\n });\n\n return grid;\n }\n\n renderDropdown() {\n const { selectedDate, breakpoint } = this.props;\n const { dropdownOpen: isOpen, dateLabel } = this.state;\n const { defaultDateFormat, showMobileControls } = BREAKPOINTS[breakpoint];\n const selectedFormat = getDateDropdownFormat(defaultDateFormat ? isOpen : true);\n const dates = this.uniqueDatesFromPanels(FORMAT_YEAR_MONTH_DAY);\n\n if (!dates || dates.length === 0) return null;\n\n const items = this.getDropdownItems();\n const date = _.get(items, '0.date');\n\n const useSelectedDate = defaultDateFormat && selectedDate;\n const selectedDateText = format(stringToDate(selectedDate), selectedFormat);\n const dateText = format(stringToDate(date), selectedFormat);\n\n const defaultText = useSelectedDate ? selectedDateText : dateText;\n const text = dateLabel.length > 1 ? dateLabel[dateLabel.length - 1] : defaultText;\n\n return (\n <div className={Style.dropdown}>\n <Dropdown\n theme={dropdownTheme}\n items={items}\n getIcon={getDateDropdownIcon(isOpen)}\n defaultText={text}\n onOpenDropdown={this.toggleDropdown}\n onCloseDropdown={this.toggleDropdown}\n displayResults={isOpen}\n showMobileCancel={showMobileControls}\n expanded={isOpen}\n className={classNames(Style.dropdown, dropdownTheme.dateDropdown)}\n />\n </div>\n );\n }\n\n renderGrid(panels, date) {\n const { filterGridByDay, selectedDate } = this.props;\n const selectedDateFormatted = format(selectedDate, FORMAT_YEAR_MONTH_DAY);\n const shouldHideDay = filterGridByDay && date !== selectedDateFormatted;\n if (!isInEPGDateRange(date) || shouldHideDay) return null;\n\n const TODAY = getTodaysDate();\n const { breakpoint, initialDisplayCount, overlay } = this.props;\n const { seeAllClicked } = this.state;\n const { renderDesktopGrid, showDesktopTheme } = BREAKPOINTS[breakpoint];\n const currentDate = stringToDate(date);\n const dayLabel = renderDesktopGrid ? getDayLabel(currentDate) : null;\n const dateKey = format(currentDate, FORMAT_YEAR_MONTH_DAY);\n const dateLabel = format(currentDate, FORMAT_WEEKDAY_MONTH_DAY);\n const currentTheme = showDesktopTheme ? Style : listStyle;\n const items = renderDesktopGrid\n ? this.renderDesktopItems(panels)\n : this.renderMobileItems(panels, date);\n const overflowDropdownOpen =\n overlay === OVERLAY_LIVE_CTA_OVERFLOW ? Style.childDropdownOpen : Style.childDropdownClosed;\n\n const dayElement = dayLabel ? <span className={currentTheme.today}>{dayLabel}</span> : null;\n const dateElement = <div className={currentTheme.currentDate}>{dateLabel}</div>;\n\n const { paginationMoreButton: seeAllText } = window.Language;\n const renderSeeAll = initialDisplayCount && !seeAllClicked;\n const onClickSeeAll = () => this.setState({ seeAllClicked: true });\n\n return (\n <div\n className={classNames(currentTheme.gridWrapper, overflowDropdownOpen)}\n key={`primetime-grid-${dateKey}`}\n >\n <Element name={`${PRIME_TIME_GRID_SCROLL_PREFIX}${dateKey}`}>\n {renderDesktopGrid ? (\n <div className={currentTheme.dateHeader}>\n {dayElement}\n {dateElement}\n </div>\n ) : (\n <Waypoint\n topOffset=\"200px\"\n onEnter={this.handleWaypointScroll.bind(this, dayLabel, dateLabel)}\n onLeave={this.handleWaypointScroll.bind(this, dayLabel, dateLabel)}\n >\n {TODAY !== dateLabel && (\n <div>\n {dayElement}\n {dateElement}\n </div>\n )}\n </Waypoint>\n )}\n {items}\n {renderSeeAll && (\n <div className={Style.seeAllButtonContainer}>\n <button className={Style.seeAllButton} onClick={onClickSeeAll}>\n {seeAllText}\n </button>\n </div>\n )}\n </Element>\n </div>\n );\n }\n\n renderMobile() {\n return this.renderPrimeTimePanels();\n }\n\n renderMobileItems(panels, date) {\n const {\n initialDisplayCount,\n isAuthenticated,\n breakpoint,\n overlay,\n setOverlay,\n favoritesManager,\n } = this.props;\n const { showMobileControls } = BREAKPOINTS[breakpoint];\n if (!showMobileControls) return null;\n\n const { openIdx, openIdxDate, seeAllClicked } = this.state;\n const primeTimeItemProps = {\n isAuthenticated,\n favoritesManager,\n date,\n breakpoint,\n overlay,\n setOverlay,\n watchLiveClick: this.watchLiveClick,\n restartClick: this.restartClick,\n };\n return panels.map((item, idx) => {\n if (initialDisplayCount && !seeAllClicked && idx >= initialDisplayCount) return null;\n return (\n <PrimeTimeItemComponent\n {...primeTimeItemProps}\n item={item}\n idx={idx}\n openIdx={openIdx}\n openIdxDate={openIdxDate}\n toggleItem={this.toggleItem}\n />\n );\n });\n }\n\n renderPrimeTimePanels() {\n const { primeTimePanels, breakpoint, overlay, isNavScheduleRendered } = this.props;\n const { renderStickyHeader } = BREAKPOINTS[breakpoint];\n\n const panels = _.get(primeTimePanels, 'member.0.items.member');\n\n const groupedBySchedules = _.groupBy(panels, panel =>\n format(stringToDate(panel.startDate), FORMAT_YEAR_MONTH_DAY),\n );\n const sortedSchedules = _.map(groupedBySchedules, (schedule, key) =>\n this.renderGrid(schedule, key),\n );\n\n const overflowDropdownOpen =\n overlay === OVERLAY_LIVE_CTA_OVERFLOW ? Style.childDropdownOpen : Style.childDropdownClosed;\n\n return (\n <StickyContainer>\n {\n <AltHeaderComponent\n theme={altHeaderTheme}\n topOffset={-90}\n isAltHeader\n isNavScheduleRendered={isNavScheduleRendered}\n className={Style.altHeaderWrapper}\n renderAltHeader={renderStickyHeader}\n >\n {this.renderDateLabel()}\n {this.renderDropdown()}\n </AltHeaderComponent>\n }\n <div className={overflowDropdownOpen}>{sortedSchedules}</div>\n </StickyContainer>\n );\n }\n\n render() {\n const { primeTimePanels, breakpoint } = this.props;\n const { renderDesktopGrid } = BREAKPOINTS[breakpoint];\n\n if (!primeTimePanels) return null;\n\n return renderDesktopGrid ? this.renderDesktop() : this.renderMobile();\n }\n}\n\nPrimeTimeGrid.defaultProps = {\n account: null,\n coordinates: null,\n favoritesManager: null,\n filterGridByDay: false,\n initialDisplayCount: null,\n isAuthenticated: null,\n isNavScheduleRendered: null,\n onTitleClick: noop,\n overlay: null,\n primeTimePanels: {},\n processor: noop,\n resetStillWatchingTimeout: noop,\n scrollToDateOnMount: true,\n selectedDate: null,\n setTimeout: noop,\n};\n\nPrimeTimeGrid.propTypes = {\n account: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n coordinates: PropTypes.shape({}),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n deleteFavorites: PropTypes.func.isRequired,\n }),\n filterGridByDay: PropTypes.bool,\n initialDisplayCount: PropTypes.number,\n isAuthenticated: PropTypes.bool,\n isNavScheduleRendered: PropTypes.bool,\n onChannelSelect: PropTypes.func.isRequired,\n onTitleClick: PropTypes.func,\n overlay: PropTypes.string,\n primeTimePanels: PropTypes.shape({}),\n processor: PropTypes.func,\n resetStillWatchingTimeout: PropTypes.func,\n scrollToDateOnMount: PropTypes.bool,\n selectedDate: PropTypes.instanceOf(Date),\n setOverlay: PropTypes.func.isRequired,\n setSelectedDate: PropTypes.func.isRequired,\n setTimeout: PropTypes.func,\n};\n\nexport default ReactTimeout(PrimeTimeGrid);\n","/* global EpgEnabled */\n// eslint-disable-line no-unused-vars\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport { connect } from 'react-redux';\nimport { Link, browserHistory } from 'react-router';\nimport { animateScroll, Element } from 'react-scroll';\nimport { StickyContainer } from 'react-sticky';\nimport classNames from 'classnames';\nimport { getCookie } from 'helpers/Storage';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { strikeBannerEnabled } from 'helpers/ConfigHelper';\nimport _ from 'lodash';\nimport BreadcrumbsComponent, { breadcrumbsLiveParser } from 'components/Breadcrumbs';\nimport Loader from 'components/Loader';\nimport StrikeBanner, { STRIKE_PAGE_TYPE_SCHEDULE } from 'components/StrikeBanner';\n\nimport NetworkImage from 'components/NetworkImage';\nimport { PAGE_LIVE } from 'helpers/PageHelper';\nimport {\n clearVideo as clearGlobalVideo,\n setScreenInControlOfState as setGlobalPlayerScreenInControlOfState,\n setDisableRender as setGlobalVideoDisabled,\n setVideoPanel as setGlobalVideoPanel,\n saveLiveRestart,\n setStreamExit,\n} from 'components/VideoPlayerGlobal/Actions';\nimport {\n getLocation,\n getPreviousPathname,\n helperGetHomeUrl,\n helperGetLiveUrl,\n helperGetStaticContentUrl,\n} from 'helpers/RouteHelper';\nimport {\n getErrorComponent,\n isStaticRender,\n OOM_LIVE_PLAYER_URL_COOKIE_NAME,\n setOutOfMarketLocalCookies,\n TAB_PRIMETIME,\n TAB_SCHEDULE,\n} from 'helpers/ContentHelper';\nimport { toBoolean, noop } from 'helpers/GlobalHelper';\nimport { SUCCESS_COOKIE_NAME } from 'helpers/AuthHelper';\nimport { now, isSameSecond, isBefore } from 'helpers/DateTimeHelper';\nimport { PLAYER_CONTEXT_LIVE, PLAYER_REFERENCE_GLOBAL, playerRemove } from 'helpers/PlayerHelper';\nimport { primeTimeVideoProcessor, singleStationVideoProcessor } from 'helpers/VideoProcessorHelper';\nimport {\n Events,\n getSegmentLivePageName,\n getTealiumSourceCollectionGlobal,\n handleAnalytics,\n PageNames,\n setSegmentContextSourceLive,\n trackPageReferrerAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport UpdaterComponent from 'screens/Live/components/PrimeTimeUpdater';\nimport ScheduleGridComponent from 'screens/Live/components/ScheduleGrid';\nimport PrimeTimeGridComponent from 'screens/Live/components/PrimeTimeGrid';\nimport breadcrumbsTheme from 'screens/Live/styles/Breadcrumbs.module.scss';\nimport {\n displayPrimeTimeMessage,\n getPrimeTimeMessage,\n isVideoLive,\n checkSameDayOfYear,\n epgLinks,\n getLiveDateRange,\n getLiveVideo,\n getSingleStationSchedulePanels,\n} from './LiveHelpers';\nimport {\n clearLive,\n fetchLiveAction,\n fetchLivePanel,\n fetchLivestream,\n fetchPrimeTime,\n} from './LiveActions';\nimport Style from './Live.module.scss';\n\nconst LIVE_SCROLL_ELEMENT = 'LIVE_SCROLL_ELEMENT';\nconst getSelectedTab = props => {\n const slug = _.trim(_.get(props, 'location.pathname'));\n let selectedTab = epgLinks.defaultTab;\n if (slug && _.includes(slug, 'nav')) selectedTab = epgLinks.navLinkTab;\n if (slug && _.includes(slug, 'schedule')) selectedTab = epgLinks.scheduleLinkTab;\n\n return selectedTab;\n};\n\nclass Live extends Component {\n constructor(props) {\n super(props);\n const selectedTab = getSelectedTab(props);\n const { globalVideo, defaultProgram, defaultChannel } = this.props;\n let selectedVideo = null;\n let selectedVideoData = null;\n if (globalVideo) {\n selectedVideoData = globalVideo;\n selectedVideo = _.get(globalVideo, 'livePlayerScreenUrl');\n }\n this.state = {\n selectedChannel: null,\n selectedDate: now(),\n selectedVideo,\n selectedVideoData,\n loadingGrid: false,\n selectedTab,\n panelTimeouts: {},\n firstChannelClick: false,\n liveVideoFetched: false,\n newRelicStart: false,\n selectedChannelCallSign: null,\n // trackedAnalyticsReferrer is used in trackPageReferrerAnalytics\n // eslint-disable-next-line react/no-unused-state\n trackedAnalyticsReferrer: false,\n defaultChannel,\n defaultProgram,\n };\n\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.ignoreUnmountReferrerAnalytics = false;\n }\n\n componentDidMount() {\n const {\n globalVideo,\n setGlobalPlayerScreenInControlOfState,\n setLivePage,\n startedPlayback,\n } = this.props;\n const successCookie = getCookie({ name: SUCCESS_COOKIE_NAME });\n const selectedChannel = _.get(successCookie, 'selectedChannel');\n if (selectedChannel) this.onChannelSelect({ selectedChannel });\n if (setLivePage) setLivePage(true);\n this.setPageView();\n const source = PAGE_LIVE;\n setGlobalPlayerScreenInControlOfState(source);\n const playbackPersistedFromPreviousScreen = !!globalVideo && startedPlayback;\n logEvent('onLiveScreenStart');\n logEvent('onLiveScreenView');\n this.fetchLocalData({ preventGlobalPanelSet: playbackPersistedFromPreviousScreen });\n this.setState({ defaultChannel: null, newRelicStart: true });\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { panels } = this.props;\n const { loadingGrid, selectedTab, selectedDate } = this.state;\n const { panels: nextPanels } = nextProps;\n const newState = {};\n\n if (loadingGrid === true) newState.loadingGrid = false;\n\n this.setSelectedTab(selectedTab, nextProps);\n\n if (checkSameDayOfYear(selectedDate, now()) && panels !== nextPanels) {\n newState.currentSchedule = nextPanels;\n }\n\n if (!_.isEmpty(newState)) this.setState(newState);\n }\n\n UNSAFE_componentWillUpdate(nextProps, nextState) {\n const { selectedChannel, defaultChannel } = this.state;\n const { params: prevParams } = this.props;\n const { defaultChannelVideo, panels: nextPanels, params: nextParams } = nextProps;\n const { selectedChannelCallSign } = nextState;\n const { callSign: prevCallSign } = prevParams;\n const { callSign: nextCallSign } = nextParams;\n\n const callSignChanged = prevCallSign !== nextCallSign && nextCallSign;\n\n if (callSignChanged && selectedChannelCallSign !== nextCallSign) {\n this.onChannelSelect({ callSign: nextCallSign });\n }\n\n this.setFirstChannel(defaultChannel, defaultChannelVideo, selectedChannel, nextPanels);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const {\n accessToken,\n clearGlobalVideo,\n clearLive,\n coordinates,\n deviceId,\n fetchLivestream,\n panels,\n routeParams,\n savedVideo,\n video,\n } = this.props;\n const {\n accessToken: prevAccessToken,\n coordinates: prevCoordinates,\n panels: prevPanels,\n routeParams: prevRouteParams,\n savedVideo: prevSavedVideo,\n video: prevVideo,\n } = prevProps;\n const {\n selectedChannel,\n selectedChannelCallSign,\n selectedDate,\n liveVideoFetched,\n defaultChannel,\n defaultProgram,\n newRelicStart,\n } = this.state;\n const { selectedVideo: prevSelectedVideo, selectedDate: prevSelectedDate } = prevState;\n\n if (newRelicStart) {\n logEvent('onLiveScreenFinished');\n this.setState({ newRelicStart: false });\n }\n const member = _.get(panels, 'member', null);\n const userLocationChanged = !_.isEqual(prevCoordinates, coordinates);\n const panelsChanged = !prevPanels && panels;\n const userSelectedChannel = member && !prevSelectedVideo && selectedChannel !== null;\n const accessTokenChanged = accessToken !== prevAccessToken;\n const savedVideoChanged = savedVideo !== prevSavedVideo;\n const gridDayChanged = !checkSameDayOfYear(prevSelectedDate, selectedDate);\n const videoIdChanged = video !== prevVideo;\n const urlVideoId = _.get(routeParams, 'videoId');\n const prevUrlVideoId = _.get(prevRouteParams, 'videoId');\n const urlVideoIdChanged = urlVideoId !== prevUrlVideoId;\n\n if (userSelectedChannel) {\n this.onChannelSelect({\n selectedChannel: selectedChannel || 0,\n channels: member,\n });\n }\n\n if (\n !EpgEnabled &&\n urlVideoId &&\n !savedVideo &&\n !prevSavedVideo &&\n !video &&\n !liveVideoFetched\n ) {\n fetchLivestream(accessToken, urlVideoId, deviceId);\n this.setState({ liveVideoFetched: true });\n }\n\n if (userLocationChanged || accessTokenChanged || savedVideoChanged || videoIdChanged) {\n this.fetchLocalData();\n } else if (gridDayChanged) {\n this.fetchLocalData({ skipPrimetime: true });\n }\n\n if (panelsChanged) this.setPanelTimeouts();\n\n if (videoIdChanged && selectedChannel !== null && panels && selectedChannelCallSign) {\n const newCallSign = _.get(panels, `member.${selectedChannel}.callSign`);\n if (newCallSign !== selectedChannelCallSign) {\n this.onChannelSelect({ callSign: newCallSign });\n }\n }\n if (defaultProgram && defaultChannel && !selectedChannel) {\n this.onChannelSelect({ selectedChannel: defaultChannel, programId: defaultProgram });\n }\n\n if (urlVideoIdChanged) {\n clearLive();\n clearGlobalVideo();\n this.fetchLocalData();\n }\n }\n\n componentWillUnmount() {\n const { clearGlobalVideo, clearLive, setGlobalVideoDisabled, setLivePage } = this.props;\n const source = PAGE_LIVE;\n setOutOfMarketLocalCookies({ resetCookies: true });\n setGlobalVideoDisabled({ value: true, source });\n clearGlobalVideo({ source });\n setLivePage(false);\n clearLive();\n }\n\n onChannelSelect = (opts = {}) => {\n const {\n selectedChannel,\n callSign,\n channels,\n id: panelId,\n programId,\n clearQuery = false,\n overrideDigitalChannel,\n } = opts;\n let isOverFlow = false;\n const { location, setGlobalVideoPanel } = this.props;\n const {\n selectedVideo: prevSelectedVideo,\n selectedVideoData: prevSelectedVideoData,\n selectedChannel: prevSelectedChannel,\n firstChannelClick,\n defaultProgram,\n defaultChannel,\n } = this.state;\n const outOfMarketLivePlayerUrl = getCookie({ name: OOM_LIVE_PLAYER_URL_COOKIE_NAME });\n const urlParams = _.get(location, `query`);\n const epgListingId = clearQuery ? '' : _.get(urlParams, 'id');\n const channelList = !overrideDigitalChannel\n ? channels || _.get(this.props, 'panels.member')\n : _.get(this.props, 'panels.member.0.items.member');\n let channelIndex = selectedChannel;\n let selectedPanel = null;\n if (!channelIndex && callSign) {\n channelIndex = _.toInteger(\n _.findKey(channelList, channel => _.toUpper(channel.callSign) === _.toUpper(callSign)),\n );\n if (epgListingId) {\n selectedPanel = _.get(channelList, `${channelIndex}`, []);\n const panelItems = _.get(selectedPanel, 'items.member');\n const livePanelItems = _.filter(panelItems, item => isVideoLive(item));\n const epgItemIndex = _.toInteger(_.findKey(livePanelItems, { id: epgListingId }));\n channelIndex = epgItemIndex !== 0 ? `${channelIndex}-${epgItemIndex}` : channelIndex;\n }\n }\n if (channelIndex && _.includes(channelIndex, '-overFlow')) {\n isOverFlow = true;\n channelIndex = parseInt(_.replace(channelIndex, '-overFlow', ''), 10);\n }\n if (!selectedPanel) {\n selectedPanel = _.get(channelList, `${channelIndex}`, []);\n }\n if (panelId) {\n selectedPanel = channelList.find(panel => panel.id === panelId);\n }\n if (defaultChannel && channelList) {\n selectedPanel = channelList.find(panel => {\n const callSign = _.get(panel, 'callSign');\n return callSign && callSign.toLowerCase() === defaultChannel.toLowerCase();\n });\n }\n let selectedVideoData = {};\n // Revisit\n const newProgram = programId || defaultProgram;\n if (newProgram) {\n const programs = _.get(selectedPanel, 'items.member', []);\n selectedVideoData = programs.find(program => program.id === newProgram);\n } else {\n selectedVideoData = getLiveVideo({ panel: selectedPanel, isOverFlow, epgListingId });\n if (!selectedVideoData && overrideDigitalChannel) {\n selectedVideoData = selectedPanel;\n }\n }\n const livePlayerScreenUrl = _.get(selectedVideoData, 'livePlayerScreenUrl', null);\n const playerScreenUrlChange =\n _.get(selectedVideoData, 'playerScreenUrl') !==\n _.get(prevSelectedVideoData, 'playerScreenUrl');\n const channelChange = selectedChannel !== prevSelectedChannel;\n\n if (outOfMarketLivePlayerUrl && selectedVideoData) {\n selectedVideoData.livePlayerScreenUrl = outOfMarketLivePlayerUrl;\n selectedVideoData.images = null;\n selectedVideoData.requiredEntitlements = null;\n }\n\n if (channelChange) {\n if (!firstChannelClick) {\n this.setState({ firstChannelClick: true });\n } else {\n setSegmentContextSourceLive(false);\n }\n animateScroll.scrollTo(0, { duration: 500, smooth: true });\n }\n\n if (prevSelectedVideo === livePlayerScreenUrl && !playerScreenUrlChange && !channelChange)\n return;\n\n if (selectedVideoData) {\n setGlobalVideoPanel({ video: selectedVideoData, source: PAGE_LIVE });\n }\n\n const selectedChannelCallSign = _.get(selectedPanel, 'callSign');\n this.setState(\n {\n selectedChannel: channelIndex,\n selectedChannelCallSign,\n selectedVideo: livePlayerScreenUrl,\n selectedVideoData,\n },\n () => {\n if (selectedChannelCallSign && !outOfMarketLivePlayerUrl) {\n const nextPath = helperGetLiveUrl({ callSign: selectedChannelCallSign });\n const params = programId ? `?id=${programId}` : _.get(location, 'search', '');\n const nextUrl = clearQuery ? nextPath : `${nextPath}${params}`;\n browserHistory.replace(nextUrl);\n }\n },\n );\n };\n\n getChannelContent() {\n const { panels } = this.props;\n const { selectedChannel } = this.state;\n return _.get(panels, `member.${selectedChannel || 0}`);\n }\n\n getNetwork() {\n return _.get(this.getChannelContent(), 'items.member.0.network');\n }\n\n getPrimeTimeMessage() {\n const { panels } = this.props;\n const { selectedChannel, selectedDate } = this.state;\n const { seriesDetail_tuneinTextSeparator: textSeparator } = window.Language;\n const message = getPrimeTimeMessage({\n panels,\n selectedChannel,\n selectedDate,\n });\n\n const network = this.getNetwork();\n\n return (\n <div className={Style.bannerCopy}>\n <span>\n {message} {textSeparator}\n </span>\n <NetworkImage network={network} title={message} />\n </div>\n );\n }\n\n setFirstChannel(defaultChannel, defaultChannelVideo, selectedChannel, nextPanels) {\n if (selectedChannel === null && !isStaticRender() && nextPanels) {\n const urlCallSign = _.get(this.props, 'params.callSign');\n let newChannel = 0;\n const channels = _.get(nextPanels, 'member', null);\n const getChannelIdxFromVideoId = videoId =>\n _.findIndex(channels, channel => {\n const currentVideoIndex = _.findIndex(channel.items.member, video => isVideoLive(video));\n const currentVideo = _.get(channel, `items.member.${currentVideoIndex}`, null);\n const currentVideoId = _.get(currentVideo, 'id', null);\n return currentVideoId === videoId;\n });\n const { globalVideo, startedPlayback } = this.props;\n if (globalVideo && startedPlayback) {\n const globalVideoId = _.get(globalVideo, 'id', null);\n newChannel = getChannelIdxFromVideoId(globalVideoId);\n this.setState({ selectedChannel: newChannel });\n } else if (urlCallSign) {\n this.onChannelSelect({ callSign: urlCallSign, channels });\n } else {\n if (defaultChannel) {\n newChannel = getChannelIdxFromVideoId(defaultChannelVideo);\n // check for channel if defaultChannelVideo is not live\n if (newChannel === -1 && defaultChannelVideo) {\n newChannel = _.findIndex(channels, channel => {\n let videoFound = false;\n let currentVideoId;\n _.forEach(channel.items.member, video => {\n currentVideoId = _.get(video, 'id', null);\n if (currentVideoId === defaultChannelVideo) videoFound = true;\n });\n return videoFound;\n });\n }\n }\n if (newChannel >= 0) {\n this.onChannelSelect({ selectedChannel: newChannel, channels });\n }\n }\n }\n }\n\n setPageView() {\n const { pageViewEvent, getUseUtagGlobal } = this.props;\n const sourceCollection = getTealiumSourceCollectionGlobal();\n const collection = sourceCollection ? { ...sourceCollection } : null;\n const useUtagGlobal = getUseUtagGlobal();\n\n if (!collection) {\n pageViewEvent({ pageName: PageNames.LIVE, useUtagGlobal });\n const callSign = _.get(window, 'utag_data.call_sign', null);\n handleAnalytics({\n event: Events.TOP_LEVEL_SECTION_LANDING,\n payload: {\n pageName: callSign ? `live tv:landing:${callSign}` : `live tv:landing`,\n callSign,\n },\n });\n }\n\n pageViewEvent({\n pageName: getSegmentLivePageName({\n location: getLocation(window.referrer),\n previousPath: getPreviousPathname(),\n }),\n useUtagGlobal,\n });\n }\n\n setPanelTimeouts() {\n const { clearTimeout, panels, setTimeout } = this.props;\n if (!panels) return;\n const { panelTimeouts: prevPanelTimeouts, selectedDate } = this.state;\n const currentDate = now();\n const sameDay = checkSameDayOfYear(currentDate, selectedDate);\n let duration = null;\n let timeoutId = null;\n const newTimeouts = {};\n _.forEach(panels.member, panel => {\n duration = panel.validFor;\n timeoutId = `panel-${panel.id}`;\n if (prevPanelTimeouts[timeoutId]) clearTimeout(prevPanelTimeouts[timeoutId]);\n if (sameDay) {\n newTimeouts[timeoutId] = setTimeout(() => {\n this.fetchPanelData(panel);\n }, duration);\n }\n });\n this.setState({ panelTimeouts: newTimeouts });\n }\n\n setSelectedDate = (newSelectedDate, resetTimer = true) => {\n const { selectedDate: oldSelectedDate } = this.state;\n const oldDate = oldSelectedDate || now();\n const newDate = newSelectedDate || now();\n const currentDate = now();\n if (resetTimer) this.resetStillWatchingTimeout();\n if (!isSameSecond(oldDate, newDate)) {\n const selectedDate = isBefore(newDate, currentDate) ? currentDate : newDate;\n this.setState({ selectedDate });\n }\n };\n\n setSelectedTab(selectedTab, nextProps) {\n let newSelectedTab = selectedTab;\n\n const slug = _.trim(_.get(this.props, 'location.pathname'));\n const nextSlug = _.trim(_.get(nextProps, 'location.pathname'));\n\n const currentVideoHasNav = slug && _.includes(slug, 'nav');\n const nextVideoHasNav = nextSlug && _.includes(nextSlug, 'nav');\n if (nextVideoHasNav && currentVideoHasNav !== nextVideoHasNav) {\n newSelectedTab = epgLinks.navLinkTab;\n }\n\n const currentVideoHasSchedule = slug && _.includes(slug, 'schedule');\n const nextVideoHasSchedule = nextSlug && _.includes(nextSlug, 'schedule');\n if (nextVideoHasSchedule && currentVideoHasSchedule !== nextVideoHasSchedule) {\n newSelectedTab = epgLinks.scheduleLinkTab;\n }\n\n if (selectedTab !== newSelectedTab) this.setState({ selectedTab: newSelectedTab });\n }\n\n handleStreamExit = () => {\n const previousPath = getPreviousPathname();\n const wasLive = previousPath.match(/^\\/(live)(\\/)?(.*)$/);\n const homePath = helperGetHomeUrl();\n const nextPath = previousPath || homePath;\n\n if (previousPath && !wasLive) {\n browserHistory.push(nextPath);\n }\n return this.renderStreamExit();\n };\n\n resetStillWatchingTimeout = () => {\n const { setGlobalShouldResetStillWatching } = this.props;\n setGlobalShouldResetStillWatching(true);\n };\n\n fetchLocalData(options = {}) {\n const { panelUrl, skipPrimetime, preventGlobalPanelSet } = options;\n const {\n coordinates,\n accessToken,\n deviceId,\n fetchLiveAction,\n fetchLivePanel,\n fetchPrimeTime,\n routeParams,\n savedVideo,\n setGlobalVideoPanel,\n video,\n } = this.props;\n const { selectedDate } = this.state;\n if (isStaticRender()) return;\n const urlVideoId = _.get(routeParams, 'videoId');\n if (!EpgEnabled && urlVideoId) {\n const selectedVideo =\n _.get(savedVideo, 'livePlayerScreenUrl') || _.get(video, 'livePlayerScreenUrl', null);\n const currentVideo = savedVideo || video;\n if (!preventGlobalPanelSet && currentVideo) {\n setGlobalVideoPanel({ video: currentVideo, source: PAGE_LIVE });\n }\n\n this.setState({\n selectedVideo,\n selectedVideoData: savedVideo || video,\n });\n return;\n }\n const dateRange = getLiveDateRange(selectedDate);\n if (panelUrl) {\n fetchLivePanel({ accessToken, panelUrl, dateRange, coordinates, deviceId });\n } else {\n this.setState({ loadingGrid: true });\n fetchLiveAction({\n accessToken,\n dateRange,\n coordinates,\n deviceId,\n });\n if (!skipPrimetime) fetchPrimeTime(accessToken, coordinates, deviceId);\n }\n }\n\n fetchPanelData(panel) {\n const { clearTimeout, setTimeout } = this.props;\n const url = panel['@id'];\n this.fetchLocalData({ panelUrl: url });\n const { id, validFor } = panel;\n const timeoutId = `panel-${id}`;\n const { panelTimeouts: prevPanelTimeouts } = this.state;\n const newTimeout = {};\n if (prevPanelTimeouts[timeoutId]) clearTimeout(prevPanelTimeouts[timeoutId]);\n newTimeout[timeoutId] = setTimeout(() => {\n this.fetchPanelData(panel);\n }, validFor);\n const panelTimeouts = _.merge(prevPanelTimeouts, newTimeout);\n this.setState({ panelTimeouts });\n }\n\n renderBanner() {\n const primeTimeMessage = this.getPrimeTimeMessage();\n const backgroundUrl = helperGetStaticContentUrl('images', 'Fallback-FOX-bg.jpg');\n const backgroundImage = `url(${backgroundUrl})`;\n\n return (\n <div\n className={`${classNames(Style.container, Style.bannerContainer)}`}\n data-testid=\"ft-mobile-banner\"\n style={{ backgroundImage }}\n >\n {primeTimeMessage}\n </div>\n );\n }\n\n renderLiveTV() {\n const {\n panels,\n account,\n preauthorizedResources,\n isAuthenticated,\n breakpoint,\n saveLiveRestart,\n setOverlay,\n overlay,\n favoritesManager,\n location,\n } = this.props;\n const {\n selectedVideoData,\n selectedChannel,\n selectedDate,\n loadingGrid,\n defaultProgram,\n } = this.state;\n\n return (\n <ScheduleGridComponent\n favoritesManager={favoritesManager}\n panels={panels}\n onChannelSelect={this.onChannelSelect}\n selectedChannel={selectedChannel}\n account={account}\n selectedDate={selectedDate}\n setSelectedDate={this.setSelectedDate}\n resetStillWatchingTimeout={this.resetStillWatchingTimeout}\n preauthorizedResources={preauthorizedResources}\n isAuthenticated={isAuthenticated}\n breakpoint={breakpoint}\n saveLiveRestart={saveLiveRestart}\n loadingGrid={loadingGrid}\n isStatic={isStaticRender()}\n setOverlay={setOverlay}\n overlay={overlay}\n selectedVideoData={selectedVideoData}\n location={location}\n defaultProgram={defaultProgram}\n />\n );\n }\n\n renderPlayerOrBanner() {\n const { globalPlayerDisabled, setGlobalVideoDisabled, streamExit } = this.props;\n const { selectedVideo } = this.state;\n\n const network = this.getNetwork();\n const shouldDisplayBanner = !selectedVideo && displayPrimeTimeMessage({ network });\n\n let output;\n const component = () => {\n const source = PAGE_LIVE;\n if (isStaticRender()) {\n output = <div className={Style.playerSpacer} />;\n } else if (shouldDisplayBanner) {\n output = this.renderBanner();\n if (!globalPlayerDisabled) setGlobalVideoDisabled({ value: true, source });\n } else {\n output = null;\n if (globalPlayerDisabled) {\n setGlobalVideoDisabled({\n context: PLAYER_CONTEXT_LIVE,\n source,\n value: false,\n });\n }\n }\n if (streamExit) {\n output = this.handleStreamExit();\n }\n return output;\n };\n\n return <UpdaterComponent>{component()}</UpdaterComponent>;\n }\n\n renderPrimeTimeSchedule() {\n const {\n primeTimePanels,\n primeTimePanelCount,\n account,\n preauthorizedResources,\n isAuthenticated,\n isNavScheduleRendered,\n breakpoint,\n coordinates,\n saveLiveRestart,\n setOverlay,\n overlay,\n favoritesManager,\n } = this.props;\n const { selectedChannel, selectedDate, loadingGrid } = this.state;\n\n const primeTimeGridProps = {\n account,\n breakpoint,\n coordinates,\n isAuthenticated,\n isNavScheduleRendered,\n loadingGrid,\n preauthorizedResources,\n primeTimePanelCount,\n primeTimePanels,\n processor: primeTimeVideoProcessor,\n saveLiveRestart,\n selectedChannel,\n selectedDate,\n onChannelSelect: this.onChannelSelect,\n resetStillWatchingTimeout: this.resetStillWatchingTimeout,\n setSelectedDate: this.setSelectedDate,\n setOverlay,\n overlay,\n favoritesManager,\n };\n\n return <PrimeTimeGridComponent {...primeTimeGridProps} />;\n }\n\n renderSingleStationSchedule() {\n const {\n account,\n breakpoint,\n isAuthenticated,\n overlay,\n preauthorizedResources,\n primeTimePanelCount,\n panels,\n routeParams,\n setOverlay,\n globalVideo,\n } = this.props;\n const { loadingGrid, selectedChannel, selectedDate } = this.state;\n const urlVideoId = _.get(routeParams, 'videoId');\n if (urlVideoId) return null;\n\n const primeTimePanels = getSingleStationSchedulePanels(panels);\n const upcomingVideos = _.get(primeTimePanels, 'member.0.items.member', []);\n if (_.isEmpty(upcomingVideos) && !globalVideo) return null;\n const primeTimeGridProps = {\n account,\n breakpoint,\n filterGridByDay: true,\n initialDisplayCount: 5,\n isAuthenticated,\n loadingGrid,\n preauthorizedResources,\n primeTimePanelCount,\n primeTimePanels,\n processor: singleStationVideoProcessor,\n scrollToDateOnMount: false,\n selectedChannel,\n selectedDate,\n onChannelSelect: this.onChannelSelect,\n resetStillWatchingTimeout: this.resetStillWatchingTimeout,\n setSelectedDate: this.setSelectedDate,\n setOverlay,\n overlay,\n };\n\n return <PrimeTimeGridComponent {...primeTimeGridProps} />;\n }\n\n renderShowSchedules() {\n if (!EpgEnabled) return null;\n const { selectedTab } = this.state;\n return (\n <Element name={LIVE_SCROLL_ELEMENT} data-testid=\"live-epg\">\n {this.renderTabs()}\n {selectedTab === TAB_PRIMETIME && this.renderPrimeTimeSchedule()}\n {selectedTab === TAB_SCHEDULE && this.renderLiveTV()}\n </Element>\n );\n }\n\n renderStreamExit = () => {\n playerRemove(PLAYER_REFERENCE_GLOBAL);\n const backgroundUrl = helperGetStaticContentUrl('images', 'Fallback-FOX-bg.jpg');\n const backgroundImage = `url(${backgroundUrl})`;\n\n const title = _.get(window, 'Language.streamExit_header', 'Your program has ended');\n const subtitle = _.get(\n window,\n 'Language.streamExit_message',\n 'Check out another live stream below.',\n );\n\n return (\n <div\n className={`${classNames(Style.container, Style.exitContainer)}`}\n style={{ backgroundImage }}\n >\n <div className={Style.exitCopy}>\n <span className={Style.exitHeader}>{title}</span>\n <span>{subtitle}</span>\n </div>\n </div>\n );\n };\n\n renderTabs() {\n const { globalNavPrimetimeTickerEnabled } = window.ExternalConfig;\n const primetimeScheduleEnabled = toBoolean(globalNavPrimetimeTickerEnabled);\n if (!primetimeScheduleEnabled) return null;\n\n const { panels } = this.props;\n const { selectedTab } = this.state;\n const {\n epg_primetimeButton: primeTimeText,\n epg_scheduleButton: scheduleText,\n } = window.Language;\n\n if (!panels) return null;\n\n const tabOrder = _.get(epgLinks, 'tabOrder');\n\n const tabTitles = {};\n tabTitles[TAB_PRIMETIME] = primeTimeText;\n tabTitles[TAB_SCHEDULE] = scheduleText;\n\n const getLiveTabSlug = tab => {\n const { navLinkTab } = epgLinks;\n if (tab === navLinkTab) return 'nav';\n return 'schedule';\n };\n\n const tabs = tabOrder.map(tab => (\n <Link\n className={classNames(Style.tab, selectedTab === tab ? Style.active : null)}\n to={`${helperGetLiveUrl()}${getLiveTabSlug(tab)}/`}\n key={`live-tab-${getLiveTabSlug(tab)}`}\n >\n {tabTitles[tab]}\n </Link>\n ));\n\n return <div className={Style.tabButtons}>{tabs}</div>;\n }\n\n renderStrikeBanner = () => {\n if (!strikeBannerEnabled()) return null;\n const bannerProps = {\n index: 1,\n pageType: STRIKE_PAGE_TYPE_SCHEDULE,\n };\n return <StrikeBanner {...bannerProps} />;\n };\n\n render() {\n const {\n coordinates,\n errors,\n globalVideo,\n panels,\n routeParams,\n savedVideo,\n seo,\n setLoading,\n } = this.props;\n const { selectedTab } = this.state;\n if (errors && !_.isArray(errors)) return getErrorComponent(errors);\n const tags = setHelmetTags(seo);\n const hasPanels = !!(panels && panels.member && panels.member.length > 0);\n const urlVideoId = _.get(routeParams, 'videoId');\n const showLoader = (coordinates && EpgEnabled) || !urlVideoId;\n const outOfMarketLivePlayerUrl = getCookie({ name: OOM_LIVE_PLAYER_URL_COOKIE_NAME });\n if (showLoader && !hasPanels && !globalVideo) {\n return <Loader setLoading={setLoading} center />;\n }\n const epgContainerClasses = [Style.epgWrap];\n if (outOfMarketLivePlayerUrl) epgContainerClasses.push(Style.noEpg);\n const breadcrumbsData = breadcrumbsLiveParser(selectedTab, savedVideo);\n const breadcrumbs = <BreadcrumbsComponent data={breadcrumbsData} theme={breadcrumbsTheme} />;\n\n return (\n <section className={classNames(epgContainerClasses)}>\n <StickyContainer>\n <div className={Style.epgContainer}>\n {tags}\n {this.renderPlayerOrBanner()}\n {!outOfMarketLivePlayerUrl && this.renderShowSchedules()}\n {this.renderSingleStationSchedule()}\n </div>\n </StickyContainer>\n {this.renderStrikeBanner()}\n {hasPanels || !EpgEnabled ? breadcrumbs : null}\n </section>\n );\n }\n}\n\nLive.defaultProps = {\n accessToken: null,\n account: null,\n adblock: false,\n anonymousId: null,\n campaignOverrides: {},\n clearGlobalVideo: noop,\n clearInterval: noop,\n clearTimeout: noop,\n coordinates: null,\n defaultChannel: null,\n defaultProgram: null,\n deviceId: null,\n errors: null,\n favoritesManager: {},\n fetchLivestream: noop,\n globalPlayerDisabled: true,\n globalVideo: null,\n isAuthenticated: false,\n isHeader: false,\n isPlayerLoaded: false,\n livePanel: null,\n location: {},\n mvpdData: null,\n overlay: null,\n panels: null,\n params: {},\n preauthorizedResources: [],\n primeTimePanelCount: null,\n primeTimePanels: null,\n profileId: null,\n provider: {},\n routeParams: {},\n savedVideo: null,\n seo: null,\n setCoordinates: noop,\n setGlobalShouldResetStillWatching: noop,\n setGlobalVideoDisabled: noop,\n setGlobalVideoPanel: noop,\n setInterval: noop,\n setIsPlayerLoaded: noop,\n setLivePage: noop,\n setLoading: null,\n setMVPDLogoutDataToAppState: noop,\n setMVPDToAppState: noop,\n setPreauthorizedResources: null,\n setProvider: noop,\n setTimeout: noop,\n startedPlayback: false,\n streamExit: false,\n video: null,\n};\n\nLive.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n adblock: PropTypes.bool,\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func.isRequired,\n breakpoint: PropTypes.string.isRequired,\n campaignOverrides: PropTypes.shape({}),\n clearGlobalVideo: PropTypes.func,\n clearInterval: PropTypes.func,\n clearLive: PropTypes.func.isRequired,\n clearTimeout: PropTypes.func,\n coordinates: PropTypes.shape({}),\n defaultChannel: PropTypes.string,\n defaultProgram: PropTypes.string,\n deviceId: PropTypes.string,\n errors: PropTypes.number,\n favoritesManager: PropTypes.shape({\n deleteFavorites: PropTypes.func.isRequired,\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n }),\n fetchLiveAction: PropTypes.func.isRequired,\n fetchLivePanel: PropTypes.func.isRequired,\n fetchLivestream: PropTypes.func,\n fetchPrimeTime: PropTypes.func.isRequired,\n getUseUtagGlobal: PropTypes.func.isRequired,\n globalPlayerDisabled: PropTypes.bool,\n globalVideo: PropTypes.shape({}),\n isAuthenticated: PropTypes.bool,\n isHeader: PropTypes.bool,\n isNavScheduleRendered: PropTypes.bool.isRequired,\n isPlayerLoaded: PropTypes.bool,\n livePanel: PropTypes.shape({}),\n location: PropTypes.shape({}),\n mvpdData: PropTypes.shape({}),\n overlay: PropTypes.string,\n pageViewEvent: PropTypes.func.isRequired,\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n params: PropTypes.shape({}),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n primeTimePanelCount: PropTypes.number,\n primeTimePanels: PropTypes.shape({}),\n profileId: PropTypes.string,\n provider: PropTypes.shape({}),\n renderAuthContainer: PropTypes.func.isRequired,\n routeParams: PropTypes.shape({}),\n saveLiveRestart: PropTypes.func.isRequired,\n savedVideo: PropTypes.shape({}),\n seo: PropTypes.shape({}),\n setAuthorizationToken: PropTypes.func.isRequired,\n setCoordinates: PropTypes.func,\n setGlobalPlayerScreenInControlOfState: PropTypes.func.isRequired,\n setGlobalShouldResetStillWatching: PropTypes.func,\n setGlobalVideoDisabled: PropTypes.func,\n setGlobalVideoPanel: PropTypes.func,\n setInterval: PropTypes.func,\n setIsAuthenticated: PropTypes.func.isRequired,\n setIsPlayerLoaded: PropTypes.func,\n setLivePage: PropTypes.func,\n setLoading: PropTypes.func,\n setMVPDLogoutDataToAppState: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setOverlay: PropTypes.func.isRequired,\n setPreauthorizedResources: PropTypes.func,\n setProvider: PropTypes.func,\n setTimeout: PropTypes.func,\n startedPlayback: PropTypes.bool,\n streamExit: PropTypes.bool,\n video: PropTypes.shape({}),\n};\n\nconst mapStateToProps = ({\n live: {\n currentTime,\n defaultChannel,\n defaultChannelVideo,\n defaultProgram,\n errors,\n panel,\n panels,\n primeTimePanels,\n savedVideo,\n seo,\n video,\n },\n globalVideo: {\n disableRender: globalPlayerDisabled,\n startedPlayback,\n video: globalVideo,\n streamExit,\n },\n}) => {\n const primeTimePanelCount = primeTimePanels && primeTimePanels.length;\n\n return {\n currentTime,\n defaultChannel,\n defaultChannelVideo,\n defaultProgram,\n errors,\n globalPlayerDisabled,\n globalVideo,\n livePanel: panel,\n panels,\n primeTimePanelCount,\n primeTimePanels,\n savedVideo,\n seo,\n startedPlayback,\n video,\n streamExit,\n };\n};\n\nconst TimeoutLive = ReactTimeout(\n connect(mapStateToProps, {\n clearGlobalVideo,\n clearLive,\n fetchLiveAction,\n fetchLivePanel,\n fetchLivestream,\n fetchPrimeTime,\n saveLiveRestart,\n setGlobalPlayerScreenInControlOfState,\n setGlobalVideoDisabled,\n setGlobalVideoPanel,\n setStreamExit,\n })(Live),\n);\n\nexport default TimeoutLive;\n","import { isEpgv2Enabled } from 'helpers/ConfigHelper';\nimport FoxLiveWrapper from './FoxLiveWrapper';\nimport Live from './Live';\n\nexport default isEpgv2Enabled() ? FoxLiveWrapper : Live;\n","import e from\"@babel/runtime/helpers/classCallCheck\";import t from\"@babel/runtime/helpers/createClass\";import n from\"@babel/runtime/helpers/assertThisInitialized\";import r from\"@babel/runtime/helpers/inherits\";import i from\"@babel/runtime/helpers/possibleConstructorReturn\";import s from\"@babel/runtime/helpers/getPrototypeOf\";import{Component as a,useRef as o,useEffect as u,useMemo as c}from\"react\";import l from\"prop-types\";import d from\"@babel/runtime/helpers/asyncToGenerator\";import h from\"@babel/runtime/helpers/slicedToArray\";import m from\"@babel/runtime/regenerator\";import p from\"@babel/runtime/helpers/typeof\";var f=\"object\"===(\"undefined\"==typeof window||\"undefined\"==typeof window?\"undefined\":p(window)),v=f?document:{},g=[\"mousemove\",\"keydown\",\"wheel\",\"DOMMouseScroll\",\"mousewheel\",\"mousedown\",\"touchstart\",\"touchmove\",\"MSPointerDown\",\"MSPointerMove\",\"visibilitychange\"];function b(e,t){var n;function r(){for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];n&&clearTimeout(n),n=setTimeout((function(){e.apply(void 0,i),n=null}),t)}return r.cancel=function(){clearTimeout(n)},r}function T(e,t){var n=0;return function(){var r=(new Date).getTime();if(!(r-n<t))return n=r,e.apply(void 0,arguments)}}var _=0,y=0;function w(){var e=(new Date).getTime();return e===_?1e3*e+ ++y:(_=e,y=0,1e3*e)}function k(){return Math.random().toString(36).substring(2)}function A(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}function I(){return(new Date).getTime()}var E={create:function(e){var t={messagesCallback:null,bc:new BroadcastChannel(e)};return t.bc.onmessage=function(e){t.messagesCallback&&t.messagesCallback(e.data)},t},close:function(e){e.bc.close()},onMessage:function(e,t){e.messagesCallback=t},postMessage:function(e,t){try{return e.bc.postMessage(t,!1),Promise.resolve()}catch(e){return Promise.reject(e)}},canBeUsed:function(){return\"function\"==typeof BroadcastChannel},type:\"broadcastChannel\",averageResponseTime:function(){return 150},microSeconds:w},L=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6e4;e(this,n),this.ttl=t,this.set=new Set,this.timeMap=new Map}return t(n,[{key:\"has\",value:function(e){return this.set.has(e)}},{key:\"add\",value:function(e){this.timeMap.set(e,I()),this.set.add(e),this._removeTooOldValues()}},{key:\"clear\",value:function(){this.set.clear(),this.timeMap.clear()}},{key:\"_removeTooOldValues\",value:function(){for(var e=I()-this.ttl,t=this.set[Symbol.iterator]();;){var n=t.next().value;if(!n)return;if(!(this.timeMap.get(n)<e))return;this.timeMap.delete(n),this.set.delete(n)}}}]),n}();function O(){var e;if(\"undefined\"==typeof window)return null;try{e=window.localStorage,e=window[\"ie8-eventlistener/storage\"]||window.localStorage}catch(e){}return e}function M(e,t){var n=e,r=function(e){e.key===n&&t(JSON.parse(e.newValue))};return window.addEventListener(\"storage\",r),r}function D(){var e=O();if(!e)return!1;try{var t=\"__check\";e.setItem(t,\"works\"),e.removeItem(t)}catch(e){return!1}return!0}var S={create:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!D())throw new Error(\"❌ localStorage cannot be used.\");var n=k(),r=new L(t.removeTimeout),i={channelName:e,uuid:n,eMIs:r};return i.listener=M(e,(function(e){i.messagesCallback&&e.uuid!==n&&e.token&&!r.has(e.token)&&(e.data.time&&e.data.time<i.messagesCallbackTime||(r.add(e.token),i.messagesCallback(e.data)))})),i},close:function(e){var t;t=e.listener,window.removeEventListener(\"storage\",t)},onMessage:function(e,t,n){e.messagesCallbackTime=n,e.messagesCallback=t},postMessage:function(e,t){return new Promise((function(n){var r=e.channelName,i={token:k(),time:(new Date).getTime(),data:t,uuid:e.uuid},s=JSON.stringify(i);O().setItem(r,s);var a=document.createEvent(\"Event\");a.initEvent(\"storage\",!0,!0),a.key=r,a.newValue=s,window.dispatchEvent(a),n()}))},canBeUsed:D,type:\"localStorage\",averageResponseTime:function(){var e=navigator.userAgent.toLowerCase();return e.includes(\"safari\")&&!e.includes(\"chrome\")?240:120},microSeconds:w},P=new Set;var C={create:function(e){var t={name:e,messagesCallback:null};return P.add(t),t},close:function(e){P.delete(e)},onMessage:function(e,t){e.messagesCallback=t},postMessage:function(e,t){return new Promise((function(n){return setTimeout((function(){Array.from(P).filter((function(t){return t.name===e.name})).filter((function(t){return t!==e})).filter((function(e){return!!e.messagesCallback})).forEach((function(e){return e.messagesCallback(t)})),n()}),5)}))},canBeUsed:function(){return!0},type:\"simulate\",averageResponseTime:function(){return 5},microSeconds:w},x=[E,S];function B(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.type){if(\"simulate\"===e.type)return C;var t=x.find((function(t){return t.type===e.type}));if(t)return t;throw new Error(\"❌ Method \".concat(e.type,\" is not supported.\"))}var n=x.find((function(e){return e.canBeUsed()}));if(!n)throw new Error(\"❌ No method found \".concat(JSON.stringify(x.map((function(e){return e.type})))));return n}var R=function(){function n(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e(this,n),this.name=t,this.options=r,this.method=B(this.options),this.closed=!1,this._isListening=!1,this._onMessageListener=null,this._addEventListeners={message:[],internal:[]},this._unSendMessagePromises=new Set,this._beforeClose=[],this._preparePromises=null,j(this)}return t(n,[{key:\"postMessage\",value:function(e){if(this.closed)throw new Error(\"❌ Cannot post message after channel has closed\");return N(this,\"message\",e)}},{key:\"postInternal\",value:function(e){return N(this,\"internal\",e)}},{key:\"onmessage\",get:function(){return this._onMessageListener},set:function(e){var t={time:this.method.microSeconds(),fn:e};U(this,\"message\",this._onMessageListener),e&&\"function\"==typeof e?(this._onMessageListener=t,Y(this,\"message\",t)):this._onMessageListener=null}},{key:\"addEventListener\",value:function(e,t){Y(this,e,{time:this.method.microSeconds(),fn:t})}},{key:\"removeEventListener\",value:function(e,t){U(this,e,this._addEventListeners[e].find((function(e){return e.fn===t})))}},{key:\"close\",value:function(){var e=this;if(!this.closed){this.closed=!0;var t=this._preparePromises?this._preparePromises:Promise.resolve();return this._onMessageListener=null,this._addEventListeners.message=[],t.then((function(){return Promise.all(Array.from(e._unSendMessagePromises))})).then((function(){return Promise.all(e._beforeClose.map((function(e){return e()})))})).then((function(){return e.method.close(e._state)}))}}},{key:\"type\",get:function(){return this.method.type}},{key:\"isClosed\",value:function(){return this.closed}}]),n}();function N(e,t,n){var r={time:e.method.microSeconds(),type:t,data:n};return(e._preparePromises?e._preparePromises:Promise.resolve()).then((function(){var t=e.method.postMessage(e._state,r);return e._unSendMessagePromises.add(t),t.catch().then((function(){return e._unSendMessagePromises.delete(t)})),t}))}function j(e){var t,n=e.method.create(e.name,e.options);(t=n)&&\"function\"==typeof t.then?(e._preparePromises=n,n.then((function(t){e._state=t}))):e._state=n}function X(e){return e._addEventListeners.message.length>0||e._addEventListeners.internal.length>0}function Y(e,t,n){e._addEventListeners[t].push(n),function(e){if(!e._isListening&&X(e)){var t=function(t){e._addEventListeners[t.type].forEach((function(e){t.time>=e.time&&e.fn(t.data)}))},n=e.method.microSeconds();e._preparePromises?e._preparePromises.then((function(){e._isListening=!0,e.method.onMessage(e._state,t,n)})):(e._isListening=!0,e.method.onMessage(e._state,t,n))}}(e)}function U(e,t,n){e._addEventListeners[t]=e._addEventListeners[t].filter((function(e){return e!==n})),function(e){if(e._isListening&&!X(e)){e._isListening=!1;var t=e.method.microSeconds();e.method.onMessage(e._state,null,t)}}(e)}var F=function(){function n(t,r){var i=this;e(this,n),this._channel=t,this._options=r,this.isLeader=!1,this.isDead=!1,this.token=k(),this._isApplying=!1,this._reApply=!1,this._unloadFns=[],this._listeners=[],this._intervals=[],this._duplicateListeners=function(){},this._duplicateCalled=!1,this._onBeforeDie=d(m.mark((function e(){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case\"end\":return e.stop()}}),e)})));var s=function(){var e=d(m.mark((function e(){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",i.die());case 1:case\"end\":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();f&&(window.addEventListener(\"beforeUnload\",s),window.addEventListener(\"unload\",s),this._unloadFns.push([\"beforeUnload\",s]),this._unloadFns.push([\"unload\",s]))}var r;return t(n,[{key:\"applyOnce\",value:function(){var e=this;if(this.isLeader)return Promise.resolve(!1);if(this.isDead)return Promise.resolve(!1);if(this._isApplying)return this._reApply=!0,Promise.resolve(!1);this._isApplying=!0;var t=!1,n=function(n){\"leader\"===n.context&&n.token!==e.token&&(\"apply\"===n.action&&n.token>e.token&&(t=!0),\"tell\"===n.action&&(t=!0))};return this._channel.addEventListener(\"internal\",n),V(this,\"apply\").then((function(){return A(e._options.responseTime)})).then((function(){return t?Promise.reject(new Error):V(e,\"apply\")})).then((function(){return A(e._options.responseTime)})).then((function(){return t?Promise.reject(new Error):V(e)})).then((function(){return function(e){e.isLeader=!0;var t=function(t){\"leader\"===t.context&&\"apply\"===t.action&&V(e,\"tell\"),\"leader\"!==t.context||\"tell\"!==t.action||e._duplicateCalled||(e._duplicateCalled=!0,e._duplicateListeners(),V(e,\"tell\"))};return e._channel.addEventListener(\"internal\",t),e._listeners.push(t),V(e,\"tell\")}(e)})).then((function(){return!0})).catch((function(){return!1})).then((function(t){return e._channel.removeEventListener(\"internal\",n),e._isApplying=!1,!t&&e._reApply?(e._reApply=!1,e.applyOnce()):t}))}},{key:\"awaitLeadership\",value:function(){var e;return this._awaitLeadershipPromise||(this._awaitLeadershipPromise=(e=this).isLeader?Promise.resolve():new Promise((function(t){var n=!1;function r(){n||(n=!0,clearInterval(i),e._channel.removeEventListener(\"internal\",s),t(!0))}e.applyOnce().then((function(){e.isLeader&&r()}));var i=setInterval((function(){e.applyOnce().then((function(){e.isLeader&&r()}))}),e._options.fallbackInterval);e._intervals.push(i);var s=function(t){\"leader\"===t.context&&\"death\"===t.action&&e.applyOnce().then((function(){e.isLeader&&r()}))};e._channel.addEventListener(\"internal\",s),e._listeners.push(s)}))),this._awaitLeadershipPromise}},{key:\"onDuplicate\",get:function(){return this._duplicateListeners},set:function(e){this._duplicateListeners=e}},{key:\"onBeforeDie\",get:function(){return this._onBeforeDie},set:function(e){this._onBeforeDie=e}},{key:\"die\",value:(r=d(m.mark((function e(){var t=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isDead){e.next=2;break}return e.abrupt(\"return\");case 2:return this.isDead=!0,e.next=5,this.onBeforeDie();case 5:return this._listeners.forEach((function(e){return t._channel.removeEventListener(\"internal\",e)})),this._intervals.forEach((function(e){return clearInterval(e)})),this._unloadFns.forEach((function(e){f&&window.removeEventListener(e[0],e[1])})),e.abrupt(\"return\",V(this,\"death\"));case 9:case\"end\":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})}]),n}();function V(e,t){var n={context:\"leader\",action:t,token:e.token};return e._channel.postInternal(n)}var J=function(e){var t=e.type,n=e.channelName,r=e.fallbackInterval,i=e.responseTime,s=e.emitOnAllTabs,a=e.callbacks,o=e.start,u=e.reset,c=e.pause,l=e.resume,p=new R(n,{type:t}),f=function(e,t){if(e._leaderElector)throw new Error(\"❌ MessageChannel already has a leader-elector\");var n=new F(e,t);return e._beforeClose.push(d(m.mark((function e(){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",n.die());case 1:case\"end\":return e.stop()}}),e)})))),e._leaderElector=n,n}(p,{fallbackInterval:r,responseTime:i}),v={};v[f.token]=!1;var g=!1,b=!0,T=function(){return g};f.awaitLeadership().then((function(){g=!0})),p.addEventListener(\"message\",(function(e){var t=h(e,2),n=t[0],r=t[1];switch(n){case\"register\":v[r]=!1;break;case\"deregister\":delete v[r];break;case\"idle\":_(r);break;case\"active\":y(r);break;case\"emitIdle\":a.onIdle();break;case\"emitActive\":a.onActive();break;case\"start\":o(!0);break;case\"reset\":u(!0);break;case\"pause\":c(!0);break;case\"resume\":l(!0)}}));var _=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.token;v[e]=!0;var t=Object.values(v).every((function(e){return e}));!b&&t&&(b=!0,T()?(a.onIdle(),s&&w(\"emitIdle\")):w(\"idle\"))},y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.token;v[e]=!1;var t=Object.values(v).some((function(e){return!e}));b&&t&&(b=!1,T()?(a.onActive(),s&&w(\"emitActive\")):w(\"active\"))};f.onDuplicate=d(m.mark((function e(){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,f.die();case 2:return e.abrupt(\"return\",e.sent);case 3:case\"end\":return e.stop()}}),e)}))),f.onBeforeDie=d(m.mark((function e(){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,w(\"deregister\");case 2:return e.abrupt(\"return\",e.sent);case 3:case\"end\":return e.stop()}}),e)})));var w=function(){var e=d(m.mark((function e(t){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",p.postMessage([t,f.token]));case 1:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),k=function(){var e=d(m.mark((function e(){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,f.die();case 2:return e.next=4,p.close();case 4:case\"end\":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return w(\"register\"),{close:k,send:w,isLeader:T,idle:_,active:y,isAllIdle:function(){return b},setAllIdle:function(e){b=e}}};function z(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=s(e);if(t){var a=s(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return i(this,n)}}var G=function(i){r(o,a);var s=z(o);function o(t){var r;if(e(this,o),(r=s.call(this,t)).state={idle:!1,oldDate:+new Date,lastActive:+new Date,lastIdle:null,idleTime:0,remaining:null,pageX:null,pageY:null},r.tId=null,r.eventsBound=!1,r.callbackRefs={},t.debounce>0&&t.throttle>0)throw new Error(\"onAction can either be throttled or debounced (not both)\");return t.debounce>0?r._onAction=b(t.onAction,t.debounce):t.throttle>0?r._onAction=T(t.onAction,t.throttle):r._onAction=t.onAction,t.eventsThrottle>0?r.handleEvent=T(r._handleEvent.bind(n(r)),t.eventsThrottle):r.handleEvent=r._handleEvent.bind(n(r)),t.startOnMount&&!t.startManually||(r.state.idle=!0),r._toggleIdleState=r._toggleIdleState.bind(n(r)),r.start=r.start.bind(n(r)),r.reset=r.reset.bind(n(r)),r.pause=r.pause.bind(n(r)),r.resume=r.resume.bind(n(r)),r.isIdle=r.isIdle.bind(n(r)),r.getRemainingTime=r.getRemainingTime.bind(n(r)),r.getElapsedTime=r.getElapsedTime.bind(n(r)),r.getLastActiveTime=r.getLastActiveTime.bind(n(r)),r.getLastIdleTime=r.getLastIdleTime.bind(n(r)),r.getTotalIdleTime=r.getTotalIdleTime.bind(n(r)),r.getTotalActiveTime=r.getTotalActiveTime.bind(n(r)),r}return t(o,[{key:\"componentDidMount\",value:function(){var e=this.props,t=e.startOnMount,n=e.startManually;this._setupTabManager(),n||(t?this.start():this._bindEvents())}},{key:\"componentDidUpdate\",value:function(e){e.debounce!==this.props.debounce&&this.props.debounce>0?(this._onAction.cancel&&this._onAction.cancel(),this._onAction=b(this.props.onAction,this.props.debounce)):e.throttle!==this.props.throttle&&this.props.throttle>0?(this._onAction.cancel&&this._onAction.cancel(),this._onAction=T(this.props.onAction,this.props.throttle)):(e.throttle&&0===this.props.throttle||e.debounce&&0===this.props.debounce)&&(this._onAction.cancel&&this._onAction.cancel(),this._onAction=this.props.onAction),e.eventsThrottle!==this.props.eventsThrottle&&(this._unbindEvents(),this.handleEvent=T(this._handleEvent.bind(this),this.props.eventsThrottle),this._bindEvents()),e.timeout!==this.props.timeout&&this.state.idle&&this.reset(),e.onActive!==this.props.onActive&&(this.callbackRefs.onActive=this.props.onActive),e.onIdle!==this.props.onIdle&&(this.callbackRefs.onIdle=this.props.onIdle)}},{key:\"componentWillUnmount\",value:function(){clearTimeout(this.tId),this._unbindEvents(!0),this._onAction.cancel&&this._onAction.cancel(),this.manager&&this.manager.close().catch(console.error)}},{key:\"render\",value:function(){return this.props.children||null}},{key:\"_setupTabManager\",value:function(){var e=this.props,t=e.crossTab,n=e.onIdle,r=e.onActive;if(this.callbackRefs={onIdle:n,onActive:r},t){var i=Object.assign({channelName:\"idle-timer\",fallbackInterval:2e3,responseTime:100,removeTimeout:6e4,emitOnAllTabs:!1},!0===t?{}:t),s=i.type,a=i.channelName,o=i.fallbackInterval,u=i.responseTime,c=i.emitOnAllTabs;this.manager=J({type:s,channelName:a,fallbackInterval:o,responseTime:u,emitOnAllTabs:c,callbacks:this.callbackRefs,start:this.start,reset:this.reset,pause:this.pause,resume:this.resume})}}},{key:\"_bindEvents\",value:function(){var e=this;if(f){var t=this.props,n=t.element,r=t.events,i=t.passive,s=t.capture;this.eventsBound||(r.forEach((function(t){n.addEventListener(t,e.handleEvent,{capture:s,passive:i})})),this.eventsBound=!0)}}},{key:\"_unbindEvents\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(f){var n=this.props,r=n.element,i=n.events,s=n.passive,a=n.capture;(this.eventsBound||t)&&(i.forEach((function(t){r.removeEventListener(t,e.handleEvent,{capture:a,passive:s})})),this.eventsBound=!1)}}},{key:\"_toggleIdleState\",value:function(e){var t=this;this.setState((function(e){return{idle:!e.idle,lastIdle:e.idle?e.lastIdle:+new Date-t.props.timeout,idleTime:e.idle?e.idleTime+ +new Date-e.lastIdle:e.idleTime}}),(function(){var n=t.props,r=n.onActive,i=n.onIdle,s=n.stopOnIdle;t.state.idle?(s&&(clearTimeout(t.tId),t.tId=null,t._unbindEvents()),t.manager?t.manager.idle():i(e)):(t._bindEvents(),t.manager?t.manager.active():r(e))}))}},{key:\"_handleEvent\",value:function(e){var t=this.state,n=t.remaining,r=t.pageX,i=t.pageY,s=t.idle,a=this.props,o=a.timeout,u=a.stopOnIdle;if(this._onAction(e),!n){if(\"mousemove\"===e.type){if(e.pageX===r&&e.pageY===i)return;if(void 0===e.pageX&&void 0===e.pageY)return;if(this.getElapsedTime()<200)return}clearTimeout(this.tId),this.tId=null;var c=+new Date-this.getLastActiveTime();(s&&!u||!s&&c>o)&&this._toggleIdleState(e),this.setState({lastActive:+new Date,pageX:e.pageX,pageY:e.pageY}),s&&u||(this.tId=setTimeout(this._toggleIdleState,o))}}},{key:\"start\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];clearTimeout(this.tId),this.tId=null,this._bindEvents(),this.setState({idle:!1,oldDate:+new Date,lastActive:+new Date,remaining:null}),this.manager&&(this.manager.setAllIdle(!1),!e&&this.props.crossTab.emitOnAllTabs&&this.manager.send(\"start\"));var t=this.props.timeout;this.tId=setTimeout(this._toggleIdleState,t)}},{key:\"reset\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];clearTimeout(this.tId),this.tId=null,this._bindEvents(),this.state.idle&&(this.manager?this.manager.active():this.props.onActive()),this.manager&&(this.manager.setAllIdle(!1),!e&&this.props.crossTab.emitOnAllTabs&&this.manager.send(\"reset\")),this.setState({idle:!1,oldDate:+new Date,lastActive:+new Date,remaining:null});var t=this.props.timeout;this.tId=setTimeout(this._toggleIdleState,t)}},{key:\"pause\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.state.remaining;null===t&&(this._unbindEvents(),clearTimeout(this.tId),this.tId=null,this.manager&&!e&&this.props.crossTab.emitOnAllTabs&&this.manager.send(\"pause\"),this.setState({remaining:this.getRemainingTime()}))}},{key:\"resume\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.state,n=t.remaining,r=t.idle;null!==n&&(this._bindEvents(),this.manager&&!e&&this.props.crossTab.emitOnAllTabs&&this.manager.send(\"resume\"),r||(this.tId=setTimeout(this._toggleIdleState,n),this.setState({remaining:null,lastActive:+new Date})))}},{key:\"getRemainingTime\",value:function(){var e=this.state,t=e.remaining,n=e.lastActive,r=this.props.timeout;if(null!==t)return t<0?0:t;var i=r-(+new Date-n);return i<0?0:i}},{key:\"getElapsedTime\",value:function(){var e=this.state.oldDate;return+new Date-e}},{key:\"getLastIdleTime\",value:function(){return this.state.lastIdle}},{key:\"getTotalIdleTime\",value:function(){var e=this.state,t=e.idle,n=e.lastIdle,r=e.idleTime;return t?+new Date-n+r:r}},{key:\"getLastActiveTime\",value:function(){return this.state.lastActive}},{key:\"getTotalActiveTime\",value:function(){return this.getElapsedTime()-this.getTotalIdleTime()}},{key:\"isIdle\",value:function(){return this.state.idle}},{key:\"isLeader\",value:function(){return!this.manager||this.manager.isLeader()}}]),o}();function W(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.timeout,n=void 0===t?12e5:t,r=e.element,i=void 0===r?v:r,s=e.events,a=void 0===s?g:s,l=e.onIdle,h=void 0===l?function(){}:l,p=e.onActive,_=void 0===p?function(){}:p,y=e.onAction,w=void 0===y?function(){}:y,k=e.debounce,A=void 0===k?0:k,I=e.throttle,E=void 0===I?0:I,L=e.eventsThrottle,O=void 0===L?200:L,M=e.startOnMount,D=void 0===M||M,S=e.startManually,P=void 0!==S&&S,C=e.stopOnIdle,x=void 0!==C&&C,B=e.capture,R=void 0===B||B,N=e.passive,j=void 0===N||N,X=e.crossTab,Y=void 0!==X&&X,U=o(!1),F=o(!0),V=o(+new Date),z=o(null),G=o(null),W=o(null),q=o(null),H=o(null),K=o(null),Q=o(0),Z=o(!0),$=o(n),ee=o(null);Y&&(!0===Y&&(Y={}),Y=Object.assign({channelName:\"idle-timer\",fallbackInterval:2e3,responseTime:100,removeTimeout:6e4,emitOnAllTabs:!1},Y));var te=o(h),ne=o(_),re=o(w);u((function(){te.current=h}),[h]),u((function(){ne.current=_}),[_]),u((function(){re.current=w}),[w]);var ie=c((function(){function e(e){re.current(e)}return e.cancel&&e.cancel(),A>0?b(e,A):E>0?T(e,E):e}),[E,A]),se=function(e){var t=!F.current;F.current=t,t?(x&&(clearTimeout(q.current),q.current=null,ce()),K.current=+new Date-$.current,ee.current?ee.current.idle():te.current(e)):(Q.current+=+new Date-K.current,ue(),ee.current?ee.current.active():ne.current(e))},ae=function(e){if(ie(e),!z.current){if(\"mousemove\"===e.type){if(e.pageX===G&&e.pageY===W)return;if(void 0===e.pageX&&void 0===e.pageY)return;if(de()<200)return}clearTimeout(q.current),q.current=null;var t=+new Date-pe();(F.current&&!x||!F.current&&t>$.current)&&se(e),H.current=+new Date,G.current=e.pageX,W.current=e.pageY,F.current||(q.current=setTimeout(se,$.current))}},oe=o(ae),ue=function(){f&&(U.current||(a.forEach((function(e){i.addEventListener(e,oe.current,{capture:R,passive:j})})),U.current=!0))},ce=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];f&&(U.current||e)&&(a.forEach((function(e){i.removeEventListener(e,oe.current,{capture:R,passive:j})})),U.current=!1)},le=function(){if(null!==z.current)return z.current<0?0:z.current;var e=$.current-(+new Date-H.current);return e<0?0:e},de=function(){return+new Date-V.current},he=function(){return K.current},me=function(){return F.current?+new Date-K.current+Q.current:Q.current},pe=function(){return H.current},fe=function(){return de()-me()},ve=function(){return F.current},ge=function(){return!ee.current||ee.current.isLeader()},be=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];clearTimeout(q.current),q.current=null,ue(),F.current=!1,V.current=+new Date,H.current=+new Date,z.current=null,ee.current&&(ee.current.setAllIdle(!1),!e&&Y.emitOnAllTabs&&ee.current.send(\"start\")),q.current=setTimeout(se,$.current)},Te=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];clearTimeout(q.current),q.current=null,ue(),F.current&&(ee.current?ee.current.active():ne.current()),F.current=!1,V.current=+new Date,H.current=+new Date,z.current=null,ee.current&&(ee.current.setAllIdle(!1),!e&&Y.emitOnAllTabs&&ee.current.send(\"reset\")),q.current=setTimeout(se,$.current)},_e=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];null===z.current&&(ce(),clearTimeout(q.current),q.current=null,z.current=le(),ee.current&&!e&&Y.emitOnAllTabs&&ee.current.send(\"pause\"))},ye=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];null!==z.current&&(ue(),F.current||(q.current=setTimeout(se,z.current),z.current=null,H.current=+new Date),ee.current&&!e&&Y.emitOnAllTabs&&ee.current.send(\"resume\"))};return u((function(){if(A>0&&E>0)throw new Error(\"onAction can either be throttled or debounced (not both)\");return Y&&(ee.current=J({type:Y.type,channelName:Y.channelName,fallbackInterval:Y.fallbackInterval,responseTime:Y.responseTime,emitOnAllTabs:Y.emitOnAllTabs,callbacks:{onIdle:te.current,onActive:ne.current},start:be,reset:Te,pause:_e,resume:ye})),P?d(m.mark((function e(){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(clearTimeout(q.current),ce(!0),!Y){e.next=5;break}return e.next=5,ee.current.close();case 5:case\"end\":return e.stop()}}),e)}))):(D?be():ue(),d(m.mark((function e(){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(clearTimeout(q.current),ce(!0),ie.cancel&&ie.cancel(),!Y){e.next=6;break}return e.next=6,ee.current.close();case 6:case\"end\":return e.stop()}}),e)}))))}),[]),u((function(){var e=U.current;e&&ce(),oe.current=O>0?T(ae,O):ae,e&&ue()}),[O]),u((function(){$.current=n,!Z.current&&F.current&&Te(),Z.current=!1}),[n]),{isIdle:ve,isLeader:ge,start:be,pause:_e,reset:Te,resume:ye,getLastIdleTime:he,getTotalIdleTime:me,getLastActiveTime:pe,getTotalActiveTime:fe,getElapsedTime:de,getRemainingTime:le}}G.propTypes={timeout:l.number,events:l.arrayOf(l.string),onIdle:l.func,onActive:l.func,onAction:l.func,debounce:l.number,throttle:l.number,eventsThrottle:l.number,element:l.oneOfType([l.object,l.element]),startOnMount:l.bool,startManually:l.bool,stopOnIdle:l.bool,passive:l.bool,capture:l.bool,crossTab:l.oneOfType([l.bool,l.shape({type:l.oneOf([\"broadcastChannel\",\"localStorage\",\"simulate\"]),channelName:l.string,fallbackInterval:l.number,responseTime:l.number,removeTimeout:l.number,emitOnAllTabs:l.bool})])},G.defaultProps={timeout:12e5,element:v,events:g,onIdle:function(){},onActive:function(){},onAction:function(){},debounce:0,throttle:0,eventsThrottle:200,startOnMount:!0,startManually:!1,stopOnIdle:!1,capture:!0,passive:!0,crossTab:!1},W.propTypes={timeout:l.number,events:l.arrayOf(l.string),onIdle:l.func,onActive:l.func,onAction:l.func,debounce:l.number,throttle:l.number,eventsThrottle:l.number,element:l.oneOfType([l.object,l.element]),startOnMount:l.bool,startManually:l.bool,stopOnIdle:l.bool,passive:l.bool,capture:l.bool,crossTab:l.oneOfType([l.bool,l.shape({type:l.oneOf([\"broadcastChannel\",\"localStorage\",\"simulate\"]),channelName:l.string,fallbackInterval:l.number,responseTime:l.number,removeTimeout:l.number,emitOnAllTabs:l.bool})])},W.defaultProps={timeout:12e5,element:v,events:g,onIdle:function(){},onActive:function(){},onAction:function(){},debounce:0,throttle:0,eventsThrottle:200,startOnMount:!0,startManually:!1,stopOnIdle:!1,capture:!0,passive:!0,crossTab:!1};export default G;export{W as useIdleTimer};\n//# sourceMappingURL=index.es.js.map\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport classNames from 'classnames';\nimport Hls from 'hls.js';\nimport _ from 'lodash';\nimport handleShouldComponentUpdate from 'helpers/Lifecycle';\nimport Style from 'app/themes/VideoHero.module.scss';\n\nconst TRANSITION_TIME_IN = 500;\nconst TRANSITION_TIME_OUT = 500;\nconst POSTER_IMAGE_ALT = 'Video Poster';\nconst { backgroundVideoLoops } = window.ExternalConfig;\n\n/**\n * VideoHero Component\n * @param {Object} theme - Theme override sent through CSS Themr\n * @param {String} externalId - key for the VideoPlayerItem\n * @returns {Component} - React Component\n */\nclass VideoHero extends Component {\n constructor() {\n super();\n this.state = {\n videoElement: null,\n hlsObjects: [this.createNewHls()],\n initialized: false,\n loaded: false,\n transition: false,\n videoImage: null,\n videoTagError: false,\n videoPlayCount: 1,\n };\n this.videoTag = React.createRef();\n this.videoTagListener = this.videoTagListener.bind(this);\n }\n\n componentDidMount() {\n const { video, load, onMount, play, transitionImage } = this.props;\n if (onMount) onMount();\n if (load) {\n if (video) {\n this.loadVideo({ play, video });\n } else if (transitionImage) {\n const videoElement = this.getVideoElement();\n this.setState({ videoElement, transition: true }, this.transitionImageStart);\n }\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { play, video, image, transitionImage, setTimeout } = this.props;\n const {\n play: nextPlay,\n video: nextVideo,\n image: nextImage,\n transitionImage: nextTransitionImage,\n } = nextProps;\n const { videoElement, loaded, initialized } = this.state;\n\n // Load video right away if it's the first one\n if (!initialized && nextVideo) {\n this.loadVideo({ play: nextPlay, video: nextVideo });\n this.setState({ initialized: true });\n return;\n }\n\n // Start hero transition if the source is changing\n if (video !== nextVideo || image !== nextImage || transitionImage !== nextTransitionImage) {\n this.setState({ transition: true });\n if (nextVideo) {\n // If transitioning to a video, load video before completing transition\n setTimeout(this.transitionStart.bind(this), TRANSITION_TIME_IN);\n } else {\n // Otherwise, unload the video and start the end transition\n setTimeout(this.transitionImageStart.bind(this), TRANSITION_TIME_IN);\n }\n } else if (play !== nextPlay && loaded) {\n if (!nextPlay) {\n videoElement.pause();\n this.handleCallback('paused');\n } else {\n this.playVideoSafely(videoElement);\n this.handleCallback('playing');\n }\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const options = {\n props: this.props,\n state: this.state,\n nextProps,\n nextState,\n };\n return handleShouldComponentUpdate(options);\n }\n\n componentWillUnmount() {\n const { onUnmount } = this.props;\n if (onUnmount) onUnmount();\n }\n\n getHlsObject() {\n const { hlsObjects } = this.state;\n return _.last(hlsObjects);\n }\n\n getVideoElement() {\n let { videoElement } = this.state;\n videoElement = this.videoTag.current;\n videoElement.addEventListener('error', this.videoTagListener, false);\n videoElement.addEventListener('loadeddata', this.videoTagListener, false);\n if (backgroundVideoLoops !== 0)\n videoElement.addEventListener('seeked', this.videoTagListener, false);\n return videoElement;\n }\n\n loadVideo({ video }) {\n if (!video) return;\n\n const hlsObject = this.getHlsObject();\n const { videoElement: oldVideoElement } = this.state;\n const videoElement = this.getVideoElement();\n\n videoElement.setAttribute('src', video);\n hlsObject.loadSource(video);\n hlsObject.attachMedia(videoElement);\n\n if (!oldVideoElement) this.setState({ videoElement });\n }\n\n listenerAttachedVideo() {\n const { setTimeout } = this.props;\n setTimeout(this.transitionEnd.bind(this), TRANSITION_TIME_OUT);\n }\n\n handleParsedVideo() {\n const { play, timer: currentTimer, setTimeout } = this.props;\n let timer = parseInt(currentTimer, 10);\n timer = Number.isNaN(timer) ? 0 : timer * 1000;\n\n if (play) {\n setTimeout(() => {\n const { play: playNow } = this.props;\n if (playNow) {\n this.playVideoSafely();\n this.handleCallback('playing');\n }\n }, timer);\n } else {\n this.handleCallback('loaded');\n }\n this.setState({ loaded: true });\n }\n\n playVideoSafely(videoElement) {\n const { videoElement: currentVideoElement } = this.state;\n const video = videoElement || currentVideoElement;\n const playPromise = video.play();\n if (playPromise) {\n playPromise.catch(() => {\n /* prevents the video from throwing an error. */\n });\n }\n }\n\n transitionImageStart() {\n const { video, transitionImage } = this.props;\n const { hlsObjects, setTimeout } = this.state;\n const hlsObject = this.getHlsObject();\n hlsObject.destroy();\n const videoElement = this.getVideoElement();\n const newVideoImage = hlsObject && video ? null : transitionImage;\n const newHlsObject = this.createNewHls();\n videoElement.src = '';\n this.loadPoster({ poster: newVideoImage });\n videoElement.load();\n\n const newHlsObjects = _.concat(hlsObjects, newHlsObject);\n this.setState({ videoImage: newVideoImage, videoElement, hlsObjects: newHlsObjects });\n setTimeout(this.transitionEnd.bind(this), TRANSITION_TIME_OUT);\n }\n\n transitionEnd() {\n this.setState({ transition: false });\n }\n\n transitionStart() {\n const { video } = this.props;\n const { videoElement, hlsObjects } = this.state;\n const hlsObject = this.getHlsObject();\n hlsObject.destroy();\n const newHlsObject = this.createNewHls();\n if (!newHlsObject) return;\n videoElement.setAttribute('src', video);\n videoElement.setAttribute('style', null);\n newHlsObject.loadSource(video);\n newHlsObject.attachMedia(videoElement);\n\n const newHlsObjects = _.concat(hlsObjects, newHlsObject);\n this.setState({ videoImage: null, videoElement, hlsObjects: newHlsObjects });\n }\n\n createNewHls() {\n const config = {\n maxBufferHole: 0,\n maxLoadingDelay: 1000,\n };\n const newHlsObject = new Hls(config);\n const listenerParsedVideo = e => this.handleParsedVideo(e);\n const listenerAttachedVideo = e => this.listenerAttachedVideo(e);\n newHlsObject.on(Hls.Events.MANIFEST_PARSED, listenerParsedVideo);\n newHlsObject.on(Hls.Events.MEDIA_ATTACHED, listenerAttachedVideo);\n return newHlsObject;\n }\n\n videoTagListener = event => {\n if (!event) return;\n\n let { videoPlayCount } = this.state;\n const { videoElement } = this.state;\n switch (event.type) {\n case 'loadeddata':\n this.setState({ videoTagError: false, videoPlayCount: 1 }, () => {\n this.handleParsedVideo(event);\n this.listenerAttachedVideo(event);\n });\n break;\n case 'error':\n this.setState({ videoTagError: true, videoPlayCount: 1 });\n break;\n case 'seeked':\n if (videoPlayCount > backgroundVideoLoops) {\n this.setState({ videoPlayCount: 1 });\n videoElement.pause();\n this.handleCallback('paused');\n }\n videoPlayCount += 1;\n this.setState({ videoPlayCount });\n break;\n default:\n // do nothing\n }\n };\n\n loadPoster({ poster }) {\n if (!poster) return;\n const { videoElement: oldVideoElement } = this.state;\n const videoElement = this.getVideoElement();\n if (!oldVideoElement) this.setState({ videoElement });\n }\n\n handleCallback(...args) {\n const { callback } = this.props;\n const cb = callback || null;\n if (cb && typeof cb === 'function') {\n cb.apply(cb, args);\n }\n }\n\n renderTransitionImage() {\n const { transitionImage } = this.props;\n if (!transitionImage) return null;\n\n return <img src={transitionImage} className={Style.transitionPoster} alt={POSTER_IMAGE_ALT} />;\n }\n\n renderPoster() {\n const {\n video,\n image,\n transitionImage,\n renderImage,\n addShadowOverlay,\n anonymousView,\n } = this.props;\n const { videoImage } = this.state;\n if (!image) return null;\n\n const isVideoPoster = video || transitionImage;\n const posterSrc = videoImage || image;\n const posterClass = classNames(\n Style.poster,\n addShadowOverlay ? Style.posterPadding : null,\n anonymousView ? Style.anonymousView : null,\n );\n\n if (!isVideoPoster) {\n return (\n <div className={posterClass}>\n {renderImage({ src: posterSrc, alt: POSTER_IMAGE_ALT, lazy: false })}\n </div>\n );\n }\n\n return renderImage({\n className: Style.videoPoster,\n src: posterSrc,\n alt: POSTER_IMAGE_ALT,\n lazy: false,\n });\n }\n\n render() {\n const { id, video, play, loop, fadeImageToVideo, className, addShadowOverlay } = this.props;\n const { loaded, transition, videoTagError } = this.state;\n\n const containerClassName = classNames(\n className,\n Style.container,\n addShadowOverlay ? Style.shadowOverlay : null,\n );\n const wrapperPosterVideo = video ? Style.wrapperVideo : Style.wrapperPoster;\n const wrapperBlack = play || addShadowOverlay ? null : Style.wrapperBlack;\n\n const wrapperClassName = classNames(\n Style.wrapper,\n wrapperBlack,\n loaded ? Style.videoLoaded : null,\n addShadowOverlay ? null : wrapperPosterVideo,\n fadeImageToVideo ? Style.fadeImageToVideo : null,\n transition || videoTagError ? Style.transition : null,\n );\n\n const videoProps = {\n id,\n muted: 'muted',\n playsInline: 'playsInline',\n };\n if (video && loop) videoProps.loop = 'loop';\n if (video && play) videoProps.autoPlay = 'autoPlay';\n\n return (\n <div className={containerClassName}>\n <div className={wrapperClassName}>\n {this.renderPoster()}\n <video ref={this.videoTag} className={Style.player} {...videoProps} />\n {this.renderTransitionImage()}\n </div>\n </div>\n );\n }\n}\n\nVideoHero.defaultProps = {\n anonymousView: false,\n callback: () => {},\n className: null,\n fadeImageToVideo: true,\n id: 'video-hero',\n image: null,\n load: null,\n loop: true,\n onMount: () => {},\n onUnmount: () => {},\n play: null,\n renderImage: () => {},\n timer: null,\n transitionImage: null,\n video: null,\n addShadowOverlay: false,\n};\n\nVideoHero.propTypes = {\n anonymousView: PropTypes.bool,\n callback: PropTypes.func,\n className: PropTypes.string,\n fadeImageToVideo: PropTypes.bool,\n id: PropTypes.string,\n image: PropTypes.string,\n load: PropTypes.bool,\n loop: PropTypes.bool,\n onMount: PropTypes.func,\n onUnmount: PropTypes.func,\n play: PropTypes.bool,\n renderImage: PropTypes.func,\n setTimeout: PropTypes.func.isRequired,\n timer: PropTypes.number,\n transitionImage: PropTypes.string,\n video: PropTypes.string,\n addShadowOverlay: PropTypes.bool,\n};\n\nexport default ReactTimeout(VideoHero);\n","import axios from 'axios';\n\nexport const FETCH_NEXT_PANEL_PAGE = 'FETCH_NEXT_PANEL_PAGE';\nexport const FETCH_PANEL = 'FETCH_PANEL';\nexport const SET_FIRST_PAGE = 'SET_FIRST_PAGE';\nexport const TOGGLE_PANEL_FETCHING = 'TOGGLE_PANEL_FETCHING';\n\nexport function fetchNextPanelPage(url, headers, panelId) {\n const request = axios.get(url, headers);\n return {\n type: FETCH_NEXT_PANEL_PAGE,\n payload: request,\n meta: { panelId },\n };\n}\n\nexport function fetchPanel(url, headers, panelId) {\n const request = axios.get(url, headers);\n\n return {\n type: FETCH_PANEL,\n payload: request,\n meta: { panelId },\n };\n}\n\nexport function setFirstPage(panelData, panelId) {\n return {\n type: SET_FIRST_PAGE,\n payload: panelData,\n meta: { panelId },\n };\n}\n\nexport function toggleFetching(value) {\n return {\n type: TOGGLE_PANEL_FETCHING,\n payload: { value },\n };\n}\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport ReactTimeout from 'react-timeout';\nimport { noop } from 'helpers/GlobalHelper';\nimport handleShouldComponentUpdate from 'helpers/Lifecycle';\nimport { isSameSecond, MILLISECONDS } from 'helpers/DateTimeHelper';\nimport { fetchNextPanelPage, fetchPanel, setFirstPage, toggleFetching } from './PanelActions';\n\nclass Panel extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n timer: null,\n };\n\n this.validForTimedOut = this.validForTimedOut.bind(this);\n }\n\n componentDidMount() {\n this.initialFetch(this.props);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n accessToken,\n panel: nextPanel,\n panelData: nextPanelData,\n panelUrl: nextPanelUrl,\n shouldFetchMore: nextShouldFetchMore,\n } = nextProps;\n const {\n accessToken: prevAccessToken,\n deviceId,\n calculateValidFor,\n fetchNextPanelPage: actionFetchNextPanelPage,\n hasInfiniteScroll,\n hasMoreItems,\n headerGenerator,\n pageType,\n panel,\n panelData,\n panelId,\n panelUrl,\n routeGenerator,\n setTimeout: actionSetTimeout,\n shouldFetchMore,\n toggleFetching: actionToggleFetching,\n } = this.props;\n const { timer } = this.state;\n\n const newPanelUrl = nextPanelUrl !== panelUrl;\n const newPanelData = JSON.stringify(nextPanelData) !== JSON.stringify(panelData);\n const nextPanelPaginationUrl = _.get(nextPanel, 'paginationUrl');\n const panelPaginationUrl = _.get(panel, 'paginationUrl');\n const paginationUrlChanged = nextPanelPaginationUrl !== panelPaginationUrl;\n const shouldFetchMoreChanged = nextShouldFetchMore !== shouldFetchMore;\n\n if (shouldFetchMoreChanged) {\n const url = _.get(panel, 'panelData.items.view.next');\n const headers = headerGenerator({ pathKey: pageType, accessToken, deviceId });\n actionToggleFetching(true);\n actionFetchNextPanelPage(url, headers, panelId);\n }\n\n if (nextPanelPaginationUrl && paginationUrlChanged && !hasInfiniteScroll && hasMoreItems) {\n const headers = headerGenerator({ pathKey: pageType, accessToken, deviceId });\n const url = routeGenerator(nextPanel.paginationUrl);\n actionToggleFetching(true);\n actionFetchNextPanelPage(url, headers, panelId);\n }\n\n const accessTokenChanged = prevAccessToken !== accessToken;\n const dataChanged = newPanelUrl || newPanelData;\n if (dataChanged || accessTokenChanged) this.initialFetch(nextProps);\n\n if (calculateValidFor && !timer) {\n const nextValidFor = calculateValidFor(this.getPanelData(nextProps));\n if (nextValidFor) {\n this.clearTimer();\n const newTimer = actionSetTimeout(this.validForTimedOut, nextValidFor * MILLISECONDS);\n this.setState({ timer: newTimer });\n }\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const { breakpoint, propsToWatch, panelPropsToWatch } = this.props;\n const {\n breakpoint: nextBreakpoint,\n propsToWatch: nextPropsToWatch,\n panelPropsToWatch: nextPanelPropsToWatch,\n } = nextProps;\n\n const lastChange = this.getPanelLastUpdated(this.props);\n const nextChange = this.getPanelLastUpdated(nextProps);\n const isSame = isSameSecond(lastChange, nextChange);\n\n if (lastChange && !isSame) return true;\n\n // given a unique id and the location of the item in props\n // allow parent to send in custom prop locations to check for comparison\n // EX: use fetching to trigger component update during scrolling in header search results\n const panelPropsToCompare = panelPropsToWatch.reduce((acc, prop) => {\n const { uid, location } = prop;\n const value = _.get(this.props, location);\n if (uid && value) return { ...acc, [uid]: value };\n return acc;\n }, {});\n const nextPanelPropsToCompare = nextPanelPropsToWatch.reduce((acc, prop) => {\n const { uid, location } = prop;\n const value = _.get(nextProps, location);\n if (uid && value) return { ...acc, [uid]: value };\n return acc;\n }, {});\n\n const options = {\n props: {\n ...this.getPanelData(this.props),\n breakpoint,\n ...propsToWatch,\n ...panelPropsToCompare,\n },\n state: this.state,\n nextProps: {\n ...this.getPanelData(nextProps),\n breakpoint: nextBreakpoint,\n ...nextPropsToWatch,\n ...nextPanelPropsToCompare,\n },\n nextState,\n };\n\n return handleShouldComponentUpdate(options);\n }\n\n getPanelLastUpdated = props => _.get(props, 'panel.lastUpdated');\n\n getPanelData = props => _.get(props, 'panel.panelData', _.get(props, 'panelData'));\n\n validForTimedOut() {\n const {\n accessToken,\n calculateValidFor,\n headerGenerator,\n fetchPanel: actionFetchPanel,\n routeGenerator,\n panelId,\n panelUrl,\n pageType,\n } = this.props;\n const nextValidFor = calculateValidFor(this.getPanelData(this.props));\n if (nextValidFor <= 0) {\n this.clearTimer();\n const { '@id': id } = this.getPanelData(this.props);\n const url = panelUrl ? routeGenerator(panelUrl) : routeGenerator(id);\n const headers = headerGenerator({ pathKey: pageType, accessToken });\n actionFetchPanel(url, headers, panelId);\n }\n }\n\n clearTimer() {\n const { timer } = this.state;\n const { clearTimeout: actionClearTimeout } = this.props;\n if (!timer) return;\n actionClearTimeout(timer);\n this.setState({ timer: null });\n }\n\n initialFetch(props) {\n const {\n accessToken,\n deviceId,\n fetchPanel: actionFetchPanel,\n headerGenerator,\n onRef,\n pageType,\n panelData,\n panelId,\n panelUrl,\n routeGenerator,\n setFirstPage: actionSetFirstPage,\n } = props;\n if (onRef) onRef(this);\n\n const hasItems = _.get(panelData, 'items', false);\n const hasMembers = _.get(panelData, 'member', false);\n const hasTypes = _.get(panelData, 'types', false);\n const shouldFetch = !hasItems && !hasMembers && !hasTypes;\n if (shouldFetch) {\n const { '@id': id } = panelData;\n const url = panelUrl ? routeGenerator(panelUrl) : routeGenerator(id);\n const headers = headerGenerator({ pathKey: pageType, accessToken, deviceId });\n actionFetchPanel(url, headers, panelId);\n }\n\n actionSetFirstPage(panelData, panelId);\n }\n\n fetchNextPage(v2) {\n const {\n accessToken,\n deviceId,\n fetching,\n fetchNextPanelPage: actionFetchNextPanelPage,\n headerGenerator,\n pageType,\n panel,\n panelId,\n routeGenerator,\n toggleFetching: actionToggleFetching,\n } = this.props;\n if ((!panel || !panel.hasMoreItems || fetching) && !v2) return;\n const headers = headerGenerator({ pathKey: pageType, accessToken, deviceId });\n const url = routeGenerator(panel.paginationUrl);\n actionToggleFetching(true);\n actionFetchNextPanelPage(url, headers, panelId);\n }\n\n isFetching() {\n const { fetching: actionFetching } = this.prop;\n return actionFetching;\n }\n\n render() {\n const { renderer } = this.props;\n const panelData = this.getPanelData(this.props);\n if (!panelData) return null;\n return renderer(panelData);\n }\n}\n\nfunction mapStateToProps(state, ownProps) {\n const panelId = _.get(ownProps, 'panelId');\n const panels = _.get(state, 'panel.panels');\n const panel = _.get(panels, panelId);\n return {\n panel,\n fetching: state.panel.fetching,\n };\n}\n\nPanel.defaultProps = {\n accessToken: null,\n breakpoint: null,\n calculateValidFor: null,\n deviceId: null,\n fetching: false,\n hasInfiniteScroll: false,\n hasMoreItems: false,\n headerGenerator: noop,\n panel: null,\n panelPropsToWatch: [],\n panelUrl: null,\n propsToWatch: {},\n routeGenerator: noop,\n shouldFetchMore: false,\n};\n\nPanel.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string,\n calculateValidFor: PropTypes.func,\n clearTimeout: PropTypes.func.isRequired,\n deviceId: PropTypes.string,\n fetching: PropTypes.bool,\n fetchNextPanelPage: PropTypes.func.isRequired,\n fetchPanel: PropTypes.func.isRequired,\n hasInfiniteScroll: PropTypes.bool,\n hasMoreItems: PropTypes.bool,\n headerGenerator: PropTypes.func,\n pageType: PropTypes.string.isRequired,\n panel: PropTypes.shape({}),\n panelData: PropTypes.shape({}).isRequired,\n panelId: PropTypes.string.isRequired,\n panelPropsToWatch: PropTypes.arrayOf(PropTypes.shape({})),\n panelUrl: PropTypes.string,\n propsToWatch: PropTypes.shape({}),\n renderer: PropTypes.func.isRequired,\n routeGenerator: PropTypes.func,\n setTimeout: PropTypes.func.isRequired,\n shouldFetchMore: PropTypes.bool,\n toggleFetching: PropTypes.func.isRequired,\n};\n\nconst TimeoutPanel = ReactTimeout(\n connect(\n mapStateToProps,\n {\n fetchNextPanelPage,\n fetchPanel,\n setFirstPage,\n toggleFetching,\n },\n )(Panel),\n);\n\nexport default TimeoutPanel;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport Hls from 'hls.js';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport Icon from 'components/Icon';\nimport Style from './VideoHeader.module.scss';\n\nconst TRANSITION_TIME_IN = 500;\n\nclass VideoHeader extends Component {\n constructor(props) {\n super(props);\n const { id, idx } = props;\n this.state = {\n videoElement: null,\n hlsObjects: [this.createNewHls()],\n initialized: false,\n loaded: false,\n isVisible: false,\n videoElementID: idx === 0 ? this.createUniqueId(id, idx) : '',\n };\n }\n\n componentDidMount() {\n const { video, play, onMount, transitionImage, setHeaderImageState } = this.props;\n const { videoElementID } = this.state;\n if (onMount) onMount();\n window.addEventListener('scroll', this.handlePauseOnScroll);\n if (video) {\n setHeaderImageState('teaser video');\n return this.loadVideo({ play, video });\n }\n setHeaderImageState('static image');\n if (transitionImage && videoElementID) {\n const videoElement = this.getVideoElement();\n return this.setState({ videoElement }, this.transitionImageStart);\n }\n return null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { play, video, image, setTimeout } = this.props;\n const { play: nextPlay, video: nextVideo, image: nextImage } = nextProps;\n const { videoElement, loaded, initialized, isVisible } = this.state;\n // Load video right away if it's the first one\n if (!initialized && nextVideo && isVisible) {\n this.loadVideo({ play: nextPlay, video: nextVideo });\n this.setState({ initialized: true });\n return;\n }\n\n // Start hero transition if the source is changing\n if (video !== nextVideo || image !== nextImage) {\n if (nextVideo) {\n // If transitioning to a video, load video before completing transition\n setTimeout(this.transitionStart.bind(this), TRANSITION_TIME_IN);\n } else {\n // Otherwise, unload the video and start the end transition\n setTimeout(this.transitionImageStart.bind(this), TRANSITION_TIME_IN);\n }\n } else if (play !== nextPlay && loaded) {\n if (!nextPlay) {\n videoElement.pause();\n this.handleCallback('paused');\n } else {\n this.playVideoSafely(videoElement);\n this.handleCallback('playing');\n }\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { play: nextPlay, video: nextVideo } = this.props;\n const { isVisible, initialized } = this.state;\n const { isVisible: prevIsVisible } = prevState;\n if (!initialized && isVisible && !prevIsVisible) {\n this.loadVideo({ play: nextPlay, video: nextVideo });\n this.setState({ initialized: true });\n }\n if (!isVisible && prevIsVisible) {\n this.transitionImageStart();\n }\n }\n\n componentWillUnmount() {\n const { onUnmount } = this.props;\n window.removeEventListener('scroll', this.handlePauseOnScroll);\n if (onUnmount) onUnmount();\n }\n\n transitionImageStart() {\n const { video, image } = this.props;\n const { hlsObjects, videoElementID } = this.state;\n if (!videoElementID) return;\n const hlsObject = this.getHlsObject();\n hlsObject.destroy();\n const videoElement = this.getVideoElement();\n const newVideoImage = hlsObject && video ? null : image;\n const newHlsObject = this.createNewHls();\n if (videoElement) videoElement.src = '';\n if (this.loadPoster) this.loadPoster({ poster: newVideoImage });\n videoElement?.load();\n\n const newHlsObjects = _.concat(hlsObjects, newHlsObject);\n this.setState({ videoElement, hlsObjects: newHlsObjects });\n }\n\n transitionStart() {\n const { video } = this.props;\n const { videoElement, hlsObjects } = this.state;\n const hlsObject = this.getHlsObject();\n hlsObject.destroy();\n const newHlsObject = this.createNewHls();\n if (!newHlsObject) return;\n if (videoElement) {\n videoElement.setAttribute('src', video);\n videoElement.setAttribute('style', null);\n }\n newHlsObject.loadSource(video);\n newHlsObject.attachMedia(videoElement);\n\n const newHlsObjects = _.concat(hlsObjects, newHlsObject);\n this.setState({ videoElement, hlsObjects: newHlsObjects });\n }\n\n loadNewVideoElement() {\n const { videoElement: oldVideoElement, videoElementID } = this.state;\n if (!videoElementID) return;\n const videoElement = this.getVideoElement();\n if (!oldVideoElement) this.setState({ videoElement });\n }\n\n getVideoElement() {\n const { id, idx } = this.props;\n const videoId = this.createUniqueId(id, idx);\n const videoElement = document.getElementById(videoId);\n if (videoElement) {\n videoElement.addEventListener('error', this.videoTagListener, false);\n videoElement.addEventListener('loadeddata', this.videoTagListener, false);\n }\n return videoElement;\n }\n\n getHlsObject() {\n const { hlsObjects } = this.state;\n return _.last(hlsObjects);\n }\n\n loadVideo({ video }) {\n const { videoElement: oldVideoElement, videoElementID } = this.state;\n if (!video || !videoElementID) return;\n const hlsObject = this.getHlsObject();\n const videoElement = this.getVideoElement();\n videoElement.setAttribute('src', video);\n hlsObject.loadSource(video);\n hlsObject.attachMedia(videoElement);\n\n if (!oldVideoElement) this.setState({ videoElement });\n }\n\n createNewHls() {\n const config = {\n maxBufferHole: 0,\n maxLoadingDelay: 1000,\n };\n const newHlsObject = new Hls(config);\n let listenerAttachedVideo;\n let listenerParsedVideo;\n if (this.handleParsedVideo) {\n listenerParsedVideo = e => this.handleParsedVideo(e);\n }\n if (this.listenerAttachedVideo) {\n listenerAttachedVideo = e => this.listenerAttachedVideo(e);\n }\n if (newHlsObject) {\n if (listenerParsedVideo) newHlsObject.on(Hls.Events.MANIFEST_PARSED, listenerParsedVideo);\n if (listenerAttachedVideo) newHlsObject.on(Hls.Events.MEDIA_ATTACHED, listenerAttachedVideo);\n }\n return newHlsObject;\n }\n\n videoTagListener = event => {\n if (!event) return;\n\n switch (event.type) {\n case 'loadeddata':\n this.handleParsedVideo(event);\n if (this.listenerAttachedVideo) this.listenerAttachedVideo(event);\n break;\n case 'error':\n break;\n default:\n // do nothing\n }\n };\n\n handleCallback(...args) {\n const { callback } = this.props;\n const cb = callback || null;\n if (cb && typeof cb === 'function') {\n cb.apply(cb, args);\n }\n }\n\n handlePauseOnScroll = () => {\n const { videoElementID } = this.state;\n if (!videoElementID) return;\n const videoElement = this.getVideoElement();\n const videoElementHeight = videoElement?.clientHeight;\n if (window.scrollY >= videoElementHeight) {\n videoElement.pause();\n } else {\n this.playVideoSafely(videoElement);\n }\n };\n\n playVideoSafely(videoElement) {\n const video = videoElement || this.getVideoElement();\n let playPromise;\n if (video) {\n playPromise = video.play();\n }\n if (playPromise) {\n playPromise.catch(() => {\n // prevents the video from throwing an error.\n console.debug('Error playing video header element');\n });\n }\n }\n\n handleParsedVideo() {\n const { play, timer: currentTimer, setTimeout } = this.props;\n let timer = parseInt(currentTimer, 10);\n timer = Number.isNaN(timer) ? 0 : timer * 1000;\n\n if (play) {\n setTimeout(() => {\n const { play: playNow } = this.props;\n if (playNow) {\n this.playVideoSafely();\n this.handleCallback('playing');\n }\n }, timer);\n } else {\n this.handleCallback('loaded');\n }\n }\n\n createUniqueId = (id, idx) => `${idx}-${id}`;\n\n renderSingleVideoHeader() {\n const {\n id,\n idx,\n isHeroCarousel,\n video,\n image,\n play,\n themeSingleVideoHeader,\n promoTypeIsShowcaseBurntIn,\n } = this.props;\n const { videoElementID } = this.state;\n const networksBar = window.ExternalConfig.networkNavigation;\n const containerClasses = classNames(\n themeSingleVideoHeader.container,\n networksBar ? themeSingleVideoHeader.withNetworksBar : '',\n isHeroCarousel ? themeSingleVideoHeader.carouselWrappedContainer : '',\n );\n const styles = {\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n overflow: 'hidden',\n };\n\n const videoProps = {\n id: videoElementID,\n muted: 'muted',\n playsInline: 'playsInline',\n loop: 'loop',\n };\n\n if (video && play) {\n videoProps.autoPlay = 'autoPlay';\n }\n\n const videoHeaderClassNames = classNames(\n containerClasses,\n themeSingleVideoHeader.redesignCollection,\n promoTypeIsShowcaseBurntIn ? themeSingleVideoHeader.heroPlayerCTANationBurntInImage : null,\n );\n return (\n <VisibilitySensor\n partialVisibility\n onChange={isVisible => {\n const videoElementID = isVisible ? this.createUniqueId(id, idx) : '';\n this.setState({ isVisible, videoElementID });\n }}\n >\n <div className={videoHeaderClassNames}>\n <div className={classNames(themeSingleVideoHeader.shadowOverlay)} />\n <div className={themeSingleVideoHeader.videoContainer}>\n <video\n style={{ ...styles }}\n poster={image}\n {...videoProps}\n className={themeSingleVideoHeader.video}\n />\n </div>\n </div>\n </VisibilitySensor>\n );\n }\n\n renderVideoHeaders() {\n const {\n id,\n idx,\n video,\n image,\n play,\n handleTitleClick,\n watchLink,\n showPlayButton,\n shadowOnPlayButton,\n } = this.props;\n\n const setDimensions = {\n width: '1200px',\n height: '675px',\n };\n\n const styles = {\n ...setDimensions,\n backgroundImage: `url('${image}')`,\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center center',\n };\n\n const videoProps = {\n id: this.createUniqueId(id, idx),\n muted: 'muted',\n playsInline: 'playsInline',\n loop: 'loop',\n };\n\n if (video && play) {\n videoProps.autoPlay = 'autoPlay';\n }\n\n return (\n <div className={Style.overlay}>\n <Link onClick={handleTitleClick} to={watchLink} className={Style.link} />\n <div\n className={classNames(Style.playButton, shadowOnPlayButton ? Style.playButtonShadow : '')}\n >\n <div>{showPlayButton && <Icon icon=\"play-button\" color=\"white\" size=\"full\" />}</div>\n </div>\n {video ? <video style={{ ...styles }} {...videoProps} /> : <div style={{ ...styles }} />}\n </div>\n );\n }\n\n render() {\n const { foxAwesomeLayout } = this.props;\n return (\n <div>{foxAwesomeLayout ? this.renderSingleVideoHeader() : this.renderVideoHeaders()}</div>\n );\n }\n}\n\nVideoHeader.defaultProps = {\n callback: () => {},\n foxAwesomeLayout: false,\n handleTitleClick: null,\n id: '',\n image: null,\n isHeroCarousel: false,\n promoTypeIsShowcaseBurntIn: false,\n setHeaderImageState: () => {},\n setTimeout: () => {},\n shadowOnPlayButton: false,\n showPlayButton: true,\n themeSingleVideoHeader: null,\n timer: null,\n transitionImage: null,\n video: null,\n watchLink: null,\n};\n\nVideoHeader.propTypes = {\n callback: PropTypes.func,\n foxAwesomeLayout: PropTypes.bool,\n handleTitleClick: PropTypes.func,\n id: PropTypes.string,\n idx: PropTypes.number.isRequired,\n image: PropTypes.string,\n isHeroCarousel: PropTypes.bool,\n onMount: PropTypes.func,\n onUnmount: PropTypes.func,\n play: PropTypes.bool.isRequired,\n promoTypeIsShowcaseBurntIn: PropTypes.bool,\n setHeaderImageState: PropTypes.func,\n setTimeout: PropTypes.func,\n shadowOnPlayButton: PropTypes.bool,\n showPlayButton: PropTypes.bool,\n themeSingleVideoHeader: PropTypes.shape({}),\n timer: PropTypes.number,\n transitionImage: PropTypes.string,\n video: PropTypes.string,\n watchLink: PropTypes.string,\n};\n\nexport default ReactTimeout(VideoHeader);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Style from './Overlay.module.scss';\n\n/**\n * Overlay Component\n * @param {Object} theme - Theme styling from parent\n * @param {Object} backgroundClass - optional styling for container background\n * @param {Node} children - any additional items: button, image, text, etc.\n * @param {Function} innerContainerChildren - any additional items: button, image, text, etc.\n * @param {Boolean} rendered - should this item render?\n * @param {Function} onClose - click event for closing an overlay\n * @returns {Component} - React Component\n */\nconst Overlay = ({\n backgroundClass,\n backgroundUrl,\n children,\n innerContainerChildren,\n innerContainerChildrenParams,\n rendered,\n sharedTheme,\n theme,\n}) => {\n if (!rendered) return null;\n const containerClasses = classNames([\n theme.container,\n sharedTheme.container,\n backgroundClass,\n Style.container,\n ]);\n const containerStyle = backgroundUrl ? { backgroundImage: `url(${backgroundUrl})` } : null;\n return (\n <div className={containerClasses} style={containerStyle}>\n <div className={theme.innerContainer}>\n {innerContainerChildren(innerContainerChildrenParams)}\n <div className={theme.content}>{children}</div>\n </div>\n </div>\n );\n};\n\nOverlay.propTypes = {\n backgroundClass: PropTypes.string,\n backgroundUrl: PropTypes.string,\n children: PropTypes.node,\n innerContainerChildren: PropTypes.func,\n innerContainerChildrenParams: PropTypes.shape({}),\n rendered: PropTypes.bool,\n sharedTheme: PropTypes.shape({}),\n theme: PropTypes.shape({}),\n};\n\nOverlay.defaultProps = {\n backgroundClass: null,\n backgroundUrl: null,\n children: null,\n innerContainerChildren: () => {},\n innerContainerChildrenParams: {},\n rendered: false,\n sharedTheme: {},\n theme: {},\n};\n\nexport default Overlay;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Overlay from 'components/Overlay';\n\n/**\n * Success Component\n * @param {Node} children - any additional items: button, image, text, etc.\n * @param {Node} innerContainerChildren - any additional items: button, image, text, etc.\n * @param {Boolean} rendered - should this item render?\n * @returns {Component} - React Component\n */\nconst MoreInfo = ({ children, innerContainerChildren, rendered }) => (\n <Overlay\n backgroundClass=\"withBackground\"\n rendered={rendered}\n innerContainerChildren={innerContainerChildren}\n >\n {children}\n </Overlay>\n);\n\nMoreInfo.propTypes = {\n children: PropTypes.node,\n innerContainerChildren: PropTypes.func,\n rendered: PropTypes.bool,\n};\n\nMoreInfo.defaultProps = {\n children: null,\n innerContainerChildren: () => {},\n rendered: null,\n};\n\nexport default MoreInfo;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Style from 'app/themes/MoreInfoButton.module.scss';\nimport MoreInfo from './Overlays';\n\nclass MoreInfoButton extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showFullScreen: false,\n };\n\n this.toggleFullScreen = this.toggleFullScreen.bind(this);\n this.renderMoreInfoOverlay = this.renderMoreInfoOverlay.bind(this);\n }\n\n toggleFullScreen() {\n const { showFullScreen } = this.state;\n this.setState({ showFullScreen: !showFullScreen });\n }\n\n renderMoreInfoOverlay() {\n const { description, ariaHidden } = this.props;\n const { showFullScreen } = this.state;\n\n const overlay = (\n <MoreInfo rendered innerContainerChildren={() => {}}>\n <div className={Style.overlay}>\n <div className={Style.header}>About</div>\n <div>{description}</div>\n <Link\n className={Style.actionButton}\n onClick={this.toggleFullScreen}\n aria-hidden={ariaHidden}\n >\n Close\n </Link>\n </div>\n </MoreInfo>\n );\n return showFullScreen ? overlay : null;\n }\n\n render() {\n const { className, value } = this.props;\n\n return (\n <div className={Style.outerContainer}>\n <Link className={className} onClick={this.toggleFullScreen} role=\"button\">\n {value}\n </Link>\n {this.renderMoreInfoOverlay()}\n </div>\n );\n }\n}\n\nMoreInfoButton.defaultProps = {\n className: null,\n description: null,\n value: null,\n ariaHidden: false,\n};\n\nMoreInfoButton.propTypes = {\n className: PropTypes.string,\n description: PropTypes.string,\n value: PropTypes.string,\n ariaHidden: PropTypes.string,\n};\n\nexport default MoreInfoButton;\n","/* global ShowcaseRedesign */\nimport React from 'react';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Icon from 'components/Icon';\nimport {\n isClip,\n isLive,\n isTypeSeries,\n isEpisode,\n isMovie,\n isSpecial,\n isTypePromo,\n isTypeVideo,\n truncateText,\n} from 'helpers/ContentHelper';\nimport {\n Events,\n getSegmentModelMetadata,\n getTealiumRedesignEvents,\n handleTealiumButtonAction,\n SEGMENT_HERO_COLLECTION_TITLE,\n handleAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport { helperGetLiveUrl, helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport { RESTART_TYPE_HOME } from 'screens/Watch/WatchHelpers';\n\nconst SHOWCASE_LIVE = 'SHOWCASE_LIVE';\nconst SHOWCASE_MOVIE = 'SHOWCASE_MOVIE';\nconst SHOWCASE_SERIES = 'SHOWCASE_SERIES';\nconst SHOWCASE_SERIES_EPISODE = 'SHOWCASE_SERIES_EPISODE';\nconst SHOWCASE_SPECIAL = 'SHOWCASE_SPECIAL';\nconst SHOWCASE_UPCOMING = 'SHOWCASE_UPCOMING';\nconst SHOWCASE_CLIP = 'SHOWCASE_CLIP';\nconst SHOWCASE_PROMO = 'SHOWCASE_PROMO';\nconst BUTTON_TYPE = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n TRETIARY: 'TRETIARY',\n};\n\nexport const getShowcaseType = item => {\n const { secUntilStart, seriesType, type, videoType } = item;\n\n if (isLive(type)) {\n const startsInFuture = secUntilStart && secUntilStart > 0;\n if (startsInFuture) return SHOWCASE_UPCOMING;\n return SHOWCASE_LIVE;\n }\n if (isTypeSeries(type)) return SHOWCASE_SERIES;\n if (isTypePromo(type)) return SHOWCASE_PROMO;\n if (isTypeVideo(type)) {\n if (isClip(videoType)) return SHOWCASE_CLIP;\n if (isMovie(videoType)) return SHOWCASE_MOVIE;\n if (isEpisode(videoType)) {\n if (isSpecial(seriesType)) return SHOWCASE_SPECIAL;\n return SHOWCASE_SERIES_EPISODE;\n }\n }\n return null;\n};\n\nexport function buildInfoTags(props) {\n const {\n canDisplayRestartButton,\n foxAwesomeLayout,\n isDescriptionOpen,\n item = {},\n style,\n toggleDescription,\n collectionInfo,\n headerImageState,\n idx,\n account,\n } = props;\n\n const {\n callSign,\n clipMetaData,\n description,\n isLive: videoHasLiveUrl,\n isSeriesDetailAvailable,\n liveMetaData,\n liveVideoEnded,\n lockButtons,\n metadata,\n movieMetaData,\n name,\n network,\n networkIcon,\n originalAirDateMetaData,\n percentWatched,\n playerScreenUrl,\n seasonEpisodeMetaData,\n secUntilStart,\n seriesName,\n seriesSeasonEpisode,\n subtitle,\n tabIndex,\n titleLink,\n upcomingMetadata,\n watchLink,\n videoId,\n title = '',\n } = item;\n const isRestartEnabled =\n typeof item?.originalVideo?.restartEnabled !== 'undefined'\n ? item?.originalVideo?.restartEnabled\n : canDisplayRestartButton;\n const displaySeasonAndEpisodeCounts = _.get(item, 'displaySeasonAndEpisodeCounts', true);\n const {\n global_moreClips: moreClipsText,\n global_moreInfoButton: moreInfoText,\n global_moreSeriesDeeplinkButton: moreEpisodesText,\n global_moreButton: descriptionMoreText,\n global_lessButton: descriptionLessText,\n global_playNowLabel: playNowText,\n global_restartButton: restartText,\n global_startWatchingButton: startWatchingButtonText,\n global_watchLiveButton: watchLiveText,\n showcase_watchButton: showcaseWatchNowText,\n global_watchButton: watchButtonText,\n } = window.Language;\n\n let highlightText;\n let highlightClass;\n let isRestartBtn;\n let isWatchBtn = true;\n let isResumeBtn = percentWatched && percentWatched > 0 && percentWatched < 100;\n let isWatchLiveSecondaryBtn;\n let isRestartSecondaryBtn;\n let isPreviewSecondaryBtn;\n let primaryButtonText;\n let primaryButtonIcon;\n let primaryButtonViewBox;\n let primaryButtonLink;\n let primaryButtonIsPlayButton = false;\n let secondaryButtonLink;\n let secondaryButtonText;\n let tertiaryButtonLink;\n let tertiaryButtonText;\n let meta = metadata;\n let showName = seriesName;\n let showProgressBar = false;\n const secondaryButtonClasses = [foxAwesomeLayout ? style.foxAwesomeMoreLink : style.moreLink];\n const tertiaryButtonClasses = [foxAwesomeLayout ? style.foxAwesomeMoreLink : style.moreLink];\n if (ShowcaseRedesign) {\n secondaryButtonClasses.push(style.squared);\n tertiaryButtonClasses.push(style.squared);\n }\n const descriptionClasses = [style.descriptionText];\n if (lockButtons) {\n primaryButtonIcon = 'lock';\n primaryButtonViewBox = '-7 -1 30 30';\n }\n const networkLogo = networkIcon && (\n <img\n className={style.networkLogo}\n data-test=\"info-tags-network-logo\"\n src={networkIcon}\n alt={network}\n />\n );\n const showcaseType = getShowcaseType(item);\n const detailPageAvailable = titleLink && isSeriesDetailAvailable !== false;\n switch (showcaseType) {\n case SHOWCASE_LIVE: {\n if (videoHasLiveUrl && !liveVideoEnded) {\n primaryButtonText = watchLiveText;\n primaryButtonIcon = lockButtons ? 'lock' : 'play-rectangle';\n primaryButtonLink = helperGetLiveUrl({ callSign, videoId });\n primaryButtonIsPlayButton = true;\n if (playerScreenUrl && isRestartEnabled) {\n secondaryButtonText = restartText;\n const restartLink = helperGetRelativeUrl({ url: playerScreenUrl });\n secondaryButtonLink = `${restartLink}#${RESTART_TYPE_HOME}`;\n isRestartSecondaryBtn = true;\n if (detailPageAvailable) {\n tertiaryButtonText = moreInfoText;\n tertiaryButtonLink = titleLink;\n }\n } else if (detailPageAvailable) {\n secondaryButtonText = moreInfoText;\n secondaryButtonLink = titleLink;\n }\n } else if (detailPageAvailable) {\n primaryButtonText = moreInfoText;\n primaryButtonLink = titleLink;\n }\n isRestartBtn = false;\n isWatchBtn = false;\n isResumeBtn = false;\n descriptionClasses.push(style.descriptionTextVideo);\n highlightClass = style.highlight;\n highlightText = subtitle;\n meta = liveMetaData;\n showProgressBar = true;\n break;\n }\n case SHOWCASE_UPCOMING: {\n const videoStartsWithinFiveMinutes = secUntilStart && secUntilStart <= 300;\n const canPlay = videoHasLiveUrl && videoStartsWithinFiveMinutes;\n if (canPlay) {\n primaryButtonText = watchLiveText;\n primaryButtonIcon = lockButtons ? 'lock' : 'play-rectangle';\n primaryButtonLink = helperGetLiveUrl({ callSign, videoId });\n primaryButtonIsPlayButton = true;\n if (detailPageAvailable) {\n secondaryButtonText = moreInfoText;\n secondaryButtonLink = titleLink;\n }\n } else if (detailPageAvailable) {\n primaryButtonText = moreInfoText;\n primaryButtonLink = titleLink;\n primaryButtonIcon = null;\n }\n highlightText = subtitle;\n highlightClass = style.highlight;\n descriptionClasses.push(style.descriptionTextVideo);\n meta = upcomingMetadata;\n break;\n }\n case SHOWCASE_SERIES: {\n if (watchLink) {\n primaryButtonText = displaySeasonAndEpisodeCounts\n ? `${startWatchingButtonText} ${seriesSeasonEpisode}`\n : showcaseWatchNowText;\n primaryButtonIcon = lockButtons ? 'lock' : 'play-rectangle';\n primaryButtonLink = watchLink;\n primaryButtonIsPlayButton = true;\n }\n if (titleLink) {\n secondaryButtonText = moreEpisodesText;\n secondaryButtonLink = titleLink;\n }\n showName = name;\n meta = seasonEpisodeMetaData;\n break;\n }\n case SHOWCASE_SERIES_EPISODE: {\n if (watchLink) {\n primaryButtonText = isResumeBtn ? 'Resume' : showcaseWatchNowText;\n primaryButtonIcon = lockButtons ? 'lock' : 'play-rectangle';\n primaryButtonLink = watchLink;\n primaryButtonIsPlayButton = true;\n }\n highlightText = subtitle;\n highlightClass = style.highlight;\n descriptionClasses.push(style.descriptionTextVideo);\n if (titleLink) {\n secondaryButtonText = moreEpisodesText;\n secondaryButtonLink = titleLink;\n }\n meta = originalAirDateMetaData;\n break;\n }\n case SHOWCASE_SPECIAL: {\n if (watchLink) {\n primaryButtonText = isResumeBtn ? 'Resume' : showcaseWatchNowText;\n primaryButtonIcon = lockButtons ? 'lock' : 'play-rectangle';\n primaryButtonLink = watchLink;\n primaryButtonIsPlayButton = true;\n }\n if (titleLink) {\n secondaryButtonLink = titleLink;\n secondaryButtonText = moreInfoText;\n }\n meta = originalAirDateMetaData;\n break;\n }\n case SHOWCASE_PROMO: {\n if (watchLink) {\n primaryButtonText = playNowText;\n primaryButtonIcon = 'play-rectangle';\n primaryButtonLink = watchLink;\n primaryButtonIsPlayButton = true;\n }\n if (titleLink) {\n secondaryButtonText = moreEpisodesText;\n secondaryButtonLink = titleLink;\n }\n meta = seasonEpisodeMetaData;\n break;\n }\n case SHOWCASE_MOVIE: {\n if (watchLink) {\n primaryButtonText = isResumeBtn ? 'Resume' : showcaseWatchNowText;\n primaryButtonIcon = lockButtons ? 'lock' : 'play-rectangle';\n primaryButtonLink = watchLink;\n primaryButtonIsPlayButton = true;\n }\n if (titleLink) {\n secondaryButtonText = moreInfoText;\n secondaryButtonLink = titleLink;\n }\n meta = movieMetaData;\n break;\n }\n case SHOWCASE_CLIP: {\n if (watchLink) {\n primaryButtonText = isResumeBtn ? 'Resume' : showcaseWatchNowText;\n primaryButtonIcon = 'play-rectangle';\n primaryButtonLink = watchLink;\n primaryButtonIsPlayButton = true;\n }\n if (titleLink) {\n secondaryButtonText = moreClipsText;\n secondaryButtonLink = titleLink;\n }\n meta = clipMetaData;\n break;\n }\n default:\n }\n\n const descriptionWordCount = 112;\n const isDescriptionLong = description && description.length > descriptionWordCount;\n const descriptionText = isDescriptionOpen\n ? description\n : truncateText(description, descriptionWordCount);\n\n const buttonContainerClasses = [style.buttons];\n const descriptionButtonClasses = style.descriptionButton;\n const descriptionButtonText = isDescriptionOpen ? descriptionLessText : descriptionMoreText;\n\n const descriptionButton = isDescriptionLong ? (\n <button className={descriptionButtonClasses} onClick={toggleDescription} tabIndex={tabIndex}>\n {descriptionButtonText}\n </button>\n ) : null;\n\n const descriptionComponent = (\n <div className={classNames(descriptionClasses)} data-test=\"info-tags-description\">\n {descriptionText}\n {descriptionButton}\n </div>\n );\n\n if (primaryButtonText && primaryButtonIcon) {\n primaryButtonText = [\n <Icon\n key=\"homePrimaryButtonIcon\"\n className={primaryButtonIcon}\n viewBox={primaryButtonViewBox}\n icon={primaryButtonIcon}\n color=\"white\"\n ariaHidden\n />,\n primaryButtonText,\n ];\n }\n\n const handleButtonClickAnalyticsEvent = (button = '') => {\n switch (button) {\n case BUTTON_TYPE.PRIMARY:\n handlePrimaryClickAnalytics();\n break;\n case BUTTON_TYPE.SECONDARY:\n handleSecondaryClickAnalytics();\n break;\n case BUTTON_TYPE.TRETIARY:\n handleTertiaryClickAnalytics();\n break;\n default:\n }\n };\n\n const handleSegmentItemClick = buttonText => {\n const payload = {\n page_action_type: buttonText,\n page_collection_count: collectionInfo.totalCollections,\n page_collection_id: collectionInfo.panelId,\n page_collection_title: SEGMENT_HERO_COLLECTION_TITLE,\n page_collection_type: collectionInfo.collectionType,\n page_item_type: 'hero',\n page_item_state: headerImageState,\n page_item_container_title: title,\n page_item_vertical_position: '1',\n page_item_horizontal_position: idx + 1,\n page_item_title: buttonText,\n page_item_subtitle: highlightText,\n page_item_cc: 'cc off',\n page_item_volume: 'volume off',\n page_playlist_length: collectionInfo.totalItems,\n page_recs_collection: collectionInfo.isPanelRecommended,\n page_video_uid: collectionInfo.uID,\n ...getSegmentModelMetadata(),\n };\n handleAnalytics({ event: Events.HERO_ITEM_SELECT_ACTION, payload });\n };\n\n const tealiumRedesignEvents = getTealiumRedesignEvents({ account });\n\n const tealiumCollectionEvents = ({ headline, collectionType, totalItems, totalCollections }) => {\n tealiumRedesignEvents.heroItemSelect({\n account,\n type: 'hero',\n state: 'autoplay video',\n containerTitle: name,\n verticalPosition: '1',\n horizontalPosition: idx + 1,\n title,\n subtitle: secondaryButtonText,\n cc: 'cc off',\n volume: 'volume off',\n collectionTitle: headline,\n collectionType,\n playlistLength: totalItems,\n collectionCount: totalCollections,\n item,\n });\n };\n\n const handlePrimaryClickAnalytics = () => {\n const buttonText = Array.isArray(primaryButtonText) ? primaryButtonText[1] : primaryButtonText;\n handleSegmentItemClick(buttonText);\n handleTealiumButtonAction({\n text: watchButtonText,\n title,\n subtitle: name,\n account,\n isRestartBtn,\n isWatchBtn,\n });\n tealiumCollectionEvents(collectionInfo);\n };\n\n const handleSecondaryClickAnalytics = () => {\n handleSegmentItemClick(tertiaryButtonText);\n handleTealiumButtonAction({\n text: secondaryButtonText,\n title,\n subtitle: name,\n account,\n isWatchLiveSecondaryBtn,\n });\n tealiumCollectionEvents(collectionInfo);\n };\n\n const handleTertiaryClickAnalytics = () => {\n handleSegmentItemClick(tertiaryButtonText);\n handleTealiumButtonAction({\n text: secondaryButtonText,\n title,\n subtitle: name,\n account,\n isWatchLiveSecondaryBtn,\n });\n tealiumCollectionEvents(collectionInfo);\n };\n\n return {\n buttonContainerClasses,\n descriptionComponent,\n highlightText,\n highlightClass,\n meta,\n networkLogo,\n showName,\n isRestartBtn,\n isWatchBtn,\n isResumeBtn,\n isWatchLiveSecondaryBtn,\n isRestartSecondaryBtn,\n isPreviewSecondaryBtn,\n primaryButtonText,\n primaryButtonLink,\n primaryButtonIsPlayButton,\n secondaryButtonLink,\n secondaryButtonText,\n secondaryButtonClasses,\n showProgressBar,\n tertiaryButtonLink,\n tertiaryButtonText,\n tertiaryButtonClasses,\n handleButtonClickAnalyticsEvent,\n BUTTON_TYPE,\n };\n}\n","/* global EpgEnabled ShowcaseRedesign */\nimport React, { Component } from 'react';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport { Link, withRouter, browserHistory } from 'react-router';\nimport Dotdotdot from 'react-dotdotdot';\nimport { getTimestamp } from 'helpers/DateTimeHelper';\nimport Badge from 'components/Badge';\nimport ProgressBar from 'components/ProgressBar';\nimport MoreInfoButton from 'components/MoreInfoButton';\nimport {\n COLLECTION_TYPE_FTSLOCAL,\n COLLECTION_TYPE_LOCAL_CLIPS,\n isDescTooLong,\n isSportsContent,\n isInternalLink,\n setLocalChannelCookies,\n setOutOfMarketLocalCookies,\n truncateText,\n VIDEO_TYPE,\n} from 'helpers/ContentHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport {\n setSegmentContextSourceLive,\n setSegmentRestartedPlaybackGlobal,\n setSegmentResumedPlaybackGlobal,\n} from '@foxcorp/delta-web-analytics';\nimport { redirectToExternalUrl } from 'helpers/RouteHelper';\nimport { logPlayerEvent } from 'helpers/LogReportHelpers';\nimport { COLLECTION_HERO_LOGO_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { buildInfoTags } from './InfoTagHelper';\nimport InfoTagStyle from './InfoTags.module.scss';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n canDisplayRestartButton: true,\n enableTruncateDesc: false,\n displayDescription: true,\n displayLocationRequired: true,\n titleLines: 2,\n },\n [SITE_PLATFORM_WEB]: {\n canDisplayRestartButton: true,\n enableTruncateDesc: false,\n displayDescription: true,\n displayLocationRequired: true,\n overflowCtaEnabled: false,\n titleLines: 2,\n },\n [SITE_PLATFORM_TABLET]: {\n canDisplayRestartButton: true,\n enableTruncateDesc: false,\n displayDescription: true,\n displayLocationRequired: true,\n overflowCtaEnabled: false,\n titleLines: 2,\n },\n [SITE_PLATFORM_MOBILE]: {\n canDisplayRestartButton: true,\n enableTruncateDesc: false, // Disable 'More Info' CTA\n displayDescription: false,\n displayLocationRequired: true,\n overflowCtaEnabled: true,\n titleLines: 3,\n },\n};\nconst SLIDE_THRESHOLD = 50;\nlet slideDragged = false;\nlet leftBound;\n\nclass InfoTags extends Component {\n componentDidMount() {\n this.heroClickthrough.addEventListener('mousedown', this.heroClickMouseDown);\n this.heroClickthrough.addEventListener('mouseup', this.heroClickMouseUp);\n }\n\n componentWillUnmount() {\n this.heroClickthrough.removeEventListener('mousedown', this.heroClickMouseDown);\n this.heroClickthrough.removeEventListener('mouseup', this.heroClickMouseUp);\n }\n\n heroClickMouseDown = () => {\n slideDragged = false;\n leftBound = this.heroClickthrough.getBoundingClientRect().left;\n };\n\n heroClickMouseUp = () => {\n const newLeftBound = this.heroClickthrough.getBoundingClientRect().left;\n if (Math.abs(newLeftBound - leftBound) > SLIDE_THRESHOLD) slideDragged = true;\n };\n\n render() {\n const callSignMap = window?.ExternalConfig?.callSignRedirects || {};\n const seriesRedirectMap = window?.ExternalConfig?.seriesRedirectMap || {};\n\n const {\n account,\n breakpoint,\n callCollectionImpressionEvent,\n collectionInfo,\n foxAwesomeLayout,\n headerImageState,\n idx,\n isLive,\n isDescriptionOpen,\n item,\n onPrimaryButtonClick,\n onTitleClick,\n onWatch,\n overridePlayButtonClick,\n overridePlayButtonLink,\n router,\n saveLiveRestart,\n saveLiveVideo,\n setSuggestedChannel,\n smallCollectionHeader,\n style,\n useSeriesLogo,\n toggleDescription,\n } = this.props;\n\n const {\n canDisplayRestartButton,\n displayDescription,\n enableTruncateDesc,\n titleLines,\n } = BREAKPOINTS[breakpoint];\n\n const {\n badge,\n callSign,\n description,\n headline,\n alternativeHeadline,\n endDate,\n fadeButtons,\n isSeriesDetailAvailable,\n name,\n originalVideo,\n previewLink,\n seriesLogo,\n seriesName,\n startDate,\n tabIndex,\n title,\n titleLink,\n videoId,\n } = item;\n\n const infotagHelperProps = {\n canDisplayRestartButton,\n foxAwesomeLayout,\n isDescriptionOpen,\n isSeriesDetailAvailable,\n item,\n style,\n toggleDescription,\n collectionInfo,\n headerImageState,\n idx,\n account,\n };\n const {\n descriptionComponent,\n highlightClass,\n highlightText,\n isPreviewSecondaryBtn,\n isRestartBtn,\n isRestartSecondaryBtn,\n isResumeBtn,\n meta,\n primaryButtonIsPlayButton,\n primaryButtonLink,\n primaryButtonText,\n secondaryButtonClasses,\n secondaryButtonLink,\n secondaryButtonText,\n showName,\n showProgressBar,\n tertiaryButtonLink,\n tertiaryButtonText,\n tertiaryButtonClasses,\n handleButtonClickAnalyticsEvent,\n BUTTON_TYPE,\n } = buildInfoTags({ ...infotagHelperProps, canDisplayRestartButton });\n\n const itemIsSportsContent = isSportsContent(item);\n const isMobile = breakpoint === SITE_PLATFORM_MOBILE;\n\n let badgeTag = null;\n if (badge) {\n badgeTag = (\n <Badge\n theme={style}\n badge={badge}\n title={title}\n startDate={getTimestamp(startDate)}\n tabIndex={tabIndex}\n />\n );\n }\n const progressBarComponent = showProgressBar ? (\n <ProgressBar endDate={endDate} startDate={startDate} theme={style} />\n ) : null;\n\n const primaryButtonClasses = [style.showButton];\n if (fadeButtons) primaryButtonClasses.push(style.fadeButtons);\n if (ShowcaseRedesign) primaryButtonClasses.push(style.squared);\n\n const handleLiveClick = () => {\n setSegmentContextSourceLive(true);\n if (EpgEnabled) {\n setSuggestedChannel({ network: callSign, videoId });\n } else {\n saveLiveVideo(originalVideo);\n }\n };\n\n const handleTitleClick = () => {\n callCollectionImpressionEvent();\n if (itemIsSportsContent) handleLiveClick();\n onTitleClick({});\n };\n\n const handlePrimaryClick = e => {\n const { headline } = item;\n handleButtonClickAnalyticsEvent(BUTTON_TYPE.PRIMARY);\n callCollectionImpressionEvent();\n if (item?.isUserOutOfMarket) {\n setOutOfMarketLocalCookies({\n livePlayerScreenUrl: item?.livePlayerScreenUrl,\n image: item?.stillBackgroundImage,\n });\n }\n if (item?.collectionType === COLLECTION_TYPE_LOCAL_CLIPS) {\n setLocalChannelCookies({\n headline,\n playerScreenUrl: item?.playerScreenUrl,\n videoId: item?.id,\n });\n }\n if (primaryButtonIsPlayButton) {\n logPlayerEvent('onVideoPlayClick', { video_id: videoId, video_name: name });\n onPrimaryButtonClick(e);\n }\n if (isLive) handleLiveClick();\n if (onWatch) onWatch();\n if (isResumeBtn) {\n setSegmentResumedPlaybackGlobal(true);\n }\n if (isRestartBtn) {\n saveLiveRestart({ video: item });\n setSegmentRestartedPlaybackGlobal(true);\n }\n };\n\n const handleSecondaryClick = () => {\n handleButtonClickAnalyticsEvent(BUTTON_TYPE.SECONDARY);\n const { toggleVideoModal } = this.props;\n callCollectionImpressionEvent();\n if (isLive) handleLiveClick();\n if (onWatch) onWatch();\n if (isRestartSecondaryBtn) {\n saveLiveRestart({ video: item });\n setSegmentRestartedPlaybackGlobal(true);\n }\n if (isPreviewSecondaryBtn) {\n toggleVideoModal({ url: previewLink, videoData: item, panelIdx: idx });\n }\n };\n\n const handleTertiaryClick = () => {\n handleButtonClickAnalyticsEvent(BUTTON_TYPE.TRETIARY);\n if (onWatch) onWatch();\n };\n\n const renderCTAs = () => {\n const hasActionButtons = !_.isEmpty(displayActionButtons);\n\n const desktopCTAs = (\n <div className={classNames(InfoTagStyle.desktopCTAContainer, InfoTagStyle.buttons)}>\n {hasActionButtons &&\n _.map(displayActionButtons, button =>\n isInternalLink(button.link) ? (\n <Link\n key={button.text}\n to={button.link}\n onClick={button.onClick}\n onMouseDown={button.onMouseDown}\n className={classNames([button.classes])}\n data-testid={button.dataTest}\n aria-label={\n Array.isArray(button.text)\n ? `${button.text[1]} ${showName}`\n : `${button.text} ${showName}`\n }\n role={button.role}\n aria-hidden={isMobile}\n tabIndex={tabIndex}\n >\n {button.text}\n </Link>\n ) : (\n <a\n key={button.text}\n href={button.link}\n onMouseDown={button.onMouseDown}\n className={classNames([button.classes])}\n data-testid={button.dataTest}\n aria-label={\n Array.isArray(button.text)\n ? `${button.text[1]} ${showName}`\n : `${button.text} ${showName}`\n }\n role={button.role}\n aria-hidden={isMobile}\n tabIndex={tabIndex}\n >\n {button.text}\n </a>\n ),\n )}\n {isDescTooLong(description) && enableTruncateDesc ? (\n <MoreInfoButton\n key={moreInfoKey}\n className={style.moreLink}\n value={moreInfoText}\n description={description}\n ariaHidden={isMobile}\n tabIndex={tabIndex}\n />\n ) : null}\n </div>\n );\n\n let mobileCTAs = null;\n if (button) {\n mobileCTAs = (\n <div className={classNames(InfoTagStyle.mobileCTAContainer, InfoTagStyle.buttons)}>\n {isInternalLink(button.link) ? (\n <Link\n key={button.text}\n to={button.link}\n role=\"button\"\n onClick={button.onClick}\n className={classNames(button.classes)}\n data-testid={button.dataTest}\n aria-hidden={!isMobile}\n aria-label={\n Array.isArray(button.text)\n ? `${button.text[1]} ${showName}`\n : `${button.text} ${showName}`\n }\n tabIndex={tabIndex}\n >\n {button.text}\n </Link>\n ) : (\n <a\n key={button.text}\n href={button.link}\n role=\"button\"\n className={classNames(button.classes)}\n data-testid={button.dataTest}\n aria-hidden={!isMobile}\n aria-label={\n Array.isArray(button.text)\n ? `${button.text[1]} ${showName}`\n : `${button.text} ${showName}`\n }\n tabIndex={tabIndex}\n >\n {button.text}\n </a>\n )}\n </div>\n );\n }\n return (\n <>\n {desktopCTAs}\n {mobileCTAs}\n </>\n );\n };\n\n const isClipsLocalShowcase =\n item?.videoType === VIDEO_TYPE && collectionInfo?.categoryType === COLLECTION_TYPE_FTSLOCAL;\n const isOverridePlayButton = overridePlayButtonLink && primaryButtonIsPlayButton;\n let linkOverride = null;\n let secondaryLinkOverride = null;\n if (callSignMap[callSign] && isLive) {\n linkOverride = callSignMap[callSign];\n }\n\n if (item?.seriesType === 'series' && seriesRedirectMap?.[item?.showCode]) {\n linkOverride = seriesRedirectMap[item.showCode];\n secondaryLinkOverride = seriesRedirectMap[item.showCode];\n }\n\n if (item?.originalVideo?.deeplinkWeb) {\n linkOverride = item.originalVideo.deeplinkWeb;\n }\n const actionButtons = [];\n actionButtons.push({\n link: linkOverride || (!isOverridePlayButton && primaryButtonLink),\n onClick: isOverridePlayButton\n ? () => overridePlayButtonClick({ visibility: true, redirectUrl: primaryButtonLink })\n : handlePrimaryClick,\n onMouseDown: e =>\n e.button === 1 ? handleButtonClickAnalyticsEvent(BUTTON_TYPE.PRIMARY) : noop,\n classes: primaryButtonClasses,\n text: primaryButtonText,\n dataTest: 'home-slider-primary-button',\n role: 'button',\n });\n actionButtons.push({\n link: secondaryLinkOverride || secondaryButtonLink,\n onClick: handleSecondaryClick,\n onMouseDown: e =>\n e.button === 1 ? handleButtonClickAnalyticsEvent(BUTTON_TYPE.SECONDARY) : noop,\n classes: secondaryButtonClasses,\n text: secondaryButtonText,\n dataTest: 'home-slider-secondary-button',\n role: 'button',\n });\n actionButtons.push({\n link: secondaryLinkOverride || tertiaryButtonLink,\n onClick: handleTertiaryClick,\n onMouseDown: e =>\n e.button === 1 ? handleButtonClickAnalyticsEvent(BUTTON_TYPE.TRETIARY) : noop,\n classes: tertiaryButtonClasses,\n text: tertiaryButtonText,\n role: 'button',\n });\n const displayActionButtons = _.filter(actionButtons, a => !!a.text);\n\n const foxAwesomeContainerStyles = [style.infoTagsRedesign];\n const truncateLength = 50;\n const kicker = (\n <div className={classNames(style.kicker)}>\n {truncateText(alternativeHeadline, truncateLength)}\n </div>\n );\n const headLineText = (\n <Dotdotdot clamp={2} useNativeClamp>\n {headline}\n </Dotdotdot>\n );\n const isSeriesLogoImage = useSeriesLogo && seriesLogo;\n foxAwesomeContainerStyles.push(style.smallerInfoContainer);\n if (smallCollectionHeader) foxAwesomeContainerStyles.push(style.withSmallHeader);\n\n const isPromo = _.get(item, 'originalVideo.@type') === 'Promo';\n\n const seriesLogoOrText = isSeriesLogoImage ? (\n renderImage({\n alt: seriesName,\n breakpoint,\n className: style.seriesLogo,\n dataTest: 'info-tags-series-logo',\n imageType: COLLECTION_HERO_LOGO_IMAGE,\n src: seriesLogo,\n 'aria-label': showName,\n role: 'link',\n lazyLoad: false,\n })\n ) : (\n <Dotdotdot\n clamp={isClipsLocalShowcase ? 3 : titleLines}\n useNativeClamp\n aria-label={showName}\n role=\"link\"\n >\n {showName}\n </Dotdotdot>\n );\n const moreInfoText = _.get(window.Language, 'global_moreInfoButton');\n const moreInfoKey = moreInfoText.toLowerCase(_.replace(' ', '-'));\n const button = displayActionButtons[0];\n const networksBar = window.ExternalConfig.networkNavigation;\n const promoTypeIsShowcaseBurntIn = originalVideo?.promoType === 'showcaseBurntIn';\n const heroPlayerCTAClasses = classNames(\n style.heroPlayerCTA,\n networksBar ? style.withNetworksBar : null,\n );\n\n const showKicker = (ShowcaseRedesign && alternativeHeadline && isPromo) || alternativeHeadline;\n\n const showcaseTitleImage = isInternalLink(secondaryLinkOverride || titleLink) ? (\n <Link\n data-test=\"info-tags-title-link\"\n key=\"homeTitleLink\"\n onClick={handleTitleClick}\n to={titleLink}\n className={style.showName}\n tabIndex={tabIndex}\n >\n {seriesLogoOrText}\n </Link>\n ) : (\n <a\n data-test=\"info-tags-title-link\"\n key=\"homeTitleLink\"\n onClick={handleTitleClick}\n href={secondaryLinkOverride || titleLink}\n className={style.showName}\n tabIndex={tabIndex}\n >\n {seriesLogoOrText}\n </a>\n );\n return (\n <>\n <div\n ref={elem => {\n this.heroClickthrough = elem;\n }}\n draggable={false}\n className={heroPlayerCTAClasses}\n onClick={e => {\n if (isInternalLink(button?.link)) {\n browserHistory.push(button?.link);\n } else {\n redirectToExternalUrl(button?.link);\n }\n if (slideDragged || !promoTypeIsShowcaseBurntIn) return;\n const link = promoTypeIsShowcaseBurntIn ? originalVideo.url : button?.link;\n e.target.href = link;\n if (!promoTypeIsShowcaseBurntIn) {\n router.push(link);\n button.onClick(e);\n } else {\n window.location = link;\n }\n\n e.stopPropagation();\n }}\n />\n {!promoTypeIsShowcaseBurntIn ? (\n <a\n href={button?.link}\n className={classNames([style.infoContainer, ...foxAwesomeContainerStyles])}\n >\n {!showKicker ? badgeTag : null}\n <div className={style.infoTagsRedesignContainer}>\n {ShowcaseRedesign && headline && isPromo ? (\n <div className={style.headline}>{headLineText}</div>\n ) : (\n showcaseTitleImage\n )}\n {showKicker ? kicker : null}\n <div className={style.description}>\n <span className={highlightClass} data-test=\"info-tags-highlight\">\n {highlightText}\n </span>\n {displayDescription && descriptionComponent}\n {progressBarComponent}\n <div className={style.detailContainer}>\n <span className={style.meta}>{meta}</span>\n </div>\n </div>\n {renderCTAs()}\n </div>\n </a>\n ) : null}\n </>\n );\n }\n}\n\nInfoTags.defaultProps = {\n account: null,\n breakpoint: null,\n callCollectionImpressionEvent: () => {},\n collectionInfo: {},\n idx: null,\n foxAwesomeLayout: false,\n headerImageState: null,\n isLive: false,\n isDescriptionOpen: false,\n location: {},\n onPrimaryButtonClick: () => {},\n onWatch: () => {},\n overridePlayButtonClick: () => {},\n overridePlayButtonLink: false,\n smallCollectionHeader: false,\n style: {},\n toggleVideoModal: () => {},\n toggleDescription: () => {},\n useSeriesLogo: false,\n};\n\nInfoTags.propTypes = {\n account: PropTypes.shape({}),\n breakpoint: PropTypes.string,\n callCollectionImpressionEvent: PropTypes.func,\n collectionInfo: PropTypes.shape({}),\n foxAwesomeLayout: PropTypes.bool,\n headerImageState: PropTypes.string,\n idx: PropTypes.number,\n isLive: PropTypes.bool,\n isDescriptionOpen: PropTypes.bool,\n item: PropTypes.shape({\n id: PropTypes.string,\n }).isRequired,\n location: PropTypes.shape({}),\n onPrimaryButtonClick: PropTypes.func,\n onTitleClick: PropTypes.func.isRequired,\n onWatch: PropTypes.func,\n overridePlayButtonClick: PropTypes.func,\n overridePlayButtonLink: PropTypes.bool,\n router: PropTypes.shape({}).isRequired,\n saveLiveRestart: PropTypes.func.isRequired,\n saveLiveVideo: PropTypes.func.isRequired,\n setSuggestedChannel: PropTypes.func.isRequired,\n smallCollectionHeader: PropTypes.bool,\n style: PropTypes.shape({}),\n toggleVideoModal: PropTypes.func,\n toggleDescription: PropTypes.func,\n useSeriesLogo: PropTypes.bool,\n};\n\nexport default withRouter(InfoTags);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport VideoHeader from 'components/VideoHeader';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport { COLLECTION_HERO_IMAGE, getDynamicImage } from 'helpers/ImageHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport Style from 'app/themes/styleguide/redesign/v2/HomeSlideHeader.module.scss';\nimport videoHeaderStyleV2 from './VideoHeader.v2.module.scss';\nimport singleVideoHeaderStyleV2 from './VideoHeaderSingle.v2.module.scss';\nimport InfoTags from './Components/InfoTags';\nimport SlideStyle from './HomeSlideHeader.module.scss';\n\n/**\n * HomeSlideHeader Component\n * @param {Object} panel - Panel object\n * @returns {Component} - React Component\n <HomeSlideHeader item={item} />\n */\nclass HomeSlideHeader extends Component {\n constructor(props) {\n super(props);\n this.state = {\n paused: false,\n isDescriptionOpen: false,\n headerImageState: null,\n };\n this.mainPostition = null;\n this.altPostition = null;\n\n this.toggleDescription = this.toggleDescription.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const { disableSingleVideoHeroRender, videoIsLive } = this.props;\n const { disableSingleVideoHeroRender: prevDisableSingleVideoHeroRender } = prevProps;\n if (\n disableSingleVideoHeroRender !== prevDisableSingleVideoHeroRender &&\n disableSingleVideoHeroRender\n ) {\n this.setState({\n headerImageState: videoIsLive ? 'live video' : 'autoplay video',\n });\n }\n }\n\n setHeaderImageState = state => {\n this.setState({ headerImageState: state });\n };\n\n toggleDescription(e) {\n e.stopPropagation();\n e.preventDefault();\n const { isDescriptionOpen } = this.state;\n this.setState({ isDescriptionOpen: !isDescriptionOpen });\n }\n\n renderHeaderComponent({ render, showHeaderBelowTags }) {\n const { foxAwesomeLayout, heroImage } = this.props;\n\n if (!render) return null;\n\n const testTag = showHeaderBelowTags\n ? 'first-collection-header-below-tags'\n : 'first-collection-header-above-tags';\n\n return (\n <div data-test={testTag}>\n {foxAwesomeLayout && this.renderSingleVideoHero()}\n {heroImage}\n </div>\n );\n }\n\n renderSingleVideoHero() {\n const {\n breakpoint,\n disableSingleVideoHeroRender,\n disableVideoRender,\n foxAwesomeLayout,\n idx,\n isHeroCarousel,\n item: {\n videoId,\n stillBackgroundImage,\n videoBackgroundImage,\n promoBackgroundImage,\n promoBackgroundVideo,\n watchLink,\n originalVideo,\n },\n onSelection,\n play,\n removeVideoHero,\n setVideoHero,\n } = this.props;\n const disableVideoForPromo = !!promoBackgroundImage;\n const dontRenderVideo = disableVideoRender || disableVideoForPromo;\n if (disableSingleVideoHeroRender) return null;\n const promoTypeIsShowcaseBurntIn = _.get(originalVideo, 'promoType') === 'showcaseBurntIn';\n const videoPlaceHolder = dontRenderVideo\n ? null\n : getDynamicImage({\n breakpoint,\n url: promoBackgroundVideo || videoBackgroundImage,\n context: COLLECTION_HERO_IMAGE,\n });\n return (\n <VideoHeader\n theme={videoHeaderStyleV2}\n foxAwesomeLayout={foxAwesomeLayout}\n id={videoId}\n idx={idx}\n image={getDynamicImage({\n breakpoint,\n url: disableVideoForPromo ? promoBackgroundImage : stillBackgroundImage,\n context: COLLECTION_HERO_IMAGE,\n })}\n isHeroCarousel={isHeroCarousel}\n onMount={setVideoHero}\n onTitleClick={onSelection}\n onUnmount={removeVideoHero}\n play={play}\n setHeaderImageState={this.setHeaderImageState}\n shadowOnPlayButton={false}\n themeSingleVideoHeader={singleVideoHeaderStyleV2}\n video={videoPlaceHolder}\n watchLink={watchLink}\n promoTypeIsShowcaseBurntIn={promoTypeIsShowcaseBurntIn}\n />\n );\n }\n\n render() {\n const {\n account,\n allowInfoToggle,\n breakpoint,\n callCollectionImpressionEvent,\n collectionInfo,\n foxAwesomeLayout,\n hasSingleSlide,\n idx,\n isLive,\n isHeroCarousel,\n item,\n onPrimaryButtonClick,\n onTitleClick,\n onWatch,\n overlay,\n overridePlayButtonClick,\n overridePlayButtonLink,\n router,\n saveLiveRestart,\n saveLiveVideo,\n setOverlay,\n setSuggestedChannel,\n showLiveButtons,\n smallCollectionHeader,\n title,\n useSeriesLogo,\n } = this.props;\n const { paused, isDescriptionOpen, headerImageState } = this.state;\n const infoTagProps = {\n account,\n allowInfoToggle,\n breakpoint,\n callCollectionImpressionEvent,\n collectionInfo,\n foxAwesomeLayout,\n headerImageState,\n idx,\n isLive,\n isDescriptionOpen,\n item,\n onPrimaryButtonClick,\n onTitleClick,\n onWatch,\n overlay,\n overridePlayButtonClick,\n overridePlayButtonLink,\n router,\n saveLiveRestart,\n saveLiveVideo,\n setOverlay,\n setSuggestedChannel,\n showLiveButtons,\n smallCollectionHeader,\n style: Style,\n useSeriesLogo,\n toggleDescription: this.toggleDescription,\n };\n const { id } = item;\n const slideId = `${id}_${idx}_slide`;\n const containerClasses = classNames([\n foxAwesomeLayout ? Style.fowAwesomeContainer : Style.container,\n paused ? Style.paused : Style.playing,\n SlideStyle.pageMaxWidth,\n hasSingleSlide ? Style.singleSlide : null,\n isHeroCarousel ? [Style.carouselStyle, SlideStyle.carouselMaxWidth] : null,\n SlideStyle.showSlide,\n ]);\n const showHeaderBelowTags = foxAwesomeLayout && smallCollectionHeader;\n return (\n <div className={containerClasses} data-name={title} id={slideId}>\n {this.renderHeaderComponent({ render: !showHeaderBelowTags, showHeaderBelowTags })}\n <InfoTags {...infoTagProps} />\n {this.renderHeaderComponent({ render: showHeaderBelowTags, showHeaderBelowTags })}\n </div>\n );\n }\n}\n\nHomeSlideHeader.propTypes = {\n account: PropTypes.shape({}),\n allowInfoToggle: PropTypes.bool,\n breakpoint: PropTypes.string,\n collectionInfo: PropTypes.shape({}),\n coordinates: PropTypes.shape({}),\n disableSingleVideoHeroRender: PropTypes.bool,\n disableVideoRender: PropTypes.bool,\n foxAwesomeLayout: PropTypes.bool,\n hasSingleSlide: PropTypes.bool,\n idx: PropTypes.number,\n isHeroCarousel: PropTypes.bool,\n isLive: PropTypes.bool,\n setCoordinates: PropTypes.func,\n item: PropTypes.shape({\n id: PropTypes.string,\n }).isRequired,\n onPrimaryButtonClick: PropTypes.func,\n onSelection: PropTypes.func,\n onTitleClick: PropTypes.func.isRequired,\n onWatch: PropTypes.func,\n overlay: PropTypes.string,\n overridePlayButtonClick: PropTypes.func,\n overridePlayButtonLink: PropTypes.bool,\n play: PropTypes.bool,\n removeVideoHero: PropTypes.func,\n heroImage: PropTypes.shape({}),\n router: PropTypes.shape({}).isRequired,\n saveLiveRestart: PropTypes.func.isRequired,\n saveLiveVideo: PropTypes.func,\n setOverlay: PropTypes.func,\n setSuggestedChannel: PropTypes.func.isRequired,\n setVideoHero: PropTypes.func,\n showLiveButtons: PropTypes.bool,\n smallCollectionHeader: PropTypes.bool,\n title: PropTypes.string,\n toggleVideoModal: PropTypes.func,\n useSeriesLogo: PropTypes.bool,\n callCollectionImpressionEvent: PropTypes.func,\n videoIsLive: PropTypes.bool.isRequired,\n};\n\nHomeSlideHeader.defaultProps = {\n account: null,\n allowInfoToggle: false,\n breakpoint: null,\n callCollectionImpressionEvent: noop,\n collectionInfo: {},\n coordinates: null,\n disableSingleVideoHeroRender: null,\n disableVideoRender: null,\n foxAwesomeLayout: false,\n hasSingleSlide: false,\n heroImage: null,\n idx: null,\n isHeroCarousel: false,\n isLive: false,\n onPrimaryButtonClick: noop,\n onSelection: noop,\n onWatch: noop,\n overlay: null,\n overridePlayButtonClick: () => {},\n overridePlayButtonLink: false,\n play: false,\n removeVideoHero: noop,\n saveLiveVideo: noop,\n setCoordinates: noop,\n setOverlay: noop,\n setVideoHero: noop,\n showLiveButtons: true,\n smallCollectionHeader: false,\n title: '',\n toggleVideoModal: noop,\n useSeriesLogo: false,\n};\n\nexport default HomeSlideHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport _ from 'lodash';\nimport { formatDirectUrl, getUrlTarget } from 'helpers/ContentHelper';\nimport Style from './HomeSlidePromo.module.scss';\n\n/**\n * HomeSlidePromo Component\n * @param {Object} panel - Panel object\n * @returns {Component} - React Component\n <HomeSlidePromo item={item} />\n */\nconst HomeSlidePromo = (props = {}) => {\n const {\n id,\n headline,\n headlineInside,\n altHeadline,\n description,\n subDescription,\n network,\n networkLogoUrl,\n url,\n buttonText,\n } = props;\n const uId = _.uniqueId(id);\n const formattedUrl = formatDirectUrl(url);\n const { target, rel } = getUrlTarget(formattedUrl);\n const button =\n buttonText && formattedUrl ? (\n <Link to={formattedUrl} target={target} rel={rel} className={Style.showButton}>\n {buttonText}\n </Link>\n ) : null;\n const headlineComp = headline && <h2 className={Style.headline}>{headline}</h2>;\n const descriptionComp = description && (\n <div className={Style.description}>\n {description}\n <img className={Style.networkLogo} src={networkLogoUrl} alt={network} />\n </div>\n );\n return (\n <div className={Style.container} id={`${uId}_slide`}>\n <div className={Style.header}>\n {!headlineInside && headlineComp}\n <div className={Style.infoContainer}>\n <div className={Style.altHeadline}>{altHeadline}</div>\n {headlineInside && headlineComp}\n {descriptionComp}\n <div className={Style.meta}>{subDescription}</div>\n <div className={Style.buttons}>{button}</div>\n </div>\n </div>\n </div>\n );\n};\n\nHomeSlidePromo.defaultProps = {\n headlineInside: false,\n description: null,\n subDescription: null,\n network: null,\n networkLogoUrl: null,\n};\n\nHomeSlidePromo.propTypes = {\n id: PropTypes.string.isRequired,\n headline: PropTypes.string.isRequired,\n altHeadline: PropTypes.string.isRequired,\n description: PropTypes.string,\n subDescription: PropTypes.string,\n network: PropTypes.string,\n networkLogoUrl: PropTypes.string,\n url: PropTypes.string.isRequired,\n buttonText: PropTypes.string.isRequired,\n headlineInside: PropTypes.bool,\n};\n\nexport default HomeSlidePromo;\n","/* eslint-disable prefer-promise-reject-errors */\nimport _ from 'lodash';\n\nconst ERROR_BLACKOUT = 'BLACKOUT_ERROR';\nexport const isBlackoutError = error => _.get(error, 'internalErrorCode') === ERROR_BLACKOUT;\n\nexport const isDmaMatch = (dmas = [], metroCodes = []) => {\n const allAreas = dmas.includes(999);\n const areaMatch = metroCodes.some(metroCode => dmas.includes(metroCode));\n return allAreas || areaMatch || false;\n};\n\nexport const isTypeMatch = (types = [], isLiveContent) => {\n const lowercaseTypes = _.map(types, type => _.toLower(type));\n const isLive = lowercaseTypes.includes('live') && isLiveContent;\n const isVod = lowercaseTypes.includes('vod') && isLiveContent === false;\n return isVod || isLive || false;\n};\n\nexport const isChannelMatch = (channels = [], network) => {\n const lowercaseChannels = _.map(channels, channel => _.toLower(channel));\n const allChannels = lowercaseChannels.includes('*');\n const hasNetwork = lowercaseChannels.includes(_.toLower(network));\n return allChannels || hasNetwork || false;\n};\n\nexport const getBlackoutZones = (opts = {}) => {\n const { cableProviderBlackoutZones = [], metroCodes = [], isLiveContent, network } = opts;\n return cableProviderBlackoutZones.filter((zone = {}) => {\n const { dma, types, channels } = zone;\n // If the \"dma\" array contains a single value, apply the rule to that single DMA.\n // If the value is 999, apply the rule to all DMAs.\n // If the \"dma\" array contains multuple entries, selectively apply the rule to each DMA.\n // For backwards compatibility with 1.0, the client must type check for int first.\n let dmaMatches;\n if (_.isInteger(dma)) {\n // v1.0 handling\n dmaMatches = dma === 999 || metroCodes.includes(dma);\n } else if (_.isArray(dma)) {\n // v1.1 handling\n dmaMatches = isDmaMatch(dma, metroCodes);\n }\n const typeMatches = isTypeMatch(types, isLiveContent);\n const channelMatches = isChannelMatch(channels, network);\n\n if (dmaMatches && typeMatches && channelMatches) return true;\n return false;\n });\n};\n\nexport async function getContentBlackout(opts = {}) {\n return new Promise(async (resolve, reject) => {\n const {\n blackoutConfig,\n blackoutDefinitions,\n cableProviderId,\n contentRequiresAuth,\n dma,\n deviceId,\n getDesignatedMarketingAreaData,\n isLive: isLiveContent,\n network,\n zipCode,\n } = opts;\n const lowercaseCableProviderId = _.toLower(cableProviderId);\n const enabled = _.get(blackoutConfig, 'enabled');\n const providerBlackoutDefinition = _.get(blackoutDefinitions, lowercaseCableProviderId);\n const noBlackout = !enabled || !providerBlackoutDefinition || !zipCode || !contentRequiresAuth;\n\n if (noBlackout) return resolve();\n\n const cableProviderBlackoutZones = _.get(providerBlackoutDefinition, 'zones');\n let designatedMarketingAreaData;\n\n try {\n designatedMarketingAreaData = await getDesignatedMarketingAreaData({ deviceId, zipCode });\n } catch (e) {\n console.error('DMA Fetch Failed', e);\n resolve();\n }\n\n const metroCodes = _.map(designatedMarketingAreaData, item =>\n _.toInteger(_.get(item, 'metroCode')),\n );\n if (dma) metroCodes.push(_.toInteger(dma));\n const blackoutZonesOptions = {\n cableProviderBlackoutZones,\n metroCodes,\n isLiveContent,\n network,\n };\n const blackoutZones = getBlackoutZones(blackoutZonesOptions);\n const isBlackout = blackoutZones && blackoutZones.length > 0;\n\n if (isBlackout) {\n return reject({\n internalErrorCode: ERROR_BLACKOUT,\n contentBlackoutLanguageOverrides: {\n message: _.get(providerBlackoutDefinition, 'message'),\n title: _.get(providerBlackoutDefinition, 'title'),\n },\n });\n }\n\n return resolve();\n });\n}\n","/* global FNGPlayer */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport scriptjs from 'scriptjs';\nimport _ from 'lodash';\nimport { isTypeVideo, getOomLivePlayerEnabled, getUrlParameter } from 'helpers/ContentHelper';\nimport { isEpgv2Enabled } from 'helpers/ConfigHelper';\nimport Style from './VideoPlayer.module.scss';\n\nconst LIVE = 'live';\n\nexport default class VideoPlayer extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n player: null,\n };\n this.load = true;\n this.loadPlayer = this.loadPlayer.bind(this);\n }\n\n componentDidMount() {\n const { requiresAuth, requiresAuthLive, token, mode, requestSignIn, releaseURL } = this.props;\n const vodRequiresAuth = mode !== LIVE && requiresAuth;\n const liveRequiresAuth = mode === LIVE && requiresAuthLive;\n const gated = vodRequiresAuth || liveRequiresAuth || !releaseURL;\n\n if (!requestSignIn && ((gated && token) || !gated)) {\n const defaultOptions = this.getDefaultOptions(this.props);\n this.loadPlayer(defaultOptions);\n }\n }\n\n shouldComponentUpdate(nextProps) {\n const {\n errors,\n releaseURL,\n videoId,\n mode,\n token,\n playerReference,\n profileId,\n removeEventListeners,\n requestSignIn,\n showResumeCTA,\n isFullscreen,\n playerType,\n } = this.props;\n\n const {\n errors: nextErrors,\n releaseURL: nextReleaseURL,\n videoId: nextVideoId,\n mode: nextMode,\n token: nextToken,\n requiresAuth: requiresAuthNext,\n requiresAuthLive: requiresAuthLiveNext,\n profileId: nextProfileId,\n requestSignIn: nextRequestSignIn,\n showResumeCTA: nextShowResumeCTA,\n isFullscreen: nextIsFullscreen,\n playerType: nextPlayerType,\n } = nextProps;\n\n const { player: playerState } = this.state;\n const player = playerState && window.player && window.player[playerReference];\n const errorOccurred = player?.errorOccurred;\n\n if (errorOccurred) removeEventListeners();\n\n const vodRequiresAuth = nextMode !== LIVE && requiresAuthNext;\n const liveRequiresAuth = nextMode === LIVE && requiresAuthLiveNext;\n const gated = vodRequiresAuth || liveRequiresAuth;\n const needsAuth = !nextReleaseURL || errorOccurred;\n const defaultOptions = this.getDefaultOptions(nextProps);\n\n if (needsAuth || nextRequestSignIn || nextShowResumeCTA) {\n this.unloadPlayer();\n } else if (!nextRequestSignIn && requestSignIn) {\n this.loadPlayer(defaultOptions);\n } else if (!nextShowResumeCTA && showResumeCTA) {\n this.loadPlayer(defaultOptions);\n } else if (token !== nextToken) {\n // eslint-disable-next-line no-unused-expressions\n player ? this.loadNextVideo(defaultOptions) : this.loadPlayer(defaultOptions);\n } else if (mode !== nextMode) {\n this.unloadPlayer();\n this.loadPlayer(defaultOptions);\n } else if (nextReleaseURL && nextReleaseURL !== releaseURL) {\n // eslint-disable-next-line no-unused-expressions\n player ? this.loadNextVideo(defaultOptions) : this.loadPlayer(defaultOptions);\n } else if (nextVideoId && nextVideoId !== videoId && mode !== LIVE && !gated) {\n const options = { ...defaultOptions, url: undefined };\n // eslint-disable-next-line no-unused-expressions\n player ? this.loadNextVideo(options) : this.loadPlayer(options);\n } else if (nextProfileId && nextProfileId !== profileId) {\n const options = { ...defaultOptions, url: undefined, id: undefined };\n player.setAuth(this.formatAuth(options));\n } else if (!nextErrors && errors) {\n this.loadPlayer(defaultOptions);\n }\n if (isFullscreen !== nextIsFullscreen) return true;\n if (playerType !== nextPlayerType) return true;\n return false;\n }\n\n componentWillUnmount() {\n const { player } = this.state;\n if (player) this.unloadPlayer();\n this.load = false;\n }\n\n getDefaultOptions = passedProps => {\n const { hbaStatus, geolocation, mode, type } = this.props;\n const {\n releaseURL,\n videoId,\n liveContentId,\n token,\n profileAnonymous,\n profileId,\n profileToken,\n mvpdId,\n playerLoadingImage,\n playerConfig,\n } = passedProps;\n const { percentWatched, mediaInfo, continuous } = playerConfig;\n const zipcode = _.get(playerConfig, 'params.zipcode', null);\n const authorizingNetwork = _.get(playerConfig, 'authorizingNetwork');\n const networkEntitlementList = _.get(playerConfig, 'networkEntitlementList');\n return {\n authorizingNetwork,\n background: playerLoadingImage,\n continuous,\n geolocation,\n hbaStatus,\n id: videoId,\n liveContentId,\n mediaInfo,\n mode,\n mvpdId,\n networkEntitlementList,\n params: playerConfig?.params,\n percentWatched,\n profileAnonymous,\n profileId,\n profileToken,\n token,\n type,\n url: releaseURL,\n zipcode,\n };\n };\n\n unloadPlayer = () => {\n const { playerReference, portalRef } = this.props;\n const { player } = this.state;\n if (player && player.remove && !portalRef) {\n player.remove();\n _.set(window, 'utag_data.collection_title', null);\n }\n if (window.player) window.player[playerReference] = null;\n };\n\n formatAuth = props => {\n const {\n geolocation,\n hbaStatus,\n jwt,\n token,\n profileAnonymous,\n profileId,\n profileToken,\n mvpdId,\n authorizingNetwork,\n networkEntitlementList,\n lastAnonymousProfileId,\n lastKnownProfileId,\n } = props;\n const auth = {};\n if (token) auth.authToken = token;\n if (jwt) auth['x-d2c-jwt'] = jwt;\n if (!_.isNil(hbaStatus)) auth.hbaStatus = hbaStatus;\n if (mvpdId) auth.mvpdId = mvpdId;\n\n if (profileId) {\n auth.profile = {\n profileAnonymous,\n profileId,\n accessToken: profileToken,\n lastKnownProfileId,\n lastAnonymousProfileId,\n };\n }\n if (authorizingNetwork) auth.authorizingNetwork = authorizingNetwork;\n if (networkEntitlementList) auth.networkEntitlementList = networkEntitlementList;\n if (geolocation) {\n auth.geo = {\n geoLatitude: geolocation.latitude,\n geoLongitude: geolocation.longitude,\n };\n }\n\n return auth;\n };\n\n loadNextVideo = params => {\n const { playerReference } = this.props;\n const {\n abTest,\n background,\n continuous,\n id,\n liveContentId,\n mediaInfo,\n percentWatched,\n mode,\n url,\n zipcode,\n } = params;\n\n const videoId = mode === LIVE ? liveContentId : id;\n const player = _.get(window, `player.${playerReference}`, {});\n if (_.get(player, 'options')) delete window.player[playerReference].options.releaseURL;\n if (player.setConfig)\n player.setConfig({\n image: background,\n percentWatched,\n videoID: videoId,\n params: { abTest, zipcode },\n mediaInfo,\n continuous,\n });\n if (player.setAuth) player.setAuth(this.formatAuth(params));\n\n if (url) {\n player.playRelease(url);\n } else if (videoId) {\n player.playRelease(videoId);\n }\n };\n\n loadPlayer = opts => {\n const {\n hbaStatus,\n url,\n id,\n jwt,\n token: newToken,\n params,\n profileId,\n profileToken,\n scrubbingEnabled,\n liveContentId,\n percentWatched,\n mediaInfo,\n } = opts;\n const {\n playerJs,\n releaseURL,\n videoId,\n type,\n playerConfig,\n loadPlayerCb,\n geolocation,\n profileAnonymous: defaultProfileAnonymous,\n profileId: defaultProfileId,\n profileToken: defaultProfileToken,\n scrubbingEnabled: defaultScrubbingEnabled,\n mvpdId: mvpdData,\n token,\n playerLoadingImage: background,\n tveEnabled,\n mode,\n lastAnonymousProfileId,\n lastKnownProfileId,\n playerReference,\n hbaStatus: defaultHbaStatus,\n } = this.props;\n const requiredMvpdAuth = _.get(mediaInfo, 'requiresMVPDAuth', true);\n const mvpdId = requiredMvpdAuth || mvpdData;\n\n const playerConfigOverrides = {};\n if (typeof percentWatched !== 'undefined')\n playerConfigOverrides.percentWatched = percentWatched;\n if (params) playerConfigOverrides.params = params;\n\n const loadURL = url || releaseURL;\n const loadId = id || videoId;\n const loadJwt = jwt;\n const loadToken = newToken || token;\n const newProfileAnonymous = _.get(opts, 'profileAnonymous', defaultProfileAnonymous);\n const newProfileId = profileId || defaultProfileId;\n const newProfileToken = profileToken || defaultProfileToken;\n const newScrubbingEnabled = scrubbingEnabled || defaultScrubbingEnabled;\n const newHbaStatus = hbaStatus || defaultHbaStatus;\n const { authorizingNetwork } = playerConfig;\n const { networkEntitlementList } = playerConfig;\n\n if ((loadURL || loadId) && playerJs) {\n const configProps = {\n type,\n releaseURL: loadURL,\n videoId: loadId,\n liveContentId,\n jwt: loadJwt,\n token: loadToken,\n profileAnonymous: newProfileAnonymous,\n profileId: newProfileId,\n profileToken: newProfileToken,\n restartId: videoId,\n scrubbing: newScrubbingEnabled,\n mvpdId,\n background,\n authorizingNetwork,\n networkEntitlementList,\n tveEnabled,\n mode,\n geolocation,\n lastAnonymousProfileId,\n lastKnownProfileId,\n hbaStatus: newHbaStatus,\n };\n const overrides = {\n ...playerConfig,\n ...playerConfigOverrides,\n };\n\n const config = {\n ...this.getConfig(configProps),\n ...overrides,\n };\n\n // Downloading player JS\n scriptjs(playerJs, 'player');\n\n scriptjs.ready('player', () => {\n if (!this.load) return;\n const player = FNGPlayer.default;\n player.configPlayer(() => {\n player.load(config, player => {\n if (!window.player) window.player = {};\n window.player[playerReference] = player;\n this.setState({ player }, () => {\n if (loadPlayerCb) loadPlayerCb(player);\n });\n });\n });\n });\n }\n };\n\n getConfig = params => {\n const {\n background,\n liveContentId,\n mode,\n releaseURL,\n restartId,\n tveEnabled,\n type,\n videoId,\n } = params;\n\n const { panelVideo } = this.props;\n const { epgListingId } = panelVideo;\n const panelVideoType = _.get(panelVideo, '@type');\n\n let streamId = mode === 'restart' ? restartId : videoId;\n let streamType = mode === 'restart' ? 'liveRestart' : mode;\n\n if (epgListingId && isTypeVideo(panelVideoType)) {\n streamId = epgListingId;\n streamType = 'liveRestart';\n }\n\n if (getOomLivePlayerEnabled() && getUrlParameter('id')) {\n streamId = getUrlParameter('id');\n }\n\n const auth = this.formatAuth(params);\n const config = {\n id: this.getPlayerId(),\n width: '100%',\n height: '100%',\n auth,\n image: background,\n releaseURL,\n tveEnabled,\n watch: {\n streamId,\n streamType,\n },\n };\n\n if (mode === LIVE) {\n config.videoID = liveContentId;\n } else {\n config.videoID = videoId;\n }\n config.mode = mode;\n config.type = type;\n return config;\n };\n\n getPlayerId = () => {\n const { playerReference } = this.props;\n return `video-player-${playerReference}`;\n };\n\n render() {\n const { isFullscreen, playerType } = this.props;\n const classes = classNames(\n Style.container,\n isFullscreen ? Style.fullscreen : '',\n playerType !== 'standard' ? Style.heroContainer : '',\n isEpgv2Enabled() ? Style.resizablePlayer : null,\n );\n const playerId = this.getPlayerId();\n return (\n <div className={classes} key={playerId}>\n <div className={classNames(Style.videoContainer, Style[playerType])}>\n <div id={playerId} />\n </div>\n </div>\n );\n }\n}\n\nVideoPlayer.defaultProps = {\n geolocation: {},\n hbaStatus: null,\n isFullscreen: null,\n lastAnonymousProfileId: null,\n lastKnownProfileId: null,\n loadPlayerCb: () => {},\n mediaInfo: {},\n mode: null,\n mvpdId: null,\n playerConfig: {},\n playerLoadingImage: null,\n playerType: '',\n portalRef: '',\n profileAnonymous: null,\n profileId: null,\n profileToken: null,\n releaseURL: null,\n requestSignIn: null,\n requiresAuth: null,\n requiresAuthLive: null,\n scrubbingEnabled: null,\n showResumeCTA: null,\n token: null,\n tveEnabled: null,\n type: null,\n videoId: null,\n};\n\nVideoPlayer.propTypes = {\n errors: PropTypes.shape({}),\n geolocation: PropTypes.shape({}),\n hbaStatus: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n lastAnonymousProfileId: PropTypes.string,\n lastKnownProfileId: PropTypes.string,\n loadPlayerCb: PropTypes.func,\n mediaInfo: PropTypes.shape({}),\n mode: PropTypes.string,\n mvpdId: PropTypes.string,\n panelVideo: PropTypes.shape({}),\n playerConfig: PropTypes.shape({}),\n playerJs: PropTypes.string,\n playerLoadingImage: PropTypes.string,\n playerReference: PropTypes.string,\n playerType: PropTypes.string,\n portalRef: PropTypes.string,\n profileAnonymous: PropTypes.bool,\n profileId: PropTypes.string,\n profileToken: PropTypes.string,\n releaseURL: PropTypes.string,\n removeEventListeners: PropTypes.func,\n requestSignIn: PropTypes.bool,\n requiresAuth: PropTypes.bool,\n requiresAuthLive: PropTypes.bool,\n scrubbingEnabled: PropTypes.bool,\n showResumeCTA: PropTypes.bool,\n token: PropTypes.string,\n tveEnabled: PropTypes.bool,\n type: PropTypes.string,\n videoId: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport theme from '../OverlayTheme.css';\n\nconst AdBlock = (props = {}) => {\n const { background } = props;\n return (\n <div className={theme.container}>\n <img className={theme.background} src={background} alt=\"\" />\n <div className={theme.messageContainer}>\n <div className={theme.title}>Playback Error Message</div>\n <div className={theme.message}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt\n ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.\n </div>\n </div>\n </div>\n );\n};\n\nAdBlock.defaultProps = {\n background: '',\n};\n\nAdBlock.propTypes = {\n background: PropTypes.string,\n};\n\nexport default AdBlock;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport sharedTheme from '../OverlayTheme.css';\nimport theme from './theme.css';\n\nconst AreYouWatching = (props = {}) => {\n const { background, onClose } = props;\n return (\n <div className={sharedTheme.container}>\n <img className={sharedTheme.background} src={background} alt=\"\" />\n <div className={sharedTheme.messageContainer}>\n <div className={classNames(theme.title, sharedTheme.title)}>Are You Still Watching?</div>\n <div className={classNames(theme.message, sharedTheme.message)}>\n <Link className={theme.button} onClick={onClose}>\n Yes, continue watching\n </Link>\n </div>\n </div>\n </div>\n );\n};\n\nAreYouWatching.propTypes = {\n background: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default AreYouWatching;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport sharedTheme from '../OverlayTheme.css';\nimport theme from './theme.css';\n\nconst ContentBlackout = (props = {}) => {\n const { background, title, message } = props;\n const titleClasses = classNames(theme.title, sharedTheme.title);\n const messageClasses = classNames(theme.message, sharedTheme.message);\n\n return (\n <div className={sharedTheme.container}>\n <img className={sharedTheme.background} src={background} alt=\"\" />\n <div className={sharedTheme.messageContainer}>\n <div className={titleClasses}>{title}</div>\n <div className={messageClasses}>{message}</div>\n </div>\n </div>\n );\n};\n\nContentBlackout.propTypes = {\n background: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n message: PropTypes.string.isRequired,\n};\n\nexport default ContentBlackout;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport CountdownText from 'components/CountdownText';\nimport classNames from 'classnames';\n\nimport Style from './Countdown.module.scss';\n\nconst Countdown = ({ background, timeLeft, onCountdownEnd, isMiniPlayerActive }) => {\n const { countdown_title_text: countdownTitleText } = window.Language;\n return (\n <div\n className={classNames([Style.container, isMiniPlayerActive ? Style.miniPlayerActive : null])}\n >\n <img className={Style.background} src={background} alt=\"\" />\n <div className={Style.messageContainer}>\n <h3>{countdownTitleText}</h3>\n <h4>\n <CountdownText duration={timeLeft} onCountdownEnd={onCountdownEnd} isVideoContainer />\n </h4>\n </div>\n </div>\n );\n};\n\nCountdown.propTypes = {\n background: PropTypes.string,\n isMiniPlayerActive: PropTypes.bool,\n onCountdownEnd: PropTypes.func,\n timeLeft: PropTypes.number,\n};\n\nCountdown.defaultProps = {\n background: '',\n isMiniPlayerActive: false,\n timeLeft: '',\n onCountdownEnd: noop,\n};\n\nexport default Countdown;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport sharedTheme from '../OverlayTheme.css';\nimport theme from './theme.css';\n\nconst ExpiredVod = (props = {}) => {\n const { background, title, message } = props;\n const titleClasses = classNames(theme.title, sharedTheme.title);\n const messageClasses = classNames(theme.message, sharedTheme.message);\n\n return (\n <div className={sharedTheme.container}>\n <img className={sharedTheme.background} src={background} alt=\"\" />\n <div className={sharedTheme.messageContainer}>\n <div className={titleClasses}>{title}</div>\n <div className={messageClasses}>{message}</div>\n </div>\n </div>\n );\n};\n\nExpiredVod.propTypes = {\n background: PropTypes.string,\n title: PropTypes.string.isRequired,\n message: PropTypes.string.isRequired,\n};\n\nExpiredVod.defaultProps = {\n background: '',\n};\n\nexport default ExpiredVod;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { helperGetStaticContentUrl } from 'helpers/RouteHelper';\nimport sharedTheme from '../OverlayTheme.css';\nimport theme from './theme.css';\n\nconst RetryError = (props = {}) => {\n const { onRetryClick, background, statusCode, enabled } = props;\n const {\n error_failureRetryMessage: retryMessage,\n error_failureRetryTitle: retryTitle,\n } = window.Language;\n const retryIcon = helperGetStaticContentUrl('images/svg', 'icon_retry.svg');\n\n if (!enabled) return null;\n\n return (\n <div className={sharedTheme.container}>\n <img\n className={classNames([sharedTheme.background, theme.imageBackground])}\n src={background}\n alt=\"\"\n />\n <div className={sharedTheme.messageContainer}>\n <div className={classNames(theme.retryTitle, sharedTheme.title)}>{retryTitle}</div>\n <div className={classNames(theme.retryMessage, sharedTheme.title)}>{retryMessage}</div>\n <div className={classNames(theme.retryButton, sharedTheme.message)}>\n <a className={theme.button} onClick={onRetryClick}>\n <img className={theme.retryIcon} src={retryIcon} alt=\"retry icon\" /> Retry\n </a>\n </div>\n <div className={classNames(theme.retryCode, sharedTheme.title)}>\n ERROR CODE {statusCode}\n </div>\n </div>\n </div>\n );\n};\n\nRetryError.propTypes = {\n background: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onRetryClick: PropTypes.func.isRequired,\n statusCode: PropTypes.number.isRequired,\n};\n\nexport default RetryError;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport {\n FORMAT_MINUTES_SECONDS,\n now,\n format,\n msToDate,\n differenceInMilliseconds,\n} from 'helpers/DateTimeHelper';\nimport style from './VideoContainer.module.scss';\n\nconst INTERVAL_MS = 1000;\nclass Timer extends Component {\n constructor(props) {\n super(props);\n const { unixEndTime } = this.props;\n const time = differenceInMilliseconds(msToDate(unixEndTime), now());\n\n this.state = { time };\n this.interval = null;\n }\n\n componentDidMount() {\n this.interval = setInterval(() => {\n this.checkTime();\n }, INTERVAL_MS);\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const { unixEndTime: nextUnixEndTime } = nextProps;\n const { time: nextTime } = nextState;\n const { time } = this.state;\n const { unixEndTime } = this.props;\n return unixEndTime !== nextUnixEndTime || nextTime !== time;\n }\n\n componentWillUnmount() {\n if (this.interval) {\n this.checkTime();\n }\n this.clearInterval();\n }\n\n checkTime = () => {\n const { unixEndTime, expirationCallback } = this.props;\n const time = differenceInMilliseconds(msToDate(unixEndTime), now());\n if (time <= 0) {\n this.clearInterval();\n expirationCallback();\n }\n this.setState({ time });\n };\n\n clearInterval = () => {\n clearInterval(this.interval);\n this.interval = null;\n };\n\n render() {\n const { time } = this.state;\n const { isMiniPlayerActive } = this.props;\n if (time <= 0) {\n return null;\n }\n const readableTime = format(msToDate(time), FORMAT_MINUTES_SECONDS);\n return (\n <span\n className={classNames(\n style.previewPassCountdown,\n isMiniPlayerActive && style.miniPlayerActive,\n )}\n >\n {readableTime}\n </span>\n );\n }\n}\n\nTimer.propTypes = {\n unixEndTime: PropTypes.number.isRequired,\n expirationCallback: PropTypes.func.isRequired,\n isMiniPlayerActive: PropTypes.bool,\n};\n\nexport default Timer;\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { now, msToDate, differenceInMilliseconds } from 'helpers/DateTimeHelper';\n\nconst INTERVAL_MS = 1000;\nconst MVPDTimer = ({ unixEndTime, expirationCallback }) => {\n useEffect(() => {\n const checkTime = () => {\n const time = differenceInMilliseconds(msToDate(unixEndTime), now());\n if (time <= 0) {\n expirationCallback({ type: 'MVPD' });\n clearInterval(interval);\n }\n };\n const interval = setInterval(() => {\n checkTime();\n }, INTERVAL_MS);\n return () => clearInterval(interval);\n }, [unixEndTime, expirationCallback]);\n\n return null;\n};\n\nexport default MVPDTimer;\n\nMVPDTimer.defaultProps = {\n unixEndTime: null,\n expirationCallback: () => {},\n};\n\nMVPDTimer.propTypes = {\n unixEndTime: PropTypes.number,\n expirationCallback: PropTypes.func,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { Link as ScrollLink } from 'react-scroll';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport { noop } from 'helpers/GlobalHelper';\nimport { getCookie } from 'helpers/Storage';\nimport { getContentBlackout, isBlackoutError } from 'helpers/auth.blackout';\nimport { getLocationCookies, getSpoofedLocationCookies } from 'helpers/GeoLocationHelper';\nimport VideoPlayer from 'components/VideoPlayer';\nimport { getBaseContentUrl } from 'helpers/ApiHelper';\nimport {\n getDesignatedMarketingAreaData,\n getPreviewPassLengthFromName,\n getPreviewPassTime,\n getMVPDExpireTime,\n previewPassLogout,\n authMVPDLogout,\n PREVIEW_PASS_60,\n setPreviewPassExpired,\n} from 'helpers/AuthHelper';\nimport { isEpgv2Enabled, previewPassEnabled, tveEnabled } from 'helpers/ConfigHelper';\nimport { helperGetStaticContentUrl } from 'helpers/RouteHelper';\nimport { LIVE_PLAYER_BACKGROUND_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport {\n getChannelBackgroundUrl,\n getContentPosition,\n getDuration,\n getPlayerJs,\n getPlayerState,\n isPreviewPass,\n LIVE,\n PLAYER_REFERENCE_DEFAULT,\n PLAYER_STATES,\n playerHideControls,\n playerPause,\n playerPlay,\n playerRemove,\n} from 'helpers/PlayerHelper';\nimport Loader from 'components/Loader';\nimport {\n Events,\n getPreviewPassAnalyticsEvents,\n getSegmentLastAnonymousProfileId,\n getSegmentLastKnownProfileId,\n getSegmentMVPDEvents,\n getSegmentOptimizelyString,\n getTealiumPlayerEvents,\n handleAnalytics,\n sortEntitlements,\n TrackEvents as GeneralTrackEvents,\n} from '@foxcorp/delta-web-analytics';\nimport {\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_WEB_LARGE,\n} from 'helpers/BreakpointHelper';\nimport {\n FOX_WEATHER_NETWORK,\n getAdDebug,\n getAdSiteSection,\n getMVPDCookie,\n getMVPDFromCookie,\n getPrivacyParameterCookie,\n getRequiresAuth,\n LOCAL_CLIP_PAGE_COOKIE_NAME,\n} from 'helpers/ContentHelper';\nimport { differenceInSeconds, msToDate, now } from 'helpers/DateTimeHelper';\nimport {\n getOptimizelyPlayerExperiments,\n getOptimizelyPreviewPassExperiments,\n getOptimizelyRedesignExperiments,\n} from 'helpers/OptimizelyHelper';\nimport { determineBrowser } from 'components/Header/HeaderHelpers';\nimport {\n AdBlock,\n AreYouWatching,\n ContentBlackout,\n Countdown,\n ExpiredVod,\n RetryError,\n} from './Overlays';\nimport Timer from './Timer';\nimport MVPDTimer from './MVPDTimer';\nimport { getChannelId } from './VideoContainerHelper';\n\n// TODO remove after confirmation of new experiment is valid for CPEWEB-3226\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n showLoader: true,\n prerollBreakpointName: 'ads_sitesection_override_desktop',\n },\n [SITE_PLATFORM_WEB]: {\n showLoader: true,\n prerollBreakpointName: 'ads_sitesection_override_desktop',\n },\n [SITE_PLATFORM_TABLET]: {\n showLoader: false,\n prerollBreakpointName: 'ads_sitesection_override_tablet',\n },\n [SITE_PLATFORM_MOBILE]: {\n showLoader: false,\n prerollBreakpointName: 'ads_sitesection_override_mobile',\n },\n};\n\nclass VideoContainer extends Component {\n constructor(props) {\n super(props);\n const { background, isVodUnavailable } = props;\n\n this.state = {\n activeVideo: null,\n adSiteSection: getAdSiteSection(),\n checkedContentBlackout: false,\n hbaStatus: null,\n isPlayerLoaded: false,\n mvpdExpired: false,\n percentWatched: 0,\n playerLoadingImage: background,\n playerState: null,\n previewPassExpired: false,\n previewPassSignIn: false,\n showCountdown: false,\n showContentBlackout: false,\n showCookiesBlocked: false,\n showExpiredVOD: isVodUnavailable,\n showProviders: false,\n showSearchProviders: false,\n showSignIn: true,\n spoofedGeolation: null,\n token: null,\n };\n this.previewPassLogout = previewPassLogout.bind(this);\n this.authMVPDLogout = authMVPDLogout.bind(this);\n window.aeErrorHandling = this.accessEnablerAdvancedErrorHandler;\n }\n\n componentDidMount() {\n const spoofedGeolation = getSpoofedLocationCookies();\n\n this.setState({ spoofedGeolation });\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { countdownVideo, isVodUnavailable, videoId, playerReference } = this.props;\n const {\n background,\n isVodUnavailable: nextisVodUnavailable,\n videoId: nextVideoId,\n countdownVideo: nextCountdownVideo,\n } = nextProps;\n\n const nextState = {};\n\n if (nextVideoId && nextVideoId !== videoId) {\n nextState.playerLoadingImage = background;\n }\n if (nextisVodUnavailable !== isVodUnavailable) {\n nextState.showExpiredVOD = nextisVodUnavailable;\n }\n if (nextCountdownVideo !== countdownVideo) {\n if (!_.isEmpty(nextCountdownVideo)) {\n nextState.showCountdown = false;\n } else {\n nextState.showCountdown = false;\n playerPlay(playerReference);\n }\n }\n\n if (!_.isEmpty(nextState)) {\n this.setState(nextState);\n }\n }\n\n shouldComponentUpdate(nextProps) {\n const { guid, liveNow, waitToRenderPlayer } = this.props;\n const {\n guid: nextGuid,\n liveNow: nextLiveNow,\n mode: nextMode,\n waitToRenderPlayer: nextWaitToRenderPlayer,\n } = nextProps;\n // Block Video Container From Re-rendering when Live status changes\n if (\n nextMode === LIVE &&\n guid === nextGuid &&\n liveNow !== nextLiveNow &&\n waitToRenderPlayer === nextWaitToRenderPlayer\n ) {\n return false;\n }\n return true;\n }\n\n componentDidUpdate(lastProps, lastState) {\n const { isPlayerLoaded: previousIsPlayerLoaded } = lastState;\n const { isPlayerLoaded, checkedContentBlackout, showContentBlackout } = this.state;\n const { reducerVideo: prevReducerVideo } = lastProps;\n const { authSuccess, reducerVideo, setIsPlayerLoaded } = this.props;\n if (isPlayerLoaded !== previousIsPlayerLoaded) setIsPlayerLoaded(isPlayerLoaded);\n\n const reducerVideoId = _.get(reducerVideo, 'id');\n const prevReducerVideoId = _.get(prevReducerVideo, 'id');\n const reducerVideoChanged =\n prevReducerVideoId && reducerVideoId && reducerVideoId !== prevReducerVideoId;\n const reducerVideoInitialized = !prevReducerVideoId && reducerVideoId;\n const recheckBlackout = reducerVideoChanged && authSuccess;\n const checkInitialBlackout = !checkedContentBlackout && reducerVideoInitialized && authSuccess;\n\n if (reducerVideoChanged && showContentBlackout) this.setState({ showContentBlackout: false });\n if (checkInitialBlackout || recheckBlackout) {\n this.setState({ checkedContentBlackout: true });\n this.checkContentBlackout();\n }\n }\n\n componentWillUnmount() {\n const { setIsPlayerLoaded } = this.props;\n setIsPlayerLoaded(false);\n }\n\n onShowProvidersCallback = ({ show, keepVideoPaused = true } = {}) => {\n const { playerReference } = this.props;\n this.setState({ showProviders: show, previewPassSignIn: false }, () => {\n const { playerState } = this.state;\n const validStates = [PLAYER_STATES.PLAYING, PLAYER_STATES.AD, PLAYER_STATES.BUFFERING];\n const playVideo = _.indexOf(validStates, playerState) >= 0 && !keepVideoPaused;\n if (playVideo) playerPlay(playerReference);\n });\n };\n\n onShowSearchProvidersCallback = () => {\n const { showSearchProviders } = this.state;\n this.setState({\n showSearchProviders: !showSearchProviders,\n });\n };\n\n onCountdownEndRendered = () => {\n const { playerReference } = this.props;\n playerHideControls(playerReference);\n };\n\n getPercentWatched = () => {\n const { playerReference } = this.props;\n const duration = getDuration(playerReference);\n const position = getContentPosition(playerReference);\n const percentWatched = (position / duration) * 100;\n\n return percentWatched;\n };\n\n setIsPlayerLoaded = player => {\n this.setState({ isPlayerLoaded: !!player });\n };\n\n setToken = ({ token, hbaStatus } = {}) => {\n this.setState({ token, hbaStatus });\n };\n\n accessEnablerAdvancedErrorHandler = err => {\n const errorId = _.get(err, 'errorId');\n const browser = determineBrowser();\n const isSafari = browser === 'safari';\n const cookiesDisabled = errorId === 'N130';\n const shouldShowCookiesBlocked = cookiesDisabled && isSafari;\n if (shouldShowCookiesBlocked) {\n this.setState({ showCookiesBlocked: true });\n }\n };\n\n checkContentBlackout = async () => {\n const {\n blackoutConfig,\n blackoutDefinitions,\n deviceId,\n dma,\n isLive,\n mvpdData,\n network,\n setAuthError,\n reducerVideo,\n } = this.props;\n this.setState({ checkedContentBlackout: true });\n try {\n const cableProviderId = _.get(mvpdData, 'metadata.mvpd');\n const zipCode = _.get(mvpdData, 'metadata.zip.0');\n const contentRequiresAuth = getRequiresAuth({ video: reducerVideo });\n const blackoutOptions = {\n blackoutConfig,\n blackoutDefinitions,\n cableProviderId,\n contentRequiresAuth,\n deviceId,\n dma,\n getDesignatedMarketingAreaData,\n isLive,\n network,\n zipCode,\n };\n await getContentBlackout(blackoutOptions);\n console.debug('content blackout not available', zipCode);\n } catch (error) {\n if (isBlackoutError(error)) {\n console.debug('content blackout active');\n const contentBlackoutLanguageOverrides = _.get(error, 'contentBlackoutLanguageOverrides');\n setAuthError(true);\n this.setState({\n showContentBlackout: true,\n contentBlackoutLanguageOverrides,\n });\n } else {\n console.debug('content blackout error', error);\n }\n }\n };\n\n handleCountdownEnd = () => {\n const { countdownVideo, onChannelSelect } = this.props;\n if (onChannelSelect) {\n this.setState({ showCountdown: false });\n onChannelSelect({ callSign: countdownVideo?.callSign });\n }\n };\n\n handleExpiration = ({ type }) => {\n const {\n videoId,\n showEndcards,\n handlePopInMiniPlayer,\n isLive,\n playerReference,\n provider,\n account,\n setProvider,\n requiresAuth,\n } = this.props;\n\n const mvpdId = _.get(provider, 'adobePassId');\n const setStateCallback = () => {\n const profileId = _.get(account, 'profileId');\n const previewPassEvents = getPreviewPassAnalyticsEvents({\n previewPassLength: getPreviewPassLengthFromName(mvpdId),\n profileId,\n });\n const onPreviewPassExpired = _.get(\n previewPassEvents,\n GeneralTrackEvents.PREVIEW_PASS_EXPIRED,\n _.noop,\n );\n onPreviewPassExpired();\n\n const previewPassLength = mvpdId === PREVIEW_PASS_60 ? 60 : 5;\n getSegmentMVPDEvents().mvpdPreviewPassExpired({\n page_preview_pass_length: previewPassLength,\n });\n\n if (!isLive) {\n showEndcards(false);\n }\n setProvider(null);\n if (requiresAuth) {\n playerRemove(playerReference);\n } else {\n playerPause(playerReference);\n }\n };\n\n if (type === 'MVPD') {\n this.previewPassLogout();\n const disableDuplicateOverlay = _.get(\n getOptimizelyRedesignExperiments(),\n 'disableDuplicateOverlay',\n false,\n );\n\n const { videoId, onAuthCheckComplete } = this.props;\n const newState = {\n activeVideo: videoId,\n mvpdExpired: true,\n percentWatched: this.getPercentWatched(),\n showProviders: true,\n showSignIn: !disableDuplicateOverlay,\n };\n const newStateCallback = () => {\n onAuthCheckComplete({ complete: false, success: false });\n this.setState({ showSignIn: true });\n };\n\n this.setState(newState, newStateCallback);\n if (!isLive) {\n showEndcards(false);\n }\n setProvider(null);\n if (requiresAuth) {\n playerRemove(playerReference);\n } else {\n playerPause(playerReference);\n }\n } else {\n setPreviewPassExpired(true);\n this.previewPassLogout();\n handlePopInMiniPlayer();\n this.setState(\n {\n previewPassExpired: true,\n percentWatched: this.getPercentWatched(),\n activeVideo: videoId,\n },\n setStateCallback,\n );\n }\n };\n\n handleHover = hover => {\n const { setStickyControls, setPlayerDataHover } = this.props;\n setStickyControls(hover);\n setPlayerDataHover(hover);\n };\n\n handlePPBannerClick = () => {\n const { onAuthCheckComplete, playerReference } = this.props;\n const playerState = getPlayerState(playerReference);\n const validStates = [PLAYER_STATES.PLAYING, PLAYER_STATES.AD, PLAYER_STATES.BUFFERING];\n if (_.indexOf(validStates, playerState) >= 0) {\n playerPause(playerReference);\n }\n\n const disableDuplicateOverlay = _.get(\n getOptimizelyRedesignExperiments(),\n 'disableDuplicateOverlay',\n false,\n );\n\n const { videoId, resumeOnCancel } = this.props;\n resumeOnCancel();\n\n const newState = {\n showProviders: true,\n previewPassSignIn: true,\n percentWatched: this.getPercentWatched(),\n activeVideo: videoId,\n playerState,\n showSignIn: !disableDuplicateOverlay,\n };\n\n const newStateCallback = () => {\n onAuthCheckComplete({ complete: false, success: false });\n this.setState({ showSignIn: true });\n };\n\n this.setState(newState, newStateCallback);\n };\n\n resetShowCookiesBlocked = () => {\n this.setState({ showCookiesBlocked: false });\n };\n\n renderAuth() {\n const {\n authorizingNetwork,\n background,\n callSign,\n contentNetworks,\n contentRating,\n contentSKU,\n entitlementIssues,\n geoLocationDeclined,\n geoLocationTimeoutFail,\n geoLocationPrimaryActionCallback,\n guid,\n handlePopInMiniPlayer,\n isLive,\n isLiveRestart,\n network,\n releaseURL,\n renderAuthContainer,\n requestSignIn,\n requiresAuth,\n requiresAuthLive,\n resumeWithProfileConfig,\n savePercentWatched,\n selectedChannel,\n setAuthError,\n setPreAuthCheckComplete,\n setVideoOverlay,\n shouldCheckPreviewPass,\n showNoSportsOnMobileError,\n showResumeCTA,\n triggerAuthCheck,\n type,\n videoId,\n videoType,\n } = this.props;\n const {\n mvpdExpired,\n previewPassExpired,\n previewPassSignIn,\n showContentBlackout,\n showCookiesBlocked,\n showProviders,\n showSignIn,\n } = this.state;\n const waitForVideo = !videoId && !releaseURL;\n const channel = getChannelId({ network, authorizingNetwork });\n const playerRelatedAuthProps = {\n authorizingNetwork,\n background,\n callSign,\n channel,\n checkBlackouts: true,\n checkBuythroughScenarios: false,\n contentBlackoutActive: showContentBlackout,\n contentNetworks,\n contentRating,\n contentSKU,\n entitlementIssues,\n geoLocationDeclined,\n geoLocationPrimaryActionCallback,\n geoLocationTimeoutFail,\n getDesignatedMarketingAreaData,\n guid,\n handlePopInMiniPlayer,\n isLive,\n isLiveRestart,\n mvpdExpired,\n network,\n onShowProvidersCallback: this.onShowProvidersCallback,\n previewPassExpired,\n previewPassSignIn,\n releaseURL,\n requestSignIn,\n requiresAuth,\n requiresAuthLive,\n resetShowCookiesBlocked: this.resetShowCookiesBlocked,\n resumeWithProfileConfig,\n savePercentWatched,\n selectedChannel,\n setAuthError,\n setPreAuthCheckComplete,\n setToken: this.setToken,\n setVideoOverlay,\n shouldCheckPreviewPass,\n showCookiesBlocked,\n showNoSportsOnMobileError,\n showProviders,\n showResumeCTA,\n showSignIn,\n triggerAuthCheck,\n type,\n videoId,\n videoType,\n waitForUpsell: false,\n waitForVideo,\n };\n\n return renderAuthContainer(playerRelatedAuthProps);\n }\n\n renderContentBlackout = () => {\n const { background, channel } = this.props;\n const { contentBlackoutLanguageOverrides, showContentBlackout } = this.state;\n const backgroundUrl = background || getChannelBackgroundUrl(channel);\n const titleId = _.get(contentBlackoutLanguageOverrides, 'title');\n const messageId = _.get(contentBlackoutLanguageOverrides, 'message');\n const defaultTitle = _.get(window.Language, 'blackout_default_title');\n const defaultMessage = _.get(window.Language, 'blackout_default');\n const title = _.get(window.Language, titleId, defaultTitle);\n const message = _.get(window.Language, messageId, defaultMessage);\n\n if (!showContentBlackout) return null;\n\n return <ContentBlackout background={backgroundUrl} title={title} message={message} />;\n };\n\n renderExpiredVOD = () => {\n const { background, channel } = this.props;\n const { showExpiredVOD } = this.state;\n const backgroundUrl = background || getChannelBackgroundUrl(channel);\n const title = _.get(window.Language, 'playback_expiredContentHeader');\n const message = _.get(window.Language, 'playback_expiredContentMessage');\n\n if (!showExpiredVOD) return null;\n\n return <ExpiredVod background={backgroundUrl} title={title} message={message} />;\n };\n\n renderPlayerLoadingImage() {\n const { breakpoint, channel, playerLoading, mode, theme } = this.props;\n const { playerLoadingImage } = this.state;\n const backgroundUrl = playerLoadingImage || getChannelBackgroundUrl(channel);\n const imageTag = renderImage({\n breakpoint,\n className: theme.playerLoadingImage,\n imageType: LIVE_PLAYER_BACKGROUND_IMAGE,\n src: backgroundUrl,\n });\n\n if (!playerLoading || mode === LIVE) return null;\n\n return imageTag;\n }\n\n renderCountdown = () => {\n const { countdownVideo, isMiniPlayerActive } = this.props;\n const { showCountdown } = this.state;\n if (!showCountdown) return null;\n this.onCountdownEndRendered();\n const background = helperGetStaticContentUrl('images', 'fox-countdown-bg.jpg');\n const timeLeft = differenceInSeconds(countdownVideo.startDate, now());\n\n return (\n <Countdown\n background={background}\n isMiniPlayerActive={isMiniPlayerActive}\n onCountdownEnd={this.handleCountdownEnd}\n timeLeft={timeLeft}\n />\n );\n };\n\n setMVPDExpiration = mvpdTTL => {\n const {\n displayPrimeTimeMessage,\n isVideoBanner,\n playerLoading,\n provider,\n reducerVideo,\n requestSignIn,\n } = this.props;\n\n const mvpdId = _.get(provider, 'adobePassId');\n const isLocalClip = getCookie({ name: LOCAL_CLIP_PAGE_COOKIE_NAME });\n const requiresAuth = _.get(reducerVideo, 'requiresAuth', false);\n const requiresAuthLive = _.get(reducerVideo, 'requiresAuthLive', false);\n const cookie = getMVPDCookie();\n if (\n !cookie ||\n (!requiresAuth && !requiresAuthLive) ||\n isPreviewPass(mvpdId) ||\n displayPrimeTimeMessage ||\n (playerLoading && !requestSignIn) ||\n isVideoBanner ||\n isLocalClip\n ) {\n return null;\n }\n\n return <MVPDTimer unixEndTime={mvpdTTL} expirationCallback={this.handleExpiration} />;\n };\n\n renderPreviewPassBanner = previewPassTTL => {\n const {\n disablePreviewPassRender,\n displayPrimeTimeMessage,\n isFullscreen,\n isMiniPlayerActive,\n isVideoBanner,\n panelVideo,\n playerLoading,\n provider,\n requestSignIn,\n reducerVideo,\n theme,\n } = this.props;\n const { previewPassExpired, showCountdown } = this.state;\n const mvpdId = _.get(provider, 'adobePassId');\n const ppDate = previewPassTTL ? msToDate(previewPassTTL) : null;\n const validTTL = ppDate ? differenceInSeconds(ppDate, now()) > 0 : false;\n const isFoxWeatherNetwork = panelVideo?.network === FOX_WEATHER_NETWORK;\n const isLocalClip = getCookie({ name: LOCAL_CLIP_PAGE_COOKIE_NAME });\n const {\n preveiwPass_banner_start: bannerStartText,\n preveiwPass_banner_end: bannerEndText,\n preveiwPass_banner_link: bannerLinkText,\n } = window.Language;\n const requiresAuth =\n _.get(reducerVideo, 'requiresAuth', false) || _.get(panelVideo, 'requiresAuth', false);\n const requiresAuthLive =\n _.get(reducerVideo, 'requiresAuthLive', false) ||\n _.get(panelVideo, 'requiresAuthLive', false);\n\n if (\n (!requiresAuth && !requiresAuthLive) ||\n !previewPassEnabled() ||\n !isPreviewPass(mvpdId) ||\n displayPrimeTimeMessage ||\n (playerLoading && !requestSignIn) ||\n !validTTL ||\n previewPassExpired ||\n disablePreviewPassRender ||\n isVideoBanner ||\n isLocalClip ||\n isFoxWeatherNetwork ||\n showCountdown\n ) {\n return null;\n }\n const { showControls } = this.props;\n\n const previewPassHoverEnabled = _.get(\n getOptimizelyPreviewPassExperiments(),\n 'previewPassHoverActive',\n false,\n );\n const previewPassTransition =\n showControls && !requestSignIn && previewPassHoverEnabled && theme.previewPassTransition;\n const previewPassCopyClasses = classNames([\n previewPassHoverEnabled && theme.previewPassCopyWithHover,\n theme.previewPassCopy,\n isMiniPlayerActive && theme.miniPlayerActive,\n ]);\n const previewPassClasses = classNames([\n theme.previewPass,\n previewPassHoverEnabled && theme.previewPassWithHover,\n isFullscreen && theme.previewPassHideFullscreen,\n ]);\n const previewPassLoginLinkClasses = classNames([\n theme.previewPassLoginLink,\n previewPassHoverEnabled && theme.previewPassLoginLinkWithHover,\n ]);\n return (\n <div\n className={classNames([previewPassClasses, previewPassTransition])}\n onMouseEnter={() => {\n this.handleHover(true);\n }}\n >\n <div className={previewPassCopyClasses}>\n <div className={theme.previewPassText}>\n {bannerStartText}\n <div>\n <Timer\n isMiniPlayerActive={isMiniPlayerActive}\n unixEndTime={previewPassTTL}\n expirationCallback={() => this.handleExpiration({ type: 'PREVIEW_PASS' })}\n />\n {bannerEndText}\n </div>\n </div>\n <span className={previewPassLoginLinkClasses}>\n <Link onClick={this.handlePPBannerClick}>{bannerLinkText}</Link>\n <span className={theme.previewPassLine} />\n </span>\n </div>\n </div>\n );\n };\n\n renderStillWatching() {\n const { background, channel, showStillWatching, onStillWatchingClose, account } = this.props;\n const backgroundUrl = background || getChannelBackgroundUrl(channel);\n const profileId = _.get(account, 'profileId');\n\n if (!showStillWatching) return null;\n\n return (\n <AreYouWatching\n onClose={() => {\n const {\n [GeneralTrackEvents.PLAYER_IDLE_PROMPT_CONFIRM]: onPlayerIdlePromptConfirm,\n } = getTealiumPlayerEvents({ profileId });\n onPlayerIdlePromptConfirm();\n onStillWatchingClose();\n handleAnalytics({\n event: Events.IDLE_PROMPT_ACTION,\n payload: { page_action_type: 'Yes, continue watching' },\n });\n }}\n background={backgroundUrl}\n />\n );\n }\n\n renderRetryError = () => {\n const { retryErrors, retryFetchVideo } = this.props;\n const statusCode = _.get(retryErrors, 'statusCode');\n const { responseCodes, background, enabled } = _.get(window, 'ExternalConfig.failureRetry');\n if (_.isEmpty(retryErrors) || !responseCodes.includes(statusCode)) return null;\n\n return (\n <RetryError\n enabled={enabled}\n statusCode={statusCode}\n background={background}\n onRetryClick={retryFetchVideo}\n />\n );\n };\n\n render() {\n const {\n account,\n adblock,\n anonymousId,\n authorizingNetwork,\n authSuccess,\n backfade,\n background,\n breakpoint,\n channel,\n children,\n containerClass,\n containerId,\n displayPrimeTimeMessage,\n endCards,\n errors,\n hideLoadingText,\n isFullscreen,\n isMiniPlayerActive,\n isStatic,\n isVideoBanner,\n liveContentId,\n liveNow,\n mediaInfo,\n mode,\n mute,\n network,\n panelVideo,\n playerConfig,\n playerLoading,\n playerReference,\n playerType,\n portalRef,\n preauthorizedResources,\n primeTimeMessage,\n primetimeScrollTo,\n profileId,\n profileToken,\n provider,\n optimizelyResults,\n releaseURL,\n removeEventListeners,\n requestSignIn,\n requiresAuth,\n requiresAuthLive,\n scrubbingEnabled,\n selectedVideo,\n showControls,\n showResumeCTA,\n showUpNextToast,\n siteSection,\n theme,\n type,\n videoDetail,\n videoId,\n waitToRenderPlayer,\n } = this.props;\n const profileAnonymous = !account;\n const mvpdId = _.get(provider, 'adobePassId');\n const {\n activeVideo,\n adSiteSection,\n percentWatched,\n previewPassExpired,\n previewPassSignIn,\n spoofedGeolation,\n } = this.state;\n const abTest = getOptimizelyPlayerExperiments();\n // update releaseURL based off the debug panel.\n let playerConfigParams = {};\n\n const adDebug = getAdDebug();\n const privacyParameter = getPrivacyParameterCookie();\n if (adDebug || adSiteSection || privacyParameter) {\n playerConfigParams = {\n params: {\n ads: {\n siteSection: adSiteSection,\n debugParameter: adDebug,\n privacyParameter,\n },\n },\n };\n }\n\n if (percentWatched && activeVideo === videoId) {\n playerConfigParams = {\n ...playerConfigParams,\n ...{ percentWatched, activeVideo, mvpdId },\n };\n }\n // if (!account) {\n // playerConfigParams = {\n // ...playerConfigParams,\n // ...{ percentWatched: 0 },\n // };\n // }\n const mvpd = getMVPDFromCookie();\n const mvpdRights = _.get(window.ExternalConfig, `contentRights.${mvpd}`);\n const mvpdRightsNetwork = _.get(mvpdRights, 'network');\n const zipcode = mvpdRightsNetwork === network ? _.get(mvpdRights, 'zipcode') : null;\n const pcpParams = _.get(playerConfigParams, 'params', {});\n\n playerConfigParams = {\n ...playerConfigParams,\n params: {\n ...pcpParams,\n abTest,\n page_test_name: (getSegmentOptimizelyString && getSegmentOptimizelyString()) || null,\n zipcode,\n },\n };\n\n if (optimizelyResults?.siteSection) {\n playerConfigParams.params.ads.siteSection = optimizelyResults.siteSection[breakpoint];\n }\n\n _.set(playerConfigParams, 'params.ads.publisherId', anonymousId);\n\n const entitlementList = preauthorizedResources || [];\n entitlementList.sort(sortEntitlements);\n const networkEntitlementList = entitlementList.join(',');\n const baseConfigUrl = getBaseContentUrl();\n const baseUrl =\n baseConfigUrl.substring(baseConfigUrl.length - 1, baseConfigUrl.length) === '/'\n ? baseConfigUrl.substring(0, baseConfigUrl.length - 1)\n : baseConfigUrl;\n _.set(playerConfigParams, 'params.baseUrl', baseUrl);\n const newPlayerConfig = {\n ...playerConfig,\n ...playerConfigParams,\n authorizingNetwork,\n networkEntitlementList,\n mute,\n container: containerId,\n };\n\n const backgroundUrl = background || getChannelBackgroundUrl(channel);\n const previewPassTTL = getPreviewPassTime();\n const mvpdTTL = getMVPDExpireTime();\n\n if (adblock) {\n return (\n <div className={theme.container}>\n <AdBlock background={backgroundUrl} />\n </div>\n );\n }\n\n const { showProviders, token, hbaStatus } = this.state;\n\n const containerClasses = classNames(\n isFullscreen ? theme.fullscreen : false,\n previewPassExpired ? theme.previewPassExpired : false,\n theme.container,\n containerClass,\n showProviders || showUpNextToast ? theme.hideControls : false,\n theme.redesignCollections,\n endCards ? theme.containsEndCards : false,\n isVideoBanner ? theme.videoBannerContainer : false,\n isEpgv2Enabled() ? theme.resizablePlayer : false,\n isMiniPlayerActive && theme.miniPlayerActive,\n );\n\n const backfadeClasses = classNames(\n theme.backfade,\n backfade && showControls ? theme.backfadeVisible : null,\n );\n const { showLoader } = BREAKPOINTS[breakpoint];\n const loader = playerLoading && showLoader && <Loader className={theme.loader} />;\n const {\n livePlayer_preprimetimeButton: preprimetimeButtonText,\n livePlayer_preprimetimeText: preprimetimeText,\n livePlayer_loadingText: loadingText,\n } = window.Language;\n const loaderBackgroundStyle = {\n backgroundImage: backgroundUrl ? `url('${backgroundUrl}')` : null,\n };\n let channelLoaderComponent = null;\n\n if (displayPrimeTimeMessage) {\n channelLoaderComponent = (\n <span\n className={classNames(theme.noVideoBackground, theme.loaderBackground)}\n style={loaderBackgroundStyle}\n >\n <div className={theme.preprimetimeText}>{primeTimeMessage || preprimetimeText}</div>\n <ScrollLink className={theme.preprimetimeButton} to={primetimeScrollTo} smooth>\n {preprimetimeButtonText}\n </ScrollLink>\n </span>\n );\n } else if (selectedVideo && playerLoading) {\n channelLoaderComponent = (\n <span className={theme.loaderBackground} style={loaderBackgroundStyle}>\n {!hideLoadingText && <div className={theme.loaderText}>{loadingText}</div>}\n {loader}\n </span>\n );\n }\n\n const loaderComponent = (channel && channelLoaderComponent) || loader;\n\n const delayedReleaseURL = releaseURL;\n let player = null;\n const isTveEnabled = tveEnabled();\n const lastAnonymousProfileId = getSegmentLastAnonymousProfileId();\n const lastKnownProfileId = getSegmentLastKnownProfileId();\n if (!waitToRenderPlayer && !isStatic) {\n player = (\n <VideoPlayer\n errors={errors}\n geolocation={spoofedGeolation || getLocationCookies()}\n hbaStatus={hbaStatus}\n isFullscreen={isFullscreen}\n lastAnonymousProfileId={lastAnonymousProfileId}\n lastKnownProfileId={lastKnownProfileId}\n liveContentId={liveContentId}\n loadPlayerCb={this.setIsPlayerLoaded}\n mediaInfo={mediaInfo}\n mode={mode}\n mvpdId={mvpdId}\n panelVideo={panelVideo}\n playerConfig={newPlayerConfig}\n playerJs={getPlayerJs()}\n playerLoadingImage={background}\n playerReference={playerReference}\n playerType={playerType}\n portalRef={portalRef}\n profileAnonymous={profileAnonymous}\n profileId={profileId}\n profileToken={profileToken}\n releaseURL={delayedReleaseURL}\n removeEventListeners={removeEventListeners}\n requestSignIn={requestSignIn}\n requiresAuth={requiresAuth}\n requiresAuthLive={requiresAuthLive}\n scrubbingEnabled={scrubbingEnabled}\n showResumeCTA={showResumeCTA}\n token={token}\n tveEnabled={isTveEnabled}\n type={type}\n videoId={videoId}\n />\n );\n\n if (!waitToRenderPlayer && children) {\n player = React.Children.map(children, child =>\n React.cloneElement(child, {\n authSuccess,\n errors,\n externalId: 'dfwvideoplayer',\n geolocation: spoofedGeolation || getLocationCookies(),\n hbaStatus,\n isFullscreen,\n releaseURL: delayedReleaseURL,\n videoId,\n liveContentId,\n lastAnonymousProfileId,\n lastKnownProfileId,\n token,\n mvpdId,\n panelVideo,\n playerJs: getPlayerJs(),\n playerReference,\n playerType,\n requiresAuth,\n requiresAuthLive,\n siteSection,\n type,\n mode,\n liveNow,\n profileAnonymous,\n profileId,\n profileToken,\n playerConfig: newPlayerConfig,\n portalRef,\n mediaInfo,\n playerLoadingImage: background,\n removeEventListeners,\n scrubbingEnabled,\n loadPlayerCb: this.setIsPlayerLoaded,\n requestSignIn,\n showResumeCTA,\n tveEnabled: isTveEnabled,\n }),\n );\n }\n }\n\n return (\n <>\n <div\n role=\"region\"\n className={containerClasses}\n onMouseEnter={() => {\n this.handleHover(true);\n }}\n onMouseLeave={() => {\n this.handleHover(false);\n }}\n >\n {this.renderAuth()}\n {this.renderContentBlackout()}\n {this.renderCountdown()}\n {this.renderRetryError()}\n {this.renderStillWatching()}\n {this.renderExpiredVOD()}\n {this.renderPlayerLoadingImage()}\n {!previewPassSignIn && this.renderPreviewPassBanner(previewPassTTL)}\n {this.setMVPDExpiration(mvpdTTL)}\n {player}\n {<div className={backfadeClasses} />}\n {loaderComponent}\n {endCards}\n </div>\n {videoDetail}\n </>\n );\n }\n}\n\nVideoContainer.defaultProps = {\n account: null,\n adblock: false,\n anonymousId: null,\n authorizingNetwork: null,\n authSuccess: false,\n background: '',\n blackoutConfig: {},\n blackoutDefinitions: {},\n breakpoint: null,\n callSign: null,\n channel: null,\n children: null,\n containerClass: null,\n containerId: null,\n contentNetworks: [],\n contentRating: null,\n contentSKU: null,\n countdownVideo: {},\n deviceId: null,\n disablePreviewPassRender: false,\n displayPrimeTimeMessage: null,\n dma: null,\n endCards: null,\n entitlementIssues: null,\n geoLocationDeclined: null,\n geoLocationPrimaryActionCallback: noop,\n geoLocationTimeoutFail: false,\n guid: null,\n hideLoadingText: false,\n isFullscreen: false,\n isLive: false,\n isLiveRestart: false,\n isStatic: false,\n isVideoBanner: false,\n isVodUnavailable: false,\n liveContentId: null,\n liveNow: false,\n mediaInfo: null,\n mode: null,\n mute: false,\n mvpdData: null,\n network: null,\n onAuthCheckComplete: noop,\n onChannelSelect: noop,\n optimizelyResults: null,\n playerReference: PLAYER_REFERENCE_DEFAULT,\n playerType: '',\n portalRef: '',\n preauthorizedResources: [],\n primeTimeMessage: null,\n primetimeScrollTo: null,\n profileId: null,\n profileToken: null,\n provider: null,\n reducerVideo: {},\n releaseURL: null,\n requestSignIn: false,\n requiresAuth: null,\n requiresAuthLive: null,\n resumeOnCancel: noop,\n resumeWithProfileConfig: null,\n retryErrors: {},\n retryFetchVideo: noop,\n savePercentWatched: noop,\n scrubbingEnabled: null,\n selectedChannel: null,\n selectedVideo: null,\n setAuthError: noop,\n setIsPlayerLoaded: noop,\n setPlayerDataHover: noop,\n setPreAuthCheckComplete: noop,\n setProvider: noop,\n setStickyControls: noop,\n setVideoOverlay: noop,\n shouldCheckPreviewPass: true,\n showControls: false,\n showEndcards: noop,\n showNoSportsOnMobileError: false,\n showResumeCTA: false,\n showUpNextToast: false,\n siteSection: null,\n triggerAuthCheck: false,\n videoDetail: null,\n videoId: null,\n videoType: null,\n waitToRenderPlayer: false,\n};\n\nVideoContainer.propTypes = {\n account: PropTypes.shape({}),\n adblock: PropTypes.bool,\n anonymousId: PropTypes.string,\n authorizingNetwork: PropTypes.string,\n authSuccess: PropTypes.bool,\n backfade: PropTypes.bool.isRequired,\n background: PropTypes.string,\n blackoutConfig: PropTypes.shape({}),\n blackoutDefinitions: PropTypes.shape({}),\n breakpoint: PropTypes.string,\n callSign: PropTypes.string,\n channel: PropTypes.string,\n children: PropTypes.node,\n containerClass: PropTypes.string,\n containerId: PropTypes.string,\n contentNetworks: PropTypes.arrayOf(PropTypes.string),\n contentRating: PropTypes.string,\n contentSKU: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])),\n countdownVideo: PropTypes.shape({}),\n deviceId: PropTypes.string,\n disablePreviewPassRender: PropTypes.bool,\n displayPrimeTimeMessage: PropTypes.string,\n dma: PropTypes.string,\n endCards: PropTypes.node,\n errors: PropTypes.shape({}),\n entitlementIssues: PropTypes.arrayOf(PropTypes.shape({})),\n geoLocationDeclined: PropTypes.bool,\n geoLocationPrimaryActionCallback: PropTypes.func,\n geoLocationTimeoutFail: PropTypes.bool,\n guid: PropTypes.string,\n handlePopInMiniPlayer: PropTypes.func,\n hideLoadingText: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n isLive: PropTypes.bool,\n isLiveRestart: PropTypes.bool,\n isMiniPlayerActive: PropTypes.bool,\n isStatic: PropTypes.bool,\n isVideoBanner: PropTypes.bool,\n isVodUnavailable: PropTypes.bool,\n liveContentId: PropTypes.string,\n liveNow: PropTypes.bool,\n mediaInfo: PropTypes.shape({}),\n mode: PropTypes.string,\n mute: PropTypes.bool,\n mvpdData: PropTypes.shape({}),\n network: PropTypes.string,\n onAuthCheckComplete: PropTypes.func,\n onChannelSelect: PropTypes.func,\n onStillWatchingClose: PropTypes.func.isRequired,\n optimizelyResults: PropTypes.shape({}),\n panelVideo: PropTypes.shape({}),\n playerConfig: PropTypes.shape({}).isRequired,\n playerLoading: PropTypes.bool.isRequired,\n playerReference: PropTypes.string,\n playerType: PropTypes.string,\n portalRef: PropTypes.string,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n primeTimeMessage: PropTypes.string,\n primetimeScrollTo: PropTypes.string,\n profileId: PropTypes.string,\n profileToken: PropTypes.string,\n provider: PropTypes.shape({}),\n reducerVideo: PropTypes.shape({}),\n releaseURL: PropTypes.string,\n removeEventListeners: PropTypes.func,\n renderAuthContainer: PropTypes.func.isRequired,\n requestSignIn: PropTypes.bool,\n requiresAuth: PropTypes.bool,\n requiresAuthLive: PropTypes.bool,\n resumeOnCancel: PropTypes.func,\n resumeWithProfileConfig: PropTypes.shape(),\n retryErrors: PropTypes.shape({}),\n retryFetchVideo: PropTypes.func,\n savePercentWatched: PropTypes.func,\n scrubbingEnabled: PropTypes.bool,\n selectedChannel: PropTypes.number,\n selectedVideo: PropTypes.string,\n setAuthError: PropTypes.func,\n setIsPlayerLoaded: PropTypes.func,\n setPlayerDataHover: PropTypes.func,\n setPreAuthCheckComplete: PropTypes.func,\n setProvider: PropTypes.func,\n setStickyControls: PropTypes.func,\n setVideoOverlay: PropTypes.func,\n shouldCheckPreviewPass: PropTypes.bool,\n showControls: PropTypes.bool,\n showEndcards: PropTypes.func,\n showNoSportsOnMobileError: PropTypes.bool,\n showResumeCTA: PropTypes.bool,\n showStillWatching: PropTypes.bool.isRequired,\n showUpNextToast: PropTypes.bool,\n siteSection: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n triggerAuthCheck: PropTypes.bool,\n type: PropTypes.string.isRequired,\n videoDetail: PropTypes.shape({}),\n videoId: PropTypes.string,\n videoType: PropTypes.string,\n waitToRenderPlayer: PropTypes.bool,\n};\n\nexport default VideoContainer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\n/**\n * StringList Component\n * @param {String} label - Label to display before the string list\n * @param {Array} items - Array of items to display as unbroken strings in the string list\n * @param {String} processor - Function that will convert each array item into a string\n * @param {Object} theme - Theme override sent through CSS Themr\n * @returns {Component} - React Component\n */\n\nconst StringList = ({ theme, label, items, processor, className }) => {\n if (!items || items.length <= 0) return null;\n const processedItems = _.map(items, item => processor(item));\n const displayItems = _.filter(processedItems, _.isString);\n if (displayItems.length === 0) return null;\n\n return (\n <div className={classNames(theme.list, className)}>\n {label ? <span className={theme.label}>{label} </span> : null}\n {_.map(displayItems, (item, index) => (\n <span key={`${item}-${index}`} className={theme.item}>\n {item}\n </span>\n ))}\n </div>\n );\n};\n\nStringList.defaultProps = {\n label: null,\n className: '',\n items: [],\n processor: () => {},\n};\n\nStringList.propTypes = {\n theme: PropTypes.shape({}).isRequired,\n label: PropTypes.string,\n className: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.string),\n processor: PropTypes.func,\n};\n\nexport default StringList;\n","import { themr } from '@friendsofreactjs/react-css-themr';\nimport identifiers from 'components/identifiers';\nimport StringList from './StringList';\n\nexport default themr(identifiers.StringList)(StringList);\n","/* global FavoritesEnabled */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Badge from 'components/Badge';\nimport Icon from 'components/Icon';\nimport Favorite, { FAVORITE_TYPE_ICON, FAVORITE_TEXT_POSITION_RIGHT } from 'components/Favorite';\nimport StringList from 'components/StringList';\nimport ReadMore from 'components/ReadMore';\nimport { SHOW_STATE_LIVE, SHOW_STATE_UPNEXT } from 'helpers/BadgeHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { PageNames, SegmentSources, tealiumEventPageTypes } from '@foxcorp/delta-web-analytics';\nimport { isMovie, castProcessor } from 'helpers/ContentHelper';\nimport { helperGetSeriesDetailUrl } from 'helpers/RouteHelper';\nimport favoriteTheme from './Favorite.css';\nimport readMoreTheme from './ReadMore.css';\n\nclass WatchDetailComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n toggleDetailStatus: false,\n };\n }\n\n onToggleClick = () => {\n const { toggleDetailStatus } = this.state;\n this.setState({ toggleDetailStatus: !toggleDetailStatus });\n };\n\n handleHover = hover => {\n const { setPlayerDataHover } = this.props;\n if (setPlayerDataHover) setPlayerDataHover(hover);\n };\n\n renderCreditsTags({ minimal }) {\n const { videoPage_castLabel: castLabel } = window.Language;\n const { theme, actors } = this.props;\n if (!actors || !actors.length) return null;\n if (minimal) {\n return (\n <StringList\n label={castLabel}\n items={actors}\n processor={castProcessor}\n className={theme.creditsString}\n />\n );\n }\n return (\n <div className={theme.creditsWrapper}>\n <StringList\n label={castLabel}\n items={actors}\n processor={castProcessor}\n className={theme.subtextCredits}\n />\n </div>\n );\n }\n\n renderDescriptionItem() {\n const { description, theme } = this.props;\n if (!description) return null;\n return (\n <ReadMore\n className={theme.descriptionWrapper}\n moreText=\"More\"\n lessText=\"Less\"\n lines={1}\n theme={readMoreTheme}\n >\n {description}\n </ReadMore>\n );\n }\n\n renderFavorite() {\n const {\n disableFavorite,\n favoritableItems,\n favoritesManager,\n network,\n recommendationId,\n seriesName,\n showCode: showID,\n } = this.props;\n if (!FavoritesEnabled || disableFavorite) return null;\n\n const location = _.get(tealiumEventPageTypes, PageNames.FAVORITES_DETAIL);\n const source = SegmentSources.VOD;\n const type = FAVORITE_TYPE_ICON;\n const textPosition = FAVORITE_TEXT_POSITION_RIGHT;\n let defaultText;\n\n const favoriteData = {\n favoritableItems,\n location,\n networkId: network,\n recommendationId,\n seriesName,\n showID,\n source,\n };\n\n return (\n <Favorite\n manager={favoritesManager}\n data={favoriteData}\n type={type}\n textPosition={textPosition}\n theme={favoriteTheme}\n defaultText={defaultText}\n />\n );\n }\n\n renderInfoDetail() {\n const { theme, networkIcon, description, tuneIn } = this.props;\n const { videoPage_tuneinLabel: tuneInLabel } = window.Language;\n const { toggleDetailStatus } = this.state;\n let infoContainerClasses = classNames(theme.infoContainer, theme.hidden);\n if (toggleDetailStatus) {\n infoContainerClasses = theme.infoContainer;\n }\n const tuneInText = () => {\n if (tuneIn) {\n const formattedText = tuneIn[0].toUpperCase() + tuneIn.substr(1).toLowerCase();\n return `${formattedText} on`;\n }\n return tuneIn;\n };\n const creditsTags = this.renderCreditsTags({});\n const tuneInTags = tuneIn ? (\n <div className={theme.tuneInWrapper}>\n <span className={theme.subtitle}>{tuneInLabel}</span>\n <span className={theme.subtextTuneIn}>{tuneInText()}</span>\n <div className={theme.networkLogoDetail}>\n <img alt=\"Network Logo\" src={networkIcon} />\n </div>\n </div>\n ) : null;\n const descriptionTags = description ? (\n <div className={theme.descriptionWrapper}>\n <span className={theme.subtext}>{description}</span>\n </div>\n ) : null;\n if (!tuneInTags && !descriptionTags && !creditsTags) return null;\n return (\n <div className={infoContainerClasses}>\n <div className={theme.infoCenter}>\n {descriptionTags}\n {creditsTags}\n {tuneInTags}\n </div>\n </div>\n );\n }\n\n renderWatchDetail() {\n const {\n adPlaying,\n badge,\n hasEndcard,\n isFullscreen,\n isLive,\n isModal,\n metadata,\n networkIcon,\n onTitleClick,\n playerLoading,\n renderInfo,\n seriesScreenUrl,\n showCode,\n showControls,\n showNetworkIcon,\n showSubtitle,\n theme,\n title,\n tuneIn,\n type,\n } = this.props;\n\n const { toggleDetailStatus } = this.state;\n let detailIconType = 'keyboard-arrow-down';\n let toggleClasses = theme.toggle;\n if (hasEndcard) return null;\n const isMovieType = isMovie(type);\n const movieSubtitle = this.renderCreditsTags({ minimal: true });\n const subtitleText = isMovieType ? movieSubtitle : showSubtitle;\n const hideSubtitle = toggleDetailStatus && isMovieType;\n const subtitleTag = subtitleText && !hideSubtitle && (\n <h2 className={theme.showSubtitle}>{subtitleText}</h2>\n );\n if (toggleDetailStatus) {\n detailIconType = 'keyboard-arrow-up';\n toggleClasses = classNames(toggleClasses, theme.toggleActive);\n }\n const infoDetailComponent =\n ((renderInfo && toggleDetailStatus) || isModal) && this.renderInfoDetail();\n const toggleTags = renderInfo && (\n <Link key=\"watchDetailToggleLink\" onClick={this.onToggleClick} className={toggleClasses}>\n <Icon size=\"medium\" color=\"grey\" icon={detailIconType} theme={theme} />\n </Link>\n );\n const descriptionItem = !renderInfo && !isModal && this.renderDescriptionItem();\n const networkLogoContainerClasses = [theme.logoContainer];\n if (!showNetworkIcon) networkLogoContainerClasses.push(theme.hideNetworkLogo);\n const networkLogoClasses = classNames(\n theme.networkLogo,\n isFullscreen && theme.networkLogoFullscreen,\n );\n const infoDetailTuneInRendered = !(infoDetailComponent && tuneIn);\n const logoComponent = infoDetailTuneInRendered && networkIcon && (\n <div className={classNames(networkLogoContainerClasses)}>\n <div className={networkLogoClasses}>\n <img src={networkIcon} alt=\"\" />\n </div>\n </div>\n );\n let badgeItem = null;\n if (badge) {\n const badgeLive = badge.toUpperCase() === SHOW_STATE_LIVE;\n const badgeInvalidUpNext = isLive && badge.toUpperCase() === SHOW_STATE_UPNEXT;\n if (!badgeLive && !badgeInvalidUpNext) {\n badgeItem = <Badge theme={theme} badge={badge} />;\n }\n }\n const liveIndicator = isLive && <Badge theme={theme} badge={SHOW_STATE_LIVE} liveIndicator />;\n const badgeContainer = (badgeItem || liveIndicator) && (\n <div className={theme.badgeContainer}>\n {badgeItem}\n {liveIndicator}\n </div>\n );\n const containerClasses = [theme.container];\n const url = helperGetSeriesDetailUrl(showCode);\n let titleTag = (\n <Link onClick={onTitleClick} to={url} className={theme.titleLink}>\n {title}\n </Link>\n );\n let titleClasses = theme.title;\n if (!seriesScreenUrl) {\n titleTag = title;\n titleClasses = classNames(theme.title, theme.titleDisabled);\n }\n if (!showControls) containerClasses.push(theme.controlsHidden);\n if (playerLoading) containerClasses.push(theme.playerLoading);\n if (adPlaying) containerClasses.push(theme.adPlaying);\n\n return (\n <div\n className={classNames(containerClasses)}\n onMouseEnter={() => this.handleHover(true)}\n onMouseLeave={() => this.handleHover(false)}\n >\n <div className={theme.detailContainer}>\n {badgeContainer}\n <div className={theme.titleHeader}>\n <div className={titleClasses}>\n <h1>\n {titleTag} {this.renderFavorite()}\n </h1>\n {toggleTags}\n </div>\n {subtitleTag}\n {descriptionItem}\n <p className={theme.metadata}>{metadata}</p>\n </div>\n </div>\n {infoDetailComponent}\n {logoComponent}\n </div>\n );\n }\n\n render() {\n return this.renderWatchDetail();\n }\n}\n\nWatchDetailComponent.defaultProps = {\n actors: null,\n adPlaying: false,\n badge: null,\n description: null,\n disableFavorite: false,\n favoritableItems: null,\n favoritesManager: null,\n hasEndcard: false,\n isFullscreen: false,\n isLive: false,\n isModal: false,\n metadata: null,\n network: null,\n networkIcon: null,\n onTitleClick: noop,\n playerLoading: false,\n recommendationId: null,\n renderInfo: false,\n seriesScreenUrl: null,\n setPlayerDataHover: noop,\n showNetworkIcon: false,\n showSubtitle: null,\n tuneIn: null,\n};\n\nWatchDetailComponent.propTypes = {\n actors: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n }),\n ),\n adPlaying: PropTypes.bool,\n badge: PropTypes.string,\n description: PropTypes.string,\n disableFavorite: PropTypes.bool,\n favoritableItems: PropTypes.arrayOf(PropTypes.shape({})),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n deleteFavorites: PropTypes.func.isRequired,\n }),\n hasEndcard: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n isLive: PropTypes.bool,\n isModal: PropTypes.bool,\n metadata: PropTypes.string,\n network: PropTypes.string,\n networkIcon: PropTypes.string,\n onTitleClick: PropTypes.func,\n playerLoading: PropTypes.bool,\n recommendationId: PropTypes.string,\n renderInfo: PropTypes.bool,\n seriesName: PropTypes.string.isRequired,\n seriesScreenUrl: PropTypes.string,\n setPlayerDataHover: PropTypes.func,\n showCode: PropTypes.string.isRequired,\n showControls: PropTypes.bool.isRequired,\n showNetworkIcon: PropTypes.bool,\n showSubtitle: PropTypes.string,\n title: PropTypes.string.isRequired,\n theme: PropTypes.shape({\n avatar: PropTypes.string,\n avatarContainer: PropTypes.string,\n container: PropTypes.string,\n hideMore: PropTypes.string,\n info: PropTypes.string,\n infoContainer: PropTypes.string,\n more: PropTypes.string,\n moreContainer: PropTypes.string,\n showTitle: PropTypes.string,\n subtext: PropTypes.string,\n subtitle: PropTypes.string,\n titleHeader: PropTypes.string,\n toggle: PropTypes.string,\n tuneIn: PropTypes.string,\n videoInfoContainer: PropTypes.string,\n videoTitle: PropTypes.string,\n }).isRequired,\n tuneIn: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default connect()(WatchDetailComponent);\n","import _ from 'lodash';\n\nimport {\n getSeasonEpisodeCounts,\n getNetworkList,\n getAuthorizingNetwork,\n getRequiresAuth,\n isEpisode,\n} from 'helpers/ContentHelper';\nimport { getPlayerCsid } from 'helpers/PlayerHelper';\nimport { VIDEO_TYPE_CLIP } from 'screens/Watch/WatchHelpers';\n\nexport const getVideoContainerProps = item => {\n if (!item) return null;\n\n const fallbackBackground = _.get(item, 'images.still.raw', null);\n const background = _.get(item, 'images.seriesStill.raw', fallbackBackground);\n const siteSection = getPlayerCsid({\n showCode: item.showCode,\n isFullEpisode: isEpisode(item.videoType),\n });\n const requiresAuth = getRequiresAuth({ video: item });\n const requiresAuthLive = getRequiresAuth({ video: item, isLive: true });\n const scrubbingEnabled = _.get(item, 'scrubbingEnabled', null);\n const videoType = _.get(item, 'videoType', null);\n const networkEntitlementList = getNetworkList();\n const authorizingNetwork = getAuthorizingNetwork(item);\n const creditCuePoint = _.get(item, 'creditCuePoint', null);\n const contentRating = _.get(item, 'contentRating');\n const contentSKU = _.get(item, 'contentSKU');\n const videoId = _.get(item, 'id');\n const network = _.get(item, 'network');\n const contentNetworks = _.get(item, 'networks') || [network];\n\n const scrubbingEnabledCalc = scrubbingEnabled || videoType === VIDEO_TYPE_CLIP;\n const props = {\n authorizingNetwork,\n background,\n contentNetworks,\n contentRating,\n contentSKU,\n creditCuePoint,\n network,\n networkEntitlementList,\n playerLoadingImage: background,\n requiresAuth,\n requiresAuthLive,\n selectedVideo: videoId,\n siteSection,\n scrubbingEnabled: scrubbingEnabledCalc,\n videoId,\n videoType,\n };\n return props;\n};\n\nexport const getWatchDetailProps = item => {\n if (!item) return null;\n\n const title = _.get(item, 'name');\n const episodeCount = _.get(item, 'fullEpisodeCount');\n const seasonCount = _.get(item, 'seasonCount');\n const subtitleFallback = getSeasonEpisodeCounts({\n seasonCount,\n episodeCount,\n useComma: true,\n });\n const showSubtitle = _.get(item, 'showSubtitle', subtitleFallback);\n const metadata = _.get(item, 'metadata');\n const description = _.get(item, 'description');\n const showCode = _.get(item, 'showCode');\n const seriesType = _.get(item, 'seriesType');\n const titleLink = _.get(item, 'titleLink');\n\n const props = {\n description,\n disableFavorite: true,\n metadata,\n seriesType,\n seriesScreenUrl: titleLink,\n showCode,\n showControls: true,\n showSubtitle,\n title,\n };\n return props;\n};\n\nexport const getActionButtons = item => {\n const actionButtons = [];\n if (!item) return actionButtons;\n\n const watchLink = _.get(item, 'watchLink');\n if (watchLink) {\n const { global_watchButton: watchButtonText } = window.Language;\n const seasonEpisode = _.get(item, 'seriesSeasonEpisode');\n const watchText = `${watchButtonText} ${seasonEpisode}`;\n const lockButtons = _.get(item, 'lockButtons');\n\n actionButtons.push({\n icon: lockButtons ? 'lock' : 'play-button',\n viewBox: lockButtons ? '-7 -1 30 30' : null,\n text: watchText,\n url: watchLink,\n });\n }\n\n return actionButtons;\n};\n\nexport const parseVideoResponse = data => data;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport _ from 'lodash';\nimport Icon from 'components/Icon';\nimport Style from '../VideoModal.module.scss';\nimport { getActionButtons } from '../VideoModalHelpers';\n\nexport default function ActionButtons({ videoData = null }) {\n const actionButtons = getActionButtons(videoData);\n return (\n <div className={Style.actionButtons}>\n {_.map(actionButtons, ({ icon, viewBox, text, url }) => {\n if (!text) return null;\n const iconElement = icon && (\n <Icon className={Style.actionButtonIcon} icon={icon} viewBox={viewBox} color=\"white\" />\n );\n return (\n <Link key={text} className={Style.actionButton} to={url}>\n {iconElement}\n {text}\n </Link>\n );\n })}\n </div>\n );\n}\n\nActionButtons.propTypes = {\n videoData: PropTypes.shape({}),\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport VideoContainer from 'components/VideoContainer';\nimport WatchDetail from 'components/WatchDetail';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { isStaticRender } from 'helpers/ContentHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { helperGetHomeUrl } from 'helpers/RouteHelper';\nimport {\n playerPlay,\n playerPause,\n playerHideControls,\n playerSetFullscreen,\n setStillWatchingShowTimeout,\n setStillWatchingHideTimeout,\n stillWatchingHideCb,\n stillWatchingShowCb,\n VOD,\n} from 'helpers/PlayerHelper';\nimport { fetchVideo, fetchVideoPanel, clearVideo } from './VideoModalActions';\nimport { getVideoContainerProps, getWatchDetailProps } from './VideoModalHelpers';\nimport ActionButtons from './components/ActionButtons';\nimport watchDetailTheme from './WatchDetail.module.scss';\nimport videoContainerTheme from './VideoContainer.module.scss';\nimport Style from './VideoModal.module.scss';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n enableStillWatchingTimeout: false,\n },\n [SITE_PLATFORM_WEB]: {\n enableStillWatchingTimeout: false,\n },\n [SITE_PLATFORM_TABLET]: {\n enableStillWatchingTimeout: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n enableStillWatchingTimeout: false,\n },\n};\n\nclass VideoModal extends Component {\n constructor(props) {\n super(props);\n this.state = {\n adPlaying: false,\n firstFrame: false,\n isAuthError: null,\n isFullscreen: false,\n playerLoading: true,\n showControls: null,\n showStillWatching: false,\n stickyControls: false,\n stillWatchingShowTimeout: null,\n stillWatchingHideTimeout: null,\n // isVideoOverlayPresent is used in stillWatchingHideCb and stillWatchingShowCb\n // eslint-disable-next-line react/no-unused-state\n isVideoOverlayPresent: false,\n };\n this.stillWatchingHideCb = stillWatchingHideCb.bind(this);\n this.stillWatchingShowCb = stillWatchingShowCb.bind(this);\n }\n\n componentDidMount() {\n const { videoId, accessToken, deviceId, fetchVideoPanel } = this.props;\n if (fetchVideoPanel && !isStaticRender()) {\n fetchVideoPanel(videoId, accessToken, deviceId);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { accessToken, authSuccess, deviceId, fetchVideo, panelVideo } = this.props;\n const {\n accessToken: prevAccessToken,\n authSuccess: prevAuthSuccess,\n panelVideo: prevPanelVideo,\n } = prevProps;\n const playerScreenUrl = _.get(panelVideo, 'playerScreenUrl');\n const prevPlayerScreenUrl = _.get(prevPanelVideo, 'playerScreenUrl');\n const playerScreenUrlChanged = playerScreenUrl !== prevPlayerScreenUrl;\n const authSuccessChanged = authSuccess !== prevAuthSuccess;\n const accessTokenChanged = accessToken !== prevAccessToken;\n const shouldFetchVideo =\n playerScreenUrl &&\n authSuccess &&\n accessToken &&\n (authSuccessChanged || playerScreenUrlChanged || accessTokenChanged);\n\n if (shouldFetchVideo) {\n fetchVideo(playerScreenUrl, accessToken, deviceId);\n }\n }\n\n componentWillUnmount() {\n const { clearVideo } = this.props;\n clearVideo();\n }\n\n setStickyControls = sticky => {\n this.setState({ stickyControls: sticky });\n };\n\n callbackShow() {\n const { breakpoint, account } = this.props;\n const { firstFrame, stillWatchingShowTimeout, stillWatchingHideTimeout } = this.state;\n const profileId = _.get(account, 'profileId');\n const enableStillWatchingTimeout = BREAKPOINTS[breakpoint];\n clearTimeout(stillWatchingShowTimeout);\n\n if (enableStillWatchingTimeout && firstFrame) {\n playerSetFullscreen(false);\n playerPause();\n playerHideControls();\n this.stillWatchingShowCb({ profileId });\n const newStillWatchingHideTimeout = setStillWatchingHideTimeout({\n cb: () => {\n playerPlay();\n this.stillWatchingHideCb();\n clearTimeout(stillWatchingHideTimeout);\n window.location = helperGetHomeUrl();\n },\n });\n this.setState({ stillWatchingHideTimeout: newStillWatchingHideTimeout });\n }\n }\n\n resetStillWatchingTimeout() {\n const { breakpoint } = this.props;\n const { firstFrame, stillWatchingShowTimeout } = this.state;\n clearTimeout(stillWatchingShowTimeout);\n const durationSeconds = _.get(window.ExternalConfig, 'stillWatching.vodLimitSeconds');\n const duration = durationSeconds ? durationSeconds * 1000 : null;\n const enableStillWatchingTimeout = BREAKPOINTS[breakpoint];\n if (enableStillWatchingTimeout && firstFrame) {\n const newStillWatchingShowTimeout = setStillWatchingShowTimeout({\n cb: this.callbackShow,\n duration,\n });\n this.setState({ stillWatchingShowTimeout: newStillWatchingShowTimeout });\n }\n }\n\n renderPlayer({ video }) {\n const {\n accessToken,\n account,\n adblock,\n anonymousId,\n anonymousLogin,\n authSuccess,\n blackoutConfig,\n blackoutDefinitions,\n breakpoint,\n deviceId,\n isStatic,\n openSignIn,\n openSignUp,\n profileId,\n provider,\n releaseUrl,\n renderAuthContainer,\n setAccountCloseIgnoreRedirect,\n setAuthorizationToken,\n setIsPlayerLoaded,\n setInterval,\n setIsAuthenticated,\n setMVPDToAppState,\n setMVPDLogoutDataToAppState,\n setOverlay,\n setProvider,\n } = this.props;\n const {\n adPlaying,\n playerLoading,\n showControls,\n showStillWatching,\n stickyControls,\n } = this.state;\n const videoContainerProps = getVideoContainerProps(video);\n const containerClass = null;\n const continuous = false;\n const mediaInfo = video;\n const restart = false;\n const restartPlayerScreenUrl = null;\n const requestSignIn = false;\n const showResumeCTA = false;\n const shouldShowControls = showControls || stickyControls;\n const durationSeconds = _.get(window.ExternalConfig, 'stillWatching.vodLimitSeconds');\n const duration = durationSeconds ? durationSeconds * 1000 : null;\n\n return (\n <div className={Style.videoContainerWrapper}>\n <VideoContainer\n {...videoContainerProps}\n account={account}\n authSuccess={authSuccess}\n adblock={adblock}\n anonymousId={anonymousId}\n anonymousLogin={anonymousLogin}\n backfade={shouldShowControls && !adPlaying}\n blackoutConfig={blackoutConfig}\n blackoutDefinitions={blackoutDefinitions}\n breakpoint={breakpoint}\n containerClass={containerClass}\n continuous={continuous}\n deviceId={deviceId}\n isAltHeader={false}\n isStatic={isStatic}\n mediaInfo={mediaInfo}\n mode={VOD}\n onStillWatchingClose={() => {\n this.resetStillWatchingTimeout();\n this.setState({ showStillWatching: false });\n playerPlay();\n }}\n openSignIn={openSignIn}\n openSignUp={openSignUp}\n renderAuthContainer={renderAuthContainer}\n playerConfig={{\n mediaInfo,\n percentWatched: 0,\n continuous,\n restart,\n restartPlayerScreenUrl,\n onShowControls: e => {\n const { showControls: oldShowControls, isAuthError: lclIsAuthError } = this.state;\n if (oldShowControls !== e && !lclIsAuthError) {\n this.setState({ showControls: e });\n }\n },\n onAdPodStart: () => {\n this.setState({\n adPlaying: true,\n playerLoading: false,\n });\n },\n onAdPodComplete: () => {\n this.setState({ adPlaying: false });\n },\n onRemovePlayer: () => {\n const { isFullscreen: fullScreen } = this.state;\n if (fullScreen) playerSetFullscreen(false);\n },\n onPlayerLoadComplete: () => {\n const { isAuthError: lclIsAuthError } = this.state;\n this.setState({ playerLoading: false });\n const player = _.get(window, 'player');\n if (lclIsAuthError && player && player.remove) player.remove();\n },\n onFirstFrame: async () => {\n const {\n anonymousAccount: currentAnonymousAccount,\n account: currentAccount,\n anonymousLogin: currentAnonymousLogin,\n anonymousId: currentAnonymousId,\n } = this.props;\n const loginAnonymousUser =\n !currentAccount &&\n !currentAnonymousAccount &&\n currentAnonymousId &&\n currentAnonymousLogin;\n if (loginAnonymousUser) {\n await currentAnonymousLogin({ deviceId: currentAnonymousId });\n }\n const newStillWatchingShowTimeout = setStillWatchingShowTimeout({\n cb: this.callbackShow,\n duration,\n });\n this.setState({\n stillWatchingShowTimeout: newStillWatchingShowTimeout,\n playerLoading: false,\n firstFrame: true,\n });\n },\n onAdLoadStart: () => {},\n onAdLoadComplete: () => {},\n onMediaStart: () => {},\n onMediaPlaying: () => {},\n onContentStart: () => {},\n onContentPlaying: () => {},\n onContentComplete: () => {},\n onMediaComplete: () => {\n const { toggleVideoModal } = this.props;\n toggleVideoModal({});\n\n this.setState({ firstFrame: false });\n },\n onFullScreen: e => {\n const { fullscreen } = e;\n this.setState({ isFullscreen: fullscreen });\n },\n onUserInteraction: () => {\n const { stillWatchingShowTimeout } = this.state;\n clearTimeout(stillWatchingShowTimeout);\n const newStillWatchingShowTimeout = setStillWatchingShowTimeout({\n cb: this.callbackShow,\n duration,\n });\n this.setState({ stillWatchingShowTimeout: newStillWatchingShowTimeout });\n },\n onChangeContinuous: () => {},\n }}\n playerLoading={playerLoading}\n profileId={profileId}\n profileToken={accessToken}\n provider={provider}\n releaseURL={releaseUrl}\n restart={restart}\n requestSignIn={requestSignIn}\n setAccountCloseIgnoreRedirect={setAccountCloseIgnoreRedirect}\n setAuthError={value => this.setState({ isAuthError: value })}\n setAuthorizationToken={setAuthorizationToken}\n setInterval={setInterval}\n setIsAuthenticated={setIsAuthenticated}\n setIsPlayerLoaded={setIsPlayerLoaded}\n setMVPDToAppState={setMVPDToAppState}\n setMVPDLogoutDataToAppState={setMVPDLogoutDataToAppState}\n setOverlay={setOverlay}\n setProvider={setProvider}\n setStickyControls={this.setStickyControls}\n showResumeCTA={showResumeCTA}\n showEndcards={this.showEndCards}\n showControls={shouldShowControls}\n showStillWatching={showStillWatching}\n theme={videoContainerTheme}\n />\n </div>\n );\n }\n\n render() {\n const { toggleVideoModal, panelVideo, video, videoData } = this.props;\n return (\n <div className={Style.container}>\n <div className={Style.overlay} onClick={toggleVideoModal} />\n <div className={Style.innerContainer}>\n {this.renderPlayer({ video: video || panelVideo })}\n <WatchDetail {...getWatchDetailProps(videoData)} isModal theme={watchDetailTheme} />\n <ActionButtons videoData={videoData} />\n </div>\n </div>\n );\n }\n}\n\nfunction mapStateToProps({ videoModal }) {\n return {\n panelVideo: videoModal.panelVideo,\n releaseUrl: videoModal.releaseUrl,\n video: videoModal.video,\n };\n}\n\nexport default connect(mapStateToProps, {\n clearVideo,\n fetchVideo,\n fetchVideoPanel,\n})(VideoModal);\n\nVideoModal.defaultProps = {\n accessToken: null,\n account: null,\n adblock: false,\n anonymousAccount: null,\n anonymousId: null,\n anonymousLogin: noop,\n authSuccess: false,\n blackoutConfig: {},\n blackoutDefinitions: {},\n deviceId: null,\n openSignIn: noop,\n openSignUp: noop,\n panelVideo: null,\n profileId: null,\n provider: {},\n releaseUrl: null,\n renderAuthContainer: noop,\n setAccountCloseIgnoreRedirect: noop,\n setIsAuthenticated: noop,\n setIsPlayerLoaded: noop,\n setMVPDLogoutDataToAppState: noop,\n setMVPDToAppState: noop,\n setOverlay: noop,\n setProvider: noop,\n video: null,\n videoData: null,\n};\n\nVideoModal.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n adblock: PropTypes.bool,\n anonymousAccount: PropTypes.shape({}),\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func,\n authSuccess: PropTypes.bool,\n blackoutConfig: PropTypes.shape({}),\n blackoutDefinitions: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n clearVideo: PropTypes.func.isRequired,\n deviceId: PropTypes.string,\n fetchVideo: PropTypes.func.isRequired,\n fetchVideoPanel: PropTypes.func.isRequired,\n isStatic: PropTypes.bool.isRequired,\n openSignIn: PropTypes.func,\n openSignUp: PropTypes.func,\n panelVideo: PropTypes.shape({}),\n profileId: PropTypes.string,\n provider: PropTypes.shape({}),\n releaseUrl: PropTypes.string,\n renderAuthContainer: PropTypes.func,\n setAccountCloseIgnoreRedirect: PropTypes.func,\n setAuthorizationToken: PropTypes.func.isRequired,\n setInterval: PropTypes.func.isRequired,\n setIsAuthenticated: PropTypes.func,\n setIsPlayerLoaded: PropTypes.func,\n setMVPDLogoutDataToAppState: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setOverlay: PropTypes.func,\n setProvider: PropTypes.func,\n toggleVideoModal: PropTypes.func.isRequired,\n video: PropTypes.shape({}),\n videoData: PropTypes.shape({}),\n videoId: PropTypes.string.isRequired,\n};\n","import axios from 'axios';\nimport {\n helperGetApiHeaders,\n helperGetApiRouteById,\n helperConvertApiRoute,\n axiosErrorHandler,\n} from 'helpers/ApiHelper';\n\nexport const FETCH_VIDEO = 'FETCH_VIDEO';\nexport const FETCH_VIDEO_PANEL = 'FETCH_VIDEO_PANEL';\nexport const CLEAR_VIDEO = 'CLEAR_VIDEO';\n\nexport function fetchVideoPanel(id, accessToken, deviceId) {\n const pageType = 'videoDetail';\n const request = axios\n .get(\n helperGetApiRouteById(pageType, id, '{videoId}'),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_VIDEO_PANEL,\n payload: request,\n };\n}\n\nexport function fetchVideo(url, accessToken, deviceId) {\n const pageType = 'videoDetail';\n const request = axios\n .get(\n helperConvertApiRoute(url),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_VIDEO,\n payload: request,\n };\n}\n\nexport function clearVideo() {\n return {\n type: CLEAR_VIDEO,\n };\n}\n","import axios from 'axios';\nimport {\n helperGetApiHeaders,\n helperGetApiRoute,\n helperConvertApiRoute,\n axiosErrorHandler,\n} from 'helpers/ApiHelper';\n\nexport const FETCH_SHOWS = 'FETCH_SHOWS';\nexport const RESET_STORE_SHOWS = 'RESET_STORE_SHOWS';\nconst PAGE_TYPE_RETIRED_SHOWS = 'retiredShows';\nconst PAGE_TYPE_SHOWS = 'shows';\nexport const SET_SUGGESTED_TAB = 'SET_SUGGESTED_TAB';\n\nexport function fetchShows({\n accessToken,\n url = '',\n filteredPanel = null,\n tabId = '',\n deviceId = '',\n isRetiredShowsPage = false,\n}) {\n const pageType = isRetiredShowsPage ? PAGE_TYPE_RETIRED_SHOWS : PAGE_TYPE_SHOWS;\n const route = helperConvertApiRoute(url) || helperGetApiRoute(pageType);\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId });\n let payload;\n if (filteredPanel) {\n payload = { data: filteredPanel, tabId };\n } else {\n payload = axios.get(route, headers).catch(axiosErrorHandler);\n }\n\n return {\n type: FETCH_SHOWS,\n payload,\n };\n}\n\nexport function resetStore() {\n return {\n type: RESET_STORE_SHOWS,\n };\n}\n\nexport function setSuggestedTab({ suggestedNetwork, suggestedFilter }) {\n return {\n type: SET_SUGGESTED_TAB,\n payload: {\n suggestedNetwork,\n suggestedFilter,\n },\n };\n}\n","import axios from 'axios';\nimport {\n helperGetApiHeaders,\n helperGetApiRoute,\n helperConvertApiRoute,\n helperGetLiveUpNextUrl,\n axiosErrorHandler,\n} from 'helpers/ApiHelper';\n\nexport const FETCH_HEADER_SEARCH = 'FETCH_HEADER_SEARCH';\nexport const REFRESH_SEARCH_PANEL = 'REFRESH_SEARCH_PANEL';\nexport const FETCH_NEXT_SEARCH = 'FETCH_NEXT_SEARCH';\nexport const SET_FETCHING_SEARCH = 'SET_FETCHING_SEARCH';\nexport const FETCH_UP_NEXT_SEARCH = 'FETCH_UP_NEXT_SEARCH';\nexport const SET_TAB = 'SET_TAB';\nexport const RESET_NEXT_PAGE = 'RESET_NEXT_PAGE';\nexport const RESET = 'RESET';\n\nexport function fetchSearch({ accessToken, url, deviceId } = {}) {\n let pageType = 'browse';\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId });\n const fetchUrl = helperConvertApiRoute(url) || helperGetApiRoute(pageType);\n\n if (url) pageType = null;\n const request = axios.get(fetchUrl, headers).catch(axiosErrorHandler);\n\n return {\n type: FETCH_HEADER_SEARCH,\n payload: request,\n };\n}\n\nexport function fetchNextPage(accessToken, url, pageType, deviceId) {\n if (url && pageType) {\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId });\n const request = axios.get(helperConvertApiRoute(url), headers).catch(axiosErrorHandler);\n\n return {\n type: FETCH_NEXT_SEARCH,\n payload: request,\n };\n }\n return { type: FETCH_NEXT_SEARCH };\n}\n\nexport function refreshSearchPanel(accessToken, url, deviceId) {\n const request = axios\n .get(helperConvertApiRoute(url), helperGetApiHeaders({ accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: REFRESH_SEARCH_PANEL,\n payload: request,\n };\n}\n\nexport function fetchUpNext({ videoId, accessToken, deviceId }) {\n const { url, pageType } = helperGetLiveUpNextUrl({ videoId });\n const request = axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_UP_NEXT_SEARCH,\n payload: request,\n };\n}\n\nexport function setFetching(value) {\n return {\n type: SET_FETCHING_SEARCH,\n payload: value,\n };\n}\n\nexport function setTab(value, selectedFilterIdx, headline, collectionType) {\n return {\n type: SET_TAB,\n payload: {\n value,\n selectedFilterIdx,\n headline,\n collectionType,\n },\n };\n}\n\nexport function resetNextPage() {\n return {\n type: RESET_NEXT_PAGE,\n payload: {},\n };\n}\n\nexport function reset() {\n return {\n type: RESET,\n payload: {},\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Dotdotdot from 'react-dotdotdot';\n\nconst Header = ({ image = '', text = '', theme = {} }) => (\n <>\n {image ? (\n <div className={theme.logo}>\n <img src={image} alt={text} />\n </div>\n ) : (\n <div className={theme.headline}>\n <Dotdotdot clamp={3}>{text}</Dotdotdot>\n </div>\n )}\n </>\n);\n\nexport default Header;\n\nHeader.propTypes = {\n image: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n theme: PropTypes.shape({}).isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Dotdotdot from 'react-dotdotdot';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\n\nconst Description = ({ description = '', theme = {} }) =>\n description && (\n <div className={theme.description}>\n <div className={theme.descriptionText}>\n {isBrowserIE() ? <Dotdotdot clamp={2}>{description}</Dotdotdot> : description}\n </div>\n </div>\n );\n\nexport default Description;\n\nDescription.propTypes = {\n description: PropTypes.string.isRequired,\n theme: PropTypes.shape({}).isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst MarketingBannerCTA = ({ ctaText, handleBannerClick, theme = {}, url }) => {\n if (!ctaText || !url) return null;\n const handleCTAClick = e => {\n e.stopPropagation();\n handleBannerClick({ page_action_location: 'cta' });\n };\n\n const ctaProps = {\n className: theme.CTA,\n onClick: handleCTAClick,\n };\n\n return <button {...ctaProps}>{ctaText}</button>;\n};\n\nexport default MarketingBannerCTA;\n\nMarketingBannerCTA.propTypes = {\n ctaText: PropTypes.string.isRequired,\n handleBannerClick: PropTypes.func.isRequired,\n theme: PropTypes.shape({}).isRequired,\n url: PropTypes.string.isRequired,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport { Link } from 'react-router';\nimport VideoTile from 'components/VideoTile';\nimport { renderImage, getDynamicImage, MARKET_VIDEO_IMAGE } from 'helpers/ImageHelper';\nimport { isInternalLink } from 'helpers/ContentHelper';\nimport { helperGoToRelativeUrl } from 'helpers/RouteHelper';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport Header from './Header';\nimport Description from './Description';\nimport MarketingButtonCTA from './MarketingButtonCTA';\nimport Style from './MarketingBanner.module.scss';\n\nconst MarketingBanner = ({\n adjacentCollectionAbove = '',\n alternativeHeadline = '',\n autoPlayStill = null,\n autoPlayVideo = null,\n bannerDimensions = '',\n breakpoint = null,\n ctaText = '',\n headline = '',\n images = {},\n name = '',\n url = '',\n}) => {\n const [isVisible, setVisible] = useState(false);\n const image = _.get(autoPlayStill, 'default.url', '');\n const video = _.get(autoPlayVideo, 'default.url', '');\n const logo = _.get(images, 'promoImage', '');\n\n const navigateToURL = () => {\n if (isInternalLink(url)) {\n helperGoToRelativeUrl(url);\n }\n };\n\n const handleBannerClick = ({ page_action_location }) => {\n const trackEventProps = _.pickBy({\n page_action_location,\n page_button_text: ctaText,\n page_collection_title: adjacentCollectionAbove,\n page_item_dimension: bannerDimensions,\n page_item_state: 'autoplay video',\n page_item_subtitle: alternativeHeadline,\n page_item_title: headline || name,\n page_item_type: 'marketing video banner',\n });\n\n handleAnalytics({\n event: Events.BANNER_CLICKED,\n payload: { ...trackEventProps },\n callback: navigateToURL,\n });\n };\n if (!image && !video) return null;\n\n const linkProps = {\n onClick: () => {\n handleBannerClick({ page_action_location: 'whole banner' });\n },\n to: isInternalLink(url) ? null : url,\n target: isInternalLink(url) ? null : '_blank',\n };\n\n const markingImage = getDynamicImage({\n breakpoint,\n context: MARKET_VIDEO_IMAGE,\n url: image,\n });\n\n return (\n <VisibilitySensor onChange={visibility => setVisible(visibility)}>\n <Link {...linkProps}>\n <div className={Style.marketingBanner}>\n <div className={Style.contentContainer}>\n <Header image={logo} text={headline} theme={Style} />\n <Description description={alternativeHeadline} theme={Style} />\n <MarketingButtonCTA\n ctaText={ctaText}\n handleBannerClick={handleBannerClick}\n theme={Style}\n url={url}\n />\n </div>\n <div className={Style.displayContainer}>\n <div className={Style.videoImage}>\n <VideoTile\n data-test=\"marketing-video\"\n id={`marketing-video-${video}`}\n load\n loop\n play={isVisible || !video}\n timer={0}\n renderImage={renderImage}\n video={video}\n image={markingImage}\n videoPosterStyle=\"marketing-video\"\n />\n </div>\n <div className={Style.shadow} />\n </div>\n </div>\n </Link>\n </VisibilitySensor>\n );\n};\n\nexport default MarketingBanner;\n\nMarketingBanner.propTypes = {\n alternativeHeadline: PropTypes.string.isRequired,\n adjacentCollectionAbove: PropTypes.string.isRequired,\n autoPlayStill: PropTypes.shape({}).isRequired,\n autoPlayVideo: PropTypes.shape({}).isRequired,\n bannerDimensions: PropTypes.string.isRequired,\n breakpoint: PropTypes.string,\n ctaText: PropTypes.string.isRequired,\n headline: PropTypes.string,\n images: PropTypes.shape({}).isRequired,\n name: PropTypes.string,\n url: PropTypes.string.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Header = props => {\n const { featuredTitleImage, headline, isFirst, theme } = props;\n\n if (featuredTitleImage) {\n const headerElement = (\n <div className={theme.imageOnly}>\n <img className={theme.headlineImg} src={featuredTitleImage} alt={headline} />\n </div>\n );\n return isFirst ? <h1>{headerElement}</h1> : headerElement;\n }\n\n if (headline) {\n return <div className={theme.headline}>{headline}</div>;\n }\n\n return <div className={theme.emptyHeader} />;\n};\n\nexport default Header;\n\nHeader.defaultProps = {\n featuredTitleImage: null,\n headline: null,\n isFirst: false,\n theme: {},\n};\n\nHeader.propTypes = {\n featuredTitleImage: PropTypes.string,\n headline: PropTypes.string,\n isFirst: PropTypes.bool,\n theme: PropTypes.shape({}),\n};\n","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Slider from 'react-slick';\nimport Icon from 'components/Icon';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport Header from './components/Header';\nimport Style from '../../Carousel.module.scss';\n\nclass Carousel extends Component {\n constructor(props) {\n super(props);\n this.state = {\n slideIndex: 0,\n };\n\n this.nextSlide = this.nextSlide.bind(this);\n this.previousSlide = this.previousSlide.bind(this);\n this.shouldShowArrows = this.shouldShowArrows.bind(this);\n }\n\n getPrevArrow() {\n const { slideIndex } = this.state;\n if (!this.shouldShowArrows() || slideIndex === 0) return null;\n const { carouselArrowOnClick } = this.props;\n return (\n <button\n className=\"slick-arrow slick-prev\"\n type=\"button\"\n data-role=\"none\"\n aria-label=\"show previous content\"\n onClick={() => {\n this.previousSlide();\n carouselArrowOnClick();\n }}\n >\n <Icon color=\"white\" viewBox=\"0 0 43 44\" icon=\"carousel-arrow-left\" ariaHidden />\n </button>\n );\n }\n\n getNextArrow(itemsLength) {\n const { slideIndex } = this.state;\n const { carouselArrowOnClick, slidesToShow } = this.props;\n const difference = itemsLength - slideIndex;\n if (!this.shouldShowArrows() || difference <= slidesToShow) return null;\n return (\n <button\n className=\"slick-arrow slick-next\"\n type=\"button\"\n aria-label=\"show next content\"\n data-role=\"none\"\n onClick={() => {\n this.nextSlide();\n carouselArrowOnClick();\n }}\n >\n <Icon color=\"white\" viewBox=\"0 0 43 44\" icon=\"carousel-arrow-right\" ariaHidden />\n </button>\n );\n }\n\n nextSlide() {\n this.slider.slickNext();\n }\n\n previousSlide() {\n this.slider.slickPrev();\n }\n\n shouldShowArrows() {\n const { children, showCarouselArrows, slidesToShow, useScrollableDiv } = this.props;\n const itemsLength = React.Children.count(children);\n const moreSlides = itemsLength > slidesToShow;\n const hideArrows = showCarouselArrows === false;\n const showArrows = useScrollableDiv || !children || hideArrows ? false : moreSlides;\n return showArrows;\n }\n\n renderItems() {\n const { addCarouselPlaceholders, children, slidesToShow } = this.props;\n const { slideIndex } = this.state;\n const itemsLength = React.Children.count(children);\n if (!children || itemsLength === 0) return null;\n\n const remainder = slideIndex % itemsLength;\n let itemToScaleFromLeft;\n let itemToScaleFromRight;\n\n if (remainder === 0) {\n itemToScaleFromRight = slidesToShow - 1;\n } else if (remainder >= slidesToShow) {\n const remainingItems = itemsLength - slideIndex;\n if (remainingItems > slidesToShow) {\n itemToScaleFromLeft = slideIndex;\n itemToScaleFromRight = slidesToShow + slideIndex - 1;\n } else {\n itemToScaleFromLeft = itemsLength - slidesToShow;\n }\n }\n\n const tiles = React.Children.map(children, (child, idx) =>\n React.cloneElement(child, {\n scaleFromLeft: idx === itemToScaleFromLeft,\n scaleFromRight: idx === itemToScaleFromRight,\n }),\n );\n\n const shouldAddPlaceholderElements =\n tiles && addCarouselPlaceholders && itemsLength < slidesToShow;\n if (shouldAddPlaceholderElements) {\n const placeholderCount = slidesToShow - itemsLength;\n for (let i = 0; i < placeholderCount; i += 1) {\n tiles.push(<div key={`placeholder-${i}`} className=\"carouselPlaceholder\" />);\n }\n }\n\n return tiles;\n }\n\n renderHeader() {\n const { featuredTitleImage, headline, isFirst } = this.props;\n return (\n <Header\n featuredTitleImage={featuredTitleImage}\n headline={headline}\n isFirst={isFirst}\n theme={Style}\n />\n );\n }\n\n renderSliderDesktop() {\n const {\n autoplaySpeed,\n allowScrollLock,\n isInfinite,\n panel,\n slidesToShow,\n disableScroll,\n updateVisibleSlides,\n slidesToScroll,\n } = this.props;\n\n let autoplaySettings = {};\n\n if (autoplaySpeed) {\n autoplaySettings = {\n autoplay: true,\n autoplaySpeed,\n };\n }\n\n const isIE = isBrowserIE();\n const useTransform = !isIE;\n const useCSS = !isIE;\n\n const settings = {\n afterChange: slideIndex => {\n if (allowScrollLock) {\n disableScroll({ disableScroll: false, bodyOnly: true });\n }\n this.setState({ slideIndex });\n },\n arrows: false,\n draggable: this.shouldShowArrows(),\n dots: false,\n beforeChange: (prevSlide, nextSlide) => updateVisibleSlides(prevSlide, nextSlide, panel),\n infinite: isInfinite,\n slidesToShow,\n speed: 500,\n test: 'carousel-wrapper',\n slidesToScroll,\n ...autoplaySettings,\n useTransform,\n useCSS,\n lazyLoad: true,\n };\n\n return (\n <>\n {this.renderHeader()}\n <Slider\n ref={s => {\n this.slider = s;\n }}\n {...settings}\n data-test=\"shared-carousel\"\n >\n {this.renderItems()}\n </Slider>\n </>\n );\n }\n\n renderSliderMobile() {\n return (\n <div>\n {this.renderHeader()}\n <div className={Style.scrollableDiv}>{this.renderItems()}</div>\n </div>\n );\n }\n\n render() {\n const isAllCarouselItemsNull = this.renderItems().every(element => element === null);\n if (isAllCarouselItemsNull) return null;\n const { children, slidesToShow, useScrollableDiv } = this.props;\n const itemsLength = React.Children.count(children);\n const sliderContainer = [Style.container, Style.roundArrows];\n if (slidesToShow > itemsLength) {\n sliderContainer.push(Style.justifyLeft);\n }\n\n const slider = useScrollableDiv ? this.renderSliderMobile() : this.renderSliderDesktop();\n\n return (\n <div className={Style.carouselContainer}>\n {this.getPrevArrow()}\n <div className={classNames(sliderContainer)}>{slider}</div>\n {this.getNextArrow(itemsLength)}\n </div>\n );\n }\n}\n\nCarousel.defaultProps = {\n addCarouselPlaceholders: false,\n allowScrollLock: false,\n autoplaySpeed: null,\n carouselArrowOnClick: () => {},\n children: null,\n disableScroll: () => {},\n featuredTitleImage: null,\n headline: {},\n isFirst: false,\n isInfinite: true,\n panel: {},\n showCarouselArrows: true,\n slidesToScroll: 1,\n slidesToShow: 3,\n updateVisibleSlides: () => {},\n useScrollableDiv: false,\n};\n\nCarousel.propTypes = {\n addCarouselPlaceholders: PropTypes.bool,\n allowScrollLock: PropTypes.bool,\n autoplaySpeed: PropTypes.number,\n carouselArrowOnClick: PropTypes.func,\n children: PropTypes.node,\n disableScroll: PropTypes.func,\n featuredTitleImage: PropTypes.string,\n headline: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.string]),\n isFirst: PropTypes.bool,\n isInfinite: PropTypes.bool,\n panel: PropTypes.shape({}),\n showCarouselArrows: PropTypes.bool,\n slidesToScroll: PropTypes.number,\n slidesToShow: PropTypes.number,\n updateVisibleSlides: PropTypes.func,\n useScrollableDiv: PropTypes.bool,\n};\n\nexport default Carousel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { renderImage } from 'helpers/ImageHelper';\n\n// This would replace TileImage\n// TODO: implement hover logic, probably in a separate component such as <HoverImage>?\n// TODO: implement VideoHero logic, probably in a separate component such as <Video>?\nconst Image = ({ breakpoint, imageType, src, children, theme }) => (\n <div>\n {renderImage({\n breakpoint,\n imageType,\n src,\n className: theme.image,\n })}\n {children}\n </div>\n);\n\nImage.defaultProps = {\n children: [],\n theme: {},\n};\n\nImage.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n imageType: PropTypes.string.isRequired,\n src: PropTypes.string.isRequired,\n children: PropTypes.arrayOf(PropTypes.element),\n theme: PropTypes.shape({}),\n};\n\nexport default Image;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { renderImage, COLLECTION_THUMBNAIL_IMAGE } from 'helpers/ImageHelper';\nimport Image from 'components/Tile/components/Image';\nimport VideoTile from 'components/VideoTile';\n\nconst ImageElement = props => {\n const { breakpoint, hoverImage, image, isHoverActive, theme, video } = props;\n if (isHoverActive) {\n if (video) {\n const imageRenderer = opts =>\n renderImage({ breakpoint, imageType: COLLECTION_THUMBNAIL_IMAGE, ...opts });\n return (\n <VideoTile\n id={`tile-video-${video}`}\n image={image}\n load\n loop\n play\n renderImage={imageRenderer}\n timer={0}\n video={video}\n />\n );\n }\n if (hoverImage) {\n return (\n <Image\n breakpoint={breakpoint}\n imageType={COLLECTION_THUMBNAIL_IMAGE}\n src={hoverImage}\n theme={theme}\n />\n );\n }\n }\n const imageSrc = image || hoverImage;\n if (imageSrc) {\n return (\n <Image\n breakpoint={breakpoint}\n imageType={COLLECTION_THUMBNAIL_IMAGE}\n src={imageSrc}\n theme={theme}\n />\n );\n }\n return null;\n};\n\nexport default ImageElement;\n\nImageElement.defaultProps = {\n hoverImage: null,\n image: null,\n video: null,\n};\n\nImageElement.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n hoverImage: PropTypes.string,\n image: PropTypes.string,\n isHoverActive: PropTypes.bool.isRequired,\n theme: PropTypes.shape({}).isRequired,\n video: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\n\nconst PlayButton = ({ text, theme, thinIcon }) => {\n let icon = 'play-button';\n let viewBox = null;\n if (thinIcon) {\n icon = 'play-button-thin';\n viewBox = '1 1 36 36';\n }\n return (\n <div className={theme.play}>\n <Icon icon={icon} color=\"white\" size=\"full\" viewBox={viewBox} />\n {text && <div className={theme.playText}>{text}</div>}\n </div>\n );\n};\n\nPlayButton.defaultProps = {\n text: null,\n thinIcon: false,\n};\n\nPlayButton.propTypes = {\n text: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n thinIcon: PropTypes.bool,\n};\n\nexport default PlayButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getNetworkLogoUrl } from 'helpers/ContentHelper';\n\nconst NetworkImage = ({ network, theme }) => {\n if (!network) return null;\n return <img className={theme.image} alt={network} src={getNetworkLogoUrl(network)} />;\n};\n\nNetworkImage.propTypes = {\n theme: PropTypes.shape({ image: PropTypes.string }).isRequired,\n network: PropTypes.string.isRequired,\n};\n\nexport default NetworkImage;\n","import React from 'react';\nimport NetworkImage from 'components/Tile/components/NetworkImage';\nimport theme from './style.css';\n\nconst CollectionNetworkImage = props => <NetworkImage theme={theme} {...props} />;\n\nexport default CollectionNetworkImage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Badge from 'components/Badge';\nimport PlayButton from 'components/Tile/components/PlayButton';\nimport NetworkImage from '../../../NetworkImage';\n\nconst DefaultOverlay = ({ badge, displayBrand, showPlayButton, theme }) => (\n <>\n <Badge badge={badge} theme={theme} />\n {showPlayButton && <PlayButton theme={theme} />}\n <div className={theme.networkImage}>\n <NetworkImage network={displayBrand} />\n </div>\n </>\n);\n\nexport default DefaultOverlay;\n\nDefaultOverlay.defaultProps = {\n badge: null,\n displayBrand: null,\n showPlayButton: false,\n theme: {},\n};\n\nDefaultOverlay.propTypes = {\n badge: PropTypes.string,\n displayBrand: PropTypes.string,\n showPlayButton: PropTypes.bool,\n theme: PropTypes.shape({}),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { get } from 'lodash';\nimport Favorite, { FAVORITE_TYPE_LINK } from 'components/Favorite';\n\nconst FavoriteLink = props => {\n const { favoriteData, favoritesManager, theme, withLabel } = props;\n\n if (!get(favoriteData, 'favoritableItems')) return null;\n const { showType } = favoriteData;\n const favorites = get(favoritesManager, 'favorites');\n return (\n <Favorite\n theme={theme}\n manager={favoritesManager}\n favorites={favorites}\n data={favoriteData}\n type={FAVORITE_TYPE_LINK}\n defaultText={withLabel ? `Favorite ${showType}` : ''}\n favoritedText={withLabel ? `Unfavorite ${showType}` : ''}\n stopNavigationOnClick\n />\n );\n};\n\nexport default FavoriteLink;\n\nFavoriteLink.defaultProps = {\n favoriteData: null,\n favoritesManager: null,\n withLabel: false,\n};\n\nFavoriteLink.propTypes = {\n favoriteData: PropTypes.shape({}),\n favoritesManager: PropTypes.shape({}),\n theme: PropTypes.shape({}).isRequired,\n withLabel: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Dotdotdot from 'react-dotdotdot';\nimport { Link } from 'react-router';\nimport Badge from 'components/Badge';\nimport PlayButton from 'components/Tile/components/PlayButton';\nimport FavoriteLink from '../../../FavoriteLink';\nimport style from './style.css';\n\nconst HoverOverlay = ({\n badge,\n description,\n favoriteData,\n favoritesManager,\n metadata,\n network,\n networkLogoUrl,\n onTitleClick,\n playButtonText,\n showPlayButton,\n subtitle,\n theme,\n title,\n titleLink,\n upcomingDate,\n}) => {\n const favoriteProps = {\n favoriteData,\n favoritesManager,\n theme,\n };\n const titleDisplay = titleLink ? (\n <Link onClick={onTitleClick} to={titleLink}>\n {title}\n </Link>\n ) : (\n title\n );\n return (\n <div className={style.hoverOverlay}>\n <div className={style.innerContainer}>\n <div className={style.detailContainer}>\n <Badge theme={{ ...theme, ...style }} badge={badge} />\n <div className={style.date}>{upcomingDate}</div>\n <div className={style.title}>\n {titleDisplay}\n {!upcomingDate && (\n <span className={style.titleFavorite}>\n <FavoriteLink {...favoriteProps} />\n </span>\n )}\n </div>\n {subtitle && <div className={style.subtitle}>{subtitle}</div>}\n <div className={style.description}>\n <Dotdotdot clamp={2}>{description}</Dotdotdot>\n </div>\n </div>\n <div className={style.footer}>\n <div>\n {!!networkLogoUrl && (\n <img alt={network} className={style.networkLogo} src={networkLogoUrl} />\n )}\n {metadata && <span className={style.metadata}>{metadata}</span>}\n </div>\n {showPlayButton && <PlayButton text={playButtonText} theme={style} />}\n <div>{upcomingDate && <FavoriteLink {...favoriteProps} withLabel />}</div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default HoverOverlay;\n\nHoverOverlay.defaultProps = {\n badge: null,\n description: null,\n favoriteData: null,\n favoritesManager: null,\n metadata: null,\n network: null,\n networkLogoUrl: null,\n onTitleClick: () => {},\n playButtonText: null,\n showPlayButton: true,\n subtitle: null,\n theme: {},\n title: null,\n titleLink: null,\n upcomingDate: null,\n};\n\nHoverOverlay.propTypes = {\n badge: PropTypes.string,\n description: PropTypes.string,\n favoriteData: PropTypes.shape({}),\n favoritesManager: PropTypes.shape({}),\n metadata: PropTypes.string,\n network: PropTypes.string,\n networkLogoUrl: PropTypes.string,\n onTitleClick: PropTypes.func,\n playButtonText: PropTypes.string,\n showPlayButton: PropTypes.bool,\n subtitle: PropTypes.string,\n theme: PropTypes.shape({}),\n title: PropTypes.string,\n titleLink: PropTypes.string,\n upcomingDate: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DefaultOverlay, HoverOverlay } from './overlays';\n\nconst ImageOverlay = props => {\n const { defaultOverlayProps, hoverOverlayProps, isHoverActive, showTileMetadataOnHover } = props;\n\n if (isHoverActive && showTileMetadataOnHover) return <HoverOverlay {...hoverOverlayProps} />;\n return <DefaultOverlay {...defaultOverlayProps} />;\n};\n\nexport default ImageOverlay;\n\nImageOverlay.propTypes = {\n defaultOverlayProps: PropTypes.shape({}).isRequired,\n hoverOverlayProps: PropTypes.shape({}).isRequired,\n isHoverActive: PropTypes.bool.isRequired,\n showTileMetadataOnHover: PropTypes.bool.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SharedProgressBar from 'components/ProgressBar';\nimport { isLive, isStaticRender } from 'helpers/ContentHelper';\n\nconst ProgressBar = props => {\n const { video, theme } = props;\n if (!video) return null;\n const { '@type': type, endDate, percentWatched, startDate } = video;\n const videoHasPercentWatched = typeof percentWatched === 'number' && percentWatched >= 0;\n const showLiveProgressBar = isLive(type) && !isStaticRender();\n const shouldRender = videoHasPercentWatched || showLiveProgressBar;\n if (!shouldRender) return null;\n\n return (\n <SharedProgressBar\n endDate={endDate}\n percentWatched={percentWatched}\n startDate={startDate}\n theme={theme}\n />\n );\n};\n\nexport default ProgressBar;\n\nProgressBar.defaultProps = {\n theme: null,\n video: null,\n};\n\nProgressBar.propTypes = {\n theme: PropTypes.shape({}),\n video: PropTypes.shape({}),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ProgressBar } from 'components/Tile/components';\nimport style from './style.css';\n\nconst CollectionTileProgressBar = ({ video }) => <ProgressBar theme={style} video={video} />;\n\nexport default CollectionTileProgressBar;\n\nCollectionTileProgressBar.defaultProps = {\n video: null,\n};\n\nCollectionTileProgressBar.propTypes = {\n video: PropTypes.shape({}),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\n\nconst TitleLink = props => {\n const { classes, link, text } = props;\n if (!text) return null;\n if (!link) return <div className={classes}>{text}</div>;\n return (\n <Link to={link} className={classes}>\n {text}\n </Link>\n );\n};\n\nexport default TitleLink;\n\nTitleLink.defaultProps = {\n classes: null,\n link: null,\n text: null,\n};\n\nTitleLink.propTypes = {\n classes: PropTypes.shape({}),\n link: PropTypes.string,\n text: PropTypes.string,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Link } from 'react-router';\nimport { isUpcomingContent } from 'helpers/ContentHelper';\nimport { homeCarouselVideoProcessor } from 'helpers/Processor/CarouselVideoProcessor';\nimport ImageElement from './components/ImageElement';\nimport ImageOverlay from './components/ImageOverlay';\nimport ProgressBar from './components/ProgressBar';\nimport TitleLink from './components/TitleLink';\nimport theme from './style.css';\n\nclass CollectionTile extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isHoverActive: false,\n };\n }\n\n toggleHover = val => this.setState({ isHoverActive: val });\n\n render() {\n const { isHoverActive } = this.state;\n const {\n breakpoint,\n favoritesManager,\n toggleUpcomingOverlay,\n item,\n itemIndex,\n onTileClick,\n scaleFromLeft,\n scaleFromRight,\n showTileMetadataOnHover,\n } = this.props;\n\n const {\n badge,\n hoverImage,\n image,\n link,\n name,\n networkIcon,\n originalItem,\n overlayProps,\n percentWatched,\n playButton,\n recommendationIdData,\n subtitle,\n subtitleLink,\n title,\n titleLink,\n video,\n } = homeCarouselVideoProcessor({ video: item });\n\n const { displayBrand } = item;\n\n const imageContainerClasses = [theme.imageContainer];\n if (scaleFromLeft) imageContainerClasses.push(theme.scaleFromLeft);\n if (scaleFromRight) imageContainerClasses.push(theme.scaleFromRight);\n\n const titleContainerClasses = [theme.titleContainer];\n\n let imageContainerLink = link;\n let imageContainerOnClick = onTileClick;\n if (isUpcomingContent(item) && toggleUpcomingOverlay) {\n imageContainerLink = null;\n imageContainerOnClick = toggleUpcomingOverlay;\n }\n // TODO: Are all these onClickProps necessary??\n const onClickProps = {\n itemIndex,\n name,\n originalItem,\n percentWatched,\n recommendationIdData,\n titleLink,\n networkIcon,\n };\n\n const defaultOverlayProps = {\n badge,\n displayBrand,\n showPlayButton: playButton,\n theme,\n };\n const hoverOverlayProps = {\n ...overlayProps,\n favoritesManager,\n theme,\n };\n\n return (\n <div className={theme.tile}>\n <Link to={imageContainerLink} onClick={() => imageContainerOnClick(onClickProps)}>\n <div\n className={classNames(imageContainerClasses)}\n onMouseEnter={() => this.toggleHover(true)}\n onMouseLeave={() => this.toggleHover(false)}\n >\n <ImageElement\n breakpoint={breakpoint}\n hoverImage={hoverImage}\n image={image}\n isHoverActive={isHoverActive}\n theme={theme}\n video={video}\n />\n <ImageOverlay\n defaultOverlayProps={defaultOverlayProps}\n hoverOverlayProps={hoverOverlayProps}\n isHoverActive={isHoverActive}\n showTileMetadataOnHover={showTileMetadataOnHover}\n />\n <ProgressBar video={item} />\n </div>\n </Link>\n <div className={classNames(titleContainerClasses)}>\n <TitleLink classes={theme.title} link={titleLink} text={title} />\n <TitleLink classes={theme.subtitle} link={subtitleLink} text={subtitle} />\n </div>\n </div>\n );\n }\n}\n\nexport default CollectionTile;\n\nCollectionTile.defaultProps = {\n favoritesManager: null,\n toggleUpcomingOverlay: null,\n item: null,\n onTileClick: () => {},\n scaleFromLeft: false,\n scaleFromRight: false,\n};\n\nCollectionTile.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n favoritesManager: PropTypes.shape({}),\n toggleUpcomingOverlay: PropTypes.func,\n item: PropTypes.shape({}),\n itemIndex: PropTypes.number.isRequired,\n onTileClick: PropTypes.func,\n scaleFromLeft: PropTypes.bool,\n scaleFromRight: PropTypes.bool,\n showTileMetadataOnHover: PropTypes.bool.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LazyLoad from 'react-lazy-load';\nimport classNames from 'classnames';\nimport { get } from 'lodash';\nimport { Link } from 'react-router';\nimport { COLLECTION_THUMBNAIL_IMAGE } from 'helpers/ImageHelper';\nimport { helperGetBaseUrlSlug } from 'helpers/RouteHelper';\nimport Image from 'components/Tile/components/Image';\nimport theme from './style.css';\n\nconst CollectionLinkTile = props => {\n const { breakpoint, item } = props;\n if (!item) return null;\n\n const { '@type': type, images, headline, link: linkData } = item;\n const image = get(images, 'seriesDetail', null);\n const url = get(linkData, '0.url');\n const baseUrlSlug = helperGetBaseUrlSlug();\n const link = `${baseUrlSlug}${url}`;\n const tileClasses = [theme.tile];\n const titleClasses = [theme.title];\n if (type === 'seeMore') tileClasses.push(theme.seeMore);\n if (!image) titleClasses.push(theme.withSpacer);\n\n return (\n <div className={classNames(tileClasses)}>\n <div className={theme.imageContainer}>\n <Link to={link}>\n <LazyLoad offset={100} debounce={false} throttle={350} unmountIfInvisible once>\n <Image\n breakpoint={breakpoint}\n imageType={COLLECTION_THUMBNAIL_IMAGE}\n src={image}\n theme={theme}\n >\n <div className={classNames(titleClasses)}>{headline}</div>\n </Image>\n </LazyLoad>\n </Link>\n </div>\n </div>\n );\n};\n\nexport default CollectionLinkTile;\n\nCollectionLinkTile.defaultProps = {\n item: null,\n};\n\nCollectionLinkTile.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n item: PropTypes.shape({}),\n};\n","import _ from 'lodash';\nimport { formatSeasonEpisode, formatSeasonEpisodeExtended } from 'helpers/VideoHelper';\nimport { isContentAuthorized } from 'components/AuthClientless/AuthHelper';\nimport { getDmaFromVideo, isPreviewPassAvailable } from 'helpers/AuthHelper';\nimport {\n isEpisode,\n isClip,\n isLive,\n isSportsContent,\n isTypeSeries,\n isTypePromo,\n getNetworkLogoUrl,\n getDisplayBrand,\n getRequiresAuth,\n formatUpcomingDate,\n getLiveMetaData,\n getMovieMetadata,\n getOriginalAirdateMetaData,\n} from 'helpers/ContentHelper';\nimport {\n COLLECTION_HERO_LOGO_IMAGE,\n getStillBackgroundImage,\n getDynamicImage,\n} from 'helpers/ImageHelper';\nimport {\n helperGetRelativeUrl,\n helperGetLiveUrl,\n helperGetSeriesDetailUrl,\n} from 'helpers/RouteHelper';\nimport { getAuthNetworksConfig } from 'helpers/ConfigHelper';\nimport { SITE_PLATFORM_MOBILE } from 'helpers/BreakpointHelper';\nimport {\n now,\n stringToDate,\n isBetween,\n isAfter,\n isBefore,\n differenceInSeconds,\n} from 'helpers/DateTimeHelper';\nimport { PROMO_TYPE_MARKETING_VIDEO } from 'screens/SeriesDetail/SeriesDetailHelpers';\n\nconst getItemData = item => {\n const { '@type': type, videos } = item;\n if (isTypePromo(type)) {\n const description = _.get(item, 'description', null) || _.get(videos, '0.description', '');\n return {\n ...item,\n ..._.get(videos, '0', {}),\n autoPlayStill: _.get(videos, '0.autoPlayStill', null),\n autoPlayVideo: _.get(videos, '0.autoPlayVideo', null),\n description,\n images: _.get(videos, '0.images', null),\n headline: _.get(item, 'headline', null),\n isCustomDescription: !!_.get(item, 'description', null),\n isPromoContent: true,\n promoBackgroundImage: _.get(item, 'images.promoImage', null),\n promoBackgroundVideo: _.get(item, 'videos.0.autoPlayVideo.default.url', null),\n promoSeriesScreenUrl: _.get(item, 'videos[0].seriesScreenUrl', null),\n promoPlayerScreenUrl: _.get(item, 'videos[0].playerScreenUrl', null),\n };\n }\n return item;\n};\n\nexport const featuredVideoProcessor = ({ item: videoEntry, breakpoint, context, categoryType }) => {\n if (!videoEntry) {\n return null;\n }\n const item = getItemData(videoEntry);\n const {\n '@type': type,\n id,\n actors,\n callSign,\n collectionType,\n contentRating,\n description,\n headline,\n alternativeHeadline,\n displaySeasonAndEpisodeCounts,\n durationInSeconds,\n endDate,\n episodeNumber,\n fullEpisodeCount,\n images,\n isAuthenticated,\n isCustomDescription,\n isPromoContent,\n isSeriesDetailAvailable,\n isUserOutOfMarket,\n livePlayerScreenUrl,\n name,\n network,\n oldestEpisode,\n originalAirDate,\n percentWatched,\n playerScreenUrl,\n preauthorizedResources,\n promoBackgroundImage,\n promoBackgroundVideo,\n promoSeriesScreenUrl,\n promoPlayerScreenUrl,\n releaseYear,\n screenUrl,\n seasonCount,\n seasonNumber,\n secondaryTitle,\n seriesName,\n seriesScreenUrl,\n seriesType,\n showCode,\n startDate,\n subRatings,\n tabIndex,\n videoId,\n videoType,\n } = item;\n const {\n badge_liveText: liveText,\n badge_upcomingText: upcomingText,\n badge_featuredText: featuredText,\n } = window.Language;\n\n const isMobile = breakpoint === SITE_PLATFORM_MOBILE;\n const displayBrand = getDisplayBrand(item);\n const requiresAuth = getRequiresAuth({ video: item, isLive: !!livePlayerScreenUrl });\n const logoType = isMobile ? 'logoCenter' : 'logo';\n const logo = _.get(images, logoType);\n const fallbackImage = _.get(images, 'still.raw');\n const mobileImage = item?.autoPlayStill?.portraitHandset?.url;\n const tabletImage = item?.autoPlayStill?.portraitTablet?.url;\n const image = _.get(images, 'raw', fallbackImage);\n const dynamicImageUrl = getDynamicImage({ breakpoint, context, url: image });\n const authNetworksConfig = getAuthNetworksConfig();\n const isAuthorized = requiresAuth\n ? isContentAuthorized(preauthorizedResources, [network], authNetworksConfig)\n : true;\n\n const fadeButtons = !isAuthorized && isAuthenticated;\n let lockButtons = requiresAuth && !isAuthenticated;\n if (isPreviewPassAvailable()) lockButtons = false;\n\n let badge = featuredText;\n if (categoryType) item.categoryType = categoryType;\n\n const seasonEpisode = formatSeasonEpisode(seasonNumber, episodeNumber);\n const networkIcon = getNetworkLogoUrl(displayBrand);\n const seriesLogo = getDynamicImage({\n breakpoint,\n context: COLLECTION_HERO_LOGO_IMAGE,\n url: _.get(logo, 'raw', null),\n });\n const videoBackgroundImage =\n isMobile && (mobileImage || tabletImage)\n ? mobileImage || tabletImage\n : _.get(item, 'autoPlayVideo.default.url', null);\n const stillBackgroundImage = getStillBackgroundImage({ item, breakpoint });\n let titleLink = helperGetRelativeUrl({\n url: isPromoContent ? promoSeriesScreenUrl : seriesScreenUrl,\n });\n let subtitle;\n let seriesPlayerScreenUrl;\n let previewPlayerScreenUrl;\n let seriesSeasonEpisode;\n let isOnAir;\n\n const metadata = formatUpcomingDate(startDate);\n const upcomingMetadata = formatUpcomingDate(startDate);\n const liveMetaData = getLiveMetaData({ startDate, durationInSeconds });\n const movieMetaData = getMovieMetadata({\n releaseYear,\n durationInSeconds,\n });\n const clipMetaData = getMovieMetadata({ durationInSeconds });\n const currentSeason =\n _.get(item, 'currentSeason.seasonNumber') || _.get(item, 'oldestEpisode.seasonNumber');\n const seasonEpisodeMetaData = formatSeasonEpisodeExtended(\n seasonCount,\n currentSeason,\n fullEpisodeCount,\n );\n const originalAirDateMetaData = getOriginalAirdateMetaData({\n originalAirDate,\n durationInSeconds,\n });\n if ((isEpisode(videoType) || isClip(videoType)) && !isCustomDescription) {\n subtitle = secondaryTitle || name;\n subtitle = `${displaySeasonAndEpisodeCounts ? seasonEpisode : ''} ${subtitle}`;\n }\n if (isTypeSeries(type)) {\n titleLink = helperGetSeriesDetailUrl(showCode);\n seriesPlayerScreenUrl = _.get(oldestEpisode, 'playerScreenUrl');\n const seriesEpisodeNumber = _.get(oldestEpisode, 'episodeNumber');\n const seriesSeasonNumber = _.get(oldestEpisode, 'seasonNumber');\n seriesSeasonEpisode = formatSeasonEpisode(seriesSeasonNumber, seriesEpisodeNumber);\n const { requiresAuthVod: seriesRequiresAuth } = getRequiresAuth({ video: oldestEpisode });\n lockButtons = seriesRequiresAuth && !isAuthenticated;\n }\n const watchLink = helperGetRelativeUrl({\n url: isPromoContent\n ? promoPlayerScreenUrl || promoSeriesScreenUrl\n : playerScreenUrl || seriesScreenUrl || seriesPlayerScreenUrl,\n });\n const previewLink = helperGetRelativeUrl({ url: previewPlayerScreenUrl });\n\n const isSportingEvent = isSportsContent(item);\n let secUntilStart = null;\n let liveVideoEnded = false;\n if (isLive(type)) {\n const currentDate = now();\n const startsAt = stringToDate(startDate);\n const endsAt = stringToDate(endDate);\n const isUpcoming = isAfter(startsAt, currentDate);\n isOnAir = isBetween(currentDate, startsAt, endsAt);\n if (isUpcoming) {\n secUntilStart = differenceInSeconds(startsAt, currentDate);\n badge = upcomingText;\n } else {\n badge = liveText;\n }\n if (!watchLink || isSportingEvent) {\n titleLink = isUpcoming ? null : helperGetLiveUrl({ callSign, videoId });\n }\n if (isAfter(currentDate, endsAt)) liveVideoEnded = true;\n }\n\n const videoData = {\n actors,\n badge,\n callSign,\n clipMetaData,\n collectionType,\n contentRating,\n description,\n headline,\n alternativeHeadline,\n descriptionLines: 2,\n displaySeasonAndEpisodeCounts,\n durationInSeconds,\n endDate,\n episodeNumber,\n fadeButtons,\n fullEpisodeCount,\n id,\n image: dynamicImageUrl,\n isLive: !!livePlayerScreenUrl,\n isOnAir,\n isSeriesDetailAvailable,\n isUserOutOfMarket,\n link: helperGetRelativeUrl({ url: screenUrl }),\n liveMetaData,\n livePlayerScreenUrl,\n liveVideoEnded,\n lockButtons,\n metadata,\n movieMetaData,\n name,\n network,\n networkIcon,\n originalAirDateMetaData,\n originalVideo: item,\n percentWatched,\n playButton: true,\n playerScreenUrl,\n previewLink,\n promoBackgroundImage,\n promoBackgroundVideo,\n releaseYear,\n requiresAuth,\n seasonCount,\n seasonEpisodeMetaData,\n seasonNumber,\n secUntilStart,\n seriesLogo,\n seriesName,\n seriesSeasonEpisode,\n seriesType,\n showCode,\n startDate,\n stillBackgroundImage,\n subRatings,\n subtitle,\n tabIndex,\n title: seriesName || name,\n titleLink,\n type,\n upcomingMetadata,\n videoBackgroundImage,\n videoId,\n videoType,\n watchLink,\n };\n\n return videoData;\n};\n\nexport const addSeeMoreItem = ({ items, collectionCTA, isFirst }) => {\n const url = _.get(collectionCTA, '0.url');\n if (!url || isFirst) return items;\n const label = _.get(collectionCTA, '0.label', 'See All');\n const seeMoreItem = {\n '@type': 'seeMore',\n id: 'seeMore',\n headline: label,\n link: collectionCTA,\n };\n return _.concat(items, seeMoreItem);\n};\n\nexport const getCollectionOrder = panels => {\n if (!panels) return null;\n const collections = _.get(panels, 'member');\n return _.map(_.compact(collections), item => item.id);\n};\n\nexport function shouldRenderDefaultPanel(panel, updateCollectionOrder) {\n const items = _.get(panel, 'items', null);\n const originalFirstItem = _.get(panel, 'items.member.0');\n if (!panel || !items || !originalFirstItem) {\n updateCollectionOrder(panel);\n return false;\n }\n if (isShowcase(panel)) updateCollectionOrder(panel);\n return true;\n}\n\nexport const getCollectionIndex = (collectionIds, currentPanelId) =>\n _.findIndex(collectionIds, id => id === currentPanelId) + 1;\n\nexport const getCollectionName = pathname => {\n const collections = _.get(window.ExternalConfig, 'navigation', []);\n const rootCollection = _.find(collections, { link: '/' });\n let collectionData = null;\n if (pathname === '/' && rootCollection) {\n collectionData = rootCollection;\n } else {\n collectionData = _.find(collections, c => c.link !== '/' && _.includes(pathname, c.link));\n }\n return _.get(collectionData, 'label');\n};\n\nexport const setShowcaseVideoDma = ({ showcase, dma }) => {\n const showcaseVideo = _.get(showcase, 'items.member.0');\n const showcaseVideoDma = getDmaFromVideo(showcaseVideo);\n if (!dma || showcaseVideoDma) return showcase;\n\n _.set(showcaseVideo, 'trackingData.context.location.dma', dma);\n const showcaseItems = _.get(showcase, 'items', {});\n const panel = {\n ...showcase,\n items: {\n ...showcaseItems,\n member: [showcaseVideo],\n },\n };\n return panel;\n};\n\nconst isAvailable = availableDate => {\n if (!availableDate) return true;\n\n const currentDateTime = now();\n return !isBefore(currentDateTime, stringToDate(availableDate));\n};\n\nconst isExpired = expirationDate => {\n if (!expirationDate) return false;\n\n const currentDateTime = now();\n return !isBefore(currentDateTime, stringToDate(expirationDate));\n};\n\nexport const isShowcase = panel => _.get(panel, 'collectionType') === 'showcase';\n\nconst getShowcases = panels => _.filter(panels, panel => isShowcase(panel));\n\nconst isTimelyShowcase = (panel = {}) => !!panel.availableDate || !!panel.expirationDate;\n\nconst getNonTimelyShowcases = panels => _.filter(panels, panel => !isTimelyShowcase(panel));\n\nconst getTimelyShowcases = panels => _.filter(panels, panel => isTimelyShowcase(panel));\n\n// NOTE: this only supports showcases with availableDate and expirationDate provided\n// Do not pass in non-timely showcases\nconst getCurrentTimelyShowcase = panels =>\n _.find(panels, panel => isAvailable(panel.availableDate) && !isExpired(panel.expirationDate));\n\nexport const getCurrentShowcase = panels => {\n const showcases = getShowcases(panels);\n const timelyShowcases = getTimelyShowcases(showcases);\n if (timelyShowcases.length) {\n const currentShowcase = getCurrentTimelyShowcase(timelyShowcases);\n if (currentShowcase) return currentShowcase;\n }\n const nonTimelyShowcases = getNonTimelyShowcases(showcases);\n return _.first(nonTimelyShowcases) || null;\n};\n\nconst getNextAvailableShowcase = panels => {\n const currentTime = now();\n const showcases = getShowcases(panels);\n const timelyShowcases = getTimelyShowcases(showcases);\n const futureShowcases = _.filter(\n timelyShowcases,\n showcase =>\n showcase.availableDate && isAfter(stringToDate(showcase.availableDate), currentTime),\n );\n return _.first(futureShowcases.sort((a, b) => a.availableDate.localeCompare(b.availableDate)));\n};\n\nexport const getTimeoutTime = (currentShowcase, panels) => {\n const currentExpirationDate = _.get(currentShowcase, 'expirationDate');\n if (currentExpirationDate) return currentExpirationDate;\n const nextShowcase = getNextAvailableShowcase(panels);\n return _.get(nextShowcase, 'availableDate', null);\n};\n\nexport const didPanelsAvailabilityChange = (prevPanels, panels) => {\n // check if any previous showcases are no longer being sent to us\n const prevShowcases = getShowcases(prevPanels);\n const prevShowcaseRemoved = _.some(prevShowcases, p => !_.find(panels, { id: p.id }));\n if (prevShowcaseRemoved) return true;\n\n // check if new showcases are available OR their available/expiration dates changed\n const showcases = getShowcases(panels);\n return _.some(showcases, panel => {\n const { id, availableDate, expirationDate } = panel;\n const prevPanel = _.find(prevShowcases, p => p.id === id);\n if (!prevPanel) return true;\n const { availableDate: prevAvailableDate, expirationDate: prevExpirationDate } = prevPanel;\n const availabilityChanged = prevAvailableDate !== availableDate;\n const expirationChanged = prevExpirationDate !== expirationDate;\n return availabilityChanged || expirationChanged;\n });\n};\n\nexport const getMarketingVideoBanner = panel => {\n if (!panel || !panel.items || !panel.items.member) return false;\n const videoBanner = _.get(panel.items.member, '0', {});\n return videoBanner.promoType === PROMO_TYPE_MARKETING_VIDEO && videoBanner;\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport Slider from 'react-slick';\nimport { withRouter } from 'react-router';\nimport Icon from 'components/Icon';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport HomeSlideHeaderComp from 'components/HomeSlideHeader';\nimport {\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n} from 'helpers/BreakpointHelper';\nimport {\n modifyBreakpoints as optimizelyModifyBreakpoints,\n userAttributeEvents as optimizelyUserAttributeEvents,\n} from 'helpers/OptimizelyHelper';\nimport { COLLECTION_HERO_IMAGE } from 'helpers/ImageHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { additionalPosterEnabled, autoplayEnabled } from 'helpers/ConfigHelper';\nimport {\n isUpcomingContent,\n isLive,\n filterMissingDeepLinkItems,\n nonFoxNowSkus,\n} from 'helpers/ContentHelper';\nimport { Element } from 'react-scroll';\nimport { Waypoint } from 'react-waypoint';\nimport { PAGE_COLLECTION } from 'helpers/PageHelper';\nimport { isVideoLive } from 'app/screens/Live/LiveHelpers';\nimport { setTealiumSourceCollectionGlobal } from '@foxcorp/delta-web-analytics';\nimport { featuredVideoProcessor } from '../../Helpers';\nimport Style from '../../Collection.module.scss';\n\nconst ALL_COLLECTIONS_SCROLL_PREFIX = 'ALL_COLLECTIONS_SCROLL_PREFIX_';\n\nconst BREAKPOINTS = (() => {\n const breakpoints = {\n [SITE_PLATFORM_WEB_LARGE]: {\n allowInfoToggle: false,\n showLiveButtons: true,\n smallCollectionHeader: false,\n useSeriesLogo: true,\n arrows: true,\n },\n [SITE_PLATFORM_WEB]: {\n allowInfoToggle: false,\n showLiveButtons: true,\n smallCollectionHeader: false,\n useSeriesLogo: true,\n arrows: true,\n },\n [SITE_PLATFORM_TABLET]: {\n allowInfoToggle: true,\n showLiveButtons: true,\n smallCollectionHeader: false,\n useSeriesLogo: true,\n arrows: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n allowInfoToggle: true,\n showLiveButtons: true,\n smallCollectionHeader: false,\n useSeriesLogo: true,\n arrows: false,\n },\n };\n\n return optimizelyModifyBreakpoints(breakpoints, 'home');\n})();\n\nfunction SampleNextArrow(props) {\n const { className = null, onClick = () => {}, customClassName = null } = props;\n return (\n <button\n className={classNames(className, customClassName)}\n onClick={onClick}\n aria-label=\"show next content\"\n >\n <Icon color=\"white\" viewBox=\"0 0 43 44\" icon=\"carousel-arrow-right\" ariaHidden />\n </button>\n );\n}\n\nSampleNextArrow.propTypes = {\n className: PropTypes.string,\n onClick: PropTypes.func,\n customClassName: PropTypes.string,\n};\n\nfunction SamplePrevArrow(props) {\n const { className = null, onClick = () => {}, customClassName = null } = props;\n return (\n <button\n className={classNames(className, customClassName)}\n onClick={onClick}\n aria-label=\"show previous content\"\n >\n <Icon color=\"white\" viewBox=\"0 0 43 44\" icon=\"carousel-arrow-left\" ariaHidden />\n </button>\n );\n}\n\nSamplePrevArrow.propTypes = {\n className: PropTypes.string,\n onClick: PropTypes.func,\n customClassName: PropTypes.string,\n};\n\nclass HeroCarousel extends Component {\n constructor(props) {\n super(props);\n this.state = {\n currentSlide: 0,\n };\n }\n\n render() {\n const {\n accessToken,\n breakpoint,\n coordinates,\n forceKeyartForShowcase,\n globalVideoStartedPlayback,\n handleSaveLiveRestart,\n handleSlideChangeTop,\n idx,\n isAuthenticated,\n isFirst,\n load,\n overlay,\n overridePlayButtonLink,\n overridePlayButtonClick,\n panel,\n panels,\n play,\n preauthorizedResources,\n removeGlobalVideoPlayer,\n removeVideoHero,\n renderHeroImage,\n router,\n saveLiveVideo,\n setCoordinates,\n setOverlay,\n setRecommendationIdOnClick,\n setSuggestedChannel,\n setVideoHero,\n streamExit,\n updatePersistGlobalVideoAfterUmount,\n videoIsLive,\n } = this.props;\n\n const { currentSlide } = this.state;\n const totalCollections = _.get(panels, 'totalItems');\n const {\n allowInfoToggle,\n arrows,\n showLiveButtons,\n smallCollectionHeader,\n useSeriesLogo,\n } = BREAKPOINTS[breakpoint];\n const { showcaseCarouselAutoscrollSeconds } = window.ExternalConfig;\n const { id: panelId, headline, images, items, collectionType, name: collectionName } = panel;\n if (!items) return null;\n const totalItems = _.get(items, 'totalItems');\n const hasSingleSlide = items.member.length === 1;\n const slideClassName = classNames(\n Style.slide,\n Style.first,\n Style.heroPanel,\n additionalPosterEnabled() ? Style.additionalPoster : null,\n currentSlide === idx ? Style.active : null,\n currentSlide === idx && !play ? Style.inactive : null,\n );\n const headerContainerClass = classNames(\n Style.homeSlideHeaderContainer,\n Style.firstHeaderContainer,\n );\n const isCarousel = items.member.length > 1;\n\n const currentMembers = _.filter(items.member, item => {\n const type = _.get(item, '@type', null);\n if (isLive(type) && !isVideoLive(item) && !isUpcomingContent(item)) return false;\n return true;\n });\n let filteredItems = currentMembers;\n if (panel?.panelType === 'videos') {\n filteredItems = filterMissingDeepLinkItems(currentMembers, nonFoxNowSkus);\n }\n const heroItems = filteredItems.map((item, idx) => {\n const isSeriesPromo = collectionType === 'seriespromo';\n const heroItem = Object.assign(item);\n heroItem.collectionType = collectionType;\n heroItem.isAuthenticated = isAuthenticated;\n heroItem.isSeriesPromo = isSeriesPromo;\n heroItem.preauthorizedResources = preauthorizedResources;\n heroItem.tabIndex = -1;\n const heroVideo = _.get(heroItem, 'videos[0]', {});\n const processedItem = featuredVideoProcessor({\n breakpoint,\n context: COLLECTION_HERO_IMAGE,\n item: heroItem,\n });\n const { description, id, isLive, name } = processedItem;\n const featuredTitle = headline || name;\n const featuredTitleImage = _.get(images, 'header.raw');\n const onSelection = ({ itemIndex }) => {\n _.set(window, 'context.segment.home.sourceName', featuredTitle);\n const selectedItem = itemIndex !== null ? itemIndex + 1 : 0;\n const data = {\n title: featuredTitle,\n collectionType,\n items,\n selectedItem,\n };\n setRecommendationIdOnClick(items, selectedItem);\n setTealiumSourceCollectionGlobal(data);\n };\n const collectionInfo = {\n collectionType,\n headline,\n isPanelRecommended: panel?.recommended,\n panelId,\n totalCollections,\n totalItems,\n uID: heroVideo?.uID,\n };\n const onPrimaryButtonClick = autoplayEnabled()\n ? e => {\n e.preventDefault();\n const url = e.target.href;\n if (globalVideoStartedPlayback) {\n updatePersistGlobalVideoAfterUmount(true, url);\n } else {\n const source = PAGE_COLLECTION;\n removeGlobalVideoPlayer({ source });\n router.push(url);\n }\n }\n : null;\n return (\n <HomeSlideHeaderComp\n accessToken={accessToken}\n allowInfoToggle={allowInfoToggle}\n breakpoint={breakpoint}\n callCollectionImpressionEvent={this.callCollectionImpressionEvent}\n collectionInfo={collectionInfo}\n coordinates={coordinates}\n description={description}\n disableSingleVideoHeroRender={!isCarousel && globalVideoStartedPlayback && !streamExit}\n disableVideoRender={forceKeyartForShowcase}\n foxAwesomeLayout\n hasSingleSlide={hasSingleSlide}\n heroImage={renderHeroImage(0, idx, isFirst)}\n idx={idx}\n isCarousel={isCarousel}\n isFirst\n isHeroCarousel\n isLive={!!isLive}\n item={processedItem}\n key={`${featuredTitle}-${id}`}\n load={load}\n onPrimaryButtonClick={onPrimaryButtonClick}\n onSelection={onSelection}\n onTitleClick={onSelection}\n onWatch={() => onSelection({ itemIndex: null })}\n overlay={overlay}\n overridePlayButtonClick={overridePlayButtonClick}\n overridePlayButtonLink={overridePlayButtonLink}\n play={!overlay}\n removeVideoHero={removeVideoHero}\n router={router}\n saveLiveRestart={handleSaveLiveRestart}\n saveLiveVideo={saveLiveVideo}\n setCoordinates={setCoordinates}\n setOverlay={setOverlay}\n setSuggestedChannel={setSuggestedChannel}\n setVideoHero={setVideoHero}\n showLiveButtons={showLiveButtons}\n smallCollectionHeader={smallCollectionHeader}\n streamExit={streamExit}\n title={featuredTitle}\n titleImage={featuredTitleImage}\n toggleVideoModal={this.toggleVideoModal}\n useSeriesLogo={useSeriesLogo}\n videoIsLive={videoIsLive}\n />\n );\n });\n\n const autoplaySpeed = showcaseCarouselAutoscrollSeconds * 1000 || 8000;\n const renderCarousel = (\n <Slider\n dots\n arrows={arrows}\n infinite\n autoplay\n useTransform={false}\n slidesToShow={1}\n autoplaySpeed={autoplaySpeed}\n ref={slider => {\n this.slider = slider;\n }}\n appendDots={dots => (\n <div className={Style.dotsContainer}>\n <ul className={Style.dotsList}>{dots}</ul>\n </div>\n )}\n customPaging={() => <div className={Style.dots} />}\n nextArrow={<SampleNextArrow customClassName={Style.rightArrow} />}\n prevArrow={<SamplePrevArrow customClassName={Style.leftArrow} />}\n beforeChange={(current, next) => {\n this.setState({ currentSlide: next });\n }}\n >\n {heroItems}\n </Slider>\n );\n\n const renderSinglItem = <div className={Style.singleSlide}>{heroItems}</div>;\n\n return (\n <VisibilitySensor\n onChange={isVisible => {\n if (this.slider) {\n if (isVisible) this.slider.slickPlay();\n else this.slider.slickPause();\n }\n }}\n >\n <div key={`videoPanel-${panelId}-${idx}`} id={panelId} className={slideClassName}>\n <Element className={headerContainerClass} name={`${ALL_COLLECTIONS_SCROLL_PREFIX}${idx}`}>\n <Waypoint\n onEnter={() => {\n handleSlideChangeTop(idx, true);\n optimizelyUserAttributeEvents().collectionItem(collectionName);\n }}\n onLeave={() => handleSlideChangeTop(idx, false)}\n topOffset=\"250px\"\n >\n <div>{isCarousel ? renderCarousel : renderSinglItem}</div>\n </Waypoint>\n </Element>\n </div>\n </VisibilitySensor>\n );\n }\n}\n\nHeroCarousel.defaultProps = {\n accessToken: null,\n account: null,\n anonymousAccount: null,\n blackoutConfig: {},\n coordinates: null,\n favoritesManager: {},\n forceKeyartForShowcase: null,\n globalVideoStartedPlayback: null,\n handleSlideChangeTop: noop,\n idx: null,\n initialShowcase: null,\n isAuthenticated: false,\n isFirst: false,\n load: null,\n location: {},\n mvpdData: null,\n overlay: null,\n overridePlayButtonClick: noop,\n overridePlayButtonLink: false,\n paginatedPanels: {},\n panel: {},\n panels: {},\n panelVideo: {},\n params: { network: null },\n play: null,\n preauthorizedResources: [],\n provider: {},\n renderHeroImage: noop,\n route: {},\n seo: null,\n setCoordinates: noop,\n setOverlay: noop,\n setRecommendationIdOnClick: noop,\n streamExit: null,\n updatePersistGlobalVideoAfterUmount: noop,\n visibleCollections: {},\n};\n\nHeroCarousel.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({\n accessToken: PropTypes.string,\n }),\n anonymousAccount: PropTypes.shape({}),\n blackoutConfig: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n coordinates: PropTypes.shape({}),\n favoritesManager: PropTypes.shape({}),\n forceKeyartForShowcase: PropTypes.bool,\n globalVideoStartedPlayback: PropTypes.bool,\n handleSaveLiveRestart: PropTypes.func.isRequired,\n handleSlideChangeTop: PropTypes.func,\n idx: PropTypes.number,\n initialShowcase: PropTypes.shape({}),\n isAuthenticated: PropTypes.bool,\n isFirst: PropTypes.bool,\n load: PropTypes.bool,\n location: PropTypes.shape({}),\n mvpdData: PropTypes.shape({}),\n overlay: PropTypes.string,\n overridePlayButtonClick: PropTypes.func,\n overridePlayButtonLink: PropTypes.bool,\n paginatedPanels: PropTypes.shape({}),\n panel: PropTypes.shape({}),\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n panelVideo: PropTypes.shape({}),\n params: PropTypes.shape({\n network: PropTypes.string,\n }),\n play: PropTypes.bool,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n provider: PropTypes.shape({}),\n removeGlobalVideoPlayer: PropTypes.func.isRequired,\n removeVideoHero: PropTypes.func.isRequired,\n renderHeroImage: PropTypes.func,\n route: PropTypes.shape({}),\n router: PropTypes.shape({}).isRequired,\n saveLiveVideo: PropTypes.func.isRequired,\n seo: PropTypes.shape({}),\n setCoordinates: PropTypes.func,\n setOverlay: PropTypes.func,\n setRecommendationIdOnClick: PropTypes.func,\n setSuggestedChannel: PropTypes.func.isRequired,\n setVideoHero: PropTypes.func.isRequired,\n streamExit: PropTypes.bool,\n updatePersistGlobalVideoAfterUmount: PropTypes.func,\n videoIsLive: PropTypes.bool.isRequired,\n visibleCollections: PropTypes.shape({}),\n};\n\nexport default withRouter(HeroCarousel);\n","/* global FavoritesEnabled */\nimport React from 'react';\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { PageNames, SegmentSources, tealiumEventPageTypes } from '@foxcorp/delta-web-analytics';\nimport { isMovie, isSeries, isSpecial, isSports } from 'helpers/ContentHelper';\nimport { renderImage } from 'helpers/ImageHelper';\nimport { FORMAT_TIME, stringToDate, format } from 'helpers/DateTimeHelper';\nimport Icon from 'components/Icon';\nimport { formatUpcomingMetadata } from 'helpers/VideoHelper';\nimport Favorite, { FAVORITE_TYPE_LINK, PLUS } from 'components/Favorite';\n\nimport Style from './UpcomingModal.module.scss';\n\nconst {\n global_favoriteButton: defaultText,\n global_favoriteSetButton: favoritedText,\n} = window.Language;\n\nconst UpcomingModal = ({\n closeOverlay,\n contentRating,\n description,\n durationInSeconds,\n favoritableItems,\n favoritesManager,\n images,\n name,\n network,\n networkIcon,\n recommendationId,\n seriesName,\n seriesType,\n showCode,\n sportTag,\n startDate,\n subRatings,\n titleLink,\n videoType,\n}) => {\n const showImage = _.get(images, 'videoList.raw', false) || _.get(images, 'seriesList.raw', '');\n\n const type = () => {\n if (isSeries(seriesType) || isSpecial(seriesType)) return 'Show';\n if (isMovie(videoType)) return 'Movie';\n return '';\n };\n\n const renderNetworkInfo = () => {\n const time = format(stringToDate(startDate), FORMAT_TIME);\n return (\n <div className={Style.networkInfo}>\n {renderImage({\n alt: network,\n src: networkIcon,\n })}\n {time}\n </div>\n );\n };\n\n const renderSubtitle = () => {\n const subtitle = () => {\n if (isMovie(videoType) || isSpecial(seriesType)) return null;\n let subtitleName = name;\n if (subtitleName === seriesName) return null;\n if (isSports(seriesType) && sportTag) subtitleName = sportTag;\n return subtitleName;\n };\n const itemSubtitle = subtitle();\n return itemSubtitle && <div className={Style.subtitle}>{itemSubtitle}</div>;\n };\n\n const renderMetadata = () => {\n const metadata = formatUpcomingMetadata({\n startDate,\n contentRating,\n subRatings,\n durationInSeconds,\n });\n return <div className={Style.metadata}>{metadata}</div>;\n };\n\n const renderSeriesDetailButton = () => {\n if (isSports(seriesType)) return null;\n const showType = type();\n return (\n <Link to={titleLink} onClick={closeOverlay}>\n <button className={Style.seriesDetailButton} type=\"button\">\n <span>{`Go to ${showType} Page`}</span>\n </button>\n </Link>\n );\n };\n\n const renderFavorite = () => {\n const favorites = _.get(favoritesManager, 'favorites');\n const favoriteData = {\n favoritableItems,\n location: _.get(tealiumEventPageTypes, PageNames.HOME),\n networkId: network,\n recommendationId,\n seriesName,\n showID: showCode,\n source: SegmentSources.DETAIL,\n };\n if (FavoritesEnabled) {\n if (isSports(seriesType)) return null;\n return (\n <div className={Style.favorite}>\n <Favorite\n theme={Style}\n manager={favoritesManager}\n favorites={favorites}\n data={favoriteData}\n type={FAVORITE_TYPE_LINK}\n defaultText={defaultText}\n favoritedText={favoritedText}\n iconType={PLUS}\n />\n </div>\n );\n }\n return null;\n };\n\n const renderFooter = () => (\n <div className={Style.footer}>\n <button aria-label=\"close\" className={Style.close} onClick={closeOverlay} type=\"button\">\n <Icon size=\"medium\" color=\"white\" icon=\"close\" />\n </button>\n </div>\n );\n\n return (\n <div className={Style.container}>\n <div className={Style.innerContainer}>\n <img alt={name} src={showImage} />\n {renderNetworkInfo()}\n <div className={Style.title}>{seriesName}</div>\n {renderSubtitle()}\n {renderMetadata()}\n <div className={Style.description}>{description}</div>\n {renderSeriesDetailButton()}\n {renderFavorite()}\n {renderFooter()}\n </div>\n </div>\n );\n};\n\nUpcomingModal.propTypes = {\n closeOverlay: PropTypes.func,\n contentRating: PropTypes.string,\n description: PropTypes.string,\n durationInSeconds: PropTypes.number,\n favoritableItems: PropTypes.arrayOf(PropTypes.shape({})),\n favoritesManager: PropTypes.shape({}),\n images: PropTypes.shape([]),\n name: PropTypes.string,\n network: PropTypes.string,\n networkIcon: PropTypes.string,\n recommendationId: PropTypes.string,\n seriesName: PropTypes.string,\n seriesType: PropTypes.string,\n showCode: PropTypes.string,\n sportTag: PropTypes.string,\n startDate: PropTypes.string,\n subRatings: PropTypes.arrayOf(PropTypes.string),\n titleLink: PropTypes.string,\n videoType: PropTypes.string,\n};\n\nUpcomingModal.defaultProps = {\n closeOverlay: () => {},\n contentRating: null,\n description: '',\n durationInSeconds: null,\n favoritableItems: [],\n favoritesManager: null,\n images: null,\n name: '',\n network: null,\n networkIcon: '',\n recommendationId: null,\n seriesName: '',\n seriesType: null,\n showCode: '',\n sportTag: null,\n startDate: null,\n subRatings: [],\n titleLink: null,\n videoType: null,\n};\n\nexport default UpcomingModal;\n","import axios from 'axios';\nimport _ from 'lodash';\nimport { setSegmentModelMetadata } from '@foxcorp/delta-web-analytics';\nimport {\n axiosErrorHandler,\n helperGetApiHeaders,\n helperConvertPathToApiRoute,\n helperConvertApiRoute,\n} from 'helpers/ApiHelper';\nimport { PAGE_COLLECTION } from 'helpers/PageHelper';\nimport {\n setVideoPanel as setGlobalVideoPanel,\n clearVideo as clearGlobalVideo,\n} from 'components/VideoPlayerGlobal/Actions';\nimport { concatToUrl, isStaticRender, LOCAL_CHANNEL_STATION_PICKER } from 'helpers/ContentHelper';\nimport { getCookie, setCookie } from 'helpers/Storage';\nimport { replaceScreenUrl as optimizelyReplaceCollections } from 'helpers/OptimizelyHelper';\nimport { autoplayEnabled } from 'helpers/ConfigHelper';\nimport { getDmaFromVideo } from 'helpers/AuthHelper';\nimport { fetchFooter } from 'components/Footer/FooterActions';\nimport { getCurrentShowcase, setShowcaseVideoDma } from './Helpers';\n\nexport const CLEAR_COLLECTION_PANELS = 'CLEAR_COLLECTION_PANELS';\nexport const FETCH_COLLECTION = 'FETCH_COLLECTION';\nconst FETCH_COLLECTION_PANEL = 'FETCH_COLLECTION_PANEL';\nconst FETCH_NEXT_CLIPS_PAGE = 'FETCH_NEXT_CLIPS_PAGE';\nconst SET_NEXT_CLIPS_PAGE = 'SET_NEXT_CLIPS_PAGE';\nexport const SET_COLLECTION = 'SET_COLLECTION';\nexport const SET_COLLECTION_USE_SHOWCASE_FALLBACK = 'SET_COLLECTION_USE_SHOWCASE_FALLBACK';\nexport const SET_COLLECTION_FORCE_KEYART_FOR_SHOWCASE = 'SET_COLLECTION_FORCE_KEYART_FOR_SHOWCASE';\nexport const UPDATE_VISIBLE_ELEMENTS = 'UPDATE_VISIBLE_ELEMENTS';\nexport const UPDATE_COLLECTION_ORDER = 'UPDATE_COLLECTION_ORDER';\nexport const UPDATE_SHOWCASE_VIDEO = 'UPDATE_SHOWCASE_VIDEO';\nexport const INCREMENT_PANEL_RENDER_COUNT = 'INCREMENT_PANEL_RENDER_COUNT';\nexport const RESET_PANEL_RENDER_COUNT = 'RESET_PANEL_RENDER_COUNT';\n\nfunction fetchCollection(path, accessToken, screenName, deviceId, coordinates) {\n const pageType = 'home';\n const replaceCollectionScreen = optimizelyReplaceCollections(pageType, screenName);\n const collectionPath = replaceCollectionScreen || path;\n const request = axios\n .get(\n concatToUrl(helperConvertPathToApiRoute(collectionPath, coordinates)),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_COLLECTION,\n payload: request,\n };\n}\n\nfunction fetchLocalCollection(path, accessToken, screenName, deviceId, coordinates) {\n return dispatch =>\n dispatch(fetchCollection(path, accessToken, screenName, deviceId, coordinates)).then(result => {\n const localPanels = result.payload?.data?.panels;\n // The first response provides us a list of local categories, we then select the first\n // call sign here in LocalData, the first in this list is what the backend determines is\n // the users call sign based on their location\n const localData = localPanels?.member[0]?.items?.member[0] ?? null;\n const localStationPickerId = getCookie({ name: LOCAL_CHANNEL_STATION_PICKER });\n let localId = localData ? localData.id : 'local-fallback';\n if (localStationPickerId) {\n localId = localStationPickerId;\n } else {\n setCookie({\n name: LOCAL_CHANNEL_STATION_PICKER,\n options: { path: '/' },\n value: localId,\n });\n }\n const localPath = `categories/${localId}`;\n return dispatch(fetchCollection(localPath, accessToken, screenName, deviceId, coordinates));\n });\n}\n\nexport function setNextClipsPage(url) {\n return {\n type: SET_NEXT_CLIPS_PAGE,\n payload: url,\n };\n}\n\nexport function fetchNextClipsPage({ url, accessToken, deviceId }) {\n let request = {};\n if (url) {\n const headers = helperGetApiHeaders({ pathKey: 'local', accessToken, deviceId });\n request = axios.get(helperConvertApiRoute(url), headers).catch(axiosErrorHandler);\n }\n return {\n type: FETCH_NEXT_CLIPS_PAGE,\n payload: request,\n };\n}\n\nfunction setCollection(collection, initialShowcase) {\n return {\n type: SET_COLLECTION,\n payload: {\n collection,\n initialShowcase,\n },\n };\n}\n\nexport function clearCollectionPanels() {\n return { type: CLEAR_COLLECTION_PANELS };\n}\n\nexport function setUseShowcaseFallback(payload) {\n return { type: SET_COLLECTION_USE_SHOWCASE_FALLBACK, payload };\n}\n\nfunction fetchCollectionPanel(panel, accessToken, deviceId) {\n const { '@id': url } = panel;\n const request = axios\n .get(url, helperGetApiHeaders({ accessToken, deviceId }))\n .catch(axiosErrorHandler);\n return {\n type: FETCH_COLLECTION_PANEL,\n payload: request,\n };\n}\n\nexport function fetchCollections(\n path,\n panelsToPrefetch,\n accessToken,\n screenName,\n deviceId,\n coordinates,\n) {\n return (dispatch, getState) => {\n let collection;\n let fetch = fetchCollection;\n if (screenName?.toLowerCase()?.includes('local')) {\n fetch = fetchLocalCollection;\n }\n return dispatch(fetch(path, accessToken, screenName, deviceId, coordinates)).then(result => {\n const experimentData = _.get(result, 'payload.data.trackingData.properties.abtest', null);\n const experimentKey = _.get(experimentData, 'experimentKey', null);\n const variationKey = _.get(experimentData, 'variationKey', null);\n const dma = getDmaFromVideo(_.get(result, 'payload.data'));\n\n setSegmentModelMetadata(result?.payload?.data?.trackingData?.properties?.modelMetaData ?? {});\n\n collection = _.get(result, 'payload.data.panels', {});\n collection.seo = _.get(result, 'payload.data.SEO', null);\n collection.categoryType = result?.payload?.data?.categoryType;\n if (experimentKey && variationKey)\n collection.experimentData = `${experimentKey}:${variationKey}`;\n const screenPanels = _.get(collection, 'member');\n if (!screenPanels) {\n return Promise.resolve();\n }\n return Promise.all(\n screenPanels.map((screenPanel, index) => {\n if (!screenPanel) return Promise.resolve();\n const { items, member, types } = screenPanel;\n const panelIsNotPopulated = !items && !member && !types;\n const prefetchPanel = panelIsNotPopulated && index < panelsToPrefetch;\n if (prefetchPanel) {\n return dispatch(fetchCollectionPanel(screenPanel, accessToken, deviceId)).then(item => {\n const data = _.get(item, 'payload.data');\n _.set(collection, `member.${index}`, data);\n return Promise.resolve();\n });\n }\n return Promise.resolve();\n }),\n )\n .then(() => {\n const showcase = getCurrentShowcase(collection.member);\n if (!isStaticRender()) {\n const newVideoId = _.get(showcase, 'items.member.0.id');\n const oldVideoId = _.get(getState(), 'globalVideo.panelVideo.id');\n const videoChanged = newVideoId && newVideoId !== oldVideoId;\n const shouldSetGlobalVideo = autoplayEnabled() && videoChanged;\n if (shouldSetGlobalVideo) {\n const panel = setShowcaseVideoDma({ showcase, dma });\n const source = PAGE_COLLECTION;\n dispatch(setGlobalVideoPanel({ panel, source }));\n }\n }\n return dispatch(setCollection(collection, showcase));\n })\n .then(() => dispatch(fetchFooter()));\n });\n };\n}\n\nexport function fetchCollectionsOnHeaderClick(\n path,\n panelsToPrefetch,\n accessToken,\n screenName,\n deviceId,\n) {\n return dispatch => {\n if (autoplayEnabled()) {\n dispatch(clearGlobalVideo({ source: PAGE_COLLECTION }));\n }\n\n dispatch(clearCollectionPanels());\n return dispatch(fetchCollections(path, panelsToPrefetch, accessToken, screenName, deviceId));\n };\n}\n\nexport function updateVisibleElements(currentElements) {\n return {\n type: UPDATE_VISIBLE_ELEMENTS,\n payload: currentElements,\n };\n}\n\nexport function updateCollectionOrder(panel) {\n const id = _.get(panel, 'id', null);\n return {\n type: UPDATE_COLLECTION_ORDER,\n payload: id,\n };\n}\n\nexport function forceKeyartForShowcase(value) {\n return {\n type: SET_COLLECTION_FORCE_KEYART_FOR_SHOWCASE,\n payload: value,\n };\n}\n\nexport function updateShowcaseVideo(video) {\n return {\n type: UPDATE_SHOWCASE_VIDEO,\n payload: video,\n };\n}\n\nexport function incrementPanelRenderCount() {\n return {\n type: INCREMENT_PANEL_RENDER_COUNT,\n };\n}\n\nexport function resetPanelRenderCount() {\n return {\n type: RESET_PANEL_RENDER_COUNT,\n };\n}\n","import { createSelectorCreator, defaultMemoize } from 'reselect';\nimport _ from 'lodash';\n\nconst selectInitialShowcase = state => state.collection.initialShowcase;\nconst selectCollectionOrder = state => state.collection.collectionOrder;\nconst selectCollectionPanels = state => state.collection.panels;\nconst selectVisibleCollections = state => state.collection.visibleCollections;\nconst selectPanelPanels = state => state.panel.panels;\nconst selectGlobalVideoPanelVideo = state => state.globalVideo.panelVideo;\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _.isEqual);\n\nexport const makeSelectInitialShowcase = createDeepEqualSelector(\n selectInitialShowcase,\n initialShowcase => initialShowcase,\n);\n\nexport const makeSelectCollectionOrder = createDeepEqualSelector(\n selectCollectionOrder,\n collectionOrder => collectionOrder,\n);\n\nexport const makeSelectCollectionPanels = createDeepEqualSelector(\n selectCollectionPanels,\n panels => panels,\n);\n\nexport const makeSelectVisibleCollections = createDeepEqualSelector(\n selectVisibleCollections,\n visibleCollections => visibleCollections,\n);\n\nexport const makeSelectPanelPanels = createDeepEqualSelector(selectPanelPanels, panels => panels);\n\nexport const makeSelectGlobalVideoPanelVideo = createDeepEqualSelector(\n selectGlobalVideoPanelVideo,\n panelVideo => panelVideo,\n);\n","/* global EpgEnabled, MarketingCollectionEnabled, NetworkConfig, SchemaOrganizationHeader, BuildFullPage */\n\nimport React, { Component } from 'react';\nimport { browserHistory, Link } from 'react-router';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport IdleTimer from 'react-idle-timer';\nimport { scroller, animateScroll, Element } from 'react-scroll';\nimport ReactTimeout from 'react-timeout';\nimport { Waypoint } from 'react-waypoint';\nimport classNames from 'classnames';\nimport VideoHero from 'components/VideoHero';\nimport Panel from 'components/Panel';\nimport Carousel from 'components/Carousel';\nimport BreadcrumbsComponent, { breadcrumbsCollectionParser } from 'components/Breadcrumbs';\nimport HomeSlideHeaderComp from 'components/HomeSlideHeader';\nimport HomeSlidePromoComp from 'components/HomeSlidePromo';\nimport Icon from 'components/Icon';\nimport Loader from 'components/Loader';\nimport VideoModal from 'components/VideoModal';\n\nimport { saveLiveVideo, setSuggestedChannel } from 'screens/Live/LiveActions';\nimport { isVideoLive } from 'screens/Live/LiveHelpers';\nimport { setSuggestedTab as setSuggestedShowsTab } from 'screens/Shows/ShowsActions';\nimport { setTab as setFindTab } from 'screens/Search/Actions';\nimport { noop } from 'helpers/GlobalHelper';\nimport { helperGetApiHeaders, helperConvertApiRoute } from 'helpers/ApiHelper';\nimport {\n Events,\n getAdjacentCollectionAbove,\n getCollectionCount,\n getCollectionPosition,\n getNewRelicPageName,\n getRecommendationIdDataForItem,\n getSegmentBannerDimensions,\n getSegmentBannerType,\n getSegmentContentUidString,\n getSegmentModelMetadata,\n getSegmentPageCollectionIdList,\n getTealiumRedesignEvents,\n handleAnalytics,\n homeTabPageNames,\n PageNames,\n SEGMENT_CATEGORY_TYPE_LOCAL,\n setOptimizelyCollectionViewedEvent,\n setTealiumSourceCollectionGlobal,\n trackPageReferrerAnalytics,\n updateSegmentBannerData,\n} from '@foxcorp/delta-web-analytics';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport {\n calculateNextRefreshForPanel,\n COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST,\n COLLECTION_TYPE_LOCAL_CLIPS,\n COLLECTION_TYPE_LOCAL_LIVE,\n formatDirectUrl,\n FOX,\n getCarouselBreakpoint,\n getDisplayBrand,\n getErrorComponent,\n getNetworkLogoUrl,\n getRequiresAuth,\n getUrlTarget,\n getVideoIdFromUrl,\n isCarouselShowcase,\n isClip,\n isLive,\n isSportsContent,\n isStaticRender,\n isTypePromo,\n isUpcomingContent,\n LOCAL_CHANNEL_STATION_PICKER,\n PANEL_TYPE_PARTNER_SHOWS,\n PANEL_TYPE_PARTNER_VIDEO,\n PANEL_TYPE_PLAYER_BANNER,\n PANEL_TYPE_PROMOS,\n PANEL_TYPE_SHOWS,\n PANEL_TYPE_VIDEOS,\n setLocalChannelCookies,\n setOutOfMarketLocalCookies,\n TYPE_EPG_LISTING,\n} from 'helpers/ContentHelper';\nimport { now, stringToDate, isBetween, differenceInMilliseconds } from 'helpers/DateTimeHelper';\nimport {\n COLLECTION_HERO_IMAGE,\n COLLECTION_THUMBNAIL_IMAGE,\n SMALL_PROMO_IMAGE,\n getDynamicImage,\n renderImage,\n} from 'helpers/ImageHelper';\nimport {\n helperGetHomeUrl,\n helperGetLiveUrl,\n helperGoToRelativeUrl,\n isHomeRoute,\n} from 'helpers/RouteHelper';\nimport { PAGE_COLLECTION } from 'helpers/PageHelper';\nimport {\n additionalPosterEnabled,\n autoplayEnabled,\n liveTileCollectionV2Enabled,\n thumbnailNetworkLogoEnabled,\n strikeBannerEnabled,\n} from 'helpers/ConfigHelper';\nimport { PROMO_TYPE_INSET, PROMO_TYPE_LEAD } from 'screens/SeriesDetail/SeriesDetailHelpers';\nimport {\n OVERLAY_HEADER_SEARCH,\n OVERLAY_ALL_COLLECTIONS,\n OVERLAY_VIDEO_MODAL,\n} from 'helpers/FilterHelper';\nimport {\n activateOptimizely,\n getOptimizelyFakeCollectionData,\n modifyBreakpoints as optimizelyModifyBreakpoints,\n userAttributeEvents as optimizelyUserAttributeEvents,\n} from 'helpers/OptimizelyHelper';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { setCookie } from 'helpers/Storage';\nimport {\n DESKTOP_BREAKPOINT,\n isMobileBreakpoint,\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n TABLET_LANDSCAPE_BREAKPOINT,\n} from 'helpers/BreakpointHelper';\nimport {\n homeCarouselVideoProcessor,\n homeLinkTileCarouselProcessor,\n} from 'helpers/Processor/CarouselVideoProcessor';\n\nimport {\n clearVideo as removeGlobalVideoPlayer,\n saveLiveRestart as saveGlobalLiveRestart,\n setDisableRender as setGlobalVideoDisabled,\n setVideoPanel as setGlobalVideoPanel,\n setPlayerType as setGlobalPlayerType,\n setScreenInControlOfState as setGlobalPlayerScreenInControlOfState,\n} from 'components/VideoPlayerGlobal/Actions';\nimport MarketingBanner from 'components/MarketingBanner';\nimport StrikeBanner, {\n STRIKE_PAGE_TYPE_HOME,\n STRIKE_PAGE_TYPE_SECTION_FRONT,\n} from 'components/StrikeBanner';\nimport { PLAYER_TYPE_DEFAULT, PLAYER_TYPE_HERO } from 'helpers/PlayerHelper';\nimport { setRecommendationIdAction as setRecommendationId } from 'index/AppActions';\nimport CollectionCarousel from './components/Carousel';\nimport CollectionTile from './components/CollectionTile';\nimport CollectionLinkTile from './components/CollectionLinkTile';\nimport HeroCarousel from './components/HeroCarousel';\nimport UpcomingModal from './components/UpcomingModal';\nimport NationCollection from './CollectionStub.json';\nimport {\n fetchCollections,\n setUseShowcaseFallback,\n updateCollectionOrder,\n updateVisibleElements,\n clearCollectionPanels,\n incrementPanelRenderCount,\n resetPanelRenderCount,\n} from './Actions';\nimport {\n addSeeMoreItem,\n didPanelsAvailabilityChange,\n featuredVideoProcessor,\n getCollectionIndex,\n getCollectionName,\n getCurrentShowcase,\n getMarketingVideoBanner,\n getTimeoutTime,\n isShowcase,\n shouldRenderDefaultPanel,\n} from './Helpers';\nimport smallPromoStyle from './smallPromo.css';\nimport CarouselTileTheme from './CarouselTile.module.scss';\nimport CarouselTheme from './Carousel.module.scss';\nimport GenreTileTheme from './GenreTile.module.scss';\nimport LatestEpisodes from './LatestEpisodes.module.scss';\nimport {\n makeSelectInitialShowcase,\n makeSelectCollectionOrder,\n makeSelectCollectionPanels,\n makeSelectVisibleCollections,\n makeSelectPanelPanels,\n makeSelectGlobalVideoPanelVideo,\n} from './selectors';\nimport CarouselPosterStyle from './CarouselPoster.module.scss';\nimport Style from './Collection.module.scss';\n\nconst ALL_COLLECTIONS_SCROLL_PREFIX = 'ALL_COLLECTIONS_SCROLL_PREFIX_';\nconst FETCH_COLLECTION_DEFAULT = 1000 * 60 * 5;\nconst FETCH_COLLECTION_MAX_PANELS_PREFETCH = 1000;\nconst SCROLL_DEBOUNCE_TIME = 200;\nconst isAdditionalPosterEnabled = additionalPosterEnabled();\nlet debouncedScroll;\n\nexport const BREAKPOINTS = (() => {\n const breakpoints = {\n [SITE_PLATFORM_WEB_LARGE]: {\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n videoBackground: true,\n smallPromoImage: 'images.desktop-promo',\n allowInfoToggle: false,\n showLiveButtons: true,\n carouselLimit: 5,\n slidesToScroll: 5,\n posterLimit: 5,\n posterToScroll: isAdditionalPosterEnabled ? 6 : 5,\n descriptionLines: isAdditionalPosterEnabled ? 4 : 5,\n roundArrows: true,\n smallCollectionHeader: false,\n useSeriesLogo: true,\n showCarouselArrows: true,\n showTileMetadataOnHover: true,\n useMobileUpcomingOverlay: false,\n fycLogoHeight: 80,\n useScrollableDiv: false,\n },\n [SITE_PLATFORM_WEB]: {\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n videoBackground: true,\n smallPromoImage: 'images.desktop-promo',\n allowInfoToggle: false,\n showLiveButtons: true,\n carouselLimit: 4,\n slidesToScroll: 4,\n posterLimit: 5,\n posterToScroll: isAdditionalPosterEnabled ? 6 : 5,\n descriptionLines: isAdditionalPosterEnabled ? 3 : 5,\n roundArrows: true,\n smallCollectionHeader: false,\n useSeriesLogo: true,\n showCarouselArrows: true,\n showTileMetadataOnHover: true,\n useMobileUpcomingOverlay: false,\n fycLogoHeight: 80,\n useScrollableDiv: false,\n },\n [SITE_PLATFORM_TABLET]: {\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n videoBackground: true,\n smallPromoImage: 'images.desktop-promo',\n allowInfoToggle: true,\n showLiveButtons: true,\n carouselLimit: 2,\n slidesToScroll: 2,\n posterLimit: 3,\n posterToScroll: 3,\n descriptionLines: isAdditionalPosterEnabled ? 2 : 3,\n roundArrows: true,\n smallCollectionHeader: false,\n useSeriesLogo: true,\n showCarouselArrows: true,\n showTileMetadataOnHover: true,\n useMobileUpcomingOverlay: true,\n fycLogoHeight: 80,\n useScrollableDiv: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n addCarouselPlaceholders: false,\n allowScrollLock: true,\n videoBackground: false,\n smallPromoImage: 'images.mobile-promo',\n allowInfoToggle: true,\n showLiveButtons: true,\n carouselLimit: 1.25,\n slidesToScroll: 1,\n posterLimit: 2.5,\n posterToScroll: 2,\n descriptionLines: 2,\n roundArrows: true,\n smallCollectionHeader: false,\n useSeriesLogo: true,\n showCarouselArrows: false,\n showTileMetadataOnHover: false,\n useMobileUpcomingOverlay: true,\n fycLogoHeight: 50,\n useScrollableDiv: true,\n },\n };\n\n return optimizelyModifyBreakpoints(breakpoints, 'home');\n})();\n// TODO: Remove this when Collection Carousel is enabled\nconst USE_COLLECTION_CAROUSEL = false;\nconst INITIAL_PANELS_TO_RENDER = 3;\nlet isInitialized = false;\n\nclass Collection extends Component {\n constructor(props) {\n super(props);\n const { initialShowcase, panels } = this.props;\n this.state = {\n activeSlide: 0,\n activeSlideBottoms: [],\n activeSlideTops: [],\n collectionInterval: null,\n lastActiveSlide: 0,\n leapfrogEventTriggered: false,\n liveItemId: null,\n load: true,\n loadedAnalytics: false,\n overlayItemProps: null,\n newRelicStart: false,\n numPanelsRendered: INITIAL_PANELS_TO_RENDER,\n persistGlobalVideoAfterUnmount: false,\n play: true,\n renderedPanels: {},\n shouldFetchMore: false,\n shouldRenderVideoModal: false,\n showcase: initialShowcase || null,\n showcaseTimeout: {},\n userViewedPlayerBanner: false,\n videoModalData: null,\n videoModalId: null,\n };\n if (panels?.member?.length && (window.buildFullPage || BuildFullPage) && !isInitialized)\n this.state.numPanelsRendered = panels.member.length;\n this.hiddenPanels = new Set();\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.refreshCollection = this.refreshCollection.bind(this);\n this.ignoreUnmountReferrerAnalytics = false;\n this.renderTileCarousel = USE_COLLECTION_CAROUSEL\n ? this.renderCollectionTileCarousel\n : this.renderTileCarousel;\n this.banner = React.createRef();\n }\n\n componentDidMount() {\n const {\n canIAutoplay,\n initialShowcase,\n setGlobalPlayerScreenInControlOfState,\n setOverlay,\n openForgotPassword,\n location,\n pageViewEvent,\n getUseUtagGlobal,\n panels,\n setHomePage,\n setRecommendationId,\n params,\n route,\n } = this.props;\n const { isForgotPassword } = route;\n const { network, collectionId } = params;\n const pathName = _.get(location, 'pathname');\n const screenName = _.get(route, 'path');\n const newRelicPageName = getNewRelicPageName(pathName, params);\n const openFind = _.includes(_.get(window, 'location.pathname', ''), '/find');\n const commonNetworks = [FOX];\n if (setHomePage) setHomePage(true);\n if (isForgotPassword && openForgotPassword) openForgotPassword(commonNetworks, network);\n if (!isStaticRender() && (!isInitialized || screenName?.includes('local'))) {\n isInitialized = true;\n this.fetchCollectionData();\n }\n if (panels && collectionId) {\n this.scrollToCollection(panels, collectionId);\n } else {\n animateScroll.scrollToTop();\n }\n if (pathName?.includes('local/clips')) {\n const path = `${window.location.origin}/local/`;\n browserHistory.replace(path);\n }\n setLocalChannelCookies({ resetCookies: true });\n setRecommendationId();\n activateOptimizely();\n if (canIAutoplay) this.activateAutoplay(panels);\n if (openFind) setOverlay(OVERLAY_HEADER_SEARCH);\n if (autoplayEnabled()) {\n const source = PAGE_COLLECTION;\n setGlobalPlayerScreenInControlOfState(source);\n }\n this.updateShowcaseTimeout();\n logEvent(`on${newRelicPageName}ScreenStart`);\n logEvent(`on${newRelicPageName}ScreenView`);\n this.setState({ showcase: initialShowcase, newRelicStart: true });\n\n if (panels) {\n const panelExperimentData = _.get(panels, 'experimentData', null);\n const path = _.get(location, 'pathname');\n const currentCollectionPageName = path && (path === '/' ? 'home' : path.replace(/\\//g, ''));\n const pageName = homeTabPageNames[currentCollectionPageName];\n pageViewEvent({\n collection: panels,\n pageName,\n useUtagGlobal: getUseUtagGlobal(),\n panelExperimentData,\n });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n authCheckComplete,\n canIAutoplay,\n setHomePage,\n overlay,\n analyticsLoaded,\n firstIdentifyCall,\n removeGlobalVideoPlayer,\n setUseShowcaseFallback,\n panelVideo,\n panels: prevPanels,\n } = this.props;\n const {\n authCheckComplete: nextAuthCheckComplete,\n authSuccess: nextAuthSuccess,\n canIAutoplay: nextCanIAutoplay,\n overlay: nextOverlay,\n firstIdentifyCall: nextFirstIdentifyCall,\n panels,\n } = nextProps;\n const { loadedAnalytics } = this.state;\n if (canIAutoplay && nextCanIAutoplay && !prevPanels && panels) this.activateAutoplay(panels);\n if (setHomePage) setHomePage(true);\n if (overlay === OVERLAY_VIDEO_MODAL && nextOverlay !== overlay) {\n this.toggleVideoModal({ preventScroll: true });\n }\n const identifyEventHasFired = !firstIdentifyCall && nextFirstIdentifyCall;\n if (analyticsLoaded && !loadedAnalytics && identifyEventHasFired) {\n this.setState({ loadedAnalytics: true });\n }\n\n const requiresAuth = getRequiresAuth({ video: panelVideo });\n const shouldUseShowcaseFallback =\n autoplayEnabled() &&\n !nextAuthSuccess &&\n nextAuthCheckComplete &&\n !authCheckComplete &&\n requiresAuth;\n if (shouldUseShowcaseFallback) {\n removeGlobalVideoPlayer({ source: PAGE_COLLECTION });\n setUseShowcaseFallback(true);\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n accessToken,\n account,\n getUseUtagGlobal,\n initialShowcase,\n location,\n pageViewEvent,\n panels,\n params,\n resetPanelRenderCount,\n setGlobalVideoPanel,\n showcaseFallback,\n useShowcaseFallback,\n } = this.props;\n const {\n accessToken: prevAccessToken,\n account: prevAccount,\n initialShowcase: prevInitialShowcase,\n location: prevLocation,\n panels: prevPanels,\n useShowcaseFallback: prevUseShowcaseFallback,\n } = prevProps;\n const { leapfrogEventTriggered, newRelicStart } = this.state;\n let didTriggerLeapfrogEvent = leapfrogEventTriggered;\n this.checkForLiveContent();\n activateOptimizely();\n const accessTokenChanged = prevAccessToken !== accessToken;\n const accountChanged = !prevAccount && account;\n const path = _.get(location, 'pathname');\n const prevPath = _.get(prevLocation, 'pathname');\n const pathChanged = path !== prevPath;\n const shouldRefreshData = accessTokenChanged || accountChanged || pathChanged;\n const panelsHavePopulated = !prevPanels && panels;\n const prevMember = _.get(prevPanels, 'member', []);\n const member = _.get(panels, 'member', []);\n const firstMember = _.get(member, '0.items.member', []);\n const showcase = member?.[0];\n const collectionType = showcase?.collectionType;\n const isShowcaseCarousel = isCarouselShowcase(collectionType);\n\n const newRelicPageName = getNewRelicPageName(path, params);\n if (newRelicStart) {\n logEvent(`on${newRelicPageName}ScreenFinished`);\n this.setState({ newRelicStart: false });\n }\n\n if (shouldRefreshData) {\n this.fetchCollectionData();\n this.fetchCollectionInterval();\n }\n const showcasesAvailabilityChanged = didPanelsAvailabilityChange(prevMember, member);\n if (showcasesAvailabilityChanged) this.updateShowcaseTimeout();\n if (pathChanged) {\n didTriggerLeapfrogEvent = false;\n this.setState({\n leapfrogEventTriggered: didTriggerLeapfrogEvent,\n renderedPanels: {},\n numPanelsRendered: INITIAL_PANELS_TO_RENDER,\n });\n resetPanelRenderCount();\n }\n if (prevInitialShowcase !== initialShowcase) {\n this.setState({ showcase: initialShowcase });\n }\n if (this.pageCollectionLength && !didTriggerLeapfrogEvent) {\n this.trackCollectionItems({\n collections: this.viewedCollections,\n event: Events.COLLECTION_ITEMS_RENDERED,\n path: prevPath,\n });\n this.hiddenPanels = new Set();\n this.viewedCollections = new Map();\n const panelExperimentData = _.get(panels, 'experimentData', null);\n const currentCollectionPageName = path && (path === '/' ? 'home' : path.replace(/\\//g, ''));\n const pageName = homeTabPageNames[currentCollectionPageName];\n\n pageViewEvent({\n collection: panels,\n pageName,\n useUtagGlobal: getUseUtagGlobal(),\n panelExperimentData,\n });\n\n if (path?.includes('local')) {\n if (panels?.categoryType !== SEGMENT_CATEGORY_TYPE_LOCAL) return null;\n\n const id = _.get(panels, '@id', '');\n const callSign = id.substring(id.lastIndexOf('/') + 1) || 'local-fallback';\n handleAnalytics({\n event: Events.LOCAL_SECTION_LANDING,\n payload: {\n pageName: `home:landing:${callSign}`,\n pageCollectionLength: this.pageCollectionLength,\n callSign,\n },\n });\n } else {\n handleAnalytics({\n event: Events.TOP_LEVEL_SECTION_LANDING,\n payload: {\n pageName: `home:landing`,\n pageCollectionLength: this.pageCollectionLength,\n },\n });\n }\n this.setState({\n leapfrogEventTriggered: true,\n });\n }\n if (panelsHavePopulated) {\n const {\n params: { collectionId },\n } = this.props;\n this.fetchCollectionInterval();\n if (collectionId) {\n this.scrollToCollection(panels, collectionId);\n }\n\n this.trackCollectionItems({\n collections: panels?.member,\n event: Events.COLLECTION_ITEMS_AVAILABLE,\n path,\n });\n }\n if (!prevUseShowcaseFallback && useShowcaseFallback && showcaseFallback) {\n if (autoplayEnabled()) {\n if (!isShowcaseCarousel || (isShowcaseCarousel && firstMember.length === 1)) {\n setGlobalVideoPanel({ panel: showcaseFallback, source: PAGE_COLLECTION });\n }\n }\n }\n return null;\n }\n\n componentWillUnmount() {\n const {\n location,\n setHomePage,\n setGlobalVideoDisabled,\n removeGlobalVideoPlayer,\n clearCollectionPanels,\n } = this.props;\n const { persistGlobalVideoAfterUnmount } = this.state;\n const { pathname = '' } = location;\n isInitialized = false;\n if (autoplayEnabled() && !persistGlobalVideoAfterUnmount) {\n const source = PAGE_COLLECTION;\n removeGlobalVideoPlayer({ source: PAGE_COLLECTION });\n setGlobalVideoDisabled({ value: true, source });\n }\n\n if (setHomePage) setHomePage(false);\n\n if (!this.ignoreUnmountReferrerAnalytics) {\n this.trackPageReferrerAnalytics({\n name: PageNames.HOME,\n });\n }\n clearCollectionPanels();\n this.trackCollectionItems({\n collections: this.viewedCollections,\n event: Events.COLLECTION_ITEMS_RENDERED,\n path: pathname,\n });\n }\n\n trackCollectionItems = ({ collections = [], path, event }) => {\n if (isHomeRoute(path)) {\n const isAvailableEvent = event === Events.COLLECTION_ITEMS_AVAILABLE;\n if (\n (isAvailableEvent && !this.availableEventTriggered) ||\n (!isAvailableEvent && this.availableEventTriggered)\n ) {\n handleAnalytics({\n event,\n payload: {\n page_collection_id_list: getSegmentPageCollectionIdList(\n Array.from(collections.values()),\n event,\n ),\n ...getSegmentModelMetadata(),\n },\n });\n\n if (!this.availableEventTriggered) {\n const idx = 0;\n\n if (!this.viewedCollections) this.viewedCollections = new Map();\n\n this.viewedCollections.set(idx, {\n contentUids: getSegmentContentUidString(collections[idx]),\n id: collections[idx]?.id,\n idx,\n });\n\n this.availableEventTriggered = true;\n }\n }\n } else if (this.availableEventTriggered) this.availableEventTriggered = null;\n };\n\n updateShowcaseTimeout = () => {\n const { showcaseTimeout } = this.state;\n const { showcaseId: savedShowcaseId, timeout, timeoutTime: savedTimeoutTime } = showcaseTimeout;\n const {\n clearTimeout,\n panels,\n setTimeout,\n removeGlobalVideoPlayer,\n setGlobalVideoPanel,\n setUseShowcaseFallback,\n } = this.props;\n // get showcase that has an available date the same as expiration\n // if one is not available, grab the next available showcase\n // if that is not available, grab the first showcase that is not timely\n const member = _.get(panels, 'member', []);\n const firstMember = _.get(member, '0.items.member', []);\n const showcase = getCurrentShowcase(member);\n const timeoutTime = getTimeoutTime(showcase, member);\n const collectionType = showcase?.collectionType;\n const isShowcaseCarousel = isCarouselShowcase(collectionType);\n const showcaseId = _.get(showcase, 'id');\n const showcaseChanged = showcaseId !== savedShowcaseId;\n const timeoutTimeChanged = timeoutTime !== savedTimeoutTime;\n const shouldUpdateTimeout = showcaseChanged || timeoutTimeChanged;\n\n const newState = {};\n if (showcaseChanged) {\n newState.showcase = showcase;\n if (autoplayEnabled()) {\n if (!isShowcaseCarousel || (isShowcaseCarousel && firstMember.length === 1)) {\n const source = PAGE_COLLECTION;\n removeGlobalVideoPlayer({ source });\n setGlobalVideoPanel({ panel: showcase, source });\n }\n }\n setUseShowcaseFallback(false);\n }\n\n if (shouldUpdateTimeout) {\n if (timeout) {\n clearTimeout(timeout);\n }\n if (timeoutTime) {\n const newTimeout = setTimeout(\n this.updateShowcaseTimeout,\n differenceInMilliseconds(stringToDate(timeoutTime), now()),\n );\n const nextShowcaseTimeout = {\n showcaseId,\n timeout: newTimeout,\n timeoutTime,\n };\n newState.showcaseTimeout = nextShowcaseTimeout;\n } else {\n newState.showcaseTimeout = {};\n }\n }\n\n if (!_.isEmpty(newState)) this.setState(newState);\n };\n\n updatePersistGlobalVideoAfterUmount = (newVal, url) => {\n const { router, setGlobalPlayerType } = this.props;\n this.setState({ persistGlobalVideoAfterUnmount: newVal }, () => {\n setGlobalPlayerType(PLAYER_TYPE_DEFAULT);\n router.push(url);\n });\n };\n\n onIdle = () => {\n const { firstCollectionImpression } = this.props;\n // add to state if the function has been called\n if (!firstCollectionImpression) {\n this.callCollectionImpressionEvent();\n }\n };\n\n getHeroImage(heroData, isPromo) {\n const { breakpoint } = this.props;\n const { videoBackground } = BREAKPOINTS[breakpoint];\n const hero = isTypePromo(_.get(heroData, '@type'))\n ? _.get(heroData, 'videos.0', heroData)\n : heroData;\n const promoImage = _.get(heroData, 'images.promoImage');\n if (!hero) return null;\n if (isPromo && promoImage) return promoImage;\n if (videoBackground) return _.get(hero, 'autoPlayStill.default.url');\n\n const path =\n _.get(hero, 'autoPlayStill.default.url') ||\n _.get(hero, 'images.raw') ||\n _.get(hero, 'images.still.raw');\n\n return path;\n }\n\n setActiveSlide = () => {\n const { activeSlideTops, activeSlideBottoms, activeSlide } = this.state;\n const { panels } = this.props;\n if (!panels) return;\n const activeSlideTop = Math.min(...activeSlideTops);\n const activeSlideBottom = Math.min(...activeSlideBottoms);\n let nextActiveSlide = Math.min(activeSlideTop, activeSlideBottom);\n const play = activeSlideBottom >= activeSlideTop;\n if (nextActiveSlide === Infinity) nextActiveSlide = activeSlide;\n this.setState({\n activeSlideTops,\n activeSlide: nextActiveSlide,\n play,\n });\n };\n\n setRecommendationIdOnClick = (items, selectedItem) => {\n const { setRecommendationId } = this.props;\n const recommendationIdData = getRecommendationIdDataForItem(items, selectedItem);\n setRecommendationId(recommendationIdData);\n };\n\n activateAutoplay = panels => {\n const { setGlobalVideoDisabled } = this.props;\n const member = _.get(panels, 'member', []);\n const firstMember = _.get(member, '0.items.member', []);\n const showcase = member?.[0];\n const collectionType = showcase?.collectionType;\n const isShowcaseCarousel = isCarouselShowcase(collectionType);\n if (autoplayEnabled()) {\n if (!isShowcaseCarousel || (isShowcaseCarousel && firstMember.length === 1)) {\n const playerType = PLAYER_TYPE_HERO;\n const source = PAGE_COLLECTION;\n setGlobalVideoDisabled({ value: false, source, playerType });\n }\n }\n };\n\n callCollectionImpressionEvent = () => {\n const { collectionImpressionCalled, account, visibleCollections } = this.props;\n getTealiumRedesignEvents({ account }).collectionImpression({ visibleCollections });\n collectionImpressionCalled();\n };\n\n handleWaypointEntryAnalytics = ({ anonymousId, featuredTitle, headline, idx, panel, panels }) => {\n if (!this.viewedCollections.has(idx)) {\n const position = getCollectionPosition(panels, idx, headline);\n\n setOptimizelyCollectionViewedEvent({\n anonymousId,\n featuredTitle,\n panelId: panel.id,\n position: position - 1,\n });\n\n this.viewedCollections.set(idx, {\n contentUids: getSegmentContentUidString(panel),\n id: panel.id,\n idx,\n });\n }\n };\n\n handleSaveLiveRestart = ({ video }) => {\n const { saveGlobalLiveRestart } = this.props;\n saveGlobalLiveRestart(video);\n };\n\n selectPanelRenderer = (boundProps, panel) => {\n const { useShowcaseFallback, showcaseFallback, updateCollectionOrder } = this.props;\n const { idx, isFirst } = boundProps;\n const { showcase, panelsRendered } = this.state;\n const currentShowcaseId = _.get(showcase, 'id');\n const panelType = _.get(panel, 'panelType');\n const panelId = _.get(panel, 'id');\n const collectionType = panel?.collectionType;\n const defaultPanelTypes = [\n 'categorylist',\n 'content',\n 'partnerShowPanel',\n 'partnerVideoPanel',\n 'showcaseItem',\n 'shows',\n 'videos',\n ];\n const isDefaultPanel = _.includes(defaultPanelTypes, panelType);\n const isShowcaseFallback = collectionType === 'showcase-fallback';\n const isShowcaseType = isShowcase(panel);\n const isShowcaseCarousel = isCarouselShowcase(collectionType);\n if (isDefaultPanel && !isShowcaseFallback) {\n const isCurrentShowcase = currentShowcaseId && currentShowcaseId === panelId;\n const swapWithFallback = useShowcaseFallback && isShowcaseType && showcaseFallback;\n const preventShowcaseRender = isShowcaseType && !isCurrentShowcase;\n const panelToRender = swapWithFallback ? showcaseFallback : panel;\n // if not using fallback, remove id from panel order\n if (!swapWithFallback && !preventShowcaseRender) updateCollectionOrder(showcaseFallback);\n const shouldRenderPanel = shouldRenderDefaultPanel(panelToRender, updateCollectionOrder);\n\n if (!shouldRenderPanel || preventShowcaseRender) {\n this.hiddenPanels.add(panelId);\n return null;\n }\n\n const renderParams = { panel: panelToRender, idx, isFirst };\n if (isShowcaseCarousel)\n return isFirst\n ? this.renderPanelHeroV2(renderParams)\n : this.defaultPanelRendererV2(renderParams);\n return this.defaultPanelRenderer(renderParams);\n }\n if (panelType === PANEL_TYPE_PROMOS) {\n // do not include promos in panel order, only collection items\n updateCollectionOrder(panel);\n const item = _.get(panel, 'items.member.0');\n const promoType = _.get(item, 'promoType');\n if (promoType === PROMO_TYPE_LEAD) {\n return this.renderLargePromo(boundProps, item);\n }\n if (promoType === PROMO_TYPE_INSET) {\n return this.renderSmallPromo(boundProps, item);\n }\n if (promoType === 'genre') {\n return this.genrePanelRenderer({ panel, idx });\n }\n }\n\n if (collectionType === PANEL_TYPE_PLAYER_BANNER) {\n return null;\n }\n\n if (getMarketingVideoBanner(panel)) {\n return this.renderMarketingVideoBanner({ panel, idx });\n }\n\n if (!panelsRendered) this.setState({ panelsRendered: true });\n\n return null;\n };\n\n toggleUpcomingOverlay = clickedItem => {\n const { upcomingOverlayOpen } = this.props;\n const item = _.get(clickedItem, 'originalItem');\n if (isUpcomingContent(item)) {\n this.setState({ overlayItemProps: clickedItem });\n upcomingOverlayOpen(true);\n }\n };\n\n toggleVideoModal = (opts = {}) => {\n const { url, videoData, panelIdx, preventScroll } = opts;\n const { shouldRenderVideoModal: prevShouldRender, lastActiveSlide } = this.state;\n const { setOverlay, panels } = this.props;\n if (prevShouldRender) {\n this.setState({\n lastActiveSlide: 0,\n shouldRenderVideoModal: false,\n videoModalId: null,\n videoModalData: null,\n });\n setOverlay(OVERLAY_VIDEO_MODAL, false);\n const activeCollectionId = _.get(panels, `member.${lastActiveSlide}.id`, null);\n if (activeCollectionId && !preventScroll) this.scrollToCollection(panels, activeCollectionId);\n } else {\n const videoId = getVideoIdFromUrl(url);\n this.setState(\n {\n lastActiveSlide: panelIdx,\n shouldRenderVideoModal: true,\n videoModalId: videoId,\n videoModalData: videoData,\n },\n () => {\n setOverlay(OVERLAY_VIDEO_MODAL);\n },\n );\n }\n };\n\n updateVisibleSlides = (prevSlideIndex, nextSlideIndex, panel, isHalfWay) => {\n // Called upon carousel click\n const {\n account,\n breakpoint,\n disableScroll,\n updateVisibleElements,\n visibleCollections,\n } = this.props;\n const { shouldFetchMore } = this.state;\n const { allowScrollLock, carouselLimit } = BREAKPOINTS[breakpoint];\n\n if (isHalfWay && !shouldFetchMore) {\n this.setState({\n shouldFetchMore: true,\n });\n }\n\n if (allowScrollLock) {\n disableScroll({ disableScroll: true, bodyOnly: true });\n }\n\n // Call Collection Impression Event on Carousel Click\n getTealiumRedesignEvents({ account }).collectionImpression({ visibleCollections });\n\n // Update new visible items\n const collectionLength = _.get(panel, 'items.totalItems');\n const headline = _.get(panel, 'headline');\n let firstSlideIdx = nextSlideIndex;\n let lastSlideIdx = nextSlideIndex + carouselLimit;\n if (lastSlideIdx > collectionLength) {\n lastSlideIdx = collectionLength;\n firstSlideIdx = collectionLength - carouselLimit;\n }\n const currentVisibleCollections = visibleCollections;\n const slideCollectionItems = _.get(panel, 'items.member');\n const slideRange = [\n Math.min(firstSlideIdx, lastSlideIdx),\n Math.max(firstSlideIdx, lastSlideIdx),\n ];\n const currentVisibleSlideItems = slideCollectionItems.slice(slideRange[0], slideRange[1]);\n _.forEach(currentVisibleSlideItems, (item, index) => {\n const slideItem = item;\n slideItem.slideIndex = index + slideRange[0];\n });\n if (currentVisibleCollections[headline]) {\n currentVisibleCollections[headline].items = currentVisibleSlideItems;\n currentVisibleCollections[headline].slideRange = slideRange;\n }\n updateVisibleElements(currentVisibleCollections);\n };\n\n refreshData = () => {\n const isTabOnFocus = _.get(document, 'visibilityState') === 'visible';\n if (!isTabOnFocus) return;\n const { location, params } = this.props;\n const pathName = _.get(location, 'pathname');\n const newRelicPageName = getNewRelicPageName(pathName, params);\n logEvent(`on${newRelicPageName}ScreenStart`);\n logEvent(`on${newRelicPageName}ScreenView`);\n this.fetchCollectionData();\n };\n\n handleSlideChangeBottom(idx, inRange) {\n const { activeSlideBottoms } = this.state;\n const slideIndex = activeSlideBottoms.indexOf(idx);\n if (inRange && slideIndex < 0) {\n activeSlideBottoms.push(idx);\n } else if (!inRange && slideIndex >= 0) {\n activeSlideBottoms.splice(slideIndex, 1);\n }\n if (debouncedScroll) debouncedScroll.cancel();\n debouncedScroll = _.debounce(this.setActiveSlide, SCROLL_DEBOUNCE_TIME);\n debouncedScroll();\n }\n\n handleSlideChangeTop = (idx, inRange) => {\n const { activeSlideTops } = this.state;\n const slideIndex = activeSlideTops.indexOf(idx);\n if (inRange && slideIndex < 0) {\n activeSlideTops.push(idx);\n } else if (!inRange && slideIndex >= 0) {\n activeSlideTops.splice(slideIndex, 1);\n }\n if (debouncedScroll) debouncedScroll.cancel();\n debouncedScroll = _.debounce(this.setActiveSlide, SCROLL_DEBOUNCE_TIME);\n debouncedScroll();\n };\n\n isLoading() {\n const { panels } = this.props;\n return (\n !panels || !panels.member || panels.length === 0 || panels['@id'].includes('local-affiliates')\n );\n }\n\n loadAllClick({ suggestedNetwork, suggestedFilter, seriesType, isSportsCollectionType }) {\n const { setFindTab, setOverlay, setSuggestedShowsTab } = this.props;\n\n if (isSportsCollectionType) {\n setOverlay(OVERLAY_HEADER_SEARCH);\n return setFindTab(null, null, null, suggestedNetwork);\n }\n return setSuggestedShowsTab({ suggestedNetwork, suggestedFilter });\n }\n\n refreshCollection() {\n const {\n accessToken,\n coordinates,\n deviceId,\n fetchCollections,\n updateVisibleElements,\n } = this.props;\n const { route, location, params } = this.props;\n const path = _.get(route, 'screenUrl');\n const screenName = _.get(route, 'path');\n fetchCollections(path, 2, accessToken, screenName, deviceId, coordinates);\n updateVisibleElements({});\n const pathName = _.get(location, 'pathname');\n const newRelicPageName = getNewRelicPageName(pathName, params);\n logEvent(`on${newRelicPageName}ScreenStart`);\n logEvent(`on${newRelicPageName}ScreenView`);\n }\n\n checkForLiveContent() {\n const { liveItemId } = this.state;\n\n // only the first slide on the first panel should trigger the page to scroll to the top.\n const firstItem = _.get(this.props, 'panels.member.0.items.member.0', null);\n if (!firstItem) return;\n\n const { '@id': id, playerScreenUrl, livePlayerScreenUrl, startDate, endDate } = firstItem;\n\n if (liveItemId === id) return;\n\n if (playerScreenUrl && livePlayerScreenUrl && startDate && endDate) {\n const currentDate = now();\n const starts = stringToDate(startDate);\n const ends = stringToDate(endDate);\n\n const isLive = isBetween(currentDate, starts, ends);\n if (!isLive) return;\n\n // first item is live, scroll to top.\n this.setState({ liveItemId: id }, () => {\n animateScroll.scrollToTop();\n });\n }\n }\n\n scrollToCollection(panels, collectionId) {\n const { clearInterval, setInterval } = this.props;\n const decodedCollectionId = _.toLower(decodeURIComponent(collectionId));\n if (!panels) return;\n const collectionLocalIndex = _.findIndex(panels.member, o => {\n const { id, name, headline } = o;\n const isIdMatch = id === collectionId;\n const isNameMatch = _.toLower(name) === decodedCollectionId;\n const isHeadlineMatch = _.toLower(headline) === decodedCollectionId;\n return isIdMatch || isNameMatch || isHeadlineMatch;\n });\n const scrollElement = `${ALL_COLLECTIONS_SCROLL_PREFIX}${collectionLocalIndex}`;\n const interval = setInterval(() => {\n if (document.getElementsByName(scrollElement)[0]) {\n scroller.scrollTo(scrollElement, { offset: -60 });\n clearInterval(interval);\n }\n }, 1000);\n }\n\n defaultPanelRenderer({ panel, idx, isFirst }) {\n const {\n accessToken,\n anonymousId,\n breakpoint,\n collectionOrder,\n coordinates,\n forceKeyartForShowcase,\n globalVideoStartedPlayback,\n isAuthenticated,\n overlay,\n panels,\n preauthorizedResources,\n removeVideoHero,\n removeGlobalVideoPlayer,\n router,\n saveLiveVideo,\n setCoordinates,\n setSuggestedChannel,\n setOverlay,\n setVideoHero,\n streamExit,\n updateVisibleElements,\n videoIsLive,\n visibleCollections,\n } = this.props;\n const categoryType = panels?.categoryType;\n const { activeSlide, play, load } = this.state;\n const {\n allowInfoToggle,\n carouselLimit,\n showLiveButtons,\n showTileMetadataOnHover,\n smallCollectionHeader,\n useSeriesLogo,\n } = BREAKPOINTS[breakpoint];\n\n const {\n id: panelId,\n headline,\n images,\n items,\n collectionCTA,\n collectionType,\n name: collectionName,\n } = panel;\n if (!items) return null;\n const currentItems = {\n ...items,\n member: _.filter(items.member, item => {\n const type = _.get(item, '@type', null);\n if (type === TYPE_EPG_LISTING && !isVideoLive(item) && !isUpcomingContent(item))\n return false;\n return true;\n }),\n };\n\n const totalItems = _.get(currentItems, 'totalItems');\n let originalFirstItem = _.get(currentItems, 'member.0');\n if (!originalFirstItem) return null;\n if (originalFirstItem.items) {\n originalFirstItem = _.get(originalFirstItem, 'currentItems.member.0', originalFirstItem);\n }\n const isSeriesPromo = collectionType === 'seriespromo';\n const firstItem = Object.assign(originalFirstItem);\n firstItem.isAuthenticated = !!isAuthenticated;\n firstItem.preauthorizedResources = preauthorizedResources;\n firstItem.isSeriesPromo = isSeriesPromo;\n firstItem.collectionType = collectionType;\n const processedItem = featuredVideoProcessor({\n breakpoint,\n categoryType,\n context: COLLECTION_HERO_IMAGE,\n item: firstItem,\n });\n const videos = !isFirst ? currentItems.member : currentItems.member.slice(1);\n const { name, isLive, description } = processedItem;\n const featuredTitle = headline || name;\n const featuredTitleImage = _.get(images, 'header.raw');\n const slideClassName = classNames(\n Style.slide,\n Style.defaultPanel,\n idx === 0 ? Style.first : null,\n activeSlide === idx ? Style.active : null,\n activeSlide === idx && !play ? Style.inactive : null,\n );\n const headerContainerClass = isFirst ? Style.homeSlideHeaderContainer : null;\n let videoItems = videos.map(v => {\n if (!v) return null;\n const data = { ...v };\n data.isAuthenticated = !!isAuthenticated;\n data.preauthorizedResources = preauthorizedResources;\n data.isSeriesPromo = isSeriesPromo;\n data.showTileMetadataOnHover = showTileMetadataOnHover;\n return data;\n });\n videoItems = _.filter(videoItems, v => v);\n const onSelection = ({ itemIndex }) => {\n _.set(window, 'context.segment.home.sourceName', featuredTitle);\n const selectedItem = itemIndex !== null ? itemIndex + 1 : 0;\n const data = {\n title: featuredTitle,\n collectionType,\n items: currentItems,\n selectedItem,\n };\n this.setRecommendationIdOnClick(currentItems, selectedItem);\n setTealiumSourceCollectionGlobal(data);\n };\n const hideVideoItems = idx === 0 || _.isEmpty(videoItems);\n const collectionInfo = {\n headline,\n collectionType,\n categoryType,\n panelId,\n totalItems,\n totalCollections: this.pageCollectionLength || _.get(panels, 'totalItems'),\n uID: firstItem?.uID,\n };\n const onPrimaryButtonClick = autoplayEnabled()\n ? e => {\n e.preventDefault();\n const url = e.target.href;\n if (globalVideoStartedPlayback) {\n this.updatePersistGlobalVideoAfterUmount(true, url);\n } else {\n const source = PAGE_COLLECTION;\n removeGlobalVideoPlayer({ source });\n router.push(url);\n }\n }\n : null;\n const header = (\n <HomeSlideHeaderComp\n accessToken={accessToken}\n allowInfoToggle={allowInfoToggle}\n breakpoint={breakpoint}\n callCollectionImpressionEvent={this.callCollectionImpressionEvent}\n collectionInfo={collectionInfo}\n coordinates={coordinates}\n description={description}\n disableSingleVideoHeroRender={globalVideoStartedPlayback && !streamExit}\n streamExit={streamExit}\n disableVideoRender={forceKeyartForShowcase}\n foxAwesomeLayout\n hasSingleSlide\n idx={idx}\n isFirst={isFirst}\n isLive={!!isLive}\n isHeroCarousel={false}\n item={processedItem}\n load={load}\n onPrimaryButtonClick={onPrimaryButtonClick}\n onSelection={onSelection}\n onTitleClick={onSelection}\n onWatch={() => onSelection({ itemIndex: null })}\n overlay={overlay}\n play={!overlay}\n removeVideoHero={removeVideoHero}\n router={router}\n saveLiveRestart={this.handleSaveLiveRestart}\n saveLiveVideo={saveLiveVideo}\n setCoordinates={setCoordinates}\n setOverlay={setOverlay}\n setSuggestedChannel={setSuggestedChannel}\n setVideoHero={setVideoHero}\n showLiveButtons={showLiveButtons}\n smallCollectionHeader={smallCollectionHeader}\n title={featuredTitle}\n titleImage={featuredTitleImage}\n toggleVideoModal={this.toggleVideoModal}\n useSeriesLogo={useSeriesLogo}\n videoIsLive={videoIsLive}\n />\n );\n return (\n <div key={`videoPanel-${panelId}-${idx}`} id={panelId} className={slideClassName}>\n <Element className={headerContainerClass} name={`${ALL_COLLECTIONS_SCROLL_PREFIX}${idx}`}>\n {this.renderHeroImage(idx, 0, isFirst)}\n <Waypoint\n onEnter={() => {\n this.handleSlideChangeTop(idx, true);\n optimizelyUserAttributeEvents().collectionItem(collectionName);\n this.handleWaypointEntryAnalytics({\n anonymousId,\n featuredTitle,\n headline,\n idx,\n panel,\n panels,\n });\n }}\n onLeave={() => this.handleSlideChangeTop(idx, false)}\n topOffset=\"250px\"\n bottomOffset=\"5%\"\n >\n {idx === 0 ? <div className={Style.slideContainer}>{header}</div> : null}\n </Waypoint>\n <Waypoint\n onEnter={() => {\n this.handleSlideChangeBottom(idx, true);\n // Update visible elements\n const currentElements = visibleCollections;\n // Do not include showcase item or non rendered collections\n if (idx === 0 || hideVideoItems) return null;\n const currentCollection = _.get(currentElements, headline, false);\n if (currentCollection) {\n currentCollection.active = true;\n return updateVisibleElements(currentElements);\n }\n const slideCollectionItems = _.get(currentItems, 'member');\n const currentVisibleSlideItems = slideCollectionItems.slice(0, carouselLimit);\n _.forEach(currentVisibleSlideItems, (item, index) => {\n const slideItem = item;\n slideItem.slideIndex = index;\n });\n const collectionLength = _.get(panel, 'currentItems.totalItems');\n const endRangeValue =\n collectionLength < carouselLimit ? collectionLength : carouselLimit;\n const verticalPosition = getCollectionIndex(collectionOrder, panelId);\n const newItem = {\n headline,\n collectionType,\n totalItems,\n items: currentVisibleSlideItems,\n active: true,\n verticalPosition,\n slideRange: [0, endRangeValue - 1],\n };\n currentElements[headline] = newItem;\n return updateVisibleElements(currentElements);\n }}\n onLeave={() => {\n this.handleSlideChangeBottom(idx, false);\n // Update visible elements\n const currentElements = visibleCollections;\n const currentItem = _.get(currentElements, headline, false);\n if (currentItem) currentItem.active = false;\n updateVisibleElements(currentElements);\n }}\n topOffset=\"20%\"\n bottomOffset=\"20%\"\n >\n {hideVideoItems ? null : (\n <div>\n {this.renderTileCarousel({\n idx,\n videoItems,\n headline: featuredTitle,\n featuredTitleImage,\n isFirst,\n collectionCTA,\n panel,\n onSelection,\n })}\n </div>\n )}\n </Waypoint>\n </Element>\n </div>\n );\n }\n\n renderPanelHeroV2({ panel, idx, isFirst }) {\n const {\n accessToken,\n breakpoint,\n coordinates,\n forceKeyartForShowcase,\n globalVideoStartedPlayback,\n isAuthenticated,\n overlay,\n panels,\n preauthorizedResources,\n removeVideoHero,\n removeGlobalVideoPlayer,\n router,\n saveLiveVideo,\n setCoordinates,\n setSuggestedChannel,\n setOverlay,\n setVideoHero,\n streamExit,\n videoIsLive,\n } = this.props;\n const { activeSlide, play, load } = this.state;\n const heroCarouselProps = {\n accessToken,\n activeSlide,\n breakpoint,\n coordinates,\n forceKeyartForShowcase,\n globalVideoStartedPlayback,\n handleSaveLiveRestart: this.handleSaveLiveRestart,\n handleSlideChangeTop: this.handleSlideChangeTop,\n idx,\n isAuthenticated,\n isFirst,\n load,\n overlay,\n panel,\n panels,\n play,\n preauthorizedResources,\n removeGlobalVideoPlayer,\n removeVideoHero,\n renderHeroImage: this.renderHeroImage,\n router,\n saveLiveVideo,\n setCoordinates,\n setOverlay,\n setRecommendationIdOnClick: this.setRecommendationIdOnClick,\n setSuggestedChannel,\n setVideoHero,\n streamExit,\n updatePersistGlobalVideoAfterUmount: this.updatePersistGlobalVideoAfterUmount,\n videoIsLive,\n };\n\n return (\n <>\n <HeroCarousel {...heroCarouselProps} />\n <Waypoint />\n </>\n );\n }\n\n defaultPanelRendererV2({ panel, idx, isFirst }) {\n const {\n anonymousId,\n breakpoint,\n collectionOrder,\n isAuthenticated,\n panels,\n preauthorizedResources,\n updateVisibleElements,\n visibleCollections,\n } = this.props;\n const { activeSlide, play } = this.state;\n const { carouselLimit, showTileMetadataOnHover } = BREAKPOINTS[breakpoint];\n\n const { id: panelId, headline, images, items, collectionCTA, collectionType } = panel;\n if (!items) return null;\n const totalItems = _.get(items, 'totalItems');\n let originalFirstItem = _.get(items, 'member.0');\n if (!originalFirstItem) return null;\n if (originalFirstItem.items) {\n originalFirstItem = _.get(originalFirstItem, 'items.member.0', originalFirstItem);\n }\n const isSeriesPromo = collectionType === 'seriespromo';\n const firstItem = Object.assign(originalFirstItem);\n firstItem.isAuthenticated = !!isAuthenticated;\n firstItem.preauthorizedResources = preauthorizedResources;\n firstItem.isSeriesPromo = isSeriesPromo;\n const processedItem = featuredVideoProcessor({\n breakpoint,\n context: COLLECTION_HERO_IMAGE,\n item: firstItem,\n });\n const videos = !isFirst ? items.member : items.member.slice(1);\n const { name } = processedItem;\n const featuredTitle = headline || name;\n const featuredTitleImage = _.get(images, 'header.raw');\n const slideClassName = classNames(\n Style.slide,\n Style.defaultPanel,\n idx === 0 ? Style.first : null,\n activeSlide === idx ? Style.active : null,\n activeSlide === idx && !play ? Style.inactive : null,\n );\n\n let headerContainerClass;\n\n if (isFirst) {\n headerContainerClass = classNames(Style.homeSlideHeaderContainer, Style.firstHeaderContainer);\n }\n\n let videoItems = videos.map(v => {\n if (!v) return null;\n const data = { ...v };\n data.isAuthenticated = !!isAuthenticated;\n data.preauthorizedResources = preauthorizedResources;\n data.isSeriesPromo = isSeriesPromo;\n data.showTileMetadataOnHover = showTileMetadataOnHover;\n return data;\n });\n videoItems = _.filter(videoItems, v => v);\n const onSelection = ({ itemIndex }) => {\n _.set(window, 'context.segment.home.sourceName', featuredTitle);\n const selectedItem = itemIndex !== null ? itemIndex + 1 : 0;\n const data = {\n title: featuredTitle,\n collectionType,\n items,\n selectedItem,\n };\n this.setRecommendationIdOnClick(items, selectedItem);\n setTealiumSourceCollectionGlobal(data);\n };\n const hideVideoItems = _.isEmpty(videoItems);\n return (\n <div key={`videoPanel-${panelId}-${idx}`} id={panelId} className={slideClassName}>\n <Element className={headerContainerClass} name={`${ALL_COLLECTIONS_SCROLL_PREFIX}${idx}`}>\n {this.renderHeroImage(idx, 0, isFirst)}\n <Waypoint\n onEnter={() => {\n this.handleWaypointEntryAnalytics({\n anonymousId,\n featuredTitle,\n headline,\n idx,\n panel,\n panels,\n });\n this.handleSlideChangeBottom(idx, true);\n // Update visible elements\n const currentElements = visibleCollections;\n // Do not include showcase item or non rendered collections\n if (idx === 0 || hideVideoItems) return null;\n const currentCollection = _.get(currentElements, headline, false);\n if (currentCollection) {\n currentCollection.active = true;\n return updateVisibleElements(currentElements);\n }\n const slideCollectionItems = _.get(items, 'member');\n const currentVisibleSlideItems = slideCollectionItems.slice(0, carouselLimit);\n _.forEach(currentVisibleSlideItems, (item, index) => {\n const slideItem = item;\n slideItem.slideIndex = index;\n });\n const collectionLength = _.get(panel, 'items.totalItems');\n const endRangeValue =\n collectionLength < carouselLimit ? collectionLength : carouselLimit;\n const verticalPosition = getCollectionIndex(collectionOrder, panelId);\n const newItem = {\n headline,\n collectionType,\n totalItems,\n items: currentVisibleSlideItems,\n active: true,\n verticalPosition,\n slideRange: [0, endRangeValue - 1],\n };\n currentElements[headline] = newItem;\n return updateVisibleElements(currentElements);\n }}\n onLeave={() => {\n this.handleSlideChangeBottom(idx, false);\n // Update visible elements\n const currentElements = visibleCollections;\n const currentItem = _.get(currentElements, headline, false);\n if (currentItem) currentItem.active = false;\n updateVisibleElements(currentElements);\n }}\n topOffset=\"20%\"\n bottomOffset=\"5%\"\n >\n {hideVideoItems ? null : (\n <div>\n {this.renderTileCarousel({\n idx,\n videoItems,\n headline: featuredTitle,\n featuredTitleImage,\n isFirst,\n collectionCTA,\n panel,\n onSelection,\n })}\n </div>\n )}\n </Waypoint>\n </Element>\n </div>\n );\n }\n\n fetchCollectionData() {\n const { accessToken, coordinates, deviceId, fetchCollections, route } = this.props;\n const path = _.get(route, 'screenUrl');\n const screenName = _.get(route, 'path');\n fetchCollections(\n path,\n INITIAL_PANELS_TO_RENDER,\n accessToken,\n screenName,\n deviceId,\n coordinates,\n );\n }\n\n // sets timeout to refresh specific collections\n fetchCollectionInterval() {\n const { clearInterval, panels, setInterval } = this.props;\n const { collectionInterval } = this.state;\n let nextUpdateIn = _.get(panels, 'member.0.validFor', FETCH_COLLECTION_DEFAULT);\n if (nextUpdateIn < 0) nextUpdateIn = FETCH_COLLECTION_DEFAULT;\n\n if (collectionInterval) clearInterval(collectionInterval);\n const newCollectionInterval = setInterval(() => {\n this.refreshCollection();\n }, nextUpdateIn);\n this.setState({ collectionInterval: newCollectionInterval });\n }\n\n genrePanelRenderer({ panel, idx, isFirst }) {\n const { activeSlide, play } = this.state;\n const { id: panelId, headline, items } = panel;\n const videoItems = _.get(items, 'member', []);\n if (!videoItems || !videoItems.length) return null;\n const featuredTitle = headline || '';\n const slideClassName = classNames(\n Style.slide,\n Style.defaultPanel,\n idx === 0 ? Style.first : null,\n activeSlide === idx ? Style.active : null,\n activeSlide === idx && !play ? Style.inactive : null,\n );\n const genreCarousel = this.renderTileCarousel({\n headline: featuredTitle,\n isFirst,\n isGenreCollection: true,\n videoItems,\n panel,\n });\n\n return (\n <div key={`genrePanel-${panelId}-${idx}`} id={panelId} className={slideClassName}>\n <Element name={`${ALL_COLLECTIONS_SCROLL_PREFIX}${idx}`}>\n <Waypoint\n onEnter={() => {\n this.handleSlideChangeBottom(idx, true);\n }}\n onLeave={() => this.handleSlideChangeBottom(idx, false)}\n topOffset=\"20%\"\n bottomOffset=\"20%\"\n >\n <div>{genreCarousel}</div>\n </Waypoint>\n </Element>\n </div>\n );\n }\n\n getDefaultVideoContainerProps = () => {\n const {\n accessToken,\n account,\n adblock,\n anonymousId,\n anonymousLogin,\n authSuccess,\n blackoutConfig,\n blackoutDefinitions,\n breakpoint,\n deviceId,\n isStatic,\n mvpdData,\n onAuthCheckComplete,\n openSignIn,\n openSignUp,\n preauthorizedResources,\n profileId,\n provider,\n renderAuthContainer,\n setAccountCloseIgnoreRedirect,\n setAuthorizationToken,\n setBlockMVPDIncomplete,\n setInterval,\n setIsAuthenticated,\n setIsPlayerLoaded,\n setMVPDLogoutDataToAppState,\n setMVPDToAppState,\n setOverlay,\n setProvider,\n toggleMvpdAuthOverlay,\n triggerAuthCheck,\n } = this.props;\n\n return {\n accessToken,\n account,\n adblock,\n anonymousId,\n anonymousLogin,\n authSuccess,\n blackoutConfig,\n blackoutDefinitions,\n breakpoint,\n deviceId,\n isStatic,\n mvpdData,\n onAuthCheckComplete,\n openSignIn,\n openSignUp,\n preauthorizedResources,\n profileId,\n provider,\n renderAuthContainer,\n setAccountCloseIgnoreRedirect,\n setAuthorizationToken,\n setBlockMVPDIncomplete,\n setInterval,\n setIsAuthenticated,\n setIsPlayerLoaded,\n setMVPDLogoutDataToAppState,\n setMVPDToAppState,\n setOverlay,\n setProvider,\n toggleMvpdAuthOverlay,\n triggerAuthCheck,\n };\n };\n\n renderMarketingVideoBanner({ panel, idx }) {\n const { breakpoint, panels } = this.props;\n const { activeSlide, play } = this.state;\n const panelId = _.get(panel, 'id');\n const slideClassName = classNames(\n Style.slide,\n Style.defaultPanel,\n idx === 0 ? Style.first : null,\n activeSlide === idx ? Style.active : null,\n activeSlide === idx && !play ? Style.inactive : null,\n );\n const id = `marketingVideoBanner-${panelId}-${idx}`;\n const adjacentCollectionAbove = getAdjacentCollectionAbove(panels, idx);\n const isMobile = isMobileBreakpoint(breakpoint) || breakpoint === SITE_PLATFORM_TABLET;\n const bannerDimensions = getSegmentBannerDimensions('marketing video banner', isMobile);\n const bannerProps = {\n ...getMarketingVideoBanner(panel),\n breakpoint,\n adjacentCollectionAbove,\n bannerDimensions,\n };\n return (\n <div id={id} className={slideClassName}>\n <Element name={`${ALL_COLLECTIONS_SCROLL_PREFIX}${idx}`}>\n <MarketingBanner {...bannerProps} />\n </Element>\n </div>\n );\n }\n\n renderBreadcrumb = () => {\n const { route } = this.props;\n const isRouteHomeUrl = _.includes(helperGetHomeUrl(), route.path || '/');\n\n return (\n !isRouteHomeUrl && (\n <div className={Style.breadcrumb}>\n <BreadcrumbsComponent\n data={breadcrumbsCollectionParser(route)}\n customStyle={Style.breadcrumbs}\n />\n </div>\n )\n );\n };\n\n renderContent() {\n if (this.isLoading()) return this.renderLoading();\n\n const { location, params, panels } = this.props;\n const { newRelicStart } = this.state;\n const pathName = _.get(location, 'pathname');\n const newRelicPageName = getNewRelicPageName(pathName, params);\n if (newRelicStart) {\n logEvent(`on${newRelicPageName}ScreenFinished`);\n this.setState({ newRelicStart: false });\n }\n\n return (\n <IdleTimer onIdle={this.onIdle} timeout={5000}>\n {this.renderPanels()}\n <Waypoint\n topOffset=\"100px\"\n onEnter={() => {\n const { numPanelsRendered } = this.state;\n if (numPanelsRendered < panels?.member.length) {\n this.setState({ numPanelsRendered: numPanelsRendered + 3 });\n }\n }}\n />\n {this.renderVideoModal()}\n {this.renderBreadcrumb()}\n </IdleTimer>\n );\n }\n\n renderHeroImage = (index, memberIndex = 0, isFirst = false) => {\n const { panels, breakpoint } = this.props;\n const hero = _.get(panels, `member.${index}.items.member.${memberIndex}`);\n const isPromo = _.get(hero, 'promoType');\n const fadeClasses = [Style.fade, Style.redesignFade];\n if (!panels || panels.length === 0 || !isFirst) return null;\n const heroImage = this.getHeroImage(hero, isPromo);\n const heroImageUrl = getDynamicImage({\n breakpoint,\n url: heroImage,\n context: COLLECTION_HERO_IMAGE,\n });\n if (!heroImage) return null;\n return (\n <div className={classNames(Style.heroImageContainer, { [Style.heroPromo]: isPromo })}>\n <img\n className={Style.heroImagePoster}\n importance={memberIndex === 0 ? 'high' : 'low'}\n src={heroImageUrl}\n alt=\"heroImage\"\n />\n <div className={classNames(fadeClasses)} />\n </div>\n );\n };\n\n renderLargePromo(boundProps, item) {\n const { idx, isFirst } = boundProps;\n const { streamExit } = this.props;\n const { activeSlide, play } = this.state;\n const id = _.get(item, 'id');\n const headline = _.get(item, 'headline');\n const altHeadline = _.get(item, 'alternativeHeadline');\n const description = _.get(item, 'description');\n const subDescription = _.get(item, 'subDescription');\n const displayBrand = getDisplayBrand(item);\n const networkLogoUrl = getNetworkLogoUrl(displayBrand);\n const url = _.get(item, 'url');\n const buttonText = _.get(item, 'ctaText');\n const slideClassName = classNames(\n Style.slide,\n Style.defaultPanel,\n activeSlide === idx ? Style.active : null,\n activeSlide === idx && !play ? Style.inactive : null,\n );\n\n return (\n <div key={`large-promo-${id}-${idx}`} className={slideClassName}>\n <Element name={`${ALL_COLLECTIONS_SCROLL_PREFIX}${idx}`}>\n {this.renderHeroImage(idx, 0, isFirst)}\n <Waypoint\n onEnter={() => {\n this.handleSlideChangeTop(idx, true);\n }}\n onLeave={() => this.handleSlideChangeTop(idx, false)}\n topOffset=\"250px\"\n >\n <div>\n <HomeSlidePromoComp\n id={id}\n headline={headline}\n altHeadline={altHeadline}\n description={description}\n subDescription={subDescription}\n networkLogoUrl={networkLogoUrl}\n streamExit={streamExit}\n network={displayBrand}\n url={url}\n buttonText={buttonText}\n />\n </div>\n </Waypoint>\n </Element>\n </div>\n );\n }\n\n // eslint-disable-next-line class-methods-use-this\n renderLoading() {\n return (\n <>\n <div className={Style.loaderWrapper}>\n <Loader collections />\n <div className={Style.heroLoaderPlaceholder}>\n <div className={Style.heroLoaderTitle} />\n <div className={Style.heroLoaderSubtitle} />\n <div className={Style.heroLoaderDescription} />\n <div className={Style.heroLoaderBottomDescription} />\n <div className={Style.heroLoaderButton} />\n </div>\n </div>\n <div className={Style.loaderSeparator} />\n </>\n );\n }\n\n renderStrikeBanner(index) {\n if (!strikeBannerEnabled()) return null;\n const { panels, location } = this.props;\n\n const pathName = _.get(location, 'pathname', '');\n const isEntertainmentPage = pathName.indexOf('entertainment') !== -1;\n const isHomePage = pathName === '/';\n\n if (!isHomePage && !isEntertainmentPage) return null;\n\n const member = _.get(panels, 'member', []);\n const carouselIndexes = member.reduce((acc, panel, idx) => {\n const panelType = _.get(panel, 'panelType', null);\n if (panelType === PANEL_TYPE_VIDEOS || panelType === PANEL_TYPE_SHOWS) {\n acc.push(idx);\n }\n return acc;\n }, []);\n\n const firstPlacementAterNthCarousel = 3;\n const firstPlacementIndex = _.get(carouselIndexes, firstPlacementAterNthCarousel, null);\n const lastIndex = carouselIndexes.slice(-1).pop();\n const lastPlacementIndex = lastIndex !== firstPlacementAterNthCarousel ? lastIndex : null;\n\n const placement = [firstPlacementIndex, lastPlacementIndex].indexOf(index);\n const bannerIndex = placement !== -1 ? placement + 1 : null;\n if (!bannerIndex) return null;\n const pageType = isEntertainmentPage ? STRIKE_PAGE_TYPE_SECTION_FRONT : STRIKE_PAGE_TYPE_HOME;\n return <StrikeBanner index={bannerIndex} pageType={pageType} />;\n }\n\n renderPanels() {\n const {\n accessToken,\n authSuccess,\n breakpoint,\n coordinates,\n deviceId,\n favoritesManager,\n globalVideoStartedPlayback,\n incrementPanelRenderCount,\n useShowcaseFallback,\n panels,\n location,\n } = this.props;\n const {\n shouldFetchMore,\n showcase,\n userViewedPlayerBanner,\n renderedPanels,\n numPanelsRendered,\n } = this.state;\n const showcaseId = _.get(showcase, 'id');\n let isFirst = true;\n if (!panels) return null;\n const favorites = _.get(favoritesManager, 'favorites');\n let items = JSON.parse(JSON.stringify(panels.member));\n if (showcaseId) {\n const itemsWithoutShowcase = _.filter(items, obj => obj && obj.id !== showcaseId);\n const itemsWithShowcaseFirst = [showcase, ...itemsWithoutShowcase];\n items = itemsWithShowcaseFirst;\n }\n const path = _.get(location, 'pathname');\n const fakeCollecitonData = getOptimizelyFakeCollectionData();\n if (MarketingCollectionEnabled || (fakeCollecitonData.renderFakeCollection && path === '/')) {\n if (fakeCollecitonData.renderFakeCollection)\n NationCollection.headline = fakeCollecitonData.collectionTitle;\n items.splice(2, 0, NationCollection);\n }\n if (!this.pageCollectionLength)\n this.pageCollectionLength = getCollectionCount(panels, this.hiddenPanels);\n let index = 0;\n return items.map(panel => {\n if (!panel) return null;\n\n const { showcase } = this.state;\n const showcaseId = _.get(showcase, 'id');\n const panelId = _.get(panel, 'id');\n const idx = index;\n const member = _.get(panel, 'items.member', []);\n const isFirstVal = isFirst;\n if (isFirst) isFirst = false;\n\n index += 1;\n\n const panelProps = {\n accessToken,\n breakpoint,\n calculateValidFor: calculateNextRefreshForPanel,\n 'data-test': 'home-content',\n deviceId,\n headerGenerator: helperGetApiHeaders,\n panelData: panel,\n panelId,\n pageType: 'upNext',\n propsToWatch: {\n authSuccess,\n coordinates,\n favorites,\n globalVideoStartedPlayback,\n member,\n shouldFetchMore,\n showcaseId,\n useShowcaseFallback,\n userViewedPlayerBanner,\n },\n routeGenerator: helperConvertApiRoute,\n shouldFetchMore,\n };\n if (index > numPanelsRendered) return null;\n return (\n <div key={panel.id}>\n <Panel\n key={`home-panel-${panelId}`}\n {...panelProps}\n renderer={data => {\n if (!renderedPanels[panelId] && _.get(data, 'panelType')) {\n this.setState(prevState => ({\n renderedPanels: {\n ...prevState.renderedPanels,\n [panelId]: true,\n },\n }));\n updateSegmentBannerData(_.get(panels, 'member', []));\n incrementPanelRenderCount();\n }\n return this.selectPanelRenderer({ idx, isFirst: isFirstVal }, data);\n }}\n />\n {this.renderStrikeBanner(idx)}\n </div>\n );\n });\n }\n\n renderSmallPromo(boundProps, item) {\n const { idx } = boundProps;\n const { breakpoint, panels } = this.props;\n const adjacentCollectionAbove = getAdjacentCollectionAbove(panels, idx);\n const isMobile = isMobileBreakpoint(breakpoint) || breakpoint === SITE_PLATFORM_TABLET;\n const id = _.get(item, 'id');\n const headlineText = _.get(item, 'headline');\n const name = _.get(item, 'name', '');\n const displayBrand = getDisplayBrand(item);\n const networkLogoUrl = getNetworkLogoUrl(displayBrand);\n const url = _.get(item, 'url');\n const buttonText = _.get(item, 'ctaText');\n const formattedUrl = formatDirectUrl(url);\n const onlyRenderImage = !buttonText;\n const imageType = _.get(BREAKPOINTS[breakpoint], 'smallPromoImage');\n const imageUrl = _.get(item, imageType);\n // Promo Objects missing AltText CPEWEB-1972\n const imageTag = renderImage({\n alt: '',\n breakpoint,\n className: smallPromoStyle.background,\n imageType: SMALL_PROMO_IMAGE,\n src: imageUrl,\n lazyLoad: false,\n });\n const { target, rel } = getUrlTarget(formattedUrl);\n const onClickSmallPromo = () => {\n const bannerType = getSegmentBannerType(item, this.banner?.current || {});\n const bannerDimensions = getSegmentBannerDimensions(bannerType, isMobile);\n\n handleAnalytics({\n event: Events.BANNER_NOTIFICATION_ACTION,\n payload: {\n page_message_title: _.get(item, 'name'),\n page_message_text: _.get(item, 'headline'),\n page_message_type: _.get(item, 'name'),\n page_action_type: _.get(item, 'name'),\n },\n });\n\n const bannerClickedProps = _.pickBy({\n page_item_dimension: bannerDimensions,\n page_item_type: bannerType,\n page_item_title: headlineText || name,\n page_item_subtitle: '',\n page_button_text: '',\n page_action_location: 'whole banner',\n page_collection_title: adjacentCollectionAbove,\n page_item_state: 'static image',\n });\n handleAnalytics({\n event: Events.BANNER_CLICKED,\n payload: { ...bannerClickedProps },\n });\n };\n let networkComponent = networkLogoUrl ? (\n <img className={smallPromoStyle.networkLogo} src={networkLogoUrl} alt={displayBrand} />\n ) : null;\n let button = (\n <Link to={formattedUrl} target={target} rel={rel} className={smallPromoStyle.cta}>\n {buttonText}\n </Link>\n );\n let headline = <div className={smallPromoStyle.headline}>{headlineText}</div>;\n let contents = (\n <div className={smallPromoStyle.container}>\n {networkComponent}\n {headline}\n {button}\n </div>\n );\n\n if (onlyRenderImage) {\n networkComponent = null;\n button = null;\n headline = null;\n contents = null;\n }\n\n let outerContainerChildren = (\n <div>\n {imageTag}\n {contents}\n </div>\n );\n\n if (onlyRenderImage) {\n outerContainerChildren = (\n <Link\n to={formattedUrl}\n target={target}\n rel={rel}\n aria-label={_.get(item, 'name')}\n onClick={onClickSmallPromo}\n >\n {outerContainerChildren}\n </Link>\n );\n }\n\n return (\n <div\n key={`small-promo-${id}-${idx}`}\n ref={this.banner}\n className={classNames(\n Style.slide,\n Style.defaultPanel,\n Style.active,\n smallPromoStyle.slideSmallPromo,\n Style.promoBanner,\n )}\n >\n <Element name={`${ALL_COLLECTIONS_SCROLL_PREFIX}${idx}`}>\n <Waypoint\n onEnter={() => this.handleSlideChangeTop(idx, true)}\n onLeave={() => this.handleSlideChangeTop(idx, false)}\n topOffset=\"250px\"\n >\n <div className={smallPromoStyle.outerContainer}>{outerContainerChildren}</div>\n </Waypoint>\n </Element>\n </div>\n );\n }\n\n renderTileCarousel({\n idx,\n collectionCTA,\n videoItems,\n featuredTitleImage,\n isFirst,\n isGenreCollection,\n panel,\n onSelection,\n } = {}) {\n const {\n account,\n breakpoint,\n collectionOrder,\n favoritesManager,\n location: { pathname },\n panels,\n removeGlobalVideoPlayer,\n saveLiveVideo,\n disableScroll,\n visibleCollections,\n setSuggestedChannel,\n } = this.props;\n\n const {\n addCarouselPlaceholders,\n allowScrollLock,\n carouselLimit,\n roundArrows,\n slidesToScroll,\n posterLimit,\n posterToScroll,\n descriptionLines,\n showCarouselArrows,\n useMobileUpcomingOverlay,\n useScrollableDiv,\n } = BREAKPOINTS[breakpoint];\n\n const headline = _.get(panel, 'headline');\n const totalCollections = _.get(panels, 'totalItems');\n const collectionType = _.get(panel, 'collectionType');\n const displayTemplate = _.get(panel, 'displayTemplate');\n const totalItems = _.get(panel, 'items.totalItems');\n const panelId = _.get(panel, 'id');\n const collectionName = getCollectionName(pathname);\n const playAllText = _.get(collectionCTA, '[0].label', '');\n\n const tealiumTileClick = props => {\n const { item, idx: index } = props;\n const seriesName = _.get(item, 'seriesName');\n const name = _.get(item, 'name');\n const subtitle = _.get(homeCarouselVideoProcessor({ video: item }), 'subtitleText');\n this.callCollectionImpressionEvent();\n const cachedVerticalPosition = _.get(\n visibleCollections,\n `${headline}.verticalPosition`,\n null,\n );\n const verticalPosition =\n cachedVerticalPosition || getCollectionIndex(collectionOrder, panelId);\n getTealiumRedesignEvents({ account }).collectionItemSelect({\n account,\n state: 'static image',\n containerTitle: headline,\n verticalPosition,\n horizontalPosition: `${index + 1}`,\n title: seriesName || name,\n subtitle,\n cc: 'cc off',\n volume: 'volume off',\n collectionTitle: headline,\n collectionType,\n playlistLength: totalItems,\n collectionCount: totalCollections,\n item,\n visibleCollections,\n });\n };\n\n const playAllClick = () => {\n const { headline } = panel;\n const collectionType = panel?.collectionType;\n const isLocalClip = collectionType === COLLECTION_TYPE_LOCAL_CLIPS;\n const video = _.get(panel, 'items.member[0]', null);\n if (isLocalClip) {\n setLocalChannelCookies({\n headline,\n playerScreenUrl: video?.playerScreenUrl,\n playlist: panel?.playlist,\n videoId: video?.id,\n });\n }\n if (video?.id) {\n const path = `/watch/${video.id}`;\n browserHistory.push(path);\n }\n };\n\n const onTileClick = props => {\n const { item, itemIdx } = props;\n const { headline, collectionType } = panel;\n const isLiveItem = isLive(_.get(item, '@type'));\n const isLiveNow = _.get(item, 'isLiveNow', false);\n const isLocalClip = collectionType === COLLECTION_TYPE_LOCAL_CLIPS;\n const isAffiliateList = collectionType === COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST;\n const isLocalLive = panel?.headline?.toLowerCase() === COLLECTION_TYPE_LOCAL_LIVE;\n const { id, callSign, isUserOutOfMarket = false } = item;\n if (isLocalLive && isUserOutOfMarket) {\n setOutOfMarketLocalCookies(item);\n }\n if (isAffiliateList) {\n setCookie({\n name: LOCAL_CHANNEL_STATION_PICKER,\n options: { path: '/' },\n value: id,\n });\n window.location.reload();\n }\n if (isLocalClip) {\n setLocalChannelCookies({\n headline,\n playerScreenUrl: item?.playerScreenUrl,\n playlist: panel?.playlist,\n videoId: id,\n });\n }\n // Revisit: there's no way to identify bonus feeds right now, so we're using\n // this for all live sports feeds(?)\n if (isSportsContent(item) && isLiveItem) {\n if (isLiveItem && !isLiveNow) return;\n setSuggestedChannel({ network: callSign, programId: id });\n helperGoToRelativeUrl(helperGetLiveUrl({ callSign }));\n }\n if (autoplayEnabled()) {\n const source = PAGE_COLLECTION;\n removeGlobalVideoPlayer({ source });\n }\n if (!EpgEnabled && isLiveItem) saveLiveVideo(item);\n if (onSelection) onSelection({ itemIndex: itemIdx });\n tealiumTileClick(props);\n };\n const isMobile = isMobileBreakpoint(breakpoint);\n const isFeatured = displayTemplate === 'featured';\n const isLatestEpisodes = !isMobile && displayTemplate === 'latestEpisodes';\n const panelType = _.get(panel, 'panelType');\n const isPartnerCollection =\n panelType === PANEL_TYPE_PARTNER_VIDEO || panelType === PANEL_TYPE_PARTNER_SHOWS;\n const isPosters = isFeatured || isLatestEpisodes || isPartnerCollection;\n const isLiveCollection = collectionType && collectionType.toLowerCase() === 'live';\n const isLocalNews = collectionType === COLLECTION_TYPE_LOCAL_CLIPS;\n const isCollectionCategoryList = collectionType === COLLECTION_TYPE_AFFILIATE_CATEGORY_LIST;\n const seeAll = isLocalNews && collectionCTA && (\n <Link className={Style.seeAllButton} onClick={playAllClick}>\n <span>{playAllText}</span>\n <Icon color=\"white\" size=\"medium\" viewBox=\"0 0 18 32\" icon=\"ios-arrow-right\" />\n </Link>\n );\n let additionalPosterLimit = 4;\n const currentBreakpoint = _.get(window, 'innerWidth');\n if (currentBreakpoint >= TABLET_LANDSCAPE_BREAKPOINT) additionalPosterLimit = 5;\n if (currentBreakpoint >= DESKTOP_BREAKPOINT) additionalPosterLimit = 6;\n const currentPosterLimit = additionalPosterEnabled() ? additionalPosterLimit : posterLimit;\n const customPosterLimit =\n isLatestEpisodes && SITE_PLATFORM_WEB === breakpoint ? 4 : currentPosterLimit;\n const customPosterToScroll =\n isLatestEpisodes && SITE_PLATFORM_WEB === breakpoint ? 4 : posterToScroll;\n let itemsToScroll = isPosters ? customPosterToScroll : slidesToScroll;\n let itemsToShow = isPosters ? customPosterLimit : carouselLimit;\n if (liveTileCollectionV2Enabled() && isLiveCollection && SITE_PLATFORM_TABLET === breakpoint) {\n itemsToScroll = 2;\n itemsToShow = 2;\n }\n if (\n liveTileCollectionV2Enabled() &&\n isLiveCollection &&\n (SITE_PLATFORM_WEB === breakpoint || SITE_PLATFORM_WEB_LARGE === breakpoint)\n ) {\n itemsToScroll = 3;\n itemsToShow = 3;\n }\n if (isCollectionCategoryList) {\n if (SITE_PLATFORM_WEB_LARGE === breakpoint) {\n itemsToShow = 8;\n }\n if (SITE_PLATFORM_WEB === breakpoint) {\n itemsToShow = 7;\n }\n if (SITE_PLATFORM_TABLET === breakpoint) {\n itemsToShow = 4;\n }\n }\n const carouselProps = {\n addCarouselPlaceholders,\n allowScrollLock,\n applyInlineBackground: isCollectionCategoryList,\n collectionType,\n collectionCount: getCollectionCount(panels, this.hiddenPanels),\n playlistLength: _.get(panel, 'items.member.length', 0),\n collectionName,\n collectionVerticalPosition: getCollectionPosition(panels, idx, headline, this.hiddenPanels),\n beforeChange: this.updateVisibleSlides,\n breakpoint,\n descriptionLines,\n disableScroll,\n favoritesManager,\n featuredTitleImage,\n headline,\n preventLazyLoad: idx <= INITIAL_PANELS_TO_RENDER,\n isFirst,\n isHoverStateV2: true,\n isLiveTileV2: liveTileCollectionV2Enabled() && isLiveCollection,\n isLocalNews,\n isInfinite: false,\n isPosters,\n items: addSeeMoreItem({ items: videoItems, collectionCTA, isFirst }),\n noPreview: isLatestEpisodes,\n onTileClick,\n overrideTheme: isLatestEpisodes ? LatestEpisodes : null,\n panel,\n panelIdx: idx,\n processor: item =>\n homeCarouselVideoProcessor({\n breakpoint,\n collectionType,\n displayTemplate,\n isHoverStateV2: true,\n isMobile,\n isPosters,\n panelType,\n video: item,\n }),\n renderImage: image =>\n renderImage({\n breakpoint,\n imageType: COLLECTION_THUMBNAIL_IMAGE,\n ...image,\n }),\n roundArrows,\n seeAll,\n shouldDisplayNetworkLogo: thumbnailNetworkLogoEnabled(),\n shouldInvertTitleOrder: item => {\n if (collectionType === 'localClips') return false;\n return isClip(item.videoType);\n },\n showCarouselArrows,\n slidesToScroll: itemsToScroll,\n slidesToShow: itemsToShow,\n theme: isPosters ? CarouselPosterStyle : CarouselTheme,\n tileTheme: CarouselTileTheme,\n updateVisibleSlides: this.updateVisibleSlides,\n useScrollableDiv,\n subtitleLines: isLocalNews ? 3 : null,\n };\n\n if (isMobile) {\n carouselProps.subtitleLines = 1;\n }\n if (isPosters && !isLatestEpisodes) {\n carouselProps.responsive = getCarouselBreakpoint({ type: 'poster' });\n }\n if (isGenreCollection) {\n carouselProps.processor = homeLinkTileCarouselProcessor;\n carouselProps.tileTheme = GenreTileTheme;\n }\n if (useMobileUpcomingOverlay) {\n carouselProps.upcomingOverlay = this.toggleUpcomingOverlay;\n }\n\n return (\n <div key=\"tile-carousel\">\n <div\n className={classNames([\n carouselProps.tileTheme.container,\n additionalPosterEnabled() && carouselProps.tileTheme.additionalPoster,\n ])}\n >\n <Carousel {...carouselProps} data-test=\"web-carousel\" />\n </div>\n </div>\n );\n }\n\n renderCollectionTileCarousel({\n idx,\n collectionCTA,\n videoItems,\n featuredTitleImage,\n isFirst,\n isGenreCollection,\n panel,\n onSelection,\n } = {}) {\n const {\n account,\n breakpoint,\n collectionOrder,\n favoritesManager,\n panels,\n removeGlobalVideoPlayer,\n saveLiveVideo,\n disableScroll,\n visibleCollections,\n } = this.props;\n const {\n addCarouselPlaceholders,\n allowScrollLock,\n carouselLimit,\n slidesToScroll,\n showCarouselArrows,\n showTileMetadataOnHover,\n useMobileUpcomingOverlay,\n useScrollableDiv,\n } = BREAKPOINTS[breakpoint];\n const headline = _.get(panel, 'headline');\n const totalCollections = _.get(panels, 'totalItems');\n const collectionType = _.get(panel, 'collectionType');\n const totalItems = _.get(panel, 'items.totalItems');\n const panelId = _.get(panel, 'id');\n const tealiumTileClick = props => {\n const { item, itemIndex: index } = props;\n const seriesName = _.get(item, 'seriesName');\n const name = _.get(item, 'name');\n const subtitle = _.get(homeCarouselVideoProcessor({ video: item }), 'subtitleText');\n this.callCollectionImpressionEvent();\n const cachedVerticalPosition = _.get(\n visibleCollections,\n `${headline}.verticalPosition`,\n null,\n );\n const verticalPosition =\n cachedVerticalPosition || getCollectionIndex(collectionOrder, panelId);\n getTealiumRedesignEvents({ account }).collectionItemSelect({\n account,\n state: 'static image',\n containerTitle: headline,\n verticalPosition,\n horizontalPosition: `${index + 1}`,\n title: seriesName || name,\n subtitle,\n cc: 'cc off',\n volume: 'volume off',\n collectionTitle: headline,\n collectionType,\n playlistLength: totalItems,\n collectionCount: totalCollections,\n item,\n visibleCollections,\n });\n };\n const onTileClick = props => {\n const { item, itemIndex } = props;\n if (onSelection) onSelection({ itemIndex });\n const itemIsLive = isLive(_.get(item, '@type'));\n if (autoplayEnabled()) {\n const source = PAGE_COLLECTION;\n removeGlobalVideoPlayer({ source });\n }\n if (!EpgEnabled && itemIsLive) saveLiveVideo(item);\n tealiumTileClick(props);\n };\n const items = addSeeMoreItem({ items: videoItems, collectionCTA, isFirst });\n const carouselProps = {\n useScrollableDiv,\n addCarouselPlaceholders,\n allowScrollLock,\n panelIdx: idx,\n isInfinite: false,\n slidesToShow: carouselLimit,\n slidesToScroll,\n showCarouselArrows,\n headline,\n featuredTitleImage,\n isFirst,\n panel,\n beforeChange: this.updateVisibleSlides,\n updateVisibleSlides: this.updateVisibleSlides,\n disableScroll,\n };\n\n return (\n <div key=\"tile-carousel\">\n <div className={CarouselTheme.container}>\n <CollectionCarousel {...carouselProps} data-test=\"web-carousel\">\n {items.map((item, idx) => {\n const props = {\n breakpoint,\n favoritesManager,\n item,\n itemIndex: idx,\n key: `collection-tile-${_.get(item, '@id', idx)}`,\n onTileClick: () => onTileClick({ item, itemIndex: idx }),\n showTileMetadataOnHover,\n toggleUpcomingOverlay: useMobileUpcomingOverlay ? this.toggleUpcomingOverlay : null,\n };\n if (isGenreCollection || _.get(item, '@type') === 'seeMore') {\n return <CollectionLinkTile {...props} />;\n }\n return <CollectionTile {...props} />;\n })}\n </CollectionCarousel>\n </div>\n </div>\n );\n }\n\n renderUpcomingOverlay = () => {\n const { breakpoint, favoritesManager, upcomingOverlayOpen, isUpcomingOverlayOpen } = this.props;\n const { overlayItemProps } = this.state;\n const closeOverlay = () => {\n this.setState({ overlayItemProps: false });\n upcomingOverlayOpen(false);\n };\n const originalItem = _.get(overlayItemProps, 'originalItem', false);\n if (isUpcomingOverlayOpen && originalItem) {\n if (isMobileBreakpoint(breakpoint) || breakpoint === SITE_PLATFORM_TABLET) {\n return (\n <UpcomingModal\n data-test=\"home-upcoming-modal\"\n favoritesManager={favoritesManager}\n {...overlayItemProps}\n {...originalItem}\n closeOverlay={closeOverlay}\n />\n );\n }\n }\n return null;\n };\n\n renderVideoHero() {\n const { load: playerLoad, play: playerPlay, activeSlide } = this.state;\n const {\n panels,\n breakpoint,\n overlay,\n setVideoHero,\n removeVideoHero,\n paginatedPanels,\n hideHeaderImageAndVideo,\n } = this.props;\n const { backgroundVideoLoops } = window.ExternalConfig;\n const { videoBackground } = BREAKPOINTS[breakpoint];\n if (\n !panels ||\n panels.length === 0 ||\n !videoBackground ||\n overlay === OVERLAY_ALL_COLLECTIONS ||\n hideHeaderImageAndVideo\n ) {\n return null;\n }\n\n let item = _.get(panels, `member.${activeSlide}.items.member.0`, null);\n if (!item) {\n const activeSlideId = _.get(panels, `member.${activeSlide}.id`);\n item = _.get(paginatedPanels, `${activeSlideId}.panelData.items.member.0`, null);\n if (!item) return null;\n }\n\n const autoPlayVideo = videoBackground ? _.get(item, 'autoPlayVideo.default.url') : null;\n const autoPlayStill =\n _.get(item, 'autoPlayStill.default.url') || _.get(item, 'images.promoImage');\n // sent as image prop to VideoHero, commented out for now\n // const autoPlayStill = this.getHeroImage(activeSlide);\n\n return (\n <VideoHero\n key=\"home-video-hero\"\n backgroundVideoLoops={backgroundVideoLoops}\n onMount={setVideoHero}\n onUnmount={removeVideoHero}\n video={autoPlayVideo}\n transitionImage={autoPlayStill}\n image={autoPlayStill}\n renderImage={image =>\n renderImage({\n breakpoint,\n imageType: COLLECTION_HERO_IMAGE,\n ...image,\n })\n }\n id=\"video-hero-home\"\n load={playerLoad}\n play={playerPlay && !overlay}\n loop\n timer={0}\n />\n );\n }\n\n renderVideoModal() {\n const { shouldRenderVideoModal, videoModalId, videoModalData } = this.state;\n if (!shouldRenderVideoModal) return null;\n\n const defaultVideoContainerProps = this.getDefaultVideoContainerProps();\n return (\n <VideoModal\n {...defaultVideoContainerProps}\n key=\"home-video-modal\"\n data-test=\"home-video-modal\"\n toggleVideoModal={this.toggleVideoModal}\n videoData={videoModalData}\n videoId={videoModalId}\n />\n );\n }\n\n renderDefaultHelmetTags = () => {\n const { headerTags } = NetworkConfig;\n let organizationSchemaTag = null;\n if (SchemaOrganizationHeader) {\n const organizationSchema = JSON.stringify({\n '@context': 'http://schema.org',\n '@type': 'Organization',\n url: 'https://www.fox.com/',\n name: 'FOX',\n alternateName: 'Fox Broadcasting Company',\n logo: 'https://www.fox.com/assets/images/affiliates/logos/fox.png',\n sameAs: [\n 'https://www.facebook.com/FOXTV',\n 'http://instagram.com/FOXTV',\n 'https://twitter.com/FOXTV',\n 'https://www.youtube.com/channel/UCDiPds0v60wueil5B8w3fPQ',\n 'https://www.linkedin.com/company/fox-filmed-entertainment',\n 'https://en.wikipedia.org/wiki/Fox_Broadcasting_Company',\n ],\n });\n organizationSchemaTag = (\n <script key=\"orgSchema\" type=\"application/ld+json\">\n {organizationSchema}\n </script>\n );\n }\n const data = {\n ...headerTags,\n viewport: 'width=device-width, initial-scale=1',\n ogType: 'website',\n tags: [\n <meta key=\"content-type\" httpEquiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />,\n organizationSchemaTag,\n ],\n };\n return setHelmetTags(data);\n };\n\n render() {\n const { seo, errors, location } = this.props;\n const networksBar = window.ExternalConfig.networkNavigation;\n const redesignClasses = Style.redesignScreenStyle;\n const pathName = _.get(location, 'pathname');\n const isHome = pathName === '/';\n\n if (errors) return getErrorComponent(errors);\n\n return (\n <div\n className={classNames(\n redesignClasses,\n Style.screen,\n networksBar ? Style.withNetwoksBar : '',\n )}\n >\n {isHome ? this.renderDefaultHelmetTags() : null}\n {setHelmetTags(seo)}\n {this.renderUpcomingOverlay()}\n {this.renderContent()}\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const { collection, canIAutoplay, globalVideo } = state;\n return {\n canIAutoplay: canIAutoplay.result,\n collectionOrder: makeSelectCollectionOrder(state),\n errors: collection.errors,\n forceKeyartForShowcase: collection.forceKeyartForShowcase,\n globalVideoStartedPlayback: globalVideo.startedPlayback,\n hideHeaderImageAndVideo: !!globalVideo.video,\n initialShowcase: makeSelectInitialShowcase(state),\n paginatedPanels: makeSelectPanelPanels(state),\n panelVideo: makeSelectGlobalVideoPanelVideo(state),\n panels: makeSelectCollectionPanels(state),\n fetching: state.panel.fetching,\n panelRenderCount: collection.panelRenderCount,\n seo: collection.seo,\n showcaseFallback: collection.showcaseFallback,\n streamExit: globalVideo.streamExit,\n useShowcaseFallback: collection.useShowcaseFallback,\n video: globalVideo.video,\n videoIsLive: globalVideo.videoIsLive,\n visibleCollections: makeSelectVisibleCollections(state),\n };\n}\n\nCollection.fetchData = ({ store, screenUrl, currentRoute, accessToken }) => {\n const { isForgotPassword } = currentRoute || {};\n if (isForgotPassword) return null;\n return store.dispatch(dispatch =>\n dispatch(fetchCollections(screenUrl, FETCH_COLLECTION_MAX_PANELS_PREFETCH, accessToken)),\n );\n};\n\nCollection.defaultProps = {\n accessToken: null,\n account: null,\n adblock: false,\n analyticsLoaded: false,\n anonymousAccount: null,\n anonymousId: null,\n authCheckComplete: null,\n authSuccess: null,\n blackoutConfig: {},\n blackoutDefinitions: {},\n canIAutoplay: null,\n clearCollectionPanels: noop,\n clearInterval: noop,\n clearTimeout: noop,\n collectionImpressionCalled: noop,\n collectionOrder: [],\n coordinates: null,\n deviceId: null,\n disableScroll: noop,\n errors: null,\n favoritesManager: {},\n fetchCollections: noop,\n firstCollectionImpression: false,\n forceKeyartForShowcase: null,\n globalVideoStartedPlayback: null,\n hideHeaderImageAndVideo: false,\n incrementPanelRenderCount: noop,\n initialShowcase: null,\n isAuthenticated: false,\n isStatic: false,\n isUpcomingOverlayOpen: false,\n location: {},\n mvpdData: null,\n onAuthCheckComplete: noop,\n openForgotPassword: noop,\n openSignIn: noop,\n openSignUp: noop,\n optimizely: {},\n overlay: null,\n paginatedPanels: {},\n panelRenderCount: null,\n panelVideo: {},\n panels: {},\n params: { network: null },\n preauthorizedResources: [],\n profileId: null,\n provider: {},\n resetPanelRenderCount: null,\n route: {},\n seo: null,\n setAccountCloseIgnoreRedirect: noop,\n setAuthorizationToken: noop,\n setBlockMVPDIncomplete: noop,\n setCoordinates: noop,\n setGlobalPlayerScreenInControlOfState: noop,\n setGlobalPlayerType: noop,\n setGlobalVideoDisabled: noop,\n setGlobalVideoPanel: noop,\n setHomePage: noop,\n setInterval: noop,\n setIsAuthenticated: false,\n setIsPlayerLoaded: noop,\n setLoading: null,\n setMVPDLogoutDataToAppState: noop,\n setMVPDToAppState: noop,\n setOverlay: noop,\n setProvider: noop,\n setTimeout: noop,\n setUseShowcaseFallback: noop,\n showcaseFallback: '',\n streamExit: null,\n toggleMvpdAuthOverlay: noop,\n triggerAuthCheck: false,\n upcomingOverlayOpen: noop,\n updateCollectionOrder: noop,\n updateVisibleElements: noop,\n useShowcaseFallback: null,\n visibleCollections: {},\n};\n\nCollection.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({\n accessToken: PropTypes.string,\n }),\n adblock: PropTypes.bool,\n analyticsLoaded: PropTypes.bool,\n anonymousAccount: PropTypes.shape({}),\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func.isRequired,\n authCheckComplete: PropTypes.bool,\n authSuccess: PropTypes.bool,\n blackoutConfig: PropTypes.shape({}),\n blackoutDefinitions: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n canIAutoplay: PropTypes.bool,\n clearCollectionPanels: PropTypes.func,\n clearInterval: PropTypes.func,\n clearTimeout: PropTypes.func,\n collectionImpressionCalled: PropTypes.func,\n collectionOrder: PropTypes.arrayOf(PropTypes.string),\n coordinates: PropTypes.shape({}),\n deviceId: PropTypes.string,\n disableScroll: PropTypes.func,\n errors: PropTypes.number,\n favoritesManager: PropTypes.shape({}),\n fetchCollections: PropTypes.func,\n firstCollectionImpression: PropTypes.bool,\n firstIdentifyCall: PropTypes.bool.isRequired,\n forceKeyartForShowcase: PropTypes.bool,\n getUseUtagGlobal: PropTypes.func.isRequired,\n globalVideoStartedPlayback: PropTypes.bool,\n hasAccount: PropTypes.bool,\n hideHeaderImageAndVideo: PropTypes.bool,\n incrementPanelRenderCount: PropTypes.func,\n initialShowcase: PropTypes.shape({}),\n isAuthenticated: PropTypes.bool,\n isStatic: PropTypes.bool,\n isUpcomingOverlayOpen: PropTypes.bool,\n location: PropTypes.shape({}),\n mvpdData: PropTypes.shape({}),\n onAuthCheckComplete: PropTypes.func,\n openForgotPassword: PropTypes.func,\n openSignIn: PropTypes.func,\n openSignUp: PropTypes.func,\n optimizely: PropTypes.shape({}),\n overlay: PropTypes.string,\n pageViewEvent: PropTypes.func.isRequired,\n paginatedPanels: PropTypes.shape({}),\n panelVideo: PropTypes.shape({}),\n params: PropTypes.shape({\n network: PropTypes.string,\n }),\n panelRenderCount: PropTypes.number,\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n profileId: PropTypes.string,\n provider: PropTypes.shape({}),\n removeGlobalVideoPlayer: PropTypes.func.isRequired,\n removeVideoHero: PropTypes.func.isRequired,\n renderAuthContainer: PropTypes.func.isRequired,\n resetPanelRenderCount: PropTypes.func,\n route: PropTypes.shape({}),\n router: PropTypes.shape({}).isRequired,\n saveGlobalLiveRestart: PropTypes.func.isRequired,\n saveLiveVideo: PropTypes.func.isRequired,\n seo: PropTypes.shape({}),\n setAccountCloseIgnoreRedirect: PropTypes.func,\n setAuthorizationToken: PropTypes.func,\n setBlockMVPDIncomplete: PropTypes.func,\n setCoordinates: PropTypes.func,\n setFindTab: PropTypes.func.isRequired,\n setGlobalPlayerScreenInControlOfState: PropTypes.func,\n setGlobalPlayerType: PropTypes.func,\n setGlobalVideoDisabled: PropTypes.func,\n setGlobalVideoPanel: PropTypes.func,\n setHomePage: PropTypes.func,\n setInterval: PropTypes.func,\n setIsAuthenticated: PropTypes.func,\n setIsPlayerLoaded: PropTypes.func,\n setLoading: PropTypes.func,\n setMVPDLogoutDataToAppState: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setOverlay: PropTypes.func,\n setProvider: PropTypes.func,\n setRecommendationId: PropTypes.func.isRequired,\n setSuggestedChannel: PropTypes.func.isRequired,\n setSuggestedShowsTab: PropTypes.func.isRequired,\n setTimeout: PropTypes.func,\n setUseShowcaseFallback: PropTypes.func,\n setVideoHero: PropTypes.func.isRequired,\n showcaseFallback: PropTypes.string,\n streamExit: PropTypes.bool,\n toggleMvpdAuthOverlay: PropTypes.func,\n triggerAuthCheck: PropTypes.bool,\n upcomingOverlayOpen: PropTypes.func,\n updateCollectionOrder: PropTypes.func,\n updateVisibleElements: PropTypes.func,\n useShowcaseFallback: PropTypes.bool,\n videoIsLive: PropTypes.bool.isRequired,\n visibleCollections: PropTypes.shape({}),\n};\n\nconst TimeoutCollection = ReactTimeout(\n connect(mapStateToProps, {\n clearCollectionPanels,\n fetchCollections,\n incrementPanelRenderCount,\n removeGlobalVideoPlayer,\n resetPanelRenderCount,\n saveGlobalLiveRestart,\n saveLiveVideo,\n setGlobalVideoDisabled,\n setGlobalVideoPanel,\n setSuggestedChannel,\n updateCollectionOrder,\n updateVisibleElements,\n setFindTab,\n setGlobalPlayerScreenInControlOfState,\n setGlobalPlayerType,\n setRecommendationId,\n setSuggestedShowsTab,\n setUseShowcaseFallback,\n })(Collection),\n);\n\nTimeoutCollection.fetchData = Collection.fetchData;\n\nexport default TimeoutCollection;\n","import React from 'react';\nimport { Route } from 'react-router';\nimport _ from 'lodash';\nimport LiveScreen from 'screens/Live';\nimport CollectionScreen from 'screens/Collection';\nimport { slugify } from 'helpers/ContentHelper';\nimport { userAttributeEvents as optimizelyUserAttributeEvents } from 'helpers/OptimizelyHelper';\n\nconst onHomeLoad = () => optimizelyUserAttributeEvents().home();\nconst onBrowseLoad = () => {\n optimizelyUserAttributeEvents().browse();\n};\nconst onLiveLoad = () => {\n optimizelyUserAttributeEvents().live();\n};\n\nconst REDESIGN_COMPONENT_MAP = {\n 'live-news': {\n component: LiveScreen,\n onLoad: onLiveLoad,\n },\n live: {\n component: LiveScreen,\n onLoad: onLiveLoad,\n routeParams: '(/nav)(/schedule)(/channel/:callSign)',\n },\n local: {\n routeParams: '(/clips)',\n },\n sports: {\n onLoad: _.noop,\n },\n audio: {\n onLoad: () => _.noop,\n },\n personalities: {\n onLoad: () => _.noop,\n },\n shows: {\n onLoad: () => _.noop,\n },\n featured: {\n onLoad: _.noop,\n },\n};\nconst getNavItems = () => _.get(window.ExternalConfig, 'navigation', []);\nconst getPathRoot = path => path && (path.split('/').filter(Boolean)[0] || '/');\nconst getComponentFromRoute = id =>\n _.get(REDESIGN_COMPONENT_MAP, `${_.toLower(id)}.component`, CollectionScreen);\nconst getRouteParams = id => _.get(REDESIGN_COMPONENT_MAP, `${_.toLower(id)}.routeParams`, '');\nconst getOnLoadFromRoute = id => {\n if (id === '/') return onHomeLoad;\n return _.get(REDESIGN_COMPONENT_MAP, `${_.toLower(id)}.onLoad`, onBrowseLoad.bind(id));\n};\n\nconst navItems = getNavItems() || [];\n\nconst REDESIGN_PATH_SCREEN_URL_MAP = navItems.reduce((obj, item) => {\n const { link, screenUrl } = item;\n const rootPath = getPathRoot(link);\n obj[rootPath] = screenUrl; // eslint-disable-line no-param-reassign\n return obj;\n}, {});\n\nconst defaultRoot = REDESIGN_PATH_SCREEN_URL_MAP['/'];\nexport const rootScreenUrl = defaultRoot || _.get(navItems, '0.link', '/');\n\nexport const getRouteScreenUrl = path => {\n if (!path) return null;\n const pathRoot = getPathRoot(path);\n return REDESIGN_PATH_SCREEN_URL_MAP[pathRoot] || rootScreenUrl;\n};\nexport const getDesignV2Routes = () => {\n const routes = getNavItems().map(item => {\n const { link, screenUrl, label } = item;\n const rootPath = getPathRoot(link);\n const routeParams = getRouteParams(rootPath);\n const key = `route-key-${slugify(label)}-${slugify(link)}`;\n return (\n <Route\n key={key}\n path={`${rootPath}${routeParams}`}\n component={getComponentFromRoute(rootPath)}\n screenUrl={screenUrl}\n onEnter={getOnLoadFromRoute(rootPath)}\n />\n );\n });\n return routes;\n};\n","import axios from 'axios';\nimport { helperGetApiHeaders, helperGetApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_PCS = 'FETCH_PCS';\n\nexport function fetchPCS(accessToken) {\n const pageType = 'pcs';\n const url = `${helperGetApiRoute(pageType)}?timestamp=${new Date().getTime()}`;\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken });\n const request = axios.get(url, headers).catch(axiosErrorHandler);\n\n return {\n type: FETCH_PCS,\n payload: request,\n };\n}\n\nexport function setPCS(accessToken, data) {\n const pageType = 'pcs';\n const url = helperGetApiRoute(pageType);\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken });\n axios.put(url, data, headers).catch(axiosErrorHandler);\n}\n","import _ from 'lodash';\nimport { FETCH_PCS } from 'components/Account/AccountComponents/ParentalControls/ParentalControlsActions';\nimport {\n SET_GOOGLE_ONE_TAP,\n SET_IS_GOOGLE_SIGN_IN,\n SET_IS_GOOGLE_ONE_TAP_DISPLAYED,\n SET_IS_GOOGLE_SIGNED_IN_BROWSER,\n SET_MVPD_PROVIDERS,\n SET_NEXT_MVPD_PROVIDERS_PAGE,\n SET_PREAUTHORIZED_RESOURCES,\n SET_RECOMMENDATION_ID,\n SET_USER_AUTH_DATA,\n SET_USER_PROFILE_CONFIG,\n SET_GOOGLE_EMAIL_AND_TOKEN,\n} from './AppActions';\n\nconst INITIAL_STATE = {\n account: null,\n anonymousAccount: null,\n anonymousId: null,\n authorizationToken: null,\n buythroughScenario: null,\n deviceId: null,\n googleOneTap: {\n googleOneTapEmail: '',\n googleToken: '',\n isGoogleOneTap: null,\n },\n googleSignIn: {\n googleToken: '',\n isSignedIn: null,\n isGoogleSignIn: null,\n userGoogleEmailAlreadySignIn: '',\n },\n googleNewUser: {\n googleEmail: '',\n googleToken: '',\n },\n isAuthenticated: false,\n isGoogleOneTapDisplayed: null,\n mvpd: null,\n mvpdLogoutData: null,\n mvpdProviders: null,\n pcs: {},\n preauthorizedResources: null,\n recommendationIdData: null,\n segmentDeviceId: null,\n topMVPDProviders: null,\n};\n\nconst sorter = items => {\n if (!items || !items.length) return null;\n const newItems = items.map(item => {\n const copy = Object.assign({}, item);\n copy.nameLowercase = item.name ? item.name.toLowerCase() : null;\n return copy;\n });\n return _.sortBy(newItems, ['nameLowercase']);\n};\n\nexport default function(state = INITIAL_STATE, action) {\n switch (action.type) {\n case SET_MVPD_PROVIDERS: {\n const member = _.get(action, 'payload.data.member');\n const mvpdProviders = sorter(member);\n let totalProviders = 0;\n const maxProviders = 10;\n const topMVPDProviders = mvpdProviders.filter(provider => {\n if (totalProviders > maxProviders) return false;\n if (provider.isFeatured) {\n totalProviders += 1;\n return true;\n }\n return false;\n });\n\n return {\n ...state,\n mvpdProviders,\n topMVPDProviders,\n };\n }\n case SET_NEXT_MVPD_PROVIDERS_PAGE: {\n const mvpds = _.get(state, 'mvpdProviders');\n let member = _.get(action, 'payload.data.member');\n member = member.concat(mvpds);\n const mvpdProviders = sorter(member);\n let totalProviders = 0;\n const maxProviders = 10;\n const topMVPDProviders = mvpdProviders.filter(provider => {\n if (totalProviders > maxProviders) return false;\n if (provider.isFeatured) {\n totalProviders += 1;\n return true;\n }\n return false;\n });\n\n return {\n ...state,\n mvpdProviders,\n topMVPDProviders,\n };\n }\n case SET_PREAUTHORIZED_RESOURCES: {\n return {\n ...state,\n preauthorizedResources: action.payload,\n };\n }\n\n case FETCH_PCS: {\n return {\n ...state,\n pcs: action.payload.data,\n };\n }\n\n case SET_RECOMMENDATION_ID: {\n return {\n ...state,\n recommendationIdData: action.payload,\n };\n }\n case SET_USER_AUTH_DATA: {\n const data = action.payload;\n if (!data) return state;\n\n /*\n data may include any or all of the following:\n account,\n anonymousAccount,\n anonymousId,\n authorizationToken,\n buythroughScenario,\n deviceId,\n isAuthenticated,\n mvpd,\n mvpdLogoutData,\n preauthorizedResources,\n segmentDeviceId,\n */\n\n return {\n ...state,\n ...data,\n };\n }\n\n case SET_USER_PROFILE_CONFIG: {\n const { profile, profileConfig } = action.payload;\n return {\n ...state,\n profile,\n profileConfig,\n };\n }\n\n case SET_GOOGLE_ONE_TAP: {\n const { googleOneTapEmail, googleToken, isGoogleOneTap } = action;\n return {\n ...state,\n googleOneTap: {\n ...state.googleOneTap,\n googleOneTapEmail,\n googleToken,\n isGoogleOneTap,\n },\n };\n }\n\n case SET_IS_GOOGLE_SIGNED_IN_BROWSER: {\n const { googleEmail, googleToken, isSignedIn } = action;\n return {\n ...state,\n googleSignIn: {\n ...state.googleSignIn,\n userGoogleEmailAlreadySignIn: googleEmail,\n googleToken,\n isSignedIn,\n },\n };\n }\n\n case SET_GOOGLE_EMAIL_AND_TOKEN: {\n const { googleEmail, googleToken } = action;\n return {\n ...state,\n googleNewUser: {\n ...state.googleNewUser,\n googleEmail,\n googleToken,\n },\n };\n }\n case SET_IS_GOOGLE_SIGN_IN: {\n return {\n ...state,\n googleSignIn: {\n ...state.googleSignIn,\n isGoogleSignIn: action.payload,\n },\n };\n }\n\n case SET_IS_GOOGLE_ONE_TAP_DISPLAYED: {\n return {\n ...state,\n isGoogleOneTapDisplayed: action.payload,\n };\n }\n default:\n return state;\n }\n}\n","import axios from 'axios';\nimport { helperGetApiHeaders, helperConvertApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_ARTICLE = 'FETCH_ARTICLE';\nexport const FETCH_FOX_NOW_FAQ_SCHEMA = 'FETCH_FOX_NOW_FAQ_SCHEMA';\n\nexport function fetchArticle(url, accessToken, deviceId) {\n const pageType = 'articleDetail';\n const request = axios\n .get(\n helperConvertApiRoute(url),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_ARTICLE,\n payload: request,\n };\n}\n\nexport const fetchFoxNowFAQSchema = () => {\n const url = window?.ExternalConfig?.structuredDataSchema;\n const request = axios.get(url).catch(axiosErrorHandler);\n return {\n type: FETCH_FOX_NOW_FAQ_SCHEMA,\n payload: request,\n };\n};\n","import _ from 'lodash';\nimport { determineErrorFromResponse, determineErrorIfStaticRender } from 'helpers/ContentHelper';\nimport { FETCH_ARTICLE, FETCH_FOX_NOW_FAQ_SCHEMA } from './ArticleActions';\n\nconst INITIAL_STATE = {\n panels: null,\n seo: null,\n errors: null,\n structuredDataSchema: {},\n};\n\nexport default function(state = INITIAL_STATE, action) {\n let errors = determineErrorFromResponse(action);\n if (errors) {\n return {\n ...state,\n errors,\n };\n }\n const data = _.get(action, 'payload.data', null);\n const panels = _.get(data, 'panels', null);\n const seo = _.get(data, 'SEO', null);\n const article = _.get(panels, 'member.0.items.member.0');\n const articleBody = _.get(article, 'articleBody', null);\n switch (action.type) {\n case FETCH_ARTICLE:\n if (!articleBody) errors = determineErrorIfStaticRender();\n return {\n ...state,\n panels,\n seo,\n errors,\n };\n case FETCH_FOX_NOW_FAQ_SCHEMA:\n return {\n ...state,\n structuredDataSchema: data,\n };\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { determineErrorFromResponse, isEpisode, isLive } from 'helpers/ContentHelper';\nimport { LIVE, VOD } from 'helpers/PlayerHelper';\nimport {\n CLEAR_BANNER_VIDEO,\n FETCH_BANNER_VIDEO_UP_NEXT,\n SET_BANNER_VIDEO_ERROR,\n SET_BANNER_VIDEO,\n} from './Actions';\n\nconst INITIAL_STATE = {\n errors: null,\n nextVideos: [],\n releaseUrl: null,\n reducerVideo: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n switch (action.type) {\n case CLEAR_BANNER_VIDEO: {\n return {\n ...state,\n ...INITIAL_STATE,\n };\n }\n case FETCH_BANNER_VIDEO_UP_NEXT: {\n const videos = _.get(action, 'payload.data.member', []);\n return {\n ...state,\n nextVideos: videos,\n };\n }\n case SET_BANNER_VIDEO_ERROR: {\n const newErrors = _.get(action, 'payload');\n if (!newErrors) return state;\n return {\n ...state,\n errors: newErrors,\n };\n }\n case SET_BANNER_VIDEO: {\n const data = _.get(action, 'payload');\n const videoType = _.get(data, 'videoType');\n const isFullEpisode = isEpisode(videoType);\n const videoIsLive = isLive(data);\n const videoFormat = videoIsLive ? LIVE : VOD;\n const reducerVideo = data ? { ...data, isFullEpisode, videoFormat } : null;\n const releaseUrl = _.get(reducerVideo, 'url', null);\n return {\n ...state,\n errors,\n nextVideos: [],\n reducerVideo,\n releaseUrl,\n };\n }\n default:\n return state;\n }\n}\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\nimport { helperGetBioUrl } from 'helpers/RouteHelper';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { LINK_REL } from 'helpers/ContentHelper';\nimport { toBoolean } from 'helpers/GlobalHelper';\nimport {\n SHOW_DETAIL_CAST_THUMBNAIL_LIST_IMAGE,\n SHOW_DETAIL_CAST_DETAIL_IMAGE,\n renderImage as renderDynamicImage,\n} from 'helpers/ImageHelper';\nimport { SITE_PLATFORM_TABLET } from 'helpers/BreakpointHelper';\n\nexport const TYPE_CREDIT = 'Credit';\nconst ICON_FACEBOOK = 'facebook';\nconst ICON_TWITTER = 'twitter';\n\nexport const getCreditMemberId = ({ member }) => _.get(member, 'id');\n\nexport const getCreditMemberSlug = ({ member }) => _.get(member, 'alternateId');\n\nexport const getCreditMemberUrl = ({ showId, member }) => {\n const slug = member ? getCreditMemberSlug({ member }) : null;\n const url = showId && slug ? helperGetBioUrl(showId, slug) : null;\n return url;\n};\n\nconst renderSocialNetworkItem = ({ style, data, idx }) => {\n if (!data) return null;\n const listClassName = classNames([style.socialNetworkItem, style[data.icon]]);\n\n return (\n <li key={idx} className={listClassName}>\n <Link to={data.url} target=\"_blank\" rel={LINK_REL} title={data.icon}>\n <Icon color=\"white\" icon={data.icon} />\n </Link>\n </li>\n );\n};\n\nexport const renderSocialNetworks = ({ style, data }) => {\n const socialNetworks = [];\n\n const facebookId = _.get(data, 'facebookId');\n let facebookUrl = _.get(data, 'facebookUrl');\n if (facebookId) facebookUrl = `https://www.facebook.com/${facebookId}/`;\n if (facebookUrl) {\n socialNetworks.push({ icon: ICON_FACEBOOK, url: facebookUrl });\n }\n\n const twitterId = _.get(data, 'twitterId');\n let twitterUrl = _.get(data, 'twitterUrl');\n if (twitterId) twitterUrl = `https://twitter.com/${twitterId}`;\n if (twitterUrl) {\n socialNetworks.push({ icon: ICON_TWITTER, url: twitterUrl });\n }\n\n if (socialNetworks.length === 0) return null;\n\n return (\n <div className={style.socialNetworks}>\n <ul className={style.socialNetworksList}>\n {socialNetworks.map((item, idx) => renderSocialNetworkItem({ style, data: item, idx }))}\n </ul>\n </div>\n );\n};\n\nexport const getGroupedCast = cast => {\n const filteredCast = cast.filter(item => hasFullBio(item));\n const groupedCast = _.groupBy(filteredCast, 'category');\n return groupedCast;\n};\n\nexport const renderRole = ({ style, data }) => {\n const role = _.get(data, 'role');\n if (!role) return null;\n\n return <div className={style.role}>{role}</div>;\n};\n\nexport const renderName = ({ style, data, isDetail }) => {\n const name = getName(data);\n if (!name) return null;\n\n return <div className={style.name}>{isDetail ? <h1>{name}</h1> : name}</div>;\n};\n\nexport const renderImage = ({ style, data, isDetail, breakpoint }) => {\n const isTabletView = breakpoint === SITE_PLATFORM_TABLET;\n const imageUrl = isDetail || isTabletView ? getDetailImage(data) : getListingImage(data);\n const name = getName(data);\n const imageTag = renderDynamicImage({\n alt: name,\n breakpoint,\n imageType:\n isDetail || isTabletView\n ? SHOW_DETAIL_CAST_DETAIL_IMAGE\n : SHOW_DETAIL_CAST_THUMBNAIL_LIST_IMAGE,\n src: imageUrl,\n });\n\n if (!imageUrl) return null;\n\n return <div className={style.image}>{imageTag}</div>;\n};\n\nexport const getName = member => {\n const name = _.get(member, 'name');\n return name;\n};\n\nconst getFallbackImage = member => {\n const sample = _.get(member, 'images.sampleImage');\n const fallback = _.get(member, 'images.undefined', sample);\n return fallback;\n};\n\nexport const getDetailImage = member => {\n const fallback = getFallbackImage(member);\n const imageUrl = _.get(member, 'images.bioDetail', fallback);\n return imageUrl;\n};\n\nexport const getListingImage = member => {\n const fallback = getFallbackImage(member);\n const imageUrl = _.get(member, 'images.bioListing', fallback);\n return imageUrl;\n};\n\nexport const getBioDescription = member => {\n const longBio = _.get(member, 'longBio');\n return longBio;\n};\n\nexport const hasFullBio = member => {\n const hasName = toBoolean(getName(member));\n const hasBioDescription = toBoolean(getBioDescription(member));\n return hasName && hasBioDescription;\n};\n","import axios from 'axios';\nimport { helperGetApiHeaders, helperGetApiRouteById, axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_BIO_LANDING = 'FETCH_BIO_LANDING';\nexport const FETCH_BIO_DETAIL = 'FETCH_BIO_DETAIL';\nexport const CLEAR_BIO_PAGES = 'CLEAR_BIO_PAGES';\n\nexport function fetchBioLanding(id, accessToken, deviceId) {\n const pageType = 'creditListDetail';\n const request = axios\n .get(\n helperGetApiRouteById(pageType, id, '{showCode}'),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n return {\n type: FETCH_BIO_LANDING,\n payload: request,\n };\n}\n\nexport function fetchBioDetail(id, accessToken, deviceId) {\n const pageType = 'creditDetail';\n const request = axios\n .get(\n helperGetApiRouteById(pageType, id, '{creditId}'),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n return {\n type: FETCH_BIO_DETAIL,\n payload: request,\n };\n}\n\nexport function clearBioPages() {\n return {\n type: CLEAR_BIO_PAGES,\n };\n}\n","import _ from 'lodash';\nimport { determineErrorFromResponse } from 'helpers/ContentHelper';\nimport { getCreditMemberId } from './BioHelpers';\nimport { FETCH_BIO_LANDING, FETCH_BIO_DETAIL, CLEAR_BIO_PAGES } from './BioActions';\n\nconst INITIAL_STATE = {\n cast: null,\n detail: null,\n related: null,\n seo: null,\n landingSeo: null,\n errors: null,\n profiles: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n if (errors) {\n return {\n ...state,\n errors,\n };\n }\n const data = _.get(action, 'payload.data');\n const landingSeo = _.get(data, 'SEO');\n\n switch (action.type) {\n case FETCH_BIO_LANDING: {\n const cast = _.get(data, 'panels.member.0.items.member.0.credits.member', []);\n return {\n ...state,\n cast,\n landingSeo,\n errors: null,\n };\n }\n\n case FETCH_BIO_DETAIL: {\n const profiles = _.get(state, 'profiles', []);\n const seo = _.get(data, 'SEO');\n const member = _.get(data, 'panels.member.0.items.member.0');\n\n const related = _.get(data, 'panels.member.1.items.member');\n const memberId = getCreditMemberId({ member });\n\n const newProfiles = {\n ...profiles,\n [memberId]: {\n featured: member,\n related,\n seo,\n },\n };\n\n return {\n ...state,\n errors: null,\n profiles: newProfiles,\n };\n }\n case CLEAR_BIO_PAGES: {\n return {\n ...state,\n ...INITIAL_STATE,\n };\n }\n\n default:\n return state;\n }\n}\n","import axios from 'axios';\nimport _ from 'lodash';\nimport { axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_BLACKOUT_DEFINITION = 'FETCH_BLACKOUT_DEFINITION';\nexport const RESET_BLACKOUT_DEFINITION = 'RESET_BLACKOUT_DEFINITION';\n\nexport async function fetchBlackoutDefinition() {\n const blackout = _.get(window.ExternalConfig, 'blackout', {});\n const { definitions } = blackout;\n const request = axios.get(definitions).catch(axiosErrorHandler);\n\n return {\n type: FETCH_BLACKOUT_DEFINITION,\n payload: request,\n };\n}\n","import _ from 'lodash';\nimport {\n FETCH_BLACKOUT_DEFINITION,\n RESET_BLACKOUT_DEFINITION,\n} from './BlackoutDefinitionFetcherActions';\n\nconst INITIAL_STATE = {\n definition: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n switch (action.type) {\n case FETCH_BLACKOUT_DEFINITION: {\n const definition = _.get(action, 'payload.data');\n const definitionLowercaseKeys = _.transform(definition, (result, val, key) =>\n _.set(result, key.toLowerCase(), val),\n );\n return { definition: definitionLowercaseKeys };\n }\n case RESET_BLACKOUT_DEFINITION: {\n return INITIAL_STATE;\n }\n default: {\n return state;\n }\n }\n}\n","import { isStaticRender } from 'helpers/ContentHelper';\nimport { isTestEnvironment } from 'helpers/TestHelper';\nimport { removeCookie, setCookie } from './Helper';\n\n/* without conditionally requiring the package we will\n encounter Blob errors from static builds and tests */\nconst canAutoplayLibrary =\n !isStaticRender() && !isTestEnvironment() ? require('can-autoplay').default : null;\n\nexport const SET_CAN_I_AUTOPLAY_RESULT = 'SET_CAN_I_AUTOPLAY_RESULT';\n\nconst getCanIAutoplay = async () => {\n const enabled = canAutoplayLibrary;\n removeCookie();\n if (enabled) {\n const response = await canAutoplayLibrary.video({ timeout: 5000, inline: true, muted: true });\n const { result: isAutoplaySupported, error } = response;\n if (error) console.error(error);\n setCookie(isAutoplaySupported);\n return isAutoplaySupported;\n }\n return null;\n};\nexport const setResult = async () => {\n const payload = await getCanIAutoplay();\n return {\n type: SET_CAN_I_AUTOPLAY_RESULT,\n payload,\n };\n};\n","import { SET_CAN_I_AUTOPLAY_RESULT } from './Actions';\n\nconst INITIAL_STATE = {\n result: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n switch (action.type) {\n case SET_CAN_I_AUTOPLAY_RESULT: {\n return {\n ...state,\n result: action.payload,\n };\n }\n default:\n return state;\n }\n}\n","import axios from 'axios';\nimport { helperGetApiHeaders, helperConvertApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_NEXT_CLIPS_PAGE = 'FETCH_NEXT_CLIPS_PAGE';\nexport const SET_NEXT_CLIPS_PAGE = 'SET_NEXT_CLIPS_PAGE';\nexport const SET_FETCHING_STATUS = 'SET_FETCHING_STATUS';\n\nexport function setNextClipsPage(url) {\n return {\n type: SET_NEXT_CLIPS_PAGE,\n payload: url,\n };\n}\n\nexport function setFetchingStatus(value) {\n return {\n type: SET_FETCHING_STATUS,\n payload: value,\n };\n}\n\nexport function fetchNextClipsPage({ pageType, url, accessToken, deviceId }) {\n let request = {};\n if (pageType && url) {\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId });\n request = axios.get(helperConvertApiRoute(url), headers).catch(axiosErrorHandler);\n }\n return {\n type: FETCH_NEXT_CLIPS_PAGE,\n payload: request,\n };\n}\n","import _ from 'lodash';\nimport { FETCH_NEXT_CLIPS_PAGE, SET_FETCHING_STATUS, SET_NEXT_CLIPS_PAGE } from './ClipsActions';\n\nconst INITIAL_STATE = {\n nextPage: null,\n paginationItems: [],\n hasMoreItems: null,\n fetching: false,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const nextPage = _.get(action, 'payload.data.view.next', false);\n const newPage = _.get(action, 'payload.data.member', false);\n const { paginationItems: oldPaginationItems } = state;\n let newPaginationItems = oldPaginationItems || [];\n\n switch (action.type) {\n case SET_NEXT_CLIPS_PAGE:\n return {\n ...state,\n ...INITIAL_STATE,\n nextPage: action.payload,\n };\n case SET_FETCHING_STATUS:\n return {\n ...state,\n fetching: action.payload,\n };\n case FETCH_NEXT_CLIPS_PAGE:\n if (!newPage)\n return {\n ...state,\n fetching: false,\n };\n newPaginationItems = newPaginationItems.concat([...newPage]);\n return {\n ...state,\n nextPage,\n hasMoreItems: !!nextPage,\n paginationItems: [...newPaginationItems],\n fetching: false,\n };\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { determineErrorFromResponse } from 'helpers/ContentHelper';\nimport { getCollectionOrder } from './Helpers';\nimport {\n CLEAR_COLLECTION_PANELS,\n FETCH_COLLECTION,\n INCREMENT_PANEL_RENDER_COUNT,\n RESET_PANEL_RENDER_COUNT,\n SET_COLLECTION_FORCE_KEYART_FOR_SHOWCASE,\n SET_COLLECTION_USE_SHOWCASE_FALLBACK,\n SET_COLLECTION,\n UPDATE_COLLECTION_ORDER,\n UPDATE_SHOWCASE_VIDEO,\n UPDATE_VISIBLE_ELEMENTS,\n} from './Actions';\n\nconst INITIAL_STATE = {\n panels: null,\n panelRenderCount: null,\n seo: null,\n errors: null,\n visibleCollections: {},\n useShowcaseFallback: null,\n collectionOrder: [],\n forceKeyartForShowcase: false,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n const seo = _.get(action, 'payload.collection.seo', null);\n switch (action.type) {\n case CLEAR_COLLECTION_PANELS: {\n return {\n ...state,\n panels: null,\n seo: null,\n useShowcaseFallback: null,\n showcaseFallback: null,\n collectionOrder: [],\n };\n }\n case FETCH_COLLECTION: {\n return { ...state, errors };\n }\n case SET_COLLECTION: {\n const payload = _.get(action, 'payload');\n const panels = _.get(payload, 'collection');\n const initialShowcase = _.get(payload, 'initialShowcase');\n const members = _.get(panels, 'member', []);\n const showcaseFallback = _.find(members, { collectionType: 'showcase-fallback' });\n\n return {\n ...state,\n panels,\n seo,\n showcaseFallback,\n initialShowcase,\n useShowcaseFallback: false,\n collectionOrder: getCollectionOrder(panels),\n forceKeyartForShowcase: false,\n };\n }\n case SET_COLLECTION_USE_SHOWCASE_FALLBACK: {\n return {\n ...state,\n useShowcaseFallback: action.payload,\n forceKeyartForShowcase: false,\n };\n }\n case SET_COLLECTION_FORCE_KEYART_FOR_SHOWCASE: {\n return {\n ...state,\n forceKeyartForShowcase: action.payload,\n };\n }\n case UPDATE_VISIBLE_ELEMENTS: {\n return {\n ...state,\n visibleCollections: action.payload,\n };\n }\n case UPDATE_COLLECTION_ORDER: {\n const collectionToRemove = action.payload;\n const { collectionOrder } = state;\n const collectionIds = collectionOrder;\n _.remove(collectionIds, id => id === collectionToRemove);\n return {\n ...state,\n collectionOrder: collectionIds,\n };\n }\n case UPDATE_SHOWCASE_VIDEO: {\n const video = action.payload;\n const { panels } = state;\n if (!video || !panels) return state;\n const member = _.get(panels, 'member', []);\n const newMember = _.map(member, panel => {\n const collectionType = _.get(panel, 'collectionType');\n if (collectionType !== 'showcase') return panel;\n const itemsData = _.get(panel, 'items', {});\n return {\n ...panel,\n items: {\n ...itemsData,\n member: [video],\n },\n };\n });\n const newPanels = { ...panels, member: newMember };\n return {\n ...state,\n panels: newPanels,\n };\n }\n case INCREMENT_PANEL_RENDER_COUNT: {\n const { panelRenderCount } = state;\n return {\n ...state,\n panelRenderCount: panelRenderCount + 1,\n };\n }\n case RESET_PANEL_RENDER_COUNT: {\n return {\n ...state,\n panelRenderCount: null,\n };\n }\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { determineErrorFromResponse } from 'helpers/ContentHelper';\nimport { FETCH_DMA_OVERRIDES, FETCH_PLAYER_CONFIG } from './DebugActions';\n\nconst INITIAL_STATE = {\n dmaOverrides: null,\n playerConfig: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n switch (action.type) {\n case FETCH_DMA_OVERRIDES: {\n const dmaOverrides = _.get(action, 'payload.data', null);\n return {\n ...state,\n dmaOverrides,\n errors,\n };\n }\n case FETCH_PLAYER_CONFIG: {\n const playerConfig = _.get(action, 'payload.data', null);\n return {\n ...state,\n playerConfig,\n errors,\n };\n }\n default:\n return state;\n }\n}\n","import { determineErrorFromResponse } from 'helpers/ContentHelper';\nimport { SEND_EMAIL } from './EmailSubmissionFormActions';\n\nconst INITIAL_STATE = {\n emailAccessToken: null,\n emailSent: false,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n switch (action.type) {\n case SEND_EMAIL:\n if (errors) return state;\n return {\n ...state,\n emailSent: true,\n };\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { FETCH_FOOTER, FETCH_FOOTER_PROMOS } from './FooterActions';\n\nconst FOOTER_GROUP_1_KEY = 'links';\nconst FOOTER_GROUP_2_KEY = 'networkList';\nconst FOOTER_GROUP_3_KEY = 'social';\n\nconst INITIAL_STATE = {\n fetched: false,\n links: null,\n networks: null,\n connect: null,\n legal: '',\n promosPanels: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const data = _.get(action, 'payload.data', null);\n if (!data) return state;\n switch (action.type) {\n case FETCH_FOOTER: {\n const links = _.get(data, FOOTER_GROUP_1_KEY);\n const networks = _.get(data, FOOTER_GROUP_2_KEY);\n const connect = _.get(data, FOOTER_GROUP_3_KEY);\n const { legal, slimFooter } = data;\n return {\n ...state,\n fetched: true,\n links,\n networks,\n connect,\n legal,\n slimFooter,\n };\n }\n case FETCH_FOOTER_PROMOS: {\n let promosPanels = _.get(data, 'panels');\n const totalPromos = _.get(promosPanels, 'totalItems');\n if (!totalPromos) promosPanels = null;\n return {\n ...state,\n promosPanels,\n };\n }\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { SET_FOOTER_UPSELL_COLLECTION } from './FooterUpsellActions';\n\nconst INITIAL_STATE = {\n members: [],\n};\n\nexport default function(state = INITIAL_STATE, action) {\n switch (action.type) {\n case SET_FOOTER_UPSELL_COLLECTION: {\n const panels = action.payload;\n const members = _.get(panels, 'member.0.items.member', []);\n return { members };\n }\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { FETCH_SHOWS, FETCH_MOVIES } from './HoverMenuActions';\n\nconst INITIAL_STATE = {\n shows: null,\n movies: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const data = _.get(action, 'payload.data', null);\n switch (action.type) {\n case FETCH_MOVIES: {\n const movies = _.get(data, 'panels.member[0].customViews', null);\n return {\n ...state,\n movies,\n };\n }\n case FETCH_SHOWS: {\n const showsResponse = _.get(data, 'panels.member');\n let shows = null;\n showsResponse.forEach(item => {\n if (item.headline === 'All Shows') {\n shows = item.customViews;\n }\n });\n return {\n ...state,\n shows,\n };\n }\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { determineErrorFromResponse, determineErrorIfStaticRender } from 'helpers/ContentHelper';\nimport { FETCH_LATEST_EPISODE_SERIES, FETCH_LATEST_EPISODE_VIDEO } from './LatestEpisodeActions';\n\nconst INITIAL_STATE = {\n errors: null,\n seriesScreenUrl: null,\n seriesDetailVideoId: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n let errors = determineErrorFromResponse(action);\n switch (action.type) {\n case FETCH_LATEST_EPISODE_VIDEO: {\n const data = _.get(action, 'payload.data');\n const latestEpisodeId = _.get(data, 'panels.member.0.items.member.0.latestEpisode.id');\n if (!latestEpisodeId) errors = determineErrorIfStaticRender();\n return {\n ...state,\n latestEpisodeId,\n errors,\n };\n }\n case FETCH_LATEST_EPISODE_SERIES: {\n const data = _.get(action, 'payload.data');\n const seriesScreenUrl = _.get(data, 'screenUrl');\n if (!seriesScreenUrl) errors = determineErrorIfStaticRender();\n return {\n ...state,\n seriesScreenUrl,\n errors,\n };\n }\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { determineErrorFromResponse, isEpisode } from 'helpers/ContentHelper';\nimport { FORMAT_TIME, format, now } from 'helpers/DateTimeHelper';\nimport { parseLiveVideoResponse } from './LiveHelpers';\nimport {\n CLEAR_LIVE,\n FETCH_LIVE_PANEL,\n FETCH_LIVE,\n FETCH_LIVESTREAM,\n FETCH_LIVE_NEXT_PAGE,\n FETCH_PRIME_TIME,\n RESTORE_LIVE_GRID_STATE,\n SAVE_LIVE_VIDEO,\n SET_SUGGESTED_CHANNEL,\n} from './LiveActions';\n\nconst INITIAL_STATE = {\n panels: null,\n seo: null,\n errors: null,\n video: null,\n defaultChannel: null,\n defaultChannelVideo: null,\n currentTime: null,\n primeTimePanels: null,\n upNext: null,\n prevOpenRow: null,\n prevRowIdx: null,\n savedVideo: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n const data = _.get(action, 'payload.data');\n const responseURL = _.get(action, 'payload.request.responseURL', '');\n const network = _.get(data, 'network');\n const videoId = _.get(data, 'videoId');\n const programId = _.get(data, 'programId');\n const seo = _.get(data, 'SEO');\n const currentTime = format(now(), FORMAT_TIME);\n\n let panels;\n switch (action.type) {\n case FETCH_LIVE:\n if (!data) return state;\n panels = _.get(data, 'panels');\n return {\n ...state,\n panels,\n seo,\n errors,\n currentTime,\n };\n case FETCH_LIVE_PANEL: {\n const { panels: prevPanels } = state;\n if (!data || !prevPanels) return state;\n const member = _.map(prevPanels.member, panel => (panel.id === data.id ? data : panel));\n panels = prevPanels;\n panels.member = member;\n return { ...state, panels };\n }\n\n case FETCH_LIVE_NEXT_PAGE: {\n const { panels: prevPanels } = state;\n if (!data || !prevPanels) return state;\n const { member: nextMember } = data;\n const channels = _.map(prevPanels.member, channel => {\n let newChannel = channel;\n if (channel.callSign === nextMember[0].callSign) {\n const member = _.get(channel, 'items.member');\n const members = [...member, ...nextMember];\n const dataMap = {};\n const cleanMap = [];\n members.forEach(item => {\n const gapFillerId = `gapFiller${item.startDate}${item.endDate}`;\n if (!dataMap[item.id] || (item.id === 'gapFiller' && !dataMap[gapFillerId])) {\n dataMap[item.id === 'gapFiller' ? gapFillerId : item.id] = true;\n cleanMap.push(item);\n }\n });\n newChannel = {\n ...channel,\n items: {\n member: cleanMap,\n },\n };\n }\n return newChannel;\n });\n panels = prevPanels;\n panels.member = channels;\n return { ...state, panels };\n }\n\n case FETCH_PRIME_TIME: {\n if (!data) return state;\n // get the requested date range\n let dateRange = null;\n let date = null;\n let usingLocation = null;\n if (responseURL) {\n const reg = /dateRange=(.+?)(&|$)/;\n const result = responseURL.match(reg);\n dateRange = result ? result[1] : dateRange;\n date = dateRange ? dateRange.match(/([\\d]{4}-[\\d]{2}-[\\d]{2})/)[1] : date;\n usingLocation = responseURL.indexOf('geoLatitude') !== -1;\n }\n\n // add the date range to the panel.\n const primeTimePanels = _.get(data, 'panels', null);\n if (primeTimePanels) {\n primeTimePanels.dateRange = dateRange;\n primeTimePanels.date = date;\n\n // add if it used location\n primeTimePanels.usingLocation = usingLocation;\n }\n return {\n ...state,\n primeTimePanels,\n errors,\n };\n }\n case FETCH_LIVESTREAM: {\n const { liveVideo, panel } = parseLiveVideoResponse(data);\n const videoType = _.get(liveVideo, 'videoType');\n const isFullEpisode = isEpisode(videoType);\n const video = liveVideo ? { ...liveVideo, isFullEpisode } : null;\n return {\n ...state,\n video,\n panel,\n errors,\n };\n }\n case SAVE_LIVE_VIDEO: {\n const video = _.get(action, 'payload', null);\n return {\n ...state,\n savedVideo: video,\n };\n }\n case SET_SUGGESTED_CHANNEL:\n return {\n ...state,\n defaultChannel: network,\n defaultChannelVideo: videoId,\n defaultProgram: programId,\n };\n case CLEAR_LIVE: {\n return {\n ...state,\n ...INITIAL_STATE,\n };\n }\n case RESTORE_LIVE_GRID_STATE: {\n const prevOpenRow = _.get(action, 'payload.prevOpenRow', null);\n const prevRowIdx = _.get(action, 'payload.prevRowIdx', null);\n return {\n ...state,\n prevOpenRow,\n prevRowIdx,\n };\n }\n default:\n return state;\n }\n}\n","/* eslint-disable import/prefer-default-export */\nimport { get } from 'lodash';\nimport { now, stringToDate, getDayOfYear } from 'helpers/DateTimeHelper';\n\nexport const getNetworkPanel = ({ network, panels }) => {\n const items = get(panels, 'member', []);\n const networkPanels = items.filter(\n panel => get(panel, 'items.member.0.network', false) === network,\n );\n const networkPanel = get(networkPanels, '0');\n if (!networkPanel) return null;\n const startDay = getDayOfYear(now());\n\n const greaterOrEqualStartDay = item => {\n const startDate = get(item, 'startDate');\n const date = startDate ? stringToDate(startDate) : now();\n const dayOfYear = getDayOfYear(date);\n return dayOfYear <= startDay;\n };\n const schedule = networkPanel.items.member.filter(greaterOrEqualStartDay);\n\n return schedule;\n};\n","import _ from 'lodash';\nimport { FOX } from 'helpers/ContentHelper';\nimport { FETCH_NAV_SCHEDULE } from './NavScheduleActions';\nimport { getNetworkPanel } from './NavScheduleHelper';\n\nconst INITIAL_STATE = {\n schedule: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const data = _.get(action, 'payload.data', null);\n const panels = _.get(data, 'panels', null);\n\n switch (action.type) {\n case FETCH_NAV_SCHEDULE: {\n if (!data) return state;\n const schedule = getNetworkPanel({ network: FOX, panels });\n return {\n ...state,\n schedule,\n };\n }\n default: {\n return state;\n }\n }\n}\n","import _ from 'lodash';\nimport { now } from 'helpers/DateTimeHelper';\nimport {\n FETCH_NEXT_PANEL_PAGE,\n FETCH_PANEL,\n SET_FIRST_PAGE,\n TOGGLE_PANEL_FETCHING,\n} from './PanelActions';\n\nconst INITIAL_STATE = {\n errors: null,\n panels: {},\n fetching: false,\n};\n\nconst TYPE_COLLECTION = 'Collection';\nconst TYPE_SEARCH_RESULT = 'SearchResult';\n\nexport default function(state = INITIAL_STATE, action) {\n const meta = _.get(action, 'meta', null);\n const updateDate = now();\n switch (action.type) {\n case FETCH_NEXT_PANEL_PAGE: {\n const data = _.get(action, 'payload.data', null);\n const panels = _.get(state, 'panels', {});\n const paginationUrl = _.get(data, 'view.next', null);\n const newPageData = _.get(data, 'member', null);\n const view = _.get(data, 'view', {});\n const panel = panels[meta.panelId];\n\n const panelData = _.get(panel, 'panelData', {});\n const panelType = _.get(panelData, '@type', null);\n const isCollection = panelType === TYPE_COLLECTION;\n const isSearchResult = panelType === TYPE_SEARCH_RESULT;\n const memberPath = isCollection ? 'member' : 'items.member';\n\n let newPaginatedItems = _.get(panelData, memberPath, []);\n if (newPageData) newPaginatedItems = newPaginatedItems.concat(newPageData);\n\n const newPanelData = { ...panelData };\n if (isCollection) {\n newPanelData.member = newPaginatedItems;\n newPanelData.view = view;\n } else if (isSearchResult) {\n const currentSeriesList = _.get(panelData, 'types.series.series.member', []);\n const currentSpecialsList = _.get(panelData, 'types.series.special.member', []);\n const currentMoviesList = _.get(panelData, 'types.series.movie.member', []);\n const currentEpgList = _.get(panelData, 'types.epglisting.member', []);\n\n const newSeriesList = _.get(data, 'types.series.series.member', []);\n const newSpecialsList = _.get(data, 'types.series.special.member', []);\n const newMoviesList = _.get(data, 'types.series.movie.member', []);\n const newEpgList = _.get(data, 'types.epglisting.member', []);\n\n const seriesList = currentSeriesList.concat(newSeriesList);\n const specialsList = currentSpecialsList.concat(newSpecialsList);\n const moviesList = currentMoviesList.concat(newMoviesList);\n const epgList = currentEpgList.concat(newEpgList);\n\n _.set(newPanelData, 'types.series.series.member', seriesList);\n _.set(newPanelData, 'types.series.special.member', specialsList);\n _.set(newPanelData, 'types.series.movie.member', moviesList);\n _.set(newPanelData, 'types.epglisting.member', epgList);\n\n newPanelData.items = { view };\n } else {\n const currentPaginatedItems = _.get(panelData, 'items.member', []);\n const newPaginatedItems = _.get(data, 'member', []);\n const paginatedItems = currentPaginatedItems.concat(newPaginatedItems);\n _.set(newPanelData, 'items.member', paginatedItems);\n _.set(newPanelData, 'items.view', view);\n }\n\n return {\n ...state,\n panels: {\n ...panels,\n [meta.panelId]: {\n lastUpdated: updateDate,\n ...panel,\n paginationUrl,\n hasMoreItems: !!paginationUrl,\n panelData: newPanelData,\n },\n },\n fetching: false,\n };\n }\n case FETCH_PANEL: {\n const data = _.get(action, 'payload.data', null);\n if (!data) return state;\n const panels = _.get(state, 'panels', {});\n const paginationUrl = _.get(data, 'view.next', null);\n return {\n ...state,\n panels: {\n ...panels,\n [meta.panelId]: {\n lastUpdated: updateDate,\n paginationUrl,\n hasMoreItems: !!paginationUrl,\n panelData: data,\n },\n },\n fetching: false,\n };\n }\n case SET_FIRST_PAGE: {\n const data = _.get(action, 'payload', null);\n const panels = _.get(state, 'panels', {});\n let paginationUrl = _.get(data, 'view.next', null);\n if (!paginationUrl) paginationUrl = _.get(data, 'items.view.next', null);\n return {\n ...state,\n panels: {\n ...panels,\n [meta.panelId]: {\n lastUpdated: updateDate,\n paginationUrl,\n hasMoreItems: !!paginationUrl,\n panelData: data,\n },\n },\n };\n }\n case TOGGLE_PANEL_FETCHING: {\n const value = _.get(action, 'payload.value', null);\n const { fetching } = state;\n return {\n ...state,\n fetching: value || !fetching,\n };\n }\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { FETCH_GALLERY } from './PhotoGalleryActions';\n\nconst INITIAL_STATE = {\n panel: null,\n seo: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n switch (action.type) {\n case FETCH_GALLERY: {\n const panel = _.get(action, 'payload.data', null);\n const seo = _.get(panel, 'SEO', null);\n return {\n ...state,\n panel,\n seo,\n };\n }\n default:\n return state;\n }\n}\n","import axios from 'axios';\nimport { helperGetApiHeaders, helperConvertApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_PROMO_LIST = 'FETCH_PROMO_LIST';\nexport function fetchPromoList(url, accessToken, deviceId) {\n const pageType = 'articleDetail';\n const request = axios\n .get(\n helperConvertApiRoute(url),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_PROMO_LIST,\n payload: request,\n };\n}\n","import _ from 'lodash';\nimport { determineErrorFromResponse, determineErrorIfStaticRender } from 'helpers/ContentHelper';\nimport { FETCH_PROMO_LIST } from './PromoListActions';\n\nconst INITIAL_STATE = {\n panels: null,\n seo: null,\n errors: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n let errors = determineErrorFromResponse(action);\n if (errors) {\n return {\n ...state,\n errors,\n };\n }\n const data = _.get(action, 'payload.data', null);\n const panels = _.get(data, 'panels', null);\n const seo = _.get(data, 'SEO', null);\n switch (action.type) {\n case FETCH_PROMO_LIST:\n if (!panels) errors = determineErrorIfStaticRender();\n return {\n ...state,\n panels,\n seo,\n errors,\n };\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { updateNextPanels } from 'helpers/ContentHelper';\nimport {\n RESET,\n FETCH_HEADER_SEARCH,\n REFRESH_SEARCH_PANEL,\n FETCH_NEXT_SEARCH,\n FETCH_UP_NEXT_SEARCH,\n SET_FETCHING_SEARCH,\n SET_TAB,\n RESET_NEXT_PAGE,\n} from './Actions';\n\nconst INITIAL_STATE = {\n panels: null,\n filteredItems: [],\n nextPage: null,\n nextPageSet: null,\n fetching: false,\n panelPaginated: [],\n selectedTab: null,\n selectedTabName: null,\n suggestedNetwork: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n switch (action.type) {\n case FETCH_HEADER_SEARCH: {\n const { selectedTab } = state;\n const data = _.get(action, 'payload.data', null);\n\n if (!data) return state;\n const { panels, member: filteredItems, SEO } = data;\n const getNextPageSet = (currentState, nextPage) =>\n currentState.nextPageSet || !!nextPage || false;\n\n if (filteredItems) {\n return { ...state, filteredItems: data, panelPaginated: [] };\n }\n const nextPage = _.get(panels, `member.${selectedTab + 1}.items.view.next`, null);\n const nextPageSet = getNextPageSet(state, nextPage);\n return {\n ...state,\n panels,\n SEO,\n panelPaginated: [],\n filteredItems: [],\n nextPageSet,\n nextPage,\n fetching: false,\n };\n }\n case REFRESH_SEARCH_PANEL: {\n const newPanel = _.get(action, 'payload.data', null);\n if (!newPanel) return state;\n const { panels } = state;\n panels.member = _.map(panels.member, member => {\n if (member.id === newPanel.id) {\n return newPanel;\n }\n return member;\n });\n return { ...state, panels, panelPaginated: [] };\n }\n case FETCH_NEXT_SEARCH: {\n const nextPage = _.get(action, 'payload.data.view.next');\n const newPage = _.get(action, 'payload.data.member');\n const { nextPageSet: oldNextPageSet, filteredItems, panelPaginated } = state;\n const newNextPageSet = !oldNextPageSet && nextPage ? !!nextPage : oldNextPageSet;\n\n const props = {\n ...state,\n nextPage,\n nextPageSet: newNextPageSet,\n fetching: false,\n };\n\n if (!newPage) {\n return {\n ...state,\n nextPage: null,\n fetching: false,\n };\n }\n if (filteredItems.length) {\n props.filteredItems = filteredItems.concat(newPage);\n } else {\n props.panelPaginated = panelPaginated.concat(newPage);\n }\n\n return props;\n }\n case FETCH_UP_NEXT_SEARCH: {\n const { panels } = state;\n const upNextVideos = _.get(action, 'payload.data.member', []);\n const newPanels = updateNextPanels({ panels, upNextVideos });\n if (!newPanels) return state;\n return {\n ...state,\n panels: newPanels,\n };\n }\n case SET_FETCHING_SEARCH: {\n const { payload: fetching } = action;\n return {\n ...state,\n fetching,\n };\n }\n case SET_TAB: {\n const { payload } = action;\n const panels = _.get(state, 'panels.member', null);\n const suggestedNetwork = _.get(state, 'suggestedNetwork', null);\n const collectionType = _.get(payload, 'collectionType', null);\n const value = _.get(payload, 'value', null);\n\n if (!panels) {\n return collectionType ? { ...state, suggestedNetwork: collectionType } : state;\n }\n\n let panel;\n let selectedTabIndex;\n if (suggestedNetwork) {\n selectedTabIndex = _.findIndex(panels, _panel => {\n panel = _panel;\n return _panel.collectionType === suggestedNetwork;\n });\n } else {\n panel = panels[value];\n selectedTabIndex = value;\n }\n\n if (!panel) return state;\n\n const nextState = {\n ...state,\n filteredItems: [],\n selectedTab: selectedTabIndex,\n selectedTabName: payload.headline,\n panelPaginated: [],\n suggestedNetwork: null,\n };\n if (!payload.selectedFilterIdx) {\n nextState.nextPage = _.get(panel, 'items.view.next', null);\n nextState.nextPageSet = !!nextState.nextPage;\n }\n return nextState;\n }\n case RESET_NEXT_PAGE: {\n return {\n ...state,\n nextPage: null,\n nextPageSet: false,\n };\n }\n case RESET: {\n return INITIAL_STATE;\n }\n default: {\n return state;\n }\n }\n}\n","import axios from 'axios';\nimport { helperGetApiHeaders, helperConvertApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_VIDEOS_TAB = 'FETCH_VIDEOS_TAB';\n\nexport function fetchVideosTab({ url, accessToken, deviceId = null }) {\n const request = axios\n .get(helperConvertApiRoute(url), helperGetApiHeaders({ accessToken, deviceId }))\n .catch(axiosErrorHandler);\n return {\n type: FETCH_VIDEOS_TAB,\n payload: request,\n };\n}\n","import axios from 'axios';\nimport _ from 'lodash';\nimport {\n helperGetApiHeaders,\n helperGetApiSeriesUrlRoute,\n helperConvertApiRoute,\n axiosErrorHandler,\n helperGetApiCategoryUrlRoute,\n} from 'helpers/ApiHelper';\nimport { fetchFooter } from 'components/Footer/FooterActions';\nimport {\n getTabDataUrl,\n isContinueWatchingComponent,\n isInlineComponent,\n} from './SeriesDetailHelpers';\nimport { fetchVideosTab } from './components/VideosTab/VideosTabActions';\n\nexport const FETCH_SERIES_URL = 'FETCH_SERIES_URL';\nexport const FETCH_SERIES_DETAIL = 'FETCH_SERIES_DETAIL';\nexport const SET_SERIES_DETAIL_TABS = 'SET_SERIES_DETAIL_TABS';\nexport const CLEAR_SERIES_DETAIL = 'CLEAR_SERIES_DETAIL';\nexport const SET_SERIES_DETAIL_ERROR = 'SET_SERIES_DETAIL_ERROR';\nexport const FETCH_DETAIL_CATEGORY = 'FETCH_DETAIL_CATEGORY';\nexport const FETCH_EPISODE_DETAIL = 'FETCH_EPISODE_DETAIL';\nexport const FETCH_DETAIL_CATEGORY_ANONYMOUS = 'FETCH_DETAIL_CATEGORY_ANONYMOUS';\nexport const FETCH_V2_SEO = 'FETCH_V2_SEO';\n\nfunction fetchSeriesUrl(showId, accessToken, deviceId) {\n const pageType = 'showsQuery';\n const request = axios\n .get(\n helperGetApiSeriesUrlRoute(showId),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n return {\n type: FETCH_SERIES_URL,\n payload: request,\n };\n}\n\nfunction fetchEpisodes(url, accessToken, deviceId) {\n const pageType = 'seriesDetail';\n const request = axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n return {\n type: FETCH_EPISODE_DETAIL,\n payload: request,\n };\n}\n\nexport function fetchV2SEO(url, accessToken, deviceId) {\n const pageType = 'seriesDetail';\n const request = axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n return {\n type: FETCH_V2_SEO,\n payload: request,\n };\n}\n\nfunction fetchCategoryDetailUrl(id, accessToken, deviceId) {\n const pageType = 'category';\n const route = helperGetApiCategoryUrlRoute(id);\n const request = axios\n .get(route, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n return {\n type: FETCH_DETAIL_CATEGORY,\n payload: request,\n };\n}\n\nfunction fetchAnonymousCategoryDetailUrl(id, accessToken, deviceId) {\n const pageType = 'category';\n const route = helperGetApiCategoryUrlRoute(id);\n const request = axios\n .get(route, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n return {\n type: FETCH_DETAIL_CATEGORY_ANONYMOUS,\n payload: request,\n };\n}\n\nexport function fetchAnonymousCategoryDetail(id, accessToken, deviceId) {\n return dispatch =>\n dispatch(fetchAnonymousCategoryDetailUrl(id, accessToken, deviceId)).then(() =>\n dispatch(fetchFooter()),\n );\n}\n\nfunction fetchSeriesDetail(seriesScreenUrl, accessToken, deviceId) {\n const pageType = 'seriesDetail';\n const request = axios\n .get(\n helperConvertApiRoute(seriesScreenUrl),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_SERIES_DETAIL,\n payload: request,\n };\n}\n\nexport function setSeriesDetailError(error) {\n const payload = {\n response: {\n status: error,\n },\n };\n\n return {\n type: SET_SERIES_DETAIL_ERROR,\n payload,\n };\n}\n\nexport function clearSeriesDetail() {\n return {\n type: CLEAR_SERIES_DETAIL,\n };\n}\n\nfunction setSeriesDetailTabs(tabs) {\n return {\n type: SET_SERIES_DETAIL_TABS,\n payload: tabs,\n };\n}\n\nexport function fetchSeries(showId, accessToken, deviceId) {\n return dispatch =>\n dispatch(fetchSeriesUrl(showId, accessToken, deviceId))\n .then(response => {\n const seriesScreenUrl = _.get(response, 'payload.data.screenUrl', null);\n if (!seriesScreenUrl) return null;\n return dispatch(fetchSeriesDetail(seriesScreenUrl, accessToken, deviceId)).then(\n response => {\n const panels = _.get(response, 'payload.data.panels', null);\n if (!panels) return null;\n const seasonPanel = _.get(panels, 'member[1].items.member');\n if (!seasonPanel) return null;\n _.forEach(seasonPanel, panel => {\n if (panel['@type'] === 'Season') {\n const episodeUrl = panel.episodes['@id'];\n return dispatch(fetchEpisodes(episodeUrl, accessToken, deviceId));\n }\n return panel;\n });\n return response;\n },\n );\n })\n .then(() => dispatch(fetchFooter()));\n}\n\nexport function fetchCategoryDetail(id, accessToken, deviceId) {\n return dispatch =>\n dispatch(fetchCategoryDetailUrl(id, accessToken, deviceId)).then(() => dispatch(fetchFooter()));\n}\n\nexport function fetchAnonymousSeries(showId, accessToken, deviceId) {\n return dispatch =>\n dispatch(fetchSeriesUrl(showId, accessToken, deviceId))\n .then(response => {\n const seriesScreenUrl = _.get(response, 'payload.data.screenUrl', null);\n let tabs;\n if (!seriesScreenUrl) return null;\n return dispatch(fetchSeriesDetail(seriesScreenUrl, accessToken, deviceId)).then(result => {\n const panels = _.get(result, 'payload.data.panels.member', null);\n const tabComponents =\n panels &&\n panels.filter(elem => !isInlineComponent(elem) && !isContinueWatchingComponent(elem));\n const tabItems = [\n _.get(tabComponents, '0.items.member.0', null),\n _.get(tabComponents, '2', null),\n ];\n tabs = tabItems;\n if (!tabItems) return null;\n return Promise.all(\n tabItems.map((tab, index) => {\n const url = getTabDataUrl(tab);\n if (!url) return Promise.resolve();\n return dispatch(fetchVideosTab({ url, accessToken })).then(response => {\n const data = _.get(response, 'payload.data');\n _.set(tabs, `${index}.items`, data);\n return Promise.resolve();\n });\n }),\n ).then(() => dispatch(setSeriesDetailTabs(tabs)));\n });\n })\n .then(() => dispatch(fetchFooter()));\n}\n","import _ from 'lodash';\nimport {\n determineErrorFromResponse,\n determineErrorIfStaticRender,\n urlIsExternal,\n NAME_RECOMMENDED_SERIES,\n} from 'helpers/ContentHelper';\nimport {\n CLEAR_SERIES_DETAIL,\n FETCH_DETAIL_CATEGORY_ANONYMOUS,\n FETCH_DETAIL_CATEGORY,\n FETCH_EPISODE_DETAIL,\n FETCH_SERIES_DETAIL,\n FETCH_SERIES_URL,\n FETCH_V2_SEO,\n SET_SERIES_DETAIL_ERROR,\n SET_SERIES_DETAIL_TABS,\n} from './SeriesDetailActions';\nimport { getDetailData, isInlineComponent, isSeasonPanel } from './SeriesDetailHelpers';\n\nconst INITIAL_STATE = {\n continueWatchingItems: [],\n episodes: [],\n errors: null,\n inline: null,\n isLatestEpisodeLive: null,\n latestEpisode: null,\n pagesSeo: {},\n links: null,\n recommendedPanel: {},\n seo: null,\n seriesData: null,\n seriesScreenUrl: null,\n seriesSortOrder: null,\n seriesType: null,\n tabs: null,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n let errors = determineErrorFromResponse(action); \n switch (action.type) {\n case FETCH_SERIES_URL: {\n const data = _.get(action, 'payload.data');\n const seriesScreenUrl = _.get(data, 'screenUrl', null);\n if (!seriesScreenUrl && !errors) {\n errors = determineErrorIfStaticRender();\n }\n return {\n ...state,\n errors,\n seriesScreenUrl,\n };\n }\n case FETCH_DETAIL_CATEGORY: {\n const data = _.get(action, 'payload.data');\n const panels = _.get(data, 'panels.member', null);\n if (errors) return { ...state, errors };\n if (!data || !panels) return state;\n const seriesData = data;\n const inlineComponent = data;\n const { description, name, images = {}, latestVideo: latestEpisode } = data;\n const {\n calendar,\n continueWatching,\n favoritableItems,\n isLatestEpisodeLive,\n oldestEpisode,\n promos,\n seo,\n seriesType,\n tabComponents,\n } = getDetailData({ data, latestEpisode, inlineComponent, seriesData, panels });\n\n if (name && description) {\n const bioComponent = {\n '@type': 'Biography',\n headline: 'Biography',\n description,\n name,\n images,\n id: 'biography',\n };\n\n tabComponents.push(bioComponent);\n }\n\n return {\n ...state,\n calendar,\n continueWatching,\n errors,\n favoritableItems,\n inline: inlineComponent,\n latestEpisode,\n isLatestEpisodeLive,\n oldestEpisode,\n promos,\n seo,\n seriesData,\n seriesType,\n tabs: tabComponents,\n };\n }\n case FETCH_DETAIL_CATEGORY_ANONYMOUS: {\n const data = _.get(action, 'payload.data');\n const panels = _.get(data, 'panels.member', null);\n if (errors) return { ...state, errors };\n if (!data || !panels) return state;\n const seriesData = data;\n const inlineComponent = data;\n const { description, name, images = {}, latestVideo: latestEpisode, id = null } = data;\n const {\n calendar,\n continueWatching,\n favoritableItems,\n isLatestEpisodeLive,\n oldestEpisode,\n promos,\n seo,\n seriesType,\n tabComponents,\n } = getDetailData({ data, latestEpisode, inlineComponent, seriesData, id, panels });\n\n if (name && description) {\n const bioComponent = {\n '@type': 'Biography',\n headline: 'Biography',\n description,\n name,\n images,\n id: 'biography',\n };\n tabComponents.push(bioComponent);\n }\n const latestEntry = _.get(tabComponents, '0');\n return {\n ...state,\n calendar,\n continueWatching,\n errors,\n favoritableItems,\n inline: inlineComponent,\n latestEpisode,\n isLatestEpisodeLive,\n oldestEpisode,\n promos,\n seo,\n seriesData,\n seriesType,\n tabs: latestEntry ? [latestEntry] : [],\n };\n }\n case FETCH_SERIES_DETAIL: {\n const data = _.get(action, 'payload.data');\n const panels = _.get(data, 'panels.member', null);\n if (!data || !panels)\n return {\n ...state,\n errors,\n };\n\n const recommendedPanel = panels.filter(\n panel => panel.headline === NAME_RECOMMENDED_SERIES,\n )?.[0];\n\n const screenTypeId = _.get(data, 'id', null);\n const seriesData = _.get(panels, '0.items.member.0');\n const seasonPanelId = 1;\n const seasonPanels = _.get(panels, `${seasonPanelId}.items.member`);\n if (seasonPanels) {\n seasonPanels.forEach((season, index) => {\n if (season.url && urlIsExternal(season.url) && isSeasonPanel(season)) {\n const seasonUrlArray = season.url.split('/');\n const seasonUrlPath = _.last(seasonUrlArray);\n panels[seasonPanelId].items.member[index].url = seasonUrlPath;\n }\n });\n }\n\n const inlineComponent = _.get(\n panels.filter(elem => isInlineComponent(elem)),\n '0',\n );\n const latestEpisode = _.get(inlineComponent, 'items.member.0.latestEpisode');\n const {\n calendar,\n continueWatching,\n continueWatchingItems,\n favoritableItems,\n links,\n isLatestEpisodeLive,\n oldestEpisode,\n promos,\n seo,\n seriesType,\n seriesSortOrder,\n tabComponents,\n } = getDetailData({ data, latestEpisode, inlineComponent, seriesData, screenTypeId, panels });\n return {\n ...state,\n calendar,\n continueWatching,\n continueWatchingItems,\n errors,\n favoritableItems,\n inline: inlineComponent,\n latestEpisode,\n links,\n isLatestEpisodeLive,\n oldestEpisode,\n promos,\n recommendedPanel,\n seo,\n seriesData,\n seriesType,\n seriesSortOrder,\n tabs: tabComponents,\n };\n }\n case FETCH_EPISODE_DETAIL: {\n const data = _.get(action, 'payload.data');\n const { episodes: currentEpisodes } = state;\n const currentSeason = data?.member ?? [];\n const episodes = [...currentSeason, ...currentEpisodes];\n return {\n ...state,\n episodes,\n };\n }\n case FETCH_V2_SEO: {\n const data = _.get(action, 'payload.data');\n return {\n ...state,\n pagesSeo: data ?? {},\n };\n }\n case SET_SERIES_DETAIL_ERROR: {\n return {\n ...state,\n errors,\n };\n }\n case CLEAR_SERIES_DETAIL: {\n return {\n ...state,\n ...INITIAL_STATE,\n };\n }\n case SET_SERIES_DETAIL_TABS: {\n return {\n ...state,\n tabs: action.payload,\n };\n }\n default:\n return state;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport axios from 'axios';\nimport _ from 'lodash';\nimport { helperGetApiHeaders, helperConvertApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\nimport { fetchNextPanelPage } from 'components/Panel/PanelActions';\nimport { StickyContainer } from 'react-sticky';\nimport altHeaderTheme from 'screens/Shows/AltHeader.css';\n\nexport const FETCH_NEXT_PAGE = 'FETCH_NEXT_PAGE';\nexport const TOGGLE_FETCHING = 'TOGGLE_FETCHING';\nexport const RESET_PAGINATION = 'RESET_PAGINATION';\nexport const INITIAL_STATE = {\n panels: null,\n errors: null,\n filteredPanel: null,\n nextPage: null,\n paginationItems: [],\n hasMoreItems: true,\n fetching: false,\n tabs: null,\n currentTab: null,\n filters: null,\n stickyHeader: null,\n};\n\nexport function toggleFetching(value) {\n return {\n type: TOGGLE_FETCHING,\n payload: { value },\n };\n}\n\nexport function resetPagination() {\n return {\n type: RESET_PAGINATION,\n };\n}\n\nexport function setFetching(action, state) {\n const value = _.get(action, 'payload.value', null);\n const { fetching } = state;\n return {\n ...state,\n fetching: value || !fetching,\n };\n}\n\nexport function setResetPagination({ state }) {\n return {\n ...state,\n ...INITIAL_STATE,\n };\n}\n\nexport function setNextPage(action, state) {\n const nextPage = _.get(action, 'payload.data.view.next', false);\n const newPage = _.get(action, 'payload.data.member', false);\n\n if (!newPage) return state;\n const { paginationItems: oldPaginationItems } = state;\n const newPaginationItems = oldPaginationItems || [];\n\n newPaginationItems.push(newPage);\n return {\n ...state,\n nextPage,\n hasMoreItems: !!nextPage,\n paginationItems: newPaginationItems,\n fetching: false,\n };\n}\n\nexport function paginationLoader() {\n const { panels, filteredPanel, nextPage, hasMoreItems, accessToken, fetching } = this.props;\n if (!fetching) {\n if (hasMoreItems && nextPage) {\n this.props.toggleFetching(true);\n this.props.fetchNextPage(accessToken, nextPage, 'movies');\n } else if (!nextPage && (panels || filteredPanel)) {\n let url;\n if (panels && !filteredPanel) url = _.get(panels, 'member[0].items.view.next', null);\n if (filteredPanel) url = _.get(filteredPanel, 'view.next', null);\n if (url) {\n this.props.toggleFetching(true);\n this.props.fetchNextPage(accessToken, url, 'movies');\n }\n }\n }\n}\n\nexport function fetchNextPage(accessToken, url, pageType, deviceId) {\n if (url && pageType) {\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId });\n const request = axios.get(helperConvertApiRoute(url), headers).catch(axiosErrorHandler);\n\n return {\n type: FETCH_NEXT_PAGE,\n payload: request,\n };\n }\n return {};\n}\n\nexport function getPaginationNextUrl(response) {\n let data = _.get(response, 'payload.data', null);\n if (!data) data = response;\n const view =\n _.get(data, 'view', null) ||\n _.get(data, 'panels.member[0].items.view', null) ||\n _.get(data, 'items.view', null);\n return _.get(view, 'next', null);\n}\n\nexport function fetchPanelPaginationLoop({ store, url, panelId, headers }) {\n if (!url) return null;\n return store.dispatch(fetchNextPanelPage(url, headers, panelId)).then(response => {\n const newUrl = getPaginationNextUrl(response);\n if (url === newUrl) return null;\n return fetchPanelPaginationLoop({ store, url: newUrl, panelId, headers });\n });\n}\n\nexport function getPaginationData(items) {\n const { paginationItems } = this.props;\n let returnItems = items;\n if (paginationItems && paginationItems.length) {\n _.forEach(paginationItems, value => {\n returnItems = _.concat(returnItems, value);\n });\n }\n return returnItems;\n}\n\nexport function fetchReducer({ action, state }) {\n const tabId = _.get(action, 'payload.tabId');\n const data = _.get(action, 'payload.data');\n if (!data) return state;\n const { panels } = data;\n const filteredPanel = panels && data ? null : data;\n const tabs = !filteredPanel ? panels.member : state.tabs;\n const { suggestedFilter, suggestedNetwork } = state;\n\n let tab = null;\n\n if (suggestedNetwork) {\n tab = _.find(tabs, networkTab => {\n const headline = _.toLower(networkTab.headline);\n return headline === suggestedNetwork;\n });\n }\n\n if (suggestedFilter && !filteredPanel) {\n // for the movies page, find the tab by the collectionType.\n tab = _.find(tabs, categoryFilter => {\n const filterName = _.toLower(categoryFilter.name);\n return filterName === suggestedFilter;\n });\n }\n\n let currentTab = tab ? tab.id : null;\n currentTab = tabId || currentTab || state.currentTab || _.get(tabs, '0.id', null);\n\n const filters = currentTab\n ? _.get(tabs.filter(lclTab => _.get(lclTab, 'id', false) === currentTab), '0.customViews')\n : state.filters;\n\n return {\n ...setResetPagination({ action, state }),\n panels,\n filteredPanel,\n tabs,\n currentTab,\n filters,\n paginationItems: [],\n };\n}\n\nexport function renderHelper({ style, isNavScheduleRendered, renderLoader, renderFilteredPanel }) {\n const altHeaderContentClass = isNavScheduleRendered\n ? altHeaderTheme.altHeaderContentWithNav\n : altHeaderTheme.altHeaderContent;\n\n return (\n <StickyContainer>\n <div className={classNames(style.screen, altHeaderContentClass)}>\n {renderLoader()}\n {renderFilteredPanel()}\n </div>\n </StickyContainer>\n );\n}\n\nrenderHelper.defaultProps = {\n isNavScheduleRendered: false,\n style: null,\n parentState: {},\n parentProps: {},\n renderLoader: () => {},\n renderFilteredPanel: () => {},\n};\n\nrenderHelper.propTypes = {\n isNavScheduleRendered: PropTypes.bool,\n style: PropTypes.string,\n parentState: PropTypes.shape({}),\n parentProps: PropTypes.shape({}),\n renderLoader: PropTypes.func,\n renderFilteredPanel: PropTypes.func,\n};\n","import _ from 'lodash';\nimport { determineErrorFromResponse } from 'helpers/ContentHelper';\nimport {\n FETCH_NEXT_PAGE,\n TOGGLE_FETCHING,\n RESET_PAGINATION,\n INITIAL_STATE,\n setNextPage,\n setFetching,\n setResetPagination,\n fetchReducer,\n} from 'helpers/PaginationHelper';\nimport { FETCH_SHOWS, RESET_STORE_SHOWS, SET_SUGGESTED_TAB } from './ShowsActions';\n\nexport default function(state, action) {\n const seo = _.get(action, 'payload.data.SEO', null);\n let newState = {\n ...INITIAL_STATE,\n ...state,\n };\n switch (action.type) {\n case FETCH_SHOWS: {\n const errors = determineErrorFromResponse(action);\n newState = {\n ...newState,\n errors,\n seo,\n };\n return fetchReducer({ action, state: newState });\n }\n case RESET_STORE_SHOWS: {\n return { ...setResetPagination({ state: newState }) };\n }\n case FETCH_NEXT_PAGE: {\n return setNextPage(action, newState);\n }\n case TOGGLE_FETCHING: {\n return setFetching(action, newState);\n }\n case RESET_PAGINATION: {\n return setResetPagination({ state: newState });\n }\n case SET_SUGGESTED_TAB: {\n const suggestedNetwork = _.get(action, 'payload.suggestedNetwork');\n const suggestedFilter = _.get(action, 'payload.suggestedFilter');\n return {\n ...newState,\n suggestedNetwork,\n suggestedFilter,\n };\n }\n default:\n return newState;\n }\n}\n","/* global SiteMapContentUrl */\nimport axios from 'axios';\nimport { helperConvertApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\nimport { fetchFooter } from 'components/Footer/FooterActions';\n\nimport routes from '../../../../webpack/local/sitemap.json';\n\nexport const FETCH_SITE_CONTENT = 'FETCH_SITE_CONTENT';\n\nfunction fetchSitemap(isStaticRender) {\n let payload;\n if (isStaticRender) {\n payload = { data: routes };\n } else {\n payload = SiteMapContentUrl\n ? axios.get(helperConvertApiRoute(SiteMapContentUrl)).catch(axiosErrorHandler)\n : [];\n }\n return {\n type: FETCH_SITE_CONTENT,\n payload,\n };\n}\n\nexport const fetchSiteContent = isStaticRender => dispatch =>\n dispatch(fetchFooter()).then(() => dispatch(fetchSitemap(isStaticRender)));\n","import _ from 'lodash';\nimport { determineErrorFromResponse } from 'helpers/ContentHelper';\nimport { FETCH_SITE_CONTENT } from './SiteMapActions';\n\nconst INITIAL_STATE = {\n errors: null,\n content: [],\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n let data = _.get(action, 'payload.data', []);\n let newState = {\n ...INITIAL_STATE,\n ...state,\n ...errors,\n };\n\n switch (action.type) {\n case FETCH_SITE_CONTENT: {\n data = _.map(data, row => {\n const url = _.get(row, 'url', '');\n const newUrl = url.endsWith('/') ? url : `${url}/`;\n const subUrls = _.get(row, 'subUrls', []);\n const newSubUrls = _.map(subUrls, subRow => {\n const subUrl = _.get(subRow, 'url', '');\n const newSubUrl = subUrl.endsWith('/') ? subUrl : `${subUrl}/`;\n return {\n ...subRow,\n url: newSubUrl,\n };\n });\n return {\n ...row,\n url: newUrl,\n subUrls: newSubUrls,\n };\n });\n newState = {\n ...newState,\n errors,\n content: data,\n };\n return newState;\n }\n default:\n return newState;\n }\n}\n","import _ from 'lodash';\nimport { determineErrorFromResponse, isStaticRender, isEpisode } from 'helpers/ContentHelper';\nimport { FETCH_VIDEO, FETCH_VIDEO_PANEL, CLEAR_VIDEO } from './VideoModalActions';\nimport { parseVideoResponse } from './VideoModalHelpers';\n\nconst INITIAL_STATE = {\n seo: null,\n errors: null,\n video: null,\n panelVideo: null,\n releaseUrl: null,\n isStatic: false,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n switch (action.type) {\n case FETCH_VIDEO_PANEL: {\n const data = _.get(action, 'payload.data');\n const seo = _.get(data, 'SEO');\n const videoData = _.get(data, 'panels.member.0.items.member.0') || _.get(state, 'video');\n const videoType = _.get(videoData, 'videoType');\n const isFullEpisode = isEpisode(videoType);\n const panelVideo = videoData && { ...videoData, isFullEpisode, videoFormat: 'vod' };\n const nextState = {\n ...state,\n panelVideo,\n seo,\n errors,\n isStatic: isStaticRender(),\n };\n return nextState;\n }\n case FETCH_VIDEO: {\n const data = _.get(action, 'payload.data');\n const videoData = parseVideoResponse(data) || null;\n const videoType = _.get(videoData, 'videoType');\n const isFullEpisode = isEpisode(videoType);\n const video = videoData && { ...videoData, isFullEpisode, videoFormat: 'vod' };\n const releaseUrl = _.get(video, 'url', null);\n return {\n ...state,\n releaseUrl,\n errors,\n video,\n };\n }\n case CLEAR_VIDEO: {\n return {\n ...state,\n ...INITIAL_STATE,\n };\n }\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport {\n isLive,\n isEpisode,\n determineErrorFromResponse,\n getEPGListingIdFromPlayerScreenUrl,\n isStaticRender,\n} from 'helpers/ContentHelper';\nimport {\n LIVE,\n PLAYER_CONTEXT_LIVE,\n PLAYER_CONTEXT_WATCH,\n PLAYER_TYPE_DEFAULT,\n VOD,\n} from 'helpers/PlayerHelper';\nimport { userAttributeEvents as optimizelyUserAttributeEvents } from 'helpers/OptimizelyHelper';\n\nimport {\n CLEAR_GLOBAL_LIVE_RESTART,\n CLEAR_GLOBAL_NEXT_VIDEOS_VALID_FOR,\n CLEAR_GLOBAL_PERCENT_WATCHED,\n CLEAR_GLOBAL_VIDEO,\n FETCH_GLOBAL_VIDEO_NEXT_VIDEO,\n FETCH_GLOBAL_VIDEO_PANEL,\n FETCH_GLOBAL_VIDEO_UP_NEXT,\n FETCH_GLOBAL_VIDEO,\n HANDLE_VOD_SECTION_CLICKED,\n PLAY_GLOBAL_VIDEO_NEXT_PLAYLIST_VIDEO,\n RESET_VOD_SECTION_CLICKED,\n SAVE_GLOBAL_PERCENT_WATCHED,\n SET_GLOBAL_LIVE_RESTART,\n SET_GLOBAL_PERCENT_WATCHED_50_PERCENT,\n SET_GLOBAL_PORTAL_CONTENT_FINISHED,\n SET_GLOBAL_PORTAL_REF,\n SET_GLOBAL_STREAM_EXIT,\n SET_GLOBAL_VIDEO_COUNTDOWN,\n SET_GLOBAL_VIDEO_DISABLE_RENDER,\n SET_GLOBAL_VIDEO_ERROR,\n SET_GLOBAL_VIDEO_PANEL,\n SET_GLOBAL_VIDEO_PLAYER_TYPE,\n SET_GLOBAL_VIDEO_RETRY_ERROR,\n SET_GLOBAL_VIDEO_SCREEN_IN_CONTROL_OF_STATE,\n SET_GLOBAL_VIDEO_SHOULD_RESET_STILL_WATCHING,\n SET_GLOBAL_VIDEO_SHOW_CONTROLS,\n SET_GLOBAL_VIDEO_STARTED_PLAYBACK,\n SET_GLOBAL_VIDEO,\n SET_MINI_PLAYER_ACTIVE,\n} from './Actions';\n\nconst INITIAL_STATE = {\n seo: null,\n errors: null,\n video: null,\n panelVideo: null,\n releaseUrl: null,\n restartVideo: null,\n isLiveRestart: false,\n isStatic: false,\n hideVideoUntilPlayback: false,\n disableRender: true,\n isMiniPlayerActive: null,\n nextVideos: [],\n nextVideosValidFor: null,\n optimizelyResults: null,\n page: null,\n percentWatched: 0,\n playerType: null,\n portalRef: '',\n isPortalContentFinished: false,\n screenInControlOfState: null,\n setStickyControls: () => {},\n setPlayerDataHover: () => {},\n shouldResetStillWatching: false,\n startedPlayback: false,\n streamExit: false,\n retryErrors: {},\n countdownVideo: {},\n videoIsLive: false,\n vodContentSet: false,\n hasSeenHalfAnyVideo: false,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n const errors = determineErrorFromResponse(action);\n const payload = _.get(action, 'payload');\n\n switch (action.type) {\n case SET_GLOBAL_VIDEO_PANEL: {\n const { screenInControlOfState, isLiveRestart } = state;\n const page = _.get(payload, 'source');\n const optimizelyResults = _.get(payload, 'optimizelyResults');\n const ignoreUpdatingState = screenInControlOfState && screenInControlOfState !== page;\n if (ignoreUpdatingState) return state;\n const panel = _.get(payload, 'panel');\n const videoType = _.get(panel, 'videoType');\n const type = _.get(panel, '@type');\n const isFullEpisode = isEpisode(videoType);\n const videoIsLive = isLive(type) && !isLiveRestart;\n const videoFormat = videoIsLive ? LIVE : VOD;\n let panelVideo = panel && { ...panel, isFullEpisode, videoFormat };\n const playerContext = videoIsLive ? PLAYER_CONTEXT_LIVE : PLAYER_CONTEXT_WATCH;\n const playerScreenUrl = _.get(panelVideo, 'playerScreenUrl', '');\n panelVideo = {\n ...panelVideo,\n epgListingId: playerScreenUrl.includes('epgListingId')\n ? getEPGListingIdFromPlayerScreenUrl(playerScreenUrl)\n : null,\n };\n const isVodUnavailable = !videoIsLive && !playerScreenUrl;\n\n const nextState = {\n ...state,\n errors,\n isStatic: isStaticRender(),\n isVodUnavailable,\n optimizelyResults,\n page,\n panelVideo,\n playerContext,\n releaseUrl: null,\n video: null,\n };\n\n return nextState;\n }\n case FETCH_GLOBAL_VIDEO_PANEL: {\n const data = _.get(payload, 'data');\n const seo = _.get(data, 'SEO');\n const videoData = _.get(data, 'panels.member.0.items.member.0') || _.get(state, 'video');\n const videoType = _.get(videoData, 'videoType');\n const isFullEpisode = isEpisode(videoType);\n const videoFormat = isLive(videoData) ? LIVE : VOD;\n const panelVideo = videoData && { ...videoData, isFullEpisode, videoFormat };\n const nextState = {\n ...state,\n panelVideo,\n seo,\n errors,\n isStatic: isStaticRender(),\n };\n\n return nextState;\n }\n case SET_GLOBAL_VIDEO_DISABLE_RENDER: {\n const nextState = {\n ...state,\n disableRender: _.get(payload, 'value'),\n playerType: _.get(payload, 'playerType', PLAYER_TYPE_DEFAULT),\n };\n const context = _.get(payload, 'context');\n if (context) nextState.playerContext = context;\n return nextState;\n }\n case SET_GLOBAL_VIDEO_STARTED_PLAYBACK: {\n return {\n ...state,\n startedPlayback: _.get(payload, 'value'),\n };\n }\n case SET_GLOBAL_VIDEO_SHOW_CONTROLS: {\n return {\n ...state,\n showControls: _.get(payload, 'value'),\n };\n }\n case FETCH_GLOBAL_VIDEO_UP_NEXT: {\n const videos = _.get(payload, 'data.member', {});\n const upNextHeadline = payload?.data?.headline ?? '';\n const nextVideosValidFor = _.get(payload, 'data.validFor', null);\n const nextVideos = Object.values(videos);\n return {\n ...state,\n nextVideos,\n nextVideosValidFor,\n upNextHeadline,\n };\n }\n case FETCH_GLOBAL_VIDEO_NEXT_VIDEO: {\n const nextVideo = _.get(payload, 'data');\n return {\n ...state,\n nextVideo,\n };\n }\n case FETCH_GLOBAL_VIDEO: {\n return {\n ...state,\n vodContentSet: false,\n };\n }\n case SET_GLOBAL_PORTAL_REF: {\n return {\n ...state,\n portalRef: payload || '',\n };\n }\n case SET_GLOBAL_PORTAL_CONTENT_FINISHED: {\n return {\n ...state,\n isPortalContentFinished: payload,\n };\n }\n case SET_GLOBAL_VIDEO: {\n if (!state.panelVideo) return state;\n const videoType = _.get(payload, 'videoType');\n const isFullEpisode = isEpisode(videoType);\n const videoIsLive = isLive(_.get(payload, '@type'));\n const videoFormat = videoIsLive ? LIVE : VOD;\n const defaultPercentWatched = _.get(state, 'panelVideo.percentWatched', 0);\n const percentWatched = _.get(state, 'percentWatched') || defaultPercentWatched;\n const displaySeasonAndEpisodeCounts = _.get(\n state,\n 'panelVideo.displaySeasonAndEpisodeCounts',\n true,\n );\n const video = payload\n ? {\n ...payload,\n displaySeasonAndEpisodeCounts,\n isFullEpisode,\n percentWatched,\n videoFormat,\n }\n : null;\n const releaseUrl = _.get(video, 'playerScreenUrl', _.get(video, 'livePlayerScreenUrl', null));\n\n return {\n ...state,\n releaseUrl,\n errors,\n video,\n nextVideos: [],\n videoIsLive,\n vodContentSet: true,\n };\n }\n case PLAY_GLOBAL_VIDEO_NEXT_PLAYLIST_VIDEO: {\n const video = state.nextVideo;\n const releaseUrl = _.get(video, 'url');\n const nextVideos = state.nextVideos.slice();\n nextVideos.pop();\n return {\n ...state,\n video,\n nextVideo: null,\n nextVideos,\n releaseUrl,\n startedPlayback: false,\n };\n }\n case SET_GLOBAL_VIDEO_PLAYER_TYPE: {\n const playerType = payload;\n if (!playerType) return state;\n\n return {\n ...state,\n playerType,\n };\n }\n case CLEAR_GLOBAL_VIDEO: {\n return {\n ...INITIAL_STATE,\n disableRender: state.disableRender,\n isLiveRestart: state.isLiveRestart,\n playerType: state.playerType,\n restartVideo: state.restartVideo,\n screenInControlOfState: state.screenInControlOfState,\n };\n }\n case SET_GLOBAL_LIVE_RESTART: {\n const restartVideo = _.get(action, 'payload.data');\n\n return {\n ...state,\n isLiveRestart: true,\n restartVideo: restartVideo?.originalVideo || restartVideo,\n };\n }\n case CLEAR_GLOBAL_LIVE_RESTART: {\n return {\n ...state,\n isLiveRestart: _.get(INITIAL_STATE, 'isLiveRestart'),\n restartVideo: _.get(INITIAL_STATE, 'restartVideo'),\n };\n }\n case SET_GLOBAL_VIDEO_ERROR: {\n const newErrors = payload;\n if (!newErrors) return state;\n return {\n ...state,\n errors: newErrors,\n };\n }\n case SET_GLOBAL_VIDEO_COUNTDOWN: {\n const video = payload?.video;\n const onChannelSelect = payload?.onChannelSelect;\n return {\n ...state,\n countdownVideo: video,\n onChannelSelect,\n };\n }\n case SET_GLOBAL_VIDEO_RETRY_ERROR: {\n const retryErrors = payload;\n if (!retryErrors) return state;\n return {\n ...state,\n retryErrors,\n };\n }\n case SET_GLOBAL_VIDEO_SHOULD_RESET_STILL_WATCHING: {\n const shouldResetStillWatching = payload;\n return {\n ...state,\n shouldResetStillWatching,\n };\n }\n case CLEAR_GLOBAL_NEXT_VIDEOS_VALID_FOR: {\n return {\n ...state,\n nextVideosValidFor: _.get(INITIAL_STATE, 'nextVideosValidFor'),\n };\n }\n case SET_GLOBAL_VIDEO_SCREEN_IN_CONTROL_OF_STATE: {\n return {\n ...state,\n screenInControlOfState: payload,\n };\n }\n case SET_GLOBAL_STREAM_EXIT: {\n const streamExit = payload;\n return {\n ...state,\n streamExit,\n startedPlayback: false,\n };\n }\n case SET_MINI_PLAYER_ACTIVE: {\n return {\n ...state,\n isMiniPlayerActive: payload,\n };\n }\n case SAVE_GLOBAL_PERCENT_WATCHED: {\n const percentWatched = _.get(state, 'panelVideo.percentWatched', 0);\n return {\n ...state,\n percentWatched,\n };\n }\n case CLEAR_GLOBAL_PERCENT_WATCHED: {\n const percentWatched = _.get(INITIAL_STATE, 'percentWatched');\n return {\n ...state,\n percentWatched,\n };\n }\n case HANDLE_VOD_SECTION_CLICKED: {\n return {\n ...state,\n ...payload,\n vodSectionClicked: true,\n };\n }\n case RESET_VOD_SECTION_CLICKED: {\n return {\n ...state,\n originalItem: null,\n vodClickedState: {},\n vodSectionClicked: false,\n };\n }\n case SET_GLOBAL_PERCENT_WATCHED_50_PERCENT: {\n optimizelyUserAttributeEvents().video50PercentWatching(true);\n return {\n ...state,\n hasSeenHalfAnyVideo: true,\n };\n }\n default:\n return state;\n }\n}\n","import _ from 'lodash';\nimport { FETCH_VIDEOS_TAB } from './VideosTabActions';\n\nconst INITIAL_PAGINATION_STATE = {\n nextPage: null,\n paginationItems: [],\n hasMoreItems: null,\n fetching: false,\n};\n\nconst INITIAL_STATE = {\n videos: null,\n ...INITIAL_PAGINATION_STATE,\n};\n\nexport default function(state = INITIAL_STATE, action) {\n if (!action.payload) {\n return state;\n }\n\n switch (action.type) {\n case FETCH_VIDEOS_TAB: {\n const videosData = _.get(action, 'payload.data.member');\n if (!videosData) return state;\n return {\n ...state,\n ...INITIAL_STATE,\n videos: { ...state.videos, [action.payload.config.url]: videosData },\n };\n }\n default:\n return state;\n }\n}\n","import axios from 'axios';\nimport _ from 'lodash';\nimport { helperGetApiHeaders, helperGetApiRouteById, axiosErrorHandler } from 'helpers/ApiHelper';\nimport { setVideoPanel as setGlobalVideoPanel } from 'components/VideoPlayerGlobal/Actions';\nimport { PAGE_WATCH } from 'helpers/PageHelper';\nimport { LOCAL_CLIP_PAGE_COOKIE_NAME } from 'helpers/ContentHelper';\nimport { getCookie } from 'helpers/Storage';\nimport { fetchFooter } from 'components/Footer/FooterActions';\n\nexport const CLEAR_WATCH = 'CLEAR_WATCH';\nexport const FETCH_MOVIE_DETAIL = 'FETCH_MOVIE_DETAIL';\nexport const FETCH_WATCH = 'FETCH_WATCH';\nexport const FETCH_WATCH_ERROR = 'FETCH_WATCH_ERROR';\nconst FETCH_WATCH_PANELS = 'FETCH_WATCH_PANELS';\nexport const SET_WATCH_PANELS = 'SET_WATCH_PANELS';\nexport const SET_NEXT_PAGE = 'SET_NEXT_WATCH_PAGE';\n\nexport function fetchWatch(id, accessToken, deviceId) {\n const pageType = 'videoDetail';\n const request = axios\n .get(\n helperGetApiRouteById(pageType, id, '{videoId}'),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_WATCH,\n payload: request,\n };\n}\n\nfunction setWatchPanels(data) {\n return {\n type: SET_WATCH_PANELS,\n payload: data,\n };\n}\n\nexport const fetchWatchPanels = (\n id,\n accessToken,\n deviceId,\n doNotSetGlobalVideoPanel,\n optimizelyProps,\n) => dispatch => {\n dispatch({ type: FETCH_WATCH_PANELS });\n const pageType = 'videoDetail';\n return axios\n .get(\n helperGetApiRouteById(pageType, id, '{videoId}'),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .then(results => {\n // to allow quick render set panels before fetching pagination\n const panels = _.get(results, 'data.panels.member');\n const firstPanel = _.get(panels, '0');\n if (!firstPanel) throw new Error('404');\n const optimizelyResults = optimizelyProps?.callback(_.get(firstPanel, 'items.member.0'));\n dispatch(setWatchPanels(results));\n if (doNotSetGlobalVideoPanel) return;\n const localPlayerScreenUrl = getCookie({ name: LOCAL_CLIP_PAGE_COOKIE_NAME });\n if (localPlayerScreenUrl) {\n firstPanel.items.member[0].playerScreenUrl = localPlayerScreenUrl;\n }\n dispatch(setGlobalVideoPanel({ panel: firstPanel, source: PAGE_WATCH, optimizelyResults }));\n })\n .catch(errors => {\n axiosErrorHandler(errors);\n dispatch({ type: FETCH_WATCH_ERROR, payload: errors });\n })\n .then(() => dispatch(fetchFooter()));\n};\n\nexport function fetchMovieDetail(id, accessToken, deviceId) {\n const pageType = 'movieVideoDetail';\n const request = axios\n .get(\n helperGetApiRouteById(pageType, id, '{videoId}'),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_MOVIE_DETAIL,\n payload: request,\n };\n}\n\nexport function clearWatch() {\n return {\n type: CLEAR_WATCH,\n };\n}\n","import _ from 'lodash';\nimport {\n determineErrorFromResponse,\n determineErrorIfStaticRender,\n isStaticRender,\n isEpisode,\n} from 'helpers/ContentHelper';\nimport {\n CLEAR_WATCH,\n FETCH_MOVIE_DETAIL,\n FETCH_WATCH,\n FETCH_WATCH_ERROR,\n SET_NEXT_PAGE,\n SET_WATCH_PANELS,\n} from './WatchActions';\n\nconst INITIAL_STATE = {\n panels: null,\n seo: null,\n errors: null,\n video: null,\n panelVideo: null,\n freemiumWatchPanel: null,\n next: null,\n endcard: null,\n releaseUrl: null,\n restartPlayerScreenUrl: null,\n restartData: null,\n isStatic: false,\n playlistData: null,\n percentWatched: 0,\n pagination: {},\n vodContentSet: false,\n};\n\nconst WATCH_PANEL_ID =\n window.ExternalConfig?.api?.exemptVideoCollection ?? '604a7067e0f52c001a668af9';\nexport default function(state = INITIAL_STATE, action) {\n let errors = determineErrorFromResponse(action);\n switch (action.type) {\n case FETCH_WATCH: {\n const data = _.get(action, 'payload.data');\n const panels = _.get(data, 'panels');\n const seo = _.get(data, 'SEO');\n const videoData = _.get(panels, 'member.0.items.member.0') || _.get(state, 'video');\n const videoType = _.get(videoData, 'videoType');\n const isFullEpisode = isEpisode(videoType);\n const panelVideo = videoData && { ...videoData, isFullEpisode, videoFormat: 'vod' };\n const nextState = {\n ...state,\n panels,\n panelVideo,\n seo,\n errors,\n isStatic: isStaticRender(),\n video: null,\n vodContentSet: false,\n };\n\n return nextState;\n }\n case SET_WATCH_PANELS: {\n const data = _.get(action, 'payload.data');\n const newPanels = _.get(data, 'panels');\n const seo = _.get(data, 'SEO');\n const videoData = _.get(newPanels, 'member.0.items.member.0') || _.get(state, 'video');\n const videoType = _.get(videoData, 'videoType');\n const isFullEpisode = isEpisode(videoType);\n const panelVideo = videoData && { ...videoData, isFullEpisode, videoFormat: 'vod' };\n const playerScreenUrl = _.get(videoData, 'playerScreenUrl', false);\n const favoritableItems = _.get(videoData, 'favoritableItems');\n const isVodUnavailable = !playerScreenUrl;\n const newMember = _.get(newPanels, 'member', []);\n const freemiumWatchPanel = newMember.filter(item => item.id === WATCH_PANEL_ID)[0];\n const member = newMember?.filter(item => item.id !== WATCH_PANEL_ID);\n\n const panels = {\n ...newPanels,\n member,\n totalItems: member.length,\n };\n const nextState = {\n ...state,\n errors,\n favoritableItems,\n freemiumWatchPanel,\n isStatic: isStaticRender(),\n isVodUnavailable,\n pagination: {},\n panelVideo,\n panels,\n seo,\n video: null,\n releaseUrl: null,\n };\n\n return nextState;\n }\n case SET_NEXT_PAGE: {\n const data = _.get(action, 'payload');\n const { results, panelId } = data;\n const pages = _.get(state, `pagination.${panelId}`, []);\n const nextPages = [...pages, results.data];\n const nextPagination = { ...state.pagination, [panelId]: nextPages };\n return { ...state, pagination: nextPagination };\n }\n case FETCH_MOVIE_DETAIL: {\n const seo = _.get(action, 'payload.data.SEO');\n const nextState = { ...state };\n if (seo) nextState.seo = seo;\n nextState.isStatic = isStaticRender();\n return nextState;\n }\n case CLEAR_WATCH: {\n return {\n ...state,\n ...INITIAL_STATE,\n };\n }\n case FETCH_WATCH_ERROR: {\n errors = errors || determineErrorIfStaticRender();\n return {\n ...state,\n errors,\n };\n }\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\n\nimport reducerApp from 'index/AppReducer';\nimport reducerArticle from 'components/Article/ArticleReducer';\nimport reducerBannerVideo from 'screens/Collection/components/VideoBanner/components/BannerVideo/Reducer';\nimport reducerBio from 'screens/SeriesDetail/components/Bio/BioReducer';\nimport reducerBlackoutDefinitionFetcher from 'components/BlackoutDefinitionFetcher/BlackoutDefinitionFetcherReducer';\nimport reducerCanIAutoplay from 'components/CanIAutoplay/Reducer';\nimport reducerClips from 'screens/ContentDetail/components/Clips/ClipsReducer';\nimport reducerCollection from 'screens/Collection/Reducer';\nimport reducerDebug from 'screens/Debug/DebugReducer';\nimport reducerEmailSubmissionForm from 'components/EmailSubmissionForm/EmailSubmissionFormReducer';\nimport reducerFooter from 'components/Footer/FooterReducer';\nimport reducerFooterUpsell from 'components/FooterUpsell/FooterUpsellReducer';\nimport reducerHoverMenu from 'components/Header/HoverMenu/HoverMenuReducer';\nimport reducerLatestEpisode from 'screens/LatestEpisode/LatestEpisodeReducer';\nimport reducerLive from 'screens/Live/LiveReducer';\nimport reducerNavSchedule from 'components/NavSchedule/NavScheduleReducer';\nimport reducerPanel from 'components/Panel/PanelReducer';\nimport reducerPhotoGallery from 'screens/SeriesDetail/components/PhotoGallery/PhotoGalleryReducer';\nimport reducerPromoList from 'components/PromoList/PromoListReducer';\nimport reducerSearch from 'screens/Search/Reducer';\nimport reducerSeriesDetail from 'screens/SeriesDetail/SeriesDetailReducer';\nimport reducerShows from 'screens/Shows/ShowsReducer';\nimport reducerSiteMap from 'screens/SiteMap/SiteMapReducer';\nimport reducerVideoModal from 'components/VideoModal/VideoModalReducer';\nimport reducerVideoPlayerGlobal from 'components/VideoPlayerGlobal/Reducer';\nimport reducerVideosTab from 'screens/SeriesDetail/components/VideosTab/VideosTabReducer';\nimport reducerWatch from 'screens/Watch/WatchReducer';\n\nconst rootReducer = combineReducers({\n app: reducerApp,\n article: reducerArticle,\n bannerVideo: reducerBannerVideo,\n bio: reducerBio,\n blackoutDefinitionFetcher: reducerBlackoutDefinitionFetcher,\n canIAutoplay: reducerCanIAutoplay,\n clips: reducerClips,\n collection: reducerCollection,\n debug: reducerDebug,\n emailSubmissionForm: reducerEmailSubmissionForm,\n footer: reducerFooter,\n footerUpsell: reducerFooterUpsell,\n globalVideo: reducerVideoPlayerGlobal,\n hoverMenu: reducerHoverMenu,\n latestEpisode: reducerLatestEpisode,\n live: reducerLive,\n navSchedule: reducerNavSchedule,\n panel: reducerPanel,\n photoGallery: reducerPhotoGallery,\n promoList: reducerPromoList,\n search: reducerSearch,\n seriesDetail: reducerSeriesDetail,\n shows: reducerShows,\n siteMap: reducerSiteMap,\n videoModal: reducerVideoModal,\n videosTab: reducerVideosTab,\n watch: reducerWatch,\n});\n\nexport default rootReducer;\n","import axios from 'axios';\nimport _ from 'lodash';\nimport {\n axiosErrorHandler,\n helperConvertApiRoute,\n helperGetApiHeaders,\n helperGetLiveUpNextUrl,\n} from 'helpers/ApiHelper';\nimport { getAuthZEntitlementIssues } from 'helpers/ContentHelper';\n\nexport const CLEAR_BANNER_VIDEO = 'CLEAR_VIDEO';\nconst FETCH_BANNER_VIDEO = 'FETCH_BANNER_VIDEO';\nexport const FETCH_BANNER_VIDEO_UP_NEXT = 'FETCH_BANNER_VIDEO_UP_NEXT';\nexport const SET_BANNER_VIDEO = 'SET_BANNER_VIDEO';\nexport const SET_BANNER_VIDEO_ERROR = 'SET_BANNER_VIDEO_ERROR';\n\nexport function clearBannerVideo() {\n return {\n type: CLEAR_BANNER_VIDEO,\n };\n}\n\nfunction fetchVideo({ url, accessToken, deviceId }) {\n const pageType = 'videoDetail';\n const request = axios\n .get(\n helperConvertApiRoute(url),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_BANNER_VIDEO,\n payload: request,\n };\n}\n\nexport function fetchUpNext({ upNextUrl, videoId, accessToken, deviceId }) {\n let url = upNextUrl;\n let pageType = 'videoDetail';\n if (!url && videoId) {\n const data = helperGetLiveUpNextUrl({ videoId });\n ({ url, pageType } = data);\n }\n const request = url\n ? axios\n .get(\n helperConvertApiRoute(url),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler)\n : Promise.resolve();\n\n return {\n type: FETCH_BANNER_VIDEO_UP_NEXT,\n payload: request,\n };\n}\n\nfunction setError(errors) {\n return {\n type: SET_BANNER_VIDEO_ERROR,\n payload: errors,\n };\n}\n\nfunction setVideo(video) {\n return {\n type: SET_BANNER_VIDEO,\n payload: video,\n };\n}\n\nexport function fetchBannerVideo({ url, accessToken, deviceId }) {\n return dispatch => {\n dispatch(fetchVideo({ url, accessToken, deviceId })).then(result => {\n const payload = _.get(result, 'payload');\n const response = _.get(payload, 'response');\n const entitlementIssues = getAuthZEntitlementIssues(response);\n const isEntitled = entitlementIssues ? !entitlementIssues.length : true;\n if (isEntitled) {\n const video = _.get(payload, 'data');\n dispatch(setVideo(video));\n const upNextUrl = _.get(video, 'upNextUrl');\n if (upNextUrl) dispatch(fetchUpNext({ upNextUrl, accessToken, deviceId }));\n } else {\n dispatch(setError(entitlementIssues));\n }\n });\n };\n}\n","import axios from 'axios';\nimport { axiosErrorHandler } from 'helpers/ApiHelper';\n\nexport const FETCH_DMA_OVERRIDES = 'FETCH_DMA_OVERRIDES';\nexport const FETCH_PLAYER_CONFIG = 'FETCH_PLAYER_CONFIG';\n\nexport function fetchDmaOverrides(route) {\n const request = axios.get(route).catch(axiosErrorHandler);\n return {\n type: FETCH_DMA_OVERRIDES,\n payload: request,\n };\n}\n\nexport function fetchPlayerConfig(playerConfigRoute) {\n const request = axios.get(playerConfigRoute).catch(axiosErrorHandler);\n return {\n type: FETCH_PLAYER_CONFIG,\n payload: request,\n };\n}\n","import axios from 'axios';\nimport _ from 'lodash';\nimport { axiosErrorHandler, helperGetApiHeaders, helperGetApiRoute } from 'helpers/ApiHelper';\nimport { concatToUrl } from 'helpers/ContentHelper';\n\nconst FETCH_FOOTER_UPSELL_COLLECTION = 'FETCH_FOOTER_UPSELL_COLLECTION';\nconst FETCH_FOOTER_UPSELL_COLLECTION_PANEL = 'FETCH_FOOTER_UPSELL_COLLECTION_PANEL';\nexport const SET_FOOTER_UPSELL_COLLECTION = 'SET_FOOTER_UPSELL_COLLECTION';\n\nfunction setFooterUpsellCollection(collection) {\n return {\n type: SET_FOOTER_UPSELL_COLLECTION,\n payload: collection,\n };\n}\n\nfunction fetchFooterUpsellCollection(path, accessToken, deviceId) {\n const request = axios\n .get(concatToUrl(path, 'populated=false'), helperGetApiHeaders({ accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_FOOTER_UPSELL_COLLECTION,\n payload: request,\n };\n}\n\nfunction fetchFooterUpsellCollectionPanel(panel, accessToken, deviceId) {\n const { '@id': url } = panel;\n const request = axios\n .get(url, helperGetApiHeaders({ accessToken, deviceId }))\n .catch(axiosErrorHandler);\n return {\n type: FETCH_FOOTER_UPSELL_COLLECTION_PANEL,\n payload: request,\n };\n}\n\nexport function fetchCollectionForFooterUpsell(pathKey, accessToken, deviceId) {\n return dispatch => {\n let collection;\n const path = helperGetApiRoute(pathKey);\n return dispatch(fetchFooterUpsellCollection(path, accessToken, deviceId)).then(result => {\n collection = _.get(result, 'payload.data.panels', {});\n const screenPanels = _.get(collection, 'member');\n if (!screenPanels) {\n return Promise.resolve();\n }\n return Promise.all(\n screenPanels.map((screenPanel, index) => {\n if (!screenPanel) return Promise.resolve();\n return dispatch(\n fetchFooterUpsellCollectionPanel(screenPanel, accessToken, deviceId),\n ).then(item => {\n const data = _.get(item, 'payload.data');\n _.set(collection, `member.${index}`, data);\n return Promise.resolve();\n });\n }),\n ).then(() => dispatch(setFooterUpsellCollection(collection)));\n });\n };\n}\n","export const FETCH_SHOWS = 'FETCH_SHOWS_CATEGORIES';\nexport const FETCH_MOVIES = 'FETCH_MOVIES_CATEGORIES';\n","import axios from 'axios';\nimport {\n helperGetApiHeaders,\n helperGetApiSeriesUrlRoute,\n helperConvertApiRoute,\n axiosErrorHandler,\n} from 'helpers/ApiHelper';\n\nexport const FETCH_LATEST_EPISODE_SERIES = 'FETCH_LATEST_EPISODE_SERIES';\nexport const FETCH_LATEST_EPISODE_VIDEO = 'FETCH_LATEST_EPISODE_VIDEO';\n\nexport function fetchLatestEpisodeSeries(showId, accessToken, deviceId) {\n const pageType = 'showsQuery';\n const request = axios\n .get(\n helperGetApiSeriesUrlRoute(showId),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n return {\n type: FETCH_LATEST_EPISODE_SERIES,\n payload: request,\n };\n}\n\nexport function fetchLatestEpisodeVideo(seriesScreenUrl, accessToken, deviceId) {\n const pageType = 'seriesDetail';\n const request = axios\n .get(\n helperConvertApiRoute(seriesScreenUrl),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n return {\n type: FETCH_LATEST_EPISODE_VIDEO,\n payload: request,\n };\n}\n","/* global NetworkConfig */\nimport axios from 'axios';\n\nimport { helperGetApiHeaders, helperGetApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\nimport { concatToUrl } from 'helpers/ContentHelper';\nimport { getPrimetimeDateRange } from 'helpers/DateTimeHelper';\n\nexport const FETCH_NAV_SCHEDULE = 'FETCH_NAV_SCHEDULE';\n\nexport function fetchNavSchedule(accessToken, deviceId) {\n const { branding } = NetworkConfig;\n const pageType = 'foxPrimetime';\n const dateRange = getPrimetimeDateRange();\n let url = helperGetApiRoute(pageType);\n if (url.indexOf('/live') > 0) {\n url = concatToUrl(url, `network=${branding}`);\n url = url && dateRange ? concatToUrl(url, `dateRange=${dateRange}`) : url;\n }\n const request = axios\n .get(url, helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }))\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_NAV_SCHEDULE,\n payload: request,\n };\n}\n","import axios from 'axios';\nimport { helperGetApiHeaders, helperConvertApiRoute, axiosErrorHandler } from 'helpers/ApiHelper';\nimport { getGalleryAPIUrl } from './PhotoGalleryHelper';\n\nexport const FETCH_GALLERY = 'FETCH_GALLERY';\n\nexport function fetchGallery(tabUrl, accessToken, deviceId) {\n const pageType = 'screenpanels';\n const url = getGalleryAPIUrl(tabUrl);\n const request = axios\n .get(\n helperConvertApiRoute(url),\n helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId }),\n )\n .catch(axiosErrorHandler);\n\n return {\n type: FETCH_GALLERY,\n payload: request,\n };\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { logEvent } from 'helpers/LogReportHelpers';\n\nconst Account = props => {\n const [initialized, setInitialized] = useState(false);\n const { getFavorites = () => {}, openAccount = () => {}, setLoading = () => {} } = props;\n\n useEffect(() => {\n if (!initialized) {\n setInitialized(true);\n logEvent('onAccountScreenView');\n logEvent('onAccountScreenStart');\n }\n if (getFavorites) getFavorites();\n if (openAccount) openAccount({ utagAccountSource: 'settings' });\n if (setLoading) setLoading(true);\n if (initialized) logEvent('onAccountScreenFinished');\n return () => {\n if (setLoading) setLoading(false);\n };\n }, []);\n\n return <div />;\n};\n/* eslint react/require-default-props: 0 */\nAccount.propTypes = {\n getFavorites: PropTypes.func,\n openAccount: PropTypes.func,\n setLoading: PropTypes.func,\n};\n\nexport default Account;\n","/* eslint-disable no-console, no-eval, react/no-danger */\n\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Element, scroller } from 'react-scroll';\nimport DOMPurify from 'dompurify';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport Loader from 'components/Loader';\nimport { ccpaOptOutEnabled } from 'helpers/ConfigHelper';\nimport {\n CCPA_DO_NOT_SELL_CHECKED,\n CCPA_DO_NOT_SELL_SEEN,\n getPrivacyParameterCookie,\n isStaticRender,\n setPrivacyParameterCookie,\n} from 'helpers/ContentHelper';\nimport { PageNames } from '@foxcorp/delta-web-analytics';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { helperGoToShowDetail } from 'helpers/RouteHelper';\nimport { fetchArticle } from './ArticleActions';\nimport {\n getArticleApiUrl,\n getPurifyConfig,\n IFRAME_TEST_PATTERN,\n SCRIPT_TEST_PATTERN,\n} from './ArticleHelpers';\nimport style from './Article.module.scss';\n\nconst CCPA_DO_NOT_SELL = 'CCPA DO NOT SELL';\nconst CCPA_DO_NOT_SELL_CHECKBOX_IDENTIFIER = '[Toggle Goes Here]';\n\nclass Article extends PureComponent {\n static handleEmbedScripts(articleBody) {\n const script = SCRIPT_TEST_PATTERN.exec(articleBody);\n try {\n if (window && script && script[1]) window.eval(script[1]);\n } catch (e) {\n console.debug('Embed Script error: ', e);\n }\n return script && script[0] ? articleBody.replace(script[0], '') : articleBody;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n isDoNotSellInfoChecked: getPrivacyParameterCookie() === CCPA_DO_NOT_SELL_CHECKED,\n };\n }\n\n componentDidMount() {\n const { accessToken, deviceId, fetchArticle, pageViewEvent, seriesType, url } = this.props;\n if (url && fetchArticle && !isStaticRender()) {\n fetchArticle(url, accessToken, deviceId);\n }\n pageViewEvent({ pageName: PageNames.ARTICLE, seriesType });\n this.scrollToTargetElement();\n (function loadWidget() {\n const s = document.createElement('script');\n s.type = 'text/javascript';\n s.async = true;\n const host = document.location.protocol === 'http:' ? 'cdn.snapapp.com' : 'scdn.snapapp.com';\n s.src = `//${host}/widget/widget.js`;\n s.id = 'eeload';\n document.getElementsByTagName('head')[0].appendChild(s);\n })();\n }\n\n componentDidUpdate(prevProps) {\n const { url: prevUrl, panels: prevPanels, errors: prevErrors } = prevProps;\n const {\n fetchArticle,\n url,\n pageViewEvent,\n setErrors,\n panels,\n errors,\n accessToken,\n deviceId,\n disableScrollEvent,\n } = this.props;\n const getPanelName = _.get(panels, 'member[0].items.member[0].name', '');\n const hash = window?.location?.hash;\n if (getPanelName === CCPA_DO_NOT_SELL) {\n const isNotOptedOutCCPA = getPrivacyParameterCookie() !== CCPA_DO_NOT_SELL_CHECKED;\n if (ccpaOptOutEnabled() && isNotOptedOutCCPA) {\n setPrivacyParameterCookie({ value: CCPA_DO_NOT_SELL_SEEN, options: { path: '/' } });\n }\n }\n if (prevUrl !== url) {\n pageViewEvent({ pageName: PageNames.ARTICLE });\n fetchArticle(url, accessToken, deviceId);\n }\n if (!prevPanels && panels) {\n if (!disableScrollEvent) this.scrollToTargetElement();\n if (hash) {\n window.location.hash = '';\n window.location.hash = hash;\n }\n }\n if (prevErrors !== errors) {\n setErrors(errors);\n }\n }\n\n scrollToTargetElement() {\n const { scrollElement } = this.props;\n if (scrollElement) {\n const scrollOptions = {\n duration: 300,\n offset: -90,\n smooth: true,\n };\n scroller.scrollTo(scrollElement, scrollOptions);\n }\n }\n\n seoHeaderWrapper(headline) {\n const { primaryHeadline } = this.props;\n return primaryHeadline ? (\n <h1 className={style.title}>{headline}</h1>\n ) : (\n <h2 className={style.title}>{headline}</h2>\n );\n }\n\n shouldRenderItemBasedOnContextAndShowId(item) {\n const { showId } = this.props;\n const id = _.get(item, 'context.id', null);\n if (!showId) return true;\n return id === showId;\n }\n\n handleDoNotSellInfoChecked = () => {\n const { isDoNotSellInfoChecked } = this.state;\n this.setState({ isDoNotSellInfoChecked: !isDoNotSellInfoChecked });\n };\n\n renderDoNotSellInfoCheckbox = () => {\n const { isDoNotSellInfoChecked } = this.state;\n const ccpaDoNotSellLabel = _.get(window.Language, 'ccpa_do_not_sell_label');\n const ccpaDoNotSellConfirmation = _.get(window.Language, 'ccpa_do_not_sell_confirmation');\n\n if (isDoNotSellInfoChecked) {\n setPrivacyParameterCookie({ value: CCPA_DO_NOT_SELL_CHECKED, options: { path: '/' } });\n } else {\n setPrivacyParameterCookie({ value: CCPA_DO_NOT_SELL_SEEN, options: { path: '/' } });\n }\n\n return (\n <div className={style.checkboxContainer}>\n <div className={style.doNotSellInfoContainer}>\n <h3 className={style.doNotSellInfoText}>{ccpaDoNotSellLabel}</h3>\n {isDoNotSellInfoChecked && (\n <p className={style.doNotSellConfirmationText}>{ccpaDoNotSellConfirmation}</p>\n )}\n </div>\n <label className={style.checkboxLabel}>\n <input\n name=\"doNotSellInfo\"\n aria-label=\"CCPA do not sell info\"\n type=\"checkbox\"\n checked={isDoNotSellInfoChecked}\n onChange={this.handleDoNotSellInfoChecked}\n />\n <span />\n </label>\n </div>\n );\n };\n\n renderArticle(item) {\n const { showId, scrollElement } = this.props;\n const { headline, articleBody } = item;\n const getPanelName = _.get(item, 'name', '');\n const isDoNotSellPage = getPanelName === CCPA_DO_NOT_SELL;\n const containerClass = classNames([style.container, isDoNotSellPage && style.dnsContainer]);\n let articleBodySplit;\n let sanitizedBody = Article.handleEmbedScripts(articleBody);\n\n // check article belongs to show.\n if (!this.shouldRenderItemBasedOnContextAndShowId(item)) {\n if (!isStaticRender()) {\n helperGoToShowDetail(showId);\n }\n return null;\n }\n\n // sanitize article body if it doesn't have an iframe.\n if (!IFRAME_TEST_PATTERN.test(articleBody)) {\n sanitizedBody = DOMPurify.sanitize(articleBody, getPurifyConfig());\n }\n\n if (isDoNotSellPage) {\n articleBodySplit = articleBody.split(CCPA_DO_NOT_SELL_CHECKBOX_IDENTIFIER);\n }\n\n const renderArticleBody = () => {\n if (isDoNotSellPage && articleBodySplit && articleBodySplit.length > 1) {\n const beginningSanitizedBody = Article.handleEmbedScripts(articleBodySplit[0]);\n const endingSanitizedBody = Article.handleEmbedScripts(articleBodySplit[1]);\n return (\n <>\n <div\n className={style.body}\n dangerouslySetInnerHTML={{ __html: beginningSanitizedBody }}\n />\n {ccpaOptOutEnabled() && this.renderDoNotSellInfoCheckbox()}\n <div className={style.body} dangerouslySetInnerHTML={{ __html: endingSanitizedBody }} />\n </>\n );\n }\n\n return articleBody ? (\n <div className={style.body} dangerouslySetInnerHTML={{ __html: sanitizedBody }} />\n ) : null;\n };\n\n return (\n <div key=\"article-detail\" className={containerClass}>\n <Element name={scrollElement}>\n {headline ? this.seoHeaderWrapper(headline) : null}\n {renderArticleBody()}\n </Element>\n </div>\n );\n }\n\n renderPanels() {\n const { panels, setLoading } = this.props;\n if (!panels || !panels.member || panels.length === 0)\n return <Loader setLoading={setLoading} center />;\n\n return panels.member.map(panel => {\n const { items, panelType } = panel;\n const {\n member: [item],\n } = items;\n switch (panelType) {\n case 'articleDetail':\n return this.renderArticle(item);\n default:\n return null;\n }\n });\n }\n\n render() {\n const { seo, containerId } = this.props;\n return (\n <div id={containerId}>\n {setHelmetTags(seo)}\n {this.renderPanels()}\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n panels: state.article.panels,\n errors: state.article.errors,\n seo: state.article.seo,\n };\n}\n\nArticle.fetchData = ({ store, params, accessToken }) => {\n const id = params.articleId;\n const url = getArticleApiUrl(id);\n return store.dispatch(fetchArticle(url, accessToken));\n};\n\nArticle.defaultProps = {\n accessToken: null,\n containerId: null,\n deviceId: null,\n errors: null,\n panels: null,\n primaryHeadline: true,\n scrollElement: null,\n seo: {},\n seriesType: '',\n setErrors: () => {},\n setLoading: null,\n showId: null,\n theme: {},\n url: null,\n disableScrollEvent: false,\n};\n\nArticle.propTypes = {\n accessToken: PropTypes.string,\n containerId: PropTypes.string,\n deviceId: PropTypes.string,\n errors: PropTypes.number,\n fetchArticle: PropTypes.func.isRequired,\n pageViewEvent: PropTypes.func.isRequired,\n panels: PropTypes.shape({ member: PropTypes.array }),\n primaryHeadline: PropTypes.bool,\n scrollElement: PropTypes.string,\n seo: PropTypes.shape({}),\n seriesType: PropTypes.string,\n setErrors: PropTypes.func,\n setLoading: PropTypes.func,\n showId: PropTypes.string,\n theme: PropTypes.shape({}),\n url: PropTypes.string,\n disableScrollEvent: PropTypes.bool,\n};\n\nexport default connect(mapStateToProps, { fetchArticle })(Article);\n","import ArticleComponent from './Article';\n\nexport default ArticleComponent;\n","/* global BaseUrl */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport { getRequiresAuth } from 'helpers/ContentHelper';\nimport { format } from 'helpers/DateTimeHelper';\n\nconst CONTEXT = 'http://schema.org/';\nconst TYPE_MOVIE = 'Movie';\nconst TYPE_TV_CLIP = 'TVClip';\nconst TYPE_TV_EPISODE = 'TVEpisode';\nconst TYPE_TV_SERIES = 'TVSeries';\nconst TYPE_TV_SEASON = 'TVSeason';\nconst TYPE_PUBLICATION_EVENT = 'PublicationEvent';\nconst TYPE_COUNTRY = 'COUNTRY';\nconst TYPE_VIDEO_OBJECT = 'VideoObject';\nconst TYPE_WATCH_ACTION = 'WatchAction';\nconst TYPE_WEB_PAGE = 'WebPage';\nconst TYPE_OFFER = 'Offer';\nconst DEFAULT_COUNTRY = 'US';\nconst videoTypeMap = {\n fullEpisode: TYPE_TV_EPISODE,\n clip: TYPE_TV_CLIP,\n movie: TYPE_MOVIE,\n};\n\nconst eligibleRegions = regions => {\n if (!regions) return null;\n return regions.map(region => ({ '@type': TYPE_COUNTRY, name: region }));\n};\n\nconst regions = ['US', 'AS', 'GU', 'PR', 'VI', 'UM'];\n\nconst createSharedSchema = ({ item, isVideo, referenceDate }) => {\n if (!item) return null;\n\n const {\n id,\n available,\n dateCreated,\n description,\n duration: itemDuration,\n endDate,\n episodeNumber,\n externalId,\n id: videoId,\n images,\n name,\n originalAirDate,\n seasonNumber,\n videoType,\n } = item;\n\n const requiresAuth = getRequiresAuth({ video: item });\n const category = !requiresAuth ? 'free' : 'externalSubscription';\n const season = seasonNumber || parseInt(window.location.hash.split('#season-')[1], 10);\n const type = videoTypeMap[videoType];\n const freewheelId = _.get(externalId, '0', null);\n const image = _.get(images, 'still.raw', null);\n const timeRequired = itemDuration ? `P${itemDuration}` : null;\n const trackingQuery = 'cmpid=org=dcg::ag=::mc=seo::src=google::cmp=watchnowaction::add=';\n const availabilityEnds = endDate;\n let potentialAction = null;\n\n if (isVideo) {\n potentialAction = {\n '@type': TYPE_WATCH_ACTION,\n target: [\n {\n '@type': 'EntryPoint',\n urlTemplate: `http://www.fox.com/watch/${videoId}?${trackingQuery}`,\n actionPlatform: 'http://schema.org/DesktopWebPlatform',\n inLanguage: 'en',\n },\n {\n '@type': 'EntryPoint',\n urlTemplate: `foxapp://video_fullepisode/freewheel/${freewheelId}?${trackingQuery}`,\n actionPlatform: 'http://schema.org/MobileWebPlatform',\n inLanguage: 'en',\n },\n {\n '@type': 'EntryPoint',\n urlTemplate: `android-app://com.fox.now/foxapp/x-callback-url/episode?freewheelid=${freewheelId}&autoplay=true&${trackingQuery}`,\n actionPlatform: 'http://schema.org/AndroidPlatform',\n inLanguage: 'en',\n },\n ],\n expectsAcceptanceOf: {\n '@type': TYPE_OFFER,\n availabilityStarts: available,\n availabilityEnds,\n category,\n eligibleRegion: eligibleRegions(regions),\n },\n };\n }\n\n const data = {\n '@context': CONTEXT,\n '@id': id,\n '@type': type,\n name,\n description,\n timeRequired,\n image,\n releasedEvent: {\n '@type': TYPE_PUBLICATION_EVENT,\n startDate: referenceDate || originalAirDate || dateCreated,\n location: {\n '@type': TYPE_COUNTRY,\n name: DEFAULT_COUNTRY,\n },\n },\n potentialAction,\n };\n\n if (season) {\n data.partOfSeason = {\n '@type': TYPE_TV_SEASON,\n seasonNumber: season,\n };\n }\n\n if (episodeNumber) {\n data.episodeNumber = episodeNumber;\n }\n\n return data;\n};\n\nexport const createWatchEpisodeSchema = ({ item }) => {\n if (!item) return undefined;\n const {\n datePublished,\n description,\n images,\n imdbTitleUrl,\n name,\n playerScreenUrl,\n seriesName,\n seriesScreenUrl,\n videoType,\n } = item;\n\n const type = videoTypeMap[videoType];\n if (type !== TYPE_TV_EPISODE) return undefined;\n const sharedData = createSharedSchema({ item, isVideo: true });\n const baseUrl = BaseUrl;\n const seriesUrl = `${baseUrl}${helperGetRelativeUrl({ url: seriesScreenUrl })}`;\n const url = `${baseUrl}${helperGetRelativeUrl({ url: playerScreenUrl || seriesScreenUrl })}`;\n\n const partOfSeries = {\n '@type': TYPE_TV_SERIES,\n name: seriesName,\n sameAs: imdbTitleUrl,\n url: seriesUrl,\n };\n\n const video = {\n '@context': 'https://schema.org',\n '@type': TYPE_VIDEO_OBJECT,\n mainEntityOfPage: { '@type': TYPE_WEB_PAGE, '@id': url },\n name,\n description,\n thumbnailUrl: _.get(images, 'still.raw', null),\n publisher: {\n '@context': 'http://schema.org',\n '@type': 'Organization',\n name: 'FOX',\n url: 'https://www.fox.com/',\n logo: {\n '@type': 'ImageObject',\n url: 'https://www.fox.com/assets/images/affiliates/logos/fox.png',\n },\n },\n uploadDate: format(new Date(datePublished), 'YYYY-MM-DD'),\n };\n\n return {\n ...sharedData,\n url,\n video,\n partOfSeries,\n };\n};\n\nexport const createWatchClipSchema = ({ item }) => {\n if (!item) return undefined;\n const { name, description, datePublished, duration, images } = item;\n return {\n '@context': 'https://schema.org',\n '@type': 'VideoObject',\n name,\n description,\n thumbnailUrl: _.get(images, 'still.raw', null),\n uploadDate: format(new Date(datePublished), 'YYYY-MM-DD'),\n duration,\n };\n};\n\nexport const createSeriesDetailSchema = ({ item }) => {\n if (!item) return null;\n const { screenUrl, releaseYear, showCode, actors, director } = item;\n\n const requiresAuth = getRequiresAuth({ video: item });\n const sharedData = createSharedSchema({ item, referenceDate: releaseYear });\n delete sharedData.timeRequired;\n const sameAs = _.get(item, 'latestEpisode.imdbTitleUrl');\n const baseUrl = BaseUrl;\n const url = `${baseUrl}${helperGetRelativeUrl({ url: screenUrl })}`;\n const trackingQuery = 'cmpid=org=dcg::ag=::mc=seo::src=google::cmp=watchnowaction::add=';\n let actor;\n\n const potentialAction = {\n '@type': TYPE_WATCH_ACTION,\n target: [\n {\n '@type': 'EntryPoint',\n urlTemplate: `${url}?${trackingQuery}`,\n actionPlatform: 'http://schema.org/DesktopWebPlatform',\n inLanguage: 'en',\n },\n {\n '@type': 'EntryPoint',\n urlTemplate: `ios-app://seriesDetail/${showCode}?${trackingQuery}`,\n application: {\n '@type': 'SoftwareApplication',\n name: 'Fox',\n operatingSystem: 'iOS',\n applicationCategory: 'Multimedia',\n },\n actionPlatform: 'http://schema.org/IOSPlatform',\n inLanguage: 'en',\n },\n {\n '@type': 'EntryPoint',\n urlTemplate: `android-app://seriesDetail/${showCode}?${trackingQuery}`,\n actionPlatform: 'http://schema.org/AndroidPlatform',\n inLanguage: 'en',\n },\n ],\n expectsAcceptanceOf: {\n '@type': TYPE_OFFER,\n availabilityStarts: 2017,\n availabilityEnds: 2030,\n category: !requiresAuth ? 'free' : 'externalSubscription',\n eligibleRegion: eligibleRegions(regions),\n },\n };\n\n if (!_.isEmpty(actors)) {\n actor = _.map(actors, a => ({\n '@type': 'Person',\n name: a.name,\n url: `${url}credits/${a.alternateId}`,\n }));\n }\n\n return {\n ...sharedData,\n '@type': TYPE_TV_SERIES,\n '@id': url,\n potentialAction,\n ...(director && { director }),\n ...(sameAs && { sameAs }),\n url,\n ...(actor && { actor }),\n };\n};\n\nexport const createFoxNowAppFAQSchema = item => {\n if (!item) return null;\n return <script type=\"application/ld+json\">{JSON.stringify(item)}</script>;\n};\n\nexport const createSchemaTag = ({ item, getSchema }) => {\n if (!item || !getSchema) return null;\n const data = getSchema({ item });\n const dataJSON = JSON.stringify(data);\n return (\n <script key={item.id} type=\"application/ld+json\">\n {dataJSON}\n </script>\n );\n};\ncreateSchemaTag.propTypes = {\n getSchema: PropTypes.func.isRequired,\n item: PropTypes.shape({}).isRequired,\n};\n","/* eslint-disable import/prefer-default-export */\n\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\nimport _ from 'lodash';\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _.isEqual);\nconst selectArticleStructuredDataSchema = state => state.article.structuredDataSchema;\n\nexport const makeSelectFoxNowFAQSchema = createDeepEqualSelector(\n selectArticleStructuredDataSchema,\n foxNowAppFAQPage => foxNowAppFAQPage,\n);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\n\nimport Article from 'components/Article';\nimport BreadcrumbsComponent, { breadcrumbsArticleDetailParser } from 'components/Breadcrumbs';\nimport { fetchArticle, fetchFoxNowFAQSchema } from 'components/Article/ArticleActions';\nimport { getArticleApiUrl } from 'components/Article/ArticleHelpers';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { createFoxNowAppFAQSchema } from 'helpers/SchemaHelper';\nimport { getErrorComponent, isFoxNowAppPage } from 'helpers/ContentHelper';\nimport { makeSelectFoxNowFAQSchema } from 'components/Article/selectors';\nimport style from './ArticleDetail.css';\nimport breadcrumbsTheme from './Breadcrumbs.css';\n\nconst defaultState = {\n errors: null,\n};\n\nclass ArticleDetail extends Component {\n constructor(props) {\n super(props);\n this.state = defaultState;\n }\n\n componentDidMount() {\n const {\n fetchFoxNowFAQSchema,\n params: { articleId },\n } = this.props;\n if (isFoxNowAppPage(articleId)) fetchFoxNowFAQSchema();\n }\n\n UNSAFE_componentWillUpdate(nextProps) {\n const {\n params: { articleId },\n } = this.props;\n const {\n params: { articleId: nextArticleId },\n } = nextProps;\n if (articleId !== nextArticleId) {\n this.setState(defaultState);\n }\n }\n\n setErrors = errors => {\n this.setState({ errors });\n };\n\n render() {\n const {\n params,\n accessToken,\n deviceId,\n pageViewEvent,\n setLoading,\n foxNowFAQSchema: { foxNowAppFAQPage },\n panels,\n } = this.props;\n const { articleId } = params;\n const { errors } = this.state;\n if (errors) return getErrorComponent(errors);\n if (!articleId) return null;\n const articleUrl = getArticleApiUrl(articleId);\n const articleData = _.get(panels, 'member.0.items.member.0', null);\n return (\n <div className={style.screen}>\n {isFoxNowAppPage(articleId) &&\n setHelmetTags({\n tags: [createFoxNowAppFAQSchema(foxNowAppFAQPage)],\n })}\n <div className={style.article}>\n <Article\n url={articleUrl}\n accessToken={accessToken}\n deviceId={deviceId}\n pageViewEvent={pageViewEvent}\n setErrors={this.setErrors}\n setLoading={setLoading}\n />\n </div>\n <BreadcrumbsComponent\n data={breadcrumbsArticleDetailParser(articleData, params)}\n theme={breadcrumbsTheme}\n />\n </div>\n );\n }\n}\n\nArticleDetail.fetchData = ({ store, params, accessToken }) => {\n const { articleId } = params;\n const articleUrl = getArticleApiUrl(articleId);\n return store\n .dispatch(fetchArticle(articleUrl, accessToken))\n .then(() => isFoxNowAppPage(articleId) && store.dispatch(fetchFoxNowFAQSchema()));\n};\n\nfunction mapStateToProps(state) {\n return {\n panels: state.article.panels,\n foxNowFAQSchema: makeSelectFoxNowFAQSchema(state),\n };\n}\n\nArticleDetail.defaultProps = {\n accessToken: null,\n deviceId: null,\n panels: null,\n setLoading: null,\n};\n\nArticleDetail.propTypes = {\n accessToken: PropTypes.string,\n deviceId: PropTypes.string,\n fetchFoxNowFAQSchema: PropTypes.func,\n foxNowFAQSchema: PropTypes.shape({}),\n pageViewEvent: PropTypes.func.isRequired,\n panels: PropTypes.shape({}),\n params: PropTypes.shape({\n articleId: PropTypes.string,\n }).isRequired,\n setLoading: PropTypes.func,\n};\n\nexport default connect(mapStateToProps, { fetchFoxNowFAQSchema })(ArticleDetail);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../Debug.module.scss';\n\nconst BlackoutPanel = (props = {}) => {\n const { handleSetBlackoutFetchInterval, blackoutFetchDuration } = props;\n\n return (\n <div className={style.panel}>\n <div className={style.header}>Blackout</div>\n <div className={style.body}>\n <div className={style.formLabel}>Blackout Fetch Duration (milliseconds)</div>\n <div>\n <input\n type=\"text\"\n value={blackoutFetchDuration || ''}\n onChange={handleSetBlackoutFetchInterval}\n />\n </div>\n </div>\n </div>\n );\n};\n\nBlackoutPanel.propTypes = {\n blackoutFetchDuration: PropTypes.number,\n handleSetBlackoutFetchInterval: PropTypes.func.isRequired,\n};\n\nexport default BlackoutPanel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../Debug.module.scss';\n\nconst AuthClientless = (props = {}) => {\n const {\n clientlessTokenExpireRefresh,\n handleSetClientlessTokenExpireRefresh,\n clientlessRecurringPreAuthZRefresh,\n handleSetClientlessRecurringPreAuthZRefresh,\n } = props;\n\n return (\n <div className={style.panel}>\n <div className={style.header}>Clientless Auth</div>\n\n <div className={style.body}>\n <div className={style.formGroup}>\n <div className={style.formLabel}>\n Token Expiration Refresh Duration (milliseconds, 10000 for example)\n </div>\n <div className={style.formInput}>\n <input\n type=\"text\"\n value={clientlessTokenExpireRefresh || ''}\n onChange={handleSetClientlessTokenExpireRefresh}\n />\n </div>\n </div>\n\n <div className={style.formGroup}>\n <div className={style.formLabel}>\n Recurring Pre AuthZ Refresh (milliseconds, 10000 for example)\n </div>\n <div className={style.formInput}>\n <input\n type=\"text\"\n value={clientlessRecurringPreAuthZRefresh || ''}\n onChange={handleSetClientlessRecurringPreAuthZRefresh}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nAuthClientless.defaultProps = {\n clientlessTokenExpireRefresh: null,\n clientlessRecurringPreAuthZRefresh: null,\n};\n\nAuthClientless.propTypes = {\n clientlessTokenExpireRefresh: PropTypes.number,\n clientlessRecurringPreAuthZRefresh: PropTypes.number,\n handleSetClientlessTokenExpireRefresh: PropTypes.func.isRequired,\n handleSetClientlessRecurringPreAuthZRefresh: PropTypes.func.isRequired,\n};\n\nexport default AuthClientless;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../Debug.module.scss';\n\nconst ResetPanel = (props = {}) => {\n const { handleResetClick } = props;\n\n return (\n <div className={style.panel}>\n <div className={style.header}>Reset Settings</div>\n <div className={style.body}>\n <div className={style.formLabel}>This will reset all values set using the debug panel.</div>\n <button onClick={handleResetClick} type=\"button\">\n Reset All Values\n </button>\n </div>\n </div>\n );\n};\n\nResetPanel.propTypes = {\n handleResetClick: PropTypes.func.isRequired,\n};\n\nexport default ResetPanel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport style from '../Debug.module.scss';\n\nconst LiveStreamPanel = (props = {}) => {\n const {\n handleSetCdnMapping,\n handleSetVideoOrigin,\n handleToggleLiveStream,\n playerConfig,\n selectedCdnMapping,\n selectedTimeout,\n selectedVideoOrigin,\n } = props;\n const debugCdnMapping = _.get(playerConfig, 'debug_cdn_mapping');\n const debugVideoStackMapping = _.get(playerConfig, 'debug_videostack_mapping');\n const generateOptions = ({ list, selected }) =>\n _.map(list, (key, value) => (\n <option value={key} selected={selected === key}>\n {value}\n </option>\n ));\n\n return (\n <div className={style.panel}>\n <ul className={style.livestreamContainer}>\n <li>\n <div className={style.header}>Live Stream</div>\n <div className={style.body}>\n <div className={style.formLabel}>Disable Livestream Timeout?</div>\n <div>\n <select onChange={handleToggleLiveStream}>\n <option />\n <option value=\"YES\" selected={selectedTimeout === 'YES'}>\n YES\n </option>\n <option value=\"NO\" selected={selectedTimeout === 'NO'}>\n NO\n </option>\n </select>\n </div>\n </div>\n </li>\n <li>\n <div className={style.header}>Video CDN</div>\n <div className={style.body}>\n <div className={style.formLabel}>CDN parameter: {selectedCdnMapping}</div>\n <div>\n <select onChange={handleSetCdnMapping}>\n <option value={null} selected={!selectedCdnMapping} />\n {generateOptions({ list: debugCdnMapping, selected: selectedCdnMapping })}\n </select>\n </div>\n </div>\n </li>\n <li>\n <div className={style.header}>Video Origin</div>\n <div className={style.body}>\n <div className={style.formLabel}>assetTypes parameter: {selectedVideoOrigin}</div>\n <div>\n <select onChange={handleSetVideoOrigin}>\n <option value={null} selected={!selectedVideoOrigin} />\n {generateOptions({ list: debugVideoStackMapping, selected: selectedVideoOrigin })}\n </select>\n </div>\n </div>\n </li>\n </ul>\n </div>\n );\n};\n\nLiveStreamPanel.defaultProps = {\n playerConfig: null,\n selectedCdnMapping: null,\n selectedTimeout: 'NO',\n selectedVideoOrigin: null,\n};\n\nLiveStreamPanel.propTypes = {\n handleSetCdnMapping: PropTypes.func.isRequired,\n handleSetVideoOrigin: PropTypes.func.isRequired,\n handleToggleLiveStream: PropTypes.func.isRequired,\n playerConfig: PropTypes.shape({}),\n selectedCdnMapping: PropTypes.string,\n selectedTimeout: PropTypes.string,\n selectedVideoOrigin: PropTypes.string,\n};\n\nexport default LiveStreamPanel;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport _ from 'lodash';\nimport style from '../Debug.module.scss';\n\nclass LocationSettingsPanel extends Component {\n constructor(props) {\n super(props);\n this.state = {\n searchText: '',\n };\n }\n\n handleSearchInput = e => {\n const searchText = e.target.value;\n this.setState({ searchText });\n };\n\n filterCities(searchText) {\n const { cities, handleSelect } = this.props;\n if (!searchText || searchText === '' || !cities) return null;\n\n const results = _.filter(\n cities,\n city => !!_.find(city, item => _.includes(_.toLower(item.toString()), _.toLower(searchText))),\n );\n\n return _.map(results, city => {\n const { dmaName, callSign, dmaCode, zipCode } = city;\n return (\n <div className={style.locationResults}>\n <Link\n onClick={() => {\n handleSelect(dmaName);\n }}\n >\n {dmaName} ({callSign}/{dmaCode}/{zipCode})\n </Link>\n </div>\n );\n });\n }\n\n render() {\n const { handleSetLocationCookieDuration, locationCookieDuration, selectedCity } = this.props;\n const { searchText } = this.state;\n const results = this.filterCities(searchText);\n\n return (\n <div className={style.panel}>\n <div className={style.header}>Location Settings</div>\n <div className={style.body}>\n <div className={style.formGroup}>\n <div className={style.formLabel}>Location Cookie Duration In Days:</div>\n <div className={style.formInput}>\n <input\n type=\"text\"\n value={locationCookieDuration}\n onChange={handleSetLocationCookieDuration}\n />\n </div>\n </div>\n <div className={style.formLabel}>Current City: {selectedCity || 'Not Set'}</div>\n <div className={style.formLabel}>Search for a city:</div>\n <input\n className={style.locationInput}\n type=\"text\"\n value={searchText}\n onChange={this.handleSearchInput}\n />\n {results && (\n <div>\n <div className={style.formLabel}>Select a City:</div>\n {results}\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n\nLocationSettingsPanel.defaultProps = {\n cities: null,\n selectedCity: null,\n};\n\nLocationSettingsPanel.propTypes = {\n cities: PropTypes.shape({\n dmaName: PropTypes.string,\n callSign: PropTypes.string,\n dmaCode: PropTypes.string,\n zipCode: PropTypes.string,\n }),\n handleSelect: PropTypes.func.isRequired,\n handleSetLocationCookieDuration: PropTypes.func.isRequired,\n locationCookieDuration: PropTypes.number,\n selectedCity: PropTypes.string,\n};\n\nexport default LocationSettingsPanel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../Debug.module.scss';\n\nconst AdPanel = (props = {}) => {\n const { currentAdDebug, currentSiteSection, handleSetAd, handleSetAdSiteSection } = props;\n\n return (\n <div className={style.panel}>\n <div className={style.header}>Ad Debug</div>\n <div className={style.body}>\n <form onSubmit={handleSetAd}>\n <div className={style.formLabel}>ad._debug={currentAdDebug}</div>\n <div>\n <input type=\"text\" defaultValue={currentAdDebug} name=\"debugValue\" id=\"debugValue\" />{' '}\n <button type=\"submit\">Set Param</button>\n </div>\n </form>\n </div>\n <div className={style.header}>Ad Site Section</div>\n <div className={style.body}>\n <form onSubmit={handleSetAdSiteSection}>\n <div className={style.formLabel}>ad.sitesection={currentSiteSection}</div>\n <div>\n <input\n type=\"text\"\n defaultValue={currentSiteSection}\n name=\"siteSectionValue\"\n id=\"siteSectionValue\"\n />{' '}\n <button type=\"submit\">Set Param</button>\n </div>\n </form>\n </div>\n </div>\n );\n};\n\nexport default AdPanel;\n\nAdPanel.defaultProps = {\n currentAdDebug: '',\n currentSiteSection: '',\n handleSetAd: () => {},\n handleSetAdSiteSection: () => {},\n};\n\nAdPanel.propTypes = {\n currentAdDebug: PropTypes.string,\n currentSiteSection: PropTypes.string,\n handleSetAd: PropTypes.func,\n handleSetAdSiteSection: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport style from '../Debug.module.scss';\n\nconst warnings = {\n Tomato:\n 'Please note: Testing with the tomato screens baseUrl will also enable clientless APIs during this test',\n};\n\nconst ApiPanel = (props = {}) => {\n const { baseUrls, currentBaseUrl, handleSetApiBaseUrl } = props;\n\n const baseUrlOptions = _.map(baseUrls, (key, value) => (\n <option value={value} key={key} selected={currentBaseUrl === value}>\n {value}\n </option>\n ));\n const baseUrlValue = _.get(baseUrls, currentBaseUrl);\n const warning = _.get(warnings, currentBaseUrl);\n const warningComp = warning && <div className={style.formWarning}>{warning}</div>;\n return (\n <div className={style.panel}>\n <div className={style.header}>Content API</div>\n <div className={style.body}>\n <div className={style.formLabel}>Base url: {baseUrlValue}</div>\n {warningComp}\n <div>\n <select onChange={handleSetApiBaseUrl}>\n <option value={null} selected={!currentBaseUrl} />\n {baseUrlOptions}\n </select>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ApiPanel;\n\nApiPanel.defaultProps = {\n baseUrls: null,\n currentBaseUrl: null,\n handleSetApiBaseUrl: () => {},\n};\n\nApiPanel.propTypes = {\n baseUrls: PropTypes.shape({}),\n currentBaseUrl: PropTypes.string,\n handleSetApiBaseUrl: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../Debug.module.scss';\n\nconst UserPanel = (props = {}) => {\n const { handleUserData, segmentDeviceId, userData } = props;\n const { deviceId } = userData;\n return (\n <div className={style.panel}>\n <div className={style.header}>Device ID</div>\n <div className={style.formLabel}>Original: {segmentDeviceId}</div>\n <div className={style.formLabel}>Override: {deviceId}</div>\n <div className={style.body}>\n <form onSubmit={handleUserData}>\n <div>\n <input type=\"text\" defaultValue={deviceId} name=\"deviceId\" id=\"deviceId\" />\n <button type=\"submit\">Set Param</button>\n </div>\n </form>\n </div>\n </div>\n );\n};\n\nexport default UserPanel;\n\nUserPanel.defaultProps = {\n handleUserData: () => {},\n segmentDeviceId: null,\n userData: {},\n};\n\nUserPanel.propTypes = {\n handleUserData: PropTypes.func,\n segmentDeviceId: PropTypes.string,\n userData: PropTypes.shape({}),\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { addDays, format, FORMAT_MONTH_DAY_YEAR, isAfter } from 'helpers/DateTimeHelper';\nimport { setCookie } from 'helpers/Storage';\nimport { getFormattedDomain } from 'helpers/ConfigHelper';\n\nimport Style from '../../FeatureFlag.module.scss';\n\nconst Card = ({\n brand,\n checked,\n dateAdded,\n description,\n flagName,\n jiraTicketNumber,\n name,\n nickname,\n permanent,\n}) => {\n const [toggled, setToggle] = useState(checked);\n const dateModified = new Date(dateAdded);\n const isExpired = isAfter(addDays(new Date(), -30), dateModified) && !permanent;\n const formattedDomain = getFormattedDomain();\n\n const handleToggleFeatureFlag = value => {\n setToggle(value);\n const options = { domain: formattedDomain, path: '/' };\n setCookie({ name: flagName, value, options });\n };\n\n return (\n <div className={Style.card}>\n <div className={Style.main}>\n <div className={Style.iconWrapper}>\n <div className={classNames([Style.abbrev, Style[brand]])}>\n <span>{nickname}</span>\n </div>\n </div>\n <div className={Style.content}>\n <div className={Style.name} role=\"heading\" aria-level=\"3\">\n {name}\n </div>\n <div className={Style.description}>{description}</div>\n </div>\n </div>\n <div className={Style.actionBar}>\n <div className={classNames([Style.dateAdded, isExpired ? Style.expired : null])}>\n <div>{`Last updated: ${format(dateModified, FORMAT_MONTH_DAY_YEAR)}`}</div>\n </div>\n <a\n className={Style.ticket}\n href={`https://foxjira.praecipio.com/browse/${jiraTicketNumber}`}\n target=\"_new\"\n >\n Feature details\n </a>\n <label className={Style.switch}>\n <input\n type=\"checkbox\"\n checked={toggled}\n onChange={() => handleToggleFeatureFlag(!toggled)}\n />\n <span className={classNames([Style.slider, Style.round])} />\n </label>\n </div>\n </div>\n );\n};\n\nCard.propTypes = {\n brand: PropTypes.string.isRequired,\n checked: PropTypes.bool,\n dateAdded: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n flagName: PropTypes.string.isRequired,\n jiraTicketNumber: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n nickname: PropTypes.string.isRequired,\n permanent: PropTypes.bool.isRequired,\n};\n\nCard.defaultProps = {\n checked: false,\n};\n\nexport default Card;\n","import {\n autoplayEnabled,\n blackoutEnabled,\n ccpaOptOutEnabled,\n currentPosterHoverEnabled,\n isConsolidatedLogin,\n isEpgLiveMiniPlayerEnabled,\n isEpgSearchEnabled,\n isEpgv2Enabled,\n isSSARedirect,\n liveTileCollectionV2Enabled,\n marineAPIKeyEnabled,\n mvpdDeeplinkEnabled,\n previewModeEnabled,\n previewPass60MinDisabled,\n previewPassEnabled,\n secondScreenProfileEnabled,\n seriesAnonymousEnabled,\n seriesV2Enabled,\n simplifiedPosterHoverEnabled,\n strikeBannerEnabled,\n} from 'helpers/ConfigHelper';\nimport {\n DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_CURRENT_HOVER,\n DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_SIMPLIFIED_HOVER,\n DEBUG_PANEL_FLAG_BLACKOUT,\n DEBUG_PANEL_FLAG_CCPA_OPT_OUT,\n DEBUG_PANEL_FLAG_CONSOLIDATED_SIGNIN,\n DEBUG_PANEL_FLAG_EPG_MINI_PLAYER,\n DEBUG_PANEL_FLAG_EPG_SEARCH,\n DEBUG_PANEL_FLAG_EPGV2,\n DEBUG_PANEL_FLAG_GLOBAL_PLAYER_AUTOPLAY,\n DEBUG_PANEL_FLAG_MVPD_DEEPLINK,\n DEBUG_PANEL_FLAG_PREVIEW_MODE,\n DEBUG_PANEL_FLAG_PREVIEW_PASS_60_MIN,\n DEBUG_PANEL_FLAG_PREVIEW_PASS,\n DEBUG_PANEL_FLAG_SECOND_SCREEN_PROFILE,\n DEBUG_PANEL_FLAG_SERIES_ANONYMOUS,\n DEBUG_PANEL_FLAG_SERIES_V2,\n DEBUG_PANEL_FLAG_SSA_REDIRECT,\n DEBUG_PANEL_FLAG_STRIKE_BANNER,\n DEBUG_PANEL_FLAG_TILE_LIVE_TILE_V2,\n DEBUG_PANEL_FLAG_USE_MARINE_API_KEY,\n} from 'helpers/ContentHelper';\n\nconst FlagMap = [\n {\n name: 'Blackout',\n nickname: 'BO',\n description: 'Simulates a blackout for an MVPD dropping support for fox',\n dateAdded: '2021, 5, 3',\n jiraTicketNumber: 'CPEWEB-3240',\n checked: blackoutEnabled(),\n flagName: DEBUG_PANEL_FLAG_BLACKOUT,\n permanent: false,\n brand: 'both',\n },\n {\n name: 'Preview Pass',\n nickname: 'PP',\n description: 'Controls wether the site will utilize Preview Pass for Gated Content',\n dateAdded: '2021, 5, 3',\n jiraTicketNumber: 'CPEWEB-3240',\n checked: previewPassEnabled(),\n flagName: DEBUG_PANEL_FLAG_PREVIEW_PASS,\n permanent: true,\n brand: 'both',\n },\n {\n name: 'Preview Pass: 60 Min Disable',\n nickname: 'PP5M',\n description:\n 'Disables 60 minute preview pass so 5 minute preview pass can be utilized for shorter testing',\n dateAdded: '2021, 3, 4',\n jiraTicketNumber: 'CPEWEB-2908',\n checked: previewPass60MinDisabled(),\n flagName: DEBUG_PANEL_FLAG_PREVIEW_PASS_60_MIN,\n permanent: true,\n brand: 'both',\n },\n {\n name: 'MVPD Deeplink',\n nickname: 'MVPD',\n description: 'Creates a Deep Link URL that can be linked to by marketing for MVPD Login',\n dateAdded: '2019, 1, 30',\n jiraTicketNumber: 'DCGWEB-5514',\n checked: mvpdDeeplinkEnabled(),\n flagName: DEBUG_PANEL_FLAG_MVPD_DEEPLINK,\n permanent: false,\n brand: 'fox',\n },\n {\n name: 'Autoplay',\n nickname: 'AP',\n description: 'Toggles the autoplay feature on Global Video Player',\n dateAdded: '2021, 5, 3',\n jiraTicketNumber: 'CPEWEB-3240',\n checked: autoplayEnabled(),\n flagName: DEBUG_PANEL_FLAG_GLOBAL_PLAYER_AUTOPLAY,\n permanent: true,\n brand: 'both',\n },\n {\n name: 'Use Marine API Key',\n nickname: 'MAP',\n description:\n 'Allows API calls to be routed using the Marine API Key instead of the Environments Key',\n dateAdded: '2021, 5, 3',\n jiraTicketNumber: 'CPEWEB-3240',\n checked: marineAPIKeyEnabled(),\n flagName: DEBUG_PANEL_FLAG_USE_MARINE_API_KEY,\n permanent: true,\n brand: 'both',\n },\n {\n name: 'Preview Mode',\n nickname: 'PM',\n description:\n 'As a DPP user (content programmer), i want to be able to publish content in a \"preview\" state and see what it looks like in client applications before i publish the content to be \"live\".',\n dateAdded: '2019, 7, 24',\n jiraTicketNumber: 'DCGWEB-6929',\n checked: previewModeEnabled(),\n flagName: DEBUG_PANEL_FLAG_PREVIEW_MODE,\n permanent: true,\n brand: 'both',\n },\n {\n name: 'Series Detail Anonymous',\n nickname: 'SDA',\n description:\n 'Series Pages to drive subscription conversion for Nation by providing a more engaging content experience around the selected Show/Personality.',\n dateAdded: '2021, 5, 3',\n jiraTicketNumber: 'CPEWEB-183',\n checked: seriesAnonymousEnabled(),\n flagName: DEBUG_PANEL_FLAG_SERIES_ANONYMOUS,\n permanent: false,\n brand: 'nation',\n },\n {\n name: 'Series Detail V2',\n nickname: 'SDV2',\n description: 'Create a more meaningful Series destination for users',\n dateAdded: '2020, 4, 30',\n jiraTicketNumber: 'CPEWEB-1083',\n checked: seriesV2Enabled(),\n flagName: DEBUG_PANEL_FLAG_SERIES_V2,\n permanent: false,\n brand: 'fox',\n },\n {\n name: 'EPG v2',\n nickname: 'EPG2',\n description: 'Redesign for the Electronic Programming Guide (EPG) for Fox.com.',\n dateAdded: '2021, 1, 8',\n jiraTicketNumber: 'CPEWEB-2399',\n checked: isEpgv2Enabled(),\n flagName: DEBUG_PANEL_FLAG_EPGV2,\n permanent: false,\n brand: 'fox',\n },\n {\n name: 'EPG Search Enabled',\n nickname: 'EPGS',\n description: 'Enables Search Functionality for EPG Listings',\n dateAdded: '2021, 1, 8',\n jiraTicketNumber: 'CPEWEB-2399',\n checked: isEpgSearchEnabled(),\n flagName: DEBUG_PANEL_FLAG_EPG_SEARCH,\n permanent: false,\n brand: 'fox',\n },\n {\n name: 'EPG Mini Player Enabled',\n nickname: 'MP',\n description: 'Enables Miniplayer on EPG page on user scroll or initiation',\n dateAdded: '2021, 5, 3',\n jiraTicketNumber: 'CPEWEB-2912',\n checked: isEpgLiveMiniPlayerEnabled(),\n flagName: DEBUG_PANEL_FLAG_EPG_MINI_PLAYER,\n permanent: false,\n brand: 'fox',\n },\n {\n name: 'Live Tile V2',\n nickname: 'LTV2',\n description: 'Enables new designs on Live Tiles with the circle station icons',\n dateAdded: '2020, 2, 5',\n jiraTicketNumber: 'CPEWEB-750',\n checked: liveTileCollectionV2Enabled(),\n flagName: DEBUG_PANEL_FLAG_TILE_LIVE_TILE_V2,\n permanent: false,\n brand: 'fox',\n },\n {\n name: 'Additional Poster Current Hover',\n nickname: 'APCH',\n description:\n 'Nation stakeholders want the ability to display more content per page/fold on Web. To accomplish that, the main requirement is to reduce Poster size and include additional item.',\n dateAdded: '2020, 4, 17',\n jiraTicketNumber: 'CPEWEB-1090',\n checked: currentPosterHoverEnabled(),\n flagName: DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_CURRENT_HOVER,\n permanent: false,\n brand: 'nation',\n },\n {\n name: 'Additional Poster Simplified Hover',\n nickname: 'APSH',\n description:\n 'Nation stakeholders want the ability to display more content per page/fold on Web. To accomplish that, the main requirement is to reduce Poster size and include additional item.',\n dateAdded: '2020, 4, 17',\n jiraTicketNumber: 'CPEWEB-1090',\n checked: simplifiedPosterHoverEnabled(),\n flagName: DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_SIMPLIFIED_HOVER,\n permanent: false,\n brand: 'nation',\n },\n {\n name: 'CCPA Opt Out Toggle',\n nickname: 'CCPA',\n description: 'Enables the CCPA Opt out page',\n dateAdded: '2020, 4, 13',\n jiraTicketNumber: 'CPEWEB-1013',\n checked: ccpaOptOutEnabled(),\n flagName: DEBUG_PANEL_FLAG_CCPA_OPT_OUT,\n permanent: false,\n brand: 'both',\n },\n {\n name: 'Second Screen Profile',\n nickname: 'SSP',\n description:\n 'Enable a way for a user logging into a Connected TV Device to log in using the website',\n dateAdded: '2020, 5, 26',\n jiraTicketNumber: 'CPEWEB-1220',\n checked: secondScreenProfileEnabled(),\n flagName: DEBUG_PANEL_FLAG_SECOND_SCREEN_PROFILE,\n permanent: false,\n brand: 'both',\n },\n {\n name: 'Strike Banner',\n nickname: 'SB',\n description: 'Displays Ads on Web using Strike Platform',\n dateAdded: '2020, 6, 18',\n jiraTicketNumber: 'CPEWEB-1591',\n checked: strikeBannerEnabled(),\n flagName: DEBUG_PANEL_FLAG_STRIKE_BANNER,\n permanent: true,\n brand: 'fox',\n },\n {\n name: 'Consolidated Login Flow',\n nickname: 'CSF',\n description: 'Enables the Consolidated Login Flow for Authentication',\n dateAdded: '2021, 9, 16',\n jiraTicketNumber: 'CPEWEB-3923',\n checked: isConsolidatedLogin(),\n flagName: DEBUG_PANEL_FLAG_CONSOLIDATED_SIGNIN,\n permanent: true,\n brand: 'fox',\n },\n {\n name: 'SSA Activate Redirect Url',\n nickname: 'CSF',\n description: 'Switches SSA Redirect URL to new SSA',\n dateAdded: '2021, 9, 16',\n jiraTicketNumber: 'CPEWEB-3934',\n checked: isSSARedirect(),\n flagName: DEBUG_PANEL_FLAG_SSA_REDIRECT,\n permanent: false,\n brand: 'fox',\n },\n];\n\nexport default FlagMap;\n","import React from 'react';\nimport style from './FeatureFlag.module.scss';\nimport Card from './components/Card';\nimport FlagMap from './FlagMap';\n\nconst FeatureFlag = () => (\n <div className={style.featureFlags}>\n {FlagMap.map(flag => (\n <Card key={flag.name} {...flag} />\n ))}\n </div>\n);\n\nexport default FeatureFlag;\n","import React from 'react';\nimport style from '../Debug.module.scss';\n\nclass ErrorPanel extends React.Component {\n render() {\n return (\n <div className={style.panel}>\n <div className={style.header}>Errors</div>\n <div className={style.body}>\n <div className={style.formLabel}>This will throw an unhandled error.</div>\n <button\n onClick={() => {\n this.setState(() => {\n throw new Error('User initiated error from the debug panel');\n });\n }}\n type=\"button\"\n >\n Throw an Error\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default ErrorPanel;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { setCookie, removeCookie, getCookie } from 'helpers/Storage';\nimport {\n API_BASEURL_OVERRIDE,\n DEBUG_PANEL_AD_DEBUG,\n DEBUG_PANEL_AD_SITE_SECTION,\n DEBUG_PANEL_API_BASEURL,\n DEBUG_PANEL_BLACKOUT_FETCH_INTERVAL,\n DEBUG_PANEL_CITY_LAT,\n DEBUG_PANEL_CITY_LONG,\n DEBUG_PANEL_CITY,\n DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH,\n DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH,\n DEBUG_PANEL_DESIGN_VERSION,\n DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_CURRENT_HOVER,\n DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_SIMPLIFIED_HOVER,\n DEBUG_PANEL_FLAG_BLACKOUT,\n DEBUG_PANEL_FLAG_BUYTHROUGH_EXTERNAL_SIGNUP_LOGIN,\n DEBUG_PANEL_FLAG_EPGV2,\n DEBUG_PANEL_FLAG_EPG_MINI_PLAYER,\n DEBUG_PANEL_FLAG_EPG_SEARCH,\n DEBUG_PANEL_FLAG_GLOBAL_PLAYER_AUTOPLAY,\n DEBUG_PANEL_FLAG_GLOBAL_PLAYER,\n DEBUG_PANEL_FLAG_HERO_CAROUSEL,\n DEBUG_PANEL_FLAG_MVPD_DEEPLINK,\n DEBUG_PANEL_FLAG_PREVIEW_MODE,\n DEBUG_PANEL_FLAG_PREVIEW_PASS,\n DEBUG_PANEL_FLAG_PREVIEW_PASS_60_MIN,\n DEBUG_PANEL_FLAG_SECOND_SCREEN_PROFILE,\n DEBUG_PANEL_FLAG_SERIES_ANONYMOUS,\n DEBUG_PANEL_FLAG_SERIES_V2,\n DEBUG_PANEL_FLAG_SSA_REDIRECT,\n DEBUG_PANEL_FLAG_STRIKE_BANNER,\n DEBUG_PANEL_FLAG_TILE_LIVE_TILE_V2,\n DEBUG_PANEL_FLAG_CCPA_OPT_OUT,\n DEBUG_PANEL_FLAG_USE_MARINE_API_KEY,\n DEBUG_PANEL_LOCATION_COOKIE_DURATION,\n DEBUG_PANEL_TIMEOUT_DISABLED,\n DEBUG_PANEL_USER,\n DEBUG_PANEL_VIDEO_CDN,\n DEBUG_PANEL_VIDEO_ORIGIN,\n} from 'helpers/ContentHelper';\nimport { removeAccountCookie, removeAnonymousAccountCookie } from 'helpers/Account';\nimport {\n blackoutDurationOverride,\n getFormattedDomain,\n getLocationCookieDuration,\n setDebugCookie,\n} from 'helpers/ConfigHelper';\nimport { fetchDmaOverrides, fetchPlayerConfig } from './DebugActions';\nimport BlackoutPanel from './panels/BlackoutPanel';\nimport AuthClientlessPanel from './panels/AuthClientlessPanel';\nimport ResetPanel from './panels/ResetPanel';\nimport LiveStreamPanel from './panels/LiveSteamPanel';\nimport LocationSettingsPanelComponent from './panels/LocationSettingsPanel';\nimport AdPanel from './panels/AdPanel';\nimport ApiPanel from './panels/ApiPanel';\nimport UserPanel from './panels/UserPanel';\nimport FeatureFlag from './panels/FeatureFlag';\nimport ErrorPanel from './panels/ErrorPanel';\nimport style from './Debug.module.scss';\n\nclass DebugScreen extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n adDebug: null,\n adSiteSection: null,\n apiBaseUrl: null,\n cdnMapping: null,\n cookieKeys: [\n API_BASEURL_OVERRIDE,\n DEBUG_PANEL_AD_DEBUG,\n DEBUG_PANEL_AD_SITE_SECTION,\n DEBUG_PANEL_API_BASEURL,\n DEBUG_PANEL_BLACKOUT_FETCH_INTERVAL,\n DEBUG_PANEL_CITY_LAT,\n DEBUG_PANEL_CITY_LONG,\n DEBUG_PANEL_CITY,\n DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH,\n DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH,\n DEBUG_PANEL_DESIGN_VERSION,\n DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_CURRENT_HOVER,\n DEBUG_PANEL_FLAG_ADDITIONAL_POSTER_SIMPLIFIED_HOVER,\n DEBUG_PANEL_FLAG_BLACKOUT,\n DEBUG_PANEL_FLAG_BUYTHROUGH_EXTERNAL_SIGNUP_LOGIN,\n DEBUG_PANEL_FLAG_CCPA_OPT_OUT,\n DEBUG_PANEL_FLAG_EPG_MINI_PLAYER,\n DEBUG_PANEL_FLAG_EPG_SEARCH,\n DEBUG_PANEL_FLAG_EPGV2,\n DEBUG_PANEL_FLAG_GLOBAL_PLAYER_AUTOPLAY,\n DEBUG_PANEL_FLAG_GLOBAL_PLAYER,\n DEBUG_PANEL_FLAG_HERO_CAROUSEL,\n DEBUG_PANEL_FLAG_MVPD_DEEPLINK,\n DEBUG_PANEL_FLAG_PREVIEW_MODE,\n DEBUG_PANEL_FLAG_PREVIEW_PASS_60_MIN,\n DEBUG_PANEL_FLAG_PREVIEW_PASS,\n DEBUG_PANEL_FLAG_SECOND_SCREEN_PROFILE,\n DEBUG_PANEL_FLAG_SERIES_ANONYMOUS,\n DEBUG_PANEL_FLAG_SERIES_V2,\n DEBUG_PANEL_FLAG_SSA_REDIRECT,\n DEBUG_PANEL_FLAG_STRIKE_BANNER,\n DEBUG_PANEL_FLAG_TILE_LIVE_TILE_V2,\n DEBUG_PANEL_FLAG_USE_MARINE_API_KEY,\n DEBUG_PANEL_LOCATION_COOKIE_DURATION,\n DEBUG_PANEL_TIMEOUT_DISABLED,\n DEBUG_PANEL_USER,\n DEBUG_PANEL_VIDEO_CDN,\n DEBUG_PANEL_VIDEO_ORIGIN,\n ],\n domain: null,\n selectedCity: null,\n selectedTimeout: null,\n videoOrigin: null,\n };\n }\n\n componentDidMount() {\n const { fetchDmaOverrides, fetchPlayerConfig } = this.props;\n const adDebug = getCookie({ name: DEBUG_PANEL_AD_DEBUG });\n const adSiteSection = getCookie({ name: DEBUG_PANEL_AD_SITE_SECTION });\n const apiBaseUrl = getCookie({ name: DEBUG_PANEL_API_BASEURL });\n const blackoutFetchDuration = blackoutDurationOverride();\n const cdnMapping = getCookie({ name: DEBUG_PANEL_VIDEO_CDN });\n const videoOrigin = getCookie({ name: DEBUG_PANEL_VIDEO_ORIGIN });\n const clientlessTokenExpireRefresh = getCookie({\n name: DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH,\n });\n const clientlessRecurringPreAuthZRefresh = getCookie({\n name: DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH,\n });\n const formattedDomain = getFormattedDomain();\n const locationCookieDurationMS = getLocationCookieDuration();\n const locationCookieDuration = locationCookieDurationMS / 3600 / 1000 / 24;\n const selectedCity = getCookie({ name: DEBUG_PANEL_CITY });\n const selectedTimeout = getCookie({ name: DEBUG_PANEL_TIMEOUT_DISABLED });\n const userData = getCookie({ name: DEBUG_PANEL_USER });\n\n this.setState({\n adDebug,\n adSiteSection,\n apiBaseUrl,\n blackoutFetchDuration,\n cdnMapping,\n clientlessRecurringPreAuthZRefresh,\n clientlessTokenExpireRefresh,\n domain: formattedDomain,\n locationCookieDuration,\n selectedCity,\n selectedTimeout,\n userData: userData || {},\n videoOrigin,\n });\n const route = _.get(window.ExternalConfig, 'debug.dmaOverrides');\n const playerConfigRoute = _.get(window.ExternalConfig, 'debug.playerConfig');\n if (playerConfigRoute) fetchPlayerConfig(playerConfigRoute);\n if (route) fetchDmaOverrides(route);\n }\n\n /**\n * Handles resetting everything.\n *\n */\n handleResetBtnClicked = () => {\n const { setCoordinates } = this.props;\n const { cookieKeys, domain } = this.state;\n const options = { domain, path: '/' };\n setCoordinates(null);\n this.setState(\n {\n adDebug: null,\n adSiteSection: null,\n apiBaseUrl: null,\n blackoutFetchDuration: null,\n cdnMapping: null,\n clientlessTokenExpireRefresh: null,\n locationCookieDuration: '',\n selectedCity: null,\n selectedTimeout: null,\n userData: {},\n videoOrigin: null,\n },\n () => {\n cookieKeys.forEach(key => {\n removeCookie({ key, options });\n });\n },\n );\n };\n\n handleSetAd = e => {\n e.preventDefault();\n const value = e.target.debugValue.value || null;\n this.setState({ adDebug: value }, () => {\n setDebugCookie({ name: DEBUG_PANEL_AD_DEBUG, value });\n });\n };\n\n handleSetAdSiteSection = e => {\n e.preventDefault();\n const value = e.target.siteSectionValue.value || null;\n this.setState({ adSiteSection: value }, () => {\n setDebugCookie({ name: DEBUG_PANEL_AD_SITE_SECTION, value });\n });\n };\n\n handleSetApiBaseUrl = e => {\n e.preventDefault();\n const { domain } = this.state;\n const value = e.target.value || 'false';\n const options = { domain, path: '/' };\n this.setState({ apiBaseUrl: value }, () => {\n setCookie({ name: DEBUG_PANEL_API_BASEURL, value, options });\n this.setApiBaseUrlOverrideCookie(value);\n });\n removeAccountCookie();\n removeAnonymousAccountCookie();\n };\n\n setApiBaseUrlOverrideCookie = overrideName => {\n const { domain } = this.state;\n const overrideBaseUrl = _.get(window.ExternalConfig.api, `content.baseUrls.${overrideName}`);\n const options = { domain, path: '/' };\n\n setCookie({ name: API_BASEURL_OVERRIDE, value: overrideBaseUrl, options });\n };\n\n handleSetBlackoutFetchInterval = e => {\n e.preventDefault();\n const { domain } = this.state;\n const { value } = e.target;\n const options = { domain, path: '/' };\n if (value) {\n this.setState({ blackoutFetchDuration: value }, () => {\n setCookie({ name: DEBUG_PANEL_BLACKOUT_FETCH_INTERVAL, value, options });\n });\n } else {\n this.setState({ blackoutFetchDuration: null }, () => {\n removeCookie({ key: DEBUG_PANEL_BLACKOUT_FETCH_INTERVAL, options });\n });\n }\n };\n\n handleSetCdnMapping = e => {\n const { domain } = this.state;\n const value = e.target.value || '';\n const options = { domain, path: '/' };\n this.setState({ cdnMapping: value }, () => {\n setCookie({ name: DEBUG_PANEL_VIDEO_CDN, value, options });\n });\n };\n\n /**\n * Sets the city and the lat long\n *\n * @param city\n */\n handleSetCity = city => {\n const { setCoordinates, cities } = this.props;\n const { domain } = this.state;\n\n const latlongIdx = _.findIndex(cities, c => c.dmaName === city);\n const latlong = _.get(cities, `${latlongIdx}.latlong`).split(',');\n const lat = latlong[0];\n const long = latlong[1];\n const options = { domain, path: '/' };\n\n // Set the cookie\n this.setState({ selectedCity: city }, () => {\n setCookie({ name: DEBUG_PANEL_CITY_LAT, value: lat, options });\n setCookie({ name: DEBUG_PANEL_CITY, value: city, options });\n setCookie({ name: DEBUG_PANEL_CITY_LONG, value: long, options });\n });\n setCoordinates({\n latitude: lat,\n longitude: long,\n });\n };\n\n handleSetClientlessRecurringPreAuthZRefresh = e => {\n e.preventDefault();\n const { domain } = this.state;\n const options = { domain, path: '/' };\n const value = e.target.value || null;\n this.setState({ clientlessRecurringPreAuthZRefresh: value });\n\n if (value) {\n setCookie({ name: DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH, value, options });\n } else {\n removeCookie({ key: DEBUG_PANEL_CLIENTLESS_RECURRING_PRE_AUTHZ_REFRESH, options });\n }\n };\n\n handleSetClientlessTokenExpireRefresh = e => {\n e.preventDefault();\n const { domain } = this.state;\n const options = { domain, path: '/' };\n const value = e.target.value || null;\n this.setState({ clientlessTokenExpireRefresh: value });\n\n if (value) {\n setCookie({ name: DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH, value, options });\n } else {\n removeCookie({ key: DEBUG_PANEL_CLIENTLESS_TOKEN_EXPIRE_REFRESH, options });\n }\n };\n\n handleSetLocationCookieDuration = e => {\n const { domain } = this.state;\n const options = { domain, path: '/' };\n const value = _.get(e, 'target.value', '');\n this.setState({ locationCookieDuration: value });\n\n if (value) {\n setCookie({ name: DEBUG_PANEL_LOCATION_COOKIE_DURATION, value, options });\n } else {\n removeCookie({ key: DEBUG_PANEL_LOCATION_COOKIE_DURATION, options });\n }\n };\n\n handleSetVideoOrigin = e => {\n const { domain } = this.state;\n const value = e.target.value || '';\n const options = { domain, path: '/' };\n this.setState({ videoOrigin: value }, () => {\n setCookie({ name: DEBUG_PANEL_VIDEO_ORIGIN, value, options });\n });\n };\n\n /**\n * Turns feature flags on or off.\n *\n * @param e\n */\n\n handleUserData = e => {\n e.preventDefault();\n const { domain, userData: currentUserData } = this.state;\n const options = { domain, path: '/' };\n const deviceId = e.target.deviceId.value || null;\n const userData = { ...currentUserData, deviceId /* some other user field */ };\n this.setState(userData, () => {\n setCookie({ name: DEBUG_PANEL_USER, value: userData, options });\n });\n };\n\n /**\n * Turns timeout on or off.\n *\n * @param e\n */\n handleToggleLiveStream = e => {\n const { domain } = this.state;\n const value = e.target.value || 'NO';\n const options = { domain, path: '/' };\n setCookie({ name: DEBUG_PANEL_TIMEOUT_DISABLED, value, options });\n };\n\n /**\n * Determines which panel to show.\n *\n */\n\n renderPanel = params => {\n const {\n playerConfig,\n segmentDeviceId,\n params: { panelId },\n } = this.props;\n const {\n adDebug,\n adSiteSection,\n apiBaseUrl,\n blackoutFetchDuration,\n cdnMapping,\n clientlessRecurringPreAuthZRefresh,\n clientlessTokenExpireRefresh,\n locationCookieDuration,\n selectedCity,\n selectedTimeout,\n userData,\n videoOrigin,\n } = this.state;\n switch (panelId) {\n case 'authClientless': {\n return (\n <AuthClientlessPanel\n handleSetClientlessTokenExpireRefresh={this.handleSetClientlessTokenExpireRefresh}\n clientlessTokenExpireRefresh={clientlessTokenExpireRefresh}\n handleSetClientlessRecurringPreAuthZRefresh={\n this.handleSetClientlessRecurringPreAuthZRefresh\n }\n clientlessRecurringPreAuthZRefresh={clientlessRecurringPreAuthZRefresh}\n />\n );\n }\n case 'blackout': {\n return (\n <BlackoutPanel\n handleSetBlackoutFetchInterval={this.handleSetBlackoutFetchInterval}\n blackoutFetchDuration={blackoutFetchDuration}\n />\n );\n }\n case 'locationSettings': {\n const { cities } = params;\n return (\n <LocationSettingsPanelComponent\n cities={cities}\n handleSelect={this.handleSetCity}\n handleSetLocationCookieDuration={this.handleSetLocationCookieDuration}\n locationCookieDuration={locationCookieDuration}\n selectedCity={selectedCity}\n />\n );\n }\n case 'liveStream': {\n return (\n <LiveStreamPanel\n handleSetCdnMapping={this.handleSetCdnMapping}\n handleSetVideoOrigin={this.handleSetVideoOrigin}\n handleToggleLiveStream={this.handleToggleLiveStream}\n playerConfig={playerConfig}\n selectedCdnMapping={cdnMapping}\n selectedTimeout={selectedTimeout}\n selectedVideoOrigin={videoOrigin}\n />\n );\n }\n case 'feature-flags': {\n return <FeatureFlag />;\n }\n case 'adsDebug': {\n return (\n <AdPanel\n handleSetAd={this.handleSetAd}\n handleSetAdSiteSection={this.handleSetAdSiteSection}\n currentAdDebug={adDebug}\n currentSiteSection={adSiteSection}\n />\n );\n }\n case 'api': {\n return (\n <ApiPanel\n handleSetApiBaseUrl={this.handleSetApiBaseUrl}\n currentBaseUrl={apiBaseUrl}\n baseUrls={window.ExternalConfig.api.content.baseUrls}\n />\n );\n }\n case 'userPanel': {\n return (\n <UserPanel\n handleUserData={this.handleUserData}\n userData={userData}\n segmentDeviceId={segmentDeviceId}\n />\n );\n }\n case 'resetAll': {\n return <ResetPanel handleResetClick={this.handleResetBtnClicked} />;\n }\n case 'errorPanel': {\n return <ErrorPanel />;\n }\n default: {\n const { cities } = params;\n return (\n <LocationSettingsPanelComponent\n cities={cities}\n handleSelect={this.handleSetCity}\n handleSetLocationCookieDuration={this.handleSetLocationCookieDuration}\n locationCookieDuration={locationCookieDuration}\n selectedCity={selectedCity}\n />\n );\n }\n }\n };\n\n render() {\n const {\n cities,\n params: { panelId },\n } = this.props;\n const panelParams = {\n cities,\n };\n const separator = ' | ';\n const links = [\n <Link to=\"/debug/locationSettings\" id=\"locationSettings\" key=\"locationSettings\">\n Location Settings\n </Link>,\n <Link to=\"/debug/liveStream\" id=\"liveStream\" key=\"liveStream\">\n Live Stream\n </Link>,\n <Link to=\"/debug/feature-flags\" id=\"featureFlag\" key=\"featureFlags\">\n Feature Flags\n </Link>,\n <Link to=\"/debug/adsDebug\" id=\"adsDebug\" key=\"adsDebug\">\n Ads Debug\n </Link>,\n <Link to=\"/debug/blackout\" id=\"blackout\" key=\"blackout\">\n Blackout\n </Link>,\n <Link to=\"/debug/authClientless\" id=\"authClientless\" key=\"authClientless\">\n Clientless Auth\n </Link>,\n <Link to=\"/debug/userPanel\" id=\"userPanel\" key=\"userPanel\">\n User\n </Link>,\n <Link to=\"/debug/api\" id=\"api\" key=\"api\">\n Api\n </Link>,\n <Link to=\"/debug/errorPanel\" id=\"errorPanel\" key=\"errorPanel\">\n Errors\n </Link>,\n <Link to=\"/debug/resetAll\" id=\"resetAll\" key=\"resetAll\">\n Reset All\n </Link>,\n ];\n const menuLinks = links.map((link, index) => {\n if (index < links.length - 1) return [link, separator];\n return link;\n });\n const renderSave = panelId === 'feature-flags' || panelId === 'api';\n return (\n <div className={style.debugContainer}>\n <div className={style.header}>\n <div className={style.title}>Fox Debug Panel</div>\n <div className={style.links}>{menuLinks}</div>\n </div>\n <div className={style.body}>{this.renderPanel(panelParams)}</div>\n {renderSave && (\n <button\n type=\"button\"\n className={style.saveButton}\n onClick={() => {\n window.location.reload();\n }}\n >\n Refresh\n </button>\n )}\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n cities: _.get(state, 'debug.dmaOverrides'),\n playerConfig: _.get(state, 'debug.playerConfig'),\n };\n}\n\nDebugScreen.defaultProps = {\n cities: null,\n playerConfig: null,\n segmentDeviceId: null,\n};\n\nDebugScreen.propTypes = {\n cities: PropTypes.arrayOf(PropTypes.shape({})),\n fetchDmaOverrides: PropTypes.func.isRequired,\n fetchPlayerConfig: PropTypes.func.isRequired,\n params: PropTypes.shape({}).isRequired,\n playerConfig: PropTypes.shape({}),\n segmentDeviceId: PropTypes.string,\n setCoordinates: PropTypes.func.isRequired,\n};\n\nexport default connect(mapStateToProps, { fetchDmaOverrides, fetchPlayerConfig })(DebugScreen);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport {\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB_LARGE,\n} from 'helpers/BreakpointHelper';\nimport { getNetworkBranding } from 'helpers/ContentHelper';\nimport style from './GeoBlock.css';\n\nconst message = 'Fox Nation is not currently available in your location.';\nconst header = 'Geographic Restriction';\n\nconst GeoBlock = (props = {}) => {\n const { breakpoint, branding } = props;\n const notFoundPage = _.get(window, 'ExternalConfig.notFoundPage', {});\n const logo = _.get(notFoundPage, 'logo', null);\n const colors = _.get(notFoundPage, 'color', []);\n const imageDesktop = _.get(notFoundPage, 'background.desktop', null);\n const imageMobile = _.get(notFoundPage, 'background.mobile.portrait', null);\n const currentBranding = branding || getNetworkBranding();\n const wrapper = classNames([style.screen, style[currentBranding]]);\n const images = {\n [SITE_PLATFORM_WEB_LARGE]: imageDesktop,\n [SITE_PLATFORM_WEB]: imageDesktop,\n [SITE_PLATFORM_TABLET]: imageMobile,\n [SITE_PLATFORM_MOBILE]: imageMobile,\n };\n const image = _.get(images, breakpoint, null);\n const isColorBackground = colors && colors.length > 0;\n const isImageBackground = !isColorBackground && image;\n\n const renderCharacter = () => {\n if (isColorBackground || (isImageBackground && logo)) {\n const character = logo || image;\n return (\n <div className={classNames([style.character, logo && style.logo])}>\n <img src={character} alt=\"Background character\" />\n </div>\n );\n }\n return null;\n };\n\n const renderBackground = () => {\n if (isColorBackground) {\n const gradientBG =\n colors.length === 2 ? `radial-gradient(circle at 50% 0, ${colors.join(', ')})` : null;\n const flatBG = colors.length === 1 ? colors[0] : null;\n if (!gradientBG && !flatBG) return null;\n\n const background = flatBG || gradientBG;\n return <div className={style.background} style={{ background }} />;\n }\n if (isImageBackground) {\n const backgroundStyle = { backgroundImage: `url(${image})` };\n return <div className={style.background} style={backgroundStyle} />;\n }\n return null;\n };\n\n return (\n <div className={wrapper}>\n {renderBackground()}\n <div className={style.info}>\n {renderCharacter()}\n <div className={style.innerBackground} />\n <div className={style.header}>{header}</div>\n <div className={style.message}>{message}</div>\n </div>\n </div>\n );\n};\n\nGeoBlock.defaultProps = {\n breakpoint: SITE_PLATFORM_WEB,\n branding: null,\n};\n\nGeoBlock.propTypes = {\n breakpoint: PropTypes.string,\n branding: PropTypes.string,\n};\n\nexport default GeoBlock;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { getErrorComponent, isStaticRender } from 'helpers/ContentHelper';\nimport Loader from 'components/Loader';\nimport { helperGoToVideoDetail } from 'helpers/RouteHelper';\nimport { fetchLatestEpisodeSeries, fetchLatestEpisodeVideo } from './LatestEpisodeActions';\nimport style from './LatestEpisode.css';\n\nclass LatestEpisode extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n componentDidMount() {\n const { accessToken, deviceId, fetchLatestEpisodeSeries, seriesScreenUrl, params } = this.props;\n if (isStaticRender()) return;\n const showId = _.get(params, 'showId');\n if (!seriesScreenUrl) fetchLatestEpisodeSeries(showId, accessToken, deviceId);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { fetchLatestEpisodeVideo, location } = this.props;\n const { accessToken, deviceId } = nextProps;\n const seriesScreenUrl = _.get(this.props, 'seriesScreenUrl');\n const nextSeriesScreenUrl = _.get(nextProps, 'seriesScreenUrl');\n const latestEpisodeId = _.get(this.props, 'latestEpisodeId');\n const nextLatestEpisodeId = _.get(nextProps, 'latestEpisodeId');\n\n if (!seriesScreenUrl && nextSeriesScreenUrl) {\n return fetchLatestEpisodeVideo(nextSeriesScreenUrl, accessToken, deviceId);\n }\n\n if (!latestEpisodeId && nextLatestEpisodeId) {\n const { search } = location;\n const hasQueryString = search && _.includes(search, '?');\n const trailingSlash = hasQueryString ? '/' : '';\n const url = `${nextLatestEpisodeId}${trailingSlash}${search}`;\n return helperGoToVideoDetail(url);\n }\n\n return null;\n }\n\n render() {\n const { errors } = this.props;\n if (errors) return getErrorComponent(errors);\n return (\n <div className={style.screen}>\n <Loader />\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n seriesScreenUrl: state.latestEpisode.seriesScreenUrl,\n latestEpisodeId: state.latestEpisode.latestEpisodeId,\n errors: state.latestEpisode.errors,\n };\n}\n\nLatestEpisode.defaultProps = {\n accessToken: null,\n deviceId: null,\n errors: null,\n seriesScreenUrl: null,\n};\n\nLatestEpisode.propTypes = {\n accessToken: PropTypes.string,\n deviceId: PropTypes.string,\n errors: PropTypes.number,\n fetchLatestEpisodeSeries: PropTypes.func.isRequired,\n fetchLatestEpisodeVideo: PropTypes.func.isRequired,\n location: PropTypes.shape({\n search: PropTypes.string,\n }).isRequired,\n params: PropTypes.shape({\n showId: PropTypes.string,\n }).isRequired,\n seriesScreenUrl: PropTypes.string,\n};\n\nexport default connect(\n mapStateToProps,\n {\n fetchLatestEpisodeSeries,\n fetchLatestEpisodeVideo,\n },\n)(LatestEpisode);\n","import React from 'react';\nimport Loader from 'components/Loader';\nimport Style from './Loading.module.scss';\n\nconst Loading = () => (\n <div className={Style.container}>\n <Loader />\n </div>\n);\n\nexport default Loading;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { browserHistory } from 'react-router';\nimport { OVERLAY_AUTH_MVPD_START } from 'helpers/FilterHelper';\nimport { helperGetHomeUrl } from 'helpers/RouteHelper';\n\nclass MVPD extends Component {\n componentDidMount() {\n const { setLoading, setOverlay, setTriggerAuthCheck, toggleMvpdAuthOverlay } = this.props;\n if (setLoading) setLoading(true);\n if (setOverlay) setOverlay(OVERLAY_AUTH_MVPD_START, true);\n if (toggleMvpdAuthOverlay) {\n const options = {\n onAuthCheckComplete: ({ complete, success }) => {\n if (complete && success) {\n setOverlay(OVERLAY_AUTH_MVPD_START, false);\n browserHistory.push(helperGetHomeUrl());\n }\n },\n onOverlayClose: () => {\n setOverlay(OVERLAY_AUTH_MVPD_START, false);\n setTriggerAuthCheck(true);\n toggleMvpdAuthOverlay(false);\n browserHistory.push(helperGetHomeUrl());\n },\n };\n toggleMvpdAuthOverlay(true, options);\n }\n }\n\n componentWillUnmount() {\n const { setLoading } = this.props;\n if (setLoading) setLoading(false);\n }\n\n render() {\n return <div />;\n }\n}\n\nMVPD.defaultProps = {\n setLoading: null,\n setOverlay: null,\n setTriggerAuthCheck: null,\n toggleMvpdAuthOverlay: null,\n};\n\nMVPD.propTypes = {\n setLoading: PropTypes.func,\n setOverlay: PropTypes.func,\n setTriggerAuthCheck: PropTypes.func,\n toggleMvpdAuthOverlay: PropTypes.func,\n};\n\nexport default MVPD;\n","import _ from 'lodash';\nimport { getUrlParams, redirectToExternalUrl } from 'helpers/RouteHelper';\nimport {\n getLocalStorageItem,\n removeLocalStorageItem,\n setCookie,\n setLocalStorageItem,\n} from 'helpers/Storage';\nimport { isSSARedirect } from './ConfigHelper';\n\nconst ACTIVATE_CODE_EXPIRES_MINUTES = 30;\nconst COOKIE_ACTIVATE_ACCOUNT = 'ACTIVATE_ACCOUNT';\nconst COOKIE_ACTIVATE_CODE = 'ACTIVATE_CODE';\nconst getSharedCookieDomain = () => _.get(window.ExternalConfig, 'secondScreen.sharedCookieDomain');\n\n// Change this to ''http://dev.go.fox.com:8000/ or 'http://dev.activate.fox.com:8080' if you want to test second screen locally\nconst getActivateRedirectUrl = () =>\n isSSARedirect()\n ? _.get(window.ExternalConfig, 'secondScreen.goActivateRedirectUrl') ||\n 'http://dev.go.fox.com:8000/'\n : _.get(window.ExternalConfig, 'secondScreen.activateRedirectUrl');\n\nconst getCookieOptions = () => {\n const now = new Date().getTime();\n const expires = new Date(now + ACTIVATE_CODE_EXPIRES_MINUTES * 60 * 1000);\n const domain = getSharedCookieDomain();\n return { path: '/', domain, expires };\n};\n\nexport const setActivateCode = value => setLocalStorageItem({ key: COOKIE_ACTIVATE_CODE, value });\n\nexport const getActivateCodeFromURL = () => {\n const { code } = getUrlParams(window.location.href);\n return code;\n};\n\nexport const setActivateCodeAccount = account => {\n if (!account) return;\n const { accessToken, isNew } = account || {};\n const value = JSON.stringify({ accessToken, isNew });\n const options = getCookieOptions();\n setCookie({ name: COOKIE_ACTIVATE_ACCOUNT, value, options });\n};\n\nexport const getActivateCode = () => getLocalStorageItem({ key: COOKIE_ACTIVATE_CODE });\n\nexport const redirectToActivateMVPD = code => {\n if (!code) return null;\n const activateUrl = getActivateRedirectUrl();\n removeLocalStorageItem({ key: COOKIE_ACTIVATE_CODE });\n const url = `${activateUrl}/account-success`;\n return redirectToExternalUrl(url);\n};\n","/* eslint-disable consistent-return */\n/* eslint-disable no-undef */\nimport _ from 'lodash';\n\nexport const getFacebook = () =>\n _.get(window, 'FB', { error: true, details: 'facebook not found' });\n\nexport async function getLoginStatus({\n handleNotAuthorized,\n handleConnected,\n handleNotLoggedIn,\n handleFacebookNotFound,\n}) {\n return new Promise((resolve, reject) => {\n const FB = getFacebook();\n const FBError = _.get(FB, 'error', false);\n if (FBError) {\n if (handleFacebookNotFound) return handleFacebookNotFound({ resolve, reject });\n reject(FBError);\n }\n FB.getLoginStatus(response => {\n const status = _.get(response, 'status');\n if (status === 'connected') {\n // the user is logged in and has authenticated your\n // app, and response.authResponse supplies\n // the user's ID, a valid access token, a signed\n // request, and the time the access token\n // and signed request each expire\n if (handleConnected) return handleConnected({ resolve, reject });\n resolve(status);\n } else if (status === 'not_authorized') {\n // the user is logged in to Facebook,\n // but has not authenticated your app\n if (handleNotAuthorized) return handleNotAuthorized({ resolve, reject });\n reject(status);\n } else {\n // the user isn't logged in to Facebook.\n if (handleNotLoggedIn) return handleNotLoggedIn({ resolve, reject });\n reject(status);\n }\n });\n });\n}\n\nexport async function login({ handleLogin = null }) {\n return new Promise((resolve, reject) => {\n const FB = getFacebook();\n const FBError = _.get(FB, 'error');\n if (FBError) reject(FBError);\n FB.login(\n loginResponse => {\n const authResponse = _.get(loginResponse, 'authResponse');\n\n if (authResponse) {\n if (handleLogin) return handleLogin({ data: loginResponse, resolve, reject });\n return resolve(loginResponse);\n }\n const error = 'User cancelled login or did not fully authorize.';\n _.merge(loginResponse, { error });\n if (handleLogin) return handleLogin({ data: loginResponse, resolve, reject });\n return reject(loginResponse);\n },\n {\n scope: 'email',\n auth_type: 'rerequest',\n },\n );\n });\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { getConfigNetworkLogoUrl } from 'helpers/ContentHelper';\nimport { onEnterKeyPress } from 'helpers/Account';\nimport { isFoxSoulResetPasswordPage, isResetPage } from 'helpers/RouteHelper';\nimport Style from './AccountHeader.module.scss';\n\nconst Header = ({\n iconMobile,\n isDesktop,\n isGoogle,\n hideCloseButton,\n onClose,\n noIcon,\n renderLogo,\n}) => {\n let closeButtonClass = Style.close;\n\n const handleClose = () => onClose({ goHome: true });\n const isMobile = !isDesktop && iconMobile ? iconMobile : renderLogo(handleClose);\n const icon = noIcon || (!isDesktop && isGoogle) ? null : isMobile;\n const networkLogo = isFoxSoulResetPasswordPage ? (\n <img className={Style.logo} src={getConfigNetworkLogoUrl('SOUL')} alt=\"Fox Soul\" />\n ) : (\n <img className={Style.logo} src={getConfigNetworkLogoUrl('fox')} alt=\"Fox\" />\n );\n\n if (hideCloseButton) closeButtonClass = classNames(closeButtonClass, Style.closeHidden);\n return (\n <div\n className={classNames(\n Style.AccountHeader,\n isResetPage && Style.OnlyLogoHeader,\n isFoxSoulResetPasswordPage && Style.isFoxSoul,\n )}\n >\n {isResetPage ? (\n networkLogo\n ) : (\n <div className={Style.InnerHeaderWrap}>\n <div className={classNames(Style.header, !isDesktop && isGoogle && Style.isGoogle)}>\n {icon}\n <button\n onClick={onClose}\n onKeyPress={e => {\n onEnterKeyPress(e, onClose);\n }}\n tabIndex=\"0\"\n aria-label=\"close account dialog\"\n className={closeButtonClass}\n >\n <Icon icon=\"close\" color=\"white\" size=\"full\" />\n </button>\n </div>\n </div>\n )}\n </div>\n );\n};\n\nHeader.defaultProps = {\n iconMobile: null,\n isDesktop: false,\n hideCloseButton: false,\n noIcon: false,\n renderLogo: () => {},\n onClose: () => {},\n};\n\nHeader.propTypes = {\n hideCloseButton: PropTypes.bool,\n iconMobile: PropTypes.shape({}),\n isDesktop: PropTypes.bool,\n isGoogle: PropTypes.bool,\n noIcon: PropTypes.bool,\n onClose: PropTypes.func,\n renderLogo: PropTypes.func,\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\n\nimport Style from './ForgotPasswordCTA.module.scss';\n\nconst ForgotPasswordCTA = ({ containerClass, linkClass, linkText, onClick, text }) => {\n const containerStyle = containerClass || Style.signInForgotPasswordContainer;\n const linkStyle = linkClass || classNames(Style.signInForgotPassword, Style.link);\n const handleClick = () => {\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_FORGOT_PASSWORD,\n });\n onClick();\n };\n\n return (\n <div className={containerStyle}>\n {text}\n <button className={linkStyle} onClick={handleClick}>\n {linkText}\n </button>\n </div>\n );\n};\n\nForgotPasswordCTA.defaultProps = {\n containerClass: null,\n linkClass: null,\n linkText: null,\n text: null,\n};\n\nForgotPasswordCTA.propTypes = {\n containerClass: PropTypes.string,\n linkClass: PropTypes.string,\n linkText: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n text: PropTypes.string,\n};\n\nexport default ForgotPasswordCTA;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Header from '../Header';\nimport ForgotPasswordCTA from '../ForgotPasswordCTA';\n\nimport Style from './ChangePassword.module.scss';\n\nconst ChangePassword = ({\n changePasswordGenericError = '',\n changePasswordNewPassword = '',\n changePasswordNewPasswordError = null,\n changePasswordPassword = '',\n changePasswordPasswordError = null,\n changePasswordShowNewPassword = null,\n changePasswordShowPassword = null,\n forgotPasswordCTAProps = {\n containerClass: '',\n linkClass: '',\n linkText: '',\n onClick: () => {},\n text: '',\n theme: '',\n },\n headerProps = {},\n language = {\n profile_currentPwInputPlaceholder: '',\n profile_newPwInputPlaceholder: '',\n profile_passwordRequirementsText: '',\n profileEdit_submitButton: '',\n profile_passwordInvalidError: '',\n },\n onChangePassword = () => {},\n onFieldChange = e => e,\n}) => {\n const {\n profile_currentPwInputPlaceholder: currentPlaceholder,\n profile_newPwInputPlaceholder: newPlaceholder,\n profile_passwordRequirementsText: passwordRequirementText,\n profileEdit_submitButton: submitButtonText,\n profile_passwordInvalidError: passwordInvalidError,\n } = language || {};\n\n let changePasswordInput = React.createRef();\n let changePasswordInputNew = React.createRef();\n\n const handleOnChangePasswordInput = e => {\n onFieldChange(e);\n if (changePasswordInput.current) {\n changePasswordInput.current.focus();\n }\n };\n\n const handleOnChangePasswordInputNew = e => {\n onFieldChange(e);\n if (changePasswordInputNew.current) {\n changePasswordInputNew.current.focus();\n }\n };\n\n const passwordOldVisibility = changePasswordShowPassword ? 'text' : 'password';\n const passwordNewVisibility = changePasswordShowNewPassword ? 'text' : 'password';\n\n let passwordErrorText;\n let passwordNewErrorText;\n\n // local error checking\n if (changePasswordPasswordError) {\n passwordErrorText = passwordInvalidError;\n }\n if (changePasswordNewPasswordError) {\n passwordNewErrorText = passwordInvalidError;\n }\n\n return (\n <main className={Style.changePassword}>\n <Header {...headerProps} />\n <div className={Style.changePasswordContainer}>\n <h1>Change Password</h1>\n <div className={Style.error}>{changePasswordGenericError}</div>\n <div className={Style.signupPasswordContainer}>\n <input\n className={Style.inputField}\n type={passwordOldVisibility}\n name=\"changePasswordPassword\"\n placeholder={currentPlaceholder}\n value={changePasswordPassword}\n onChange={onFieldChange}\n ref={input => {\n changePasswordInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n className={Style.inputField}\n name=\"changePasswordShowPassword\"\n type=\"checkbox\"\n value={changePasswordShowPassword}\n onChange={handleOnChangePasswordInput}\n />\n <span />\n </label>\n </div>\n <div className={Style.error}>{passwordErrorText}</div>\n <div className={Style.signupPasswordContainer}>\n <input\n className={Style.inputField}\n type={passwordNewVisibility}\n name=\"changePasswordNewPassword\"\n placeholder={newPlaceholder}\n value={changePasswordNewPassword}\n onChange={onFieldChange}\n ref={input => {\n changePasswordInputNew = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n className={Style.inputField}\n name=\"changePasswordShowNewPassword\"\n type=\"checkbox\"\n value={changePasswordShowNewPassword}\n onChange={handleOnChangePasswordInputNew}\n />\n <span />\n </label>\n </div>\n <div className={Style.error}>{passwordNewErrorText}</div>\n <div className={Style.changePasswordRequirements}>{passwordRequirementText}</div>\n <ForgotPasswordCTA {...forgotPasswordCTAProps} />\n <button className={Style.btnPrimary} onClick={onChangePassword}>\n {submitButtonText}\n </button>\n </div>\n </main>\n );\n};\n\nChangePassword.propTypes = {\n changePasswordGenericError: PropTypes.string,\n changePasswordNewPassword: PropTypes.string.isRequired,\n changePasswordNewPasswordError: PropTypes.bool,\n changePasswordPassword: PropTypes.string.isRequired,\n changePasswordPasswordError: PropTypes.bool,\n changePasswordShowNewPassword: PropTypes.bool.isRequired,\n changePasswordShowPassword: PropTypes.bool.isRequired,\n forgotPasswordCTAProps: PropTypes.shape({}).isRequired,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({}).isRequired,\n onChangePassword: PropTypes.func.isRequired,\n onChangePasswordBackClick: PropTypes.func.isRequired,\n onFieldChange: PropTypes.func.isRequired,\n};\n\nexport default ChangePassword;\n","import React from 'react';\nimport _ from 'lodash';\n\nimport { isValidPassword } from 'helpers/Account';\nimport ChangePassword from '../AccountComponents/ChangePassword';\n\nimport Style from '../SharedStyles/SharedStyles.module.scss';\n\nconst INVALID_PASSWORD = 'invalid loginid or password';\n\nfunction setChangePasswordErrors(cb, name) {\n const { changePasswordPassword, changePasswordNewPassword } = this.state;\n const changePasswordPasswordError = !isValidPassword(changePasswordPassword);\n const changePasswordNewPasswordError = !isValidPassword(changePasswordNewPassword);\n const setStateCb = () => {\n const { changePasswordPasswordError, changePasswordNewPasswordError } = this.state;\n const hasErrors = changePasswordPasswordError || changePasswordNewPasswordError || false;\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n\n if (name) {\n switch (name) {\n case 'changePasswordPasswordError':\n this.setState({ changePasswordPasswordError }, setStateCb);\n break;\n case 'changePasswordNewPasswordError':\n this.setState({ changePasswordNewPasswordError }, setStateCb);\n break;\n default:\n break;\n }\n } else {\n return this.setState(\n {\n changePasswordPasswordError,\n changePasswordNewPasswordError,\n },\n setStateCb,\n );\n }\n return null;\n}\n\nfunction onChangePassword() {\n const {\n editAccount,\n language: { profileError_passwordLength: passwordLengthErrorText },\n } = this.props;\n const { changePasswordPassword, changePasswordNewPassword } = this.state;\n\n if (changePasswordNewPassword.length < 6) {\n this.setState({\n changePasswordGenericError: passwordLengthErrorText,\n });\n\n return;\n }\n\n const handleSuccess = () => {\n this.toggleChangePassword();\n this.toggleAccountMain();\n };\n\n setChangePasswordErrors.bind(this)(hasErrors => {\n if (!hasErrors && editAccount) {\n const body = {\n password: changePasswordPassword,\n newPassword: changePasswordNewPassword,\n };\n editAccount(body, result => {\n const { error } = result;\n const detailError = _.get(error, 'detail', '');\n let errorMessage = _.get(error, 'message', '');\n if (detailError.toLowerCase() === INVALID_PASSWORD) {\n errorMessage = _.get(window, 'Language.profile_incorrectPasswordUpdate', errorMessage);\n }\n if (error) return this.setState({ changePasswordGenericError: errorMessage });\n return handleSuccess.bind(this)();\n });\n }\n });\n}\n\nfunction onChangePasswordBackClick() {\n this.toggleChangePassword();\n this.toggleAccountMain();\n}\n\nexport default function renderChangePassword() {\n const {\n language: { profileChangePw_header: headerText, profileSignin_forgotPasswordText: linkText },\n language,\n backgroundClass,\n isMobile,\n } = this.props;\n const {\n changePasswordPassword,\n changePasswordNewPassword,\n changePasswordShowPassword,\n changePasswordShowNewPassword,\n changePasswordGenericError,\n changePasswordPasswordError,\n changePasswordNewPasswordError,\n showChangePassword,\n } = this.state;\n const changePasswordBackClick = onChangePasswordBackClick.bind(this);\n const changePassword = onChangePassword.bind(this);\n const forgotPasswordCTAProps = {\n linkText,\n onClick: () => {\n if (this.onForgotPasswordClick) this.onForgotPasswordClick();\n },\n };\n const headerProps = {\n headerText,\n iconMobile: <button onClick={() => changePasswordBackClick()} className={Style.back} />,\n isDesktop: !isMobile,\n onClose: this.onClose,\n renderLogo: this.renderLogo,\n showHeaderDesktop: true,\n };\n const changePasswordProps = {\n backgroundClass,\n changePasswordGenericError,\n changePasswordNewPassword,\n changePasswordNewPasswordError,\n changePasswordPassword,\n changePasswordPasswordError,\n changePasswordShowNewPassword,\n changePasswordShowPassword,\n forgotPasswordCTAProps,\n headerProps,\n language,\n onChangePassword: changePassword,\n onChangePasswordBackClick: changePasswordBackClick,\n onFieldChange: this.onFieldChange,\n };\n if (!showChangePassword) return null;\n return <ChangePassword {...changePasswordProps} />;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Style from './OverlayFooter.module.scss';\n\nconst OverlayFooter = ({ language }) => {\n const {\n legalDoNotSellName,\n legalDoNotSellUrl,\n legalPrivacyName,\n legalPrivacyUrl,\n legalTermsName,\n legalTermsUrl,\n } = language;\n\n const formatLink = (text, url) => (\n <a href={url} target=\"_blank\" rel=\"noopener noreferrer\">\n {text}\n </a>\n );\n\n return (\n <footer className={Style.footerContainer}>\n {formatLink(legalTermsName, legalTermsUrl)}   and  \n {formatLink(`Updated ${legalPrivacyName}`, legalPrivacyUrl)}. \n {formatLink(legalDoNotSellName, legalDoNotSellUrl)}\n </footer>\n );\n};\n\nexport default OverlayFooter;\n\nOverlayFooter.propTypes = {\n language: PropTypes.shape({}).isRequired,\n};\n","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport helperMarkdownToComponent from 'helpers/Data';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { handleAnalytics, Events, SegmentPageProfileTypes } from '@foxcorp/delta-web-analytics';\nimport OverlayFooter from 'components/OverlayFooter';\nimport Header from '../Header';\n\nimport Style from './CreatePassword.module.scss';\n\nconst CREATE_PASSWORD = 'Create Password';\n\nconst CreatePassword = ({\n createPasswordGenericError = '',\n createPasswordNewPassword = '',\n createPasswordNewPasswordError = null,\n createPasswordPasswordError = null,\n createPasswordShowNewPassword = null,\n googleLinkingError = '',\n headerProps = {},\n language = {\n profile_currentPwInputPlaceholder: '',\n profile_newPwInputPlaceholder: '',\n profile_passwordRequirementsText: '',\n profileEdit_submitButton: '',\n profile_passwordInvalidError: '',\n },\n onCreatePassword = () => {},\n onCTAClick = () => {},\n onFieldChange = e => e,\n showLinkToProfile,\n userEmail = '',\n utagAccountSource,\n}) => {\n const { isGoogleSignIn } = useSelector(state => state?.app?.googleSignIn);\n const { isGoogleOneTap, googleOneTapEmail } = useSelector(state => state.app?.googleOneTap);\n const { googleEmail } = useSelector(state => state.app?.googleNewUser);\n const isGoogle = isGoogleOneTap || isGoogleSignIn;\n const googleEmailAddress = isGoogleOneTap ? googleOneTapEmail : googleEmail;\n\n const {\n profile_createNewPwInputPlaceholder: newPlaceholder = 'Password (6 Character min)',\n profile_createPasswordInfoSIWA: createPasswordInfo = \"Set a password to enjoy your account perks on any device that doesn't support Apple login, or if you would like to login without Apple.\",\n profile_createProfileLegal: createProfileLegal = `By clicking ${\n isGoogle ? CREATE_PASSWORD : 'Create Account'\n }, you agree to the [Terms of Use](https://www.fox.com/article/terms-of-use-597bc239ef528f0026dc0316), [Privacy Policy](https://www.fox.com/article/privacy-policy-597bbe4f6603660022fa8689), and agree to receive content and promotional communications from FOX.`,\n profile_createProfileButton: createButtonText = 'Create Account',\n profile_passwordInvalidError: passwordInvalidError,\n } = language || {};\n\n let createPasswordInputNew = React.createRef();\n\n const handleOnCreatePasswordInputNew = e => {\n onFieldChange(e);\n if (createPasswordInputNew.current) {\n createPasswordInputNew.current.focus();\n }\n };\n\n const passwordNewVisibility = createPasswordShowNewPassword ? 'text' : 'password';\n\n let passwordErrorText;\n let passwordNewErrorText;\n\n if (createPasswordPasswordError) {\n passwordErrorText = passwordInvalidError;\n }\n if (createPasswordNewPasswordError) {\n passwordNewErrorText = passwordInvalidError;\n }\n\n useEffect(() => {\n const pageProfileType = isGoogle\n ? SegmentPageProfileTypes.GOOGLE\n : SegmentPageProfileTypes.APPLE;\n handleAnalytics({\n event: isGoogle ? Events.PROFILE_GOOGLE_LINK_STARTED : Events.PROFILE_APPLE_ID_SIGNUP_STARTED,\n payload: {\n page_profile_type: pageProfileType,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n profile_type: pageProfileType,\n page_start_source: utagAccountSource,\n ...getCommonTealiumProps(),\n },\n });\n }, [utagAccountSource]);\n\n const handleFormSubmit = e => {\n e.preventDefault();\n onCreatePassword(isGoogle);\n };\n\n return (\n <main className={Style.createPassword}>\n <Header isGoogle={isGoogle} {...headerProps} />\n <form className={Style.createPasswordForm} onSubmit={handleFormSubmit}>\n <h1>{CREATE_PASSWORD}</h1>\n <div className={Style.createPasswordInfo}>\n {isGoogle\n ? `Set a password to enjoy your account perks on any device that doesn't support Google Sign-In, or if you would like to login without Google.`\n : createPasswordInfo}\n </div>\n <div className={Style.error}>{createPasswordGenericError}</div>\n <div className={Style.error}>{isGoogle && googleLinkingError}</div>\n <div className={Style.emailContainer}>\n <p className={Style.emailLabel}>{isGoogle ? googleEmailAddress : userEmail}</p>\n </div>\n <div className={Style.error}>{passwordErrorText}</div>\n <div className={Style.passwordContainer}>\n <input\n className={Style.inputField}\n type={passwordNewVisibility}\n name=\"createPasswordNewPassword\"\n placeholder={newPlaceholder}\n value={createPasswordNewPassword || ''}\n onChange={onFieldChange}\n ref={input => {\n createPasswordInputNew = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n className={Style.inputField}\n name=\"createPasswordShowNewPassword\"\n type=\"checkbox\"\n value={createPasswordShowNewPassword || ''}\n onChange={handleOnCreatePasswordInputNew}\n />\n <span />\n </label>\n </div>\n <div className={Style.error}>{passwordNewErrorText}</div>\n <div className={Style.legalTextContainer}>\n {helperMarkdownToComponent(createProfileLegal, null, {\n Paragraph: props => {\n if (!props?.children) return null;\n return <p className={Style.legalText}>{props?.children}</p>;\n },\n Link: props => (\n <a href={props?.href} className={Style.legalLink} target=\"noopener noreferrer\">\n {props?.children}\n </a>\n ),\n })}\n </div>\n <button type=\"submit\" className={Style.createProfileButton}>\n {isGoogle ? CREATE_PASSWORD : createButtonText}\n </button>\n {showLinkToProfile && (\n <div className={Style.ctaText} onClick={onCTAClick}>\n {isGoogle ? null : 'Link to existing FOX account'}\n </div>\n )}\n </form>\n <OverlayFooter language={language} />\n </main>\n );\n};\n\nCreatePassword.propTypes = {\n createPasswordGenericError: PropTypes.string,\n createPasswordNewPassword: PropTypes.string.isRequired,\n createPasswordNewPasswordError: PropTypes.bool,\n createPasswordPassword: PropTypes.string.isRequired,\n createPasswordPasswordError: PropTypes.bool,\n createPasswordShowNewPassword: PropTypes.bool,\n googleLinkingError: PropTypes.string,\n forgotPasswordCTAProps: PropTypes.shape({}),\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({}).isRequired,\n onCreatePassword: PropTypes.func.isRequired,\n onCreatePasswordBackClick: PropTypes.func.isRequired,\n onCTAClick: PropTypes.func,\n onFieldChange: PropTypes.func.isRequired,\n showLinkToProfile: PropTypes.bool,\n userEmail: PropTypes.string,\n utagAccountSource: PropTypes.string,\n};\n\nexport default CreatePassword;\n","import React from 'react';\nimport { isValidPassword } from 'helpers/Account';\nimport CreatePassword from '../AccountComponents/CreatePassword';\nimport Style from '../SharedStyles/SharedStyles.module.scss';\n\nfunction setCreatePasswordErrors(cb, name) {\n const { createPasswordNewPassword } = this.state;\n const createPasswordNewPasswordError = !isValidPassword(createPasswordNewPassword);\n const setStateCb = () => {\n const { createPasswordNewPasswordError } = this.state;\n const hasErrors = createPasswordNewPasswordError || false;\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n\n if (name) {\n switch (name) {\n case 'createPasswordNewPasswordError':\n this.setState({ createPasswordNewPasswordError }, setStateCb);\n break;\n default:\n break;\n }\n } else {\n return this.setState(\n {\n createPasswordNewPasswordError,\n },\n setStateCb,\n );\n }\n return null;\n}\n\nfunction onCreatePassword(isGoogle) {\n const {\n language: { profileError_passwordLength: passwordLengthErrorText },\n } = this.props;\n const { createPasswordNewPassword } = this.state;\n\n if (createPasswordNewPassword.length < 6) {\n this.setState({\n createPasswordGenericError: passwordLengthErrorText,\n });\n\n return;\n }\n\n setCreatePasswordErrors.bind(this)(hasErrors => {\n if (!hasErrors && !isGoogle) {\n this.onAppleLinking();\n } else if (!hasErrors && isGoogle) {\n this.onRegisterWithGoogle();\n }\n });\n}\n\nfunction onCreatePasswordBackClick() {\n this.toggleCreatePassword();\n this.toggleAccountMain();\n}\n\nexport default function renderCreatePassword() {\n const {\n language: { profileChangePw_header: headerText, profileSignin_forgotPasswordText: linkText },\n language,\n backgroundClass,\n isMobile,\n utagAccountSource,\n } = this.props;\n const {\n createPasswordNewPassword,\n createPasswordShowNewPassword,\n createPasswordGenericError,\n createPasswordNewPasswordError,\n showLinkToProfile,\n googleLinkingError,\n showCreatePassword,\n userEmail,\n } = this.state;\n\n const createPasswordBackClick = onCreatePasswordBackClick.bind(this);\n const createPassword = onCreatePassword.bind(this);\n const forgotPasswordCTAProps = {\n linkText,\n onClick: () => {\n if (this.onForgotPasswordClick) this.onForgotPasswordClick();\n },\n };\n\n const onCTAClick = () => {\n this.setState({\n showCreatePassword: false,\n showShareMyEmailUpsell: false,\n showLinkAccount: true,\n appleLinkingEmail: '',\n });\n };\n\n const headerProps = {\n headerText,\n iconMobile: <button onClick={() => createPasswordBackClick()} className={Style.back} />,\n isDesktop: !isMobile,\n onClose: this.onClose,\n renderLogo: this.renderLogo,\n showHeaderDesktop: true,\n };\n const createPasswordProps = {\n backgroundClass,\n createPasswordGenericError,\n createPasswordNewPassword,\n createPasswordNewPasswordError,\n createPasswordShowNewPassword,\n googleLinkingError,\n forgotPasswordCTAProps,\n headerProps,\n language,\n onCreatePassword: createPassword,\n onCreatePasswordBackClick: createPasswordBackClick,\n onCTAClick,\n onFieldChange: this.onFieldChange,\n showLinkToProfile,\n userEmail,\n utagAccountSource,\n };\n if (!showCreatePassword) return null;\n return <CreatePassword {...createPasswordProps} />;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { noop } from 'helpers/GlobalHelper';\nimport Header from '../Header';\nimport Style from './EditAccount.module.scss';\n\nconst EditAccount = ({\n editEmail = '',\n editFirstName = '',\n editGenericError = '',\n editLastName = '',\n firstNameError = '',\n headerProps = {},\n language = {},\n lastNameError = '',\n onEditAccount = noop,\n onEditDeleteClick = noop,\n onFieldChange = noop,\n}) => {\n const {\n profile_alphaOnlyErrorFirstName: firstNameAlphaErrorText,\n profile_alphaOnlyErrorLastName: lastNameAlphaErrorText,\n profile_firstnameInputPlaceholder: firstNamePlaceholder,\n profile_lastnameInputPlaceholder: lastNamePlaceholder,\n profileEdit_deleteAccountButton: deleteAccountButtonText,\n profileEdit_header: profileHeaderText,\n profileEdit_submitButton: submitButtonText,\n profileError_firstNameLength: firstNameLengthError,\n profileError_lastNameLength: lastNameLengthError,\n } = language || {};\n\n const LENGTH_ERROR = 'LENGTH_ERROR';\n const FORMAT_ERROR = 'FORMAT_ERROR';\n\n let firstNameErrorText;\n let lastNameErrorText;\n\n switch (firstNameError) {\n case FORMAT_ERROR:\n firstNameErrorText = firstNameAlphaErrorText;\n break;\n case LENGTH_ERROR:\n firstNameErrorText = firstNameLengthError;\n break;\n default:\n }\n\n switch (lastNameError) {\n case FORMAT_ERROR:\n lastNameErrorText = lastNameAlphaErrorText;\n break;\n case LENGTH_ERROR:\n lastNameErrorText = lastNameLengthError;\n break;\n default:\n break;\n }\n\n return (\n <main className={Style.EditAccount}>\n <Header {...headerProps} />\n <div className={Style.EditAccountContainer}>\n <h1>{profileHeaderText}</h1>\n <div className={Style.error}>\n {editGenericError}\n <div className={Style.error}>{firstNameErrorText}</div>\n <div className={Style.error}>{lastNameErrorText}</div>\n </div>\n <div className={Style.nameContainer}>\n <input\n className={Style.inputField}\n type=\"text\"\n placeholder={firstNamePlaceholder}\n name=\"editFirstName\"\n value={editFirstName}\n onChange={onFieldChange}\n required\n aria-label=\"First Name\"\n />\n <input\n className={Style.inputField}\n type=\"text\"\n name=\"editLastName\"\n placeholder={lastNamePlaceholder}\n value={editLastName}\n onChange={onFieldChange}\n required\n aria-label=\"Last Name\"\n />\n </div>\n <input\n className={Style.inputField}\n type=\"email\"\n name=\"editEmail\"\n placeholder=\"Email Address\"\n value={editEmail}\n aria-label=\"Email\"\n aria-disabled\n readOnly\n />\n <button className={Style.btnPrimary} onClick={onEditAccount}>\n {submitButtonText}\n </button>\n <button className={classnames(Style.deleteButton, Style.link)} onClick={onEditDeleteClick}>\n {deleteAccountButtonText}\n </button>\n </div>\n </main>\n );\n};\n\nexport default EditAccount;\n\nEditAccount.propTypes = {\n editEmail: PropTypes.string,\n editFirstName: PropTypes.string,\n editGenericError: PropTypes.string,\n editLastName: PropTypes.string,\n firstNameError: PropTypes.string,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({}).isRequired,\n lastNameError: PropTypes.string,\n onEditAccount: PropTypes.func,\n onEditAccountBackClick: PropTypes.func,\n onEditDeleteClick: PropTypes.func,\n onFieldChange: PropTypes.func,\n};\n","import React from 'react';\nimport _ from 'lodash';\n\nimport EditAccount from '../AccountComponents/EditAccount';\n\nimport Style from '../SharedStyles/SharedStyles.module.scss';\n\nconst LENGTH_ERROR = 'LENGTH_ERROR';\nconst FORMAT_ERROR = 'FORMAT_ERROR';\n\nexport function setEditAccountErrors(cb) {\n const { editFirstName, editLastName } = this.state;\n const processedFirstName = _.trim(editFirstName);\n const processedLastName = _.trim(editLastName);\n const pattern = /^[a-z]*$/i;\n\n let firstNameError;\n let lastNameError;\n\n if (processedFirstName.length < 2) firstNameError = LENGTH_ERROR;\n if (processedLastName.length < 2) lastNameError = LENGTH_ERROR;\n if (!pattern.test(processedFirstName)) firstNameError = FORMAT_ERROR;\n if (!pattern.test(processedLastName)) lastNameError = FORMAT_ERROR;\n\n const setStateCallBack = () => {\n const { firstNameError, lastNameError } = this.state;\n const hasErrors = firstNameError || lastNameError;\n if (cb) return cb(hasErrors, processedFirstName, processedLastName);\n return hasErrors;\n };\n\n return this.setState({ firstNameError, lastNameError }, setStateCallBack);\n}\n\nfunction onEditAccount() {\n const { editAccount, editAccountCb } = this.props;\n const handleSuccess = ({ data }) => {\n editAccountCb(data);\n this.toggleEditAccount();\n this.toggleAccountMain(true);\n };\n this.setEditAccountErrors((hasErrors, processedFirstName, processedLastName) => {\n if (!hasErrors && editAccount) {\n editAccount(\n {\n firstName: processedFirstName,\n lastName: processedLastName,\n },\n result => {\n const { error, success, data } = result;\n if (error) return this.setState({ editGenericError: error.message });\n if (success) return handleSuccess({ data });\n return null;\n },\n );\n }\n });\n}\n\nfunction onEditDeleteClick() {\n this.toggleEditAccount();\n this.toggleDeleteAccount();\n}\n\nexport function onEditAccountBackClick() {\n this.toggleEditAccount();\n this.toggleAccountMain();\n}\n\nexport function renderEditAccount() {\n const {\n backgroundClass,\n isMobile,\n language: { profileEdit_header: headerText },\n language,\n } = this.props;\n const {\n editEmail,\n editFirstName,\n editGenericError,\n editLastName,\n firstNameError,\n lastNameError,\n showEditAccount,\n } = this.state;\n const editAccountBackClick = onEditAccountBackClick.bind(this);\n const editAccount = onEditAccount.bind(this);\n const EditDeleteClick = onEditDeleteClick.bind(this);\n const headerProps = {\n headerText,\n iconMobile: <button onClick={() => editAccountBackClick()} className={Style.back} />,\n isDesktop: !isMobile,\n onClose: opts => this.onClose(opts),\n renderLogo: this.renderLogo,\n showHeaderDesktop: true,\n };\n\n const editAccountProps = {\n backgroundClass,\n editEmail,\n editFirstName,\n editGenericError,\n editLastName,\n firstNameError,\n headerProps,\n language,\n lastNameError,\n onEditAccount: editAccount,\n onEditAccountBackClick: editAccountBackClick,\n onEditDeleteClick: EditDeleteClick,\n onFieldChange: this.onFieldChange,\n showEditAccount,\n };\n\n if (!showEditAccount) return null;\n return <EditAccount {...editAccountProps} />;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { onEnterKeyPress } from 'helpers/Account';\nimport OverlayFooter from 'components/OverlayFooter';\nimport { noop } from 'helpers/GlobalHelper';\nimport Header from '../Header';\nimport ForgotPasswordCTA from '../ForgotPasswordCTA';\n\nimport Style from './FacebookLinking.module.scss';\n\nconst FacebookLinking = ({\n facebookLinkingEmail,\n facebookLinkingEmailError,\n facebookLinkingGenericError,\n facebookLinkingPassword,\n facebookLinkingPasswordError,\n facebookLinkingShowPassword,\n forgotPasswordCTAProps,\n headerProps,\n language,\n onFieldChange,\n onLinkFacebook,\n}) => {\n const {\n profile_emailInputPlaceholder: emailPlaceholder,\n profile_passwordInputPlaceholder: passwordPlaceholder,\n profile_genericErrorSignInMessage: signinErrorMessage,\n profile_facebookExistingLinkHeader: linkHeader,\n profile_facebookExistingLinkMessage: linkMessage,\n profile_facebookExistingLinkButton: linkButtonText,\n profile_passwordInvalidError: invalidPasswordError,\n profile_emailInvalidError: emailInvalidError,\n } = language || {};\n let fbLinkPasswordInput = React.createRef();\n let passwordErrorText;\n let emailErrorText;\n let passwordErrorClass;\n let emailErrorClass;\n const passwordType = facebookLinkingShowPassword ? 'text' : 'password';\n let errorText = facebookLinkingGenericError ? signinErrorMessage : null;\n if (facebookLinkingGenericError === 'Invalid LoginID') {\n errorText = invalidPasswordError;\n }\n\n if (facebookLinkingPasswordError) {\n passwordErrorText = facebookLinkingPasswordError;\n passwordErrorClass = Style.error;\n }\n\n if (facebookLinkingEmailError) {\n emailErrorText = emailInvalidError;\n emailErrorClass = Style.error;\n }\n return (\n <main className={Style.facebookLinking}>\n <Header {...headerProps} />\n <div className={Style.facebookLinkingWrap}>\n <div className={Style.headerTextDesktop}>{linkHeader}</div>\n <div className={Style.facebookLinkingDescriptionText}>{linkMessage}</div>\n <div className={Style.signupFormContainer}>\n <div className={Style.error}>{errorText}</div>\n <input\n className={classNames(\n Style.signupField,\n Style.facebookLinkingField,\n Style.facebookLinkingEmailField,\n emailErrorClass,\n )}\n type=\"email\"\n name=\"facebookLinkingEmail\"\n placeholder={emailPlaceholder}\n value={facebookLinkingEmail}\n onChange={onFieldChange}\n autoCapitalize=\"none\"\n disabled\n />\n <div className={Style.error}>{emailErrorText}</div>\n <div className={Style.signupPasswordContainer}>\n <input\n autoFocus\n className={classNames(\n Style.signupField,\n Style.facebookLinkingField,\n passwordErrorClass,\n )}\n type={passwordType}\n name=\"facebookLinkingPassword\"\n placeholder={passwordPlaceholder}\n value={facebookLinkingPassword}\n onChange={onFieldChange}\n ref={input => {\n fbLinkPasswordInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n onKeyPress={e => onEnterKeyPress(e, onLinkFacebook)}\n />\n <label className={classNames(Style.signinShowPasswordLabel, passwordErrorClass)}>\n <input\n name=\"facebookLinkingShowPassword\"\n type=\"checkbox\"\n value={facebookLinkingShowPassword}\n onChange={e => {\n onFieldChange(e);\n fbLinkPasswordInput.focus();\n }}\n />\n <span />\n </label>\n </div>\n <div className={Style.error}>{passwordErrorText}</div>\n <div className={Style.signinButtonDesktop}>\n <button onClick={onLinkFacebook} className={Style.desktopButton}>\n {linkButtonText}\n </button>\n </div>\n <div className={classNames(Style.signupButton, Style.facebookLinkingLinkButton)}>\n <button onClick={onLinkFacebook} className={Style.btnPrimary}>\n {linkButtonText}\n </button>\n </div>\n <ForgotPasswordCTA {...forgotPasswordCTAProps} />\n </div>\n </div>\n <OverlayFooter language={language} />\n </main>\n );\n};\n\nFacebookLinking.defaultProps = {\n facebookLinkingEmail: null,\n facebookLinkingEmailError: null,\n facebookLinkingGenericError: null,\n facebookLinkingPassword: null,\n facebookLinkingPasswordError: null,\n facebookLinkingShowPassword: null,\n language: {},\n onFieldChange: noop,\n onLinkFacebook: noop,\n};\n\nFacebookLinking.propTypes = {\n facebookLinkingEmail: PropTypes.string,\n facebookLinkingEmailError: PropTypes.bool,\n facebookLinkingGenericError: PropTypes.string,\n facebookLinkingPassword: PropTypes.string,\n facebookLinkingPasswordError: PropTypes.string,\n facebookLinkingShowPassword: PropTypes.bool,\n forgotPasswordCTAProps: PropTypes.shape({}).isRequired,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({}),\n onFieldChange: PropTypes.func,\n onLinkFacebook: PropTypes.func,\n};\n\nexport default FacebookLinking;\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { isValidEmail, passwordErrors } from 'helpers/Account';\nimport FacebookLinking from '../AccountComponents/FacebookLinking';\n\nimport Style from '../AccountComponents/FacebookLinking/FacebookLinking.module.scss';\n\nexport function setFacebookLinkingErrors(cb, name) {\n const { facebookLinkingPassword, facebookLinkingEmail } = this.state;\n const facebookLinkingPasswordError = passwordErrors(facebookLinkingPassword);\n const facebookLinkingEmailError = !isValidEmail(facebookLinkingEmail);\n const setStateCb = () => {\n const { facebookLinkingPasswordError, facebookLinkingEmailError } = this.state;\n const hasErrors = facebookLinkingPasswordError || facebookLinkingEmailError || false;\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n if (name) {\n switch (name) {\n case 'facebookLinkingPassword':\n this.setState({ facebookLinkingPasswordError }, setStateCb);\n break;\n case 'facebookLinkingEmail':\n this.setState({ facebookLinkingEmailError }, setStateCb);\n break;\n default:\n break;\n }\n } else {\n return this.setState(\n {\n facebookLinkingPasswordError,\n facebookLinkingEmailError,\n },\n setStateCb,\n );\n }\n return null;\n}\n\nexport function renderFacebookLinking() {\n const { backgroundClass, language } = this.props;\n const {\n facebookLinkingEmail,\n facebookLinkingEmailError,\n facebookLinkingGenericError,\n facebookLinkingPassword,\n facebookLinkingPasswordError,\n facebookLinkingShowPassword,\n showFacebookLinking,\n } = this.state;\n const {\n profileSignin_forgotPasswordText: linkText,\n profile_facebookExistingLinkHeader: headerText,\n } = language || {};\n const headerProps = {\n headerText,\n hideCloseButton: true,\n onClose: this.onClose,\n renderLogo: this.renderLogo,\n };\n const forgotPasswordCTAProps = {\n containerClass: classNames(\n Style.signInForgotPasswordContainer,\n Style.facebookLinkingForgotPasswordContainer,\n ),\n linkClass: classNames(\n Style.signInForgotPassword,\n Style.link,\n Style.facebookLinkingForgotPassword,\n ),\n linkText,\n onClick: () => {\n this.toggleFacebookLinking();\n if (this.onForgotPasswordClick) this.onForgotPasswordClick();\n },\n };\n const facebookLinkingProps = {\n backgroundClass,\n facebookLinkingEmail,\n facebookLinkingEmailError,\n facebookLinkingGenericError,\n facebookLinkingPassword,\n facebookLinkingPasswordError,\n facebookLinkingShowPassword,\n forgotPasswordCTAProps,\n headerProps,\n language,\n onFieldChange: this.onFieldChange,\n onLinkFacebook: this.onLinkFacebook,\n };\n if (!showFacebookLinking) return null;\n return <FacebookLinking {...facebookLinkingProps} />;\n}\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { handleAnalytics, Events, SegmentPageProfileTypes } from '@foxcorp/delta-web-analytics';\nimport Header from '../Header';\nimport ForgotPasswordCTA from '../ForgotPasswordCTA';\nimport Style from './AppleLinking.module.scss';\n\nconst AppleLinking = ({\n appleLinkingError = '',\n createPasswordGenericError = '',\n createPasswordNewPassword = '',\n createPasswordNewPasswordError = null,\n createPasswordPasswordError = null,\n createPasswordShowNewPassword = null,\n headerProps = {},\n language = {\n profile_currentPwInputPlaceholder: '',\n profile_newPwInputPlaceholder: '',\n profile_passwordRequirementsText: '',\n profileEdit_submitButton: '',\n profile_passwordInvalidError: '',\n },\n onCTAClick = () => {},\n onCreatePassword = () => {},\n onFieldChange = e => e,\n forgotPasswordCTAProps,\n utagAccountSource,\n}) => {\n const {\n profile_createNewPwInputPlaceholder: newPlaceholder,\n profile_createPasswordInfoSIWA: createPasswordInfo,\n profile_createProfileButton: linkButtonText,\n profile_passwordInvalidError: passwordInvalidError,\n profile_noProfileCTA: noProfileCTAtext,\n profile_createProfileHeader: profileHeadertext,\n } = language || {};\n\n let createPasswordInputNew = React.createRef();\n\n const handleOnCreatePasswordInputNew = e => {\n onFieldChange(e);\n if (createPasswordInputNew.current) {\n createPasswordInputNew.current.focus();\n }\n };\n\n const passwordNewVisibility = createPasswordShowNewPassword ? 'text' : 'password';\n\n let passwordErrorText;\n let passwordNewErrorText;\n\n if (createPasswordPasswordError) {\n passwordErrorText = passwordInvalidError;\n }\n if (createPasswordNewPasswordError) {\n passwordNewErrorText = passwordInvalidError;\n }\n\n useEffect(() => {\n handleAnalytics({\n event: Events.PROFILE_APPLE_ID_LINK_STARTED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n ...getCommonTealiumProps(),\n },\n });\n }, [utagAccountSource]);\n\n return (\n <main className={Style.linkAccount}>\n <Header {...headerProps} />\n <div className={Style.accountLinkContainer}>\n <h1>{profileHeadertext}</h1>\n <div className={Style.createPasswordInfo}>{createPasswordInfo}</div>\n <div className={Style.error}>{createPasswordGenericError}</div>\n <div className={Style.passwordContainer}>\n <input\n className={Style.inputField}\n type=\"email\"\n name=\"appleLinkingEmail\"\n placeholder=\"Email Address\"\n onChange={onFieldChange}\n autoCapitalize=\"none\"\n />\n </div>\n <div className={Style.error}>{passwordErrorText}</div>\n <div className={Style.passwordContainer}>\n <input\n className={Style.inputField}\n type={passwordNewVisibility}\n name=\"createPasswordNewPassword\"\n placeholder={newPlaceholder}\n value={createPasswordNewPassword}\n onChange={onFieldChange}\n ref={input => {\n createPasswordInputNew = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n className={Style.inputField}\n name=\"createPasswordShowNewPassword\"\n type=\"checkbox\"\n value={createPasswordShowNewPassword}\n onChange={handleOnCreatePasswordInputNew}\n />\n <span />\n </label>\n </div>\n <div className={Style.error}>{passwordNewErrorText || appleLinkingError}</div>\n <button className={Style.createProfileButton} onClick={() => onCreatePassword(true)}>\n {linkButtonText}\n </button>\n <ForgotPasswordCTA {...forgotPasswordCTAProps} />\n <div className={Style.ctaText} onClick={onCTAClick}>\n {noProfileCTAtext}\n </div>\n </div>\n </main>\n );\n};\n\nAppleLinking.propTypes = {\n appleLinkingError: PropTypes.string,\n createPasswordGenericError: PropTypes.string,\n createPasswordNewPassword: PropTypes.string.isRequired,\n createPasswordNewPasswordError: PropTypes.bool,\n createPasswordPassword: PropTypes.string.isRequired,\n createPasswordPasswordError: PropTypes.bool,\n createPasswordShowNewPassword: PropTypes.bool.isRequired,\n forgotPasswordCTAProps: PropTypes.shape({}).isRequired,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({}).isRequired,\n onCreatePassword: PropTypes.func.isRequired,\n onCTAClick: PropTypes.func,\n onCreatePasswordBackClick: PropTypes.func.isRequired,\n onFieldChange: PropTypes.func.isRequired,\n userEmail: PropTypes.string,\n utagAccountSource: PropTypes.string,\n};\n\nexport default AppleLinking;\n","import React from 'react';\nimport { isValidPassword } from 'helpers/Account';\nimport AppleLinking from '../AccountComponents/AppleLinking';\nimport Style from '../SharedStyles/SharedStyles.module.scss';\n\nfunction setCreatePasswordErrors(cb, name) {\n const { createPasswordNewPassword } = this.state;\n const createPasswordNewPasswordError = !isValidPassword(createPasswordNewPassword);\n const setStateCb = () => {\n const { createPasswordNewPasswordError } = this.state;\n const hasErrors = createPasswordNewPasswordError || false;\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n\n if (name) {\n switch (name) {\n case 'createPasswordNewPasswordError':\n this.setState({ createPasswordNewPasswordError }, setStateCb);\n break;\n default:\n break;\n }\n } else {\n return this.setState(\n {\n createPasswordNewPasswordError,\n },\n setStateCb,\n );\n }\n return null;\n}\n\nfunction onCreatePassword(link) {\n const {\n language: { profileError_passwordLength: passwordLengthErrorText },\n } = this.props;\n const { createPasswordNewPassword } = this.state;\n\n if (createPasswordNewPassword.length < 6) {\n this.setState({\n createPasswordGenericError: passwordLengthErrorText,\n });\n\n return;\n }\n\n setCreatePasswordErrors.bind(this)(hasErrors => {\n if (!hasErrors) {\n this.onAppleLinking(link);\n }\n });\n}\n\nfunction onAppleLinkingBackClick() {\n this.toggleAppleLinkAccount();\n this.toggleAccountMain();\n}\n\nexport default function renderAppleLinking() {\n const {\n language: { profileChangePw_header: headerText, profileSignin_forgotPasswordText: linkText },\n language,\n backgroundClass,\n isMobile,\n utagAccountSource,\n } = this.props;\n const {\n appleLinkingError,\n createPasswordNewPassword,\n createPasswordShowNewPassword,\n createPasswordGenericError,\n createPasswordNewPasswordError,\n showLinkAccount,\n userEmail,\n } = this.state;\n const createPasswordBackClick = onAppleLinkingBackClick.bind(this);\n const createPassword = onCreatePassword.bind(this);\n const forgotPasswordCTAProps = {\n linkText,\n onClick: () => {\n if (this.onForgotPasswordClick) this.onForgotPasswordClick();\n },\n };\n const onCTAClick = () => {\n this.setState({ showLinkAccount: false, appleLinkingEmail: '', showLinkToProfile: true });\n this.toggleCreatePassword();\n };\n const headerProps = {\n headerText,\n iconMobile: <button onClick={() => createPasswordBackClick()} className={Style.back} />,\n isDesktop: !isMobile,\n onClose: this.onClose,\n renderLogo: this.renderLogo,\n showHeaderDesktop: true,\n };\n const appleLinkingProps = {\n appleLinkingError,\n backgroundClass,\n createPasswordGenericError,\n createPasswordNewPassword,\n createPasswordNewPasswordError,\n createPasswordShowNewPassword,\n onCTAClick,\n forgotPasswordCTAProps,\n headerProps,\n language,\n onCreatePassword: createPassword,\n onAppleLinkingBackClick: createPasswordBackClick,\n onFieldChange: this.onFieldChange,\n userEmail,\n utagAccountSource\n };\n if (!showLinkAccount) return null;\n return <AppleLinking {...appleLinkingProps} />;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from 'components/Icon';\n\nconst ParentalIcons = ({ enabled, theme = {} }) => (\n <div>\n {enabled ? (\n <Icon icon=\"checkmark-thin\" color=\"white\" size=\"large\" />\n ) : (\n <Icon theme={theme} icon=\"blocked\" size=\"large\" />\n )}\n </div>\n);\n\nexport default ParentalIcons;\n\nParentalIcons.propTypes = {\n enabled: PropTypes.bool.isRequired,\n theme: PropTypes.shape({}),\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\nimport _ from 'lodash';\n\nconst selectAppPCS = state => state.app.pcs;\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _.isEqual);\n\nexport const makeSelectAppPCS = createDeepEqualSelector(selectAppPCS, pcs => pcs);\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport ReactSlider from 'react-slider';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Header from '../Header';\nimport ParentalIcons from '../ParentalIcons';\nimport ForgotPasswordCTA from '../ForgotPasswordCTA';\nimport { fetchPCS } from './ParentalControlsActions';\nimport { makeSelectAppPCS } from './selectors';\n\nimport Style from './ParentalControls.module.scss';\n\nconst ParentalControls = ({\n account = { accessToken: '' },\n forgotPasswordCTAProps = {\n containerClass: '',\n linkClass: '',\n linkText: '',\n onClick: () => {},\n text: '',\n theme: '',\n },\n getRatingImageURL = r => r,\n handleMovieRatingChange = () => {},\n handleTvRatingChange = () => {},\n headerProps = {},\n language = {\n profile_pcsContinueLabel: '',\n profile_pcsCurrentMovieLabel: '',\n profile_pcsCurrentTvLabel: '',\n profile_pcsInstructions: '',\n profile_pcsPasswordPrompt: '',\n profile_pcsSaveLabel: '',\n profile_passwordInvalidError: '',\n },\n onFieldChange = e => e,\n onSaveParentalControls = pcs => pcs,\n onVerifyPassword = () => {},\n parentalControlsNewMovieRatingIndex: newMovieIdx = 0,\n parentalControlsNewTvRatingIndex: newTvIdx = 0,\n parentalControlsPassword = null,\n parentalControlsPasswordError = null,\n parentalControlsPasswordVerified = false,\n parentalControlsShowPassword = false,\n pcs,\n dispatch,\n}) => {\n const {\n profile_pcsContinueLabel: continueLabel,\n profile_pcsCurrentMovieLabel: currentMovieLabel,\n profile_pcsCurrentTvLabel: currentTvLabel,\n profile_pcsInstructions: instructions,\n profile_pcsPasswordPrompt: passwordPrompt,\n profile_pcsSaveLabel: saveLabelText,\n profile_passwordInvalidError: passwordInvalidError,\n } = language || {};\n\n const {\n pcsRatings: { tv, mpaa: allMovieRatings },\n } = window.ExternalConfig;\n\n const { accessToken } = account;\n\n useEffect(() => {\n dispatch(fetchPCS(accessToken));\n }, [accessToken, dispatch]);\n\n const allTvRatings = _.filter(tv, 'parentalControlEnabled');\n const { tv_rating_val: tvVal } = pcs;\n const { mv_rating_val: mvVal } = pcs;\n\n const defaultTvRatingIndex = tvVal\n ? _.findIndex(allTvRatings, { label: tvVal })\n : allTvRatings.length - 1;\n const defaultMovieRatingIndex = mvVal\n ? _.findIndex(allMovieRatings, { label: mvVal })\n : allMovieRatings.length - 1;\n\n const currentTvRating = allTvRatings[defaultTvRatingIndex];\n const currentMovieRating = allMovieRatings[defaultMovieRatingIndex];\n const tvSliderValue = newTvIdx !== null ? newTvIdx : defaultTvRatingIndex;\n const movieSliderValue = newMovieIdx !== null ? newMovieIdx : defaultMovieRatingIndex;\n const passwordVisibility = parentalControlsShowPassword ? 'text' : 'password';\n\n let pcsPasswordInput = React.createRef();\n\n const handleOnChange = e => {\n onFieldChange(e);\n if (pcsPasswordInput.current) {\n pcsPasswordInput.current.focus();\n }\n };\n\n let passwordErrorText;\n\n // local error checking\n if (parentalControlsPasswordError) {\n passwordErrorText = passwordInvalidError;\n }\n\n return (\n <main className={Style.parentalControls}>\n <Header {...headerProps} />\n {!parentalControlsPasswordVerified ? (\n <div className={Style.parentalControlsContainer}>\n <div className={Style.parentalControlsCurrentValues}>\n {currentTvLabel} {currentTvRating.label}\n <span className={Style.parentalControlsCurrentValueMinor}>\n ({currentTvRating.description})\n </span>\n <span>\n {currentMovieLabel} {currentMovieRating.label}\n </span>\n <span className={Style.parentalControlsCurrentValueMinor}>\n ({currentMovieRating.description})\n </span>\n </div>\n <div className={Style.parentalControlsInstructions}>{passwordPrompt}</div>\n <div className={Style.signupPasswordContainer}>\n <input\n className={Style.inputField}\n type={passwordVisibility}\n name=\"parentalControlsPassword\"\n placeholder=\"Password\"\n value={parentalControlsPassword}\n onChange={onFieldChange}\n ref={input => {\n pcsPasswordInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n name=\"parentalControlsShowPassword\"\n type=\"checkbox\"\n value={parentalControlsShowPassword.toString()}\n onChange={handleOnChange}\n />\n <span />\n </label>\n </div>\n <div className={Style.error}>{passwordErrorText}</div>\n <button className={Style.btnPrimary} onClick={onVerifyPassword} type=\"submit\">\n {continueLabel}\n </button>\n <ForgotPasswordCTA {...forgotPasswordCTAProps} />\n </div>\n ) : (\n <div className={Style.parentalControlsContainer}>\n <div className={Style.parentalControlsInstructions}>{instructions}</div>\n <div className={Style.parentalControlsCurrentValues}>\n {currentTvLabel} {currentTvRating.label}\n <span className={Style.parentalControlsCurrentValueMinor}>\n ({currentTvRating.description})\n </span>\n <ReactSlider\n className={Style.parentalControlsSlider}\n handleClassName={Style.parentalControlsSliderHandle}\n barClassName={Style.parentalControlsSliderBar}\n withBars\n max={allTvRatings.length - 1}\n value={tvSliderValue}\n onChange={handleTvRatingChange}\n />\n <div className={Style.parentalControlsSliderLabels}>\n {_.map(allTvRatings, (r, idx) => (\n <div key={r.id}>\n <img\n className={Style.parentalControlsRatingImage}\n src={getRatingImageURL(r.label)}\n alt={r.label}\n />\n <ParentalIcons enabled={tvSliderValue >= idx} />\n </div>\n ))}\n </div>\n <span>\n {currentMovieLabel} {currentMovieRating.label}\n </span>\n <span className={Style.parentalControlsCurrentValueMinor}>\n ({currentMovieRating.description})\n </span>\n <ReactSlider\n className={Style.parentalControlsSlider}\n handleClassName={Style.parentalControlsSliderHandle}\n barClassName={Style.parentalControlsSliderBar}\n withBars\n max={allMovieRatings.length - 1}\n value={movieSliderValue}\n onChange={handleMovieRatingChange}\n />\n <div className={Style.parentalControlsSliderLabels}>\n {_.map(allMovieRatings, (r, idx) => (\n <div key={r.id}>\n <img\n className={classNames(Style.parentalControlsRatingImage, Style.pcsRatingMovie)}\n src={getRatingImageURL(r.label)}\n alt={r.label}\n />\n <ParentalIcons enabled={movieSliderValue >= idx} />\n </div>\n ))}\n </div>\n </div>\n <button\n className={Style.btnPrimary}\n onClick={() => onSaveParentalControls(pcs)}\n type=\"submit\"\n >\n {saveLabelText}\n </button>\n </div>\n )}\n </main>\n );\n};\n\nconst mapStateToProps = state => ({\n pcs: makeSelectAppPCS(state),\n});\n\nconst mapDispatchToProps = dispatch => ({\n dispatch,\n});\n\nParentalControls.propTypes = {\n account: PropTypes.shape({}).isRequired,\n dispatch: PropTypes.func.isRequired,\n forgotPasswordCTAProps: PropTypes.shape({}).isRequired,\n getRatingImageURL: PropTypes.func.isRequired,\n handleMovieRatingChange: PropTypes.func.isRequired,\n handleTvRatingChange: PropTypes.func.isRequired,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({\n profile_pcsContinueLabel: PropTypes.string,\n profile_pcsCurrentMovieLabel: PropTypes.string,\n profile_pcsCurrentTvLabel: PropTypes.string,\n profile_pcsInstructions: PropTypes.string,\n profile_pcsPasswordPrompt: PropTypes.string,\n profile_pcsSaveLabel: PropTypes.string,\n profile_passwordInvalidError: PropTypes.string,\n }).isRequired,\n onFieldChange: PropTypes.func.isRequired,\n onParentalControlsBackClick: PropTypes.func.isRequired,\n onSaveParentalControls: PropTypes.func.isRequired,\n onVerifyPassword: PropTypes.func.isRequired,\n parentalControlsNewMovieRatingIndex: PropTypes.number,\n parentalControlsNewTvRatingIndex: PropTypes.number,\n parentalControlsPassword: PropTypes.string.isRequired,\n parentalControlsPasswordError: PropTypes.bool,\n parentalControlsPasswordVerified: PropTypes.bool.isRequired,\n parentalControlsShowPassword: PropTypes.bool.isRequired,\n pcs: PropTypes.shape({}).isRequired,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(ParentalControls);\n","import React from 'react';\nimport _ from 'lodash';\nimport { isValidPassword } from 'helpers/Account';\nimport ParentalControls from '../AccountComponents/ParentalControls';\nimport { fetchPCS, setPCS } from '../AccountComponents/ParentalControls/ParentalControlsActions';\n\nimport Style from '../SharedStyles/SharedStyles.module.scss';\n\nfunction getRatingImageURL(rating) {\n const baseSlug = _.get(window.ExternalConfig, 'baseUrlSlug', '');\n return `${baseSlug}/static/images/ratings/${rating}-min.png`;\n}\n\nfunction onParentalControlsBackClick() {\n this.toggleParentalControls();\n this.toggleAccountMain();\n}\n\nfunction setParentalControlsPasswordErrors(cb) {\n const { parentalControlsPassword } = this.state;\n const parentalControlsPasswordError = !isValidPassword(parentalControlsPassword);\n const setStateCb = () => {\n const { parentalControlsPasswordError } = this.state;\n const hasErrors = parentalControlsPasswordError || false;\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n return this.setState(\n {\n parentalControlsPasswordError,\n },\n setStateCb,\n );\n}\n\nfunction onVerifyPassword() {\n const {\n account: { email },\n login,\n } = this.props;\n const { parentalControlsPassword } = this.state;\n const handleSuccess = () => {\n this.setState({\n parentalControlsPasswordVerified: true,\n showAccountMain: false,\n showParentalControls: true,\n });\n };\n setParentalControlsPasswordErrors.bind(this)(hasErrors => {\n if (!hasErrors && login) {\n const body = {\n password: parentalControlsPassword,\n email,\n };\n login(body, result => {\n const { error } = result;\n if (error) return this.setState({ parentalControlsPasswordError: error.message });\n return handleSuccess();\n });\n }\n });\n}\n\nasync function onSaveParentalControls(pcs) {\n const { account } = this.props;\n const { tv_rating_val, mv_rating_val } = pcs;\n const {\n parentalControlsNewTvRatingIndex: newTvIdx,\n parentalControlsNewMovieRatingIndex: newMovieIdx,\n } = this.state;\n const {\n pcsRatings: { tv, mpaa: allMovieRatings },\n } = window.ExternalConfig;\n\n const allTvRatings = _.filter(tv, 'parentalControlEnabled');\n\n const newPCS = {};\n\n if (newTvIdx !== null) {\n newPCS.tv_rating_val = _.get(allTvRatings, `${newTvIdx}.id`, '').toUpperCase();\n } else {\n newPCS.tv_rating_val = tv_rating_val;\n }\n\n if (newMovieIdx !== null) {\n newPCS.mv_rating_val = _.get(allMovieRatings, `${newMovieIdx}.id`, '').toUpperCase();\n } else {\n newPCS.mv_rating_val = mv_rating_val;\n }\n\n try {\n if (account) {\n await setPCS(account.accessToken, newPCS);\n await fetchPCS(account.accessToken);\n }\n } catch (err) {\n console.log(err);\n }\n\n this.toggleParentalControls();\n this.toggleAccountMain();\n}\n\nexport default function renderParentalControls() {\n const { account, backgroundClass, isMobile, language, pcs } = this.props;\n const { profileSignin_forgotPasswordText: linkText, profile_pcsHeader: headerText } =\n language || {};\n const {\n showParentalControls,\n parentalControlsPasswordVerified,\n parentalControlsPassword,\n parentalControlsShowPassword,\n parentalControlsPasswordError,\n parentalControlsNewTvRatingIndex,\n parentalControlsNewMovieRatingIndex,\n } = this.state;\n const parentalControlsBackClick = onParentalControlsBackClick.bind(this);\n const ratingImageURL = getRatingImageURL.bind(this);\n const saveParentalControls = onSaveParentalControls.bind(this);\n const verifyPassword = onVerifyPassword.bind(this);\n const headerProps = {\n headerText,\n iconMobile: <button onClick={() => parentalControlsBackClick()} className={Style.back} />,\n isDesktop: !isMobile,\n onClose: opts => this.onClose(opts),\n renderLogo: this.renderLogo,\n showHeaderDesktop: true,\n };\n const forgotPasswordCTAProps = {\n linkText,\n onClick: () => {\n if (this.onForgotPasswordClick) this.onForgotPasswordClick();\n },\n };\n\n const handleTvRatingChange = newIndex => {\n this.setState({ parentalControlsNewTvRatingIndex: newIndex });\n };\n\n const handleMovieRatingChange = newIndex => {\n this.setState({ parentalControlsNewMovieRatingIndex: newIndex });\n };\n\n const parentalControlsProps = {\n account,\n backgroundClass,\n forgotPasswordCTAProps,\n getRatingImageURL: ratingImageURL,\n handleMovieRatingChange,\n handleTvRatingChange,\n headerProps,\n language,\n onFieldChange: this.onFieldChange,\n onParentalControlsBackClick: parentalControlsBackClick,\n onSaveParentalControls: saveParentalControls,\n onVerifyPassword: verifyPassword,\n parentalControlsNewMovieRatingIndex,\n parentalControlsNewTvRatingIndex,\n parentalControlsPassword,\n parentalControlsPasswordError,\n parentalControlsPasswordVerified,\n parentalControlsShowPassword,\n pcs,\n };\n if (!showParentalControls) return null;\n return <ParentalControls {...parentalControlsProps} />;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport Style from './Menu.module.scss';\n\nconst Menu = ({\n hasFavorites,\n firstName,\n menu,\n toggleAccountMain,\n toggleChangePassword,\n toggleEditAccount,\n toggleManageFavorites,\n toggleParentalControls,\n toggleSignOut,\n}) => {\n const { profileLogout_logoutButton: signoutLabel } = window.Language;\n const MANAGE_FAVORITES = 'manageFavorites';\n const menus = menu.map(item => {\n const { id } = item;\n let { label } = item;\n let clickEvent = null;\n switch (id) {\n case 'eProfile':\n clickEvent = () => {\n toggleEditAccount();\n toggleAccountMain();\n };\n break;\n case 'changePassword':\n clickEvent = () => {\n toggleChangePassword();\n toggleAccountMain();\n };\n break;\n case MANAGE_FAVORITES:\n clickEvent = () => {\n toggleManageFavorites();\n toggleAccountMain();\n };\n break;\n case 'signOut':\n clickEvent = () => {\n toggleSignOut();\n toggleAccountMain();\n };\n label = (\n <div className={Style.mobileSplit}>\n <span>{`${firstName}'s account`}</span>\n <span>{signoutLabel}</span>\n </div>\n );\n break;\n case 'parentalControls':\n clickEvent = () => {\n toggleParentalControls();\n toggleAccountMain();\n };\n break;\n default:\n break;\n }\n\n if (id === MANAGE_FAVORITES && !hasFavorites) {\n return null;\n }\n\n return (\n <button key={`account-menu-${id}`} onClick={clickEvent} className={Style.accountListItem}>\n {label}\n </button>\n );\n });\n return <div className={Style.accountContainer}>{menus}</div>;\n};\n\nexport default Menu;\n\nMenu.defaultProps = {\n firstName: '',\n hasFavorites: null,\n menu: [],\n toggleAccountMain: noop,\n toggleChangePassword: noop,\n toggleEditAccount: noop,\n toggleManageFavorites: noop,\n toggleParentalControls: noop,\n toggleSignOut: noop,\n};\n\nMenu.propTypes = {\n firstName: PropTypes.string,\n hasFavorites: PropTypes.bool,\n menu: PropTypes.arrayOf(PropTypes.shape({})),\n toggleAccountMain: PropTypes.func,\n toggleChangePassword: PropTypes.func,\n toggleEditAccount: PropTypes.func,\n toggleManageFavorites: PropTypes.func,\n toggleParentalControls: PropTypes.func,\n toggleSignOut: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { noop } from 'helpers/GlobalHelper';\nimport Style from 'components/Account/SharedStyles/SharedStyles.module.scss';\nimport Header from '../Header';\nimport Menu from './Menu';\n\nconst AccountMain = ({\n favoritesManager,\n firstName,\n headerProps,\n toggleAccountMain,\n toggleChangePassword,\n toggleEditAccount,\n toggleManageFavorites,\n toggleParentalControls,\n toggleSignOut,\n}) => {\n const {\n profile: { menu },\n } = window.ExternalConfig;\n const favorites = _.get(favoritesManager, 'favoritesDetails', []);\n const hasFavorites = favorites.length > 0;\n const menuProps = {\n menu,\n firstName,\n toggleEditAccount,\n toggleAccountMain,\n toggleChangePassword,\n toggleManageFavorites,\n toggleSignOut,\n toggleParentalControls,\n hasFavorites,\n };\n\n return (\n <main className={Style.AccountContainer}>\n <Header {...headerProps} />\n <div className={Style.InnerContainer}>\n <Menu {...menuProps} />\n </div>\n </main>\n );\n};\n\nexport default AccountMain;\n\nAccountMain.defaultProps = {\n favoritesManager: {},\n firstName: '',\n headerProps: {},\n toggleAccountMain: noop,\n toggleChangePassword: noop,\n toggleCreatePassword: noop,\n toggleEditAccount: noop,\n toggleManageFavorites: noop,\n toggleParentalControls: noop,\n toggleSignOut: noop,\n};\n\nAccountMain.propTypes = {\n favoritesManager: PropTypes.shape({}),\n firstName: PropTypes.string,\n headerProps: PropTypes.shape({}),\n toggleAccountMain: PropTypes.func,\n toggleChangePassword: PropTypes.func,\n toggleCreatePassword: PropTypes.func,\n toggleEditAccount: PropTypes.func,\n toggleManageFavorites: PropTypes.func,\n toggleParentalControls: PropTypes.func,\n toggleSignOut: PropTypes.func,\n};\n","/* global LanguageExport */\n\nimport React from 'react';\nimport Header from '../Header';\nimport Style from './activationSuccess.module.scss';\n\nconst PATH_LOGO = '/static/images/svg/FoxNow.svg';\n\nconst ActivationSuccess = () => {\n const {\n profileActivate_successButton: buttonText,\n profileActivate_successHeader: headerText,\n profileActivate_successText: successText,\n } = LanguageExport;\n const renderLogo = () => (\n <div>\n <img src={PATH_LOGO} alt=\"fox now\" />\n <span>/</span>\n <span>Activate</span>\n </div>\n );\n const headerProps = {\n headerText: 'TEST',\n renderLogo,\n showHeaderDesktop: true,\n };\n return (\n <main className={Style.activationSuccess}>\n <Header {...headerProps} />\n <div className={Style.activationSuccessContainer}>\n <div className={Style.headerText}>{headerText}</div>\n <div className={Style.successText}>{successText}</div>\n <button className={Style.cta}>{buttonText}</button>\n </div>\n </main>\n );\n};\n\nexport default ActivationSuccess;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\n\nimport Style from '../SignInApple.module.scss';\n\nconst SignInAppleButton = ({ buttonText, handleSignIn, isConsolidatedSignUp }) => (\n <div>\n <button\n className={classNames(\n Style.signInAppleButton,\n isConsolidatedSignUp ? Style.circleIcon : null,\n )}\n onClick={handleSignIn}\n >\n <span className={Style.signInAppleButtonIcon}>\n <Icon icon=\"apple\" color=\"white\" size=\"full\" />\n </span>\n {!isConsolidatedSignUp && <span className={Style.signInAppleButtonText}>{buttonText}</span>}\n </button>\n {!isConsolidatedSignUp && <div className={Style.defaultErrorGenericText} />}\n </div>\n);\n\nSignInAppleButton.propTypes = {\n isConsolidatedSignUp: PropTypes.bool,\n buttonText: PropTypes.string,\n handleSignIn: PropTypes.func,\n};\n\nexport default SignInAppleButton;\n","const createElement = (opt = null) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n if (opt) {\n Object.keys(opt).forEach(key => {\n script[key] = opt[key];\n });\n }\n return script;\n};\n\nconst injectScripUrl = (scriptUrl = '', opt) => {\n if (!scriptUrl) {\n console.warn('you need to pass the script url!!!');\n return false;\n }\n const elem = createElement(opt);\n elem.async = true;\n elem.src = scriptUrl;\n document.body.appendChild(elem);\n const promise = new Promise(resolve => {\n elem.onload = () => {\n resolve({\n loaded: true,\n });\n };\n });\n return promise;\n};\n\nconst injectScriptSrc = (scriptSrc = '', opt) => {\n if (!scriptSrc) {\n console.warn('you need to pass the script source!!!');\n return false;\n }\n const elem = createElement(opt);\n elem.text = scriptSrc;\n document.body.appendChild(elem);\n return Promise.resolve({ loaded: true });\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport function inject(scriptUrl, scriptSrc, opt) {\n if (!scriptUrl && !scriptSrc) {\n console.warn('please pass a script url or src');\n }\n return scriptUrl ? injectScripUrl(scriptUrl, opt) : injectScriptSrc(scriptSrc, opt);\n}\n","/* global AppleID */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { parseJwt } from 'helpers/AnonymousHelper';\nimport SignInAppleButton from './components/SignInAppleButton';\nimport Style from './SignInApple.module.scss';\nimport { inject } from '../../../../external-scripts/AsyncScriptLoader'\n\nconst appleSignInScript =\n 'https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js';\n\nconst SignInApple = ({\n isUpsell,\n onAppleSignIn,\n setAppleEmail,\n setAppleToken,\n setIsAppleEmailShared,\n isConsolidatedSignUp,\n}) => {\n const {\n appleLoginText,\n signInWithApple_clientID,\n signInWithApple_ShareUpsellBtnText: appleUpsellBtnText,\n } = window.Language;\n\n const handleSignIn = async () => {\n await inject(appleSignInScript);\n\n AppleID?.auth.init({\n clientId: signInWithApple_clientID,\n scope: 'name email',\n redirectURI: window.location.origin,\n usePopup: true,\n });\n // load apple script and do every thing else here for apple sign in\n AppleID?.auth.signIn();\n };\n\n // Listen for authorization success\n document.addEventListener('AppleIDSignInOnSuccess', result => {\n const { authorization } = result.detail;\n const parsedJwt = parseJwt(authorization.id_token);\n const { email, is_private_email } = parsedJwt;\n setAppleToken(authorization.id_token);\n setAppleEmail(email);\n setIsAppleEmailShared(!is_private_email);\n onAppleSignIn(authorization.id_token);\n });\n\n document.addEventListener('AppleIDSignInOnFailure', error => {});\n\n return (\n <>\n {isUpsell ? (\n <button className={Style.btnPrimary} onClick={handleSignIn}>\n {appleUpsellBtnText}\n </button>\n ) : (\n <SignInAppleButton\n handleSignIn={handleSignIn}\n buttonText={appleLoginText}\n isConsolidatedSignUp={isConsolidatedSignUp}\n />\n )}\n </>\n );\n};\n\nSignInApple.propTypes = {\n isConsolidatedSignUp: PropTypes.bool,\n isUpsell: PropTypes.bool,\n onAppleSignIn: PropTypes.func,\n setAppleEmail: PropTypes.func,\n setAppleToken: PropTypes.func,\n setIsAppleEmailShared: PropTypes.func,\n};\n\nexport default SignInApple;\n","var _defs, _use;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFoxSoul(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 92 67\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.382 40.139c4.152 0 7.509 1.222 10.071 3.665 2.562 2.444 3.843 5.67 3.843 9.68 0 3.962-1.28 7.176-3.843 9.643-2.562 2.468-5.92 3.701-10.07 3.701-4.177 0-7.545-1.221-10.107-3.665-2.562-2.443-3.844-5.67-3.844-9.68 0-3.961 1.282-7.176 3.844-9.643 2.562-2.468 5.93-3.701 10.106-3.701zm23.96.427v14.476c0 1.26.083 2.056.25 2.389.355.927 1.138 1.39 2.348 1.39.64 0 1.18-.16 1.62-.48.438-.321.716-.678.835-1.07.119-.393.178-1.136.178-2.229V40.566h9.11v15.572c0 1.473-.225 3.017-.676 4.632-.45 1.616-1.654 3.018-3.612 4.206-1.957 1.187-4.442 1.781-7.455 1.781-3.559 0-6.406-.855-8.54-2.565-2.136-1.71-3.204-4.395-3.204-8.054V40.566h9.146zm-47.492-.32c1.495 0 2.883.177 4.164.533 1.28.356 2.657.95 4.128 1.78L17.58 49.07c-.878-.688-1.739-1.186-2.58-1.495a7.659 7.659 0 00-2.652-.462c-.64 0-1.156.124-1.548.373-.391.249-.587.562-.587.941 0 .616.676 1.054 2.029 1.314l1.672.39c.925.238 1.637.439 2.135.605.499.165 1.43.64 2.794 1.42 1.364.783 2.046 2.594 2.046 5.436 0 2.746-1.02 4.96-3.06 6.642-2.04 1.681-4.722 2.522-8.043 2.522-2.444 0-4.39-.285-5.836-.854-1.447-.57-2.32-.919-2.616-1.05-.296-.13-.741-.361-1.334-.694l2.882-7.117c2.254 1.756 4.342 2.634 6.264 2.634.711 0 1.275-.13 1.69-.39.415-.261.623-.629.623-1.102 0-.569-.184-.918-.552-1.048a8.629 8.629 0 00-.943-.284 20.632 20.632 0 00-1.388-.231c-1.423-.26-2.64-.569-3.647-.924-1.009-.355-1.922-1.106-2.74-2.255C1.37 52.293.96 50.926.96 49.339c0-2.676 1.014-4.86 3.042-6.554 2.029-1.693 4.644-2.54 7.847-2.54zm72.387.32v17.259h7.722v8.434H74.985V40.566h9.252zm-48.855 7.793c-1.329 0-2.426.48-3.291 1.441-.867.961-1.3 2.189-1.3 3.683 0 1.495.428 2.723 1.282 3.684.854.96 1.957 1.44 3.31 1.44 1.304 0 2.383-.485 3.238-1.458.854-.973 1.28-2.206 1.28-3.701 0-1.447-.426-2.657-1.28-3.63-.855-.972-1.934-1.459-3.239-1.459zM24.001.25l.705 10.732H11.585v5.131h10.732v10.575H11.585v12.69H.54V.25H24zm44.925.157l4.856 8.303L78.561.407h11.868L79.697 19.051l11.75 20.21h-12.18l-5.68-9.714-5.601 9.714H56.118l11.554-20.093L56.822.408h12.104zM43.115.955l.335.003c10.145.181 18.269 8.57 18.269 18.915l-.003.34c-.178 10.301-8.413 18.578-18.601 18.578l-.337-.003c-10.184-.18-18.346-8.533-18.346-18.915C24.432 9.415 32.774.955 43.115.955zm0 7.755l-.174.006c-1.609.102-2.96 1.624-2.96 3.402v15.51c0 1.723 1.45 3.173 3.134 3.173l.188-.005c1.745-.082 3.023-1.315 3.023-3.167V12.118l-.005-.19c-.09-1.757-1.43-3.218-3.206-3.218z\",\n id: \"FoxSoul_svg__a\"\n }))), _use || (_use = /*#__PURE__*/React.createElement(\"use\", {\n fill: \"#FFF\",\n xlinkHref: \"#FoxSoul_svg__a\",\n fillRule: \"evenodd\"\n })));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2aWV3Qm94PSIwIDAgOTIgNjciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+QUFBQTQyQkEtRjU1OC00RDUxLThBNjEtM0JGQjUxQ0UwN0QyQDB4PC90aXRsZT4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0zNS4zODIzMjE3LDQwLjEzODYzODMgQzM5LjUzMzY2NjIsNDAuMTM4NjM4MyA0Mi44OTA5NzA5LDQxLjM2MDc2NzIgNDUuNDUzMjExMSw0My44MDQwMDAzIEM0OC4wMTUzNzgyLDQ2LjI0NzgxODkgNDkuMjk2NDk4Myw0OS40NzQ1NTI0IDQ5LjI5NjQ5ODMsNTMuNDgzNDY4OSBDNDkuMjk2NDk4Myw1Ny40NDU4MzY0IDQ4LjAxNTM3ODIsNjAuNjYwMjc0IDQ1LjQ1MzIxMTEsNjMuMTI3MzY3MSBDNDIuODkwOTcwOSw2NS41OTUxMTg5IDM5LjUzMzY2NjIsNjYuODI4MzcyNiAzNS4zODIzMjE3LDY2LjgyODM3MjYgQzMxLjIwNjQ1ODYsNjYuODI4MzcyNiAyNy44Mzc5NTU4LDY1LjYwNjY4MjkgMjUuMjc1NzE1NSw2My4xNjMwMTA3IEMyMi43MTM2MjE2LDYwLjcxOTcwNDQgMjEuNDMyNDI4Myw1Ny40OTMwNDQxIDIxLjQzMjQyODMsNTMuNDgzNDY4OSBDMjEuNDMyNDI4Myw0OS41MjE3NjAxIDIyLjcxMzYyMTYsNDYuMzA3MjQ5MyAyNS4yNzU3MTU1LDQzLjgzOTU3MDcgQzI3LjgzNzk1NTgsNDEuMzcyNDc3NiAzMS4yMDY0NTg2LDQwLjEzODYzODMgMzUuMzgyMzIxNyw0MC4xMzg2MzgzIFogTTU5LjM0MjEzNzIsNDAuNTY1NjI5NiBMNTkuMzQyMTM3Miw1NS4wNDIwNTI4IEM1OS4zNDIxMzcyLDU2LjMwMjAyMSA1OS40MjQ5ODg0LDU3LjA5ODI1NjUgNTkuNTkxMzQ5Niw1Ny40MzA4MzI1IEM1OS45NDcxMjY4LDU4LjM1ODIyNDcgNjAuNzI5OTY4NSw1OC44MjE0NDUgNjEuOTM5OTQ3OCw1OC44MjE0NDUgQzYyLjU4MDU4MTEsNTguODIxNDQ1IDYzLjExOTkxOTIsNTguNjYxMzA1IDYzLjU1OTEzMzIsNTguMzQwNDM5NSBDNjMuOTk3OTA4LDU4LjAxOTY0NzEgNjQuMjc2Mzk2NSw1Ny42NjMyMTExIDY0LjM5NTQwMzcsNTcuMjcwNjE5MyBDNjQuNTEzODk4NSw1Ni44NzgxMDA2IDY0LjU3MzQwMjEsNTYuMTM1MjIwNyA2NC41NzM0MDIxLDU1LjA0MjA1MjggTDY0LjU3MzQwMjEsNDAuNTY1NjI5NiBMNzMuNjgzNDUxNCw0MC41NjU2Mjk2IEw3My42ODM0NTE0LDU2LjEzODAwMTkgQzczLjY4MzQ1MTQsNTcuNjExMDI2NiA3My40NTc3MzMsNTkuMTU0OTcyNSA3My4wMDczMjA5LDYwLjc3MDQyNTEgQzcyLjU1NjMyMzMsNjIuMzg2MjQzOCA3MS4zNTI1NjUyLDYzLjc4Nzk4MTIgNjkuMzk1Mzg3Nyw2NC45NzU2Mzc1IEM2Ny40MzgxMzcyLDY2LjE2MzI5MzkgNjQuOTUyNjAwMiw2Ni43NTcwODU0IDYxLjkzOTk0NzgsNjYuNzU3MDg1NCBDNTguMzgxMjk3MSw2Ni43NTcwODU0IDU1LjUzNDQyMDQsNjUuOTAyMDA1MSA1My4zOTkyNDQ2LDY0LjE5MTU1MTYgQzUxLjI2NDA2ODcsNjIuNDgxMzE3NyA1MC4xOTY0NDQyLDU5Ljc5NjcwMzYgNTAuMTk2NDQ0Miw1Ni4xMzgwMDE5IEw1MC4xOTY0NDQyLDQwLjU2NTYyOTYgTDU5LjM0MjEzNzIsNDAuNTY1NjI5NiBaIE0xMS44NTAyMjk0LDQwLjI0NTQyMjggQzEzLjM0NDg0NTIsNDAuMjQ1NDIyOCAxNC43MzI3NDk3LDQwLjQyMzM0OCAxNi4wMTM3OTY3LDQwLjc3OTE5ODQgQzE3LjI5NDkxNjgsNDEuMTM1MDQ4OCAxOC42NzA1MjU0LDQxLjcyODQwMTMgMjAuMTQxNzIwMyw0Mi41NTg1MjM4IEwxNy41Nzk1NTMyLDQ5LjA3MDgzNTYgQzE2LjcwMTYzNzUsNDguMzgyOTk0NyAxNS44NDE0MzM5LDQ3Ljg4NDcxNjMgMTQuOTk5NTI3OCw0Ny41NzYxNDY3IEMxNC4xNTcyNTU3LDQ3LjI2ODE2MjYgMTMuMjczNjMxMiw0Ny4xMTM1ODUgMTIuMzQ4MzYxNSw0Ny4xMTM1ODUgQzExLjcwNzg3NDYsNDcuMTEzNTg1IDExLjE5MTgxMSw0Ny4yMzgwODE1IDEwLjgwMDM5MDEsNDcuNDg2NjM1MiBDMTAuNDA4OTY5Myw0Ny43MzU3NzQ0IDEwLjIxMzE4NTcsNDguMDQ5Mzk0MSAxMC4yMTMxODU3LDQ4LjQyODAwNjcgQzEwLjIxMzE4NTcsNDkuMDQ0MTIxMiAxMC44ODkzODkzLDQ5LjQ4MTY1MTkgMTIuMjQxNjUwMyw0OS43NDE5MTYgTDEzLjkxNDExODEsNTAuMTMyODI0NSBDMTQuODM5MzE0Niw1MC4zNjk2Njc4IDE1LjU1MTE2MTgsNTAuNTcwOTQwNyAxNi4wNDkyOTM5LDUwLjczNjcxNjMgQzE2LjU0NzU3MjMsNTAuOTAyMzQ1NiAxNy40NzgzMzEzLDUxLjM3NjEwNTMgMTguODQyOTYxMyw1Mi4xNTc5MjI0IEMyMC4yMDY5MzI3LDUyLjkzOTY2NjIgMjAuODg5MDY0OCw1NC43NTEyNjg0IDIwLjg4OTA2NDgsNTcuNTkyNTgyNyBDMjAuODg5MDY0OCw2MC4zMzk0MDg0IDE5Ljg2ODg2NzUsNjIuNTUzNTU2NCAxNy44Mjg2MTkzLDY0LjIzNDk1MzQgQzE1Ljc4ODA3ODMsNjUuOTE2NDk2NyAxMy4xMDc0MTY0LDY2Ljc1NzA4NTQgOS43ODYxOTQ0Myw2Ni43NTcwODU0IEM3LjM0MjQ0OTAxLDY2Ljc1NzA4NTQgNS4zOTY4MzU2NCw2Ni40NzI0NDkgMy45NTAwMTMwNSw2NS45MDMxMDI5IEMyLjUwMjY3ODEyLDY1LjMzMzY4MzcgMS42MzA4MzcyMyw2NC45ODM5ODEyIDEuMzM0NDkwMzcsNjQuODUzMjYzNiBDMS4wMzc1NTgsNjQuNzIzMjA0OCAwLjU5MjcwODM1Myw2NC40OTE5MjM5IDEuNDYzODAyN2UtMDUsNjQuMTU5MzQ4IEwyLjg4MjQ2MTczLDU3LjA0MjExOTYgQzUuMTM2MTMyMzgsNTguNzk4MDI0MiA3LjIyNDAyNzM3LDU5LjY3NTUwMDcgOS4xNDU2MzQzNyw1OS42NzU1MDA3IEM5Ljg1NzQwODQzLDU5LjY3NTUwMDcgMTAuNDIwNjA2NSw1OS41NDUzNjg3IDEwLjgzNjAzMzcsNTkuMjg1MTc3NyBDMTEuMjUwODAyMiw1OS4wMjQ5ODY4IDExLjQ1ODczNTQsNTguNjU3MzUyNyAxMS40NTg3MzU0LDU4LjE4MzY2NjIgQzExLjQ1ODczNTQsNTcuNjE1MzQ0OCAxMS4yNzQ3MzU0LDU3LjI2NjIyNzggMTAuOTA3MTc0NSw1Ny4xMzYwMjI2IEMxMC41MzkxMDE0LDU3LjAwNTk2MzcgMTAuMjI0ODk2MSw1Ni45MTA4ODk3IDkuOTY0MTE5NjUsNTYuODUxOTcxNyBDOS43MDI3NTc2OCw1Ni43OTMwNTM2IDkuMjQwMTIyODMsNTYuNzE1NjkxNiA4LjU3NjI4ODMxLDU2LjYyMDYxNzcgQzcuMTUyODEzMzcsNTYuMzYwNDI2NyA1LjkzNjc1OTI3LDU2LjA1MjM2OTUgNC45Mjg2MzgzNSw1NS42OTcwMzEzIEMzLjkyMDA3ODI4LDU1LjM0MjM1MTkgMy4wMDcwMzEzNCw1NC41OTA1NDI5IDIuMTg4NTQ2MDYsNTMuNDQxODIzNyBDMS4zNzAwNjA3OCw1Mi4yOTI5NTgyIDAuOTYwNzgxNTQzLDUwLjkyNTY5MzIgMC45NjA3ODE1NDMsNDkuMzM4Nzg0NyBDMC45NjA3ODE1NDMsNDYuNjYzMTczIDEuOTc0OTc3MjUsNDQuNDc4NTIwNiA0LjAwMzQ0MTg1LDQyLjc4NTM0IEM2LjAzMTkwNjQ0LDQxLjA5MjIzMjYgOC42NDc0MjkxMiw0MC4yNDU0MjI4IDExLjg1MDIyOTQsNDAuMjQ1NDIyOCBaIE04NC4yMzcxMDI5LDQwLjU2NTYyOTYgTDg0LjIzNzEwMjksNTcuODI1MDM0NSBMOTEuOTU5MzIwOSw1Ny44MjUwMzQ1IEw5MS45NTkzMjA5LDY2LjI1ODk1MzQgTDc0Ljk4NDYyNTYsNjYuMjU4OTUzNCBMNzQuOTg0NjI1Niw0MC41NjU2Mjk2IEw4NC4yMzcxMDI5LDQwLjU2NTYyOTYgWiBNMzUuMzgyMzIxNyw0OC4zNTkwNjE2IEMzNC4wNTMzMzUyLDQ4LjM1OTA2MTYgMzIuOTU2MzYxNSw0OC44Mzk0ODE2IDMyLjA5MDU5NTQsNDkuODAwMzIxNyBDMzEuMjI0MjQzOCw1MC43NjExNjE4IDMwLjc5MTU0MzcsNTEuOTg4ODUzMSAzMC43OTE1NDM3LDUzLjQ4MzQ2ODkgQzMwLjc5MTU0MzcsNTQuOTc4MDg0NiAzMS4yMTg2MDgxLDU2LjIwNTc3NiAzMi4wNzI3MzcsNTcuMTY2NjE2MSBDMzIuOTI2NzkyNyw1OC4xMjc0NTYyIDM0LjAzMDA2MDgsNTguNjA3OTQ5NCAzNS4zODIzMjE3LDU4LjYwNzk0OTQgQzM2LjY4NjcxNjMsNTguNjA3OTQ5NCAzNy43NjY0OTA0LDU4LjEyMTk2NjkgMzguNjIwNjE5Myw1Ny4xNDg5MDQxIEMzOS40NzQ2NzQ5LDU2LjE3NjM1MzUgMzkuOTAxNzM5NCw1NC45NDI1ODc0IDM5LjkwMTczOTQsNTMuNDQ3ODk4NSBDMzkuOTAxNzM5NCw1Mi4wMDEwNzU5IDM5LjQ3NDY3NDksNTAuNzkxMTY5OCAzOC42MjA2MTkzLDQ5LjgxODEwNjkgQzM3Ljc2NjQ5MDQsNDguODQ1NjI5NiAzNi42ODY3MTYzLDQ4LjM1OTA2MTYgMzUuMzgyMzIxNyw0OC4zNTkwNjE2IFogTTI0LjAwMTAyMTUsMC4yNSBMMjQuNzA1OTE1NywxMC45ODIxNjIzIEwxMS41ODUwNDY5LDEwLjk4MjE2MjMgTDExLjU4NTA0NjksMTYuMTEzMzAzMSBMMjIuMzE2NjIzNywxNi4xMTMzMDMxIEwyMi4zMTY2MjM3LDI2LjY4ODEwNjYgTDExLjU4NTA0NjksMjYuNjg4MTA2NiBMMTEuNTg1MDQ2OSwzOS4zNzgxMDUgTDAuNTM5Nzc3MjQ3LDM5LjM3ODEwNSBMMC41Mzk3NzcyNDcsMC4yNSBMMjQuMDAxMDIxNSwwLjI1IFogTTY4LjkyNTU2NTYsMC40MDcxMzkyMiBMNzMuNzgyMzg5OCw4LjcxMDA0NzczIEw3OC41NjA5NzM3LDAuNDA3MTM5MjIgTDkwLjQyODY4MSwwLjQwNzEzOTIyIEw3OS42OTcwMzEsMTkuMDUwNjQyOCBMOTEuNDQ2OTc1MywzOS4yNjA5Mjc2IEw3OS4yNjYxNjA3LDM5LjI2MDkyNzYgTDczLjU4NjM4NjYsMjkuNTQ3MTMyOSBMNjcuOTg1OTUwNywzOS4yNjA5Mjc2IEw1Ni4xMTgyNDM0LDM5LjI2MDkyNzYgTDY3LjY3MjI1NzgsMTkuMTY4NDA1NyBMNTYuODIyOTE4MSwwLjQwNzEzOTIyIEw2OC45MjU1NjU2LDAuNDA3MTM5MjIgWiBNNDMuMTE0NTUyMSwwLjk1NTE4Njk1MyBMNDMuNDQ5NzMxLDAuOTU4MTc3MjUzIEM1My41OTQ4NTk5LDEuMTM5MzM3MDcgNjEuNzE4NzUyNiw5LjUyODkwNjkyIDYxLjcxODc1MjYsMTkuODczMDgwNCBMNjEuNzE4NzUyNiwxOS44NzMwODA0IEw2MS43MTU4MTc2LDIwLjIxMzM4NTQgQzYxLjUzODAwNzUsMzAuNTEzOTg4NSA1My4zMDMzNjY3LDM4Ljc5MTE5MzMgNDMuMTE0NTUyMSwzOC43OTExOTMzIEw0My4xMTQ1NTIxLDM4Ljc5MTE5MzMgTDQyLjc3ODA5MTUsMzguNzg4MjE2NSBDMzIuNTk0MDg4MywzOC42MDc4Njk0IDI0LjQzMTU5OSwzMC4yNTU0NzgxIDI0LjQzMTU5OSwxOS44NzMwODA0IEMyNC40MzE1OTksOS40MTUyMzQ2OSAzMi43NzQ0Njk0LDAuOTU1MTg2OTUzIDQzLjExNDU1MjEsMC45NTUxODY5NTMgTDQzLjExNDU1MjEsMC45NTUxODY5NTMgWiBNNDMuMTE0NTUyMSw4LjcxMDA0NzczIEw0Mi45NDEyMjIyLDguNzE1NTg0MjIgQzQxLjMzMjIyNzgsOC44MTg0MzcxOSAzOS45ODEyODI0LDEwLjM0MDQ0NjMgMzkuOTgxMjgyNCwxMi4xMTc2MzQgTDM5Ljk4MTI4MjQsMTIuMTE3NjM0IEwzOS45ODEyODI0LDI3LjYyODU5OTggQzM5Ljk4MTI4MjQsMjkuMzUxMjAyOSA0MS40MzA0NDcxLDMwLjgwMDg3OTkgNDMuMTE0NTUyMSwzMC44MDA4Nzk5IEw0My4xMTQ1NTIxLDMwLjgwMDg3OTkgTDQzLjMwMzI2MDEsMzAuNzk2NDMxNyBDNDUuMDQ4MjA1NCwzMC43MTM2MjQxIDQ2LjMyNjI4MTYsMjkuNDgwOTc2NSA0Ni4zMjYyODE2LDI3LjYyODU5OTggTDQ2LjMyNjI4MTYsMjcuNjI4NTk5OCBMNDYuMzI2MjgxNiwxMi4xMTc2MzQgTDQ2LjMyMTQyOCwxMS45MjgyNTA2IEM0Ni4yMzExNzE1LDEwLjE3MDc3NDUgNDQuODkxODEwNSw4LjcxMDA0NzczIDQzLjExNDU1MjEsOC43MTAwNDc3MyBMNDMuMTE0NTUyMSw4LjcxMDA0NzczIFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJGb3gtU291bCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ29zL0FwcC9Gb3gtU291bC9TdGFja2VkL1doaXRlIj4KICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgPC9tYXNrPgogICAgICAgICAgICA8dXNlIGlkPSJGb3gtU291bCIgZmlsbD0iI0ZGRkZGRiIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K\";\nexport { SvgFoxSoul as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgPopIn(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 23,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.12 0v10.079l2.88.001v12H9.12l-.001-4.8H0V0h21.12zm-1.525 1.542H1.525v14.196H9.12l.001-5.658 10.474-.001V1.542zM8.828 3.183v.994h-3.96l4.314 4.329-.707.71-4.313-4.33v3.975h-.99V3.183h5.656z\",\n fill: \"#FFF\",\n fillRule: \"nonzero\"\n })));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyM3B4IiB2aWV3Qm94PSIwIDAgMjQgMjMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+MTUzNjY1NEItREE0QS00ODk0LTg0NzktMDZDMTdGMkM5MDk3QDF4PC90aXRsZT4KICAgIDxnIGlkPSJQbGF5ZXItSWNvbnMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJJY29ucy9QbGF5ZXIvUG9wSW4vMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLCAtMS4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuMTIsMSBMMjEuMTIsMTEuMDc5IEwyNCwxMS4wOCBMMjQsMjMuMDggTDkuMTIsMjMuMDggTDkuMTE5LDE4LjI4IEwwLDE4LjI4IEwwLDEgTDIxLjEyLDEgWiBNMTkuNTk0NjY2NywyLjU0MTY0NzA2IEwxLjUyNTMzMzMzLDIuNTQxNjQ3MDYgTDEuNTI1MzMzMzMsMTYuNzM4MzUyOSBMOS4xMTksMTYuNzM4IEw5LjEyLDExLjA4IEwxOS41OTQsMTEuMDc5IEwxOS41OTQ2NjY3LDIuNTQxNjQ3MDYgWiBNOC44Mjg0MjcxMiw0LjE4MzEwNTg3IEw4LjgyODQyNzEyLDUuMTc2NjU1MTggTDQuODY4NjI5MTUsNS4xNzY2NTUxOCBMOS4xODE5ODA1Miw5LjUwNTY5MTQ2IEw4LjQ3NDg3MzczLDEwLjIxNTM2OTUgTDQuMTYxNTIyMzcsNS44ODYzMzMyNiBMNC4xNjE1MjIzNyw5Ljg2MDUzMDUgTDMuMTcxNTcyODgsOS44NjA1MzA1IEwzLjE3MTU3Mjg4LDQuMTgzMTA1ODcgTDguODI4NDI3MTIsNC4xODMxMDU4NyBaIiBpZD0iUG9wT3V0Ij48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K\";\nexport { SvgPopIn as ReactComponent };","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useGoogleLogin } from 'react-google-login';\nimport { handleAnalytics, Events, SegmentPageProfileTypes } from '@foxcorp/delta-web-analytics';\nimport { createProfile, v1Override } from 'helpers/ContentHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { removeAnonymousAccountCookie, setAccountCookie } from 'helpers/Account';\nimport { getIsGoogleAutoSignIn } from 'helpers/AuthHelper';\nimport { setIsGoogleSignIn, setGoogleOneTap, setNewGoogleEmailAndToken } from 'index/AppActions';\nimport useStateWithLabel from 'hooks/useStateWithLabel';\n\nexport const GOOGLE_CLIENT_ID =\n '32337322301-gc7pf6jm1an6vh4url5mcs851mmea6b9.apps.googleusercontent.com';\n\nexport const BTN_GOOGLE_TEXT = 'Continue with Google';\n\nexport default function useGetGoogleSignIn(onClose, openCreatePassword) {\n const [response, setResponse] = useStateWithLabel({}, 'response');\n const dispatch = useDispatch();\n\n const { googleToken, isSignedIn, userGoogleEmailAlreadySignIn } = useSelector(\n state => state.app?.googleSignIn,\n );\n\n const { isGoogleOneTapDisplayed } = useSelector(state => state.app);\n\n const getStatus = async email => {\n const { profile } = await createProfile();\n const res = await profile?.status({ email });\n const { found } = res;\n return found;\n };\n\n const handleSetAccountData = res => {\n setResponse(res);\n removeAnonymousAccountCookie();\n setAccountCookie(res);\n onClose();\n };\n\n const handleLink = async ({ email, googleToken }) => {\n try {\n const { profile } = await createProfile();\n const res = await profile.googleLink({\n additionalHeaders: v1Override,\n email,\n googleToken,\n });\n handleSetAccountData(res);\n } catch (e) {\n setResponse(e);\n }\n };\n\n const handleSignIn = async ({ email, googleToken }) => {\n dispatch(setIsGoogleSignIn(true));\n try {\n const { profile } = await createProfile();\n const res = await profile?.googleLogin({\n additionalHeaders: v1Override,\n googleToken,\n });\n handleSetAccountData(res);\n } catch (e) {\n handleLink({ email, googleToken });\n setResponse(e);\n }\n };\n\n const onSuccess = response => {\n const {\n profileObj: { email },\n tokenId,\n } = response;\n setResponse(response);\n dispatch(setIsGoogleSignIn(true));\n getStatus(email).then(isFound => {\n if (isFound) {\n handleAnalytics({\n event: Events.PROFILE_SIGNIN_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.GOOGLE,\n page_start_source: 'settings',\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n handleSignIn({ email, googleToken: tokenId });\n } else {\n dispatch(setNewGoogleEmailAndToken({ googleEmail: email, googleToken: tokenId }));\n openCreatePassword();\n }\n });\n };\n\n const onFailure = response => {\n setResponse(response);\n dispatch(setIsGoogleSignIn(false));\n };\n\n useEffect(() => {\n const isAutoSignIn = getIsGoogleAutoSignIn();\n if (isAutoSignIn) {\n if (isGoogleOneTapDisplayed) {\n window?.google?.accounts?.id?.cancel();\n dispatch(setGoogleOneTap({ isGoogleOneTap: false }));\n }\n if (userGoogleEmailAlreadySignIn) {\n getStatus(userGoogleEmailAlreadySignIn).then(isFound => {\n if (isSignedIn && isFound) {\n handleSignIn({ email: userGoogleEmailAlreadySignIn, googleToken });\n handleAnalytics({\n event: Events.PROFILE_SIGNIN_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.GOOGLE,\n page_start_source: 'settings',\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n }\n });\n }\n }\n }, []);\n\n const { signIn } = useGoogleLogin({\n clientId: GOOGLE_CLIENT_ID,\n onFailure,\n onSuccess,\n });\n\n return {\n BTN_GOOGLE_TEXT,\n dispatch,\n GOOGLE_CLIENT_ID,\n getStatus,\n handleLink,\n handleSignIn,\n handleSetAccountData,\n onFailure,\n onSuccess,\n response,\n signIn,\n };\n}\n","import { useDebugValue, useState } from 'react';\n\nexport default function useStateWithLabel(initialValue, name) {\n const [value, setValue] = useState(initialValue);\n useDebugValue(`${name}: ${value}`);\n return [value, setValue];\n}\n","import React, { useEffect } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { GOOGLE_ICON } from 'images';\nimport { setIsGoogleSignIn } from 'index/AppActions';\nimport useGetGoogleSignIn, { BTN_GOOGLE_TEXT } from './hooks/useGetGoogleSignIn';\nimport Style from './GoogleSignInButton.module.scss';\n\nconst GoogleSignInButton = ({\n onClose = () => {},\n toggleCreatePassword = () => {},\n isConsolidatedSignUp = false,\n}) => {\n const { dispatch, signIn } = useGetGoogleSignIn(onClose, toggleCreatePassword);\n\n const handleOnClick = e => {\n e.preventDefault();\n signIn();\n };\n\n useEffect(\n () => () => {\n dispatch(setIsGoogleSignIn(false));\n },\n [],\n );\n\n return (\n <button\n className={classNames(Style.googleButton, isConsolidatedSignUp ? Style.circleIcon : null)}\n onClick={handleOnClick}\n >\n <img className={Style.googleButtonIcon} alt=\"Google Icon\" src={GOOGLE_ICON} />\n {!isConsolidatedSignUp && <div className={Style.googleButtonText}>{BTN_GOOGLE_TEXT}</div>}\n </button>\n );\n};\n\nGoogleSignInButton.propTypes = {\n isConsolidatedSignUp: PropTypes.bool,\n onClose: PropTypes.func,\n toggleCreatePassword: PropTypes.func,\n};\n\nexport default GoogleSignInButton;\n","// eslint-disable-next-line import/prefer-default-export\nexport { ReactComponent as FoxSoul } from '../../../static/images/svg/FoxSoul.svg';\nexport { ReactComponent as PopIn } from '../../../static/images/svg/PopIn.svg';\nexport const GOOGLE_ICON =\n 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNHoiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJiIj48dXNlIHhsaW5rOmhyZWY9IiNhIiBvdmVyZmxvdz0idmlzaWJsZSIvPjwvY2xpcFBhdGg+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiLz48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiNFQTQzMzUiIGQ9Ik0wIDExbDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiLz48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMzNEE4NTMiIGQ9Ik0wIDM3bDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiLz48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OEwxNyAyNGwtNC0zIDM1LTEweiIvPjwvc3ZnPgo=';\n","import _ from 'lodash';\nimport { getUrlParameter } from 'helpers/ContentHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { Events, SegmentPageProfileTypes, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport { isValidEmail, passwordErrors } from 'helpers/Account';\nimport { getActivateCodeFromURL, getActivateCode } from 'helpers/ActivateHelper';\n\nconst EMAIL_INVALID = '400';\n\nexport const onSignin = ({\n email,\n handleActivateCode,\n headerProps,\n login,\n password,\n setIsProcessing,\n setGenericError,\n setPasswordError,\n signInCompleted,\n signInSuccess,\n utagAccountSource,\n}) => {\n const { onClose } = headerProps;\n setIsProcessing(true);\n\n const handleSuccess = account => {\n if (signInCompleted) signInCompleted({ utagAccountSource });\n if (!getUrlParameter('code'))\n handleAnalytics({\n event: Events.PROFILE_SIGNIN_COMPLETED,\n payload: {\n account,\n page_profile_type: SegmentPageProfileTypes.GENERAL,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n if (handleActivateCode({ ...account, isNew: false })) return;\n if (signInSuccess) {\n signInSuccess();\n }\n onClose();\n };\n\n setSigninErrors(\n hasErrors => {\n if (hasErrors) {\n setIsProcessing(false);\n }\n if (!hasErrors && login) {\n const body = {\n password,\n email,\n };\n login(body, result => {\n setIsProcessing(false);\n const { error, account } = result;\n if (error) {\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_ERROR,\n payload: {\n page_error_description: error.message || 'no error description',\n page_error_type: 'server-side',\n page_start_source: utagAccountSource,\n },\n });\n return setGenericError(error.message);\n }\n return handleSuccess(account);\n });\n }\n },\n {\n setPasswordError,\n email,\n password,\n utagAccountSource,\n },\n );\n};\n\nconst setSigninErrors = (cb, name) => {\n const { email, password, setPasswordError, utagAccountSource } = name;\n const signinPasswordError = passwordErrors(password);\n const signinEmailError = !isValidEmail(email);\n\n const setStateCb = () => {\n const hasErrors = signinPasswordError || signinEmailError || false;\n if (hasErrors) {\n let errorDescription;\n if (signinPasswordError) {\n errorDescription = 'Password Error';\n } else if (signinEmailError) {\n errorDescription = 'Email Error';\n } else {\n errorDescription = 'no error description';\n }\n\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_ERROR,\n payload: {\n page_error_description: errorDescription,\n page_error_type: 'client-side',\n page_start_source: utagAccountSource,\n },\n });\n }\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n\n if (signinPasswordError) setPasswordError(signinPasswordError);\n\n return setStateCb();\n};\n\nexport const onConsolidatedEmailSignIn = _.debounce(\n async ({ checkStatus, email, setExistingEmail }) => {\n const status = (await checkStatus({ userEmail: email })) || {};\n if (status?.found) {\n setExistingEmail(true);\n } else {\n setExistingEmail(false);\n }\n },\n 500,\n);\n\nexport const resetPassword = ({\n reset,\n email,\n setScreen,\n forgotPasswordPage,\n existingUserPage,\n}) => {\n const body = {\n email,\n };\n reset(body, () => setScreen({ current: forgotPasswordPage, prev: existingUserPage }));\n};\n\nexport const onSignup = ({\n register,\n signUpCompleted,\n email,\n password,\n utagAccountSource,\n handleActivateCode,\n toggleSignupSuccess,\n setIsProcessing,\n language: { profileCreate_invalidEmailText: invalidEmailError },\n anonymousAccount,\n signupSuccess,\n setGenericError,\n setPasswordError,\n}) => {\n const fbAuthStarted = false;\n setIsProcessing(true);\n const handleSuccess = newAccount => {\n const newsLetterVal = 'Yes';\n if (signUpCompleted) {\n signUpCompleted({\n utagAccountSource,\n newsLetter: newsLetterVal,\n });\n }\n if (signupSuccess) signupSuccess();\n if (!getUrlParameter('code'))\n handleAnalytics({\n event: Events.PROFILE_SIGNUP_COMPLETED,\n payload: {\n account: newAccount,\n page_profile_type: fbAuthStarted\n ? SegmentPageProfileTypes.FACEBOOK\n : SegmentPageProfileTypes.GENERAL,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n if (handleActivateCode({ ...newAccount, isNew: true })) return;\n toggleSignupSuccess();\n };\n setSignupErrors(\n hasErrors => {\n if (hasErrors || !register) {\n setIsProcessing(false);\n return;\n }\n const code = getActivateCodeFromURL() || getActivateCode();\n const { deviceId } = anonymousAccount || {};\n const toMigrate = deviceId ? { deviceId, migrateData: true } : {};\n const secondScreen = code ? { regcode: code } : {};\n const body = {\n password,\n email,\n newsLetter: true,\n ...toMigrate,\n ...secondScreen,\n };\n\n register(body, result => {\n setIsProcessing(false);\n const { error, account: newAccount } = result;\n const errorCode = _.get(error, 'errorCode');\n const errorCodeString = _.toString(errorCode);\n if (error) {\n handleAnalytics({\n event: Events.PROFILE_SIGN_UP_ERROR,\n payload: {\n page_error_description: error.message || 'no error description',\n page_error_type: 'server-side',\n page_start_source: utagAccountSource,\n },\n });\n }\n console.log('errorCodeString', errorCodeString);\n console.log('invalidEmailError', invalidEmailError);\n switch (errorCodeString) {\n case EMAIL_INVALID:\n return setGenericError(invalidEmailError);\n default:\n break;\n }\n return handleSuccess(newAccount);\n });\n },\n {\n setPasswordError,\n password,\n email,\n utagAccountSource,\n },\n );\n};\n\nconst setSignupErrors = (cb, name) => {\n const { setPasswordError, password, email, utagAccountSource } = name;\n const signupPasswordError = passwordErrors(password);\n const signupEmailError = !isValidEmail(email);\n const missingFieldDataError = signupPasswordError || signupEmailError;\n const setStateCb = () => {\n const hasErrors = missingFieldDataError || false;\n if (hasErrors) {\n const errorDescription = 'Missing Field Data';\n handleAnalytics({\n event: Events.PROFILE_SIGN_UP_ERROR,\n payload: {\n page_error_description: errorDescription,\n page_error_type: 'client-side',\n page_start_source: utagAccountSource,\n },\n });\n }\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n\n if (signupPasswordError) setPasswordError(signupPasswordError);\n return setStateCb();\n};\n","/*\n global SignInWithApple\n*/\nimport React, { useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { noop, isBrowserIE } from 'helpers/GlobalHelper';\nimport { handleAnalytics, Events } from '@foxcorp/delta-web-analytics';\nimport { isValidEmail } from 'helpers/Account';\nimport OverlayFooter from 'components/OverlayFooter';\nimport Header from '../../../Header';\nimport Style from './SignIn.module.scss';\nimport SignInApple from '../../../SignInApple';\nimport GoogleSignInButton from '../../../GoogleSignInButton';\nimport { onConsolidatedEmailSignIn } from '../../helpers/ConsolidatedHelper';\n\nconst createAccountText = 'Create Account or Sign In';\nconst continueWithEmailText = 'Continue With Email';\nconst orContinueWithText = 'or continue with';\n\nconst SignIn = ({\n checkStatus,\n email,\n headerProps = {},\n language,\n onAppleSignIn,\n onAppleLinking,\n onClose,\n setAppleEmail,\n setAppleToken,\n setEmail,\n setExistingEmail,\n setIsAppleEmailShared,\n perks = [],\n renderPerkImage = noop,\n toggleCreatePassword = noop,\n utagAccountSource,\n}) => {\n const dialogElement = useRef(null);\n let emailEntry = React.createRef();\n\n const handleKeyPress = event => {\n if (event.key === 'Enter') {\n event.preventDefault();\n setEmail(emailInput);\n onConsolidatedEmailSignIn({ checkStatus, email: emailInput, setExistingEmail });\n }\n };\n\n useEffect(() => {\n handleAnalytics(\n {\n event: Events.PROFILE_INITIATED,\n payload: {\n page_start_source: utagAccountSource,\n },\n },\n {\n event: Events.PROFILE_PROMPT_LANDING,\n payload: {\n pageName: 'profile prompt:landing',\n pageType: 'profile prompt',\n },\n },\n );\n if (dialogElement) dialogElement.current.focus();\n if (emailEntry) emailEntry.focus();\n }, [dialogElement]);\n\n const [isDisabled, setIsDisabled] = useState(true);\n const [emailInput, setEmailInput] = useState(email);\n\n useEffect(() => {\n if (isValidEmail(emailInput)) {\n return setIsDisabled(false);\n }\n\n return setIsDisabled(true);\n }, [emailInput]);\n\n return (\n <main className={Style.Perks} onKeyPress={handleKeyPress}>\n <Header {...headerProps} />\n <div className={Style.PerksContainer} ref={dialogElement} role=\"link\" tabIndex=\"0\">\n <h1>{createAccountText}</h1>\n <div className={Style.perksWrap}>\n {perks.map(perk => {\n const { icon, text } = perk;\n return (\n <div className={Style.perkContainer} key={`perk-${text}`}>\n <div className={Style.imageContainer}>\n {renderPerkImage({\n alt: text,\n className: 'perkIcon',\n src: icon,\n })}\n </div>\n <div className={Style.perkText}>{text}</div>\n </div>\n );\n })}\n </div>\n <input\n className={classNames(Style.inputField)}\n placeholder=\"Email\"\n type=\"text\"\n name=\"signUpEmail\"\n ref={input => {\n emailEntry = input;\n }}\n defaultValue={email || ''}\n onChange={e => setEmailInput(e.target.value)}\n />\n <div className={Style.buttonWrap}>\n <button\n className={classNames(Style.btnPrimary, isDisabled ? Style.invalidEmail : null)}\n onClick={() => {\n setEmail(emailInput);\n onConsolidatedEmailSignIn({ checkStatus, email: emailInput, setExistingEmail });\n }}\n disabled={isDisabled}\n >\n {continueWithEmailText}\n </button>\n <div className={Style.signInText}>{orContinueWithText}</div>\n <div className={Style.socialContainer}>\n {SignInWithApple && !isBrowserIE() && (\n <div>\n <SignInApple\n onAppleSignIn={onAppleSignIn}\n onAppleLinking={onAppleLinking}\n setAppleEmail={setAppleEmail}\n setAppleToken={setAppleToken}\n setIsAppleEmailShared={setIsAppleEmailShared}\n isConsolidatedSignUp\n />\n <div className={Style.iconText}>Apple</div>\n </div>\n )}\n <div>\n <GoogleSignInButton\n onClose={onClose}\n toggleCreatePassword={toggleCreatePassword}\n isConsolidatedSignUp\n />\n <div className={Style.iconText}>Google</div>\n </div>\n </div>\n </div>\n </div>\n <OverlayFooter language={language} />\n </main>\n );\n};\n\nexport default SignIn;\n\nSignIn.propTypes = {\n checkStatus: PropTypes.func,\n email: PropTypes.string,\n onAppleLinking: PropTypes.func,\n onAppleSignIn: PropTypes.func,\n onClose: PropTypes.func,\n setExistingEmail: PropTypes.func,\n showSignin: PropTypes.bool,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({}).isRequired,\n perks: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n renderPerkImage: PropTypes.func.isRequired,\n setAppleEmail: PropTypes.func,\n setAppleToken: PropTypes.func,\n setIsAppleEmailShared: PropTypes.func,\n setEmail: PropTypes.func,\n toggleCreatePassword: PropTypes.func,\n utagAccountSource: PropTypes.string.isRequired,\n};\n","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport DOMPurify from 'dompurify';\nimport Icon from 'components/Icon';\nimport OverlayFooter from 'components/OverlayFooter';\nimport { noop } from 'helpers/GlobalHelper';\nimport { getPurifyConfig, IFRAME_TEST_PATTERN } from 'components/Article/ArticleHelpers';\nimport Header from '../../../Header';\nimport Style from './PasswordCollection.module.scss';\n\nconst PasswordCollection = ({\n email,\n onFieldChange,\n previous,\n headerProps,\n screenProps: {\n buttonText,\n disclosure,\n headline,\n forgotPasswordText,\n onSubmit,\n onResetPassword,\n onLoad = noop,\n },\n isProcessing,\n setEmail,\n language,\n setExistingEmail,\n setScreen,\n signinShowPassword,\n}) => {\n let passwordInput = React.createRef();\n const passwordType = signinShowPassword ? 'text' : 'password';\n const [signinGenericError, setGenericError] = useState('');\n const [signinPasswordError, setPasswordError] = useState('');\n let sanitizedDisclosure = disclosure;\n if (!IFRAME_TEST_PATTERN.test(disclosure)) {\n sanitizedDisclosure = DOMPurify.sanitize(disclosure, getPurifyConfig());\n }\n const handleKeyPress = event => {\n if (event.key === 'Enter') {\n event.preventDefault();\n if (isProcessing) return false;\n onSubmit({ password: passwordInput.value, setGenericError, setPasswordError });\n return false;\n }\n return false;\n };\n\n let passwordErrorText;\n let errorText;\n\n if (signinGenericError) {\n errorText = signinGenericError;\n }\n\n if (signinGenericError.toLowerCase() === 'invalid loginid') {\n errorText = 'Incorrect password';\n }\n\n // local error checking\n if (signinPasswordError) {\n passwordErrorText = signinPasswordError;\n }\n\n useEffect(() => {\n onLoad();\n }, []);\n\n return (\n <main className={Style.signIn} onKeyPress={handleKeyPress}>\n <Header\n {...headerProps}\n onClose={() => {\n setEmail('');\n setScreen({ current: previous });\n }}\n />\n <div className={Style.signInWrap}>\n <h1>{headline}</h1>\n <div className={Style.signInPasswordContainer}>\n <input\n className={classNames(Style.inputField, Style.emailInput)}\n autoFocus\n disabled\n placeholder=\"Email\"\n type=\"email\"\n name=\"email\"\n value={email}\n autoCapitalize=\"none\"\n />\n <label\n className={Style.passwordLabel}\n onClick={() => {\n setExistingEmail(undefined);\n setScreen({ current: previous });\n }}\n >\n <Icon icon=\"edit-icon\" size=\"large\" />\n </label>\n </div>\n <div className={Style.signInPasswordContainer}>\n <input\n className={Style.inputField}\n autoFocus\n type={passwordType}\n name=\"signinPassword\"\n onChange={e => {\n setGenericError('');\n setPasswordError('');\n }}\n ref={input => {\n passwordInput = input;\n }}\n placeholder=\"Password\"\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n className={Style.inputField}\n name=\"signinShowPassword\"\n type=\"checkbox\"\n value={signinShowPassword}\n onChange={e => {\n onFieldChange(e);\n passwordInput.focus();\n }}\n />\n <span />\n </label>\n <div className={Style.error}>{passwordErrorText}</div>\n <div className={Style.error}>{errorText}</div>\n </div>\n <div\n className={Style.disclosure}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{ __html: sanitizedDisclosure }}\n />\n <button\n className={Style.btnPrimary}\n onClick={e => {\n e.preventDefault();\n if (isProcessing) return false;\n onSubmit({ password: passwordInput.value, setGenericError, setPasswordError });\n return false;\n }}\n >\n {buttonText}\n </button>\n {forgotPasswordText && (\n <div\n className={Style.forgotPasswordLink}\n onClick={() => {\n onResetPassword();\n }}\n >\n {forgotPasswordText}\n </div>\n )}\n </div>\n <OverlayFooter language={language} />\n </main>\n );\n};\n\nexport default PasswordCollection;\n\nPasswordCollection.propTypes = {\n email: PropTypes.string,\n handleActivateCode: PropTypes.func,\n headerProps: PropTypes.shape({}),\n isProcessing: PropTypes.bool,\n landingPage: PropTypes.string,\n language: PropTypes.shape({}).isRequired,\n login: PropTypes.func,\n onFieldChange: PropTypes.func,\n previous: PropTypes.string,\n screenProps: PropTypes.shape({}),\n setEmail: PropTypes.func,\n setExistingEmail: PropTypes.func,\n setScreen: PropTypes.func,\n signinShowPassword: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport OverlayFooter from 'components/OverlayFooter';\nimport Style from './ForgotPassword.module.scss';\nimport Header from '../../../Header';\n\nconst emailInstructions = 'Check your email for instructions on how to reset your password.';\nconst backText = 'Back to Sign In';\n\nconst ForgotPassword = ({\n email,\n existingUserPage,\n headerProps,\n landingPage,\n language,\n setScreen,\n}) => (\n <div className={Style.ForgotPassword}>\n <Header {...headerProps} />\n <div className={Style.signInWrap}>\n <h1>{email}</h1>\n <div className={Style.instructions}>{emailInstructions}</div>\n <button\n className={Style.btnPrimary}\n onClick={() => {\n setScreen({ current: existingUserPage, prev: landingPage });\n }}\n >\n {backText}\n </button>\n </div>\n <OverlayFooter language={language} />\n </div>\n);\n\nexport default ForgotPassword;\n\nForgotPassword.propTypes = {\n email: PropTypes.string,\n existingUserPage: PropTypes.string,\n headerProps: PropTypes.shape({}),\n landingPage: PropTypes.string,\n language: PropTypes.shape({}).isRequired,\n setScreen: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport { getActivateCodeFromURL } from 'helpers/ActivateHelper';\nimport SignIn from './components/SignIn';\nimport PasswordCollection from './components/PasswordCollection';\nimport ForgotPassword from './components/ForgotPassword';\nimport { onSignin, onSignup, resetPassword } from './helpers/ConsolidatedHelper';\n\nconst LANDING_PAGE = 'landingPage';\nconst EXISTING_USER = 'existingUser';\nconst NEW_USER = 'newUser';\nconst FORGOT_PASSWORD = 'forgotPassword';\n\nconst ConsolidatedSignInFlow = props => {\n const {\n anonymousAccount,\n handleActivateCode,\n headerProps,\n language,\n login,\n register,\n reset,\n signInCompleted,\n signInSuccess,\n signUpCompleted,\n signupSuccess,\n toggleSignupSuccess,\n utagAccountSource,\n } = props;\n const SCREENS = {\n [LANDING_PAGE]: SignIn,\n [EXISTING_USER]: PasswordCollection,\n [NEW_USER]: PasswordCollection,\n [FORGOT_PASSWORD]: ForgotPassword,\n };\n const [screen, setScreen] = useState({\n prev: LANDING_PAGE,\n current: LANDING_PAGE,\n });\n const { legalTermsUrl, legalTermsName, legalPrivacyUrl, legalPrivacyName } = language;\n\n const [email, setEmail] = useState('');\n const [existingEmail, setExistingEmail] = useState(undefined);\n const [isProcessing, setIsProcessing] = useState(false);\n const code = getActivateCodeFromURL() ?? '';\n const screenProps = {\n [LANDING_PAGE]: {},\n [EXISTING_USER]: {\n buttonText: 'Sign In',\n headline: 'Welcome Back!',\n disclosure: null,\n forgotPasswordText: 'Forgot Your Password?',\n onSubmit: props =>\n onSignin({\n ...props,\n email,\n handleActivateCode,\n setIsProcessing,\n headerProps,\n login,\n signInCompleted,\n signInSuccess,\n utagAccountSource,\n }),\n onResetPassword: () => {\n resetPassword({\n reset,\n email,\n setScreen,\n forgotPasswordPage: FORGOT_PASSWORD,\n existingUserPage: EXISTING_USER,\n });\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_FORGOT_PASSWORD,\n payload: { page_start_source: utagAccountSource },\n });\n },\n onLoad: () => {\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_STARTED,\n payload: {\n page_start_source: utagAccountSource,\n page_profile_activation_method: code && '2nd screen',\n page_activation_code: code,\n },\n });\n },\n },\n [NEW_USER]: {\n buttonText: 'Create Account',\n headline: 'Setup your Password',\n disclosure: `By clicking \"Create Account”, you agree to the <a href=\"${legalTermsUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" >${legalTermsName}</a>, <a href=\"${legalPrivacyUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">${legalPrivacyName}</a>, and agree to receive content and promotional communications from FOX.`,\n onSubmit: props =>\n onSignup({\n ...props,\n register,\n setIsProcessing,\n signUpCompleted,\n toggleSignupSuccess,\n email,\n utagAccountSource,\n handleActivateCode,\n language,\n anonymousAccount,\n signupSuccess,\n }),\n onLoad: () => {\n handleAnalytics({\n event: Events.PROFILE_SIGNUP_STATRED,\n payload: {\n page_start_source: utagAccountSource,\n page_profile_activation_method: code && '2nd screen',\n page_activation_code: code,\n },\n });\n },\n },\n };\n useEffect(() => {\n if (existingEmail !== undefined) {\n if (existingEmail && email) {\n setScreen({ current: EXISTING_USER, prev: LANDING_PAGE });\n } else if (email && !existingEmail) {\n setScreen({ current: NEW_USER, prev: LANDING_PAGE });\n }\n }\n }, [existingEmail, email]);\n\n const Component = SCREENS[screen.current];\n if (!Component) return null;\n return (\n <Component\n {...props}\n email={email}\n existingUserPage={EXISTING_USER}\n isProcessing={isProcessing}\n landingPage={LANDING_PAGE}\n language={language}\n previous={screen.prev}\n screenProps={screenProps[screen.current]}\n setEmail={setEmail}\n setExistingEmail={setExistingEmail}\n setScreen={data => setScreen(data)}\n />\n );\n};\n\nexport default ConsolidatedSignInFlow;\n\nConsolidatedSignInFlow.propTypes = {\n anonymousAccount: PropTypes.shape({}),\n handleActivateCode: PropTypes.func,\n headerProps: PropTypes.shape({}),\n language: PropTypes.shape({}).isRequired,\n login: PropTypes.func,\n register: PropTypes.func,\n reset: PropTypes.func,\n signInCompleted: PropTypes.func,\n signInSuccess: PropTypes.func,\n signUpCompleted: PropTypes.func,\n signupSuccess: PropTypes.func,\n toggleSignupSuccess: PropTypes.func,\n utagAccountSource: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Header from '../Header';\n\nimport Style from './DeleteAccount.module.scss';\n\nconst DeleteAccount = ({ headerProps, language = {}, onClose, onDeleteAccount }) => {\n const {\n global_cancelButton: cancelButtonText,\n profileDelete_deleteButton: deleteButtonText,\n profileDelete_header: headerText,\n profileDelete_message: deleteMessage,\n } = language || {};\n\n return (\n <main className={Style.DeleteAccount}>\n <Header {...headerProps} />\n <div className={Style.DeleteAccountContainer}>\n <div className={Style.logoutContainer}>\n <div className={Style.logoutHeaderText}>{headerText}</div>\n <div className={Style.logoutText}>{deleteMessage}</div>\n </div>\n <div className={Style.btnWrap}>\n <button className={Style.deleteBtn} onClick={onDeleteAccount}>\n {deleteButtonText}\n </button>\n <button className={Style.cancelBtn} onClick={onClose}>\n {cancelButtonText}\n </button>\n </div>\n </div>\n </main>\n );\n};\n\nexport default DeleteAccount;\n\nDeleteAccount.defaultProps = {\n backgroundClass: null,\n headerProps: {},\n language: {},\n onClose: () => {},\n onDeleteAccount: () => {},\n};\n\nDeleteAccount.propTypes = {\n backgroundClass: PropTypes.string,\n headerProps: PropTypes.shape({}),\n language: PropTypes.shape({}),\n onClose: PropTypes.func,\n onDeleteAccount: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Network = ({ network }) =>\n network.map(item => {\n const { name, logo } = item;\n return (\n <span key={`${name}-${logo}`}>\n <img src={logo} title={name} alt={name} />\n </span>\n );\n });\n\nexport default Network;\nNetwork.defaultProps = {\n network: [],\n};\n\nNetwork.propTypes = {\n network: PropTypes.arrayOf(PropTypes.shape({})),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport Header from '../Header';\nimport Network from '../Network';\n\nimport Style from './ForgotPassword.module.scss';\n\nconst ForgotPassword = ({\n autoFocus,\n forgotPasswordError,\n genericForgotPasswordError,\n headerProps,\n language,\n network,\n onFieldChange,\n onForgotPassword,\n signinEmail,\n}) => {\n const {\n profileResetPw_message: resetPwMessage,\n profile_emailInputPlaceholder: emailPlaceholder,\n profileResetPw_invalidEmailText: invalidEmailText,\n profileResetPw_button: resetPwButtonText,\n } = language || {};\n let emailErrorText;\n let errorText;\n\n if (forgotPasswordError) {\n emailErrorText = invalidEmailText;\n }\n\n if (genericForgotPasswordError) errorText = genericForgotPasswordError;\n\n return (\n <main className={Style.forgotPassword}>\n <Header {...headerProps} />\n <div className={Style.forgotPasswordContainer}>\n <div className={Style.secondaryHeader}>\n <Network network={network} />\n </div>\n <div className={Style.forgotPasswordFormContainer}>\n <div className={Style.forgotPasswordText}>{resetPwMessage}</div>\n <div className={Style.error}>{errorText}</div>\n <input\n className={Style.inputField}\n autoFocus={autoFocus}\n type=\"email\"\n name=\"signinEmail\"\n placeholder={emailPlaceholder}\n value={signinEmail}\n onChange={onFieldChange}\n autoCapitalize=\"none\"\n />\n <div className={Style.error}>{emailErrorText}</div>\n <button className={Style.btnPrimary} onClick={onForgotPassword}>\n {resetPwButtonText}\n </button>\n </div>\n </div>\n </main>\n );\n};\n\nForgotPassword.defaultProps = {\n autoFocus: null,\n backgroundClass: null,\n forgotPasswordError: null,\n genericForgotPasswordError: null,\n language: {},\n network: [],\n onFieldChange: noop,\n onForgotPassword: noop,\n signinEmail: '',\n};\n\nForgotPassword.propTypes = {\n autoFocus: PropTypes.bool,\n backgroundClass: PropTypes.string,\n forgotPasswordError: PropTypes.string,\n genericForgotPasswordError: PropTypes.string,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({}),\n network: PropTypes.arrayOf(PropTypes.shape({})),\n onFieldChange: PropTypes.func,\n onForgotPassword: PropTypes.func,\n signinEmail: PropTypes.string,\n};\n\nexport default ForgotPassword;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Network from '../Network';\n\nimport Style from './ForgotPasswordSuccess.module.scss';\n\nconst ForgotPasswordSuccess = ({ language, network, onClose }) => {\n const {\n profileResetPw_emailPromptHeader: headerText,\n profileResetPw_emailPromptMessage: promptMessage,\n profileResetPw_emailPromptContinueButton: continueButtonText,\n } = language || {};\n return (\n <main className={Style.forgotPasswordSuccess}>\n <div className={Style.forgotPasswordSuccessContainer}>\n <div className={Style.wrap}>\n <div className={Style.secondaryHeader}>\n <Network network={network} />\n </div>\n <h1 className={Style.forgotPasswordSuccessHeaderText}>{headerText}</h1>\n <div className={Style.forgotPasswordSuccessText}>{promptMessage}</div>\n </div>\n <button className={Style.btnPrimary} autoFocus onClick={onClose}>\n {continueButtonText}\n </button>\n </div>\n </main>\n );\n};\n\nForgotPasswordSuccess.defaultProps = {\n network: [],\n};\n\nForgotPasswordSuccess.propTypes = {\n language: PropTypes.shape({\n profileResetPw_emailPromptContinueButton: PropTypes.string,\n profileResetPw_emailPromptHeader: PropTypes.string,\n profileResetPw_emailPromptMessage: PropTypes.string,\n }).isRequired,\n network: PropTypes.arrayOf(PropTypes.shape({})),\n onClose: PropTypes.func.isRequired,\n};\n\nexport default ForgotPasswordSuccess;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\n\nimport Style from './SignOut.module.scss';\n\nconst Logout = ({\n language,\n loader,\n logoutInProcess,\n onClose,\n onLogout,\n renderLoader,\n renderLogo,\n}) => {\n const {\n global_cancelButton: cancelButtonText,\n profileLogout_header: headerText,\n profileLogout_logoutButton: logoutButtonText,\n profileLogout_message: logoutMessage,\n } = language || {};\n const buttonContent = renderLoader ? loader : logoutButtonText;\n const onLogoClick = () => onClose({ goHome: true });\n return (\n <main className={Style.signOut}>\n <div className={Style.signOutContainer}>\n <div className={Style.headerSuccess}>{renderLogo(onLogoClick)}</div>\n <div className={Style.logoutContainer}>\n <h1 className={Style.logoutHeaderText}>{headerText}</h1>\n <div className={Style.logoutText}>{logoutMessage}</div>\n </div>\n <div className={Style.perksButtonContainer}>\n <button\n className={Style.btnPrimary}\n onClick={async () => {\n await onLogout();\n handleAnalytics({\n event: Events.PROFILE_LOGGED_OUT,\n });\n }}\n disabled={logoutInProcess}\n >\n {buttonContent}\n </button>\n <button className={Style.btnHollow} onClick={onClose}>\n {cancelButtonText}\n </button>\n </div>\n </div>\n </main>\n );\n};\n\nLogout.defaultProps = {\n language: {},\n onClose: noop,\n onLogout: noop,\n renderLogo: noop,\n logoutInProcess: null,\n loader: null,\n renderLoader: null,\n};\nLogout.propTypes = {\n language: PropTypes.shape({\n global_cancelButton: PropTypes.string,\n profileLogout_header: PropTypes.string,\n profileLogout_logoutButton: PropTypes.string,\n profileLogout_message: PropTypes.string,\n }),\n onClose: PropTypes.func,\n onLogout: PropTypes.func,\n renderLogo: PropTypes.func,\n loader: PropTypes.node,\n logoutInProcess: PropTypes.bool,\n renderLoader: PropTypes.bool,\n};\n\nexport default Logout;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Header from '../Header';\n\nimport Style from './ManageFavorites.module.scss';\n\nconst ManageFavorites = ({ headerProps, favorites = {} }) => (\n <main className={Style.manageFavorites}>\n <Header {...headerProps} />\n <div className={Style.manageFavoritesContainer}>\n <div className={Style.wrap}>{favorites}</div>\n </div>\n </main>\n);\n\nManageFavorites.propTypes = {\n headerProps: PropTypes.shape({\n headerText: PropTypes.string,\n iconMobile: PropTypes.shape({}),\n isDesktop: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n showHeaderDesktop: PropTypes.bool,\n renderLogo: PropTypes.func.isRequired,\n }).isRequired,\n favorites: PropTypes.shape({}).isRequired,\n};\n\nexport default ManageFavorites;\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport { handleAnalytics, Events } from '@foxcorp/delta-web-analytics';\nimport Header from '../Header';\nimport Style from './Perks.module.scss';\n\nconst Perks = ({\n headerProps = {},\n language = {},\n onLoginClick = noop,\n onSignupClick = noop,\n perks = [],\n renderPerkImage = noop,\n toggleShowPerks = noop,\n toggleSignin = noop,\n toggleSignup = noop,\n utagAccountSource,\n}) => {\n const dialogElement = useRef(null);\n const {\n profileCreate_header: createProfileText,\n profilePerks_header: headerText,\n profileCreate_signInText: profileExistText,\n profileFavoritesUpsell_signInButton: signInText,\n } = language || {};\n\n useEffect(() => {\n handleAnalytics({\n event: Events.PROFILE_PROMPT,\n payload: {\n page_start_source: utagAccountSource,\n },\n });\n if (dialogElement) dialogElement.current.focus();\n }, [dialogElement]);\n\n return (\n <main className={Style.Perks}>\n <Header {...headerProps} />\n <div className={Style.PerksContainer} ref={dialogElement} role=\"link\" tabIndex=\"0\">\n <h1>{headerText}</h1>\n <div className={Style.perksWrap}>\n {perks.map(perk => {\n const { icon, text } = perk;\n return (\n <div className={Style.perkContainer} key={`perk-${text}`}>\n <div className={Style.imageContainer}>\n {renderPerkImage({\n alt: text,\n className: 'perkIcon',\n src: icon,\n })}\n </div>\n <div className={Style.perkText}>{text}</div>\n </div>\n );\n })}\n </div>\n <div className={Style.buttonWrap}>\n <button\n className={Style.btnPrimary}\n onClick={() => {\n toggleShowPerks();\n toggleSignup();\n if (onSignupClick) onSignupClick();\n }}\n >\n {createProfileText}\n </button>\n <div\n className={Style.signInText}\n onClick={() => {\n toggleShowPerks();\n toggleSignin();\n if (onLoginClick) onLoginClick();\n }}\n >\n {`${profileExistText} ${signInText}`}\n </div>\n </div>\n </div>\n </main>\n );\n};\n\nexport default Perks;\n\nPerks.propTypes = {\n headerProps: PropTypes.shape({}).isRequired,\n hollow: PropTypes.string,\n language: PropTypes.shape({\n profilePerks_header: PropTypes.string,\n profilePerks_SignUpButton: PropTypes.string,\n profilePerks_SignInButton: PropTypes.string,\n }).isRequired,\n onLoginClick: PropTypes.func.isRequired,\n onSignupClick: PropTypes.func.isRequired,\n perks: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n renderPerkImage: PropTypes.func.isRequired,\n toggleShowPerks: PropTypes.func.isRequired,\n toggleSignup: PropTypes.func.isRequired,\n toggleSignin: PropTypes.func.isRequired,\n utagAccountSource: PropTypes.string.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { noop } from 'helpers/GlobalHelper';\nimport { isFoxSoulResetPasswordPage } from 'helpers/RouteHelper';\nimport OverlayFooter from 'components/OverlayFooter';\nimport Header from '../Header';\n\nimport Style from './ResetPassword.module.scss';\n\nconst ResetPassword = ({\n autoFocus,\n headerProps,\n language,\n onFieldChange,\n onResetPassword,\n resetPasswordError,\n resetPasswordPassword,\n resetPasswordPasswordError,\n resetPasswordShowPassword,\n resetPasswordConfirmPassword,\n resetPasswordConfirmPasswordError,\n resetPasswordShowConfirmPassword,\n}) => {\n const {\n profile_passwordRequirementsText: pwRequirementText,\n profileResetPw_button: passwordButtonText,\n profileResetPw_invalidResetCodeMessage: invalidResetCodeText,\n profileChangePw_header: headerText,\n } = language || {};\n const passwordType = resetPasswordShowPassword ? 'text' : 'password';\n const passwordConfirmType = resetPasswordShowConfirmPassword ? 'text' : 'password';\n const buttonClass =\n resetPasswordPassword && resetPasswordConfirmPassword\n ? classNames(Style.btnPrimary, Style.filledButton)\n : Style.btnPrimary;\n let passwordErrorClass;\n let passwordErrorText;\n let passwordNewPasswordErrorClass;\n let passwordConfirmPasswordErrorClass;\n let resetPasswordInput = React.createRef();\n let resetPasswordConfirmInput = React.createRef();\n\n const invalidTokenErrorText =\n isFoxSoulResetPasswordPage && resetPasswordError === 'token is not valid'\n ? invalidResetCodeText\n : resetPasswordError;\n\n if (resetPasswordError) {\n passwordErrorClass = Style.defaultError;\n passwordNewPasswordErrorClass = classNames(Style.defaultError, Style.inputFieldError);\n passwordConfirmPasswordErrorClass = classNames(Style.defaultError, Style.inputFieldError);\n }\n\n if (resetPasswordPasswordError) {\n passwordErrorText = pwRequirementText;\n passwordErrorClass = Style.defaultError;\n passwordNewPasswordErrorClass = classNames(Style.defaultError, Style.inputFieldError);\n }\n\n if (resetPasswordConfirmPasswordError) {\n passwordErrorText = pwRequirementText;\n passwordErrorClass = Style.defaultError;\n passwordConfirmPasswordErrorClass = classNames(Style.defaultError, Style.inputFieldError);\n }\n\n return (\n <div className={classNames(Style.resetPassword, isFoxSoulResetPasswordPage && Style.foxSoul)}>\n <Header {...headerProps} />\n <div className={Style.resetPasswordContainer}>\n <h1>{headerText}</h1>\n <div className={Style.resetPasswordFormContainer}>\n <div className={Style.wrap}>\n <input\n autoFocus={autoFocus}\n className={classNames(Style.inputField, passwordNewPasswordErrorClass)}\n type={passwordType}\n data-testid=\"reset-page-new-password\"\n name=\"resetPasswordPassword\"\n value={resetPasswordPassword}\n onChange={onFieldChange}\n ref={input => {\n resetPasswordInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label\n className={classNames(\n Style.floatingLabel,\n resetPasswordPassword && Style.floatingLabelFilled,\n )}\n >\n New Password\n </label>\n <label className={classNames(Style.passwordLabel, passwordErrorClass)}>\n <input\n className={classNames(Style.resetPasswordShowPassword, passwordErrorClass)}\n name=\"resetPasswordShowPassword\"\n type=\"checkbox\"\n value={resetPasswordShowPassword}\n onChange={e => {\n onFieldChange(e);\n resetPasswordInput.focus();\n }}\n />\n <span />\n </label>\n </div>\n <div className={Style.wrap}>\n <input\n className={classNames(Style.inputField, passwordConfirmPasswordErrorClass)}\n type={passwordConfirmType}\n data-testid=\"reset-page-confirm-password\"\n name=\"resetPasswordConfirmPassword\"\n value={resetPasswordConfirmPassword}\n onChange={onFieldChange}\n ref={input => {\n resetPasswordConfirmInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label\n className={classNames(\n Style.floatingLabel,\n resetPasswordConfirmPassword && Style.floatingLabelFilled,\n )}\n >\n Confirm Password\n </label>\n <label className={classNames(Style.passwordLabel, passwordErrorClass)}>\n <input\n className={classNames(Style.resetPasswordShowPassword, passwordErrorClass)}\n name=\"resetPasswordShowConfirmPassword\"\n type=\"checkbox\"\n value={resetPasswordShowConfirmPassword}\n onChange={e => {\n onFieldChange(e);\n resetPasswordConfirmInput.focus();\n }}\n />\n <span />\n </label>\n <div className={Style.error}>{passwordErrorText || invalidTokenErrorText}</div>\n </div>\n <div className={Style.resetPasswordInfo}>{pwRequirementText}</div>\n <div className={Style.resetPasswordButton}>\n <button onClick={onResetPassword} className={buttonClass}>\n {passwordButtonText}\n </button>\n </div>\n </div>\n </div>\n <OverlayFooter language={language} />\n </div>\n );\n};\n\nResetPassword.defaultProps = {\n autoFocus: false,\n language: {},\n network: [],\n onFieldChange: noop,\n onResetPassword: noop,\n resetPasswordPassword: '',\n resetPasswordPasswordError: null,\n resetPasswordShowPassword: false,\n resetPasswordConfirmPassword: '',\n resetPasswordConfirmPasswordError: null,\n resetPasswordShowConfirmPassword: false,\n};\n\nResetPassword.propTypes = {\n autoFocus: PropTypes.bool,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({}),\n network: PropTypes.arrayOf(PropTypes.shape({})),\n onFieldChange: PropTypes.func,\n onResetPassword: PropTypes.func,\n resetPasswordEmail: PropTypes.string,\n resetPasswordEmailError: PropTypes.bool,\n resetPasswordError: PropTypes.string,\n resetPasswordPassword: PropTypes.string,\n resetPasswordPasswordError: PropTypes.bool,\n resetPasswordShowPassword: PropTypes.bool,\n resetPasswordConfirmPassword: PropTypes.string,\n resetPasswordConfirmPasswordError: PropTypes.bool,\n resetPasswordShowConfirmPassword: PropTypes.bool,\n};\n\nexport default ResetPassword;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { isFoxSoulResetPasswordPage } from 'helpers/RouteHelper';\nimport { FoxSoul } from 'images';\nimport Network from '../Network';\nimport Style from './ResetPasswordSuccess.module.scss';\n\nconst ResetPasswordSuccess = ({ language, network, onClose }) => {\n const {\n profileResetPw_successButton: successButtonText,\n profileResetPw_successHeader: headerText,\n profileResetPw_successMessage: messageText,\n } = language || {};\n return (\n <main\n className={classNames(\n Style.resetPasswordSuccess,\n isFoxSoulResetPasswordPage && Style.isFoxSoul,\n )}\n >\n <div className={Style.resetPasswordSuccessWrap}>\n <div className={Style.signupSuccessContainer}>\n <div className={Style.secondaryHeader}>\n {isFoxSoulResetPasswordPage ? (\n <FoxSoul className={Style.logo} alt=\"Fox Soul\" />\n ) : (\n <Network network={network} />\n )}\n </div>\n <div className={Style.resetPasswordSuccessHeaderText}>{headerText}</div>\n <div className={Style.resetPasswordSuccessText}>{messageText}</div>\n </div>\n <div className={Style.resetPasswordSuccessButton}>\n <button onClick={onClose} className={Style.btnPrimary}>\n {successButtonText}\n </button>\n </div>\n </div>\n </main>\n );\n};\n\nResetPasswordSuccess.defaultProps = {\n language: {},\n network: [],\n onClose: () => {},\n};\n\nResetPasswordSuccess.propTypes = {\n language: PropTypes.shape({\n profileResetPw_successButton: PropTypes.string,\n profileResetPw_successHeader: PropTypes.string,\n profileResetPw_successMessage: PropTypes.string,\n }),\n network: PropTypes.arrayOf(PropTypes.shape({})),\n onClose: PropTypes.func,\n};\n\nexport default ResetPasswordSuccess;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { helperGetStaticContentUrl } from 'helpers/RouteHelper';\nimport Style from './ShareMyEmailUpsell.module.scss';\nimport SignInApple from '../SignInApple';\n\nconst ShareMyEmailUpsell = ({\n onAppleLinking,\n onAppleSignIn,\n setAppleEmail,\n setAppleToken,\n setIsAppleEmailShared,\n}) => {\n const { signInWithApple_ShareUpsellMessage: upsellMessage } = window.Language;\n const shareImage = helperGetStaticContentUrl('images', 'share-email.png');\n const foxNowAppLogo = helperGetStaticContentUrl('images', 'fox-now-app-icon.png');\n\n return (\n <main className={Style.container}>\n <div className={Style.innerContainer}>\n <img src={foxNowAppLogo} alt=\"fox now app icon\" />\n <h2>{upsellMessage}</h2>\n <img className={Style.shareImage} src={shareImage} alt=\"share email\" />\n <SignInApple\n isUpsell\n onAppleLinking={onAppleLinking}\n onAppleSignIn={onAppleSignIn}\n setAppleEmail={setAppleEmail}\n setAppleToken={setAppleToken}\n setIsAppleEmailShared={setIsAppleEmailShared}\n />\n </div>\n </main>\n );\n};\n\nShareMyEmailUpsell.propTypes = {\n onAppleLinking: PropTypes.func,\n onAppleSignIn: PropTypes.func,\n setAppleEmail: PropTypes.func,\n setAppleToken: PropTypes.func,\n setIsAppleEmailShared: PropTypes.func,\n};\n\nexport default ShareMyEmailUpsell;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Style from './CTA.module.scss';\n\nconst CTA = ({ linkText = '', onClick = () => {}, text = '' }) => (\n <div className={Style.signinCreateProfileContainer}>\n {text}\n <button className={Style.link} onClick={onClick}>\n {linkText}\n </button>\n </div>\n);\n\nCTA.propTypes = {\n linkText: PropTypes.string,\n onClick: PropTypes.func,\n text: PropTypes.string,\n};\n\nexport default CTA;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Icon from 'components/Icon';\n\nimport Style from '../SocialLogin.module.scss';\n\nconst TEST_ID = 'shared-social-facebook';\nconst SocialFacebook = ({\n facebookGenericError,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n onSocialFacebookLogin,\n showFacebookLogin,\n showFacebookSignup,\n isConsolidatedSignUp,\n}) => {\n const showFacebook = showFacebookLogin || showFacebookSignup;\n\n if (!showFacebook) return null;\n\n let text = facebookLoginText;\n let optionalText = facebookLoginOptionalText;\n const onClick = onSocialFacebookLogin;\n\n if (showFacebookSignup) {\n text = facebookSignupText;\n optionalText = facebookSignupOptionalText;\n }\n\n return (\n <div data-test={TEST_ID}>\n <button\n className={classNames(\n Style.socialFacebookButton,\n isConsolidatedSignUp ? Style.circleIcon : null,\n )}\n onClick={onClick}\n >\n <span className={Style.socialFacebookButtonIcon}>\n <Icon icon=\"facebook\" color={!isConsolidatedSignUp ? 'white' : ''} size=\"full\" />\n </span>\n {!isConsolidatedSignUp && (\n <div>\n <span className={Style.socialFacebookButtonText}>{text}</span>\n <span className={Style.socialFacebookButtonTextOptional}>{optionalText}</span>\n </div>\n )}\n </button>\n {!isConsolidatedSignUp && (\n <div className={Style.defaultErrorGenericText}>{facebookGenericError}</div>\n )}\n </div>\n );\n};\n\nSocialFacebook.defaultProps = {\n facebookGenericError: null,\n facebookLoginOptionalText: null,\n facebookLoginText: null,\n facebookSignupOptionalText: null,\n facebookSignupText: null,\n onSocialFacebookLogin: () => {},\n showFacebookLogin: null,\n showFacebookSignup: null,\n};\n\nSocialFacebook.propTypes = {\n isConsolidatedSignUp: PropTypes.bool,\n facebookGenericError: PropTypes.string,\n facebookLoginOptionalText: PropTypes.string,\n facebookLoginText: PropTypes.string,\n facebookSignupOptionalText: PropTypes.string,\n facebookSignupText: PropTypes.string,\n onSocialFacebookLogin: PropTypes.func,\n showFacebookLogin: PropTypes.bool,\n showFacebookSignup: PropTypes.bool,\n};\n\nexport default SocialFacebook;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport SocialFacebook from './components/SocialFacebook';\n\nimport Style from './SocialLogin.module.scss';\n\nconst TEST_ID = 'shared-social-login';\nconst SocialLogin = ({\n facebookGenericError,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n onSocialFacebookLogin,\n showFacebookLogin,\n showFacebookSignup,\n showSignin,\n isConsolidatedSignUp,\n}) => {\n const render = showFacebookLogin || showFacebookSignup;\n if (!render) return null;\n\n return (\n <div className={Style.socialContainer} data-test={TEST_ID}>\n <SocialFacebook\n facebookGenericError={facebookGenericError}\n facebookLoginOptionalText={facebookLoginOptionalText}\n facebookLoginText={facebookLoginText}\n facebookSignupOptionalText={facebookSignupOptionalText}\n facebookSignupText={facebookSignupText}\n onSocialFacebookLogin={onSocialFacebookLogin}\n showFacebookLogin={showFacebookLogin}\n showFacebookSignup={showFacebookSignup}\n isConsolidatedSignUp={isConsolidatedSignUp}\n />\n </div>\n );\n};\n\nexport default SocialLogin;\n\nSocialLogin.defaultProps = {\n facebookGenericError: null,\n facebookLoginOptionalText: null,\n facebookLoginText: null,\n facebookSignupOptionalText: null,\n facebookSignupText: null,\n onSocialFacebookLogin: noop,\n showFacebookLogin: null,\n showFacebookSignup: null,\n showSignin: null,\n};\n\nSocialLogin.propTypes = {\n isConsolidatedSignUp: PropTypes.bool,\n facebookGenericError: PropTypes.string,\n facebookLoginOptionalText: PropTypes.string,\n facebookLoginText: PropTypes.string,\n facebookSignupOptionalText: PropTypes.string,\n facebookSignupText: PropTypes.string,\n onSocialFacebookLogin: PropTypes.func,\n showFacebookLogin: PropTypes.bool,\n showFacebookSignup: PropTypes.bool,\n showSignin: PropTypes.bool,\n};\n","import React from 'react';\nimport Style from './SignInSeparator.module.scss';\n\nconst SignInSeparator = () => (\n <div className={Style.signInSeparatorContainer}>\n <div className={Style.signInSeparator}>\n <span className={Style.signInSeparatorLine} />\n <span className={Style.signInSeparatorText}>OR</span>\n <span className={Style.signInSeparatorLine} />\n </div>\n </div>\n);\n\nexport default SignInSeparator;\n","/*\n global SignInWithApple\n*/\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { getActivateCodeFromURL, setActivateCode } from 'helpers/ActivateHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport { Events, PageNames, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport CTA from '../CTA';\nimport ForgotPasswordCTA from '../ForgotPasswordCTA';\nimport Header from '../Header';\nimport SocialLogin from '../SocialLogin';\nimport SignInApple from '../SignInApple';\nimport SignInSeparator from '../SignInSeparator';\nimport GoogleSignInButton from '../GoogleSignInButton';\n\nimport Style from './SignIn.module.scss';\n\nconst Signin = ({\n ctaProps,\n facebookGenericError,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n forgotPasswordCTAProps,\n getUseUtagGlobal,\n headerProps,\n language,\n onAppleLinking,\n onAppleSignIn,\n onClose,\n onFieldChange,\n onSignin,\n onSocialFacebookLogin,\n pageViewEvent,\n setAppleEmail,\n setAppleToken,\n setIsAppleEmailShared,\n showFacebookLogin,\n showSignin,\n signinEmail,\n signinEmailError,\n signinGenericError,\n signinPassword,\n signinPasswordError,\n signinShowPassword,\n toggleCreatePassword,\n utagAccountSource,\n}) => {\n const {\n global_signInButton: signinButtonText,\n profileSignin_header: headerText,\n profile_emailInputPlaceholder: emailPlaceholder,\n profile_genericErrorSignInMessage: signinErrorMessage,\n profile_genericInvalidError: invalidError,\n profile_passwordInputPlaceholder: passwordPlaceholder,\n profile_emailInvalidError: emailInvalidError,\n } = language || {};\n\n const didTriggerSegmentProfileEvents = useRef(false);\n\n useEffect(() => {\n const code = getActivateCodeFromURL();\n if (code) setActivateCode(code);\n\n if (!didTriggerSegmentProfileEvents.current) {\n pageViewEvent({ pageName: PageNames.PROFILE_SIGN_IN, useUtagGlobal: getUseUtagGlobal() });\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_LANDING,\n payload: {\n pageName: 'account:profile sign in',\n pageType: 'profile sign in',\n },\n });\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_STARTED,\n payload: { utagAccountSource },\n });\n\n didTriggerSegmentProfileEvents.current = true;\n }\n }, [getUseUtagGlobal, pageViewEvent, utagAccountSource]);\n\n let signinPasswordInput = React.createRef();\n const passwordType = signinShowPassword ? 'text' : 'password';\n let errorText = signinGenericError ? signinErrorMessage : null;\n\n if (_.toLower(signinGenericError) === 'invalid loginid') {\n errorText = invalidError;\n }\n\n let passwordErrorText;\n let emailErrorText;\n\n // local error checking\n if (signinPasswordError) {\n passwordErrorText = signinPasswordError;\n }\n\n if (signinEmailError) {\n emailErrorText = emailInvalidError;\n }\n\n return (\n <main className={Style.signIn}>\n <Header {...headerProps} />\n <div className={Style.signInWrap}>\n <h1>{headerText}</h1>\n <GoogleSignInButton onClose={onClose} toggleCreatePassword={toggleCreatePassword} />\n <SocialLogin\n facebookGenericError={facebookGenericError}\n facebookLoginOptionalText={facebookLoginOptionalText}\n facebookLoginText={facebookLoginText}\n facebookSignupOptionalText={facebookSignupOptionalText}\n facebookSignupText={facebookSignupText}\n onSocialFacebookLogin={onSocialFacebookLogin}\n showFacebookLogin={showFacebookLogin}\n showSignin={showSignin}\n />\n {SignInWithApple && !isBrowserIE() && (\n <SignInApple\n onAppleSignIn={onAppleSignIn}\n onAppleLinking={onAppleLinking}\n setAppleEmail={setAppleEmail}\n setAppleToken={setAppleToken}\n setIsAppleEmailShared={setIsAppleEmailShared}\n />\n )}\n {<SignInSeparator />}\n <div className={Style.error}>{errorText}</div>\n <form\n action=\"\"\n method=\"post\"\n onSubmit={e => {\n e.preventDefault();\n onSignin({ isCCPAVerify: false });\n return false;\n }}\n >\n <div className={Style.signupFormInputContainer}>\n <div className={Style.signInPasswordContainer}>\n <input\n className={Style.inputField}\n autoFocus\n type=\"email\"\n name=\"signinEmail\"\n placeholder={emailPlaceholder}\n value={signinEmail}\n onChange={onFieldChange}\n autoCapitalize=\"none\"\n />\n <div className={Style.error}>{emailErrorText}</div>\n </div>\n <div className={Style.signInPasswordContainer}>\n <input\n className={Style.inputField}\n type={passwordType}\n name=\"signinPassword\"\n placeholder={passwordPlaceholder}\n value={signinPassword}\n onChange={onFieldChange}\n ref={input => {\n signinPasswordInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n className={Style.inputField}\n name=\"signinShowPassword\"\n type=\"checkbox\"\n value={signinShowPassword}\n onChange={e => {\n onFieldChange(e);\n signinPasswordInput.focus();\n }}\n />\n <span />\n </label>\n <div className={Style.error}>{passwordErrorText}</div>\n </div>\n <button className={Style.btnPrimary}>{signinButtonText}</button>\n <ForgotPasswordCTA {...forgotPasswordCTAProps} />\n </div>\n </form>\n <CTA {...ctaProps} />\n </div>\n </main>\n );\n};\n\nSignin.defaultProps = {\n children: {},\n facebookGenericError: null,\n facebookLoginOptionalText: null,\n facebookLoginText: null,\n facebookSignupOptionalText: null,\n facebookSignupText: null,\n href: '',\n mvpdData: null,\n privacyPolicyClickEvent: {},\n showFacebookLogin: null,\n showSignin: null,\n signinDropdownIconTheme: {},\n signinEmail: null,\n signinEmailError: null,\n signinGenericError: null,\n signinMigrationDropdownOpen: false,\n signinPassword: null,\n signinPasswordError: null,\n signinShowPassword: false,\n};\n\nSignin.propTypes = {\n children: PropTypes.shape({}),\n ctaProps: PropTypes.shape({}).isRequired,\n facebookGenericError: PropTypes.string,\n facebookLoginOptionalText: PropTypes.string,\n facebookLoginText: PropTypes.string,\n facebookSignupOptionalText: PropTypes.string,\n facebookSignupText: PropTypes.string,\n forgotPasswordCTAProps: PropTypes.shape({}).isRequired,\n getUseUtagGlobal: PropTypes.func,\n headerProps: PropTypes.shape({}).isRequired,\n href: PropTypes.string,\n language: PropTypes.shape({\n global_signInButton: PropTypes.string,\n profileSignin_header: PropTypes.string,\n profile_emailInputPlaceholder: PropTypes.string,\n profile_genericErrorSignInMessage: PropTypes.string,\n profile_genericInvalidError: PropTypes.string,\n profile_passwordInputPlaceholder: PropTypes.string,\n }).isRequired,\n mvpdData: PropTypes.shape({}),\n onAppleLinking: PropTypes.func,\n onAppleSignIn: PropTypes.func,\n onClose: PropTypes.func,\n onFieldChange: PropTypes.func.isRequired,\n onSignin: PropTypes.func.isRequired,\n onSocialFacebookLogin: PropTypes.func.isRequired,\n pageViewEvent: PropTypes.func,\n privacyPolicyClickEvent: PropTypes.shape({}),\n setAppleEmail: PropTypes.func,\n setAppleToken: PropTypes.func,\n setIsAppleEmailShared: PropTypes.func,\n showFacebookLogin: PropTypes.bool,\n showSignin: PropTypes.bool,\n signinDropdownIconTheme: PropTypes.shape({}),\n signinEmail: PropTypes.string,\n signinEmailError: PropTypes.bool,\n signinGenericError: PropTypes.string,\n signinMigrationDropdownOpen: PropTypes.bool,\n signinPassword: PropTypes.string,\n signinPasswordError: PropTypes.string,\n signinShowPassword: PropTypes.bool,\n toggleCreatePassword: PropTypes.func,\n utagAccountSource: PropTypes.string.isRequired,\n};\n\nexport default Signin;\n","/*\n global SignInWithApple\n*/\nimport React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport helperMarkdownToComponent from 'helpers/Data';\nimport {\n Events,\n handleAnalytics,\n PageNames,\n SegmentPageStartSources,\n} from '@foxcorp/delta-web-analytics';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport CTA from '../CTA';\nimport Header from '../Header';\nimport SocialLogin from '../SocialLogin';\nimport SignInAppleButton from '../SignInApple/components/SignInAppleButton';\nimport SignInSeparator from '../SignInSeparator';\nimport GoogleSignInButton from '../GoogleSignInButton';\n\nimport Style from './SignUp.module.scss';\n\nconst Signup = ({\n ctaProps,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookGenericError,\n facebookSignupOptionalText,\n facebookSignupText,\n getUseUtagGlobal,\n handleShowShareMyEmailUpsell,\n headerProps,\n language,\n onClose,\n onFieldChange,\n onSignup,\n onSocialFacebookLogin,\n showFacebookSignup,\n pageViewEvent,\n privacyPolicyClickEvent,\n signUpEventFired,\n signupAgeError,\n signupEmail,\n signupEmailError,\n signupEmailExistsError,\n signupFirstName,\n signupFirstNameError,\n signupFullNameError,\n signupGenericError,\n signupLastName,\n signupLastNameError,\n signupPassword,\n signupPasswordError,\n signupShowPassword,\n signupSocialEmailExistsError,\n toggleCreatePassword,\n utagAccountSource,\n}) => {\n const didTriggerSegmentProfileEvents = useRef(false);\n\n useEffect(() => {\n if (!didTriggerSegmentProfileEvents.current) {\n pageViewEvent({ pageName: PageNames.PROFILE_SIGN_UP, useUtagGlobal: getUseUtagGlobal() });\n\n handleAnalytics(\n {\n event: Events.PROFILE_SIGN_UP_LANDING,\n payload: {\n pageName: 'account:profile sign up',\n pageType: 'profile sign up',\n },\n },\n {\n event: Events.PROFILE_SIGNUP_STATRED,\n payload: { utagAccountSource },\n },\n );\n\n didTriggerSegmentProfileEvents.current = true;\n }\n }, [getUseUtagGlobal, pageViewEvent, utagAccountSource]);\n\n const {\n appleLoginText,\n profile_disclaimer: disclaimerText,\n profile_emailInvalidError: invalidEmailError,\n profile_existingErrorSignUpMessage: signUpExistingErrorMessage,\n profile_firstnameInputPlaceholder: firstNamePlaceholder,\n profile_genericErrorSignUpMessage: signUpErrorMessage,\n profile_lastnameInputPlaceholder: lastNamePlaceholder,\n profileCreate_createButton: createButtonText,\n profileCreate_emptyFirstAndLastNameError: emptyFirstAndLastNameError,\n profileCreate_emptyFirstNameError: firstNameEmptyError,\n profileCreate_emptyLastNameError: lastNameEmptyError,\n profileCreate_header: headerText,\n profileCreate_optinCombinedText: optinCombinedText,\n profileCreate_socialEmailExistsError: socialEmailExistsError,\n profileError_passwordLength: passwordLengthError,\n } = language || {};\n let signupPasswordInput = React.createRef();\n const passwordType = signupShowPassword ? 'text' : 'password';\n let errorText;\n let isFirstNameError;\n let isLastNameError;\n let isFullNameError;\n let isPasswordError;\n let isEmailError;\n\n if (signupGenericError) {\n const providedErrorMessaging = _.isString(signupGenericError) && signupGenericError;\n errorText = providedErrorMessaging || signUpErrorMessage;\n }\n\n if (signupFirstNameError && !signupFullNameError) {\n isFirstNameError = { active: true, text: firstNameEmptyError };\n }\n\n if (signupLastNameError && !signupFullNameError) {\n isLastNameError = { active: true, text: lastNameEmptyError };\n }\n\n if (signupFullNameError) {\n isFullNameError = { active: true, text: emptyFirstAndLastNameError };\n }\n\n if (signupEmailError) {\n isEmailError = { active: true, text: invalidEmailError };\n }\n\n if (signupEmailExistsError) {\n errorText = signUpExistingErrorMessage;\n }\n\n if (signupPasswordError) {\n isPasswordError = { active: true, text: passwordLengthError };\n }\n\n if (signupSocialEmailExistsError) {\n errorText = socialEmailExistsError;\n }\n const disclaimer = disclaimerText ? (\n <p className={Style.signupFieldInfo}>{disclaimerText}</p>\n ) : null;\n\n const submitHandler = e => {\n e.preventDefault();\n if (signUpEventFired) return false;\n onSignup();\n return false;\n };\n\n return (\n <main className={Style.SignUp}>\n <Header {...headerProps} />\n <div className={Style.SignUpContainer}>\n <h1>{headerText}</h1>\n <GoogleSignInButton onClose={onClose} toggleCreatePassword={toggleCreatePassword} />\n <SocialLogin\n facebookGenericError={facebookGenericError}\n facebookLoginOptionalText={facebookLoginOptionalText}\n facebookLoginText={facebookLoginText}\n facebookSignupOptionalText={facebookSignupOptionalText}\n facebookSignupText={facebookSignupText}\n onSocialFacebookLogin={onSocialFacebookLogin}\n showFacebookSignup={showFacebookSignup}\n showSignin\n />\n {SignInWithApple && !isBrowserIE() && (\n <SignInAppleButton\n handleSignIn={handleShowShareMyEmailUpsell}\n buttonText={appleLoginText}\n />\n )}\n <SignInSeparator />\n <div\n className={classNames(\n Style.errorText,\n (signupGenericError || signupEmailExistsError || signupSocialEmailExistsError) &&\n Style.active,\n )}\n >\n {errorText}\n </div>\n <form action=\"\" method=\"post\" autoComplete=\"off\" onSubmit={submitHandler}>\n <div className={Style.signupNameContainer}>\n <div className={Style.signupColumnSplit}>\n <input\n className={classNames(\n Style.inputField,\n (isFirstNameError?.active || isFullNameError?.active) && Style.errorInput,\n )}\n type=\"text\"\n placeholder={firstNamePlaceholder}\n name=\"signupFirstName\"\n value={signupFirstName}\n onChange={onFieldChange}\n disabled={signupAgeError}\n />\n <div\n className={classNames(Style.errorText, isFirstNameError?.active && Style.active)}\n >\n {isFirstNameError?.text}\n </div>\n </div>\n <div className={Style.signupColumnSplit}>\n <input\n className={classNames(\n Style.inputField,\n (isLastNameError?.active || isFullNameError?.active) && Style.errorInput,\n )}\n type=\"text\"\n name=\"signupLastName\"\n placeholder={lastNamePlaceholder}\n value={signupLastName}\n onChange={onFieldChange}\n disabled={signupAgeError}\n />\n <div className={classNames(Style.errorText, isLastNameError?.active && Style.active)}>\n {isLastNameError?.text}\n </div>\n </div>\n </div>\n <div className={classNames(Style.errorText, isFullNameError?.active && Style.active)}>\n {isFullNameError?.text}\n </div>\n <div className={Style.signupColumn}>\n <input\n className={classNames(Style.inputField, isEmailError?.active && Style.errorInput)}\n type=\"email\"\n name=\"signupEmail\"\n placeholder=\"Email Address\"\n value={signupEmail}\n onChange={onFieldChange}\n onInvalid={() => {\n handleAnalytics({\n event: Events.PROFILE_SIGN_UP_ERROR,\n payload: {\n page_error_description: 'Invalid Email',\n page_error_type: 'client-side',\n page_start_source: SegmentPageStartSources.ONBOARDING,\n },\n });\n }}\n autoCapitalize=\"none\"\n disabled={signupAgeError}\n />\n <div className={classNames(Style.errorText, isEmailError?.active && Style.active)}>\n {isEmailError?.text}\n </div>\n </div>\n <div className={Style.signupColumn}>\n <div className={Style.signupInline}>\n <input\n className={classNames(\n Style.inputField,\n isPasswordError?.active && Style.errorInput,\n )}\n type={passwordType}\n name=\"signupPassword\"\n placeholder=\"Password\"\n value={signupPassword}\n onChange={onFieldChange}\n disabled={signupAgeError}\n ref={input => {\n signupPasswordInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n className={classNames(Style.signupShowPassword)}\n name=\"signupShowPassword\"\n type=\"checkbox\"\n value={signupShowPassword}\n onChange={e => {\n onFieldChange(e);\n signupPasswordInput.focus();\n }}\n disabled={signupAgeError}\n />\n <span />\n </label>\n </div>\n <div className={classNames(Style.errorText, isPasswordError?.active && Style.active)}>\n {isPasswordError?.text}\n </div>\n </div>\n {disclaimer}\n <div\n className={classNames(Style.termsText, Style.signupTerms, Style.signupTermsContainer)}\n >\n <div className={Style.termsText}>\n {helperMarkdownToComponent(optinCombinedText, privacyPolicyClickEvent, {\n /* eslint-disable */\n Paragraph: props => {\n const { children } = props;\n if (!children) return null;\n return <p className={Style.termsText}>{children}</p>;\n },\n Link: props => (\n <a href={props.href} className={Style.termsLink} target=\"noopener noreferrer\">\n {props.children}\n </a>\n ),\n })}\n </div>\n </div>\n <button className={Style.btn} disabled={signupAgeError}>\n {createButtonText}\n </button>\n </form>\n <CTA {...ctaProps} />\n </div>\n </main>\n );\n};\n\nexport default Signup;\n\nSignup.defaultProps = {\n backgroundClass: null,\n facebookGenericError: null,\n facebookLoginOptionalText: null,\n facebookLoginText: null,\n facebookSignupOptionalText: null,\n facebookSignupText: null,\n language: {},\n privacyPolicyClickEvent: {},\n showFacebookSignup: null,\n signupAgeError: null,\n signupBirthdate: null,\n signupBirthdateError: null,\n signupBirthdateInvalidError: null,\n signupBirthdatePlaceholder: null,\n signupEmail: '',\n signupEmailError: null,\n signupEmailExistsError: null,\n signupFirstName: '',\n signupFirstNameError: null,\n signupFullNameError: null,\n signupGenderDropdownOpen: null,\n signupGenderError: null,\n signupGenderVisualName: null,\n signupGenericError: null,\n signupLastName: '',\n signupLastNameError: null,\n signupPassword: '',\n signupPasswordError: null,\n signupShowPassword: false,\n signupSocialEmailExistsError: null,\n};\n\nSignup.propTypes = {\n backgroundClass: PropTypes.string,\n ctaProps: PropTypes.shape({}).isRequired,\n facebookGenericError: PropTypes.string,\n facebookLoginOptionalText: PropTypes.string,\n facebookLoginText: PropTypes.string,\n facebookSignupOptionalText: PropTypes.string,\n facebookSignupText: PropTypes.string,\n getUseUtagGlobal: PropTypes.func,\n headerProps: PropTypes.shape({}).isRequired,\n handleShowShareMyEmailUpsell: PropTypes.func,\n language: PropTypes.shape({\n profileCreate_header: PropTypes.string,\n profile_firstnameInputPlaceholder: PropTypes.string,\n profile_lastnameInputPlaceholder: PropTypes.string,\n profile_genericErrorSignUpMessage: PropTypes.string,\n profile_existingErrorSignUpMessage: PropTypes.string,\n profileCreate_optinCombinedText: PropTypes.string,\n profileCreate_createButton: PropTypes.string,\n profileError_passwordLength: PropTypes.string,\n profile_disclaimer: PropTypes.string,\n }),\n onAppleLinking: PropTypes.func,\n onAppleSignIn: PropTypes.func,\n onClose: PropTypes.func,\n onFieldChange: PropTypes.func.isRequired,\n onSignup: PropTypes.func.isRequired,\n onSocialFacebookLogin: PropTypes.func.isRequired,\n pageViewEvent: PropTypes.func,\n privacyPolicyClickEvent: PropTypes.shape({}),\n setAppleEmail: PropTypes.func,\n setAppleToken: PropTypes.func,\n setGender: PropTypes.func,\n setIsAppleEmailShared: PropTypes.func,\n showFacebookSignup: PropTypes.bool,\n signupAgeError: PropTypes.bool,\n signupBirthdate: PropTypes.string,\n signupBirthdateError: PropTypes.bool,\n signupBirthdateInvalidError: PropTypes.bool,\n signupBirthdatePlaceholder: PropTypes.string,\n signupEmail: PropTypes.string,\n signupEmailError: PropTypes.bool,\n signupEmailExistsError: PropTypes.string,\n signUpEventFired: PropTypes.bool,\n signupFirstName: PropTypes.string,\n signupFirstNameError: PropTypes.bool,\n signupFullNameError: PropTypes.bool,\n signupGenderDropdownOpen: PropTypes.bool,\n signupGenderError: PropTypes.bool,\n signupGenderVisualName: PropTypes.string,\n signupGenericError: PropTypes.string,\n signupLastName: PropTypes.string,\n signupLastNameError: PropTypes.bool,\n signupPassword: PropTypes.string,\n signupPasswordError: PropTypes.bool,\n signupShowPassword: PropTypes.bool,\n signupSocialEmailExistsError: PropTypes.string,\n toggleCreatePassword: PropTypes.func,\n toggleGender: PropTypes.func,\n utagAccountSource: PropTypes.string.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { noop } from 'helpers/GlobalHelper';\nimport OverlayFooter from 'components/OverlayFooter';\nimport Style from './SignupSuccess.module.scss';\nimport Header from '../Header';\n\nconst SignupSuccess = ({\n language,\n onClose,\n onMvpdStart,\n optimizelyLanguageStrings,\n renderLogo,\n useMVPDLoginProfile,\n}) => {\n const {\n profileCreate_successButton: successButtonText,\n profileCreate_successHeader: headerText,\n profileCreate_successText: successText,\n } = language || {};\n\n const buttonComponent = ({ buttonText, buttonClick }) => (\n <button onClick={buttonClick} className={Style.btnPrimary}>\n {buttonText}\n </button>\n );\n buttonComponent.propTypes = {\n buttonText: PropTypes.string,\n buttonClick: PropTypes.func,\n };\n buttonComponent.defaultProps = {\n buttonText: null,\n buttonClick: noop,\n };\n\n // Optimizely Experiment to prompt MVPD login after sign up\n const optimizelyMVPDLoginButtonText = _.get(\n optimizelyLanguageStrings,\n 'profile_connectMVPDButtonText',\n 'Connect my TV Provider',\n );\n const optimizelyCloseButtonText = _.get(\n optimizelyLanguageStrings,\n 'profile_closeButtonText',\n 'Maybe Later',\n );\n const mvpdLoginButton =\n useMVPDLoginProfile &&\n buttonComponent({\n buttonText: optimizelyMVPDLoginButtonText,\n buttonClick: onMvpdStart,\n });\n const maybeLaterLink = (\n <span onClick={onClose} className={Style.maybeLaterLink}>\n {optimizelyCloseButtonText}\n </span>\n );\n\n const closeOverlayButton = useMVPDLoginProfile\n ? maybeLaterLink\n : buttonComponent({\n buttonText: successButtonText,\n buttonClick: onClose,\n });\n\n return (\n <main className={Style.SignUpSuccess}>\n <Header onClose={onClose} renderLogo={renderLogo} />\n <div className={Style.container}>\n <div className={Style.contentWrap}>\n <h1 className={Style.signupSuccessHeaderText}>{headerText}</h1>\n <p className={Style.signupSuccessText}>{successText}</p>\n {mvpdLoginButton}\n {closeOverlayButton}\n </div>\n </div>\n <OverlayFooter language={language} />\n </main>\n );\n};\n\nSignupSuccess.defaultProps = {\n language: {},\n onMvpdStart: noop,\n optimizelyLanguageStrings: noop,\n useMVPDLoginProfile: false,\n};\n\nSignupSuccess.propTypes = {\n language: PropTypes.shape({\n profileCreate_successButton: PropTypes.string,\n profileCreate_successHeader: PropTypes.string,\n profileCreate_successText: PropTypes.string,\n }),\n onClose: PropTypes.func.isRequired,\n onMvpdStart: PropTypes.func,\n optimizelyLanguageStrings: PropTypes.func,\n renderLogo: PropTypes.func.isRequired,\n useMVPDLoginProfile: PropTypes.bool,\n};\n\nexport default SignupSuccess;\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport helperMarkdownToComponent from 'helpers/Data';\nimport { onEnterKeyPress } from 'helpers/Account';\nimport OverlayFooter from 'components/OverlayFooter';\nimport Header from '../Header';\n\nimport Style from './SocialFacebookPasswordLink.module.scss';\n\nconst SocialFacebookPasswordLink = ({\n facebookEmail,\n facebookPasswordLinkGenericError,\n facebookPasswordLinkPassword,\n facebookPasswordLinkPasswordError,\n facebookPasswordLinkShowPassword,\n handleClick,\n headerProps,\n language,\n onFieldChange,\n}) => {\n const {\n profileError_passwordLength: passwordLengthError,\n profile_facebookLoginTitle: facebookLoginTitle,\n profile_facebookLoginHeader: facebookLoginHeader,\n profile_facebookLoginCopy: facebookLoginCopy,\n profileCreate_optinCombinedText: optinText,\n profileCreate_createButton: createButtonText,\n } = language || {};\n\n let socialFbLinkPasswordInput = React.createRef();\n let errorText = '';\n let passwordErrorText;\n\n const passwordType = facebookPasswordLinkShowPassword ? 'text' : 'password';\n\n if (facebookPasswordLinkPasswordError) {\n passwordErrorText = passwordLengthError;\n }\n\n if (!passwordErrorText) {\n errorText = facebookPasswordLinkGenericError;\n }\n\n return (\n <main className={Style.SocialFacebookPasswordLink}>\n <Header {...headerProps} />\n <div className={Style.SocialFacebookPasswordLinkWrap}>\n <div className={Style.signupFormContainer}>\n <div className={Style.headerTextDesktop}>{facebookLoginTitle}</div>\n <div className={Style.facebookPasswordLinkHeader}>{facebookLoginHeader}</div>\n <div className={Style.facebookPasswordLinkCopy}>{facebookLoginCopy}</div>\n <div className={Style.error}>{errorText}</div>\n <div className={Style.signupPasswordContainer}>\n <input\n className={Style.inputField}\n type=\"text\"\n name=\"facebookPasswordLoginLinkEmail\"\n placeholder=\"Email\"\n value={facebookEmail}\n autoCapitalize=\"none\"\n disabled\n />\n </div>\n <div className={Style.signupPasswordContainer}>\n <input\n className={Style.inputField}\n type={passwordType}\n name=\"facebookPasswordLinkPassword\"\n placeholder=\"Password\"\n value={facebookPasswordLinkPassword}\n onChange={onFieldChange}\n ref={input => {\n socialFbLinkPasswordInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n onKeyPress={e => {\n onEnterKeyPress(e, handleClick);\n }}\n />\n <label className={Style.passwordLabel}>\n <input\n name=\"facebookPasswordLinkShowPassword\"\n type=\"checkbox\"\n value={facebookPasswordLinkShowPassword}\n onChange={e => {\n onFieldChange(e);\n socialFbLinkPasswordInput.focus();\n }}\n />\n <span />\n </label>\n </div>\n <div className={Style.error}>{passwordErrorText}</div>\n <div\n className={classNames(Style.termsText, Style.signupTerms, Style.signupTermsContainer)}\n >\n {helperMarkdownToComponent(optinText, null, {\n /* eslint-disable */\n Paragraph: props => {\n const { children } = props;\n if (!children) return null;\n return <p className={Style.termsText}>{children}</p>;\n },\n Link: props => (\n <a\n href={props.href}\n className={Style.legalDisclaimerLink}\n target=\"noopener noreferrer\"\n >\n {props.children}\n </a>\n ),\n })}\n </div>\n <button className={Style.btnPrimary} onClick={handleClick}>\n {createButtonText}\n </button>\n </div>\n </div>\n <OverlayFooter language={language} />\n </main>\n );\n};\n\nSocialFacebookPasswordLink.defaultProps = {\n facebookPasswordLinkGenericError: null,\n facebookPasswordLinkPassword: null,\n facebookPasswordLinkPasswordError: null,\n facebookPasswordLinkShowPassword: null,\n language: {},\n};\n\nSocialFacebookPasswordLink.propTypes = {\n facebookEmail: PropTypes.string.isRequired,\n facebookPasswordLinkGenericError: PropTypes.string,\n facebookPasswordLinkPassword: PropTypes.string,\n facebookPasswordLinkPasswordError: PropTypes.string,\n facebookPasswordLinkShowPassword: PropTypes.string,\n handleClick: PropTypes.func.isRequired,\n headerProps: PropTypes.shape({}).isRequired,\n language: PropTypes.shape({\n profileError_passwordLength: PropTypes.string,\n profile_facebookLoginTitle: PropTypes.string,\n profile_facebookLoginHeader: PropTypes.string,\n profile_facebookLoginCopy: PropTypes.string,\n profileCreate_optinCombinedText: PropTypes.string,\n profileCreate_createButton: PropTypes.string,\n }),\n onFieldChange: PropTypes.func.isRequired,\n};\n\nexport default SocialFacebookPasswordLink;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { clearAllCookies } from 'helpers/ConfigHelper';\nimport Loader from 'components/Loader';\nimport ForgotPasswordCTA from '../ForgotPasswordCTA';\nimport Header from '../Header';\nimport SocialLogin from '../SocialLogin';\n\nimport Style from './VerifyAccount.module.scss';\n\nconst VerifyAccount = ({\n bubbleState,\n ctaProps,\n facebookGenericError,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n forgotPasswordCTAProps,\n headerProps,\n language,\n onFieldChange,\n onSignin,\n onSocialFacebookLogin,\n showFacebookLogin,\n showVerifyConfirmation,\n signinDropdownIconTheme,\n signinEmail,\n signinEmailError,\n signinGenericError,\n signinMigrationDropdownOpen,\n signinPassword,\n signinPasswordError,\n signinShowPassword,\n}) => {\n const {\n ccpa_no_account_text: ccpaNoAccountText,\n profileDetails_verifyButton: verifyText,\n profile_emailInputPlaceholder: emailPlaceholder,\n profile_genericInvalidError: invalidError,\n profile_passwordInputPlaceholder: passwordPlaceholder,\n profile_emailInvalidError: emailInvalidError,\n profile_verifyTermsText: verifyTermsText,\n profile_confirmationMessage: confirmationMessage,\n profile_confirmationHeader: confirmationHeader,\n profileDetails_completeButton: completeButtonText,\n profile_verifyPrivacyPolicyText: verifyPrivacyPolicyText,\n profile_verifyHeaderText: verifyHeaderText,\n profile_verifyPrivacyPolicyLinkText: verifyPrivacyPolicyLinkText,\n profile_verifyTermsBoldText: verifyTermsBoldText,\n profile_verifyTermsLastText: verifyTermsLastText,\n profile_verifyWithoutPasswordText: verifyWithoutPasswordText,\n } = language || {};\n const privacyPolicyUrl = _.get(window, 'ExternalConfig.privacyPolicyUrl', '');\n const { text: CTAText, onClick: CTAOnClick } = ctaProps;\n const { onClose } = headerProps;\n const passwordType = signinShowPassword ? 'text' : 'password';\n let passwordErrorText;\n let emailErrorText;\n let signinPasswordInput = React.createRef();\n let errorText = signinGenericError ? ccpaNoAccountText : null;\n\n clearAllCookies();\n\n const [isVerifyLoading, setIsVerifyLoading] = useState(false);\n const [isNoAccountLoading, setIsNoAccountLoading] = useState(false);\n\n useEffect(() => {\n if (signinEmailError || signinPasswordError || signinGenericError) {\n setIsVerifyLoading(false);\n setIsNoAccountLoading(false);\n }\n }, [signinEmailError, signinPasswordError, signinGenericError]);\n\n const handleNoAccountClick = () => {\n CTAOnClick();\n setIsNoAccountLoading(true);\n };\n\n if (_.toLower(signinGenericError) === 'invalid loginid') {\n errorText = invalidError;\n }\n\n if (signinPasswordError) {\n passwordErrorText = signinPasswordError;\n }\n\n if (signinEmailError) {\n emailErrorText = emailInvalidError;\n }\n\n const handleOnChangePasswordInput = e => {\n onFieldChange(e);\n if (signinPasswordInput.current) {\n signinPasswordInput.current.focus();\n }\n };\n\n return (\n <main className={Style.verify}>\n <Header {...headerProps} />\n <div className={Style.verifyContainer}>\n {showVerifyConfirmation ? (\n <div className={Style.confirmationContainer}>\n <h1 className={Style.verifyHeaderText}>{confirmationHeader}</h1>\n <p className={Style.confirmationMessage}>{confirmationMessage}</p>\n <button\n className={Style.btnWhite}\n onClick={() => onClose({ goHome: true, isCCPAVerify: true })}\n >\n {completeButtonText}\n </button>\n </div>\n ) : (\n <>\n <h1 className={Style.verifyHeaderText}>{verifyHeaderText}</h1>\n <p className={Style.termsText}>\n {verifyTermsText}\n <strong> {verifyTermsBoldText} </strong>\n {verifyTermsLastText}\n </p>\n <p className={Style.termsNoPasswordText}>{verifyWithoutPasswordText}</p>\n <div className={Style.error}>{errorText}</div>\n <form\n className={Style.verifyForm}\n action=\"\"\n method=\"post\"\n onSubmit={e => {\n e.preventDefault();\n onSignin({ isCCPAVerify: true });\n setIsVerifyLoading(true);\n return false;\n }}\n >\n <div className={Style.signupFormInputContainer}>\n <div className={Style.signInPasswordContainer}>\n <input\n className={Style.inputField}\n autoFocus\n type=\"email\"\n name=\"signinEmail\"\n placeholder={emailPlaceholder}\n value={signinEmail}\n onChange={onFieldChange}\n autoCapitalize=\"none\"\n />\n <div className={Style.error}>{emailErrorText}</div>\n </div>\n <div className={Style.signInPasswordContainer}>\n <input\n className={Style.inputField}\n type={passwordType}\n name=\"signinPassword\"\n placeholder={passwordPlaceholder}\n value={signinPassword}\n onChange={onFieldChange}\n ref={input => {\n signinPasswordInput = input;\n }}\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n />\n <label className={Style.passwordLabel}>\n <input\n className={Style.inputField}\n name=\"signinShowPassword\"\n type=\"checkbox\"\n value={signinShowPassword}\n onChange={handleOnChangePasswordInput}\n />\n <span />\n </label>\n <div className={Style.error}>{passwordErrorText}</div>\n </div>\n <p className={Style.termsText}>\n {verifyPrivacyPolicyText}{' '}\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={Style.termsPolicyLink}\n href={privacyPolicyUrl}\n >\n {verifyPrivacyPolicyLinkText}\n </a>\n </p>\n <button className={Style.btnPrimary} disabled={isVerifyLoading}>\n {!isVerifyLoading ? verifyText : <Loader buttonLoader />}\n </button>\n </div>\n </form>\n <div className={Style.verifyOptions}>\n <button\n className={Style.btnHollow}\n disabled={isNoAccountLoading}\n onClick={handleNoAccountClick}\n >\n {!isNoAccountLoading ? CTAText : <Loader buttonLoader />}\n </button>\n <ForgotPasswordCTA {...forgotPasswordCTAProps} />\n <SocialLogin\n facebookGenericError={facebookGenericError}\n facebookLoginOptionalText={facebookLoginOptionalText}\n facebookLoginText={facebookLoginText}\n facebookSignupOptionalText={facebookSignupOptionalText}\n facebookSignupText={facebookSignupText}\n onSocialFacebookLogin={onSocialFacebookLogin}\n showFacebookLogin={showFacebookLogin}\n />\n </div>\n </>\n )}\n </div>\n </main>\n );\n};\n\nVerifyAccount.defaultProps = {\n children: {},\n facebookGenericError: null,\n facebookLoginOptionalText: null,\n facebookLoginText: null,\n facebookSignupOptionalText: null,\n facebookSignupText: null,\n href: '',\n showFacebookLogin: null,\n showVerifyConfirmation: false,\n signinDropdownIconTheme: {},\n signinEmail: null,\n signinEmailError: null,\n signinGenericError: null,\n signinMigrationDropdownOpen: false,\n signinPassword: null,\n signinPasswordError: null,\n signinShowPassword: false,\n};\n\nVerifyAccount.propTypes = {\n bubbleState: PropTypes.func.isRequired,\n children: PropTypes.shape({}),\n ctaProps: PropTypes.shape({}).isRequired,\n facebookGenericError: PropTypes.string,\n facebookLoginOptionalText: PropTypes.string,\n facebookLoginText: PropTypes.string,\n facebookSignupOptionalText: PropTypes.string,\n facebookSignupText: PropTypes.string,\n forgotPasswordCTAProps: PropTypes.shape({}).isRequired,\n headerProps: PropTypes.shape({}).isRequired,\n href: PropTypes.string,\n language: PropTypes.shape({\n global_signInButton: PropTypes.string,\n profileSignin_header: PropTypes.string,\n profileSignin_migrationDropdownText: PropTypes.string,\n profileSignin_migrationText: PropTypes.string,\n profile_emailInputPlaceholder: PropTypes.string,\n profile_genericErrorSignInMessage: PropTypes.string,\n profile_genericInvalidError: PropTypes.string,\n profile_passwordInputPlaceholder: PropTypes.string,\n }).isRequired,\n onFieldChange: PropTypes.func.isRequired,\n onSignin: PropTypes.func.isRequired,\n onSocialFacebookLogin: PropTypes.func.isRequired,\n showVerifyConfirmation: PropTypes.bool,\n showFacebookLogin: PropTypes.bool,\n signinDropdownIconTheme: PropTypes.shape({}),\n signinEmail: PropTypes.string,\n signinEmailError: PropTypes.bool,\n signinGenericError: PropTypes.string,\n signinMigrationDropdownOpen: PropTypes.bool,\n signinPassword: PropTypes.string,\n signinPasswordError: PropTypes.string,\n signinShowPassword: PropTypes.bool,\n};\n\nexport default VerifyAccount;\n","/* global CCPAEnabled, FB */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { browserHistory } from 'react-router';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport {\n DEFAULT_CHANGE_PASSWORD_STATE,\n DEFAULT_CREATE_PASSWORD_STATE,\n DEFAULT_FACEBOOK_PASSWORD_LINKING_STATE,\n DEFAULT_LINK_ACCOUNT_STATE,\n DEFAULT_OVERLAY_STATE,\n DEFAULT_PARENTAL_CONTROLS_STATE,\n DEFAULT_SIGNIN_STATE,\n DEFAULT_SIGNUP_STATE,\n DEFAULT_STATE,\n isValidEmail,\n isValidPassword,\n passwordErrors,\n} from 'helpers/Account';\nimport {\n getActivateCodeFromURL,\n getActivateCode,\n redirectToActivateMVPD,\n setActivateCode,\n setActivateCodeAccount,\n} from 'helpers/ActivateHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { login as facebookLogin } from 'helpers/Facebook';\nimport { CCPA_VERIFY_COOKIE_NAME, getUrlParameter, v1Override } from 'helpers/ContentHelper';\nimport {\n helperGetHomeUrl,\n helperGoToRelativeUrl,\n redirectToExternalUrl,\n getPreviousSettingPath,\n} from 'helpers/RouteHelper';\nimport { secondScreenProfileEnabled } from 'helpers/ConfigHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport {\n Events,\n handleAnalytics,\n mountSessionCam,\n SegmentPageProfileTypes,\n} from '@foxcorp/delta-web-analytics';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport { setCookie } from 'helpers/Storage';\nimport { setIsGoogleAutoSignIn } from 'helpers/AuthHelper';\nimport {\n onEditAccountBackClick,\n renderAppleLinking,\n renderChangePassword,\n renderCreatePassword,\n renderEditAccount,\n renderFacebookLinking,\n renderParentalControls,\n setEditAccountErrors,\n setFacebookLinkingErrors,\n} from './Overlays/index';\nimport {\n ActivationSuccess,\n AccountMain,\n ConsolidatedSignInFlow,\n DeleteAccount,\n ForgotPassword,\n ForgotPasswordSuccess,\n Logout,\n ManageFavorites,\n ResetPassword,\n ResetPasswordSuccess,\n ShareMyEmailUpsell,\n Signin,\n Signup,\n SignupSuccess,\n SocialFacebookPasswordLink,\n VerifyAccount,\n} from './AccountComponents/index';\n\nimport { setGoogleOneTap } from '../../index/AppActions';\nimport Style from './SharedStyles/SharedStyles.module.scss';\n\nconst SCREENS = {\n resetPassword: 'showResetPassword',\n signup: 'showSignup',\n main: 'showAccountMain',\n};\nconst NAME = 'Account';\nconst EMAIL_INVALID = '400';\nconst EMAIL_IS_REGISTERED = '409';\nconst EMAIL_IS_REGISTERED_TO_SOCIAL = '4090001';\nconst SKIP = 'skip';\n\nclass Account extends Component {\n constructor(props) {\n super(props);\n const { initialScreen, renderNetworkLink } = this.props;\n\n this.screen = _.get(SCREENS, initialScreen, null);\n this.fbAuthStarted = false;\n this.didComponentMount = false;\n\n const isVerifyScreen = window.location.pathname.includes('ccpa/verify');\n // Set Initial screen to true (initialScreen Ex: showResetPassword or showSignUp)\n // without modifying DEFAULT_STATE so it can be reset at later stages\n // (Ex: When receiving new props)\n let DEFAULTS = DEFAULT_STATE;\n if (this.screen) {\n DEFAULTS = _.clone(DEFAULT_STATE);\n DEFAULTS[this.screen] = true;\n }\n this.state = {\n ...DEFAULTS,\n signInEventFired: false,\n signUpEventFired: false,\n showShareMyEmailUpsell: false,\n showVerifyAccount: isVerifyScreen,\n fromVerifyAccount: false,\n showVerifyConfirmation: false,\n ccpaRequestId: null,\n };\n\n // overlays\n this.renderAppleLinking = renderAppleLinking.bind(this);\n this.renderChangePassword = renderChangePassword.bind(this);\n this.renderCreatePassword = renderCreatePassword.bind(this);\n this.renderEditAccount = renderEditAccount.bind(this);\n this.renderFacebookLinking = renderFacebookLinking.bind(this);\n this.renderSocialFacebookPasswordLink = this.renderSocialFacebookPasswordLink.bind(this);\n this.renderParentalControls = renderParentalControls.bind(this);\n\n // render helpers\n this.renderLogo = renderNetworkLink;\n\n // setters\n this.toggleEditAccount = this.toggleEditAccount.bind(this);\n this.setEditAccountErrors = setEditAccountErrors.bind(this);\n this.toggleResetPassword = this.toggleResetPassword.bind(this);\n this.toggleResetPasswordSuccess = this.toggleResetPasswordSuccess.bind(this);\n this.toggleManageFavorites = this.toggleManageFavorites.bind(this);\n this.toggleShowPerks = this.toggleShowPerks.bind(this);\n this.toggleSignup = this.toggleSignup.bind(this);\n this.toggleSignupSuccess = this.toggleSignupSuccess.bind(this);\n this.toggleSignin = this.toggleSignin.bind(this);\n this.toggleSignOut = this.toggleSignOut.bind(this);\n this.toggleAccountMain = this.toggleAccountMain.bind(this);\n this.toggleForgotPassword = this.toggleForgotPassword.bind(this);\n this.toggleChangePassword = this.toggleChangePassword.bind(this);\n this.toggleCreatePassword = this.toggleCreatePassword.bind(this);\n this.toggleAppleLinkAccount = this.toggleAppleLinkAccount(this);\n this.setSigninErrors = this.setSigninErrors.bind(this);\n this.setSignupErrors = this.setSignupErrors.bind(this);\n this.resetSignupState = this.resetSignupState.bind(this);\n this.toggleFacebookLinking = this.toggleFacebookLinking.bind(this);\n this.setFacebookLinkingErrors = setFacebookLinkingErrors.bind(this);\n this.setLinkingEmail = this.setLinkingEmail.bind(this);\n this.setAppleToken = this.setAppleToken.bind(this);\n this.setAppleLinkingEmail = this.setAppleLinkingEmail.bind(this);\n this.setIsAppleEmailShared = this.setIsAppleEmailShared.bind(this);\n this.setLinkingToken = this.setLinkingToken.bind(this);\n this.toggleFacebookPasswordLink = this.toggleFacebookPasswordLink.bind(this);\n this.toggleFacebookLoginPasswordLink = this.toggleFacebookLoginPasswordLink.bind(this);\n this.toggleParentalControls = this.toggleParentalControls.bind(this);\n\n // event handlers\n this.onEditAccountBackClick = onEditAccountBackClick.bind(this);\n this.onAppleSignIn = this.onAppleSignIn.bind(this);\n this.onAppleLinking = this.onAppleLinking.bind(this);\n this.onRegisterWithGoogle = this.onRegisterWithGoogle.bind(this);\n this.onFieldChange = this.onFieldChange.bind(this);\n this.onSignupBackClick = this.onSignupBackClick.bind(this);\n this.onSignup = this.onSignup.bind(this);\n this.onSigninBackClick = this.onSigninBackClick.bind(this);\n this.onSignin = this.onSignin.bind(this);\n this.onSigninRegisterClick = this.onSigninRegisterClick.bind(this);\n this.onForgotPasswordClick = this.onForgotPasswordClick.bind(this);\n this.onSignupLoginClick = this.onSignupLoginClick.bind(this);\n this.onClose = this.onClose.bind(this);\n this.onLogout = this.onLogout.bind(this);\n this.onDeleteAccount = this.onDeleteAccount.bind(this);\n this.onFavoritesBackClick = this.onFavoritesBackClick.bind(this);\n this.onForgotPassword = this.onForgotPassword.bind(this);\n this.onResetPassword = this.onResetPassword.bind(this);\n this.onSocialFacebookLogin = this.onSocialFacebookLogin.bind(this);\n this.onSocialFacebookRegister = this.onSocialFacebookRegister.bind(this);\n this.onLinkFacebook = this.onLinkFacebook.bind(this);\n this.onShowFacebookPasswordLink = this.onShowFacebookPasswordLink.bind(this);\n }\n\n componentDidMount() {\n const { account } = this.props;\n\n if (CCPAEnabled) {\n const ccpaRequestId = getUrlParameter('requestId') || getUrlParameter('requestid');\n this.setState({ ccpaRequestId });\n }\n\n if (account) this.handleActivateCode({ ...account, isNew: false });\n\n this.didComponentMount = true;\n\n return null;\n }\n\n // eslint-disable-next-line no-unused-react-component-methods/no-unused-react-component-methods\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n account: accountNext,\n isMobile,\n isTablet,\n params: { overlay },\n showAccount: nextShowAccount,\n showForgotPasswordLanding: showForgotPasswordLandingNext,\n showSignIn: showSignInNext,\n showSignUp: showSignUpNext,\n } = nextProps;\n const {\n googleOneTap: { isGoogleOneTap },\n showAccount,\n } = this.props;\n const {\n showSignup,\n showSignin,\n showSignupSuccess,\n showResetPassword,\n showForgotPasswordLanding,\n showForgotPasswordSuccess,\n showManageFavorites,\n showChangePassword,\n showCreatePassword,\n showEditAccount,\n showLinkAccount,\n showSignOut,\n showParentalControls,\n } = this.state;\n const isWeb = !isMobile && !isTablet;\n\n if (this.handleActivateCode(accountNext)) return null;\n if (!showAccount && nextShowAccount) {\n if (!accountNext) {\n switch (overlay) {\n case 'sign-in':\n this.toggleSignin();\n break;\n case 'sign-up':\n this.toggleSignup();\n break;\n default:\n }\n return isGoogleOneTap\n ? this.toggleCreatePassword()\n : this.setState({ ...DEFAULT_STATE, showPerks: true });\n }\n if (!isWeb) return this.toggleAccountMain();\n switch (overlay) {\n case 'edit-profile':\n this.toggleEditAccount();\n break;\n case 'change-password':\n this.toggleChangePassword();\n break;\n case 'create-password':\n this.toggleCreatePassword();\n break;\n case 'link-account':\n this.toggleAppleLinkAccount();\n break;\n case 'manage-favorites':\n this.toggleManageFavorites();\n break;\n case 'sign-out':\n this.toggleSignOut();\n break;\n case 'parental-controls':\n this.toggleParentalControls();\n break;\n default:\n helperGoToRelativeUrl(helperGetHomeUrl());\n break;\n }\n }\n\n if (showForgotPasswordLandingNext && !showForgotPasswordLanding) {\n return this.setState({\n ...DEFAULT_STATE,\n showForgotPasswordLanding: true,\n onCloseResetToBasePath: true,\n });\n }\n\n if (showResetPassword) {\n return this.setState({\n ...DEFAULT_STATE,\n showResetPassword: true,\n });\n }\n\n if (showSignInNext && !showSignin) {\n return this.setState({\n ...DEFAULT_STATE,\n showSignin: true,\n });\n }\n\n if (showSignUpNext && !showSignup) {\n return this.setState({\n ...DEFAULT_STATE,\n showSignup: true,\n });\n }\n\n // dont update account overlay state if user is in the middle of the signup process\n if (!isWeb && accountNext) {\n const shouldNotUpdate =\n showSignup ||\n showSignupSuccess ||\n showManageFavorites ||\n showChangePassword ||\n showCreatePassword ||\n showEditAccount ||\n showLinkAccount ||\n showSignOut ||\n showForgotPasswordLanding ||\n showForgotPasswordSuccess ||\n showParentalControls;\n\n if (shouldNotUpdate) return null;\n\n return this.setState({\n ...DEFAULT_STATE,\n showAccountMain: true,\n });\n }\n return null;\n }\n\n componentDidUpdate(prevProps, prevState) {\n const {\n isGoogleOneTapDisplayed,\n onboardingStart,\n perksPresented,\n showAccount,\n signInError,\n signUpError,\n utagAccountSource,\n } = this.props;\n const { showAccount: prevShowAccount } = prevProps;\n const {\n parentalControlsPasswordVerified,\n showParentalControls,\n showPerks,\n signinEmailError,\n signinGenericError,\n signinPasswordError,\n signupEmailError,\n signupEmailExistsError,\n signupGenericError,\n signupPasswordError,\n } = this.state;\n const {\n signinPasswordError: prevSigninPasswordError,\n signinEmailError: prevSigninEmailError,\n signinGenericError: prevSigninGenericError,\n signupGenericError: prevSignupGenericError,\n signupEmailError: prevSignupEmailError,\n signupEmailExistsError: prevSignupEmailExistsError,\n signupPasswordError: prevSignupPasswordError,\n parentalControlsPasswordVerified: prevParentalControlsPasswordVerified,\n } = prevState;\n const isSigninError =\n signInError &&\n ((signinPasswordError && !prevSigninPasswordError) ||\n (signinEmailError && !prevSigninEmailError) ||\n (signinGenericError && !prevSigninGenericError));\n const isSignupError =\n signUpError &&\n ((signupGenericError && !prevSignupGenericError) ||\n (signupEmailError && !prevSignupEmailError) ||\n (signupEmailExistsError && !prevSignupEmailExistsError) ||\n (signupPasswordError && !prevSignupPasswordError));\n const perksShown = !prevShowAccount && showAccount && showPerks && perksPresented;\n\n if (showPerks && isGoogleOneTapDisplayed) {\n window?.google?.accounts?.id?.cancel();\n }\n\n if (perksShown) {\n onboardingStart({ utagAccountSource });\n perksPresented({ utagAccountSource });\n }\n if (isSigninError) signInError({ utagAccountSource });\n if (isSignupError) signUpError({ utagAccountSource });\n\n const pcsPasswordVerified =\n showParentalControls &&\n parentalControlsPasswordVerified &&\n !prevParentalControlsPasswordVerified;\n if (pcsPasswordVerified) setTimeout(() => this.forceUpdate(), 1);\n }\n\n handleActivateCode = account => {\n if (!account || !account.accessToken) return null;\n const { signInEventFired } = this.state;\n if (!secondScreenProfileEnabled()) return null;\n if (signInEventFired) return null;\n\n const code = getActivateCodeFromURL() || getActivateCode();\n if (!code) return null;\n\n setActivateCode(code);\n if (window) _.set(window, 'secondScreenFlow', true);\n\n setActivateCodeAccount(account);\n const event = account.isNew ? Events.PROFILE_SIGNUP_COMPLETED : Events.PROFILE_SIGNIN_COMPLETED;\n const completeCB = () => redirectToActivateMVPD(code);\n handleAnalytics({\n event,\n payload: {\n account,\n page_start_source: 'general',\n page_profile_type: this.fbAuthStarted\n ? SegmentPageProfileTypes.FACEBOOK\n : SegmentPageProfileTypes.GENERAL,\n page_profile_activation_method: code && '2nd screen',\n page_activation_code: code,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n callback: completeCB,\n });\n this.setState({ signInEventFired: true });\n return true;\n };\n\n handleShowShareMyEmailUpsell = showShareMyEmailUpsell => {\n this.setState({ showShareMyEmailUpsell });\n };\n\n toggleChangePassword() {\n const { showChangePassword } = this.state;\n const stateObj = !showChangePassword ? DEFAULT_CHANGE_PASSWORD_STATE : {};\n if (!showChangePassword)\n handleAnalytics({\n event: Events.ACCOUNT_UPDATE_PASSWORD_LANDING,\n payload: {\n pageName: 'account:update password',\n pageType: 'account',\n },\n });\n this.setState({ showChangePassword: !showChangePassword, ...stateObj });\n }\n\n toggleCreatePassword() {\n const { showCreatePassword } = this.state;\n const { createPasswordPageEvent } = this.props;\n const stateObj = !showCreatePassword ? DEFAULT_CREATE_PASSWORD_STATE : {};\n if (!showCreatePassword) createPasswordPageEvent();\n this.setState({ showCreatePassword: !showCreatePassword, ...stateObj });\n }\n\n toggleAppleLinkAccount() {\n const { showLinkAccount } = this.state;\n const stateObj = !showLinkAccount ? DEFAULT_LINK_ACCOUNT_STATE : {};\n if (this.didComponentMount) {\n this.setState({ showLinkAccount: !showLinkAccount, ...stateObj });\n }\n }\n\n toggleDeleteAccount() {\n const { showDeleteAccount } = this.state;\n this.setState({ showDeleteAccount: !showDeleteAccount });\n }\n\n toggleEditAccount() {\n const { showEditAccount } = this.state;\n const { account } = this.props;\n const stateObj = !showEditAccount\n ? {\n editFirstName: account.firstName || '',\n editLastName: account.lastName || '',\n editEmail: account.email || '',\n editGenericError: null,\n firstNameError: null,\n lastNameError: null,\n }\n : {};\n this.setState({\n showEditAccount: !showEditAccount,\n ...stateObj,\n });\n }\n\n toggleFacebookLinking() {\n const { showFacebookLinking } = this.state;\n this.setState(\n { showSignup: false, showSignin: false, showFacebookLinking: !showFacebookLinking },\n () => {\n const { showFacebookLinking } = this.state;\n if (showFacebookLinking) handleAnalytics({ event: Events.FB_SIGN_UP_STARTED });\n },\n );\n }\n\n toggleFacebookPasswordLink() {\n const { showFacebookPasswordLink } = this.state;\n this.setState({ showFacebookPasswordLink: !showFacebookPasswordLink }, () => {\n const { showFacebookPasswordLink } = this.state;\n if (showFacebookPasswordLink) handleAnalytics({ event: Events.FB_PASSWORD_CREATION_STARTED });\n });\n }\n\n toggleFacebookLoginPasswordLink() {\n const { showFacebookLoginPasswordLink } = this.state;\n this.setState({ showFacebookLoginPasswordLink: !showFacebookLoginPasswordLink });\n }\n\n toggleForgotPassword() {\n const { showForgotPassword, showForgotPasswordLanding } = this.state;\n this.resetAll(() => {\n this.setState({\n showForgotPassword: !showForgotPassword,\n showForgotPasswordLanding: !showForgotPasswordLanding,\n });\n });\n }\n\n toggleForgetPasswordSuccess() {\n const { showForgotPasswordSuccess } = this.state;\n this.setState({ showForgotPasswordSuccess: !showForgotPasswordSuccess });\n }\n\n toggleManageFavorites() {\n const { showManageFavorites } = this.state;\n this.setState({ showManageFavorites: !showManageFavorites });\n }\n\n toggleParentalControls() {\n const { showParentalControls } = this.state;\n const stateObj = !showParentalControls ? DEFAULT_PARENTAL_CONTROLS_STATE : {};\n this.setState({ showParentalControls: !showParentalControls, ...stateObj });\n }\n\n toggleResetPassword() {\n const { showResetPassword } = this.state;\n this.resetAll(() => {\n this.setState({ showResetPassword: !showResetPassword });\n });\n }\n\n toggleResetPasswordSuccess() {\n const { showResetPasswordSuccess } = this.state;\n this.setState({ showResetPasswordSuccess: !showResetPasswordSuccess });\n }\n\n toggleShowPerks() {\n const { showPerks } = this.state;\n this.setState({ showPerks: !showPerks });\n }\n\n toggleSignup() {\n const { showSignup } = this.state;\n this.resetSignupState(() => {\n this.setState({ showSignup: !showSignup });\n });\n }\n\n toggleSignupSuccess() {\n const { showSignupSuccess } = this.state;\n this.setState({ showSignupSuccess: !showSignupSuccess });\n }\n\n toggleSignin() {\n const { showSignin } = this.state;\n this.resetSigninState(() => {\n this.setState({ showSignin: !showSignin });\n });\n }\n\n toggleSignOut() {\n const { utagAccountSource } = this.props;\n const { showSignOut } = this.state;\n this.setState({ showSignOut: !showSignOut }, () => {\n handleAnalytics({\n event: Events.PROFILE_SIGN_OUT_STARTED,\n payload: { utagAccountSource },\n });\n });\n }\n\n async onLogout() {\n const { logout, previousPath, account } = this.props;\n if (account?.userType === 'google') {\n setIsGoogleAutoSignIn(false);\n }\n\n this.setState({\n logoutInProcess: true,\n });\n\n const logoutTimeout = setTimeout(() => {\n this.setState({\n logoutTimedOut: true,\n });\n }, 5000);\n\n const reset = () => {\n clearTimeout(logoutTimeout);\n this.setState({\n logoutTimedOut: false,\n });\n window.location = previousPath;\n };\n\n await logout();\n handleAnalytics({\n event: Events.PROFILE_SIGN_OUT,\n callback: reset,\n });\n }\n\n onSigninRegisterClick() {\n this.toggleSignin();\n this.toggleSignup();\n }\n\n onSignupLoginClick() {\n this.toggleSignup();\n this.toggleSignin();\n }\n\n onSignupBackClick() {\n this.toggleSignup();\n this.toggleShowPerks();\n }\n\n onSigninBackClick() {\n this.toggleSignin();\n this.toggleShowPerks();\n }\n\n onFavoritesBackClick() {\n // const { getFavorites } = this.props;\n this.toggleManageFavorites();\n this.toggleAccountMain();\n // if (getFavorites) getFavorites();\n }\n\n onClose(options) {\n const {\n closeAccount,\n resetAccountState,\n account,\n ignoreOnCloseRedirect,\n setAccountCloseIgnoreRedirect,\n setGoogleOneTap,\n } = this.props;\n const { goHome, ignoreRedirect, isCCPAVerify, ignoreSavedPath } = options || {};\n const isVerifyScreen = window.location.pathname.includes('ccpa/verify');\n if (isCCPAVerify) {\n setCookie({ name: CCPA_VERIFY_COOKIE_NAME, value: true, options: { path: '/' } });\n }\n const { onCloseResetToBasePath } = this.state;\n if (onCloseResetToBasePath) browserHistory.push('/');\n if (isVerifyScreen) redirectToExternalUrl(helperGetHomeUrl());\n this.handleShowShareMyEmailUpsell(false);\n const shouldIgnoreRedirect = ignoreRedirect || ignoreOnCloseRedirect;\n setAccountCloseIgnoreRedirect(false);\n resetAccountState();\n if (!account) {\n setGoogleOneTap({ isGoogleOneTap: false });\n }\n const nextState = {\n ...DEFAULT_OVERLAY_STATE,\n appleLinkingError: '',\n appleToken: '',\n createPasswordNewPassword: '',\n googleLinkingError: '',\n showVerifyAccount: false,\n showCreatePassword: false,\n showLinkAccount: false,\n showLinkToProfile: false,\n appleLinkingEmail: '',\n };\n if (account) nextState.showAccountMain = true;\n const savedPath = !ignoreSavedPath && getPreviousSettingPath();\n return this.setState(nextState, () =>\n closeAccount({ goHome, ignoreRedirect: shouldIgnoreRedirect, savedPath }),\n );\n }\n\n onSignup() {\n const { entryOverlay } = this.state;\n const {\n register,\n signUpCompleted,\n signUpMarketing,\n utagAccountSource,\n language: { profileCreate_invalidEmailText: invalidEmailError },\n anonymousAccount,\n signupSuccess,\n } = this.props;\n\n const { signupFirstName, signupLastName, signupEmail, signupPassword } = this.state;\n this.setState({ signUpEventFired: true });\n const handleSuccess = newAccount => {\n const newsLetterVal = 'Yes';\n if (signUpCompleted) {\n signUpCompleted({\n utagAccountSource,\n newsLetter: newsLetterVal,\n });\n }\n if (signUpMarketing) {\n signUpMarketing({\n source: entryOverlay,\n newsLetter: newsLetterVal,\n });\n }\n if (signupSuccess) signupSuccess();\n if (!getUrlParameter('code'))\n handleAnalytics({\n event: Events.PROFILE_SIGNUP_COMPLETED,\n payload: {\n account: newAccount,\n page_profile_type: this.fbAuthStarted\n ? SegmentPageProfileTypes.FACEBOOK\n : SegmentPageProfileTypes.GENERAL,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n if (this.handleActivateCode({ ...newAccount, isNew: true })) return;\n this.toggleSignup();\n this.toggleSignupSuccess();\n };\n this.setSignupErrors(hasErrors => {\n if (hasErrors || !register) {\n this.setState({ signUpEventFired: false });\n return;\n }\n const code = getActivateCodeFromURL() || getActivateCode();\n const { deviceId } = anonymousAccount || {};\n const toMigrate = deviceId ? { deviceId, migrateData: true } : {};\n const secondScreen = code ? { regcode: code } : {};\n const body = {\n password: signupPassword,\n email: signupEmail,\n firstName: signupFirstName,\n lastName: signupLastName,\n newsLetter: true,\n ...toMigrate,\n ...secondScreen,\n };\n\n register(body, result => {\n this.setState({ signUpEventFired: false });\n const { error, account: newAccount } = result;\n const errorCode = _.get(error, 'errorCode');\n const errorCodeString = _.toString(errorCode);\n if (error) {\n handleAnalytics({\n event: Events.PROFILE_SIGN_UP_ERROR,\n payload: {\n page_error_description: error.message || 'no error description',\n page_error_type: 'server-side',\n page_start_source: utagAccountSource,\n },\n });\n }\n switch (errorCodeString) {\n case EMAIL_INVALID:\n return this.setState({ signupGenericError: invalidEmailError });\n case EMAIL_IS_REGISTERED:\n return this.setState({ signupEmailExistsError: true });\n case EMAIL_IS_REGISTERED_TO_SOCIAL:\n return this.setState({ signupSocialEmailExistsError: true });\n default:\n break;\n }\n if (error) return this.setState({ signupGenericError: true });\n return handleSuccess(newAccount);\n });\n });\n }\n\n onForgotPasswordClick() {\n const { openForgotPassword } = this.props;\n if (openForgotPassword) {\n return openForgotPassword();\n }\n return this.toggleForgotPassword();\n }\n\n onForgotPassword() {\n const { reset, selectedNetwork } = this.props;\n const { signinEmail, showForgotPasswordLanding } = this.state;\n\n const handleSuccess = () => {\n this.toggleForgotPassword();\n this.toggleForgetPasswordSuccess();\n if (showForgotPasswordLanding) this.setState({ onCloseResetToBasePath: true });\n };\n\n this.setForgotPasswordErrors(hasErrors => {\n if (!hasErrors && reset) {\n const body = {\n email: signinEmail,\n };\n if (selectedNetwork) body.network = selectedNetwork;\n reset(body, result => {\n const { error } = result;\n if (error) return this.setState({ genericForgotPasswordError: error.message });\n return handleSuccess();\n });\n }\n });\n }\n\n onResetPassword() {\n const { accountEmail, resetConfirm, resetCode } = this.props;\n const { resetPasswordPassword, resetPasswordConfirmPassword } = this.state;\n\n const handleSuccess = () => {\n this.toggleResetPassword();\n this.toggleResetPasswordSuccess();\n };\n this.setResetPasswordErrors(hasErrors => {\n if (!hasErrors && resetConfirm && resetCode) {\n const body = {\n email: accountEmail,\n password: resetPasswordPassword,\n confirmPassword: resetPasswordConfirmPassword,\n code: resetCode,\n };\n resetConfirm(body, result => {\n const { error } = result;\n const message = _.get(error, 'message');\n if (error) return this.setState({ resetPasswordError: message });\n return handleSuccess();\n });\n }\n });\n }\n\n onVerificationCCPA = ({ shouldVerify = false, headerAuthorization }) => {\n const { verifyAccount, noVerifyAccount } = this.props;\n const { ccpaRequestId } = this.state;\n const handleVerification = shouldVerify ? verifyAccount : noVerifyAccount;\n if (ccpaRequestId) {\n handleVerification({ requestId: ccpaRequestId, headerAuthorization }, response => {\n const errorMessage = _.get(response, 'error.message');\n if (errorMessage) {\n this.setState({ signinGenericError: errorMessage });\n } else if (response && response.success) {\n this.setState({ onCloseResetToBasePath: true, showVerifyConfirmation: true });\n }\n });\n } else {\n this.setState({ signinGenericError: true });\n }\n };\n\n onSignin({ isCCPAVerify = false }) {\n const { login, signInCompleted, utagAccountSource, signInSuccess } = this.props;\n const { signinEmail, signinPassword } = this.state;\n\n if (isCCPAVerify) this.setState({ signinGenericError: null });\n\n const handleSuccess = account => {\n if (signInCompleted) signInCompleted({ utagAccountSource });\n if (!getUrlParameter('code'))\n handleAnalytics({\n event: Events.PROFILE_SIGNIN_COMPLETED,\n payload: {\n account,\n page_profile_type: this.fbAuthStarted\n ? SegmentPageProfileTypes.FACEBOOK\n : SegmentPageProfileTypes.GENERAL,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n if (this.handleActivateCode({ ...account, isNew: false })) return;\n if (signInSuccess) {\n if (isCCPAVerify) {\n this.onVerificationCCPA({\n shouldVerify: true,\n headerAuthorization: `Bearer ${account.accessToken}`,\n });\n }\n signInSuccess();\n }\n if (!isCCPAVerify) this.onClose();\n };\n\n this.setSigninErrors(hasErrors => {\n if (!hasErrors && login) {\n const body = {\n password: signinPassword,\n email: signinEmail,\n };\n login(body, result => {\n const { error, account } = result;\n if (error) {\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_ERROR,\n payload: {\n page_error_description: error.message || 'no error description',\n page_error_type: 'server-side',\n page_start_source: utagAccountSource,\n },\n });\n return this.setState({ signinGenericError: error.message });\n }\n return handleSuccess(account);\n });\n }\n });\n }\n\n onLinkFacebook() {\n const { showVerifyAccount } = this.state;\n const { login } = this.props;\n const { facebookLinkingEmail, facebookLinkingPassword, facebookLinkingToken } = this.state;\n const handleSuccess = () => {\n handleAnalytics({ event: Events.FB_LINKING_COMPLETED });\n if (showVerifyAccount) this.onVerificationCCPA({ shouldVerify: true });\n if (!showVerifyAccount) this.onClose();\n };\n this.setFacebookLinkingErrors(hasErrors => {\n if (!hasErrors && login) {\n const body = {\n password: facebookLinkingPassword,\n email: facebookLinkingEmail,\n facebookToken: facebookLinkingToken,\n };\n\n login(body, result => {\n const { error } = result;\n if (error) return this.setState({ facebookLinkingGenericError: error.message }); // eslint-disable-line\n return handleSuccess();\n });\n }\n });\n }\n\n onAppleSignIn = _.debounce(async appleToken => {\n const { login, register, checkStatus, utagAccountSource } = this.props;\n const { isEmailShared, userEmail } = this.state;\n const status = (await checkStatus({ userEmail })) || {};\n const body = { appleToken };\n if (status?.found) {\n register({ ...body, email: userEmail, link: true }, result => {\n const { error } = result;\n if (error) {\n login(body, result => this.onClose());\n } else {\n return this.onClose();\n }\n return null;\n });\n handleAnalytics({\n event: Events.PROFILE_SIGNIN_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n ...getCommonTealiumProps(),\n },\n });\n } else {\n login(body, result => {\n const { error } = result;\n if (error) {\n const { is404Error } = error;\n if (is404Error && isEmailShared && !status?.found) {\n this.setState({ showCreatePassword: true, appleToken });\n } else if (is404Error && !isEmailShared) {\n this.setState({ showLinkAccount: true, appleToken });\n }\n } else {\n handleAnalytics({\n event: Events.PROFILE_SIGNIN_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n ...getCommonTealiumProps(),\n },\n });\n return this.onClose();\n }\n return null;\n });\n }\n }, 500);\n\n onAppleLinking = _.debounce(link => {\n const { appleLinkingEmail, userEmail, createPasswordNewPassword, appleToken } = this.state;\n const { register, utagAccountSource } = this.props;\n const body = {\n additionalHeaders: v1Override,\n appleToken,\n email: appleLinkingEmail || userEmail,\n link,\n password: createPasswordNewPassword,\n };\n register(body, result => {\n const { error } = result;\n if (error) {\n const { message } = error;\n const { profile_genericInvalidError } = window.Language;\n // eslint-disable-next-line react/no-unused-state\n this.setState({ appleLinkingError: profile_genericInvalidError || message });\n } else {\n handleAnalytics(\n {\n event: link\n ? Events.PROFILE_APPLE_ID_LINK_COMPLETED\n : Events.PROFILE_APPLE_ID_SIGNUP_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n ...getCommonTealiumProps(),\n },\n },\n {\n event: link ? Events.PROFILE_SIGNIN_COMPLETED : Events.PROFILE_SIGNUP_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n profile_type: SegmentPageProfileTypes.APPLE,\n page_start_source: utagAccountSource,\n ...getCommonTealiumProps(),\n },\n },\n );\n\n return this.onClose();\n }\n return null;\n });\n }, 500);\n\n onRegisterWithGoogle = _.debounce(() => {\n const { createPasswordNewPassword } = this.state;\n\n const {\n register,\n utagAccountSource,\n googleSignIn: { isGoogleSignIn },\n googleOneTap: { isGoogleOneTap, googleOneTapEmail, googleToken: oneTapToken },\n googleNewUser: { googleEmail, googleToken: signUpToken },\n } = this.props;\n\n const googleToken = isGoogleSignIn ? signUpToken : oneTapToken;\n\n const body = {\n googleToken,\n email: isGoogleSignIn ? googleEmail : googleOneTapEmail,\n isGoogleSignIn,\n isGoogleOneTap,\n password: createPasswordNewPassword,\n };\n\n register(body, result => {\n const { error } = result;\n if (error) {\n const { message } = error;\n // eslint-disable-next-line react/no-unused-state\n this.setState({ googleLinkingError: message });\n } else {\n handleAnalytics(\n {\n event: Events.PROFILE_GOOGLE_LINK_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.GOOGLE,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n profile_type: SegmentPageProfileTypes.GOOGLE,\n page_start_source: utagAccountSource,\n ...getCommonTealiumProps(),\n },\n },\n {\n event: Events.PROFILE_SIGNUP_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.GOOGLE,\n page_start_source: utagAccountSource,\n },\n tealiumPayload: {\n profile_type: SegmentPageProfileTypes.GOOGLE,\n page_start_source: utagAccountSource,\n ...getCommonTealiumProps(),\n },\n },\n );\n return this.onClose();\n }\n return null;\n });\n }, 500);\n\n onFieldChange(event) {\n const { target } = event;\n const isCheckbox = target.type === 'checkbox';\n const value = isCheckbox ? target.checked : target.value;\n const { name } = target;\n this.setState({ [name]: value });\n }\n\n onDeleteAccount() {\n const { deleteAccount, account } = this.props;\n const profileId = account.profileId || null;\n const handleSuccess = () => {\n this.onLogout();\n };\n if (deleteAccount && profileId) {\n const body = { profileId };\n deleteAccount(body, result => {\n const { error } = result;\n if (error) return this.setState({ deleteAccountGenericError: error.message }); // eslint-disable-line\n return handleSuccess();\n });\n }\n }\n\n setSigninErrors(cb, name) {\n const { signinPassword, signinEmail } = this.state;\n const { utagAccountSource } = this.props;\n const signinPasswordError = passwordErrors(signinPassword);\n const signinEmailError = !isValidEmail(signinEmail);\n const setStateCb = () => {\n const { signinPasswordError, signinEmailError } = this.state;\n const hasErrors = signinPasswordError || signinEmailError || false;\n if (hasErrors) {\n let errorDescription;\n if (signinPasswordError) {\n errorDescription = 'Password Error';\n } else if (signinEmailError) {\n errorDescription = 'Email Error';\n } else {\n errorDescription = 'no error description';\n }\n\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_ERROR,\n payload: {\n page_error_description: errorDescription,\n page_error_type: 'client-side',\n page_start_source: utagAccountSource,\n },\n });\n }\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n\n if (name) {\n switch (name) {\n case 'signinPassword':\n this.setState({ signinPasswordError }, setStateCb);\n break;\n case 'signinEmail':\n this.setState({ signinEmailError }, setStateCb);\n break;\n default:\n break;\n }\n } else {\n return this.setState(\n {\n signinPasswordError,\n signinEmailError,\n },\n setStateCb,\n );\n }\n return null;\n }\n\n setForgotPasswordErrors(cb, name) {\n const { signinEmail } = this.state;\n const forgotPasswordError = !isValidEmail(signinEmail);\n const setStateCb = () => {\n const { forgotPasswordError } = this.state;\n const hasErrors = forgotPasswordError || false;\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n let genericForgotPasswordError;\n\n if (name) {\n switch (name) {\n case 'forgotPasswordError':\n this.setState({ forgotPasswordError }, setStateCb);\n break;\n default:\n break;\n }\n } else {\n return this.setState(\n {\n forgotPasswordError,\n genericForgotPasswordError,\n },\n setStateCb,\n );\n }\n return null;\n }\n\n setResetPasswordErrors(cb, name) {\n const { resetPasswordPassword, resetPasswordConfirmPassword } = this.state;\n const resetPasswordPasswordError = !isValidPassword(resetPasswordPassword);\n const resetPasswordConfirmPasswordError =\n !isValidPassword(resetPasswordConfirmPassword) &&\n resetPasswordPassword !== resetPasswordConfirmPassword;\n\n const setStateCb = () => {\n const { resetPasswordPasswordError, resetPasswordConfirmPasswordError } = this.state;\n const hasErrors = resetPasswordPasswordError || resetPasswordConfirmPasswordError || false;\n if (cb) return cb(hasErrors);\n return hasErrors;\n };\n\n if (name) {\n switch (name) {\n case 'resetPasswordPasswordError':\n this.setState({ resetPasswordPasswordError }, setStateCb);\n break;\n case 'resetPasswordConfirmPasswordError':\n this.setState({ resetPasswordConfirmPasswordError }, setStateCb);\n break;\n default:\n break;\n }\n } else {\n return this.setState(\n {\n resetPasswordPasswordError,\n resetPasswordConfirmPasswordError,\n },\n setStateCb,\n );\n }\n return null;\n }\n\n setSignupErrors(cb) {\n const { signupFirstName, signupLastName, signupPassword, signupEmail } = this.state;\n const { utagAccountSource } = this.props;\n const signupPasswordError = !isValidPassword(signupPassword);\n const signupEmailError = !isValidEmail(signupEmail);\n const signupFirstNameError = _.isEmpty(signupFirstName.trim());\n const signupLastNameError = _.isEmpty(signupLastName.trim());\n const signupFullNameError = signupFirstNameError && signupLastNameError;\n const missingFieldDataError =\n signupFirstNameError || signupLastNameError || signupPasswordError || signupEmailError;\n\n return this.setState(\n {\n signupFirstNameError,\n signupLastNameError,\n signupFullNameError,\n signupPasswordError,\n signupEmailError,\n },\n () => {\n const hasErrors = missingFieldDataError || false;\n if (hasErrors) {\n const errorDescription = 'Missing Field Data';\n handleAnalytics({\n event: Events.PROFILE_SIGN_UP_ERROR,\n payload: {\n page_error_description: errorDescription,\n page_error_type: 'client-side',\n page_start_source: utagAccountSource,\n },\n });\n }\n if (cb) return cb(hasErrors);\n return hasErrors;\n },\n );\n }\n\n setIsAppleEmailShared = isEmailShared => {\n this.setState({ isEmailShared });\n };\n\n setAppleToken = appleToken => {\n this.setState({ appleToken });\n };\n\n setAppleEmail = email => {\n this.setState({ userEmail: email });\n };\n\n setAppleLinkingEmail = email => {\n this.setState({ appleLinkingEmail: email });\n };\n\n setLinkingEmail(email) {\n this.setState({ facebookLinkingEmail: email });\n }\n\n setLinkingToken(token) {\n this.setState({ facebookLinkingToken: token });\n }\n\n toggleAccountMain(showAccount) {\n const { showAccountMain, showPerks } = this.state;\n this.setState({ showAccountMain: showAccount ? true : !showAccountMain });\n if (!showAccountMain && !showPerks) {\n handleAnalytics({\n event: Events.SETTINGS_SECTION_LANDING,\n payload: {\n pageName: `settings:landing`,\n pageType: 'settings:section-front',\n },\n });\n }\n }\n\n resetSignupState(cb) {\n this.setState({ ...DEFAULT_SIGNUP_STATE }, cb);\n }\n\n resetSigninState(cb) {\n this.setState({ ...DEFAULT_SIGNIN_STATE }, cb);\n }\n\n resetAll(cb) {\n this.setState({ ...DEFAULT_STATE }, cb);\n }\n\n setLinkingEmailAndToken = (email, token) => {\n this.setLinkingEmail(email);\n this.setLinkingToken(token);\n };\n\n async onSocialFacebookLogin() {\n const {\n language: { profile_emailRequirmentNoticeSignIn },\n socialFacebookLogin,\n } = this.props;\n const handle202 = () => {\n this.toggleFacebookLinking();\n };\n const handle404001 = ({ facebookEmail, facebookToken }) => {\n this.setState(\n {\n facebookToken,\n facebookEmail,\n },\n () => {\n this.toggleFacebookLoginPasswordLink();\n },\n );\n };\n\n const setFacebookGenericError = message => {\n this.setState({ facebookGenericError: message });\n };\n handleAnalytics({ event: Events.FB_SIGN_IN_STARTED });\n this.fbAuthStarted = true;\n\n if (socialFacebookLogin) {\n try {\n const response = await facebookLogin({});\n const facebookToken = _.get(response, 'authResponse.accessToken');\n FB.api('/me', { fields: 'email' }, response => {\n const facebookEmail = _.get(response, 'email');\n this.setLinkingEmailAndToken(facebookEmail, facebookToken);\n\n socialFacebookLogin({ facebookToken }, result => {\n const { showVerifyAccount } = this.state;\n const { error } = result;\n if (error) {\n const errorCode = _.get(error, 'errorCode');\n const needsAccountLinking = errorCode === 202;\n const needsSignup = errorCode === 4040001;\n const needsEmail = errorCode === 412;\n if (needsEmail || !facebookEmail) {\n return setFacebookGenericError(profile_emailRequirmentNoticeSignIn);\n }\n if (needsAccountLinking) return handle202();\n if (needsSignup) return handle404001({ facebookEmail, facebookToken });\n }\n if (showVerifyAccount) this.onVerificationCCPA({ shouldVerify: true });\n handleAnalytics({ event: Events.FB_SIGN_IN_COMPLETED });\n if (!showVerifyAccount) this.onClose();\n return null;\n });\n });\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n async onSocialFacebookRegister() {\n const { socialFacebookRegister } = this.props;\n\n const handleSuccess = () => {\n handleAnalytics({ event: Events.FB_SIGN_UP_COMPLETED });\n this.setState({\n showFacebookPasswordLink: false,\n showFacebookLoginPasswordLink: false,\n showSignupSuccess: true,\n });\n };\n const setGenericError = message => {\n this.setState({ facebookPasswordLinkGenericError: message });\n };\n const { facebookPasswordLinkPassword: password } = this.state;\n const facebookPasswordLinkPasswordError = !isValidPassword(password);\n this.setState({ facebookPasswordLinkPasswordError });\n const { facebookToken, facebookEmail: email } = this.state;\n socialFacebookRegister(\n {\n additionalHeaders: v1Override,\n email,\n facebookToken,\n newsLetter: true,\n password,\n },\n result => {\n const { error, success, account } = result;\n if (error) return setGenericError(_.get(error, 'message'));\n if (this.handleActivateCode(account)) return null;\n if (success) handleSuccess();\n return null;\n },\n );\n }\n\n onShowFacebookPasswordLink() {\n this.toggleSignup();\n this.toggleFacebookPasswordLink();\n }\n\n renderAccountMain() {\n const { language, backgroundClass, favoritesManager } = this.props;\n const { profile_personalizedHeader: personalizedHeader, profile_header: header } =\n language || {};\n const firstName = _.get(this.props, 'account.firstName', null);\n const headerText = firstName ? `${firstName}${personalizedHeader}` : header;\n const onClose = opts => this.onClose(opts);\n const headerProps = {\n headerText,\n noIcon: false,\n onClose,\n renderLogo: this.renderLogo,\n showHeaderDesktop: true,\n };\n const accountMainProps = {\n backgroundClass,\n favoritesManager,\n firstName,\n headerProps,\n toggleAccountMain: this.toggleAccountMain,\n toggleChangePassword: this.toggleChangePassword,\n toggleEditAccount: this.toggleEditAccount,\n toggleManageFavorites: this.toggleManageFavorites,\n toggleParentalControls: this.toggleParentalControls,\n toggleSignOut: this.toggleSignOut,\n };\n const { showAccountMain } = this.state;\n if (!showAccountMain) return null;\n return <AccountMain {...accountMainProps} />;\n }\n\n renderVerifyAccount() {\n const {\n backgroundClass,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n language,\n privacyPolicyClickEvent,\n showFacebookLogin,\n showFacebookSignup,\n signInForgotPasswordStarted,\n signInIncomplete,\n signinDropdownIconTheme,\n utagAccountSource,\n } = this.props;\n const { profileSignin_header: headerText, profileSignin_forgotPasswordText: linkText } =\n language || {};\n const {\n facebookGenericError,\n showVerifyAccount,\n showVerifyConfirmation,\n signinEmail,\n signinEmailError,\n signinGenericError,\n signinMigrationDropdownOpen,\n signinPassword,\n signinPasswordError,\n signinShowPassword,\n } = this.state;\n const onClose = opts => {\n this.onClose(opts);\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_STARTED,\n payload: { utagAccountSource, onboardingAction: SKIP },\n });\n signInIncomplete({ utagAccountSource });\n // This needs to be external to load back in trackers if they do not verify\n redirectToExternalUrl(helperGetHomeUrl());\n };\n const headerProps = {\n onClose,\n renderLogo: this.renderLogo,\n headerText,\n };\n const ctaProps = {\n text: `Don't Have an Account?`,\n onClick: () => {\n this.onVerificationCCPA({ shouldVerify: false });\n },\n };\n const forgotPasswordCTAProps = {\n linkText,\n onClick: () => {\n this.setState({ showVerifyAccount: false, fromVerifyAccount: true });\n if (this.onForgotPasswordClick) this.onForgotPasswordClick();\n if (signInForgotPasswordStarted) signInForgotPasswordStarted({ utagAccountSource });\n },\n };\n const verifyAccountProps = {\n backgroundClass,\n ctaProps,\n facebookGenericError,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n forgotPasswordCTAProps,\n headerProps,\n language,\n onFieldChange: this.onFieldChange,\n onSignin: this.onSignin,\n onSocialFacebookLogin: this.onSocialFacebookLogin,\n privacyPolicyClickEvent,\n showFacebookLogin,\n showFacebookSignup,\n showVerifyConfirmation,\n signinDropdownIconTheme,\n signinEmail,\n signinEmailError,\n signinGenericError,\n signinMigrationDropdownOpen,\n signinPassword,\n signinPasswordError,\n signinShowPassword,\n };\n if (!showVerifyAccount) return null;\n return <VerifyAccount {...verifyAccountProps} />;\n }\n\n renderShareMyEmailUpsell = () => {\n const { showShareMyEmailUpsell } = this.state;\n if (!showShareMyEmailUpsell) return null;\n\n return (\n <ShareMyEmailUpsell\n onAppleSignIn={this.onAppleSignIn}\n onAppleLinking={(email, password, token) => this.onAppleLinking(email, password, token)}\n setAppleEmail={email => this.setAppleEmail(email)}\n setAppleToken={token => this.setAppleToken(token)}\n setIsAppleEmailShared={isEmailShared => this.setIsAppleEmailShared(isEmailShared)}\n />\n );\n };\n\n renderDeleteAccount() {\n const { language } = this.props;\n const headerProps = {\n renderLogo: this.renderLogo,\n noIcon: false,\n onClose: opts => this.onClose(opts),\n showHeaderDesktop: true,\n };\n const deleteAccountProps = {\n headerProps,\n language,\n onClose: opts => this.onClose({ ...opts, ignoreSavedPath: true }),\n onDeleteAccount: this.onDeleteAccount,\n renderLogo: this.renderLogo,\n };\n\n const { showDeleteAccount } = this.state;\n if (!showDeleteAccount) return null;\n return <DeleteAccount {...deleteAccountProps} />;\n }\n\n renderForgotPassword() {\n const { autoFocus, backgroundClass, language, network } = this.props;\n const { profileResetPw_header: headerText } = language || {};\n const {\n forgotPasswordError,\n fromVerifyAccount,\n genericForgotPasswordError,\n showForgotPassword,\n showForgotPasswordLanding,\n signinEmail,\n } = this.state;\n const onClose = opts => {\n if (fromVerifyAccount) {\n this.setState({\n showVerifyAccount: true,\n showForgotPassword: false,\n showForgotPasswordLanding: false,\n });\n } else {\n this.onClose(opts);\n }\n };\n const back = (\n <button\n onClick={opts => onClose({ ...opts, ignoreSavedPath: true })}\n className={Style.back}\n />\n );\n\n const headerProps = {\n headerText,\n iconMobile: back,\n isDesktop: false,\n onClose,\n renderLogo: this.renderLogo,\n };\n const forgotPasswordProps = {\n autoFocus,\n backgroundClass,\n forgotPasswordError,\n genericForgotPasswordError,\n headerProps,\n language,\n network,\n onFieldChange: this.onFieldChange,\n onForgotPassword: this.onForgotPassword,\n signinEmail,\n };\n if (!showForgotPassword && !showForgotPasswordLanding) return null;\n return <ForgotPassword {...forgotPasswordProps} />;\n }\n\n renderForgotPasswordSuccess() {\n const { backgroundClass, language, network } = this.props;\n const forgotPasswordSuccessProps = {\n backgroundClass,\n language,\n network,\n onClose: this.onClose,\n };\n const { showForgotPasswordSuccess } = this.state;\n if (!showForgotPasswordSuccess) return null;\n return <ForgotPasswordSuccess {...forgotPasswordSuccessProps} />;\n }\n\n renderLogout() {\n const { backgroundClass, language, loader } = this.props;\n const { logoutInProcess, showSignOut, logoutTimedOut } = this.state;\n\n const logoutProps = {\n backgroundClass,\n language,\n loader,\n logoutInProcess,\n onClose: opts => this.onClose(opts),\n onLogout: this.onLogout,\n renderLoader: logoutTimedOut,\n renderLogo: this.renderLogo,\n };\n if (!showSignOut) return null;\n return <Logout {...logoutProps} />;\n }\n\n renderManageFavorites() {\n const {\n backgroundClass,\n breakpoint,\n favoritesManager,\n isMobile,\n language,\n renderFavorites,\n } = this.props;\n const { profileManageFavorites_header: headerText } = language || {};\n const onTitleClick = () => {\n this.onClose({ ignoreRedirect: true });\n };\n let favorites;\n if (renderFavorites)\n favorites = renderFavorites({\n breakpoint,\n favoritesManager,\n onTitleClick,\n onTileClick: this.onClose,\n });\n const back = <button onClick={this.onFavoritesBackClick} className={Style.back} />;\n const headerProps = {\n headerText,\n iconMobile: back,\n isDesktop: !isMobile,\n onClose: opts => this.onClose(opts),\n showHeaderDesktop: true,\n renderLogo: this.renderLogo,\n };\n const { showManageFavorites } = this.state;\n const manageFavoritesProps = {\n headerProps,\n backgroundClass,\n favorites,\n };\n if (!showManageFavorites) return null;\n return <ManageFavorites {...manageFavoritesProps} />;\n }\n\n renderConsolidatedSignInFlow() {\n mountSessionCam();\n const {\n checkStatus,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n language,\n login,\n perks,\n register,\n renderPerkImage,\n reset,\n showFacebookSignup,\n showForgotPasswordLanding,\n signInCompleted,\n signInSuccess,\n utagAccountSource,\n } = this.props;\n const { facebookGenericError, signinPassword, signinShowPassword } = this.state;\n\n const { profile_facebookLoginTitle: headerText } = language || {};\n const onClose = opts => {\n this.onClose(opts);\n handleAnalytics({ event: Events.PROFILE_SCREEN_BACKED_OUT });\n };\n\n const headerProps = {\n headerText,\n onClose,\n renderLogo: this.renderLogo,\n showBorder: true,\n };\n const consolidatedSignInFlowProps = {\n checkStatus,\n facebookGenericError,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n handleActivateCode: this.handleActivateCode,\n handleShowShareMyEmailUpsell: this.handleShowShareMyEmailUpsell,\n headerProps,\n language,\n onAppleSignIn: this.onAppleSignIn,\n register,\n toggleSignupSuccess: this.toggleSignupSuccess,\n onAppleLinking: this.onAppleLinking,\n onClose: this.onClose,\n onFieldChange: this.onFieldChange,\n onRegisterWithGoogle: this.onRegisterWithGoogle,\n onSocialFacebookLogin: this.onSocialFacebookLogin,\n login,\n perks,\n renderPerkImage,\n reset,\n setAppleEmail: this.setAppleEmail,\n setAppleToken: this.setAppleToken,\n setIsAppleEmailShared: this.setIsAppleEmailShared,\n showFacebookSignup,\n signInCompleted,\n signinPassword,\n signinShowPassword,\n signInSuccess,\n toggleCreatePassword: this.toggleCreatePassword,\n utagAccountSource,\n };\n const { showPerks } = this.state;\n if (!showPerks || !perks || showForgotPasswordLanding) return null;\n return <ConsolidatedSignInFlow {...consolidatedSignInFlowProps} />;\n }\n\n renderResetPassword() {\n const {\n accountEmail,\n autoFocus,\n backgroundClass,\n closeAccount,\n language,\n network,\n } = this.props;\n const { profileResetPw_header: headerText } = language || {};\n const {\n showResetPassword,\n resetPasswordShowPassword,\n resetPasswordShowConfirmPassword,\n resetPasswordError,\n resetPasswordPasswordError,\n resetPasswordPassword,\n resetPasswordConfirmPasswordError,\n resetPasswordConfirmPassword,\n } = this.state;\n\n const back = <button onClick={closeAccount} className={Style.back} />;\n const onClose = () => {\n this.onClose({ ignoreRedirect: true });\n };\n const headerProps = {\n headerText,\n showHeaderDesktop: true,\n hideCloseButton: true,\n iconMobile: back,\n isDesktop: false,\n noIcon: true,\n renderLogo: this.renderLogo,\n onClose,\n };\n const resetPasswordProps = {\n autoFocus,\n accountEmail,\n backgroundClass,\n closeAccount,\n headerProps,\n language,\n network,\n onFieldChange: this.onFieldChange,\n onResetPassword: this.onResetPassword,\n resetPasswordError,\n resetPasswordPassword,\n resetPasswordPasswordError,\n resetPasswordShowPassword,\n resetPasswordConfirmPassword,\n resetPasswordConfirmPasswordError,\n resetPasswordShowConfirmPassword,\n };\n if (!showResetPassword) return null;\n return <ResetPassword {...resetPasswordProps} />;\n }\n\n renderResetPasswordSuccess() {\n const { backgroundClass, language, network } = this.props;\n\n const resetPasswordSuccessProps = {\n backgroundClass,\n language,\n network,\n onClose: this.onClose,\n };\n\n const { showResetPasswordSuccess } = this.state;\n if (!showResetPasswordSuccess) return null;\n return <ResetPasswordSuccess {...resetPasswordSuccessProps} />;\n }\n\n renderActivationSuccess = () => {\n const { showActivationSuccess } = this.state;\n if (!showActivationSuccess) return null;\n return <ActivationSuccess />;\n };\n\n renderSignupSuccess() {\n const {\n backgroundClass,\n language,\n optimizelyLanguageStrings,\n toggleMvpdAuthOverlay,\n useMVPDLoginProfile,\n account,\n } = this.props;\n const onClose = () => this.onClose({ dontFetchFavorites: true });\n const onMvpdStart = () => (useMVPDLoginProfile ? toggleMvpdAuthOverlay() : null);\n const signupSuccessProps = {\n backgroundClass,\n language,\n onClose,\n onMvpdStart,\n optimizelyLanguageStrings,\n renderLogo: this.renderLogo,\n useMVPDLoginProfile,\n };\n\n const { showSignupSuccess } = this.state;\n if (!showSignupSuccess) return null;\n\n if (this.handleActivateCode({ ...account, isNew: true })) return null;\n\n return <SignupSuccess {...signupSuccessProps} />;\n }\n\n renderSignin() {\n const {\n backgroundClass,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n getUseUtagGlobal,\n language,\n mvpdData,\n pageViewEvent,\n privacyPolicyClickEvent,\n showFacebookLogin,\n showFacebookSignup,\n signInForgotPasswordStarted,\n signInIncomplete,\n signinDropdownIconTheme,\n utagAccountSource,\n } = this.props;\n const {\n profileSignin_header: headerText,\n profileSignin_forgotPasswordText: linkText,\n profileSignin_createProfilePrompt: text,\n profileSignin_createProfileCta: ctaLinkText,\n } = language || {};\n const {\n facebookGenericError,\n showSignin,\n signinEmail,\n signinEmailError,\n signinGenericError,\n signinMigrationDropdownOpen,\n signinPassword,\n signinPasswordError,\n signinShowPassword,\n } = this.state;\n const onClose = opts => {\n this.onClose(opts);\n signInIncomplete({ utagAccountSource });\n };\n const headerProps = {\n onClose,\n renderLogo: this.renderLogo,\n headerText,\n };\n const ctaProps = {\n text,\n linkText: ctaLinkText,\n onClick: () => {\n if (this.onSigninRegisterClick) this.onSigninRegisterClick();\n handleAnalytics({\n event: Events.PROFILE_SIGNUP_STATRED,\n });\n logEvent('onProfileSignUp');\n },\n };\n const forgotPasswordCTAProps = {\n linkText,\n onClick: () => {\n if (this.onForgotPasswordClick) this.onForgotPasswordClick();\n if (signInForgotPasswordStarted) signInForgotPasswordStarted({ utagAccountSource });\n },\n };\n\n const signinProps = {\n backgroundClass,\n ctaProps,\n facebookGenericError,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n forgotPasswordCTAProps,\n getUseUtagGlobal,\n headerProps,\n language,\n mvpdData,\n onAppleLinking: (email, password, token) => this.onAppleLinking(email, password, token),\n onAppleSignIn: token => this.onAppleSignIn(token),\n onClose,\n onFieldChange: this.onFieldChange,\n onRegisterWithGoogle: (email, password, token) =>\n this.onRegisterWithGoogle(email, password, token),\n onSignin: this.onSignin,\n onSocialFacebookLogin: this.onSocialFacebookLogin,\n pageViewEvent,\n privacyPolicyClickEvent,\n setAppleEmail: email => this.setAppleEmail(email),\n setAppleToken: appleToken => this.setAppleToken(appleToken),\n setIsAppleEmailShared: isEmailShared => this.setIsAppleEmailShared(isEmailShared),\n showFacebookLogin,\n showFacebookSignup,\n showSignin,\n signinDropdownIconTheme,\n signinEmail,\n signinEmailError,\n signinGenericError,\n signinMigrationDropdownOpen,\n signinPassword,\n signinPasswordError,\n signinShowPassword,\n toggleCreatePassword: this.toggleCreatePassword,\n utagAccountSource,\n };\n if (!showSignin) return null;\n return <Signin {...signinProps} />;\n }\n\n renderSignup() {\n const {\n backgroundClass,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n getUseUtagGlobal,\n language,\n mvpdData,\n pageViewEvent,\n privacyPolicyClickEvent,\n showFacebookSignup,\n signUpIncomplete,\n utagAccountSource,\n } = this.props;\n const {\n global_signInButton: linkText,\n profileCreate_header: headerText,\n profileCreate_signInText: text,\n } = language || {};\n const {\n entryOverlay,\n facebookGenericError,\n showSignup,\n signupEmail,\n signupEmailError,\n signupEmailExistsError,\n signupFirstName,\n signupFirstNameError,\n signupFullNameError,\n signupGenericError,\n signupLastName,\n signupLastNameError,\n signupPassword,\n signupPasswordError,\n signupShowPassword,\n signupSocialEmailExistsError,\n signUpEventFired,\n } = this.state;\n const onClose = opts => {\n this.onClose(opts);\n signUpIncomplete({ utagAccountSource });\n };\n const headerProps = {\n headerText,\n onClose,\n renderLogo: this.renderLogo,\n };\n const ctaProps = {\n text,\n linkText,\n onClick: () => {\n if (this.onSignupLoginClick) this.onSignupLoginClick();\n handleAnalytics({\n event: Events.PROFILE_SIGN_IN_STARTED,\n });\n logEvent('onProfileSignIn');\n },\n };\n\n const signupProps = {\n backgroundClass,\n ctaProps,\n entryOverlay,\n facebookGenericError,\n facebookLoginOptionalText,\n facebookLoginText,\n facebookSignupOptionalText,\n facebookSignupText,\n getUseUtagGlobal,\n handleShowShareMyEmailUpsell: this.handleShowShareMyEmailUpsell,\n headerProps,\n language,\n mvpdData,\n onAppleLinking: (email, password, token) => this.onAppleLinking(email, password, token),\n onRegisterWithGoogle: (email, password, token) =>\n this.onRegisterWithGoogle(email, password, token),\n onAppleSignIn: token => this.onAppleSignIn(token),\n onClose,\n onSocialFacebookLogin: this.onSocialFacebookLogin,\n onFieldChange: this.onFieldChange,\n onSignup: this.onSignup,\n pageViewEvent,\n privacyPolicyClickEvent,\n setAppleEmail: email => this.setAppleEmail(email),\n setAppleToken: appleToken => this.setAppleToken(appleToken),\n setIsAppleEmailShared: isEmailShared => this.setIsAppleEmailShared(isEmailShared),\n showFacebookSignup,\n signUpEventFired,\n signUpIncomplete,\n signupEmail,\n signupEmailError,\n signupEmailExistsError,\n signupFirstName,\n signupFirstNameError,\n signupFullNameError,\n signupGenericError,\n signupLastName,\n signupLastNameError,\n signupPassword,\n signupPasswordError,\n signupShowPassword,\n signupSocialEmailExistsError,\n toggleCreatePassword: this.toggleCreatePassword,\n utagAccountSource,\n };\n if (!showSignup) return null;\n return <Signup {...signupProps} />;\n }\n\n renderSocialFacebookPasswordLink() {\n const { language, backgroundClass } = this.props;\n const { profile_facebookLoginTitle: headerText } = language || {};\n const {\n facebookEmail,\n facebookPasswordLinkGenericError,\n facebookPasswordLinkPassword,\n facebookPasswordLinkPasswordError,\n facebookPasswordLinkShowPassword,\n showFacebookLoginPasswordLink,\n showFacebookPasswordLink,\n } = this.state;\n const handleClick = () => {\n if (showFacebookPasswordLink)\n handleAnalytics({ event: Events.FB_PASSWORD_CREATION_COMPLETED });\n this.onSocialFacebookRegister();\n };\n const onClose = () => {\n this.onClose();\n this.setState({ ...DEFAULT_FACEBOOK_PASSWORD_LINKING_STATE });\n };\n const headerProps = {\n headerText,\n onClose,\n renderLogo: this.renderLogo,\n };\n const socialFacebookPasswordLinkProps = {\n backgroundClass,\n facebookEmail,\n facebookPasswordLinkGenericError,\n facebookPasswordLinkPassword,\n facebookPasswordLinkPasswordError,\n facebookPasswordLinkShowPassword,\n handleClick,\n headerProps,\n language,\n onFieldChange: this.onFieldChange,\n };\n\n if (!showFacebookPasswordLink && !showFacebookLoginPasswordLink) return null;\n return <SocialFacebookPasswordLink {...socialFacebookPasswordLinkProps} />;\n }\n\n render() {\n const { showAccount, appView, isAppViewExcluded } = this.props;\n if (!showAccount || (appView && isAppViewExcluded(NAME))) return null;\n return (\n <>\n {this.renderAccountMain()}\n {this.renderDeleteAccount()}\n {this.renderForgotPassword()}\n {this.renderForgotPasswordSuccess()}\n {this.renderLogout()}\n {this.renderManageFavorites()}\n {this.renderConsolidatedSignInFlow()}\n {this.renderResetPassword()}\n {this.renderResetPasswordSuccess()}\n {this.renderSignin()}\n {this.renderSignup()}\n {this.renderActivationSuccess()}\n {this.renderShareMyEmailUpsell()}\n {this.renderSignupSuccess()}\n {this.renderSocialFacebookPasswordLink()}\n {this.renderAppleLinking()}\n {this.renderEditAccount()}\n {this.renderChangePassword()}\n {this.renderCreatePassword()}\n {this.renderFacebookLinking()}\n {this.renderParentalControls()}\n {this.renderVerifyAccount()}\n </>\n );\n }\n}\n\nAccount.defaultProps = {\n account: null,\n accountEmail: '',\n accountExpired: null,\n anonymousAccount: null,\n appView: false,\n autoFocus: false,\n backgroundClass: null,\n breakpoint: null,\n checkStatus: noop,\n createPasswordPageEvent: noop,\n closeAccount: noop,\n deleteAccount: null,\n facebookLoginOptionalText: '',\n facebookLoginText: '',\n facebookSignupOptionalText: '',\n facebookSignupText: '',\n favoritesManager: {},\n getUseUtagGlobal: noop,\n googleSignIn: {},\n ignoreOnCloseRedirect: false,\n initialScreen: '',\n isAppViewExcluded: noop,\n isGoogleOneTapDisplayed: null,\n isMobile: false,\n isTablet: false,\n language: {},\n loader: null,\n login: null,\n logout: noop,\n mvpdData: null,\n network: [],\n noVerifyAccount: noop,\n onLoginClick: noop,\n onSignupClick: noop,\n onboardingStart: noop,\n openAccount: noop,\n openForgotPassword: null,\n optimizelyLanguageStrings: noop,\n pageViewEvent: noop,\n params: {},\n perks: [],\n perksPresented: noop,\n previousPath: null,\n privacyPolicyClickEvent: {},\n register: null,\n renderFavorites: null,\n renderNetworkLink: noop,\n renderPerkImage: noop,\n reset: null,\n resetAccountState: noop,\n resetCode: null,\n resetConfirm: null,\n selectedNetwork: null,\n setAccountCloseIgnoreRedirect: noop,\n showAccount: false,\n showFacebookLogin: false,\n showFacebookSignup: false,\n showForgotPasswordLanding: false,\n signInCompleted: null,\n signInError: noop,\n signInForgotPasswordStarted: null,\n signInIncomplete: noop,\n signInSuccess: null,\n signUpCompleted: null,\n signUpError: noop,\n signUpIncomplete: noop,\n signUpMarketing: null,\n signinDropdownIconTheme: {},\n signupSuccess: null,\n socialFacebookLogin: null,\n socialFacebookRegister: noop,\n toggleAccountExpired: noop,\n toggleMvpdAuthOverlay: noop,\n useMVPDLoginProfile: false,\n utagAccountSource: null,\n verifyAccount: noop,\n};\n\nAccount.propTypes = {\n account: PropTypes.shape({}),\n accountEmail: PropTypes.string,\n accountExpired: PropTypes.bool,\n anonymousAccount: PropTypes.shape({}),\n appView: PropTypes.bool,\n autoFocus: PropTypes.bool,\n backgroundClass: PropTypes.string,\n breakpoint: PropTypes.string,\n checkStatus: PropTypes.func,\n createPasswordPageEvent: PropTypes.func,\n closeAccount: PropTypes.func,\n deleteAccount: PropTypes.func,\n facebookLoginOptionalText: PropTypes.string,\n facebookLoginText: PropTypes.string,\n facebookSignupOptionalText: PropTypes.string,\n facebookSignupText: PropTypes.string,\n favoritesManager: PropTypes.shape({}),\n getUseUtagGlobal: PropTypes.func,\n googleNewUser: PropTypes.shape({}),\n googleOneTap: PropTypes.shape({}),\n googleSignIn: PropTypes.shape({}),\n ignoreOnCloseRedirect: PropTypes.bool,\n initialScreen: PropTypes.string,\n isAppViewExcluded: PropTypes.func,\n isGoogleOneTapDisplayed: PropTypes.bool,\n isMobile: PropTypes.bool,\n isTablet: PropTypes.bool,\n language: PropTypes.shape({}),\n loader: PropTypes.node,\n login: PropTypes.func,\n logout: PropTypes.func,\n mvpdData: PropTypes.shape({}),\n network: PropTypes.arrayOf(PropTypes.shape({})),\n noVerifyAccount: PropTypes.func,\n onLoginClick: PropTypes.func,\n onSignupClick: PropTypes.func,\n onboardingStart: PropTypes.func,\n openAccount: PropTypes.func,\n openForgotPassword: PropTypes.func,\n pageViewEvent: PropTypes.func,\n optimizelyLanguageStrings: PropTypes.func,\n params: PropTypes.shape({}),\n perks: PropTypes.arrayOf(PropTypes.shape({})),\n perksPresented: PropTypes.func,\n previousPath: PropTypes.string,\n privacyPolicyClickEvent: PropTypes.shape({}),\n register: PropTypes.func,\n renderFavorites: PropTypes.func,\n renderNetworkLink: PropTypes.func,\n renderPerkImage: PropTypes.func,\n reset: PropTypes.func,\n resetAccountState: PropTypes.func,\n resetCode: PropTypes.string,\n resetConfirm: PropTypes.func,\n selectedNetwork: PropTypes.string,\n setAccountCloseIgnoreRedirect: PropTypes.func,\n setGoogleOneTap: PropTypes.func,\n showAccount: PropTypes.bool,\n showFacebookLogin: PropTypes.bool,\n showFacebookSignup: PropTypes.bool,\n showForgotPasswordLanding: PropTypes.bool,\n signInCompleted: PropTypes.func,\n signInError: PropTypes.func,\n signInForgotPasswordStarted: PropTypes.func,\n signInIncomplete: PropTypes.func,\n signInSuccess: PropTypes.func,\n signUpCompleted: PropTypes.func,\n signUpError: PropTypes.func,\n signUpIncomplete: PropTypes.func,\n signUpMarketing: PropTypes.func,\n signinDropdownIconTheme: PropTypes.shape({}),\n signupSuccess: PropTypes.func,\n socialFacebookLogin: PropTypes.func,\n socialFacebookRegister: PropTypes.func,\n toggleAccountExpired: PropTypes.func,\n toggleMvpdAuthOverlay: PropTypes.func,\n useMVPDLoginProfile: PropTypes.bool,\n utagAccountSource: PropTypes.string,\n verifyAccount: PropTypes.func,\n};\n\nconst mapStateToProps = state => ({\n googleSignIn: state.app.googleSignIn,\n googleOneTap: state.app.googleOneTap,\n googleNewUser: state.app.googleNewUser,\n isGoogleOneTapDisplayed: state.app.isGoogleOneTapDisplayed,\n});\n\nconst mapDispatchToProps = {\n setGoogleOneTap,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Account);\n","/* global NetworkConfig */\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport Account from 'components/Account';\nimport { OVERLAY_ACCOUNT } from 'helpers/FilterHelper';\nimport { isAppViewExcluded, helperGetHomeUrl } from 'helpers/RouteHelper';\nimport { browserHistory } from 'react-router';\n\nimport { getNetworkLogoUrl } from 'helpers/ContentHelper';\n\nclass ResetPassword extends Component {\n constructor(props) {\n super(props);\n\n const { openAccount, showAccount } = this.props;\n\n this.showAccount = showAccount;\n this.openAccount = openAccount;\n }\n\n closeAccount = () => {\n const { setOverlay } = this.props;\n setOverlay(OVERLAY_ACCOUNT, false);\n browserHistory.push(helperGetHomeUrl());\n };\n\n render() {\n const {\n params: { resetCode: resetCodeDirect },\n accountEmail,\n autoFocus,\n resetConfirm,\n location,\n } = this.props;\n const resetCodeQuery = _.get(location, 'query.pwrt');\n const resetCode = resetCodeDirect || resetCodeQuery;\n if (!resetCode) {\n this.closeAccount();\n return null;\n }\n\n const { branding } = NetworkConfig;\n const network = [\n {\n branding,\n logo: getNetworkLogoUrl(branding, 50),\n },\n ];\n\n return (\n <Account\n accountEmail={accountEmail}\n backgroundClass=\"withBackground\"\n closeAccount={this.closeAccount}\n showAccount={this.showAccount}\n language={window.Language}\n autoFocus={autoFocus}\n openAccount={this.openAccount}\n resetCode={resetCode}\n network={network}\n resetConfirm={resetConfirm}\n initialScreen=\"resetPassword\"\n isAppViewExcluded={isAppViewExcluded}\n />\n );\n }\n}\n\nResetPassword.defaultProps = {\n accountEmail: '',\n autoFocus: false,\n location: null,\n};\n\nResetPassword.propTypes = {\n accountEmail: PropTypes.string,\n autoFocus: PropTypes.bool,\n location: PropTypes.string,\n openAccount: PropTypes.func.isRequired,\n params: PropTypes.shape({}).isRequired,\n resetConfirm: PropTypes.func.isRequired,\n setOverlay: PropTypes.func.isRequired,\n showAccount: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ app }) => ({\n accountEmail: app?.account?.email,\n});\n\nexport default connect(mapStateToProps)(ResetPassword);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { onEnterKeyPress } from 'helpers/Account';\nimport NetworkLink from 'components/NetworkLink';\nimport style from './SearchHeader.module.scss';\n\nconst SearchHeader = ({ onXClick = () => null }) => {\n const networkIcon = <NetworkLink onClick={onXClick} />;\n return (\n <div className={style.searchHeader}>\n <div className={style.inner}>\n {networkIcon}\n <Link\n onClick={onXClick}\n tabIndex=\"0\"\n aria-label=\"close search\"\n onKeyPress={e => {\n onEnterKeyPress(e, onXClick);\n }}\n className={style.close}\n onlyActiveOnIndex\n />\n </div>\n </div>\n );\n};\n\nSearchHeader.propTypes = {\n onXClick: PropTypes.func,\n};\n\nexport default SearchHeader;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport axios, { CancelToken } from 'axios';\nimport ReactTimeout from 'react-timeout';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { differenceInMilliseconds, stringToDate, now } from 'helpers/DateTimeHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport {\n Events,\n handleAnalytics,\n SEARCH_INPUT_TRIGGER_INTERVAL_MS,\n} from '@foxcorp/delta-web-analytics';\nimport SearchHeader from './SearchHeader';\nimport style from './Search.module.scss';\n\nlet axiosSource = null;\nlet inputChangeTimeout = null;\n\nclass Search extends Component {\n constructor(props) {\n super(props);\n this.state = {\n userInput: '',\n response: null,\n loading: false,\n resultsTimedOut: false,\n updateExpiredTimeouts: [],\n timer: null,\n };\n\n this.debounceSearchRequest = _.debounce(this.searchRequest, 300);\n this.searchRequest = this.searchRequest.bind(this);\n this.clearTimer = this.clearTimer.bind(this);\n this.setTimedOut = this.setTimedOut.bind(this);\n }\n\n componentDidMount() {\n if (this.hasRequest()) {\n this.getRequest();\n this.setFocus();\n }\n }\n\n componentWillUnmount() {\n this.clearTimer();\n }\n\n setFocus() {\n // https://facebook.github.io/react/docs/refs-and-the-dom.html\n const { autofocus } = this.props;\n if (autofocus !== false) {\n this.searchInput.focus();\n }\n }\n\n onToggleSearch() {\n const { toggleSearch } = this.props;\n toggleSearch(false);\n }\n\n searchRequest(url, headers, success, error) {\n const { setTimeout } = this.props;\n\n this.clearTimer();\n const timer = setTimeout(this.setTimedOut, 5000);\n this.setState({ timer });\n axiosSource = CancelToken.source();\n const Headers = headers;\n Headers.cancelToken = axiosSource.token;\n\n axios\n .get(url, Headers)\n .then(resp => resp)\n .then(success)\n .catch(error);\n }\n\n hasRequest() {\n const { request } = this.props;\n return request && request.headers && request.route;\n }\n\n getRequest() {\n this.setState({ loading: true });\n const { request, isValidInput, useDoubleQuotes } = this.props;\n const { userInput } = this.state;\n\n if (axiosSource) axiosSource.cancel();\n if (!isValidInput) {\n this.setState({ response: null, loading: false });\n return;\n }\n const trimmedInput = userInput.trim();\n const searchInput = useDoubleQuotes ? `%22${trimmedInput}%22` : trimmedInput;\n const url = `${request.route}${searchInput}${request.params || ''}`;\n this.setState({ resultsTimedOut: false });\n this.debounceSearchRequest(\n url,\n request.headers,\n response => {\n let res = response;\n // if there's no user input the response should be null, otherwise it will show response from previous query.\n if (!this.state.userInput) res = null;\n this.setState({ response: res, loading: false });\n this.setUpdateExpiredTimeouts({ response: res });\n axiosSource = null;\n },\n error => {\n axiosSource = null;\n const isAxiosCancel = axios.isCancel(error);\n // keep loading if the error is a canceled request\n if (isAxiosCancel) return;\n\n console.error(`Could not get data for ${request.route}`, error.message);\n this.setState({ loading: false });\n },\n searchInput,\n );\n }\n\n clearTimer() {\n const { timer } = this.state;\n const { clearTimeout } = this.props;\n if (!timer) return;\n clearTimeout(timer);\n this.setState({ timer: null });\n }\n\n setTimedOut() {\n this.setState({ resultsTimedOut: true });\n }\n\n handleSearchInputChange(e) {\n const {\n handleInputChange,\n setTimeout,\n clearTimeout,\n getSearchResultCount,\n handleSearchCompleted,\n } = this.props;\n const searchTerm = e.target.value.toLowerCase();\n handleInputChange({ input: searchTerm });\n if (inputChangeTimeout) clearTimeout(inputChangeTimeout);\n\n if (searchTerm) {\n inputChangeTimeout = setTimeout(() => {\n const searchResultCount = getSearchResultCount();\n\n handleAnalytics({\n event: Events.SEARCH_COMPLETED,\n payload: {\n page_search_term: searchTerm,\n page_num_search_results: searchResultCount,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n handleSearchCompleted();\n }, SEARCH_INPUT_TRIGGER_INTERVAL_MS);\n }\n\n this.setState(\n {\n userInput: searchTerm,\n response: null,\n },\n function _getRequest() {\n this.getRequest();\n },\n );\n }\n\n onClearSearchInputClick() {\n this.setState({ userInput: '' });\n this.setFocus();\n }\n\n setUpdateExpiredTimeouts({ response }) {\n const { updateExpiredTimeouts } = this.state;\n const { clearTimeout, setTimeout } = this.props;\n _.forEach(updateExpiredTimeouts, t => clearTimeout(t));\n const liveResults = _.get(response, 'data.types.epglisting.member', []);\n this.setState({ updateExpiredTimeouts: [] });\n if (!liveResults || !liveResults.length) return;\n\n const newTimeouts = [];\n _.forEach(liveResults, r => {\n const videoId = _.get(r, 'id');\n const endDate = _.get(r, 'endDate');\n if (!videoId || !endDate) return;\n\n const updateInMs = differenceInMilliseconds(stringToDate(endDate), now());\n if (updateInMs < 0) {\n this.updateExpiredProgram({ videoId });\n } else {\n const newTimeout = setTimeout(() => {\n this.updateExpiredProgram({ videoId });\n }, updateInMs);\n newTimeouts.push(newTimeout);\n }\n });\n this.setState({ updateExpiredTimeouts: newTimeouts });\n }\n\n updateExpiredProgram({ videoId }) {\n const { response } = this.state;\n const newResponse = _.cloneDeep(response);\n const liveResults = _.get(newResponse, 'data.types.epglisting.member', []);\n if (!liveResults || !liveResults.length || !videoId) return;\n _.remove(liveResults, r => _.get(r, 'id') === videoId);\n this.setState({ response: newResponse });\n }\n\n render() {\n const {\n renderSearchResults,\n onXClick,\n placeholderText,\n renderTabs,\n hideIcon,\n renderAltResults,\n isValidInput,\n localScrollContainer,\n } = this.props;\n\n const { resultsTimedOut } = this.state;\n const { response: searchResults, userInput, loading } = this.state;\n const tabs = isValidInput ? null : renderTabs({ searchResults });\n\n const icon = hideIcon ? null : (\n <div className={style.searchIcon}>\n <Icon icon=\"search\" />\n </div>\n );\n const searchResultsTags = renderSearchResults({\n userInput,\n searchResults,\n loading,\n resultsTimedOut,\n clearTimer: this.clearTimer,\n });\n\n let altResultsClasses = style.altResultsContainer;\n\n if (isValidInput)\n altResultsClasses = classNames(altResultsClasses, style.altSearchedResultsContainer);\n\n const containerId = !localScrollContainer ? 'searchResultsScrollContainer' : null;\n\n return (\n <section className={style.search}>\n <SearchHeader onXClick={onXClick} />\n <div className={style.providerList}>\n <div className={style.searchInputContainer}>\n {icon}\n <input\n tabIndex=\"0\"\n type=\"text\"\n data-test=\"search-input\"\n maxLength=\"50\"\n className={style.searchInput}\n onChange={this.handleSearchInputChange.bind(this)}\n value={userInput}\n ref={input => {\n this.searchInput = input;\n }}\n placeholder={placeholderText}\n autoCorrect=\"off\"\n autoComplete=\"off\"\n />\n\n {tabs}\n </div>\n {renderAltResults ? null : searchResultsTags}\n </div>\n <div className={altResultsClasses} id={containerId}>\n {renderAltResults ? searchResultsTags : null}\n </div>\n </section>\n );\n }\n}\n\nSearch.defaultProps = {\n autofocus: false,\n clearTimeout: noop,\n handleInputChange: noop,\n handleSearchCompleted: noop,\n hideIcon: false,\n onXClick: noop,\n placeholderText: '',\n renderAltResults: false,\n renderSearchResults: noop,\n renderTabs: noop,\n setTimeout: noop,\n toggleSearch: noop,\n useDoubleQuotes: false,\n getSearchResultCount: noop,\n};\n\nSearch.propTypes = {\n autofocus: PropTypes.bool,\n clearTimeout: PropTypes.func,\n handleInputChange: PropTypes.func,\n handleSearchCompleted: PropTypes.func,\n hideIcon: PropTypes.bool,\n isValidInput: PropTypes.bool.isRequired,\n localScrollContainer: PropTypes.bool.isRequired,\n onXClick: PropTypes.func,\n placeholderText: PropTypes.string,\n renderAltResults: PropTypes.bool,\n renderSearchResults: PropTypes.func,\n renderTabs: PropTypes.func,\n request: PropTypes.shape({}).isRequired,\n setTimeout: PropTypes.func,\n toggleSearch: PropTypes.func,\n useDoubleQuotes: PropTypes.bool,\n getSearchResultCount: PropTypes.func,\n};\n\nexport default ReactTimeout(connect(null, null)(Search));\n","import _ from 'lodash';\n\nexport function doesTabHaveFilter(panels, tabIdx, filterName) {\n const filters = _.get(panels, `member.${tabIdx}.customViews`);\n return _.find(filters, o => {\n const { name } = o;\n const lowerCaseName = _.toLower(name);\n return lowerCaseName === _.toLower(filterName);\n });\n}\n\nexport function isDirectLink() {\n return _.includes(_.get(window, 'location.pathname', ''), '/find');\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\n\nclass InfiniteScroll extends Component {\n constructor(props) {\n super(props);\n\n this.setRef = this.setRef.bind(this);\n this.onScroll = this.onScroll.bind(this);\n this.onScroll = _.debounce(this.onScroll, props.debounce);\n }\n\n componentDidMount() {\n const element = this.getScrollElement();\n\n element.addEventListener('mousewheel', this.onScroll);\n element.addEventListener('touchmove', this.onScroll);\n element.addEventListener('scroll', this.onScroll);\n element.addEventListener('resize', this.onScroll);\n }\n\n componentWillUnmount() {\n const element = this.getScrollElement();\n\n element.removeEventListener('mousewheel', this.onScroll);\n element.removeEventListener('touchmove', this.onScroll);\n element.removeEventListener('scroll', this.onScroll);\n element.removeEventListener('resize', this.onScroll);\n }\n\n onScroll() {\n const { offset, topHandler, bottomHandler } = this.props;\n const topDistance = this.getRemainingDistanceToTop();\n const bottomDistance = this.getRemainingDistanceToBottom();\n\n const scrolledToTop = offset >= topDistance;\n const scrolledToBottom = offset >= bottomDistance;\n\n if (scrolledToTop) topHandler();\n if (scrolledToBottom) bottomHandler();\n }\n\n getRemainingDistanceToTop() {\n const element = this.getScrollElement();\n const remainingTop = element.scrollTop;\n return remainingTop;\n }\n\n getRemainingDistanceToBottom() {\n const element = this.getScrollElement();\n const { offsetHeight, scrollHeight, scrollTop } = element;\n const remainingBottom = scrollHeight - offsetHeight - scrollTop;\n\n return remainingBottom;\n }\n\n getScrollElement() {\n return this.component ? this.component.parentNode : {};\n }\n\n setRef(node) {\n this.component = node;\n }\n\n render() {\n const { children } = this.props;\n return <div ref={this.setRef}>{children}</div>;\n }\n}\n\nInfiniteScroll.defaultProps = {\n children: null,\n debounce: 0,\n offset: 0,\n topHandler: () => {},\n bottomHandler: () => {},\n};\n\nInfiniteScroll.propTypes = {\n children: PropTypes.node,\n debounce: PropTypes.number,\n offset: PropTypes.number,\n topHandler: PropTypes.func,\n bottomHandler: PropTypes.func,\n};\n\nexport default InfiniteScroll;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport style from './SupportLink.css';\n\nconst { supportCta: supportTitle } = window.Language;\nconst supportUrl = _.get(window.ExternalConfig, 'support.url');\n\nconst SupportLink = ({ theme, title, url } = {}) => {\n const props = {\n href: url,\n rel: 'noopener noreferrer',\n title,\n target: '_blank',\n className: classNames([style.support, theme.support]),\n };\n return <a {...props}>{title}</a>;\n};\n\nSupportLink.defaultProps = {\n theme: {},\n title: supportTitle,\n url: supportUrl,\n};\n\nSupportLink.propTypes = {\n theme: PropTypes.shape({}),\n title: PropTypes.string,\n url: PropTypes.string,\n};\n\nexport default SupportLink;\n","import React, { useState } from 'react';\nimport { getTileGridButtons } from 'helpers/GridHelper';\nimport PropTypes from 'prop-types';\n\nconst Shelf = ({\n headlineText,\n items: filteredList,\n theme,\n seeMoreText,\n renderItems,\n processor,\n itemNumberLimit,\n}) => {\n const [state, setState] = useState(false);\n const toggle = () => (state ? setState(false) : setState(true));\n const numberOfItemsInitiallyToShow =\n itemNumberLimit === 0 ? filteredList.length : itemNumberLimit;\n const items = state ? filteredList : filteredList.slice(0, numberOfItemsInitiallyToShow);\n return (\n <div key={headlineText}>\n <h1 className={theme.searchResultTitle}>{headlineText}</h1>\n {renderItems({ items, tileIndexOffset: 0, processor })}\n {itemNumberLimit !== 0 && filteredList.length > itemNumberLimit\n ? getTileGridButtons({\n theme,\n expanded: state,\n toggleFunction: toggle,\n toggleMoreTextOverride: seeMoreText,\n })\n : null}\n <hr className={theme.hr} />\n </div>\n );\n};\n\nexport default Shelf;\n\nShelf.defaultProps = {\n itemNumberLimit: 4,\n};\n\nShelf.propTypes = {\n headlineText: PropTypes.string.isRequired,\n items: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n processor: PropTypes.func.isRequired,\n renderItems: PropTypes.func.isRequired,\n seeMoreText: PropTypes.string.isRequired,\n theme: PropTypes.shape({}).isRequired,\n itemNumberLimit: PropTypes.number,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport TileGrid from 'components/TileGrid';\nimport InfiniteScroll from 'components/InfiniteScroll';\nimport { Element } from 'react-scroll';\nimport List from 'components/List';\nimport Panel from 'components/Panel';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport SupportLink from 'components/SupportLink';\nimport { SEARCH_TILE } from 'components/TileV2';\nimport {\n isAuthorized,\n listProcessor,\n listProcessorWithAnimation,\n listItemProcessor,\n replayVideoProcessor,\n searchListVideoProcessor,\n} from 'helpers/VideoProcessorHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport {\n BUILD_VERSION,\n callTealiumEvent,\n setTealiumProfileId,\n TEALIUM_EVENT_PREFIX,\n} from '@foxcorp/delta-web-analytics';\nimport { noop } from 'helpers/GlobalHelper';\nimport {\n isLive,\n isSportsCollection,\n getRequiresAuth,\n isTypeVideo,\n nonFoxNowSkus,\n filterMissingDeepLinkItems,\n} from 'helpers/ContentHelper';\nimport { helperGetApiHeaders, helperConvertApiRoute } from 'helpers/ApiHelper';\nimport {\n getLocation,\n hasLocationCookies,\n getLocationPermission,\n GEO_LOCATION_STATUS_DENIED,\n} from 'helpers/GeoLocationHelper';\nimport { refreshPage } from 'helpers/RouteHelper';\nimport { searchVideosEnabled } from 'helpers/ConfigHelper';\nimport {\n getOptimizelySearchVideoEnabled,\n getOptimizelyResultsOverrideEnabled,\n} from 'helpers/OptimizelyHelper';\nimport Loader from 'components/Loader';\nimport Shelf from './components/Shelf';\nimport geoLocationStyle from './geoLocation.css';\nimport Style from './SearchResults.module.scss';\n\nconst INFINITE_SCROLL_DEBOUNCE = 50;\nconst INFINITE_SCROLL_OFFSET = 200;\nclass SearchResults extends Component {\n constructor(props) {\n super(props);\n this.state = {\n geoLocationError: null,\n geoLocationLoading: null,\n geoLocationDenied: null,\n };\n }\n\n componentDidMount() {\n const { coordinates } = this.props;\n const locationCookiesAvailable = hasLocationCookies();\n\n if (locationCookiesAvailable) {\n if (!coordinates) getLocation(this.getLocationCallback);\n } else {\n getLocationPermission(this.getLocationPermissionCallback);\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { results, setSearchResultCount, resultsTimedOut, clearTimer } = this.props;\n const {\n results: nextResults,\n account: nextAccount,\n userInput: nextUserInput,\n isValidInput: nextIsValidInput,\n fetching,\n loading,\n resultsTimedOut: nextResultsTimedOut,\n } = nextProps;\n\n if (\n nextResults &&\n nextIsValidInput &&\n !_.isEqual(results, nextResults) &&\n !nextResultsTimedOut\n ) {\n const parsedResults = this.parseResults(_.get(nextResults, 'data'));\n const { resultCount } = parsedResults;\n const noResults = resultCount === 0;\n if (noResults) clearTimer();\n setSearchResultCount(resultCount);\n const action = 'search_event';\n const profileId = _.get(nextAccount, 'profileId');\n const searchResults = resultCount === 0 ? 'no search results' : resultCount;\n let data = null;\n if (noResults && !fetching && !loading) {\n data = setTealiumProfileId(profileId, {\n action,\n platform_version: BUILD_VERSION,\n search_term: nextUserInput,\n search_result_type: 'no results returned',\n num_search_results: searchResults,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n }\n }\n if (nextResultsTimedOut && resultsTimedOut !== nextResultsTimedOut) {\n const action = 'search_event';\n const profileId = _.get(nextAccount, 'profileId');\n const parsedResults = this.parseResults(_.get(nextResults, 'data'));\n const { resultCount } = parsedResults;\n setSearchResultCount(resultCount);\n const searchResults = resultCount === 0 ? 'no search results' : resultCount;\n const data = setTealiumProfileId(profileId, {\n action,\n platform_version: BUILD_VERSION,\n search_term: nextUserInput,\n search_result_type: 'timer expired',\n num_search_results: searchResults,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n }\n }\n\n getLocationCallback = (error, coordinates) => {\n const { setCoordinates } = this.props;\n\n if (coordinates) {\n this.setState({ geoLocationLoading: false });\n setCoordinates(coordinates);\n }\n\n if (error) {\n this.setState({ geoLocationError: error });\n this.setState({ geoLocationLoading: false });\n }\n };\n\n getLocationPermissionCallback = (error, permission) => {\n if (permission === GEO_LOCATION_STATUS_DENIED) this.setState({ geoLocationDenied: true });\n };\n\n filterList = item => {\n if (!item) return false;\n const { '@type': type, livePlayerScreenUrl, network } = item;\n\n if (isLive(type)) {\n const { isAuthenticated, preauthorizedResources } = this.props;\n const requiresAuth = getRequiresAuth({ video: item });\n const userIsAuthorized = isAuthorized({\n prioritizedNetwork: network,\n preauthorizedResources,\n isAuthenticated,\n requiresAuth,\n });\n const hideUnauthorizedVideo = isAuthenticated && !userIsAuthorized;\n const videoHasPlayableAsset = !!livePlayerScreenUrl;\n if (!videoHasPlayableAsset || hideUnauthorizedVideo) return false;\n }\n\n return true;\n };\n\n loadMore = () => {\n if (this.panel) this.panel.fetchNextPage();\n };\n\n parseResults = panel => {\n const { results: resultExternal } = _.get(window.ExternalConfig, 'search');\n const resultShelves = getOptimizelyResultsOverrideEnabled()\n ? window?.optimizelyResultsOverrideValues\n : resultExternal;\n const shelves = _.map(resultShelves, shelfInfo => {\n if (isTypeVideo(shelfInfo.type) && !getOptimizelySearchVideoEnabled()) {\n return null;\n }\n return this.renderShelf(shelfInfo, panel);\n });\n const filteredShelves = _.reject(shelves, _.isEmpty);\n let resultCount = 0;\n const shelfArray = _.map(filteredShelves, ({ shelf, count }) => {\n resultCount += count;\n return shelf;\n });\n\n return { shelfArray, resultCount };\n };\n\n renderFilteredItems() {\n const { accessToken, deviceId, selectedFilter, selectedTab, displayGrid } = this.props;\n if (!selectedFilter) return null;\n const selectedFilterParams = selectedFilter.onClickParams || selectedFilter;\n const selectedFilterIdx = _.get(selectedFilterParams, 'idx', 0);\n const url = _.get(selectedFilterParams, 'url');\n\n const panelProps = {\n accessToken,\n deviceId,\n key: 'filteredItemsPanel',\n renderer: panel => {\n const items = _.get(panel, 'member', []);\n let deepLinkFilterList = items;\n if (panel?.panelType === 'videos') {\n deepLinkFilterList = filterMissingDeepLinkItems(items, nonFoxNowSkus);\n }\n const seo = _.get(panel, 'SEO', {});\n return this.renderItems({ key: url, items: deepLinkFilterList, seo });\n },\n panelData: {},\n pageType: 'browse',\n panelId: `${url}-${selectedTab}-${selectedFilterIdx}`,\n panelUrl: url,\n propsToWatch: { displayGrid },\n hasInfiniteScroll: true,\n headerGenerator: helperGetApiHeaders,\n routeGenerator: helperConvertApiRoute,\n onRef: ref => {\n this.panel = ref;\n },\n panelPropsToWatch: [{ uid: 'isFetchingPanelData', location: 'fetching' }],\n };\n return <Panel {...panelProps} />;\n }\n\n renderItems(sentComponentProps) {\n const componentProps = { ...sentComponentProps };\n const {\n onResultClick,\n isAuthenticated,\n displayGrid,\n tileAnimation,\n preventLazyLoad,\n renderImage,\n } = this.props;\n let processor = listItemProcessor;\n let tileType = null;\n let tileIndexOffset = 0;\n if (tileAnimation) {\n processor = listProcessorWithAnimation;\n tileType = 'fadeAnimated';\n const count = componentProps.items.length;\n tileIndexOffset = count - (count % 25 || 25);\n } else if (displayGrid) {\n processor = listProcessor;\n }\n\n componentProps.gridType = componentProps.gridType || 'grid-5-4-3-1';\n componentProps.tileDetailToggle = componentProps.tileDetailToggle || false;\n componentProps.onTitleClick = componentProps.onTitleClick || onResultClick;\n componentProps.onTileClick = componentProps.onTileClick || onResultClick;\n componentProps.onLinkClick = componentProps.onLinkClick || onResultClick;\n componentProps.processor = componentProps.processor || processor;\n componentProps.disableHoverStateActionButtons = true;\n componentProps.tileType = tileType;\n componentProps.context = 'SearchResults';\n componentProps.preventLazyLoad = preventLazyLoad;\n componentProps.renderImage = componentProps.renderImage || renderImage;\n if (componentProps.tileIndexOffset === undefined) {\n componentProps.tileIndexOffset = tileIndexOffset;\n }\n\n componentProps.isAuthenticated = isAuthenticated;\n let content = null;\n if (!displayGrid) {\n content = <List {...componentProps} />;\n }\n\n content = <TileGrid tileV2Type={SEARCH_TILE} {...componentProps} />;\n\n return (\n <>\n {setHelmetTags(componentProps.seo)}\n {content}\n </>\n );\n }\n\n renderLocationDenied() {\n const { geoLocationError, geoLocationDenied } = this.state;\n if (!geoLocationError && !geoLocationDenied) return null;\n\n const {\n search_geoLocationErrorHeader: title,\n search_geoLocationErrorBody: body,\n search_geoLocationErrorPrompt: button,\n } = window.Language;\n\n return (\n <div className={geoLocationStyle.wrapper}>\n <h3 className={geoLocationStyle.title}>{title}</h3>\n <p className={geoLocationStyle.body}>{body}</p>\n <div className={geoLocationStyle.actions}>\n <button className={geoLocationStyle.button} onClick={refreshPage} type=\"button\">\n {button}\n </button>\n </div>\n <SupportLink theme={geoLocationStyle} />\n </div>\n );\n }\n\n renderLocationRequest() {\n const { geoLocationError, geoLocationLoading, geoLocationDenied } = this.state;\n if (geoLocationError || geoLocationDenied) return this.renderLocationDenied();\n if (geoLocationLoading) return <Loader />;\n\n const {\n search_geoLocationPromptHeader: title,\n search_geoLocationPromptBody: body,\n search_geoLocationAllowButton: button,\n } = window.Language;\n\n const ctaFunction = () => {\n this.setState({ geoLocationLoading: true });\n getLocation(this.getLocationCallback);\n };\n\n return (\n <div className={geoLocationStyle.wrapper}>\n <h3 className={geoLocationStyle.title}>{title}</h3>\n <p className={geoLocationStyle.body}>{body}</p>\n <div className={geoLocationStyle.actions}>\n <button className={geoLocationStyle.button} onClick={ctaFunction} type=\"button\">\n {button}\n </button>\n </div>\n </div>\n );\n }\n\n renderPanel = panel => {\n const { coordinates, panelPaginated } = this.props;\n const videos = _.get(panel, 'items.member');\n const isSportsPanel = isSportsCollection(videos);\n\n if (!coordinates && isSportsPanel) return this.renderLocationRequest();\n\n const { id: panelId } = panel;\n let itemList = _.get(panel, 'items.member');\n let deepLinkFilterList = itemList;\n if (panel?.panelType === 'videos') {\n deepLinkFilterList = filterMissingDeepLinkItems(itemList, nonFoxNowSkus);\n }\n if (panelPaginated && panelPaginated.length)\n itemList = deepLinkFilterList.concat(panelPaginated);\n\n return this.renderItems({ key: panelId, items: itemList });\n };\n\n renderPanels() {\n const { accessToken, deviceId, results, filteredItems, panels, selectedTab } = this.props;\n if (results || filteredItems || !panels || !panels.member || !panels.member.length) return null;\n\n return panels.member.map((panel, idx) => {\n if (idx !== selectedTab) return null;\n const panelId = panel.id;\n return (\n <Panel\n accessToken={accessToken}\n deviceId={deviceId}\n key={panelId}\n renderer={this.renderPanel}\n panelData={panel}\n headerGenerator={helperGetApiHeaders}\n routeGenerator={helperConvertApiRoute}\n pageType=\"browse\"\n panelId={`${selectedTab}-${panelId}`}\n data-test=\"web-search\"\n hasInfiniteScroll\n onRef={ref => {\n this.panel = ref;\n }}\n panelPropsToWatch={[{ uid: 'isFetchingPanelData', location: 'fetching' }]}\n />\n );\n });\n }\n\n renderResultPanel = panel => {\n const { fetching, isValidInput, loading } = this.props;\n const { search_noResults: titleNoResults } = window.Language;\n\n const { shelfArray, resultCount } = this.parseResults(panel);\n\n if (resultCount === 0 && isValidInput && !fetching && !loading) {\n return <h1 className={Style.searchResultTitle}>{titleNoResults}</h1>;\n }\n\n return shelfArray;\n };\n\n renderResults() {\n const { accessToken, deviceId, results, loading, selectedTab } = this.props;\n const panel = _.get(results, 'data', null);\n const panelId = _.get(panel, '@id', null);\n if (!panel) return null;\n return (\n <Panel\n accessToken={accessToken}\n deviceId={deviceId}\n fetching={loading}\n renderer={this.renderResultPanel}\n panelData={panel}\n headerGenerator={helperGetApiHeaders}\n routeGenerator={helperConvertApiRoute}\n pageType=\"browse\"\n panelId={`${selectedTab}-${panelId}`}\n data-test=\"web-search\"\n hasInfiniteScroll\n onRef={ref => {\n this.panel = ref;\n }}\n panelPropsToWatch={[{ uid: 'isFetchingPanelData', location: 'fetching' }]}\n />\n );\n }\n\n togglePanel = dataLocation => {\n const { openToggle } = this.state;\n const newToggle = {\n ...openToggle,\n };\n newToggle[dataLocation] = !openToggle[dataLocation];\n this.setState({ openToggle: newToggle });\n };\n\n renderShelf = (shelfInfo, panel) => {\n const { display, heading, dataLocation, type } = shelfInfo;\n if (!display) return null;\n const headlineText = _.get(window.Language, heading);\n let list = _.get(panel, `types.${dataLocation}.member`, []);\n if (dataLocation === 'tubi') {\n list = panel?.types?.['tubi'];\n }\n let deepLinkFilterList = list;\n if (panel?.panelType === 'videos') {\n deepLinkFilterList = filterMissingDeepLinkItems(list, nonFoxNowSkus);\n }\n const filteredList = _.filter(deepLinkFilterList, this.filterList);\n const listLength = filteredList.length;\n const shelfItemNumberLimit = 4;\n const seeMoreText = `See More ${\n listLength > shelfItemNumberLimit ? `(${listLength - shelfItemNumberLimit})` : ''\n }`;\n let processor = searchVideosEnabled() && isTypeVideo(type) ? searchListVideoProcessor : null;\n if (dataLocation.includes('sportingEvent')) processor = replayVideoProcessor;\n const shelfProps = {\n headlineText,\n theme: Style,\n items: filteredList,\n seeMoreText,\n renderItems: this.renderItems.bind(this),\n processor,\n itemNumberLimit: shelfItemNumberLimit,\n };\n const shelf = listLength ? <Shelf {...shelfProps} /> : null;\n\n return { shelf, count: listLength };\n };\n\n render() {\n const {\n loading,\n input,\n fetching,\n selectedFilter,\n selectedTab,\n isValidInput,\n localScrollContainer,\n } = this.props;\n\n const infiniteScrollProps = {\n debounce: INFINITE_SCROLL_DEBOUNCE,\n offset: INFINITE_SCROLL_OFFSET,\n bottomHandler: this.loadMore,\n };\n const classname = input ? classNames(Style.search, Style.results) : Style.search;\n const results = this.renderResults();\n const filteredItems = (\n <InfiniteScroll {...infiniteScrollProps}>\n <Element name=\"searchResultsInfiniteScroll\">{this.renderFilteredItems()}</Element>\n </InfiniteScroll>\n );\n const panels = this.renderPanels();\n const content = isValidInput ? results : [results, filteredItems, panels];\n const key = `search-results-${selectedTab}-${selectedFilter}`;\n const containerId = localScrollContainer ? 'searchResultsScrollContainer' : null;\n const isLoading = fetching || loading;\n\n return (\n <div key={key} className={classname} id={containerId}>\n {content}\n {isLoading ? <Loader /> : null}\n </div>\n );\n }\n}\n\nSearchResults.defaultProps = {\n accessToken: null,\n account: {},\n clearTimer: noop,\n coordinates: null,\n deviceId: null,\n fetching: false,\n filteredItems: [],\n input: null,\n isAuthenticated: false,\n loader: null,\n loading: false,\n onResultClick: null,\n panelPaginated: [],\n panels: {},\n preauthorizedResources: [],\n renderImage: noop,\n results: {},\n resultsTimedOut: false,\n selectedFilter: null,\n selectedTab: null,\n setCoordinates: noop,\n setSearchResultCount: noop,\n userInput: {},\n};\n\nSearchResults.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n clearTimer: PropTypes.func,\n coordinates: PropTypes.shape({}),\n deviceId: PropTypes.string,\n displayGrid: PropTypes.bool.isRequired,\n fetching: PropTypes.bool,\n filteredItems: PropTypes.arrayOf(PropTypes.shape({})),\n input: PropTypes.string,\n isAuthenticated: PropTypes.bool,\n isValidInput: PropTypes.bool.isRequired,\n loader: PropTypes.func,\n loading: PropTypes.bool,\n localScrollContainer: PropTypes.bool.isRequired,\n onResultClick: PropTypes.func,\n panelPaginated: PropTypes.arrayOf(PropTypes.shape({})),\n panels: PropTypes.shape({}),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n preventLazyLoad: PropTypes.bool.isRequired,\n renderImage: PropTypes.func,\n results: PropTypes.shape({}),\n resultsTimedOut: PropTypes.bool,\n selectedFilter: PropTypes.shape({}),\n selectedTab: PropTypes.number,\n setCoordinates: PropTypes.func,\n setSearchResultCount: PropTypes.func,\n tileAnimation: PropTypes.bool.isRequired,\n userInput: PropTypes.string,\n};\n\nexport default SearchResults;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport { isStaticRender } from 'helpers/ContentHelper';\nimport DropdownIcon from 'components/DropdownIcon';\nimport Dropdown from 'components/Dropdown';\nimport DropdownStyle from 'screens/Search/components/SearchDropdown/SearchDropdown.module.scss';\nimport Style from './SearchTabs.module.scss';\n\nexport default class SearchTabs extends Component {\n constructor(props) {\n super(props);\n let filter = null;\n if (isStaticRender()) {\n const { panels: nextPanels, selectedTab: nextSelectedTab, renderFilters } = props;\n const selectedPanel = _.get(nextPanels, `member.${nextSelectedTab}`, nextPanels?.member[0]);\n filter = renderFilters(selectedPanel);\n }\n\n this.state = {\n filter,\n categoryDropdownOpen: false,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { panels: nextPanels, selectedTab: nextSelectedTab, renderFilters } = nextProps;\n const { isDropdownOpen } = this.props;\n if (nextPanels && this.props !== nextProps) {\n const selectedPanel = _.get(nextPanels, `member.${nextSelectedTab}`, nextPanels?.member[0]);\n const filter = renderFilters(selectedPanel);\n this.setState({ filter });\n }\n if (!isDropdownOpen && nextProps.isDropdownOpen) {\n this.setState({ categoryDropdownOpen: false });\n }\n }\n\n toggleCategoryDropdown = () => {\n const { toggleShowFilter, scrollToTop } = this.props;\n const { categoryDropdownOpen } = this.state;\n this.setState({ categoryDropdownOpen: !categoryDropdownOpen });\n toggleShowFilter(!categoryDropdownOpen);\n if (!categoryDropdownOpen) scrollToTop();\n };\n\n renderCategoryDropdown(panels) {\n if (!panels) return null;\n const { categoryDropdownOpen } = this.state;\n const { selectedTab, tabChanged, showMobileCancel, isDropdownOpen } = this.props;\n const isOpen = isDropdownOpen ? false : categoryDropdownOpen;\n\n const defaultText = _.get(panels, `member.${selectedTab}.headline`);\n\n const items = panels?.member.map((member, idx) => {\n const { headline, collectionType } = member;\n const onClick = () => {\n tabChanged(idx, headline, collectionType);\n };\n return {\n name: headline,\n onClickParams: idx,\n onClick,\n isSelected: idx === selectedTab,\n };\n });\n\n return (\n <div className={Style.categoryDropdown} data-test=\"search-tabs-dropdown\">\n <Dropdown\n items={items}\n getIcon={onClick => <DropdownIcon onClick={onClick} opened={isOpen} />}\n defaultText={defaultText}\n onOpenDropdown={this.toggleCategoryDropdown}\n onCloseDropdown={this.toggleCategoryDropdown}\n displayResults={isOpen}\n showMobileCancel={showMobileCancel}\n theme={DropdownStyle}\n expanded={isOpen}\n />\n </div>\n );\n }\n\n renderTabs(panels) {\n if (!panels) return null;\n const { selectedTab, tabChanged } = this.props;\n\n const tabs = panels?.member.map((panel, idx) => {\n const { '@id': panelId, headline, collectionType } = panel;\n // TODO: Restore this line once the API delivers safe images again\n const url = null; // getHeaderLogo(panel, 50);\n const item = url ? <img src={url} alt={headline} /> : headline;\n\n const classname = classNames([Style.tabItem, idx === selectedTab ? Style.active : null]);\n const onClick = () => {\n tabChanged(idx, headline, collectionType);\n };\n return (\n <TabItem\n key={panelId}\n panelId={panelId}\n data-test=\"searchtabs-tabitem\"\n classname={classname}\n content={item}\n onClick={onClick}\n />\n );\n });\n\n return (\n <div className={Style.tabs} data-test=\"search-tabs-category\">\n {tabs}\n </div>\n );\n }\n\n render() {\n const { panels } = this.props;\n const { filter } = this.state;\n return (\n <div className={Style.filters}>\n {this.renderCategoryDropdown(panels)}\n {this.renderTabs(panels)}\n {filter && <div className={Style.filterDropdown}>{filter}</div>}\n </div>\n );\n }\n}\n\nSearchTabs.defaultProps = {\n isDropdownOpen: false,\n panels: {},\n selectedTab: null,\n toggleShowFilter: () => {},\n};\n\nSearchTabs.propTypes = {\n isDropdownOpen: PropTypes.bool,\n panels: PropTypes.shape({}),\n renderFilters: PropTypes.func.isRequired, // eslint-disable-line react/no-unused-prop-types\n scrollToTop: PropTypes.func.isRequired,\n selectedTab: PropTypes.number,\n showMobileCancel: PropTypes.bool.isRequired,\n tabChanged: PropTypes.func.isRequired,\n toggleShowFilter: PropTypes.func,\n};\n\nconst TabItem = ({ panelId, classname, content, onClick }) => (\n <button\n key={`${panelId}`}\n className={classname}\n data-test=\"search-tabs-category-item\"\n onClick={onClick}\n >\n {content}\n </button>\n);\n\nTabItem.defaultProps = {\n classname: null,\n content: null,\n onClick: () => {},\n panelId: null,\n};\n\nTabItem.propTypes = {\n classname: PropTypes.string,\n content: PropTypes.node,\n onClick: PropTypes.func,\n panelId: PropTypes.string,\n};\n","import { createSelectorCreator, defaultMemoize } from 'reselect';\nimport _ from 'lodash';\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _.isEqual);\n\nconst selectSearchPanels = state => state.search.panels;\n\n// eslint-disable-next-line import/prefer-default-export\nexport const makeSelectSearchPanels = createDeepEqualSelector(selectSearchPanels, panels => panels);\n","/* globals EpgEnabled */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { animateScroll } from 'react-scroll';\nimport SearchComponent from 'components/Search';\nimport DropdownIcon from 'components/DropdownIcon';\nimport ReactTimeout from 'react-timeout';\nimport { helperGetApiRoute, helperGetApiHeaders } from 'helpers/ApiHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { SEARCH_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport {\n shapeFilters,\n OVERLAY_HEADER_DROPDOWN,\n OVERLAY_HEADER_SEARCH,\n OVERLAY_VIDEO_MODAL,\n} from 'helpers/FilterHelper';\nimport {\n cleanString,\n getPreviousPathname,\n helperGetFindUrl,\n helperGetHomeUrl,\n helperGoToRelativeUrl,\n} from 'helpers/RouteHelper';\nimport { getUpNextTimeouts, isLive } from 'helpers/ContentHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport {\n BUILD_VERSION,\n callTealiumEvent,\n Events,\n setDataLayerPageProps,\n getTealiumSearchResultString,\n handleAnalytics,\n PageNames,\n SegmentReferrerProps,\n setPagePropsStorage,\n setTealiumProfileId,\n TEALIUM_EVENT_PREFIX,\n trackPageReferrerAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport { saveLiveVideo } from 'screens/Live/LiveActions';\nimport { clearVideo as clearGlobalVideo } from 'components/VideoPlayerGlobal/Actions';\nimport { fetchPanel, setFirstPage } from 'components/Panel/PanelActions';\nimport { browserHistory } from 'react-router';\nimport Dropdown from 'components/Dropdown';\nimport Style from 'screens/Search/components/SearchDropdown/SearchDropdown.module.scss';\nimport { doesTabHaveFilter, isDirectLink } from './Helpers';\nimport SearchResults from './components/SearchResults';\nimport SearchTabs from './components/SearchTabs';\nimport {\n reset,\n fetchSearch,\n setFetching,\n fetchNextPage,\n fetchUpNext,\n setTab,\n resetNextPage,\n refreshSearchPanel,\n} from './Actions';\n\nimport { makeSelectSearchPanels } from './selectors';\n\nconst PAGE_TYPE_SEARCH = 'search';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n displayGrid: true,\n autoFocus: true,\n showMobileCancel: false,\n localScrollContainer: true,\n tileAnimation: true,\n preventLazyLoad: false,\n },\n [SITE_PLATFORM_WEB]: {\n displayGrid: true,\n autoFocus: true,\n showMobileCancel: false,\n localScrollContainer: true,\n tileAnimation: true,\n preventLazyLoad: false,\n },\n [SITE_PLATFORM_TABLET]: {\n displayGrid: true,\n autoFocus: false,\n showMobileCancel: true,\n localScrollContainer: false,\n tileAnimation: false,\n preventLazyLoad: true,\n },\n [SITE_PLATFORM_MOBILE]: {\n displayGrid: false,\n autoFocus: false,\n showMobileCancel: true,\n localScrollContainer: false,\n tileAnimation: false,\n preventLazyLoad: true,\n },\n};\n\nclass Search extends Component {\n constructor(props) {\n super(props);\n\n let filter = null;\n const {\n panels,\n params: { findCollectionId, findFilterId },\n } = props;\n const preSelectedFilterName = _.toLower(decodeURIComponent(findFilterId));\n if (preSelectedFilterName && panels) {\n const screenPanels = _.get(panels, 'member', []);\n const decodedFindCollectionId = _.toLower(decodeURIComponent(findCollectionId));\n\n let collectionPanelIndex = _.findIndex(screenPanels, screenPanel => {\n const { id, headline } = screenPanel;\n const isIdMatch = id === findCollectionId;\n const isHeadlineMatch = cleanString(headline) === decodedFindCollectionId;\n return isIdMatch || isHeadlineMatch;\n });\n if (collectionPanelIndex === -1) collectionPanelIndex = 0;\n\n const panel = screenPanels[collectionPanelIndex];\n const collectionFilters = _.get(panel, 'customViews');\n filter = _.find(\n collectionFilters,\n filter => _.toLower(_.get(filter, 'name')) === preSelectedFilterName,\n );\n }\n\n this.state = {\n selectedFilter: filter,\n isDropdownOpen: false,\n panelTimeouts: {},\n ignoreHistoryReplace: false,\n upNextTimeouts: [],\n isValidInput: false,\n originalHash: _.get(window, 'location.hash'),\n originalPath: _.get(window, 'location.pathname'),\n previousPathname: getPreviousPathname(),\n newRelicStart: false,\n searchResultCount: 0,\n // trackedAnalyticsReferrer is used in trackPageReferrerAnalytics\n // eslint-disable-next-line react/no-unused-state\n trackedAnalyticsReferrer: false,\n };\n\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.initialSearchFilterApplied = false;\n }\n\n componentDidMount() {\n const {\n panels,\n accessToken,\n deviceId,\n fetchSearch,\n pageViewEvent,\n setFetching,\n setOverlay,\n } = this.props;\n const { selectedFilter } = this.state;\n const vh = window.innerHeight * 0.01;\n const panel = _.get(panels, 'member.0');\n let newState = { newRelicStart: true };\n\n document.documentElement.style.setProperty('--vh', `${vh}px`);\n setOverlay(OVERLAY_HEADER_SEARCH);\n\n pageViewEvent({ pageName: PageNames.SEARCH });\n handleAnalytics({\n event: Events.FIND_SECTION_SEARCH,\n payload: {\n pageName: 'find:landing',\n pageType: 'find:section-front',\n },\n });\n logEvent('onSearchScreenStart');\n logEvent('onSearchScreenView');\n setDataLayerPageProps();\n handleAnalytics({\n callback: setPagePropsStorage,\n event: Events.SEARCH_STARTED,\n payload: {\n page_name: 'delta:web:find:landing',\n page_type: 'find:section-front',\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n if (panel && selectedFilter) {\n this.tabChanged(0, _.get(panel, 'headline'));\n const filters = shapeFilters(_.get(panel, 'customViews'), this.setSelectedFilter);\n const preselectedFilterIndex = _.findIndex(filters, { name: selectedFilter.name });\n newState = { ...newState, selectedFilter: filters[preselectedFilterIndex] };\n }\n if (!panels || !panels.member || panels.member.length === 0) {\n fetchSearch({ accessToken, deviceId });\n setFetching(true);\n }\n this.setState(newState);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { accessToken, deviceId, fetchSearch } = this.props;\n const { accessToken: nextAccessToken } = nextProps;\n const accessTokenChanged = accessToken !== nextAccessToken;\n if (accessTokenChanged) fetchSearch({ accessToken: nextAccessToken, deviceId });\n }\n\n UNSAFE_componentWillUpdate(nextProps, nextState) {\n const {\n selectedTab: currentTab,\n panels: currentPanels,\n params: { findCollectionId, findFilterId },\n location,\n setOverlay,\n } = this.props;\n const { previousPathname } = this.state;\n const {\n selectedTab: nextTab,\n panels: nextPanels,\n params: { findCollectionId: nextFindCollectionId, findFilterId: nextFindFilterId },\n location: nextLocation,\n } = nextProps;\n const { selectedFilter: nextFilter } = nextState;\n const initialDataLoaded = !currentPanels && nextPanels;\n const directLink = isDirectLink();\n const filterUpdated = directLink && nextFindFilterId !== findFilterId;\n const collectionUpdated = directLink && findCollectionId !== nextFindCollectionId;\n const wasDirectLink = _.includes(_.get(location, 'pathname', ''), '/find');\n const isNextDirectLink = _.includes(_.get(nextLocation, 'pathname', ''), '/find');\n const shouldCloseOverlay = wasDirectLink && !isNextDirectLink;\n const shouldUpdateData = initialDataLoaded || collectionUpdated || filterUpdated;\n\n if (shouldCloseOverlay) setOverlay(OVERLAY_HEADER_SEARCH, false);\n if (currentPanels !== nextPanels) this.fetchLiveTimeouts(nextPanels);\n\n if (shouldUpdateData) {\n const preSelectedFilterName = _.toLower(decodeURIComponent(nextFindFilterId));\n const screenPanels = _.get(nextPanels, 'member', []);\n const collectionId = collectionUpdated ? nextFindCollectionId : findCollectionId;\n const decodedFindCollectionId = _.toLower(decodeURIComponent(collectionId));\n\n let collectionPanelIndex = _.findIndex(screenPanels, screenPanel => {\n const { id, headline } = screenPanel;\n const isIdMatch = id === findCollectionId;\n const isHeadlineMatch = cleanString(headline) === decodedFindCollectionId;\n return isIdMatch || isHeadlineMatch;\n });\n if (collectionPanelIndex === -1) collectionPanelIndex = 0;\n\n const panel = screenPanels[collectionPanelIndex];\n const headline = _.get(panel, 'headline');\n const collectionFilters = _.get(panel, 'customViews');\n const filter = _.find(\n collectionFilters,\n filter => _.toLower(_.get(filter, 'name')) === preSelectedFilterName,\n );\n if (collectionUpdated || filterUpdated) {\n if (previousPathname?.startsWith('/find') || this.initialSearchFilterApplied)\n handleAnalytics({\n event: Events.SEARCH_APPLIED_FILTER,\n payload: filter\n ? { page_filter_title: headline, page_subfilter_title: filter.name }\n : { page_filter_title: headline },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n else this.initialSearchFilterApplied = true;\n }\n this.tabChanged(collectionPanelIndex, headline);\n return this.setState({ selectedFilter: filter });\n }\n\n if (currentTab === nextTab) return null;\n\n const filter = { selectedFilter: null };\n const nextFilterName = _.get(nextFilter, 'name');\n if (currentPanels && nextFilter) {\n const filters = _.get(currentPanels, `member[${nextTab}].customViews`, []);\n const matchedFilter = _.find(filters, { name: nextFilterName });\n if (matchedFilter) _.set(filter, 'selectedFilter', matchedFilter);\n return this.setState({ selectedFilter: matchedFilter });\n }\n return this.setState({ selectedFilter: null });\n }\n\n componentDidUpdate(prevProps) {\n const { panels: prevPanels } = prevProps;\n const { panels } = this.props;\n if (!prevPanels && panels) this.fetchRefreshTimeouts();\n }\n\n componentWillUnmount() {\n const { reset, setOverlay } = this.props;\n const { ignoreHistoryReplace } = this.state;\n\n setOverlay(OVERLAY_HEADER_SEARCH, false);\n reset();\n if (isDirectLink() && !ignoreHistoryReplace) {\n const { originalPath, originalHash } = this.state;\n let nextPathHash = `${originalPath}${originalHash}`;\n if (originalPath && _.includes(originalPath, '/find')) nextPathHash = helperGetHomeUrl();\n browserHistory.push(nextPathHash);\n }\n }\n\n onResultClick = () => {\n const { setOverlay } = this.props;\n animateScroll.scrollTo(0, { duration: 125, smooth: true });\n setOverlay(OVERLAY_HEADER_SEARCH, false);\n setOverlay(OVERLAY_HEADER_DROPDOWN, false);\n setOverlay(OVERLAY_VIDEO_MODAL, false);\n };\n\n setSearchResultCount = count => this.setState({ searchResultCount: count });\n\n setSelectedFilter = filter => {\n const {\n selectedFilter,\n resetNextPage,\n params: { findCollectionId },\n } = this.props;\n const { url: nextFilterUrl } = filter;\n const selectedFilterUrl = _.get(selectedFilter, 'url');\n if (selectedFilterUrl !== nextFilterUrl) {\n resetNextPage();\n this.setState({ selectedFilter: filter }, () => {\n const shouldUpdateUrl = isDirectLink();\n if (shouldUpdateUrl) {\n const filterName = encodeURIComponent(_.toLower(_.get(filter, 'name')));\n const nextUrl = helperGetFindUrl(findCollectionId, filterName);\n browserHistory.push(nextUrl);\n }\n });\n }\n };\n\n closeDropdown = () => {\n this.setState({ isDropdownOpen: false });\n };\n\n openDropdown = () => {\n this.setState({ isDropdownOpen: true });\n this.scrollToTop();\n };\n\n scrollToTop = () => {\n animateScroll.scrollTo('searchResultsInfiniteScroll', {\n duration: 1500,\n delay: 0,\n smooth: true,\n containerId: 'searchResultsScrollContainer',\n });\n };\n\n tabChanged = (idx, headline, collectionType) => {\n const {\n selectedTab,\n panels,\n params: { findFilterId },\n resetNextPage,\n setTab,\n } = this.props;\n const { selectedFilter } = this.state;\n\n const queryString = _.get(window, 'location.search');\n const campaignCodes = queryString.length > 0 ? queryString : false;\n\n if (selectedTab !== idx) {\n const selectedFilterIdx = _.get(selectedFilter, 'idx');\n const selectedFilterName =\n _.toLower(_.get(selectedFilter, 'name')) || decodeURIComponent(findFilterId);\n const pathname = _.get(window, 'location.pathname').replace(/\\/+$/, '');\n const isFilterAvailableForTab = doesTabHaveFilter(panels, idx, selectedFilterName);\n const nextHeadline = encodeURIComponent(_.toLower(headline));\n const nextPathname = helperGetFindUrl(\n nextHeadline,\n isFilterAvailableForTab && selectedFilterName,\n campaignCodes,\n );\n const shouldUpdateUrl = pathname !== nextPathname && isDirectLink();\n\n resetNextPage();\n setTab(idx, selectedFilterIdx, headline, collectionType);\n this.closeDropdown();\n if (shouldUpdateUrl) browserHistory.push(nextPathname);\n }\n };\n\n toggleShowFilter = showFilterStatus => {\n if (showFilterStatus) this.closeDropdown();\n };\n\n // initiate fetchUpNext timeouts\n fetchLiveTimeouts(panels) {\n const { upNextTimeouts } = this.state;\n const { accessToken, clearTimeout, deviceId, fetchUpNext, setTimeout } = this.props;\n _.forEach(upNextTimeouts, t => clearTimeout(t));\n const member = _.get(panels, 'member');\n if (!member || !member.length) return;\n const newTimeouts = getUpNextTimeouts({\n accessToken,\n deviceId,\n panels: member,\n fetchCb: fetchUpNext,\n setTimeoutCb: setTimeout,\n });\n this.setState({ upNextTimeouts: newTimeouts });\n }\n\n fetchRefreshTimeouts() {\n const { panels } = this.props;\n if (!panels) return;\n _.forEach(panels.member, panel => this.refreshData({ panel, initialFetch: false }));\n }\n\n refreshData({ panel, initialFetch }) {\n const { accessToken, clearTimeout, deviceId, refreshSearchPanel, setTimeout } = this.props;\n if (initialFetch) {\n const url = _.get(panel, '@id');\n refreshSearchPanel(accessToken, url, deviceId);\n }\n const { id, validFor } = panel;\n const { panelTimeouts: prevPanelTimeouts } = this.state;\n const newTimeout = {};\n if (prevPanelTimeouts[id]) clearTimeout(prevPanelTimeouts[id]);\n newTimeout[id] = setTimeout(() => {\n this.refreshData({ panel, initialFetch: true });\n }, validFor);\n const panelTimeouts = _.merge(prevPanelTimeouts, newTimeout);\n this.setState({ panelTimeouts });\n }\n\n renderFilters = panel => {\n const { breakpoint, filteredItems } = this.props;\n const hasFilteredItems = filteredItems && filteredItems.length > 0;\n const customViews = _.get(panel, 'customViews');\n const items = shapeFilters(customViews, this.setSelectedFilter);\n if (!items) return null;\n const panelItems = _.get(panel, 'items.member', null);\n if (!hasFilteredItems && !panelItems) return null;\n const defaultText = _.get(items, '[0].name', null);\n const { selectedFilter, isDropdownOpen } = this.state;\n const selectedFilterName = _.get(selectedFilter, 'name', null);\n const { showMobileCancel } = BREAKPOINTS[breakpoint];\n\n return (\n <Dropdown\n accessibilityOverride\n items={items}\n defaultText={defaultText}\n getIcon={onClick => <DropdownIcon onClick={onClick} opened={isDropdownOpen} />}\n onOpenDropdown={this.openDropdown}\n onCloseDropdown={this.closeDropdown}\n expanded={isDropdownOpen}\n selected={selectedFilterName}\n theme={Style}\n displayResults={isDropdownOpen}\n showMobileCancel={showMobileCancel}\n />\n );\n };\n\n renderSearchResults = ({\n searchResults,\n userInput,\n loading,\n resultsTimedOut,\n clearTimer,\n } = {}) => {\n const {\n accessToken,\n deviceId,\n breakpoint,\n clearGlobalVideo,\n panels,\n filteredItems,\n nextPage,\n fetching,\n panelPaginated,\n selectedTab,\n selectedTabName,\n account,\n isAuthenticated,\n preauthorizedResources,\n coordinates,\n saveLiveVideo,\n setCoordinates,\n } = this.props;\n const { newRelicStart } = this.state;\n if (!loading && newRelicStart) {\n logEvent('onSearchScreenFinished');\n this.setState({ newRelicStart: false });\n }\n const { selectedFilter, isValidInput, searchResultCount } = this.state;\n const selectedPanelResultCount = _.get(panels, `member.${selectedTab}.items.totalItems`, null);\n const resultCount = searchResultCount || selectedPanelResultCount;\n\n const items = selectedFilter ? filteredItems : null;\n const genreFilterName = _.get(\n selectedFilter,\n 'name',\n _.get(panels, 'member[0].customViews[0].name', null),\n );\n const { localScrollContainer, displayGrid, tileAnimation, preventLazyLoad } = BREAKPOINTS[\n breakpoint\n ];\n\n const trackResultSelected = titleText => {\n const { searchCompleted, searchResultCount, trimmedInput } = this.state;\n const payload = {};\n if (userInput) payload.page_search_term = userInput;\n if (resultCount) payload.page_num_search_results = resultCount;\n if (selectedTabName) payload.page_category_title = selectedTabName;\n if (titleText) payload.page_item_title = titleText;\n\n handleAnalytics({\n event: Events.SEARCH_RESULT_SELECTED,\n payload,\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n\n if (!searchCompleted) {\n handleAnalytics({\n event: Events.SEARCH_COMPLETED,\n payload: {\n page_search_term: trimmedInput,\n page_num_search_results: searchResultCount,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n }\n };\n\n const searchResultsProps = {\n accessToken,\n deviceId,\n loading,\n input: userInput,\n onResultClick: ({ originalItem, titleText }) => {\n trackResultSelected(titleText);\n\n const itemIsLive = isLive(_.get(originalItem, '@type'));\n if (!EpgEnabled && itemIsLive) {\n clearGlobalVideo({ source: 'HEADER_SEARCH' });\n saveLiveVideo(originalItem);\n }\n let action = 'search_event';\n let profileId = _.get(account, 'profileId');\n let data = setTealiumProfileId(profileId, {\n action,\n platform_version: BUILD_VERSION,\n search_term: userInput,\n search_result_type: 'selected a displayed search result',\n num_search_results: searchResultCount,\n ...getCommonTealiumProps(),\n });\n if (userInput && userInput.length > 1)\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n this.setState({ ignoreHistoryReplace: true }, () => {\n this.onResultClick();\n action = 'search_result_select';\n profileId = _.get(account, 'profileId');\n const searchResultInfo = getTealiumSearchResultString({\n genreFilterName,\n isNation: false,\n itemIsLive,\n originalItem,\n selectedTabName,\n titleText,\n });\n data = setTealiumProfileId(profileId, {\n platform_version: BUILD_VERSION,\n action,\n search_result_info: searchResultInfo,\n });\n if (isValidInput) {\n this.trackPageReferrerAnalytics({\n pageName: PageNames.SEARCH,\n data: {\n [SegmentReferrerProps.NAME]: userInput,\n [SegmentReferrerProps.POSITION]: 'None',\n },\n });\n } else {\n this.trackPageReferrerAnalytics({\n name: PageNames.FIND,\n data: {\n [SegmentReferrerProps.NAME]: selectedTabName,\n [SegmentReferrerProps.POSITION]: genreFilterName,\n },\n });\n }\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n });\n },\n selectedTab,\n results: searchResults,\n filteredItems: items,\n panels,\n panelPaginated,\n fetching,\n hasMore: !!nextPage,\n selectedFilter,\n account,\n userInput,\n isAuthenticated,\n preauthorizedResources,\n coordinates,\n setCoordinates,\n isValidInput,\n localScrollContainer,\n displayGrid,\n tileAnimation,\n preventLazyLoad,\n renderImage: image =>\n renderImage({\n breakpoint,\n imageType: SEARCH_THUMBNAIL_IMAGE,\n ...image,\n }),\n resultsTimedOut,\n setSearchResultCount: this.setSearchResultCount,\n clearTimer,\n };\n\n return <SearchResults {...searchResultsProps} />;\n };\n\n renderTabs = () => {\n const { breakpoint, panels, resetNextPage, selectedTab } = this.props;\n const { showMobileCancel } = BREAKPOINTS[breakpoint];\n const { isDropdownOpen, selectedFilter } = this.state;\n\n return (\n <SearchTabs\n selectedFilter={selectedFilter}\n breakpoint={breakpoint}\n panels={panels}\n fetchSearch={fetchSearch}\n selectedTab={selectedTab}\n setTab={setTab}\n resetNextPage={resetNextPage}\n renderFilters={this.renderFilters}\n tabChanged={this.tabChanged}\n scrollToTop={this.scrollToTop}\n showMobileCancel={showMobileCancel}\n toggleShowFilter={this.toggleShowFilter}\n isDropdownOpen={isDropdownOpen}\n />\n );\n };\n\n render() {\n const { accessToken, breakpoint, deviceId, seo } = this.props;\n const { isValidInput, previousPathname } = this.state;\n const { search_inputPlaceholder: placeholderText } = window.Language;\n const pageType = 'search';\n const searchHeaders = helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId });\n const searchRoute = helperGetApiRoute(pageType);\n const { autoFocus } = BREAKPOINTS[breakpoint];\n const { localScrollContainer } = BREAKPOINTS[breakpoint];\n const useDoubleQuotes = !!_.get(window.ExternalConfig, 'search.useDoubleQuotes', false);\n const onXClick = () => {\n const isInitialRouteSearch = _.includes(previousPathname, helperGetFindUrl());\n if (isInitialRouteSearch) {\n helperGoToRelativeUrl(helperGetHomeUrl());\n } else {\n helperGoToRelativeUrl(previousPathname);\n }\n };\n\n // prevent it from getting the result count from last render.\n const getSearchResultCount = () => this.state.searchResultCount;\n const handleSearchComplete = () => this.setState({ searchCompleted: true });\n return (\n <>\n {setHelmetTags(seo)}\n <SearchComponent\n request={{\n headers: searchHeaders,\n route: searchRoute,\n params: '&includeRetired=true&itemsPerPage=25',\n }}\n className=\"withBackground\"\n placeholderText={placeholderText}\n onXClick={onXClick}\n bindXClick={false}\n renderTabs={this.renderTabs}\n renderSearchResults={this.renderSearchResults}\n autofocus={autoFocus}\n handleInputChange={({ input }) => {\n const trimmedInput = input.trim();\n this.setState({\n isValidInput: input.length >= 2 && trimmedInput.length >= 2,\n trimmedInput,\n });\n }}\n renderAltResults\n isValidInput={isValidInput}\n localScrollContainer={localScrollContainer}\n useDoubleQuotes={useDoubleQuotes}\n getSearchResultCount={getSearchResultCount}\n handleSearchCompleted={handleSearchComplete}\n />\n </>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const panels = _.get(state, 'search.panels', null);\n\n if (panels) panels.member = panels.member.filter(panel => _.get(panel, 'items', false));\n\n return {\n panels: makeSelectSearchPanels(state),\n filteredItems: state.search.filteredItems,\n nextPage: state.search.nextPage,\n nextPageSet: state.search.nextPageSet,\n hasMoreItems: state.search.hasMoreItems,\n fetching: state.search.fetching,\n panelPaginated: state.search.panelPaginated,\n selectedTab: state.search.selectedTab,\n selectedTabName: state.search.selectedTabName,\n seo: state.search.SEO,\n suggestedNetwork: state.search.suggestedNetwork,\n };\n}\n\nSearch.defaultProps = {\n accessToken: null,\n account: {},\n clearGlobalVideo: noop,\n coordinates: {},\n deviceId: null,\n fetching: false,\n filteredItems: [],\n isAuthenticated: null,\n nextPage: null,\n nextPageSet: false,\n panelPaginated: [],\n panels: {},\n params: {},\n preauthorizedResources: [],\n saveLiveVideo: noop,\n selectedFilter: {},\n selectedTab: null,\n selectedTabName: null,\n setCoordinates: noop,\n seo: {},\n suggestedNetwork: null,\n};\n\nSearch.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n clearGlobalVideo: PropTypes.func,\n clearTimeout: PropTypes.func.isRequired,\n coordinates: PropTypes.shape({}),\n deviceId: PropTypes.string,\n fetchNextPage: PropTypes.func.isRequired,\n fetchSearch: PropTypes.func.isRequired,\n fetchUpNext: PropTypes.func.isRequired,\n fetching: PropTypes.bool,\n filteredItems: PropTypes.arrayOf(PropTypes.shape({})),\n isAuthenticated: PropTypes.bool,\n location: PropTypes.shape({}).isRequired,\n nextPage: PropTypes.string,\n nextPageSet: PropTypes.bool,\n pageViewEvent: PropTypes.func,\n panelPaginated: PropTypes.arrayOf(PropTypes.shape({})),\n panels: PropTypes.shape({}),\n params: PropTypes.shape({}),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n refreshSearchPanel: PropTypes.func.isRequired,\n reset: PropTypes.func.isRequired,\n resetNextPage: PropTypes.func.isRequired,\n saveLiveVideo: PropTypes.func,\n selectedFilter: PropTypes.shape({}),\n selectedTab: PropTypes.number,\n selectedTabName: PropTypes.string,\n setCoordinates: PropTypes.func,\n setFetching: PropTypes.func.isRequired,\n setOverlay: PropTypes.func.isRequired,\n setTab: PropTypes.func.isRequired,\n setTimeout: PropTypes.func.isRequired,\n seo: PropTypes.shape({}),\n suggestedNetwork: PropTypes.string,\n};\n\nconst TimeoutSearch = ReactTimeout(\n connect(mapStateToProps, {\n clearGlobalVideo,\n fetchPanel,\n fetchSearch,\n refreshSearchPanel,\n fetchNextPage,\n fetchUpNext,\n saveLiveVideo,\n setFetching,\n setTab,\n resetNextPage,\n reset,\n setFirstPage,\n })(Search),\n);\n\nSearch.fetchData = ({ store, accessToken, params }) =>\n store.dispatch(fetchSearch(accessToken)).then(async response => {\n const { findCollectionId, findFilterId } = params;\n if (!findCollectionId) return Promise.resolve(response);\n\n const data = _.get(response, 'payload.data', null);\n let panels = _.get(data, `panels.member`, []);\n if (panels) panels = panels.filter(panel => _.get(panel, 'items', false));\n const selectedIndex = panels.findIndex(\n panel => panel.headline.toLowerCase() === findCollectionId,\n );\n\n const panelData = _.get(panels, selectedIndex, {});\n const headline = _.get(panels, `${selectedIndex}.headline`, null);\n\n await store.dispatch(setTab(selectedIndex, selectedIndex, headline));\n\n if (findFilterId) {\n const customViews = _.get(panelData, 'customViews', []);\n const customViewIndex = customViews.findIndex(\n ({ name }) => findFilterId === name.toLowerCase(),\n );\n const { url } = _.get(customViews, customViewIndex, {});\n const headers = helperGetApiHeaders({ pathKey: PAGE_TYPE_SEARCH, accessToken });\n\n const customViewId = `${url}-${selectedIndex}-${customViewIndex}`;\n\n await store.dispatch(resetNextPage());\n const result = store.dispatch(fetchPanel(url, headers, customViewId));\n return Promise.resolve(result);\n }\n\n return Promise.resolve(response);\n });\n\nexport default TimeoutSearch;\n","import Search from './Search';\n\nexport default Search;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport Style from './ContextPromo.module.scss';\n\nconst ContextPromo = ({ onClickCTA, promoImage, promoLogo, promoDescription, promoCTA: CTA }) => (\n <div className={Style.promo}>\n <div className={Style.promoContent}>\n <div className={Style.promoImage}>\n <img alt=\"\" src={promoImage} />\n </div>\n <div className={Style.promoDetails}>\n <div className={Style.promoLogo}>\n <img alt=\"\" src={promoLogo} />\n </div>\n <div className={Style.promoDescription}>{promoDescription}</div>\n </div>\n </div>\n <div className={Style.promoCTA}>\n <button className={Style.btn} onClick={onClickCTA}>\n {CTA}\n </button>\n </div>\n </div>\n);\n\nContextPromo.defaultProps = {\n onClickCTA: noop,\n promoImage: '',\n promoLogo: '',\n promoDescription: '',\n promoCTA: '',\n};\n\nContextPromo.propTypes = {\n onClickCTA: PropTypes.func,\n promoImage: PropTypes.string,\n promoLogo: PropTypes.string,\n promoDescription: PropTypes.string,\n promoCTA: PropTypes.string,\n};\n\nexport default ContextPromo;\n","import React, { useState, useEffect, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { noop } from 'helpers/GlobalHelper';\nimport {\n setDisableRender as setGlobalVideoDisabled,\n setScreenInControlOfState as setGlobalVideoControl,\n setPortalRef as setGlobalPortalRef,\n setPortalContentFinished as setGlobaPortalContentFinished,\n setVideoPanel as setGlobalVideoPanel,\n} from 'components/VideoPlayerGlobal/Actions';\nimport Icon from 'components/Icon';\nimport { PAGE_SERIES_DETAIL } from 'helpers/PageHelper';\nimport { getActivePlayer, getPlayerState } from 'helpers/PlayerHelper';\nimport {\n callSegmentPlayerEvent,\n SegmentPlayerStates,\n SegmentVideoEvents,\n} from '@foxcorp/delta-web-analytics';\nimport ContextPromo from './ContextPromo';\n\nimport Style from './ContextPlayer.module.scss';\n\nconst ContextPlayer = ({\n isMobile,\n isPortalContentFinished,\n onClickCTA,\n onClose,\n playerControlState,\n portalRef,\n promo,\n promoDisabled,\n setGlobalPortalRef,\n setGlobaPortalContentFinished,\n setGlobalVideoControl,\n setGlobalVideoDisabled,\n setGlobalVideoPanel,\n video,\n visibility,\n}) => {\n const videoRefLoc = 'context-player-video-portal';\n const modalRef = useRef();\n const [prevControlState, setControlState] = useState(playerControlState);\n const { upsellPromoNavCTA: PromoCTA } = window.Language;\n const CTA = PromoCTA;\n const startVideo = () => {\n setGlobalPortalRef(videoRefLoc);\n if (video) setGlobalVideoPanel({ video, source: PAGE_SERIES_DETAIL });\n setGlobalVideoDisabled({ value: false, source: PAGE_SERIES_DETAIL });\n setControlState(playerControlState);\n };\n const endVideo = () => {\n setGlobaPortalContentFinished(false);\n setGlobalPortalRef('');\n setGlobalVideoDisabled({ value: true, source: PAGE_SERIES_DETAIL });\n };\n const closeAndEndVideo = () => {\n setGlobalPortalRef('');\n setGlobalVideoDisabled({ value: true, source: PAGE_SERIES_DETAIL });\n onClose();\n };\n useEffect(() => {\n if (!visibility) return () => {};\n if (prevControlState !== null) setGlobalVideoControl(null);\n if (!portalRef) {\n startVideo();\n } else {\n endVideo();\n }\n return () => endVideo();\n }, [visibility]);\n useEffect(() => {\n if (isPortalContentFinished) {\n closeAndEndVideo();\n }\n }, [isPortalContentFinished]);\n if (!visibility) return null;\n\n const handleOverlayClick = e => {\n if (modalRef.current.contains(e.target)) {\n return null;\n }\n if (getPlayerState(getActivePlayer()) === 'PLAYING') {\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props: {\n method: 'player closed',\n video_player_state: SegmentPlayerStates.PAUSE,\n },\n });\n }\n onClose();\n return e;\n };\n const modalStyle = classNames(Style.modalOverlay, 'modal-open');\n const renderPromoBanner = () =>\n !isMobile &&\n !promoDisabled && (\n <ContextPromo {...promo} promoCTA={promo.promoCTA || CTA} onClickCTA={onClickCTA} />\n );\n const renderCTA = () =>\n isMobile &&\n !promoDisabled && (\n <div className={Style.CTA}>\n <button className={Style.btn} onClick={onClickCTA}>\n {promo.promoCTA || CTA}\n </button>\n </div>\n );\n const contextPlayer = (\n <div className={modalStyle} onClick={handleOverlayClick}>\n <div className={Style.closeButton} onClick={onClose}>\n <Icon icon=\"close\" color=\"white\" size=\"large\" />\n </div>\n <div ref={modalRef} className={Style.modal}>\n <div className={Style.video} id={videoRefLoc} />\n {renderPromoBanner()}\n {renderCTA()}\n </div>\n </div>\n );\n return ReactDOM.createPortal(contextPlayer, document.getElementById('app-root'));\n};\n\nContextPlayer.defaultProps = {\n isMobile: false,\n isPortalContentFinished: false,\n onClickCTA: noop,\n onClose: noop,\n playerControlState: null,\n portalRef: '',\n promo: {},\n promoDisabled: false,\n setGlobalPortalRef: noop,\n setGlobaPortalContentFinished: noop,\n video: null,\n visibility: false,\n};\n\nContextPlayer.propTypes = {\n isMobile: PropTypes.bool,\n isPortalContentFinished: PropTypes.bool,\n onClickCTA: PropTypes.func,\n onClose: PropTypes.func,\n playerControlState: PropTypes.string,\n portalRef: PropTypes.string,\n promo: PropTypes.shape({}),\n promoDisabled: PropTypes.bool,\n setGlobalPortalRef: PropTypes.func,\n setGlobaPortalContentFinished: PropTypes.func,\n video: PropTypes.shape({}),\n visibility: PropTypes.bool,\n};\n\nconst mapStateToProps = ({\n globalVideo: { isPortalContentFinished, portalRef, screenInControlOfState: playerControlState },\n}) => ({\n isPortalContentFinished,\n playerControlState,\n portalRef,\n});\n\nconst mapDispatchToProps = {\n setGlobalPortalRef,\n setGlobaPortalContentFinished,\n setGlobalVideoControl,\n setGlobalVideoDisabled,\n setGlobalVideoPanel,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ContextPlayer);\n","import _ from 'lodash';\nimport { helperGetApiRouteById } from 'helpers/ApiHelper';\nimport { getUrlTarget } from 'helpers/ContentHelper';\n\nexport const getPromoListApiUrl = promoListUrl => {\n const contentId = _.split(promoListUrl, '/').pop();\n return helperGetApiRouteById(contentId);\n};\n\nexport const promoListProcessor = item => {\n if (!item) return null;\n const { '@id': id, headline, images, name, url } = item;\n\n const image = _.get(images, 'link');\n const targetData = getUrlTarget(url);\n\n const promoData = {\n id,\n link: url,\n title: headline,\n subtitle: name,\n image,\n ...targetData,\n // trackButtonClick: tealiumButtonAction,\n };\n\n return promoData;\n};\n","/* eslint-disable no-console, no-eval, react/no-danger */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport TileGrid from 'components/TileGrid';\nimport _ from 'lodash';\nimport Loader from 'components/Loader';\nimport { PANEL_TYPE_PROMOS, isStaticRender } from 'helpers/ContentHelper';\nimport { PageNames } from '@foxcorp/delta-web-analytics';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { fetchPromoList } from './PromoListActions';\nimport { getPromoListApiUrl, promoListProcessor } from './PromoListHelpers';\nimport tileStyle from './tiles.css';\n\nclass PromoList extends Component {\n componentDidMount() {\n const { accessToken, deviceId, fetchPromoList, pageViewEvent, seriesType, url } = this.props;\n if (url && fetchPromoList && !isStaticRender()) {\n fetchPromoList(url, accessToken, deviceId);\n }\n pageViewEvent({ pageName: PageNames.PROMO_LIST, seriesType });\n }\n\n componentDidUpdate(prevProps) {\n const { url: prevUrl, errors: prevErrors, fetchPromoList } = prevProps;\n const { url, pageViewEvent, setErrors, errors, accessToken, deviceId } = this.props;\n\n if (prevUrl !== url) {\n pageViewEvent({ pageName: PageNames.PROMO_LIST });\n fetchPromoList(url, accessToken, deviceId);\n }\n if (prevErrors !== errors) {\n setErrors(errors);\n }\n }\n\n renderPanels() {\n const { panels, setLoading } = this.props;\n if (!panels || !panels.member || panels.length === 0) return <Loader setLoading={setLoading} />;\n return panels.member.map(panel => {\n const { panelType } = panel;\n const { headline } = panel;\n switch (panelType) {\n case PANEL_TYPE_PROMOS:\n if (!headline) return null;\n return this.renderPromoList(panel);\n default:\n return null;\n }\n });\n }\n\n renderPromoList(item) {\n const { theme } = this.props;\n const { headline, id } = item;\n const items = _.get(item, 'items.member');\n return (\n <div key={`promo-list-detail-${id}`} className={theme.container}>\n <h3 className={theme.headline}>{headline}</h3>\n <TileGrid\n items={items}\n processor={promoListProcessor}\n gridType=\"grid-2-1\"\n tileTheme={tileStyle}\n />\n </div>\n );\n }\n\n render() {\n const { seo, containerId } = this.props;\n return (\n <div id={containerId}>\n {setHelmetTags(seo)}\n {this.renderPanels()}\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n panels: state.promoList.panels,\n errors: state.promoList.errors,\n seo: state.promoList.seo,\n };\n}\n\nPromoList.fetchData = ({ store, params, accessToken }) => {\n const id = params.articleId;\n const url = getPromoListApiUrl(id);\n return store.dispatch(fetchPromoList(url, accessToken));\n};\n\nPromoList.defaultProps = {\n accessToken: null,\n containerId: null,\n deviceId: null,\n errors: null,\n panels: null,\n seo: {},\n seriesType: '',\n setErrors: () => {},\n setLoading: null,\n theme: {},\n url: null,\n};\n\nPromoList.propTypes = {\n accessToken: PropTypes.string,\n containerId: PropTypes.string,\n deviceId: PropTypes.string,\n errors: PropTypes.number,\n fetchPromoList: PropTypes.func.isRequired,\n pageViewEvent: PropTypes.func.isRequired,\n panels: PropTypes.shape({\n member: PropTypes.array,\n }),\n seo: PropTypes.shape({}),\n seriesType: PropTypes.string,\n setErrors: PropTypes.func,\n setLoading: PropTypes.func,\n theme: PropTypes.shape({\n container: PropTypes.shape({}),\n title: PropTypes.string,\n body: PropTypes.string,\n }),\n url: PropTypes.string,\n};\n\nexport default connect(mapStateToProps, { fetchPromoList })(PromoList);\n","import { themr } from '@friendsofreactjs/react-css-themr';\nimport identifiers from 'components/identifiers';\nimport style from './PromoList.css';\nimport PromoListComponent from './PromoList';\n\nexport default themr(identifiers.PromoList, style)(PromoListComponent);\n","import React, { Component } from 'react';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport {\n renderImage,\n renderName,\n renderRole,\n renderSocialNetworks,\n TYPE_CREDIT,\n} from '../BioHelpers';\n\nclass CastItem extends Component {\n renderContent() {\n const { breakpoint, data, isDetail, theme: style } = this.props;\n return (\n <div className={style.wrapper} data-test=\"web-cast-item-content\">\n {renderImage({ style, data, isDetail, breakpoint })}\n {renderName({ style, data, isDetail })}\n {renderRole({ style, data })}\n </div>\n );\n }\n\n renderLinkableContent() {\n const { data, url, selectMenuItemEvent, theme } = this.props;\n const name = _.get(data, 'name');\n const role = _.get(data, 'role');\n return (\n <Link\n className={theme.linkableWrapper}\n onClick={() => {\n selectMenuItemEvent({ title: name, subtitle: role });\n }}\n to={url}\n data-test=\"web-cast-item-link\"\n >\n {this.renderContent()}\n </Link>\n );\n }\n\n render() {\n const { data, url, theme: style } = this.props;\n if (!data) return null;\n\n const { '@type': type } = data;\n if (type !== TYPE_CREDIT) return null;\n\n const content = url ? this.renderLinkableContent() : this.renderContent();\n const socialNetworks = renderSocialNetworks({ style, data });\n\n return (\n <div className={style.castItem} data-test=\"web-cast-item\">\n {content}\n {socialNetworks}\n </div>\n );\n }\n}\n\nCastItem.defaultProps = {\n data: null,\n isDetail: false,\n url: null,\n selectMenuItemEvent: () => {},\n};\n\nCastItem.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n data: PropTypes.shape({\n '@type': PropTypes.string,\n images: PropTypes.shape({}),\n name: PropTypes.string,\n role: PropTypes.string,\n facebookUrl: PropTypes.string,\n twitterUrl: PropTypes.string,\n }),\n isDetail: PropTypes.bool,\n url: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n selectMenuItemEvent: PropTypes.func,\n};\n\nexport default CastItem;\n","import { themr } from '@friendsofreactjs/react-css-themr';\nimport CastItem from './CastItem';\nimport style from './CastItem.css';\n\nexport default themr('CastItem', style)(CastItem);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport { Link } from 'react-router';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { getCreditMemberUrl, hasFullBio, getBioDescription } from '../BioHelpers';\nimport CastItemComponent from '../CastItem';\nimport castItemStyle from './CastItem.css';\n\nclass BioDetail extends Component {\n renderBio() {\n const { item, theme } = this.props;\n const longBio = getBioDescription(item);\n\n if (!longBio) return null;\n\n return <div className={theme.bio}>{longBio}</div>;\n }\n\n renderCastItem() {\n const { breakpoint, item: data } = this.props;\n\n return <CastItemComponent breakpoint={breakpoint} data={data} theme={castItemStyle} isDetail />;\n }\n\n renderCastItemWithNavigation() {\n const { theme } = this.props;\n\n return (\n <div className={theme.navigationWrapper} data-test=\"web-bio-detail-with-navigation\">\n {this.renderLeftArrow()}\n {this.renderCastItem()}\n {this.renderRightArrow()}\n </div>\n );\n }\n\n renderLeftArrow() {\n const { theme, getPrevious, showId } = this.props;\n\n const previous = getPrevious ? getPrevious() : null;\n\n const url = getCreditMemberUrl({ showId, member: previous });\n if (!url || !previous) return null;\n\n return (\n <div className={theme.leftArrow} data-test=\"web-bio-detail-left-arrow\">\n <Link to={url}>\n <Icon color=\"white\" icon=\"arrow-left\" />\n </Link>\n </div>\n );\n }\n\n renderRelated() {\n const { breakpoint, related, theme, showId } = this.props;\n if (!related) return null;\n\n const castItems = related.map(member => {\n if (!hasFullBio({ member })) return null;\n\n const url = getCreditMemberUrl({ showId, member });\n const castItemProps = {\n breakpoint,\n key: member.id,\n data: member,\n url,\n };\n return <CastItemComponent {...castItemProps} />;\n });\n\n return <div className={theme.cast}>{castItems}</div>;\n }\n\n renderRightArrow() {\n const { theme, getNext, showId } = this.props;\n\n const next = getNext ? getNext() : null;\n\n const url = getCreditMemberUrl({ showId, member: next });\n if (!url || !next) return null;\n\n return (\n <div className={theme.rightArrow} data-test=\"web-bio-detail-right-arrow\">\n <Link to={url}>\n <Icon color=\"white\" icon=\"arrow-right\" />\n </Link>\n </div>\n );\n }\n\n render() {\n const { theme, seo } = this.props;\n return (\n <div className={theme.container} data-test=\"web-bio-detail\">\n {setHelmetTags(seo)}\n {this.renderCastItemWithNavigation()}\n {this.renderBio()}\n {this.renderRelated()}\n </div>\n );\n }\n}\n\nBioDetail.defaultProps = {\n breakpoint: null,\n getNext: null,\n getPrevious: null,\n item: null,\n related: null,\n seo: null,\n showId: null,\n};\n\nBioDetail.propTypes = {\n breakpoint: PropTypes.string,\n getNext: PropTypes.func,\n getPrevious: PropTypes.func,\n item: PropTypes.shape({\n '@type': PropTypes.string,\n facebookUrl: PropTypes.string,\n images: PropTypes.shape({}),\n name: PropTypes.string,\n role: PropTypes.string,\n twitterUrl: PropTypes.string,\n }),\n related: PropTypes.arrayOf(PropTypes.shape({})),\n seo: PropTypes.shape({}),\n showId: PropTypes.string,\n theme: PropTypes.shape({}).isRequired,\n};\n\nexport default BioDetail;\n","import { themr } from '@friendsofreactjs/react-css-themr';\nimport BioDetail from './BioDetail';\nimport style from './BioDetail.css';\n\nexport default themr('BioDetail', style)(BioDetail);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { helperGoToBioLanding } from 'helpers/RouteHelper';\nimport Loader from 'components/Loader';\nimport { getCreditMemberUrl, getCreditMemberId, getGroupedCast } from './BioHelpers';\nimport { fetchBioLanding, fetchBioDetail, clearBioPages } from './BioActions';\nimport CastItemComponent from './CastItem';\nimport BioDetailComponent from './BioDetail';\nimport Style from './Bio.module.scss';\n\nclass Bio extends Component {\n constructor(props) {\n super(props);\n\n this.getPrevious = this.getPrevious.bind(this);\n this.getNext = this.getNext.bind(this);\n }\n\n componentDidMount() {\n const {\n showId,\n cast,\n itemId,\n accessToken,\n deviceId,\n fetchBioDetail,\n fetchBioLanding,\n } = this.props;\n if (itemId) return fetchBioDetail(itemId, accessToken, deviceId);\n if (!cast) return fetchBioLanding(showId, accessToken, deviceId);\n return null;\n }\n\n UNSAFE_componentWillUpdate(nextProps) {\n const { showId, cast, itemId, fetchBioDetail, fetchBioLanding } = this.props;\n const {\n accessToken,\n deviceId,\n itemId: nextItemId,\n showId: nextShowId,\n errors: nextErrors,\n } = nextProps;\n\n if (nextItemId && nextErrors === 404) return helperGoToBioLanding(showId);\n\n const hasProfile = this.hasProfile(nextItemId);\n const shouldFetchItem = !hasProfile && nextItemId && itemId !== nextItemId;\n const shouldFetchCast = !cast || showId !== nextShowId;\n\n if (shouldFetchItem) return fetchBioDetail(nextItemId, accessToken, deviceId);\n if (shouldFetchCast) return fetchBioLanding(nextShowId, accessToken, deviceId);\n return null;\n }\n\n componentWillUnmount() {\n const { clearBioPages } = this.props;\n clearBioPages();\n }\n\n getCastWithImages = cast => _.filter(cast, castItem => castItem.images);\n\n getCurrentCastIndex() {\n const { cast, itemId } = this.props;\n const castWithImages = this.getCastWithImages(cast);\n if (!cast || !itemId) return null;\n return _.findIndex(castWithImages, member => getCreditMemberId({ member }) === itemId);\n }\n\n getNext() {\n const { cast } = this.props;\n const castWithImages = this.getCastWithImages(cast);\n const currentIndex = this.getCurrentCastIndex();\n return _.get(castWithImages, currentIndex + 1);\n }\n\n getPrevious() {\n const { cast } = this.props;\n const castWithImages = this.getCastWithImages(cast);\n const currentIndex = this.getCurrentCastIndex();\n return _.get(castWithImages, currentIndex - 1);\n }\n\n hasProfile(id) {\n const { profiles } = this.props;\n return _.get(profiles, id, false);\n }\n\n renderBio() {\n const { landingSeo, cast } = this.props;\n const orderedCast = getGroupedCast(cast);\n return (\n <div className={Style.container} data-test=\"web-bio\">\n {setHelmetTags(landingSeo)}\n {orderedCast &&\n _.map(orderedCast, (castList, category) => (\n <div key={`bio-cast-list-${category}`}>\n <h1 className={Style.title} data-test=\"web-bio-title\">\n {category}\n </h1>\n {this.renderCast(castList)}\n </div>\n ))}\n </div>\n );\n }\n\n renderBioDetail() {\n const { breakpoint, profiles, showId, itemId } = this.props;\n const featured = _.get(profiles, itemId);\n const seo = _.get(featured, 'seo');\n const item = _.get(featured, 'featured');\n const related = _.get(featured, 'related');\n\n const props = {\n breakpoint,\n getNext: this.getNext,\n getPrevious: this.getPrevious,\n showId,\n item,\n related,\n seo,\n };\n return <BioDetailComponent {...props} />;\n }\n\n renderCast(cast) {\n const { breakpoint, selectMenuItemEvent, showId } = this.props;\n\n if (!cast) return null;\n const castItems = cast.map(member => {\n if (!member || !member.images) return null;\n const url = getCreditMemberUrl({ showId, member });\n const props = {\n selectMenuItemEvent,\n breakpoint,\n key: member.id,\n data: member,\n url,\n };\n return <CastItemComponent {...props} />;\n });\n\n return (\n <div className={Style.cast} data-test=\"web-bio-cast\">\n {castItems}\n </div>\n );\n }\n\n render() {\n const { cast, itemId, setLoading } = this.props;\n const hasProfile = this.hasProfile(itemId);\n const hasCast = cast && cast.length > 0;\n const showLoader = (itemId && !hasProfile) || !cast;\n const loader = <Loader setLoading={setLoading} center />;\n\n if (showLoader) return loader;\n if (hasProfile) return this.renderBioDetail();\n if (hasCast) return this.renderBio();\n return null;\n }\n}\n\nBio.defaultProps = {\n accessToken: null,\n breakpoint: null,\n cast: null,\n clearBioPages: noop,\n deviceId: null,\n errors: null,\n fetchBioDetail: noop,\n fetchBioLanding: noop,\n itemId: null,\n landingSeo: null,\n profiles: [],\n selectMenuItemEvent: noop,\n seo: null,\n setLoading: noop,\n setErrors: noop,\n showId: null,\n};\n\nBio.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string,\n cast: PropTypes.arrayOf(PropTypes.shape({})),\n clearBioPages: PropTypes.func,\n deviceId: PropTypes.string,\n errors: PropTypes.number,\n fetchBioDetail: PropTypes.func,\n fetchBioLanding: PropTypes.func,\n itemId: PropTypes.string,\n landingSeo: PropTypes.shape({}),\n profiles: PropTypes.shape({}),\n selectMenuItemEvent: PropTypes.func,\n seo: PropTypes.shape({}),\n setLoading: PropTypes.func,\n setErrors: PropTypes.func,\n showId: PropTypes.string,\n};\n\nconst mapStateToProps = state => ({\n errors: _.get(state, 'bio.errors'),\n profiles: _.get(state, 'bio.profiles'),\n seo: _.get(state, 'bio.seo'),\n landingSeo: _.get(state, 'bio.landingSeo'),\n cast: _.get(state, 'bio.cast'),\n});\n\nexport default connect(\n mapStateToProps,\n { fetchBioLanding, fetchBioDetail, clearBioPages },\n)(Bio);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport Dotdotdot from 'react-dotdotdot';\nimport { BRANDING_LOGO_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport AltHeaderComponent from 'components/AltHeader';\nimport Icon from 'components/Icon';\nimport { getNetworkLogoUrl, LINK_REL } from 'helpers/ContentHelper';\nimport { getAnonymousTuneIn, getCTAUrl } from '../../SeriesDetailHelpers';\nimport altHeaderStyle from '../../styles/AltHeader.css';\nimport Style from './Branding.module.scss';\n\nclass Branding extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n componentDidMount() {\n const { previewButtonClick, hasTrailer } = this.props;\n const { autoPlayPreviewParam } = window.ExternalConfig;\n\n if (window.location.search.includes(autoPlayPreviewParam) && hasTrailer) {\n previewButtonClick();\n }\n }\n\n seoHeaderWrapper(headline) {\n const { titleClampSize, headlineIsPrimary } = this.props;\n return (\n headlineIsPrimary && (\n <Dotdotdot clamp={titleClampSize} className={Style.title}>\n {headline}\n </Dotdotdot>\n )\n );\n }\n\n renderCTA = ({ votingCTA, containerClassName }) => {\n if (!votingCTA) return null;\n const { ctaText, url, target } = votingCTA;\n\n const targetUrl = target || '_blank';\n const rel = target ? '' : LINK_REL;\n const ctaUrl = getCTAUrl(url);\n\n return (\n ctaText &&\n ctaUrl &&\n targetUrl && (\n <div className={classNames([Style.ctaButtonContainer, containerClassName])}>\n <Link href={ctaUrl} target={targetUrl} className={Style.ctaButton} rel={rel}>\n <p className={Style.ctaButtonText}>{ctaText}</p>\n </Link>\n </div>\n )\n );\n };\n\n render() {\n const {\n breakpoint,\n renderBackground,\n className,\n containerClassName,\n name,\n tuneIn,\n network,\n showLogo,\n isHeader,\n stickyHeaderCallback,\n children,\n showActionButtons,\n favoriteButton,\n screenUrl,\n renderAltHeader,\n votingCTA,\n isPersonality,\n onClick,\n isAnonymous,\n item,\n hasTrailer,\n previewButtonClick,\n } = this.props;\n\n const { seriesDetailAnonymous_previewButton: anonymousPreviewButton } = window.Language;\n const { description, seriesType } = item;\n const anonymousTuneIn = getAnonymousTuneIn(seriesType);\n const hasNetworkLogo = !!window.ExternalConfig.networkLogo;\n const networkLogoUrl = hasNetworkLogo ? getNetworkLogoUrl(network) : null;\n const headerClasses = classNames(Style.header, isAnonymous ? Style.anonymous : null);\n const url = helperGetRelativeUrl({ url: screenUrl });\n const imageLogo = renderImage({\n alt: name,\n breakpoint,\n className: Style.titleImage,\n imageType: BRANDING_LOGO_IMAGE,\n src: showLogo,\n });\n\n const titleElement = showLogo ? imageLogo : name;\n\n const tuneInElement = !isPersonality && hasNetworkLogo && (\n <span className={Style.meta}>\n <img src={networkLogoUrl} alt={network} />\n <span>{tuneIn}</span>\n </span>\n );\n\n const altTuneInElement = children || <span className={Style.altMeta}>{tuneInElement}</span>;\n const anonymousTuneInElement = isAnonymous ? (\n <span className={Style.meta}>\n <span>{anonymousTuneIn}</span>\n </span>\n ) : null;\n\n const anonymousDescription =\n description && isAnonymous ? (\n <div className={Style.description}>\n <p>{description}</p>\n </div>\n ) : null;\n\n const actionButtons =\n !showActionButtons || isAnonymous ? null : (\n <div className={Style.actionButtons}>{favoriteButton}</div>\n );\n\n const previewButton =\n isAnonymous && hasTrailer ? (\n <div className={Style.preview}>\n <button onClick={previewButtonClick} className={Style.btn}>\n <Icon\n icon=\"play-button-thin\"\n color=\"white\"\n size=\"full\"\n theme={Style}\n viewBox=\"1 1 36 36\"\n />\n {anonymousPreviewButton}\n </button>\n </div>\n ) : null;\n\n const altHeader = !renderAltHeader ? (\n <div className={Style.altHeaderReplacement} />\n ) : (\n <AltHeaderComponent\n isHeader={isHeader}\n isAltHeader\n title={name}\n onTitleClick={() => {\n window.scrollTo(0, 0);\n }}\n stickyHeaderCallback={stickyHeaderCallback}\n theme={altHeaderStyle}\n className={Style.altHeader}\n >\n {altTuneInElement}\n </AltHeaderComponent>\n );\n\n return (\n <div className={headerClasses} onClick={onClick}>\n {altHeader}\n {isAnonymous && renderBackground()}\n <div className={classNames(Style.headerContainer, className, containerClassName)}>\n <Link to={url} className={Style.titleLink} data-testid=\"remove-child-style\">\n {this.seoHeaderWrapper(titleElement)}\n </Link>\n <div className={Style.tuneInContainer}>\n {tuneInElement}\n {anonymousTuneInElement}\n {actionButtons}\n </div>\n {anonymousDescription}\n {previewButton}\n </div>\n {this.renderCTA({ votingCTA, containerClassName })}\n </div>\n );\n }\n}\n\nBranding.defaultProps = {\n breakpoint: null,\n children: null,\n className: null,\n containerClassName: null,\n favoriteButton: {},\n hasTrailer: false,\n headlineIsPrimary: true,\n isAnonymous: false,\n isHeader: null,\n isPersonality: false,\n item: null,\n name: null,\n network: null,\n onClick: () => {},\n previewButtonClick: noop,\n renderAltHeader: true,\n renderBackground: noop,\n screenUrl: null,\n showLogo: null,\n titleClampSize: 0,\n tuneIn: null,\n votingCTA: {},\n};\n\nBranding.propTypes = {\n breakpoint: PropTypes.string,\n children: PropTypes.shape({}),\n className: PropTypes.string,\n containerClassName: PropTypes.string,\n favoriteButton: PropTypes.shape({}),\n hasTrailer: PropTypes.bool,\n headlineIsPrimary: PropTypes.bool,\n isAnonymous: PropTypes.bool,\n isHeader: PropTypes.bool,\n isPersonality: PropTypes.bool,\n item: PropTypes.shape({}),\n name: PropTypes.string,\n network: PropTypes.string,\n onClick: PropTypes.func,\n previewButtonClick: PropTypes.func,\n renderAltHeader: PropTypes.bool,\n renderBackground: PropTypes.func,\n screenUrl: PropTypes.string,\n showActionButtons: PropTypes.bool.isRequired,\n showLogo: PropTypes.string,\n stickyHeaderCallback: PropTypes.func.isRequired,\n titleClampSize: PropTypes.number,\n tuneIn: PropTypes.string,\n votingCTA: PropTypes.shape({}),\n};\n\nexport default Branding;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport _ from 'lodash';\nimport DropdownIcon from 'components/DropdownIcon';\nimport {\n OVERLAY_SHOW_SEASONS_TAB,\n OVERLAY_SHOW_CLIPS_TAB,\n OVERLAY_SHOW_MORE_TAB,\n} from 'helpers/FilterHelper';\nimport { getUrlTarget, LABEL_CLIPS_AND_EXTRAS, LABEL_CLIPS } from 'helpers/ContentHelper';\nimport Dropdown from 'components/Dropdown';\nimport dropdownHeaderStyle from './DropdownHeader.module.scss';\nimport {\n scrollToElement,\n clearFetchNodeInterval,\n checkForDOMNode,\n} from '../../SeriesDetailHelpers';\n\nimport Style from './TabListMobile.module.scss';\n\nclass TabListMobile extends Component {\n constructor(props) {\n super(props);\n this.state = {\n moreTabItems: {\n items: [],\n },\n clippedTabItems: {},\n // currentFetchNode is used in checkForDOMNode and clearFetchNodeInterval\n // eslint-disable-next-line react/no-unused-state\n currentFetchNode: null,\n };\n this.checkForDOMNode = checkForDOMNode.bind(this);\n this.clearFetchNodeInterval = clearFetchNodeInterval.bind(this);\n this.detectClipping = this.detectClipping.bind(this);\n }\n\n getClipping() {\n const { clippedTabItems } = this.state;\n return _.some(clippedTabItems, item => item);\n }\n\n getSelectedDropdownItem = () => selected => {\n scrollToElement({\n slug: `${_.kebabCase(selected)}`,\n nodeFetcher: this.checkForDOMNode,\n duration: 10000,\n clearNodeFetcher: this.clearFetchNodeInterval,\n offsetTop: 250,\n });\n };\n\n closeAllDropdowns = () => {\n const { setOverlay } = this.props;\n const dropdowns = [OVERLAY_SHOW_SEASONS_TAB, OVERLAY_SHOW_CLIPS_TAB, OVERLAY_SHOW_MORE_TAB];\n _.each(dropdowns, dropdown => setOverlay(dropdown, false));\n };\n\n closeDropdown = overlay => () => {\n const { setOverlay } = this.props;\n return setOverlay(overlay, false);\n };\n\n detectClipping = (tabTitle, isVisible) => {\n const newClipping = !isVisible;\n const { clippedTabItems, moreTabItems } = this.state;\n const clippedTabItem = _.get(clippedTabItems, tabTitle);\n if (clippedTabItem !== newClipping) {\n this.setState(\n {\n clippedTabItems: {\n ...clippedTabItems,\n [_.camelCase(tabTitle)]: newClipping,\n },\n },\n () => {\n this.closeAllDropdowns();\n if (newClipping) {\n this.setState({\n moreTabItems: {\n items: _.uniqBy([...moreTabItems.items, ...this[tabTitle].props.items], 'id'),\n },\n });\n } else {\n this.setState({\n moreTabItems: {\n items: _.uniq(_.dropRight(moreTabItems.items, 1)),\n },\n });\n }\n },\n );\n }\n };\n\n handleGroupName = group => {\n const groupNames = {\n playlist: 'Clips',\n };\n\n return groupNames[group];\n };\n\n handleTabNameParsing = tabName => {\n const { seriesDetail_castHeader: castTitle } = window.Language;\n if (tabName) {\n if (tabName.indexOf('Season') > -1) {\n return 'seasons';\n }\n\n if (tabName === castTitle) {\n return 'Cast';\n }\n }\n\n return tabName;\n };\n\n handleTabTypeParsing = tab => {\n if (_.get(tab, 'onClick')) {\n return 'tabs';\n }\n\n return 'links';\n };\n\n openDropdown = overlay => () => {\n const { setOverlay } = this.props;\n return setOverlay(overlay, true);\n };\n\n openSubmenu = group => {\n const { setOverlay } = this.props;\n const overlayGroup = {\n playlist: OVERLAY_SHOW_CLIPS_TAB,\n };\n\n setOverlay(overlayGroup[group], true);\n };\n\n createTabs(tab, isMoreTab) {\n if (_.isEmpty(tab)) return null;\n const {\n moreTabItems: { items: moreItems },\n } = this.state;\n const { tabs, pageId, isPersonality } = this.props;\n const { items } = tab;\n const title = isMoreTab ? 'more' : _.camelCase(tab.name);\n const type = _.get(tab, 'type');\n const changeCb = isVisible => {\n this.detectClipping(title, isVisible);\n };\n const selectedItem = _.find(items, ({ linkTo }) => _.includes(linkTo, pageId));\n const isActive = pageId\n ? Boolean(selectedItem)\n : title === 'seasons' || tabs.length === 1 || isPersonality;\n const defaultTitle = _.get(items, '0.parentName');\n const hideTab = !!_.find(moreItems, item => _.camelCase(item.name) === title);\n const containerClass = hideTab ? dropdownHeaderStyle.hidden : null;\n const renderedTab =\n (type === 'links' || items.length === 1) && !isMoreTab\n ? this.renderLink(tab, isActive, containerClass)\n : this.renderDropdown({ items, title, isMoreTab, isActive, defaultTitle, containerClass });\n const offset = { right: 30 };\n if (!_.isEmpty(moreItems)) offset.right = 110;\n\n if (isPersonality) return renderedTab;\n\n return (\n <VisibilitySensor\n ref={el => {\n this[title] = el;\n }}\n key={title + _.get(tab, 'id')}\n offset={offset}\n onChange={changeCb}\n delayedCall\n resizeCheck\n active={title !== 'more'}\n items={items}\n >\n {renderedTab}\n </VisibilitySensor>\n );\n }\n\n transformTabs(items) {\n const { isPersonality } = this.props;\n return _.reduce(\n items,\n (acc, tab) => {\n const { name: tabName, parentName } = tab;\n const name = this.handleTabNameParsing(parentName || tabName);\n const type = this.handleTabTypeParsing(tab);\n\n if (isPersonality) {\n if (!acc.tabs.all) {\n acc.tabs.all = { name };\n acc.tabs.all.type = type;\n acc.tabs.all.items = [tab];\n } else {\n acc.tabs.all.items.push(tab);\n }\n return acc;\n }\n\n if (!acc.tabs[name]) {\n acc.tabs[name] = { name };\n acc.tabs[name].type = type;\n acc.tabs[name].items = [];\n }\n\n if (name === 'Cast') {\n _.assign(tab, {\n name,\n });\n }\n\n if (name === 'clips') {\n acc.tabs.clips.items.push({\n ..._.get(tab, 'tab'),\n linkTo: tab.linkTo,\n labelDetail: `(${tab.tab.items.totalItems})`,\n group: 'playlist',\n });\n } else {\n acc.tabs[name].items.push(tab);\n }\n\n return acc;\n },\n {\n tabs: {},\n more: {\n name: 'more',\n type: 'tabs',\n items: [],\n },\n },\n );\n }\n\n renderCurrentDropdowns() {\n const { tabs } = this.props;\n const tabItems = this.transformTabs(tabs).tabs;\n return _.map(tabItems, tabItem => this.createTabs(tabItem));\n }\n\n renderDropdown({ items, title, isMoreTab, isActive, defaultTitle, containerClass }) {\n const { overlay, tabs, tabIndex } = this.props;\n const overlayType = {\n seasons: OVERLAY_SHOW_SEASONS_TAB,\n clips: OVERLAY_SHOW_CLIPS_TAB,\n more: OVERLAY_SHOW_MORE_TAB,\n };\n if (!_.get(overlayType, title)) overlayType[title] = `overlay-${title}`;\n const dropdownOpen = overlay === _.get(overlayType, title);\n let selected = _.get(tabs, `${tabIndex}.name`);\n const dropdownSelected = !!_.find(items, item => {\n const lowerSelected = selected ? selected.toLowerCase() : null;\n const lowerName = item && item.name ? item.name.toLowerCase() : null;\n return lowerSelected && lowerName && lowerSelected === lowerName;\n });\n if (!dropdownSelected) selected = null;\n const styleName = _.some(items, 'tab.headline') ? 'select' : title;\n return (\n <Dropdown\n className={containerClass}\n items={items}\n defaultText={isMoreTab ? _.capitalize(title) : defaultTitle || _.capitalize(title)}\n expandedHeaderCopy={dropdownHeaderStyle[styleName]}\n getIcon={onClick => <DropdownIcon onClick={onClick} opened={dropdownOpen} />}\n onOpenDropdown={this.openDropdown(overlayType[title])}\n onCloseDropdown={this.closeDropdown(overlayType[title])}\n expanded={dropdownOpen}\n theme={dropdownHeaderStyle}\n getSelected={this.getSelectedDropdownItem()}\n selected={selected}\n preserveTitle={isMoreTab}\n useLabelDetail={title === 'clips'}\n openSubmenu={this.openSubmenu}\n displayResults\n showMobileCancel\n isActive={isActive}\n getUrlTarget={getUrlTarget}\n />\n );\n }\n\n renderLink = (tab, isActive, containerClass) => {\n const link = _.first(tab.items);\n const { name, linkTo } = link;\n const { target, rel } = getUrlTarget(linkTo);\n return (\n <div\n className={classNames(\n dropdownHeaderStyle.header,\n dropdownHeaderStyle.container,\n containerClass,\n )}\n >\n <Link\n to={linkTo}\n target={target}\n rel={rel}\n className={Style.mobileExternalLink}\n style={isActive ? { color: 'white' } : {}}\n >\n {name === LABEL_CLIPS_AND_EXTRAS ? LABEL_CLIPS : name}\n </Link>\n </div>\n );\n };\n\n renderMoreDropdown() {\n const { moreTabItems } = this.state;\n const submenuItems = _.countBy(moreTabItems.items, 'group');\n\n const taggedItems = _.each(moreTabItems.items, item => {\n const isSubmenu = !_.isEmpty(item.group) && submenuItems[item.group] > 1;\n _.assign(item, {\n name: isSubmenu ? this.handleGroupName(item.group) : item.name,\n isSubmenu,\n });\n });\n\n const tabItems = _.assign(moreTabItems, {\n items: taggedItems,\n });\n\n return this.createTabs(tabItems, true);\n }\n\n render() {\n const { isPersonality } = this.props;\n const {\n moreTabItems: { items: moreItems },\n } = this.state;\n const tabRowClasses = isPersonality ? [Style.singleOptionTabRow] : [Style.tabRow];\n if (!_.isEmpty(moreItems)) tabRowClasses.push(Style.moreSpacer);\n const shouldRenderMoreDropdown = !!this.tabRow && this.getClipping();\n\n return (\n <div\n className={Style.tabRowWrapper}\n ref={el => {\n this.tabRow = el;\n }}\n >\n <div className={classNames(tabRowClasses)}>{this.renderCurrentDropdowns()}</div>\n <div className={Style.moreTab}>{shouldRenderMoreDropdown && this.renderMoreDropdown()}</div>\n </div>\n );\n }\n}\n\nTabListMobile.defaultProps = {\n overlay: null,\n tabIndex: false,\n pageId: null,\n isPersonality: false,\n};\n\nTabListMobile.propTypes = {\n overlay: PropTypes.string,\n setOverlay: PropTypes.func.isRequired,\n tabs: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n tabIndex: PropTypes.number,\n pageId: PropTypes.string,\n isPersonality: PropTypes.bool,\n};\n\nTabListMobile.contextTypes = {\n location: PropTypes.shape({}),\n};\n\nexport default TabListMobile;\n","/* global SeasonPagesEnabled */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport Regex from 'helpers/Regex';\nimport Dropdown from 'components/Dropdown';\nimport DropdownIcon from 'components/DropdownIcon';\nimport Scrollspy from 'react-scrollspy';\nimport { Sticky } from 'react-sticky';\nimport { Link, browserHistory } from 'react-router';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport { getUrlTarget, PAGE_TYPE_ARTICLE, isArticleTab } from 'helpers/ContentHelper';\nimport { helperGetShowUrl, helperGetPersonalityUrl } from 'helpers/RouteHelper';\nimport {\n Events,\n getTealiumDetailTabData,\n PageNames,\n handleAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport {\n getTabName,\n getTabSlug,\n getTabUrl,\n scrollToElement,\n isPlaylist,\n hasChildren,\n PANEL_TYPE_CLIPS,\n isSeasonPanel,\n checkForDOMNode,\n clearFetchNodeInterval,\n} from '../../SeriesDetailHelpers';\nimport { getPersonalityTabSlug, getPersonalityTabUrl } from '../../PersonalityDetailHelpers';\nimport TabListMobile from '../TabListMobile';\nimport seasonDropdownTheme from './SeasonDropdown.module.scss';\nimport Style from './TabList.module.scss';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n disableHardwareAcceleration: true,\n tabListSidebar: true,\n scrollOffsetTop: 450,\n scrollOffsetTopArticle: 300,\n },\n [SITE_PLATFORM_WEB]: {\n disableHardwareAcceleration: true,\n tabListSidebar: true,\n scrollOffsetTop: 450,\n scrollOffsetTopArticle: 300,\n },\n [SITE_PLATFORM_TABLET]: {\n disableHardwareAcceleration: false,\n tabListSidebar: false,\n scrollOffsetTop: 450,\n scrollOffsetTopArticle: 300,\n },\n [SITE_PLATFORM_MOBILE]: {\n disableHardwareAcceleration: false,\n tabListSidebar: false,\n scrollOffsetTop: 250,\n scrollOffsetTopArticle: 250,\n },\n};\n\nclass TabList extends Component {\n constructor(props) {\n super(props);\n this.state = {\n didTriggerLeapfrogEvent: false,\n videoContentDropdownOpen: false,\n selected: null,\n selectedSubMenu: null,\n };\n this.checkForDOMNode = checkForDOMNode.bind(this);\n this.clearFetchNodeInterval = clearFetchNodeInterval.bind(this);\n }\n\n componentDidMount() {\n const {\n pageType,\n breakpoint,\n isPersonality,\n tabs,\n tabIndex,\n subTabIndex,\n seriesData,\n utagSeriesType,\n } = this.props;\n const { didTriggerLeapfrogEvent } = this.state;\n const { scrollOffsetTop } = BREAKPOINTS[breakpoint];\n let selected = null;\n let selectedSubMenu = null;\n if (subTabIndex !== false && subTabIndex !== null) {\n selectedSubMenu = _.get(tabs, `${tabIndex}.id`, null);\n selected = _.get(tabs, `${tabIndex}.children.${subTabIndex}.id`, null);\n } else if (tabIndex !== false && tabIndex !== null) {\n selected = _.get(tabs, `${tabIndex}.id`, null);\n }\n const currentTab = _.find(tabs, { id: selected });\n const { pageTitle, selectedMenuItem } = getTealiumDetailTabData({\n seriesData,\n tab: currentTab,\n });\n if (!didTriggerLeapfrogEvent && !isPersonality) {\n handleAnalytics({\n event: Events.DETAIL_PAGE_MENU_ITEM_VIEW,\n payload: {\n pageName: `detail:${pageType}:${utagSeriesType}:${pageTitle}`,\n pageType: `detail:${utagSeriesType}:menu`,\n selectedMenuItem,\n },\n });\n this.setState({ didTriggerLeapfrogEvent: true });\n }\n this.setState({ selected, selectedSubMenu });\n if (_.includes(pageType, 'season-') || isPersonality) {\n scrollToElement({\n slug: pageType,\n nodeFetcher: this.checkForDOMNode,\n duration: 10000,\n clearNodeFetcher: this.clearFetchNodeInterval,\n offsetTop: scrollOffsetTop,\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n const { isBrandingClicked, setIsBrandingClicked, tabs } = this.props;\n const { isBrandingClicked: prevIsBrandingClicked } = prevProps;\n const tabId = _.get(tabs, '0.id');\n if (!tabId) return;\n\n if (prevIsBrandingClicked !== isBrandingClicked) {\n this.setState({ selected: tabId });\n } else if (isBrandingClicked) {\n setIsBrandingClicked(false);\n }\n }\n\n createTabs({ tabs, isSubmenu = false }) {\n const {\n showId,\n noTabHomepage,\n seriesType,\n pageViewEvent,\n seriesData,\n utagSeriesType,\n togglePlaylist,\n playlist,\n tabIndex,\n isPersonality,\n } = this.props;\n const { selected, selectedSubMenu } = this.state;\n\n const listLinks = [];\n const slugs = [];\n const tabList = [];\n const playlistLinks = [];\n const videoContentList = [];\n\n tabs.forEach((tab, idx) => {\n if (!tab) return null;\n const { id: tabId, children, fullEpisodeCount } = tab;\n const tabType = _.get(tab, '@type', null);\n const isActiveTab = !this.isArticleWithoutTab() && selected === tabId;\n const hasEpisodes = fullEpisodeCount > 0;\n const tabClassActive = isActiveTab && Style.active;\n const tabClasses = classNames(Style.tab, tabClassActive);\n const name = getTabName({ tab, seriesType });\n const url = isPersonality\n ? getPersonalityTabUrl({ showId, tab, tabs, noTabHomepage, seriesType, isSubmenu })\n : getTabUrl({ showId, tab, tabs, noTabHomepage, seriesType, isSubmenu });\n const slug = isPersonality\n ? getPersonalityTabSlug({ tab, tabs, seriesType })\n : getTabSlug({ tab, tabs, seriesType });\n const { target, rel } = getUrlTarget(url);\n\n const onClick = () => {\n this.tabClick({ slug, tab });\n };\n const elementId = slug || tabId;\n if (elementId) {\n slugs.push(elementId);\n }\n\n const onClickAnalytics = () => {\n const { didTriggerLeapfrogEvent } = this.state;\n const { pageTitle, selectedMenuItem } = getTealiumDetailTabData({\n seriesData,\n tab,\n });\n pageViewEvent({\n pageName: PageNames.DETAIL,\n seriesType: utagSeriesType,\n pageTitle,\n selectedMenuItem,\n });\n if (!didTriggerLeapfrogEvent && !isPersonality) {\n handleAnalytics({\n event: Events.DETAIL_PAGE_MENU_ITEM_VIEW,\n payload: {\n pageName: `detail:${utagSeriesType}:${pageTitle}`,\n pageType: `detail:${utagSeriesType}:menu`,\n selectedMenuItem,\n },\n });\n this.setState({ didTriggerLeapfrogEvent: true });\n }\n };\n // Check if tab should be skipped here:\n const clipCount = _.get(tab, 'items.totalItems', null);\n if (tabType === PANEL_TYPE_CLIPS && clipCount === 0) return null;\n\n if (hasChildren(tab)) {\n _.forEach(_.get(tab, 'children'), childTab => {\n const childSlug = isPersonality\n ? getPersonalityTabSlug({ tab: childTab, tabs, seriesType })\n : getTabSlug({ tab: childTab, tabs, seriesType });\n const childUrl = isPersonality\n ? getPersonalityTabUrl({ showId, tab: childTab, tabs, noTabHomepage, seriesType })\n : getTabUrl({ showId, tab: childTab, tabs, noTabHomepage, seriesType });\n const childOnClick = () => {\n this.tabClick({ slug: childSlug, tab: childTab });\n };\n const childName = _.get(childTab, 'headline');\n tabList.push({\n id: _.get(childTab, 'id'),\n parentName: name,\n name: childName,\n tab: childTab,\n tabClasses,\n linkTo: childUrl,\n onClick: childOnClick,\n });\n });\n } else if (!isSeasonPanel(tab) || hasEpisodes) {\n tabList.push({\n id: tabId,\n name,\n tab,\n tabClasses,\n linkTo: url,\n onClick,\n });\n }\n\n if (SeasonPagesEnabled && isSeasonPanel(tab) && hasEpisodes) {\n const isSelected = tabIndex === idx;\n videoContentList.push({\n linkTo: url,\n name,\n onClick: () => {\n onClick();\n onClickAnalytics();\n },\n isSelected,\n });\n } else if (isPlaylist(tab)) {\n if (playlistLinks.length === 0) {\n const arrow = (\n <Icon color=\"white\" icon={playlist ? 'keyboard-arrow-up' : 'keyboard-arrow-down'} />\n );\n // @todo: get the Clips text from the Language Object.\n listLinks.push(\n <li key={`list-${tabId}`}>\n <Link\n key={tabId}\n className={classNames(tabClasses, Style.clips)}\n target={target}\n rel={rel}\n onClick={() => {\n if (togglePlaylist) togglePlaylist();\n }}\n >\n <span>Clips</span>\n <span className={Style.caret}>{arrow}</span>\n </Link>\n {this.renderPlaylistLinks(playlistLinks)}\n </li>,\n );\n }\n playlistLinks.push(\n <li key={`playlist-${tabId}`}>\n <Link\n className={classNames(tabClasses, Style.playlistItem)}\n to={url}\n target={target}\n rel={rel}\n onClick={() => {\n if (onClick) onClick();\n onClickAnalytics();\n }}\n >\n {name}\n </Link>\n </li>,\n );\n } else if (hasChildren(tab)) {\n const { listLinks: childListLinks, slugs: childSlugs } = this.createTabs({\n tabs: children,\n isSubmenu: true,\n });\n _.forEach(childSlugs, childSlug => slugs.push(childSlug));\n const subMenuOpen = selectedSubMenu === tabId;\n const subMenuOpenClass = subMenuOpen ? Style.open : null;\n const subMenuClasses = classNames(Style.subMenu, subMenuOpenClass);\n const subMenuIcon = (\n <Icon\n theme={Style}\n color=\"white\"\n viewBox=\"5 5 14 14\"\n icon={subMenuOpen ? 'keyboard-arrow-up' : 'keyboard-arrow-down'}\n />\n );\n listLinks.push(\n <div>\n <Link\n key={`link-${tabId}`}\n className={tabClasses}\n target={target}\n rel={rel}\n onClick={() => {\n onClick();\n onClickAnalytics();\n }}\n >\n {name} {subMenuIcon}\n </Link>\n <div className={subMenuClasses}>{childListLinks}</div>\n </div>,\n );\n } else if ((onClick && !isSeasonPanel(tab)) || !SeasonPagesEnabled) {\n listLinks.push(\n <Link\n key={`link-${tabId}`}\n className={tabClasses}\n to={url}\n target={target}\n rel={rel}\n onClick={() => {\n onClick();\n onClickAnalytics();\n }}\n >\n {name}\n </Link>,\n );\n } else if (!isSeasonPanel(tab)) {\n listLinks.push(\n <li key={`list-${tabId}`}>\n <Link\n key={tabId}\n className={tabClasses}\n to={url}\n target={target}\n rel={rel}\n onClick={onClickAnalytics}\n >\n {name}\n </Link>\n </li>,\n );\n }\n return null;\n });\n return {\n listLinks,\n playlistLinks,\n videoContentList,\n slugs,\n tabList,\n };\n }\n\n isArticleWithoutTab() {\n const { pageType, tabIndex } = this.props;\n const isArticleWithoutTab = tabIndex === false && pageType === PAGE_TYPE_ARTICLE;\n return isArticleWithoutTab;\n }\n\n tabClick({ slug, tab, ignoreScroll }) {\n const { breakpoint } = this.props;\n const { tabListSidebar, scrollOffsetTop, scrollOffsetTopArticle } = BREAKPOINTS[breakpoint];\n const { id: tabId } = tab;\n if (tabListSidebar && hasChildren(tab)) {\n this.toggleSubMenu(tabId);\n } else {\n this.setState({ selected: tabId });\n }\n const scrollElement = slug || tabId;\n const offsetTop = isArticleTab(tab) ? scrollOffsetTopArticle : scrollOffsetTop;\n\n if (scrollElement && !ignoreScroll) {\n scrollToElement({\n slug: scrollElement,\n nodeFetcher: this.checkForDOMNode,\n duration: 10000,\n clearNodeFetcher: this.clearFetchNodeInterval,\n offsetTop,\n });\n }\n }\n\n toggleSubMenu(tabId) {\n const { selectedSubMenu } = this.state;\n const newSelectedSubMenu = selectedSubMenu === tabId ? null : tabId;\n this.setState({ selectedSubMenu: newSelectedSubMenu });\n }\n\n renderDesktopTablist({ listLinks, videoContentList, slugs }) {\n const { didTriggerLeapfrogEvent, selected } = this.state;\n const {\n tabs,\n showId: showCode,\n isPersonality,\n seriesData,\n utagSeriesType,\n favoriteButton,\n socialLinks,\n } = this.props;\n const currentTab = _.find(tabs, { id: selected });\n const seasonTab = isSeasonPanel(currentTab);\n\n return (\n <Scrollspy\n onUpdate={el => {\n if (el && (isPersonality || seasonTab)) {\n const baseUrl = isPersonality\n ? helperGetPersonalityUrl(showCode)\n : helperGetShowUrl(showCode);\n const newElementId = _.get(el, 'id');\n const newTabId = el.getAttribute('data-tab-id');\n const firstTabId = _.get(tabs, '0.id', null);\n const params = _.get(window.location, 'search').replace(Regex.TRAILING_SLASH, '');\n const firstTab = isPersonality ? newTabId === firstTabId : newElementId === newTabId;\n const nextPath = firstTab\n ? `${baseUrl}${params}`\n : `${baseUrl}${newElementId}/${params}`;\n browserHistory.replace(nextPath);\n this.setState({ selected: newTabId });\n const newTabItem = _.find(tabs, { id: newTabId });\n const { pageTitle, selectedMenuItem } = getTealiumDetailTabData({\n seriesData,\n tab: newTabItem,\n });\n if (!didTriggerLeapfrogEvent && !isPersonality) {\n handleAnalytics({\n event: Events.DETAIL_PAGE_MENU_ITEM_VIEW,\n payload: {\n pageName: `detail:${utagSeriesType}:${pageTitle}`,\n pageType: `detail:${utagSeriesType}:menu`,\n selectedMenuItem,\n },\n });\n this.setState({ didTriggerLeapfrogEvent: true });\n }\n }\n }}\n items={slugs}\n offset={-200}\n ref={el => {\n this.scrollSpyContainer = el;\n }}\n >\n <li className={classNames(Style.favoriteButton, Style.actionButtons)}>{favoriteButton}</li>\n {this.renderVideoContentTabs(videoContentList)}\n {listLinks}\n <li className={Style.actionButtons}>{socialLinks}</li>\n </Scrollspy>\n );\n }\n\n renderPlaylistLinks(playlistLinks) {\n const { playlist } = this.props;\n return (\n playlist && (\n <li className={Style.playlistContainer}>\n <div className={Style.playlist}>\n <ul>{playlistLinks}</ul>\n </div>\n </li>\n )\n );\n }\n\n renderVideoContentTabs(videoContentList) {\n if (_.isEmpty(videoContentList)) return null;\n\n if (videoContentList.length === 1) {\n const { linkTo, name, onClick, isSelected } = videoContentList[0];\n const tabClasses = [Style.tab];\n if (isSelected) tabClasses.push(Style.active);\n const { target, rel } = getUrlTarget(linkTo);\n return (\n <li key={`list-${name}`}>\n <Link\n key={name}\n className={classNames(tabClasses)}\n to={linkTo}\n target={target}\n rel={rel}\n onClick={onClick}\n >\n {name}\n </Link>\n </li>\n );\n }\n\n const { tabIndex, tabs } = this.props;\n const { videoContentDropdownOpen } = this.state;\n const dropdownLabel = _.some(tabs, 'headline') ? 'global_dropdownLabel' : 'global_seasonsLabel';\n const defaultText = _.get(window.Language, dropdownLabel);\n const toggleDropdown = val => this.setState({ videoContentDropdownOpen: val });\n const selected = _.get(videoContentList, `${tabIndex}.name`);\n const containerClass = selected ? seasonDropdownTheme.isActive : null;\n return (\n <Dropdown\n className={containerClass}\n defaultText={defaultText}\n displayResults={videoContentDropdownOpen}\n expanded={videoContentDropdownOpen}\n getIcon={onClick => <DropdownIcon onClick={onClick} />}\n items={videoContentList}\n onCloseDropdown={() => {\n toggleDropdown(false);\n }}\n onOpenDropdown={() => {\n toggleDropdown(true);\n }}\n preserveTitle={videoContentDropdownOpen}\n selected={selected}\n theme={seasonDropdownTheme}\n />\n );\n }\n\n render() {\n const {\n breakpoint,\n className,\n isPersonality,\n pageId,\n overlay,\n setOverlay,\n tabIndex,\n tabs,\n } = this.props;\n const { tabListSidebar, disableHardwareAcceleration } = BREAKPOINTS[breakpoint];\n\n const { listLinks, playlistLinks, videoContentList, slugs, tabList } = this.createTabs({\n tabs,\n });\n\n let tabListComponent = null;\n if (tabListSidebar) {\n tabListComponent = (\n <Sticky\n topOffset={-80}\n data-testid=\"sticky\"\n style={disableHardwareAcceleration && { transform: 'initial' }}\n >\n {this.renderDesktopTablist({ listLinks, playlistLinks, videoContentList, slugs })}\n </Sticky>\n );\n } else {\n tabListComponent = !_.isEmpty(tabList) && (\n <TabListMobile\n tabs={tabList}\n overlay={overlay}\n setOverlay={setOverlay}\n tabIndex={tabIndex}\n pageId={pageId}\n isPersonality={isPersonality}\n />\n );\n }\n\n const containerClassNames = classNames([\n Style.tabList,\n className,\n !tabListComponent && Style.noTabs,\n ]);\n return <div className={containerClassNames}>{tabListComponent}</div>;\n }\n}\n\nTabList.defaultProps = {\n className: null,\n favoriteButton: null,\n isBrandingClicked: false,\n isPersonality: false,\n noTabHomepage: null,\n overlay: null,\n pageId: null,\n pageType: null,\n pageViewEvent: () => {},\n playlist: null,\n seriesData: {},\n seriesType: null,\n setIsBrandingClicked: () => {},\n socialLinks: null,\n subTabIndex: null,\n tabIndex: false,\n togglePlaylist: () => {},\n utagSeriesType: '',\n};\n\nTabList.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n className: PropTypes.string,\n favoriteButton: PropTypes.shape({}),\n isBrandingClicked: PropTypes.bool,\n isPersonality: PropTypes.bool,\n noTabHomepage: PropTypes.string,\n overlay: PropTypes.string,\n pageId: PropTypes.string,\n pageType: PropTypes.string,\n pageViewEvent: PropTypes.func,\n playlist: PropTypes.bool,\n seriesData: PropTypes.shape({}),\n seriesType: PropTypes.string,\n setIsBrandingClicked: PropTypes.func,\n setOverlay: PropTypes.func.isRequired,\n showId: PropTypes.string.isRequired,\n socialLinks: PropTypes.shape({}),\n subTabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n tabs: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n togglePlaylist: PropTypes.func,\n utagSeriesType: PropTypes.string,\n};\n\nexport default TabList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { isClip, isEpisode } from 'helpers/ContentHelper';\nimport { isSeriesCollection } from '../../../../SeriesDetailHelpers';\n\nexport const Header = props => {\n const { style, videoType, currentSeason, seriesType, tabName, videosList, newsHeadline } = props;\n const { seriesDetail_clipsHeader: clipsHeaderText } = window.Language;\n const showsHeaderText = currentSeason && `Season ${currentSeason}`;\n let headerClass;\n let headerTitle;\n\n if (isSeriesCollection(seriesType)) {\n headerClass = style.headerTitle;\n headerTitle = tabName || showsHeaderText;\n } else if (isEpisode(videoType)) {\n headerClass = style.seasonTitle;\n headerTitle = newsHeadline || showsHeaderText;\n } else if (isClip(videoType)) {\n headerClass = style.headerTitle;\n headerTitle = clipsHeaderText;\n }\n\n const showHeader = headerClass && headerTitle && videosList.length > 0;\n\n if (!showHeader) return null;\n\n return (\n <div data-test=\"videos-tab-header\">\n <h2 data-test=\"videos-tab-header-title\" className={headerClass}>\n {headerTitle}\n </h2>\n </div>\n );\n};\n\nHeader.defaultProps = {\n currentSeason: null,\n newsHeadline: null,\n seriesType: null,\n style: {},\n tabName: null,\n videosList: [],\n videoType: {},\n};\n\nHeader.propTypes = {\n currentSeason: PropTypes.number,\n newsHeadline: PropTypes.string,\n seriesType: PropTypes.string,\n style: PropTypes.shape({}),\n tabName: PropTypes.string,\n videosList: PropTypes.arrayOf(PropTypes.shape({})),\n videoType: PropTypes.shape({}),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Icon from 'components/Icon';\nimport Style from './FirstTile.module.scss';\n\nconst SeriesPromo = ({ description = null, ctaData = [] }) => (\n <div className={Style.promoDescription}>\n {description}\n <div className={Style.promoCTAContainer}>\n {ctaData.map(({ icon, text, url, onClick: handleClick }) => (\n <Link className={Style.defaultLinkButton} key={text} to={url} onClick={handleClick}>\n {icon && <Icon color=\"white\" icon={icon} />}\n {text}\n </Link>\n ))}\n </div>\n </div>\n);\n\nSeriesPromo.propTypes = {\n description: PropTypes.string.isRequired,\n ctaData: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n};\n\nexport default SeriesPromo;\n","/* global SeriesPromotionEnabled */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport {\n formatMetadata,\n formatRating,\n formatSeasonEpisode,\n formatSubRatings,\n} from 'helpers/VideoHelper';\nimport Tile from 'components/TileLegacy';\nimport VideoModal from 'components/VideoModal';\nimport { SHOW_DETAIL_FIRST_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { seriesVideoProcessor } from 'helpers/VideoProcessorHelper';\nimport { helperGetRelativeUrl, helperGetSeriesDetailUrl } from 'helpers/RouteHelper';\nimport { OVERLAY_VIDEO_MODAL } from 'helpers/FilterHelper';\nimport {\n getRequiresAuth,\n getSeasonEpisodeCounts,\n getPreviewVideoCTAText,\n} from 'helpers/ContentHelper';\nimport { handleTealiumSeriesButtonAction } from '@foxcorp/delta-web-analytics';\nimport {\n getSeasonCount,\n TILE_TYPE_CONTINUE_WATCHING,\n TILE_TYPE_LATEST,\n TILE_TYPE_LIVE,\n TILE_TYPE_LATEST_PERSONALITY,\n TILE_TYPE_SERIES_PROMO,\n} from 'screens/SeriesDetail/SeriesDetailHelpers';\nimport SeriesPromo from './SeriesPromo';\nimport Style from './FirstTile.module.scss';\n\nconst RESUME_TEXT = 'Resume';\n\nclass FirstTile extends Component {\n constructor(props) {\n super(props);\n this.state = {\n shouldRenderVideoModal: false,\n videoModalId: null,\n };\n this.toggleVideoModal = this.toggleVideoModal.bind(this);\n }\n\n toggleVideoModal({ id }) {\n const { shouldRenderVideoModal: prevShouldRender } = this.state;\n const { setOverlay } = this.props;\n if (prevShouldRender) {\n this.setState({\n shouldRenderVideoModal: false,\n videoModalId: null,\n });\n setOverlay(OVERLAY_VIDEO_MODAL, false);\n } else {\n this.setState(\n {\n shouldRenderVideoModal: true,\n videoModalId: id,\n },\n () => {\n setOverlay(OVERLAY_VIDEO_MODAL);\n },\n );\n }\n }\n\n renderVideoModal() {\n const { isAuthenticated, seriesData, tabs, videoModalProps } = this.props;\n const { shouldRenderVideoModal, videoModalId } = this.state;\n if (!shouldRenderVideoModal) return null;\n\n const oldestEpisode = _.get(seriesData, 'oldestEpisode');\n const name = _.get(seriesData, 'name');\n const seasonCount = getSeasonCount({ tabs });\n const episodeCount = _.get(seriesData, 'fullEpisodeCount', null);\n const showSubtitle = getSeasonEpisodeCounts({ seasonCount, episodeCount, useComma: true });\n const rating = formatRating(_.get(oldestEpisode, 'contentRating'));\n const subRating = formatSubRatings(_.get(oldestEpisode, 'subRatings'));\n const formattedRating = rating || subRating ? `${rating} ${subRating}` : null;\n const metadata = formatMetadata([formattedRating]);\n const description = _.get(seriesData, 'description');\n const showCode = _.get(seriesData, 'showCode');\n const seriesType = _.get(seriesData, 'seriesType');\n const titleLink = helperGetSeriesDetailUrl(showCode);\n\n const trailerPSU = _.get(oldestEpisode, 'playerScreenUrl');\n const watchLink = helperGetRelativeUrl({ url: trailerPSU });\n const episodeNumber = _.get(oldestEpisode, 'episodeNumber');\n const seasonNumber = _.get(oldestEpisode, 'seasonNumber');\n const seriesSeasonEpisode = formatSeasonEpisode(seasonNumber, episodeNumber);\n const requiresAuth = getRequiresAuth({ video: oldestEpisode });\n const lockButtons = requiresAuth && !isAuthenticated;\n\n const videoData = {\n name,\n showSubtitle,\n metadata,\n description,\n lockButtons,\n seriesSeasonEpisode,\n seriesType,\n showCode,\n titleLink,\n watchLink,\n };\n\n return (\n <VideoModal\n {...videoModalProps}\n data-test=\"first-tile-video-modal\"\n toggleVideoModal={this.toggleVideoModal}\n videoData={videoData}\n videoId={videoModalId}\n />\n );\n }\n\n render() {\n const {\n account,\n breakpoint,\n displayUpsellCTA,\n isSingleEpisode,\n onClick,\n onLiveClick,\n seriesData,\n tabs,\n type,\n video,\n } = this.props;\n const {\n seriesDetail_latestEpisodeHeader: latestEpisodeHeaderText,\n global_startWatchingButton: startWatchingText,\n global_watchButton: watchText,\n global_watchLiveButton: watchLiveText,\n global_restartButton: restartText,\n global_watchNowButton: watchNowText,\n } = window.Language;\n\n if (!video) return null;\n\n const isLatestPersonality = type === TILE_TYPE_LATEST_PERSONALITY;\n const isLatest = type === TILE_TYPE_LATEST;\n const isLive = type === TILE_TYPE_LIVE;\n const isContinueWatching = type === TILE_TYPE_CONTINUE_WATCHING;\n const isSeriesPromo = type === TILE_TYPE_SERIES_PROMO;\n\n const seriesName = _.get(video, 'seriesName');\n const episodeName = _.get(video, 'name');\n const videoDescription = _.get(video, 'description');\n const seriesDescription = _.get(seriesData, 'description');\n const description = isSeriesPromo ? seriesDescription : videoDescription;\n const item = { ...video, displayUpsellCTA };\n const tileProps = seriesVideoProcessor({ item, isLive });\n const tileType = !isSingleEpisode ? 'tile-image-left' : null;\n const divider = !isSingleEpisode && <hr className={Style.hr} />;\n const containerStyle = isSingleEpisode ? Style.single : '';\n\n const seasonCount = getSeasonCount({ tabs });\n const episodeCount = _.get(seriesData, 'fullEpisodeCount', null);\n const seasonEpisodeHeaderText = getSeasonEpisodeCounts({ seasonCount, episodeCount });\n const displaySeasonAndEpisodeCounts = _.get(video, 'displaySeasonAndEpisodeCounts', true);\n const headerClasses = [Style.header];\n let headerText;\n if (isLatestPersonality) {\n const divider = seriesName && episodeName ? ' | ' : '';\n headerText = `${seriesName}${divider}${episodeName}`;\n } else if (isLive || isLatest) {\n headerText = latestEpisodeHeaderText;\n } else if (displaySeasonAndEpisodeCounts) {\n headerText = seasonEpisodeHeaderText;\n headerClasses.push(Style.uppercase);\n }\n const showHeader =\n headerText &&\n !isSingleEpisode &&\n (isLive || isLatest || isSeriesPromo || isLatestPersonality);\n const tileHeader = showHeader && <h2 className={classNames(headerClasses)}>{headerText}</h2>;\n\n const seasonNumber = _.get(video, 'seasonNumber');\n const episodeNumber = _.get(video, 'episodeNumber');\n let startWatchingButtonText;\n if (displaySeasonAndEpisodeCounts) {\n startWatchingButtonText =\n seasonNumber && episodeNumber\n ? `${startWatchingText} S${seasonNumber} E${episodeNumber}`\n : startWatchingText;\n } else {\n startWatchingButtonText = watchNowText;\n }\n const previewVideoPlayerScreenUrl = _.get(seriesData, 'previewVideo.member[0].playerScreenUrl');\n const previewVideoId = _.get(seriesData, 'previewVideo.member[0].id');\n const percentWatched = _.get(video, 'percentWatched', 0);\n const continueWatchingFromStart = isContinueWatching && percentWatched === 0;\n const actionButtons = [];\n\n const seriesPromoClickTracking = text => {\n if (!isSeriesPromo) return null;\n const trackClickProps = {\n subtitle: _.get(video, 'name'),\n collectionTitle: headerText,\n account,\n series: _.get(seriesData, 'name'),\n };\n return handleTealiumSeriesButtonAction({\n text,\n ...trackClickProps,\n });\n };\n\n if (SeriesPromotionEnabled) {\n if (isLive) {\n actionButtons.push({\n icon: 'restart-double',\n text: restartText,\n url: `${tileProps.link}mode/restart`,\n });\n actionButtons.push({\n icon: null,\n text: watchLiveText,\n url: tileProps.liveLink,\n onClick: () => {\n onLiveClick(video);\n },\n });\n } else if (continueWatchingFromStart || isLatest || isLatestPersonality) {\n actionButtons.push({\n icon: 'play-button',\n text: watchText,\n url: tileProps.link,\n });\n } else if (isContinueWatching) {\n actionButtons.push({\n icon: 'restart-double',\n text: restartText,\n url: `${tileProps.link}mode/restart`,\n });\n actionButtons.push({\n icon: null,\n text: RESUME_TEXT,\n url: tileProps.link,\n });\n } else if (isSeriesPromo) {\n actionButtons.push({\n icon: 'play-button',\n text: startWatchingButtonText,\n url: tileProps.link,\n onClick: () => seriesPromoClickTracking(startWatchingButtonText),\n });\n if (previewVideoPlayerScreenUrl) {\n actionButtons.push({\n icon: null,\n text: getPreviewVideoCTAText(seriesData),\n url: null,\n onClick: () => {\n this.toggleVideoModal({ id: previewVideoId });\n },\n });\n }\n }\n }\n\n const renderDescription = (\n <SeriesPromo\n ctaData={actionButtons}\n data-testid=\"first-tile-promo\"\n description={description}\n />\n );\n\n const renderTile = (\n <Tile\n {...tileProps}\n tileType={tileType}\n theme={Style}\n onTileClick={onClick}\n onTitleClick={onClick}\n renderImage={image =>\n renderImage({\n breakpoint,\n imageType: SHOW_DETAIL_FIRST_THUMBNAIL_IMAGE,\n ...image,\n })\n }\n itemIndex={0}\n disableHoverStateActionButtons\n data-test=\"first-tile\"\n ctaData={displayUpsellCTA ? [] : actionButtons}\n ctaPosition=\"end\"\n firstTile\n />\n );\n\n return (\n <div className={containerStyle}>\n {tileHeader}\n {isSeriesPromo || isLatestPersonality ? renderDescription : renderTile}\n {divider}\n {this.renderVideoModal()}\n </div>\n );\n }\n}\n\nFirstTile.defaultProps = {\n account: null,\n breakpoint: null,\n displayUpsellCTA: false,\n isAuthenticated: false,\n isSingleEpisode: null,\n onClick: () => {},\n onLiveClick: () => {},\n seriesData: null,\n setOverlay: () => {},\n tabs: null,\n type: null,\n video: null,\n videoModalProps: {},\n};\n\nFirstTile.propTypes = {\n account: PropTypes.shape({}),\n breakpoint: PropTypes.string,\n displayUpsellCTA: PropTypes.bool,\n isAuthenticated: PropTypes.bool,\n isSingleEpisode: PropTypes.bool,\n onClick: PropTypes.func,\n onLiveClick: PropTypes.func,\n seriesData: PropTypes.shape({}),\n setOverlay: PropTypes.func,\n tabs: PropTypes.arrayOf(PropTypes.shape({})),\n type: PropTypes.string,\n video: PropTypes.shape({}),\n videoModalProps: PropTypes.shape({}),\n};\n\nexport default FirstTile;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { plurarize } from 'helpers/ContentHelper';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport Style from './UpsellBanner.module.scss';\n\nclass UpsellBanner extends Component {\n componentDidMount() {\n const { display, inline } = this.props;\n const showInfo = _.get(inline, 'items.member.0');\n const { upsellPromoTitle1, upsellPromoTitle2, upsellPromoButton } = window.Language;\n if (display && showInfo) {\n handleAnalytics({\n event: Events.BANNER_NOTIFICATION_IMPRESSION,\n payload: {\n page_message_title: `${upsellPromoTitle1} ${_.get(\n showInfo,\n 'name',\n )} ${upsellPromoTitle2}`,\n page_message_text: this.getSubtitle(),\n page_message_type: upsellPromoButton,\n },\n });\n }\n }\n\n getSubtitle() {\n const { inline } = this.props;\n const fullEpisodeCount = _.get(inline, 'items.member.0.fullEpisodeCount', null);\n const seasonCount = _.get(inline, 'items.member.0.seasonCount', null);\n const {\n global_episodeButton: episodeLabel,\n global_episodesButton: episodesLabel,\n seriesDetail_seasonLabel: seasonLabel,\n seriesDetail_seasonsLabel: seasonsLabel,\n } = window.Language;\n const hasLabels = episodeLabel && episodesLabel && seasonLabel && seasonsLabel;\n if (!fullEpisodeCount || !seasonCount || !hasLabels) return null;\n const seasonText = plurarize({\n count: seasonCount,\n singular: seasonLabel,\n plural: seasonsLabel,\n });\n const episodeText = plurarize({\n count: fullEpisodeCount,\n singular: episodeLabel,\n plural: episodesLabel,\n });\n return `${seasonText} ${episodeText}`;\n }\n\n onBannerClick = e => {\n const { inline } = this.props;\n const { name } = _.get(inline, 'items.member.0');\n const { upsellPromoTitle1, upsellPromoTitle2, upsellPromoButton } = window.Language;\n handleAnalytics(\n {\n event: Events.UPGRADE_NOW_BUTTON_CLICKED,\n payload: {\n page_item_title: `${upsellPromoTitle1} ${name} ${upsellPromoTitle2}`,\n page_action_location: 'detail page',\n },\n },\n {\n event: Events.BANNER_NOTIFICATION_ACTION,\n payload: {\n page_message_title: `${upsellPromoTitle1} ${name} ${upsellPromoTitle2}`,\n page_message_text: this.getSubtitle(),\n page_message_type: upsellPromoButton,\n page_action_type: upsellPromoButton,\n },\n },\n );\n return null;\n };\n\n renderSubtitle() {\n return <small className={Style.subtitle}>{this.getSubtitle()}</small>;\n }\n\n render() {\n const { display, inline } = this.props;\n const showInfo = _.get(inline, 'items.member.0');\n const { upsellPromoTitle1, upsellPromoTitle2, upsellPromoButton } = window.Language;\n const hasLabels = upsellPromoTitle1 && upsellPromoTitle2 && upsellPromoButton;\n if (!display || !showInfo || !hasLabels) return null;\n const { name } = showInfo;\n return (\n <div className={Style.container} data-test=\"upsell-banner\">\n <strong\n className={Style.title}\n >{`${upsellPromoTitle1} ${name} ${upsellPromoTitle2}`}</strong>\n {this.renderSubtitle()}\n <button onClick={e => this.onBannerClick(e)} className={Style.button} type=\"button\">\n {upsellPromoButton}\n </button>\n </div>\n );\n }\n}\n\nUpsellBanner.defaultProps = {\n display: false,\n inline: {},\n};\n\nUpsellBanner.propTypes = {\n display: PropTypes.bool,\n inline: PropTypes.shape({}),\n};\n\nexport default UpsellBanner;\n","/* global EpgEnabled, SeriesPromotionEnabled */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport TileGrid from 'components/TileGrid';\nimport Panel from 'components/Panel';\nimport ReactTimeout from 'react-timeout';\nimport InfiniteScroll from 'react-infinite-scroller';\nimport Loader from 'components/Loader';\nimport {\n seriesVideoProcessor,\n clipsVideoProcessor,\n seriesCollectionVideoProcessor,\n watchPlaylistVideoProcessor,\n} from 'helpers/VideoProcessorHelper';\nimport { SHOW_DETAIL_RELATED_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { helperGetApiHeaders, helperConvertApiRoute } from 'helpers/ApiHelper';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport { isClip, isEpisode, isLive } from 'helpers/ContentHelper';\nimport {\n BUILD_VERSION,\n callTealiumEvent,\n Events,\n getSegmentModelMetadata,\n handleAnalytics,\n SegmentActionLocations,\n setTealiumProfileId,\n setTealiumProfileStartSource,\n setTealiumSourceAuth,\n setTealiumSourceShow,\n TEALIUM_EVENT_PREFIX,\n} from '@foxcorp/delta-web-analytics';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { getTheme, webThemeIds } from 'helpers/ThemeHelper';\nimport { Header } from './components/Header';\nimport FirstTile from './components/FirstTile';\nimport UpsellBanner from './components/UpsellBanner';\nimport {\n getTabName,\n isSeriesCollection,\n TILE_TYPE_CONTINUE_WATCHING,\n TILE_TYPE_LATEST,\n TILE_TYPE_LIVE,\n TILE_TYPE_LATEST_PERSONALITY,\n TILE_TYPE_SERIES_PROMO,\n} from '../../SeriesDetailHelpers';\nimport style from './styles/VideosTab.css';\nimport seriesCollectionTileStyle from './styles/seriesCollectionVideoTiles.css';\n\nconst videoTileStyle = getTheme(webThemeIds.SeriesDetail.VideosTab.VideoTile);\n\nconst FETCH_NEW_CONTENT_INTERVAL_MS = 1000 * 60 * 30;\nconst getProcessor = ({ videoType, seriesType, playlist }) => {\n if (playlist) return watchPlaylistVideoProcessor.bind(this, playlist);\n if (isSeriesCollection(seriesType)) return seriesCollectionVideoProcessor;\n\n switch (videoType) {\n case isEpisode(videoType):\n return seriesVideoProcessor;\n case isClip(videoType):\n return clipsVideoProcessor;\n default:\n return seriesVideoProcessor;\n }\n};\n\nclass VideosTab extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.renderTab = this.renderTab.bind(this);\n }\n\n componentDidMount() {\n const { setInterval } = this.props;\n const refreshContent = () => {\n this.panel.refreshContent();\n };\n setInterval(refreshContent, FETCH_NEW_CONTENT_INTERVAL_MS);\n this.targetDiv?.addEventListener('scroll', this.handleScroll);\n }\n\n componentWillUnmount() {\n this.targetDiv?.removeEventListener('scroll', this.handleScroll);\n }\n\n handleScroll = () => {\n const { fetching, fetchingPage, scrolling, hasMoreItems } = this.props;\n const isLoading = fetching || fetchingPage;\n const hasMore = hasMoreItems !== false && !scrolling;\n if (scrolling || isLoading || !this.panel || !hasMore) return;\n this.panel.fetchNextPage();\n };\n\n tealiumAuthStart = () => {\n const { account } = this.props;\n const action = 'authentication_start';\n const profileId = _.get(account, 'profileId');\n const authStartSource = 'series_detail_page';\n setTealiumSourceAuth(authStartSource);\n setTealiumProfileStartSource('detail page');\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n platform_version: BUILD_VERSION,\n profile_start_source: 'detail page',\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n setTealiumSourceAuth(authStartSource);\n };\n\n toggleMvpdAuthOverlay = ({ e, text, show = true, buttonType }) => {\n e.stopPropagation();\n const { isAuthenticated, toggleMvpdAuthOverlay } = this.props;\n const options = {\n onAuthCheckComplete: this.redirectOnAuthCheckComplete,\n onOverlayClose: () => {\n toggleMvpdAuthOverlay(false);\n },\n showEmailForm: true,\n showLoaderAfterAuth: true,\n showUpsellProgressBar: true,\n upsellRedirectOnProviderClick: true,\n };\n if (show && !isAuthenticated) this.tealiumAuthStart();\n toggleMvpdAuthOverlay(show, options);\n };\n\n renderTab(tab) {\n const {\n account,\n authCheckComplete,\n authSuccess,\n breakpoint,\n continueWatching,\n fetching,\n fetchingPage,\n hasMoreItems,\n highlightFirstVideo,\n inline,\n isAuthenticated,\n isPersonality,\n latestEpisode,\n liveLatestEpisode,\n oldestEpisode,\n paginationItems,\n playlist,\n preauthorizedResources,\n renderFirstTile,\n saveLiveVideo,\n scrolling,\n seriesData,\n seriesType,\n setOverlay,\n tab: parentTab,\n tabName,\n tabSlug,\n tabs,\n videoModalProps,\n } = this.props;\n\n const { upsellPromoButton } = window.Language;\n const parentId = _.get(parentTab, 'id', null);\n const clips = _.get(tab, 'items.member', []);\n const videos = _.get(tab, 'member', clips);\n const headline = _.get(tab, 'headline');\n const newsHeadline = _.get(parentTab, 'headline');\n if (!videos || videos.length === 0) return null;\n const seo = _.get(tab, 'SEO');\n const videoType = _.get(videos, '0.videoType');\n const currentSeason = _.get(videos, '0.seasonNumber');\n const processor = getProcessor({ videoType, seriesType, playlist, breakpoint });\n const tileStyle = isSeriesCollection(seriesType) ? seriesCollectionTileStyle : videoTileStyle;\n const onLiveClick = video => {\n if (!EpgEnabled) saveLiveVideo(video);\n };\n const onClick = params => {\n const { originalItem, titleText: subtitle, uiElement } = params;\n let currentTabName = getTabName({ tab, seriesType });\n if (!currentTabName) currentTabName = getTabName({ tab: parentTab, seriesType });\n const title = _.get(originalItem, 'seriesName');\n handleAnalytics(\n {\n event: Events.PLAYLIST_BUTTON_ACTION,\n payload: {\n page_action_type: 'Watch Now',\n page_collection_title: currentSeason ? `Season ${currentSeason}` : '',\n page_item_title: title,\n page_item_subtitle: subtitle,\n page_action_location: SegmentActionLocations.DETAIL,\n page_ui_element: uiElement,\n ...getSegmentModelMetadata(),\n },\n },\n {\n event: Events.MENU_ITEM_SELECTED,\n payload: {\n page_category_title: currentTabName,\n page_item_title: title,\n page_item_subtitle: subtitle,\n },\n },\n );\n setTealiumSourceShow(true);\n if (isLive(_.get(originalItem, '@type'))) onLiveClick(originalItem);\n };\n\n const flattenedPaginationItems = _.flatten(paginationItems);\n const shouldDisplayUpsellCTA = false;\n\n let videosList = [...videos, ...flattenedPaginationItems];\n videosList = videosList.map(\n item =>\n item &&\n Object.assign(\n {\n isAuthenticated,\n preauthorizedResources,\n },\n item,\n ),\n );\n const isSingleEpisode = videosList.length === 1 && !isPersonality;\n const showcaseLatest = _.get(seriesData, 'showcaseOrder') === 'latest';\n\n let firstVideo = null;\n let firstTileType = null;\n if (isSingleEpisode && renderFirstTile) {\n firstVideo = _.get(videosList, '0');\n videosList = videosList.slice(1);\n firstTileType = TILE_TYPE_LATEST;\n } else if (!highlightFirstVideo || !renderFirstTile) {\n firstVideo = null;\n } else if (showcaseLatest) {\n firstVideo = _.get(videosList, '0');\n videosList = videosList.slice(1);\n firstTileType = TILE_TYPE_LATEST;\n } else if (isPersonality && latestEpisode) {\n firstVideo = latestEpisode;\n firstTileType = TILE_TYPE_LATEST_PERSONALITY;\n } else if (liveLatestEpisode) {\n firstVideo = liveLatestEpisode;\n firstTileType = TILE_TYPE_LIVE;\n const liveLatestEpisodeSeason = _.get(liveLatestEpisode, 'seasonNumber');\n const liveLatestEpisodeNumber = _.get(liveLatestEpisode, 'episodeNumber');\n _.remove(\n videosList,\n v =>\n v.seasonNumber === liveLatestEpisodeSeason && v.episodeNumber === liveLatestEpisodeNumber,\n );\n } else if (continueWatching) {\n firstVideo = continueWatching;\n firstTileType = TILE_TYPE_CONTINUE_WATCHING;\n } else if (SeriesPromotionEnabled && !_.isEmpty(oldestEpisode)) {\n firstVideo = oldestEpisode;\n firstTileType = TILE_TYPE_SERIES_PROMO;\n } else if (isEpisode(videoType)) {\n // Default to latest episode if not SeriesPromotionEnabled\n firstVideo = _.get(videosList, '0');\n videosList = videosList.slice(1);\n firstTileType = TILE_TYPE_LATEST;\n }\n\n const percentWatched = _.get(firstVideo, 'percentWatched');\n if (firstTileType === TILE_TYPE_LATEST && percentWatched) {\n firstTileType = TILE_TYPE_CONTINUE_WATCHING;\n }\n\n const seriesHeader =\n isPersonality && headline && videosList.length ? (\n <div className={style.seriesHeader}>{headline}</div>\n ) : null;\n const renderTileGrid = videosList.length > 0;\n const ctaText = upsellPromoButton;\n const tileGridProps = {\n context: 'seriesDetail',\n items: videosList,\n processor,\n gridType: 'grid-2-1',\n disableHoverStateActionButtons: true,\n renderImage: image =>\n renderImage({\n breakpoint,\n imageType: SHOW_DETAIL_RELATED_THUMBNAIL_IMAGE,\n ...image,\n }),\n tileDetailToggle: false,\n tileTheme: tileStyle,\n onTileClick: onClick,\n onTitleClick: onClick,\n displayUpsellCTA: shouldDisplayUpsellCTA,\n };\n const loader = fetching || fetchingPage ? <Loader /> : null;\n const hasMore = hasMoreItems !== false && !scrolling;\n const isIE = isBrowserIE();\n\n return (\n <div className={style.episodesWrapper} id={tabSlug || parentId} data-tab-id={parentId}>\n {setHelmetTags(seo)}\n {firstVideo && (\n <FirstTile\n account={account}\n authCheckComplete={authCheckComplete}\n authSuccess={authSuccess}\n breakpoint={breakpoint}\n isAuthenticated={isAuthenticated}\n isSingleEpisode={isSingleEpisode}\n onClick={onClick}\n onLiveClick={onLiveClick}\n seriesData={seriesData}\n setOverlay={setOverlay}\n tabs={tabs}\n type={firstTileType}\n video={{ ...firstVideo, isAuthenticated }}\n videoModalProps={videoModalProps}\n displayUpsellCTA={shouldDisplayUpsellCTA}\n />\n )}\n <Header\n videosList={videosList}\n currentSeason={currentSeason}\n videoType={videoType}\n seriesType={seriesType}\n style={style}\n tabName={tabName}\n newsHeadline={newsHeadline}\n />\n {renderFirstTile && (\n <UpsellBanner\n display={shouldDisplayUpsellCTA}\n inline={inline}\n toggleMvpdAuthOverlay={e =>\n this.toggleMvpdAuthOverlay({\n e,\n text: ctaText,\n buttonType: 'ad banner',\n })\n }\n />\n )}\n {isIE ? (\n <div\n className={style.scrollContainer}\n ref={div => {\n this.targetDiv = div;\n }}\n >\n {seriesHeader}\n {renderTileGrid && <TileGrid {...tileGridProps} />}\n {loader}\n </div>\n ) : (\n <InfiniteScroll pageStart={0} loadMore={this.handleScroll} hasMore={hasMore}>\n {seriesHeader}\n {renderTileGrid && <TileGrid {...tileGridProps} />}\n {loader}\n </InfiniteScroll>\n )}\n </div>\n );\n }\n\n render() {\n const {\n accessToken,\n authSuccess,\n deviceId,\n fetchingPage,\n isPersonality,\n preauthorizedResources,\n scrolling,\n tab,\n url,\n } = this.props;\n const panelId = isPersonality ? _.get(tab, 'id', url) : _.get(tab, '@id', url);\n return (\n <Panel\n accessToken={accessToken}\n deviceId={deviceId}\n renderer={this.renderTab}\n panelData={tab}\n panelUrl={url}\n headerGenerator={helperGetApiHeaders}\n routeGenerator={helperConvertApiRoute}\n pageType=\"seriesDetail\"\n panelId={panelId}\n propsToWatch={{ authSuccess, fetchingPage, preauthorizedResources, scrolling }}\n data-test=\"web-series-detail\"\n hasInfiniteScroll\n onRef={ref => {\n this.panel = ref;\n }}\n />\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n fetching: state.videosTab.fetching,\n nextPage: state.videosTab.nextPage,\n paginationItems: state.videosTab.paginationItems,\n hasMoreItems: state.videosTab.hasMoreItems,\n continueWatching: state.seriesDetail.continueWatching,\n oldestEpisode: state.seriesDetail.oldestEpisode,\n fetchingPage: state.panel.fetching,\n };\n}\n\nVideosTab.defaultProps = {\n accessToken: null,\n account: null,\n authCheckComplete: false,\n authSuccess: false,\n breakpoint: null,\n continueWatching: null,\n deviceId: null,\n fetching: false,\n fetchingPage: false,\n hasMoreItems: null,\n highlightFirstVideo: false,\n inline: {},\n isAuthenticated: false,\n isPersonality: false,\n latestEpisode: null,\n liveLatestEpisode: null,\n mvpdData: null,\n oldestEpisode: null,\n paginationItems: [],\n playlist: null,\n preauthorizedResources: [],\n renderFirstTile: true,\n scrolling: false,\n seriesData: null,\n seriesType: null,\n setOverlay: () => {},\n tab: null,\n tabName: null,\n tabSlug: null,\n tabs: null,\n toggleMvpdAuthOverlay: () => {},\n url: null,\n videoModalProps: null,\n videos: [],\n};\n\nVideosTab.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n authCheckComplete: PropTypes.bool,\n authSuccess: PropTypes.bool,\n breakpoint: PropTypes.string,\n continueWatching: PropTypes.shape({}),\n deviceId: PropTypes.string,\n fetching: PropTypes.bool,\n fetchingPage: PropTypes.bool,\n hasMoreItems: PropTypes.bool,\n highlightFirstVideo: PropTypes.bool,\n inline: PropTypes.shape({}),\n isAuthenticated: PropTypes.bool,\n isPersonality: PropTypes.bool,\n latestEpisode: PropTypes.shape({}),\n liveLatestEpisode: PropTypes.shape({}),\n mvpdData: PropTypes.shape({}),\n oldestEpisode: PropTypes.shape({}),\n paginationItems: PropTypes.arrayOf(PropTypes.shape({})),\n playlist: PropTypes.string,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n renderFirstTile: PropTypes.bool,\n saveLiveVideo: PropTypes.func.isRequired,\n scrolling: PropTypes.bool,\n seriesData: PropTypes.shape({}),\n seriesType: PropTypes.string,\n setInterval: PropTypes.func.isRequired,\n setOverlay: PropTypes.func,\n tab: PropTypes.shape({}),\n tabName: PropTypes.string,\n tabSlug: PropTypes.string,\n tabs: PropTypes.arrayOf(PropTypes.shape({})),\n toggleMvpdAuthOverlay: PropTypes.func,\n url: PropTypes.string,\n videoModalProps: PropTypes.shape({}),\n videos: PropTypes.arrayOf(PropTypes.shape({})),\n};\n\nexport default ReactTimeout(connect(mapStateToProps, {})(VideosTab));\n","import _ from 'lodash';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default function PhotoGalleryImage({ image, theme }) {\n const url = _.get(image, 'image.galleryImage');\n const description = _.get(image, 'description');\n\n if (!url || !description) return null;\n\n return (\n <div data-test=\"web-photo-gallery-image-container\">\n <img\n alt={description}\n className={theme.image}\n data-test=\"web-photo-gallery-image\"\n src={url}\n />\n <div className={theme.caption} data-test=\"web-photo-gallery-image-caption\">\n {description}\n </div>\n </div>\n );\n}\n\nPhotoGalleryImage.propTypes = {\n image: PropTypes.shape({}).isRequired,\n theme: PropTypes.shape({}).isRequired,\n};\n","import _ from 'lodash';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport PhotoGalleryImage from './PhotoGalleryImage';\n\nexport default function PhotoGalleryImages({ images, theme }) {\n if (_.isEmpty(images)) return null;\n\n return _.map(images, image => <PhotoGalleryImage image={image} theme={theme} />);\n}\n\nPhotoGalleryImages.defaultProps = {\n images: null,\n};\n\nPhotoGalleryImages.propTypes = {\n images: PropTypes.arrayOf(PropTypes.shape({})),\n theme: PropTypes.shape({}).isRequired,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { isStaticRender } from 'helpers/ContentHelper';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport Loader from 'components/Loader';\nimport { fetchGallery } from './PhotoGalleryActions';\nimport { showLoader } from './PhotoGalleryHelper';\nimport PhotoGalleryImages from './Components/PhotoGalleryImages';\nimport Style from './PhotoGallery.module.scss';\n\nclass PhotoGallery extends Component {\n componentDidMount() {\n const { url, accessToken, deviceId, fetchGallery } = this.props;\n if (url && fetchGallery && !isStaticRender()) {\n fetchGallery(url, accessToken, deviceId);\n }\n }\n\n render() {\n const { panel, seo } = this.props;\n\n if (showLoader(panel)) return <Loader data-test=\"web-photo-gallery-loader\" />;\n\n const headline = _.get(panel, 'headline', null);\n const images = _.get(panel, 'items.member', null);\n const description = _.get(panel, 'description', null);\n\n return (\n <div className={Style.container}>\n {setHelmetTags(seo)}\n <div className={Style.title} data-test=\"web-photo-gallery-title\">\n {headline}\n </div>\n {description && (\n <div className={Style.description} data-test=\"web-photo-gallery-description\">\n {description}\n </div>\n )}\n <PhotoGalleryImages images={images} theme={Style} />\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n panel: state.photoGallery.panel,\n seo: state.photoGallery.seo,\n };\n}\n\nPhotoGallery.defaultProps = {\n accessToken: null,\n deviceId: null,\n panel: null,\n seo: null,\n url: null,\n};\n\nPhotoGallery.propTypes = {\n accessToken: PropTypes.string,\n deviceId: PropTypes.string,\n fetchGallery: PropTypes.func.isRequired,\n panel: PropTypes.shape({}),\n seo: PropTypes.shape({}),\n url: PropTypes.string,\n};\n\nexport default connect(\n mapStateToProps,\n { fetchGallery },\n)(PhotoGallery);\n","import _ from 'lodash';\nimport { helperGetApiRouteById } from 'helpers/ApiHelper';\nimport { PROMO_TYPE_GALLERY } from 'screens/SeriesDetail/SeriesDetailHelpers';\n\nexport function getGalleryAPIUrl(tabUrl) {\n let contentId = _.split(tabUrl, '/').pop();\n contentId = _.split(contentId, '-').pop();\n return helperGetApiRouteById('screenpanels', contentId, '{panelId}');\n}\n\nexport function showLoader(panel) {\n const panelType = _.get(panel, 'panelType');\n return !panel || panelType !== PROMO_TYPE_GALLERY;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { renderImage as renderDynamicImage } from 'helpers/ImageHelper';\n\nconst PersonalityBio = ({ item, style, personalityTabSlug }) => {\n const { description, name, images, id } = item;\n\n const renderImage = image => {\n if (!image) return null;\n const imageUrl = image.raw;\n return (\n <div className={style.personalityBioImage}>\n {renderDynamicImage({\n alt: name,\n src: imageUrl,\n })}\n </div>\n );\n };\n\n return (\n <div id={personalityTabSlug} data-tab-id={id} className={style.personalityBioContainer}>\n <div className={style.personalityBioName}>{name}</div>\n <div className={style.personalityBioImage}>{renderImage(images.still)}</div>\n <div className={style.personalityBioDescription}>{description}</div>\n </div>\n );\n};\n\nPersonalityBio.defaultProps = {\n item: {},\n personalityTabSlug: '',\n style: {},\n};\n\nPersonalityBio.propTypes = {\n item: PropTypes.shape({}),\n personalityTabSlug: PropTypes.string,\n style: PropTypes.shape({}),\n};\n\nexport default PersonalityBio;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport style from './NationWhatIs.css';\nimport { PROMO_TYPE_HERO, PROMO_MARKETING_PERKS, getPromoData } from '../../SeriesDetailHelpers';\n\nconst NationWhatIs = ({ promos = [] }) => {\n const promoData = getPromoData({ data: promos, promoType: PROMO_MARKETING_PERKS });\n const content = _.get(promoData, 'items.member', []);\n const heroContent = _.find(content, { promoType: PROMO_TYPE_HERO });\n const heroDeviceImage = _.get(heroContent, 'images.undefined', '');\n const deviceImageBackgroundStyle = { backgroundImage: `url(${heroDeviceImage})` };\n\n return (\n <div className={style.container}>\n <div className={style.anonMiddleLeft}>\n <img src=\"/static/images/nation-logo-230x70.png\" className={style.logo} alt=\"logo\" />\n <div className={style.devices} style={deviceImageBackgroundStyle} />\n </div>\n <div className={style.anonMiddleRight}>\n <ul>\n {content.map((item, index) => {\n if (item.promoType !== PROMO_TYPE_HERO) {\n return (\n <li>\n {index === 1 ? <h2>{item.headline}</h2> : <h3>{item.headline}</h3>}\n {item.description && <p>{item.description}</p>}\n </li>\n );\n }\n return null;\n })}\n </ul>\n </div>\n </div>\n );\n};\n\nNationWhatIs.propTypes = {\n promos: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n};\n\nexport default NationWhatIs;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { redirectToExternalUrl } from 'helpers/RouteHelper';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport { PROMO_TYPE_FEATURED_TEXT, getPromoData } from '../../SeriesDetailHelpers';\nimport style from './StartFreeTrial.css';\n\nconst StartFreeTrial = ({ promos = [] }) => {\n const promoData = getPromoData({ data: promos, promoType: PROMO_TYPE_FEATURED_TEXT });\n const content = _.get(promoData, 'items.member[0]', {});\n const buttonText = content.ctaText;\n const { url } = content;\n return (\n <div className={style.container}>\n <h2 className={style.startWatching}>\n {content.headline} <br />\n {content.alternativeHeadline}\n </h2>\n <button\n onClick={() => {\n handleAnalytics({\n event: Events.PURCHASE_CTA_CLICKED,\n payload: {\n page_item_title: content.headline,\n page_item_subtitle: content.alternativeHeadline,\n page_action_location: 'uspell',\n page_button_text: buttonText,\n },\n });\n redirectToExternalUrl(url);\n }}\n className={style.button}\n data-test=\"upsell-cta\"\n >\n {buttonText}\n </button>\n </div>\n );\n};\n\nStartFreeTrial.propTypes = {\n promos: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n};\n\nexport default StartFreeTrial;\n","import { createSelectorCreator, defaultMemoize } from 'reselect';\nimport _ from 'lodash';\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _.isEqual);\n\nconst selectSeriesDetailSeriesData = state => state.seriesDetail.seriesData;\nconst selectSeriesDetailInline = state => state.seriesDetail.inline;\nconst selectSeriesDetailTabs = state => state.seriesDetail.tabs;\nconst selectSeriesDetailLatestEpisode = state => state.seriesDetail.latestEpisode;\nconst selectSeriesDetailPromos = state => state.seriesDetail.promos;\nconst selectSeriesDetailSeo = state => state.seriesDetail.seo;\nconst selectSeriesDetailRecommendedPanel = state => state.seriesDetail.recommendedPanel;\nconst selectSeriesDetailPagesSeo = state => state.seriesDetail.pagesSeo;\n\nexport const makeSelectSeriesDetailRecommendedPanel = createDeepEqualSelector(\n selectSeriesDetailRecommendedPanel,\n recommendedPanel => recommendedPanel,\n);\n\nexport const makeSelectSeriesDetailSeriesData = createDeepEqualSelector(\n selectSeriesDetailSeriesData,\n seriesData => seriesData,\n);\n\nexport const makeSelectSeriesDetailInline = createDeepEqualSelector(\n selectSeriesDetailInline,\n inline => inline,\n);\n\nexport const makeSelectSeriesDetailTabs = createDeepEqualSelector(\n selectSeriesDetailTabs,\n tabs => tabs,\n);\n\nexport const makeSelectSeriesDetailLatestEpisode = createDeepEqualSelector(\n selectSeriesDetailLatestEpisode,\n latestEpisode => latestEpisode,\n);\n\nexport const makeSelectSeriesDetailPromos = createDeepEqualSelector(\n selectSeriesDetailPromos,\n promos => promos,\n);\n\nexport const makeSelectSeriesDetailSeo = createDeepEqualSelector(selectSeriesDetailSeo, seo => seo);\n\nexport const makeSelectSeriesDetailPagesSeo = createDeepEqualSelector(\n selectSeriesDetailPagesSeo,\n pagesSeo => pagesSeo,\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport NetworkImage from 'components/NetworkImage';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport { redirectToExternalUrl } from 'helpers/RouteHelper';\nimport { getSitePlatform } from 'helpers/BreakpointHelper';\nimport { PROMO_TYPE_INSET, getPromoData } from '../../SeriesDetailHelpers';\nimport Style from './HeadlineBumper.module.scss';\n\nfunction HeadlineBumper({ promos = [] }) {\n const promoData = getPromoData({ data: promos, promoType: PROMO_TYPE_INSET });\n const content = _.get(promoData, 'items.member[0]', {});\n const { ctaText = '', headline = '' } = content;\n const buttonText = ctaText;\n const url = _.get(window.ExternalConfig, 'externalSignUpUrl');\n if (!ctaText || !headline || !url) return <div className={Style.placeholder} />;\n const network = _.get(window.ExternalConfig, 'brand.headerLogo', null);\n const onClick = () => {\n handleAnalytics(\n {\n event: Events.PURCHASE_CTA_CLICKED,\n payload: {\n page_item_title: buttonText,\n page_item_subtitle: '',\n page_action_location:\n getSitePlatform() === 'site-mobile' ? 'mobile sticky' : 'showcase bumper',\n page_button_text: buttonText,\n },\n },\n {\n event: Events.UPGRADE_NOW_BUTTON_CLICKED,\n payload: {\n page_item_title: buttonText,\n page_action_location: 'anonymous series detail',\n },\n },\n );\n if (url) redirectToExternalUrl(url);\n };\n\n return (\n <section className={Style.container}>\n <div className={Style.innerContainer}>\n <div className={Style.NetworkImageWrap}>\n <NetworkImage network={network} />\n </div>\n <div className={Style.copy}>\n <p>{headline}</p>\n </div>\n <button className={Style.ctaButton} onClick={onClick}>\n {buttonText}\n </button>\n </div>\n </section>\n );\n}\n\nHeadlineBumper.propTypes = {\n promos: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n};\nexport default HeadlineBumper;\n","/* global FavoritesEnabled, SeasonPagesEnabled */\n/* eslint-disable react/jsx-no-bind */\n\n// TODO: Remove SeriesDetail and replace with ContentDensity => CPEWEB-3795\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router';\nimport { StickyContainer } from 'react-sticky';\nimport { Waypoint } from 'react-waypoint';\nimport { Element, Events } from 'react-scroll';\nimport ReactTimeout from 'react-timeout';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport Tile from 'components/TileLegacy';\nimport VideoHero from 'components/VideoHero';\nimport Favorite, {\n FAVORITE_TYPE_LINK,\n FAVORITE_TYPE_ICON,\n FAVORITE_PLUS_CIRCLE,\n FAVORITE_HEART,\n FAVORITE_TEXT_POSITION_LEFT,\n FAVORITE_TEXT_POSITION_RIGHT,\n} from 'components/Favorite';\nimport { setFirstPage } from 'components/Panel/PanelActions';\nimport ContextPlayer from 'components/ContextPlayer';\nimport { noop } from 'helpers/GlobalHelper';\nimport { createSchemaTag, createSeriesDetailSchema } from 'helpers/SchemaHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { isNationEntitled, seriesAnonymousEnabled } from 'helpers/ConfigHelper';\nimport {\n getDisplayBrand,\n getErrorComponent,\n getShowType,\n getSocialLinksFromContent,\n getUrlTarget,\n isClip,\n isEpisode,\n isStaticRender,\n LINK_REL,\n PAGE_TYPE_ARTICLE,\n PAGE_TYPE_CREDITS,\n PAGE_TYPE_PROMO_LIST,\n} from 'helpers/ContentHelper';\nimport {\n SHOW_DETAIL_THUMBNAIL_IMAGE,\n SHOW_DETAIL_HERO_IMAGE,\n renderImage,\n} from 'helpers/ImageHelper';\nimport { brandOverrideMetaTags, setHelmetTags } from 'helpers/HelmetHelper';\nimport {\n seriesVideoProcessor,\n clipsVideoProcessor,\n seriesCollectionVideoProcessor,\n prePremiereVideoProcessor,\n} from 'helpers/VideoProcessorHelper';\n\nimport {\n BUILD_VERSION,\n callTealiumEvent,\n Events as SegmentEvents,\n getFavoritesListString,\n getTealiumDetailTabData,\n getTealiumSourceCollectionGlobal,\n handleAnalytics,\n PageNames,\n SegmentSources,\n setSegmentContentPersonality,\n setTealiumProfileId,\n setTealiumProfileStartSource,\n setTealiumSourceAuth,\n setTealiumSourceCollectionGlobal,\n tealiumEventPageTypes,\n TEALIUM_EVENT_PREFIX,\n trackPageReferrerAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport { redirectToExternalUrl, helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport { deepLinkFavoriteSeries, getCommonTealiumProps } from 'helpers/AccountHelper';\nimport Article from 'components/Article';\nimport BreadcrumbsComponent, { breadcrumbsSeriesDetailParser } from 'components/Breadcrumbs';\nimport Carousel from 'components/Carousel';\nimport PromoList from 'components/PromoList';\nimport { saveLiveVideo } from 'screens/Live/LiveActions';\nimport { fetchArticle } from 'components/Article/ArticleActions';\nimport { getArticleApiUrl } from 'components/Article/ArticleHelpers';\nimport { getPromoListApiUrl } from 'components/PromoList/PromoListHelpers';\nimport Loader from 'components/Loader';\nimport { setRecommendationIdAction as setRecommendationId } from 'index/AppActions';\nimport BioComponent from './components/Bio';\nimport BrandingComponent from './components/Branding';\nimport TabListComponent from './components/TabList';\nimport VideosTabComponent from './components/VideosTab';\nimport PhotoGalleryComponent from './components/PhotoGallery';\nimport PersonalityBio from './components/PersonalityBio';\nimport {\n fetchAnonymousCategoryDetail,\n fetchAnonymousSeries,\n fetchCategoryDetail,\n fetchSeries,\n clearSeriesDetail,\n setSeriesDetailError,\n} from './SeriesDetailActions';\nimport { fetchVideosTab } from './components/VideosTab/VideosTabActions';\nimport {\n getCreditIdFromUrl,\n getCTAUrl,\n getFeaturedBio,\n getPromoData,\n getSelectedTabIndex,\n getTabDataUrl,\n getTabName,\n getTabSlug,\n hasPrePremiereVideo,\n isContinueWatchingComponent,\n isCreditsItem,\n isInlineComponent,\n isPlaylist,\n isPromoItem,\n isTabGrouped,\n isSeriesCollection,\n NO_TAB_STATE_TRAILER,\n SERIES_TYPE_SERIES_COLLECTION,\n SERIES_SCROLL_ELEMENT,\n ARTICLE_SCROLL_ELEMENT,\n PROMO_TYPE_FEATURED_OVERRIDE,\n PROMO_TYPE_HEADER,\n PROMO_TYPE_LEAD,\n SERIES_TYPE_CREDITS,\n PROMO_TYPE_GALLERY,\n} from './SeriesDetailHelpers';\nimport { getPersonalityTabSlug } from './PersonalityDetailHelpers';\nimport style from './styles/SeriesDetail.css';\nimport articleTheme from './styles/Article.css';\nimport CarouselPosterTheme from './styles/SeriesDetailsCarouselPoster.module.scss';\nimport CarouselTheme from './styles/SeriesDetailsCarousel.module.scss';\nimport CarouselTileTheme from './styles/SeriesDetailsCarouselTile.module.scss';\nimport { fetchBioDetail, fetchBioLanding } from './components/Bio/BioActions';\n\nimport NationWhatIs from './components/NationWhatIs';\nimport StartFreeTrial from './components/StartFreeTrial';\nimport {\n makeSelectSeriesDetailSeriesData,\n makeSelectSeriesDetailInline,\n makeSelectSeriesDetailTabs,\n makeSelectSeriesDetailLatestEpisode,\n makeSelectSeriesDetailPromos,\n makeSelectSeriesDetailSeo,\n} from './selectors';\nimport HeadlineBumper from './components/HeadlineBumper';\n\nconst { DETAIL, FAVORITES_DETAIL, SERIES_DETAIL } = PageNames;\n\nconst FETCH_NEW_CONTENT_INTERVAL_MS = 1000 * 60 * 30;\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n actionButtonsInHeader: false,\n actionButtonsInNav: true,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 0,\n carouselLimit: 4,\n posterLimit: 5,\n posterToScroll: 5,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logo.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 4,\n socialLinks: true,\n tabsInAltHeader: false,\n useScrollableDiv: false,\n videoBackground: true,\n },\n [SITE_PLATFORM_WEB]: {\n actionButtonsInHeader: false,\n actionButtonsInNav: true,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 0,\n carouselLimit: 3,\n descriptionLines: 5,\n posterLimit: 5,\n posterToScroll: 5,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logo.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 3,\n socialLinks: true,\n tabsInAltHeader: false,\n useScrollableDiv: false,\n useSeriesLogo: true,\n videoBackground: true,\n },\n [SITE_PLATFORM_TABLET]: {\n actionButtonsInHeader: true,\n actionButtonsInNav: false,\n addCarouselPlaceholders: true,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 4,\n carouselLimit: 2,\n descriptionLines: 5,\n posterLimit: 3,\n posterToScroll: 3,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logoCenter.raw',\n showTileMetadataOnHover: true,\n slidesToScroll: 2,\n socialLinks: false,\n tabsInAltHeader: true,\n useScrollableDiv: false,\n useSeriesLogo: true,\n videoBackground: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n actionButtonsInHeader: true,\n actionButtonsInNav: false,\n addCarouselPlaceholders: false,\n allowScrollLock: false,\n applyInlineBackground: true,\n backgroundImagePath: 'images.seriesDetail.raw',\n brandingTitleClampSize: 3,\n carouselLimit: 2,\n descriptionLines: 5,\n posterLimit: 3,\n posterToScroll: 3,\n renderAltHeader: false,\n roundArrows: true,\n showCarouselArrows: true,\n showLogoPath: 'images.logoCenter.raw',\n showTileMetadataOnHover: false,\n slidesToScroll: 2,\n socialLinks: false,\n tabsInAltHeader: true,\n useScrollableDiv: true,\n },\n};\n\nclass SeriesDetail extends Component {\n constructor(props) {\n super(props);\n const isPersonality = _.get(props, 'route.params.fetchFromCategories', false);\n const renderAsAnonymous = seriesAnonymousEnabled() && !isNationEntitled();\n\n this.state = {\n breakpoint: SITE_PLATFORM_WEB,\n contextPlayerVisibility: false,\n deepLinkFavorited: false,\n isBrandingClicked: false,\n isPersonality,\n playlist: false,\n renderAsAnonymous,\n scrolling: false,\n stickyHeader: false,\n trackedAnalyticsReferrer: false,\n };\n\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.deepLinkFavoriteSeries = deepLinkFavoriteSeries.bind(this);\n this.setDeepLinkFavorited = this.setDeepLinkFavorited.bind(this);\n }\n\n componentDidMount() {\n this.fetchInitialData();\n this.trackPageView();\n Events.scrollEvent.register('begin', this.scrollStart);\n Events.scrollEvent.register('end', this.scrollEnd);\n\n if (isNationEntitled()) this.setState({ renderAsAnonymous: false });\n }\n\n componentDidUpdate(prevProps) {\n const {\n params: { showId: prevShowId },\n tabs: prevTabs,\n errors: prevErrors,\n } = prevProps;\n\n const {\n accessToken,\n deviceId,\n errors,\n clearSeriesDetail,\n fetchCategoryDetail,\n fetchSeries,\n params: { showId },\n tabs,\n } = this.props;\n\n const fetchNewSeries = prevShowId !== showId && prevShowId && showId;\n const newErrors = !prevErrors && errors;\n const newTabs = !prevTabs && tabs;\n const firePageView = newTabs || newErrors;\n if (fetchNewSeries) {\n const fetchFromCategories = _.get(this.props, 'route.params.fetchFromCategories');\n clearSeriesDetail();\n if (fetchFromCategories) {\n fetchCategoryDetail(showId, accessToken, deviceId);\n } else {\n fetchSeries(showId, accessToken, deviceId);\n }\n }\n if (firePageView) this.trackPageView();\n }\n\n componentWillUnmount() {\n const { clearSeriesDetail, disableScroll } = this.props;\n this.trackPageReferrerAnalytics({\n name: SERIES_DETAIL,\n });\n setSegmentContentPersonality(false);\n clearSeriesDetail();\n disableScroll({ disableScroll: false, bodyOnly: false });\n }\n\n scrollStart = () => {\n this.setState({ scrolling: true });\n };\n\n scrollEnd = () => {\n this.setState({ scrolling: false });\n };\n\n getBreadcrumbsData() {\n const { params, seriesData, articlePanels, bioProfiles } = this.props;\n const { isPersonality } = this.state;\n const { pageId } = params;\n const articleData = _.get(articlePanels, 'member.0.items.member.0', null);\n const creditsData = getFeaturedBio(pageId, bioProfiles);\n const breadcrumbsData = breadcrumbsSeriesDetailParser(\n params,\n seriesData,\n articleData,\n creditsData,\n isPersonality,\n );\n return breadcrumbsData;\n }\n\n getCurrentTabIndex() {\n const pageId = this.getPageId();\n const { tabs } = this.props;\n const { isPersonality } = this.state;\n\n if (!tabs) return false;\n const seriesType = this.getSeriesType();\n const noTabState = this.noTabState();\n const noTabHomepage = this.noTabHomepage();\n\n const { tabIndex, subTabIndex } = getSelectedTabIndex({\n isPersonality,\n pageId,\n tabs,\n noTabState,\n noTabHomepage,\n seriesType,\n });\n return { tabIndex, subTabIndex };\n }\n\n getHeroImage() {\n const { breakpoint, latestEpisode, seriesData } = this.props;\n const { backgroundImagePath } = BREAKPOINTS[breakpoint];\n const { inline } = this.props;\n const { isPersonality, renderAsAnonymous } = this.state;\n let inlineContent = latestEpisode || _.get(inline, 'items.member.0') || inline;\n if (isPersonality) inlineContent = inline;\n\n const anonymousImage =\n _.get(seriesData, 'images.seriesDetailUnauth.FHD') ||\n _.get(seriesData, 'images.seriesDetail.FHD') ||\n _.get(inlineContent, 'autoPlayStill.default.FHD') ||\n _.get(inlineContent, 'images.FHD') ||\n _.get(inlineContent, 'images.still.FHD');\n\n let image =\n _.get(inlineContent, backgroundImagePath) ||\n _.get(inlineContent, 'autoPlayStill.default.url') ||\n _.get(inlineContent, 'images.raw') ||\n _.get(inlineContent, 'images.still.raw');\n\n if (breakpoint === SITE_PLATFORM_MOBILE || breakpoint === SITE_PLATFORM_TABLET) {\n image = _.get(seriesData, 'images.still.raw', image);\n }\n\n const useAnonymous = renderAsAnonymous && anonymousImage;\n return useAnonymous ? anonymousImage : image;\n }\n\n getPageId() {\n const {\n params: { pageId, pageType },\n } = this.props;\n if (pageType && pageId) return `${pageType}/${pageId}`;\n return pageId || pageType;\n }\n\n getPlaylistId() {\n const { tabs } = this.props;\n const { tabIndex } = this.getCurrentTabIndex();\n if (!tabs || tabIndex === false) return null;\n const tab = tabs[tabIndex];\n const id = _.get(tab, 'id');\n if (!isPlaylist(tab)) return null;\n return id;\n }\n\n getPromoTypeHeaderCta() {\n const { promos } = this.props;\n if (!promos) return null;\n\n const headerItems = _.get(promos, 'items.member', []).filter(\n item => item.promoType === PROMO_TYPE_HEADER,\n );\n const header = _.get(headerItems, '0', null);\n return header;\n }\n\n getSEO() {\n const { seo, tabs } = this.props;\n const { tabIndex } = this.getCurrentTabIndex();\n if (!tabs || tabIndex === false) return seo;\n const tab = tabs[tabIndex];\n const tabSEO = _.get(tab, 'SEOV2', {});\n return { ...seo, ...tabSEO };\n }\n\n getSeriesType() {\n const { inline } = this.props;\n const inlineContent = _.get(inline, 'items.member.0', null);\n return _.get(inlineContent, 'seriesType', null);\n }\n\n getVideo() {\n const { breakpoint, latestEpisode } = this.props;\n const { videoBackground } = BREAKPOINTS[breakpoint];\n const { inline } = this.props;\n const inlineContent = latestEpisode || _.get(inline, 'items.member.0');\n const video = videoBackground && _.get(inlineContent, 'autoPlayVideo.default.url');\n\n return video;\n }\n\n getVideoHeroProps() {\n const { overlay } = this.props;\n const { stickyHeader, renderAsAnonymous } = this.state;\n const video = this.getVideo();\n const image = this.getHeroImage();\n if (!video && !image) return null;\n const props = {\n video,\n timer: 5,\n image,\n load: true,\n play: true,\n loop: true,\n fadeImageToVideo: true,\n addShadowOverlay: renderAsAnonymous,\n };\n if (overlay || stickyHeader || renderAsAnonymous) {\n props.play = false;\n }\n return props;\n }\n\n setErrors = errors => {\n const { setSeriesDetailError } = this.props;\n setSeriesDetailError(errors);\n };\n\n setOverrideMetatags() {\n const { seriesData } = this.props;\n const { isPersonality } = this.state;\n const network = _.get(seriesData, 'network');\n const brandOverride = brandOverrideMetaTags(network);\n if (brandOverride && !isPersonality) return brandOverride;\n return null;\n }\n\n setDeepLinkFavorited(value) {\n return this.setState({ deepLinkFavorited: value });\n }\n\n selectMenuItemEvent = ({ title, subtitle }) => {\n const { tabs } = this.props;\n const { tabIndex } = this.getCurrentTabIndex();\n const seriesType = this.getSeriesType();\n const currentTabName = getTabName({ tab: tabs[tabIndex], seriesType });\n handleAnalytics({\n event: SegmentEvents.MENU_ITEM_SELECTED,\n payload: {\n page_category_title: currentTabName,\n page_item_title: title,\n page_item_subtitle: subtitle,\n },\n });\n };\n\n togglePlaylist = () => {\n const { playlist } = this.state;\n this.setState({ playlist: !playlist });\n };\n\n tealiumAuthStart = () => {\n const { account } = this.props;\n const action = 'authentication_start';\n const profileId = _.get(account, 'profileId');\n const authStartSource = 'series_detail_page';\n setTealiumSourceAuth(authStartSource);\n setTealiumProfileStartSource('detail page');\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n platform_version: BUILD_VERSION,\n profile_start_source: 'detail page',\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n setTealiumSourceAuth(authStartSource);\n };\n\n stickyHeaderCallback = isSticky => {\n this.setState({ ...this.state, stickyHeader: isSticky });\n };\n\n setIsBrandingClicked = isBrandingClicked => {\n this.setState({ isBrandingClicked });\n };\n\n trackPageView = () => {\n const {\n pageViewEvent,\n tabs,\n seriesData,\n seriesType,\n getUseUtagGlobal,\n errors,\n favoritesManager: { favorites },\n } = this.props;\n const { isPersonality } = this.state;\n if (!seriesData) return;\n const tab = _.get(tabs, '0');\n const pageTitle = _.get(seriesData, 'name');\n\n if ((tab || errors) && pageViewEvent) {\n const referringCollection = getTealiumSourceCollectionGlobal();\n const seriesCollection = getTealiumDetailTabData({ seriesData, tab });\n const selectedMenuItem = _.get(seriesCollection, 'selectedMenuItem');\n const categoryType = _.get(seriesData, 'categoryType');\n const pageType = `detail:${categoryType}`;\n\n if (isPersonality) {\n handleAnalytics(\n {\n event: SegmentEvents.DETAIL_PAGE_MENU_ITEM_VIEW,\n payload: {\n pageName: `detail:${pageType}:${categoryType}:${pageTitle}`,\n pageType: `detail:${pageType}:menu`,\n selectedMenuItem,\n },\n },\n {\n event: SegmentEvents.DETAIL_PAGE_DEFAULT_STATE,\n payload: {\n pageName: `${pageType}:${pageTitle}`,\n pageType: `${pageType}:landing`,\n pageCollectionTitle: referringCollection ? referringCollection.name : null,\n pageCollectionType: referringCollection\n ? referringCollection.collectionType\n : 'no collection type',\n ...(favorites && {\n favoritesContentLength: favorites.length,\n favoritesContentList: getFavoritesListString(favorites),\n }),\n },\n },\n );\n }\n\n if (referringCollection) {\n const { name: title } = referringCollection;\n setTealiumSourceCollectionGlobal({ ...referringCollection, title });\n }\n\n const collection = referringCollection;\n\n pageViewEvent({\n pageName: DETAIL,\n collection,\n useUtagGlobal: getUseUtagGlobal(),\n seriesType: isPersonality ? 'personality' : seriesType,\n pageTitle,\n pageType: `${pageType}:landing`,\n selectedMenuItem,\n });\n // Fire after page view event\n const hasFavorite = !!_.filter(favorites, { showCode: seriesData.showCode })[0];\n if (!hasFavorite)\n this.deepLinkFavoriteSeries({\n props: this.props,\n setDeepLinkFavorited: this.setDeepLinkFavorited,\n });\n }\n };\n\n brandingBackground = () => {\n const { breakpoint, setVideoHero, removeVideoHero } = this.props;\n const { renderAsAnonymous } = this.state;\n const { backgroundVideoLoops } = window.ExternalConfig;\n const video = this.getVideo();\n const image = this.getHeroImage();\n if ((video && !renderAsAnonymous) || !image) return null;\n return (\n <VideoHero\n backgroundVideoLoops={backgroundVideoLoops}\n id=\"branding-bg\"\n {...this.getVideoHeroProps()}\n video={null}\n renderImage={imageProps =>\n renderImage({\n breakpoint,\n imageType: SHOW_DETAIL_HERO_IMAGE,\n ...imageProps,\n })\n }\n anonymousView={renderAsAnonymous}\n className={style.brandingBackground}\n onMount={setVideoHero}\n onUnmount={removeVideoHero}\n />\n );\n };\n\n controlVideoPlayback(inRange) {\n const { stickyHeader } = this.state;\n if (inRange && stickyHeader === true) {\n this.setState({ stickyHeader: false });\n } else if (!inRange && !stickyHeader) {\n this.setState({ stickyHeader: true });\n }\n }\n\n fetchInitialData() {\n if (isStaticRender()) return;\n const { renderAsAnonymous } = this.state;\n const {\n accessToken,\n deviceId,\n fetchAnonymousCategoryDetail,\n fetchAnonymousSeries,\n fetchCategoryDetail,\n fetchSeries,\n params: { showId },\n setInterval,\n } = this.props;\n const fetchFromCategories = _.get(this.props, 'route.params.fetchFromCategories');\n if (fetchFromCategories && renderAsAnonymous) {\n fetchAnonymousCategoryDetail(showId, accessToken, deviceId);\n } else if (fetchFromCategories) {\n fetchCategoryDetail(showId, accessToken, deviceId);\n setInterval(() => {\n const { accessToken: currentAccessToken } = this.props;\n fetchCategoryDetail(showId, currentAccessToken, deviceId);\n }, FETCH_NEW_CONTENT_INTERVAL_MS);\n } else if (renderAsAnonymous) {\n fetchAnonymousSeries(showId, accessToken, deviceId);\n } else {\n fetchSeries(showId, accessToken, deviceId);\n setInterval(() => {\n const {\n accessToken: currentAccessToken,\n deviceId: currentDeviceId,\n params: { showId },\n } = this.props;\n fetchSeries(showId, currentAccessToken, currentDeviceId);\n }, FETCH_NEW_CONTENT_INTERVAL_MS);\n }\n }\n\n isCreditsPageType() {\n return _.get(this.props, 'pageType') === SERIES_TYPE_CREDITS;\n }\n\n noTabHomepage() {\n const { inline } = this.props;\n const hasTrailer = hasPrePremiereVideo(inline);\n const trailer = _.get(inline, 'items.member.0.previewVideo.member.0', false);\n if (hasTrailer && trailer && trailer.name) return NO_TAB_STATE_TRAILER;\n return null;\n }\n\n noTabState() {\n const pageId = this.getPageId();\n const noTabHomepage = this.noTabHomepage();\n if (!pageId && noTabHomepage) return noTabHomepage;\n return null;\n }\n\n renderArticle() {\n const {\n params: { showId, pageType, pageId },\n accessToken,\n deviceId,\n pageViewEvent,\n setLoading,\n } = this.props;\n\n if (!pageId || pageType !== PAGE_TYPE_ARTICLE) return null;\n\n const articleUrl = getArticleApiUrl(pageId);\n\n return (\n <div className={style.screen}>\n <div className={style.article}>\n <Article\n url={articleUrl}\n accessToken={accessToken}\n deviceId={deviceId}\n pageViewEvent={pageViewEvent}\n scrollElement={ARTICLE_SCROLL_ELEMENT}\n setErrors={this.setErrors}\n setLoading={setLoading}\n showId={showId}\n />\n </div>\n </div>\n );\n }\n\n renderCredits() {\n const {\n accessToken,\n deviceId,\n params: { showId, pageId },\n breakpoint,\n setLoading,\n tabs,\n } = this.props;\n const creditsTab = _.find(tabs, tab => isCreditsItem(tab));\n const credits = _.get(creditsTab, 'member', []);\n const itemId = getCreditIdFromUrl({ credits, pageId });\n return (\n <BioComponent\n accessToken={accessToken}\n breakpoint={breakpoint}\n deviceId={deviceId}\n itemId={itemId}\n setLoading={setLoading}\n setErrors={this.setErrors}\n showId={showId}\n selectMenuItemEvent={this.selectMenuItemEvent}\n />\n );\n }\n\n renderFavorite(favoriteType) {\n const {\n params: { showId: showID },\n seriesData,\n favoritesManager,\n favoritableItems,\n recommendationId,\n tabs,\n } = this.props;\n\n const {\n global_favoriteButton: defaultText,\n global_favoriteSetButton: favoritedText,\n } = window.Language;\n\n const { deepLinkFavorited } = this.state;\n const { network, categoryType, seriesType, name: seriesName } = seriesData;\n const showType = getShowType({ seriesType });\n const hasTabs = tabs && tabs.length > 0;\n if (!FavoritesEnabled || !hasTabs) return null;\n const isPersonality = categoryType && categoryType === 'personality';\n const favorites = _.get(favoritesManager, 'favorites');\n const favoriteData = {\n actionLocation: _.get(tealiumEventPageTypes, DETAIL),\n favoriteType: isPersonality ? 'personality' : showType,\n favoritableItems,\n showID,\n source: SegmentSources.DETAIL,\n location: _.get(tealiumEventPageTypes, FAVORITES_DETAIL),\n networkId: network,\n seriesName,\n recommendationId,\n };\n return (\n <Favorite\n data={favoriteData}\n favorites={favorites}\n manager={favoritesManager}\n manuallySetFavorite={deepLinkFavorited}\n type={favoriteType}\n textPosition={!isPersonality ? FAVORITE_TEXT_POSITION_LEFT : FAVORITE_TEXT_POSITION_RIGHT}\n defaultText={!isPersonality ? defaultText : 'Favorite'}\n favoritedText={!isPersonality ? favoritedText : 'My Favorite'}\n iconType={!isPersonality ? FAVORITE_PLUS_CIRCLE : FAVORITE_HEART}\n />\n );\n }\n\n renderFeaturedPromo() {\n const { promos } = this.props;\n const items = _.orderBy(\n _.get(promos, 'items.member', []),\n promo => new Date(promo.dateModified),\n ['desc'],\n );\n const promo = _.find(items, item => item.promoType === PROMO_TYPE_FEATURED_OVERRIDE);\n if (!promo) return null;\n\n const renderCTA = ({ ctaText, url }) => {\n const { target, rel } = getUrlTarget(url);\n if (ctaText && url) {\n return (\n <div className={style.ctaButtonContainer}>\n <Link href={getCTAUrl(url)} target={target} rel={rel} className={style.ctaButton}>\n <p className={style.ctaButtonText}>{ctaText}</p>\n </Link>\n </div>\n );\n }\n return null;\n };\n\n const { headline, description, ctaText, url } = promo;\n\n return (\n <div className={style.featuredPromo}>\n <div className={style.featuredPromoHeadline}>{headline}</div>\n <div className={style.featuredPromoDesc}>{description}</div>\n {renderCTA({ ctaText, url })}\n </div>\n );\n }\n\n renderInline() {\n const pageId = this.getPageId();\n const {\n inline,\n isHeader,\n params: { showId, pageType },\n tabs,\n setOverlay,\n breakpoint,\n overlay,\n disableScroll,\n seriesData,\n } = this.props;\n const { isBrandingClicked, isPersonality, playlist, renderAsAnonymous } = this.state;\n const headlineIsPrimary = pageType !== PAGE_TYPE_CREDITS && pageType !== PAGE_TYPE_ARTICLE;\n if (!inline || inline.length === 0) return null;\n const previewButtonClick = () => {\n this.setState({ contextPlayerVisibility: true }, () =>\n disableScroll({ disableScroll: true, bodyOnly: true }),\n );\n };\n const trailer =\n _.get(seriesData, 'previewVideo.member.0') ||\n _.get(inline, '0.items.member.0.previewVideo.@populated');\n const hasTrailer = _.get(trailer, '@populated', false) || hasPrePremiereVideo(inline);\n const votingCTA = this.getPromoTypeHeaderCta();\n const {\n actionButtonsInHeader,\n brandingTitleClampSize,\n renderAltHeader,\n showLogoPath,\n tabsInAltHeader,\n } = BREAKPOINTS[breakpoint];\n const tabList =\n !tabsInAltHeader || !tabs || renderAsAnonymous ? null : (\n <TabListComponent\n {...{\n showId,\n pageId,\n tabs,\n isBrandingClicked,\n inline,\n setOverlay,\n breakpoint,\n overlay,\n favoriteButton: this.renderFavorite(FAVORITE_TYPE_ICON),\n socialLinks: this.renderSocialLinks(false),\n seriesType: this.getSeriesType(),\n setIsBrandingClicked: this.setIsBrandingClicked,\n togglePlaylist: this.togglePlaylist,\n playlist,\n }}\n />\n );\n const { id: panelId, items } = inline;\n const item = isPersonality ? inline : _.get(items, 'member.0', null);\n if (!item) return null;\n const { name, tuneIn, screenUrl } = item;\n const displayBrand = getDisplayBrand(item);\n let showLogo = _.get(item, `latestEpisode.${showLogoPath}`, null);\n\n if (!showLogo) showLogo = _.get(item, showLogoPath, null);\n\n return (\n <div key={`show-branding-${panelId}`}>\n <Waypoint\n onEnter={this.controlVideoPlayback.bind(this, true)}\n onLeave={this.controlVideoPlayback.bind(this, false)}\n />\n <BrandingComponent\n breakpoint={breakpoint}\n className={style.branding}\n containerClassName={style.screenElement}\n key={panelId}\n isHeader={isHeader}\n name={name}\n titleClampSize={brandingTitleClampSize}\n tuneIn={tuneIn}\n network={displayBrand}\n showLogo={showLogo}\n renderBackground={this.brandingBackground}\n stickyHeaderCallback={this.stickyHeaderCallback}\n showActionButtons={actionButtonsInHeader}\n favoriteButton={this.renderFavorite(FAVORITE_TYPE_ICON)}\n screenUrl={screenUrl}\n renderAltHeader={renderAltHeader}\n votingCTA={votingCTA}\n headlineIsPrimary={headlineIsPrimary}\n isPersonality={isPersonality}\n onClick={() => this.setIsBrandingClicked(true)}\n isAnonymous={renderAsAnonymous}\n item={item}\n hasTrailer={hasTrailer}\n previewButtonClick={previewButtonClick}\n >\n {tabList}\n </BrandingComponent>\n </div>\n );\n }\n\n renderPanel(panel, isPosters, renderDivider) {\n const { breakpoint, inline, seriesType, promos } = this.props;\n const { renderAsAnonymous } = this.state;\n const {\n addCarouselPlaceholders,\n allowScrollLock,\n applyInlineBackground,\n carouselLimit,\n posterLimit,\n posterToScroll,\n roundArrows,\n slidesToScroll,\n showCarouselArrows,\n showTileMetadataOnHover,\n useScrollableDiv,\n } = BREAKPOINTS[breakpoint];\n const name = _.get(panel, 'name');\n const headline = _.get(panel, 'headline', name);\n const items = _.get(panel, 'items.member');\n const promoLeadData = getPromoData({ data: promos, promoType: PROMO_TYPE_LEAD });\n const promoLeadContent = _.get(promoLeadData, 'items.member[0]', []);\n const promoCTA = _.get(promoLeadContent, 'ctaText', '');\n const promoLink = _.get(promoLeadContent, 'url', '');\n if (!inline || !items) return null;\n const anonymousProcessor = item => {\n const isMobile = breakpoint === SITE_PLATFORM_MOBILE;\n const getProcessor = ({ seriesType, videoType }) => {\n if (isSeriesCollection(seriesType)) return seriesCollectionVideoProcessor;\n switch (videoType) {\n case isEpisode(videoType):\n return seriesVideoProcessor;\n case isClip(videoType):\n return clipsVideoProcessor;\n default:\n return seriesVideoProcessor;\n }\n };\n const url = helperGetRelativeUrl({ url: item.screenUrl });\n const processor = getProcessor({ seriesType, videoType: item.videoType });\n return {\n ...processor({ item }),\n ...(isMobile && { metadata: null }),\n anonymousCTAText: promoCTA,\n anonymousCTAClick: () => promoLink && redirectToExternalUrl(promoLink),\n hasOverlay: false,\n image: _.get(item, 'images.videoList.raw', null),\n isAnonymous: true,\n link: url || promoLink,\n onTileClick: () => {},\n posterImage: _.get(item, 'images.dcg-mark-poster.raw', null),\n subtitle: !isMobile && item.description,\n target: '_self',\n titleLines: 0,\n };\n };\n const carouselProps = {\n addCarouselPlaceholders,\n allowScrollLock,\n applyInlineBackground,\n breakpoint,\n headline,\n isSeriesDetailAnonymous: renderAsAnonymous,\n isInfinite: false,\n isPosters,\n items,\n processor: anonymousProcessor,\n roundArrows,\n showCarouselArrows,\n showTileMetadataOnHover,\n slidesToScroll: isPosters ? posterToScroll : slidesToScroll,\n slidesToShow: isPosters ? posterLimit : carouselLimit,\n theme: isPosters ? CarouselPosterTheme : CarouselTheme,\n tileTheme: CarouselTileTheme,\n useScrollableDiv,\n };\n return (\n <>\n <div className={style.carouselContainer}>\n <Carousel {...carouselProps} />\n </div>\n {renderDivider && (\n <div className={style.dividerContainer}>\n <div className={style.carouselDivider} />\n </div>\n )}\n </>\n );\n }\n\n renderNoTabContent({ noTabState }) {\n if (noTabState === NO_TAB_STATE_TRAILER) {\n return this.renderPremierePreview();\n }\n return null;\n }\n\n renderPremierePreview() {\n const { breakpoint, inline } = this.props;\n const hasTrailer = hasPrePremiereVideo(inline);\n const video = _.get(inline, 'items.member.0.previewVideo.member.0', false);\n if (!hasTrailer || video === false) return null;\n const props = prePremiereVideoProcessor({ item: video });\n props.renderImage = image =>\n renderImage({\n breakpoint,\n imageType: SHOW_DETAIL_THUMBNAIL_IMAGE,\n ...image,\n });\n\n return (\n <div className={style.premierePreview}>\n <Tile {...props} />\n </div>\n );\n }\n\n renderPromoItemContent({ item }) {\n const { accessToken, deviceId, pageViewEvent, tabs, seriesType } = this.props;\n const { isPersonality } = this.state;\n const url = _.get(item, 'url');\n const promoContentType = _.split(url, '/').shift();\n const containerId = isPersonality\n ? getPersonalityTabSlug({ tab: item, tabs, seriesType })\n : getTabSlug({ tab: item, tabs, seriesType });\n let scrollElement;\n\n switch (promoContentType) {\n case PAGE_TYPE_ARTICLE: {\n if (tabs.length > 0) scrollElement = ARTICLE_SCROLL_ELEMENT;\n const articleUrl = getArticleApiUrl(url);\n return (\n <Article\n containerId={containerId}\n url={articleUrl}\n accessToken={accessToken}\n deviceId={deviceId}\n pageViewEvent={pageViewEvent}\n theme={articleTheme}\n scrollElement={scrollElement}\n seriesType={seriesType}\n />\n );\n }\n case PROMO_TYPE_GALLERY:\n return (\n <PhotoGalleryComponent\n accessToken={accessToken}\n data-test=\"photo-gallery\"\n deviceId={deviceId}\n url={url}\n />\n );\n default:\n return null;\n }\n }\n\n renderPromoList() {\n const {\n params: { showId, pageType, pageId },\n accessToken,\n deviceId,\n pageViewEvent,\n setLoading,\n } = this.props;\n if (!pageId || pageType !== PAGE_TYPE_PROMO_LIST) return null;\n\n const promoListUrl = getPromoListApiUrl(pageId);\n return (\n <div className={style.screen}>\n <div className={style.promoScreen}>\n <PromoList\n url={promoListUrl}\n accessToken={accessToken}\n deviceId={deviceId}\n pageViewEvent={pageViewEvent}\n setErrors={this.setErrors}\n setLoading={setLoading}\n showId={showId}\n />\n </div>\n </div>\n );\n }\n\n renderSingleTabContent({\n item,\n highlightFirstVideo,\n renderFirstTile,\n isAuthenticated,\n preauthorizedResources,\n }) {\n if (isPromoItem(item)) return this.renderPromoItemContent({ item });\n if (isCreditsItem(item)) return this.renderCredits();\n\n const {\n accessToken,\n account,\n adblock,\n anonymousId,\n anonymousLogin,\n authCheckComplete,\n authSuccess,\n breakpoint,\n deviceId,\n latestEpisode,\n inline,\n isLatestEpisodeLive,\n mvpdData,\n openSignIn,\n openSignUp,\n profileId,\n provider,\n renderAuthContainer,\n saveLiveVideo,\n setAccountCloseIgnoreRedirect,\n setIsAuthenticated,\n setIsPlayerLoaded,\n seriesData,\n setAuthorizationToken,\n setMVPDToAppState,\n setMVPDLogoutDataToAppState,\n setOverlay,\n setProvider,\n tabs,\n toggleMvpdAuthOverlay,\n } = this.props;\n const { isPersonality, scrolling } = this.state;\n let url = getTabDataUrl(item);\n const originalVideos = _.get(item, 'items.member', null);\n const videos =\n originalVideos &&\n originalVideos.map(video =>\n Object.assign({ isAuthenticated, preauthorizedResources }, video),\n );\n const videoCount = _.get(item, 'items.totalItems', null);\n const seriesType = this.getSeriesType();\n if (videos) {\n if (videoCount === 0) return null;\n url = null;\n }\n const playlistId = this.getPlaylistId();\n const tabSlug = isPersonality\n ? getPersonalityTabSlug({ tab: item, tabs, seriesType, isPersonality })\n : getTabSlug({ tab: item, tabs, seriesType });\n const latestEpisodeSeason = _.get(latestEpisode, 'seasonNumber');\n const itemSeason = _.get(item, 'seasonNumber');\n const isItemSeasonLatestSeason = itemSeason === latestEpisodeSeason;\n const liveLatestEpisode = isLatestEpisodeLive && isItemSeasonLatestSeason && latestEpisode;\n\n const videoModalProps = {\n accessToken,\n account,\n adblock,\n anonymousId,\n anonymousLogin,\n authCheckComplete,\n authSuccess,\n breakpoint,\n deviceId,\n openSignIn,\n openSignUp,\n profileId,\n provider,\n renderAuthContainer,\n setAccountCloseIgnoreRedirect,\n setAuthorizationToken,\n setIsAuthenticated,\n setIsPlayerLoaded,\n setInterval,\n setOverlay,\n setMVPDToAppState,\n setMVPDLogoutDataToAppState,\n setProvider,\n };\n return (\n <VideosTabComponent\n accessToken={accessToken}\n account={account}\n authCheckComplete={authCheckComplete}\n authSuccess={authSuccess}\n breakpoint={breakpoint}\n deviceId={deviceId}\n highlightFirstVideo={highlightFirstVideo}\n inline={inline}\n isAuthenticated={isAuthenticated}\n isPersonality={isPersonality}\n key={url || item.id}\n latestEpisode={latestEpisode}\n liveLatestEpisode={liveLatestEpisode}\n mvpdData={mvpdData}\n playlist={playlistId}\n preauthorizedResources={preauthorizedResources}\n renderFirstTile={renderFirstTile}\n saveLiveVideo={saveLiveVideo}\n scrolling={scrolling}\n seriesData={seriesData}\n seriesType={seriesType}\n setOverlay={setOverlay}\n tab={item}\n tabName={_.get(item, 'name')}\n tabSlug={tabSlug}\n tabs={tabs}\n toggleMvpdAuthOverlay={toggleMvpdAuthOverlay}\n url={url}\n videoModalProps={videoModalProps}\n videos={videos}\n />\n );\n }\n\n renderSocialLinks(shouldRender) {\n const { breakpoint, inline } = this.props;\n const { socialLinks } = BREAKPOINTS[breakpoint];\n if (!shouldRender || !socialLinks) return null;\n const inlineContent = _.get(inline, 'items.member.0', null);\n if (!inlineContent) return null;\n const links = getSocialLinksFromContent(inlineContent);\n const socialLinkComponent = _.map(links, link => {\n if (!link) return null;\n return (\n <Link\n key={`key-${link.url}`}\n className={style.socialLink}\n to={link.url}\n target=\"_blank\"\n rel={LINK_REL}\n >\n <img src={link.icon} alt={link.name} />\n </Link>\n );\n });\n return <div className={style.socialLinkContainer}>{socialLinkComponent}</div>;\n }\n\n renderTabContent({\n tabs,\n tabIndex,\n subTabIndex,\n isAuthenticated,\n preauthorizedResources,\n pageType,\n }) {\n const { isPersonality } = this.state;\n if (tabIndex === false) return null;\n let item = tabs[tabIndex];\n if (!item) return null;\n if (subTabIndex !== false) item = _.get(item, `children.${subTabIndex}`, item);\n const tabType = _.get(item, '@type', null);\n const seriesType = this.getSeriesType();\n const personalityTabSlug = getPersonalityTabSlug({\n tab: item,\n tabs,\n seriesType,\n isPersonality,\n });\n if (pageType === PAGE_TYPE_PROMO_LIST) {\n return this.renderPromoList();\n }\n\n if (tabType === 'Biography') {\n return PersonalityBio({ item, style, personalityTabSlug });\n }\n\n if (seriesType === SERIES_TYPE_SERIES_COLLECTION) {\n return this.renderSingleTabContent({\n item,\n highlightFirstVideo: false,\n isAuthenticated,\n preauthorizedResources,\n style,\n });\n }\n\n if (SeasonPagesEnabled) {\n const isFirstTab = tabIndex === 0;\n const highlightFirstVideo = isPersonality || isTabGrouped({ tabType, seriesType });\n return this.renderSingleTabContent({\n item,\n renderFirstTile: isFirstTab,\n highlightFirstVideo,\n isAuthenticated,\n preauthorizedResources,\n style,\n });\n }\n\n if (!isPersonality && !isTabGrouped({ tabType, seriesType })) {\n return this.renderSingleTabContent({\n item,\n highlightFirstVideo: false,\n isAuthenticated,\n preauthorizedResources,\n style,\n });\n }\n\n let renderFirstTile = true;\n return tabs.map(tab => {\n const type = _.get(tab, '@type', null);\n if (type !== tabType && !isPersonality) return null;\n const renderedTab = this.renderSingleTabContent({\n item: tab,\n highlightFirstVideo: true,\n renderFirstTile,\n isAuthenticated,\n preauthorizedResources,\n style,\n });\n renderFirstTile = false;\n return renderedTab;\n });\n }\n\n renderTabs() {\n const pageId = this.getPageId();\n const {\n params: { showId, pageType },\n tabs,\n inline,\n setOverlay,\n breakpoint,\n overlay,\n seriesData,\n pageViewEvent,\n isAuthenticated,\n preauthorizedResources,\n seriesType: utagSeriesType,\n } = this.props;\n const { isBrandingClicked, isPersonality, playlist } = this.state;\n if (!tabs) return null;\n\n const seriesType = this.getSeriesType();\n const noTabState = this.noTabState();\n const noTabHomepage = this.noTabHomepage();\n const { actionButtonsInNav } = BREAKPOINTS[breakpoint];\n const { tabIndex, subTabIndex } = this.getCurrentTabIndex();\n\n let tabContent = null;\n if (noTabState) {\n tabContent = this.renderNoTabContent({ noTabState, isAuthenticated, preauthorizedResources });\n }\n\n if (!tabIndex && pageType === PAGE_TYPE_ARTICLE) {\n tabContent = this.renderArticle();\n }\n\n if (!tabContent) {\n tabContent = this.renderTabContent({\n tabs,\n tabIndex,\n subTabIndex,\n isAuthenticated,\n preauthorizedResources,\n pageType,\n });\n }\n return (\n <div className={classNames(['container', style.screenElement])}>\n <TabListComponent\n {...{\n breakpoint,\n favoriteButton: this.renderFavorite(FAVORITE_TYPE_LINK),\n inline,\n isBrandingClicked,\n isPersonality,\n noTabHomepage,\n noTabState,\n overlay,\n pageId,\n pageType,\n pageViewEvent,\n playlist,\n seriesData,\n seriesType,\n setIsBrandingClicked: this.setIsBrandingClicked,\n setOverlay,\n showId,\n socialLinks: this.renderSocialLinks(true),\n subTabIndex: subTabIndex === false ? null : subTabIndex,\n tabIndex,\n tabs,\n togglePlaylist: this.togglePlaylist,\n utagSeriesType,\n }}\n className={style.tabListNav}\n showActionButtons={actionButtonsInNav}\n />\n <div className={style.tabContent}>\n {this.renderFeaturedPromo()}\n {tabContent}\n </div>\n </div>\n );\n }\n\n renderSeriesDetail() {\n const {\n breakpoint,\n errors,\n inline,\n removeVideoHero,\n seriesData,\n setLoading,\n setVideoHero,\n tabs,\n } = this.props;\n\n const { isPersonality, renderAsAnonymous } = this.state;\n if (renderAsAnonymous) return null;\n\n const contentPersonality = _.get(seriesData, 'categoryTags');\n const showId = _.get(inline, '@id', '');\n const paramShowId = _.get(this.props, 'params.showId', '');\n const isCategoriesDetail = _.get(this.props, 'route.params.fetchFromCategories');\n const isSameShowAsTheUrlParam = showId.indexOf(paramShowId) !== -1;\n const showLoader = (!isCategoriesDetail && !isSameShowAsTheUrlParam) || (!inline && !tabs);\n\n const { backgroundVideoLoops } = window.ExternalConfig;\n if (errors) return getErrorComponent(errors);\n if (showLoader) return <Loader data-test=\"loader\" setLoading={setLoading} center />;\n if (contentPersonality) setSegmentContentPersonality(contentPersonality);\n const breadcrumbsData = this.getBreadcrumbsData();\n // SEO: prevent TVSeries schema type from displaying on personalities\n const getSchema = isPersonality ? null : createSeriesDetailSchema;\n\n return (\n <div className={style.screenShows}>\n <VideoHero\n backgroundVideoLoops={backgroundVideoLoops}\n id=\"show-bg\"\n {...this.getVideoHeroProps()}\n className={style.videoHero}\n onMount={setVideoHero}\n onUnmount={removeVideoHero}\n renderImage={image =>\n renderImage({\n breakpoint,\n imageType: SHOW_DETAIL_HERO_IMAGE,\n ...image,\n })\n }\n />\n <StickyContainer>\n {setHelmetTags(this.getSEO())}\n {setHelmetTags({\n tags: [createSchemaTag({ item: seriesData, getSchema })],\n })}\n {this.setOverrideMetatags()}\n {this.renderInline()}\n <Element name={SERIES_SCROLL_ELEMENT}>{this.renderTabs()}</Element>\n </StickyContainer>\n <BreadcrumbsComponent data={breadcrumbsData} />\n </div>\n );\n }\n\n renderSeriesDetailAnonymous() {\n const { breakpoint, disableScroll, promos, seriesData, tabs } = this.props;\n const { contextPlayerVisibility, isPersonality, renderAsAnonymous } = this.state;\n if (!renderAsAnonymous) return null;\n const getSchema = isPersonality ? null : createSeriesDetailSchema;\n const onCloseModal = () => {\n this.setState({ contextPlayerVisibility: false }, () =>\n disableScroll({ disableScroll: false, bodyOnly: false }),\n );\n };\n const video = _.get(seriesData, 'previewVideo.member.0', null);\n if (video) video.isTrailer = true;\n const hasPromos = !_.isEmpty(promos);\n const title = _.get(video, 'name', '');\n const isMobile = breakpoint === SITE_PLATFORM_MOBILE || breakpoint === SITE_PLATFORM_TABLET;\n const promoLeadData = getPromoData({ data: promos, promoType: PROMO_TYPE_LEAD });\n const promoLeadContent = _.get(promoLeadData, 'items.member[0]', []);\n const promoImage = _.get(seriesData, 'images.seriesList.raw');\n const promoLink = _.get(promoLeadContent, 'url', '');\n const promoDescription = _.get(promoLeadContent, 'description', '');\n const promoCTA = _.get(promoLeadContent, 'ctaText', '');\n const promoProps = {\n promoImage,\n promoLogo: '/static/images/nation-logo-230x70.png',\n promoDescription,\n promoCTA,\n };\n const onClickCTA = () => promoLink && redirectToExternalUrl(promoLink);\n const hasLoadedContent = seriesData;\n if (!hasLoadedContent) return <Loader />;\n\n return (\n <div className={classNames(style.screenShows)}>\n {setHelmetTags(this.getSEO())}\n {setHelmetTags({\n tags: [createSchemaTag({ item: seriesData, getSchema })],\n })}\n {this.setOverrideMetatags()}\n {this.renderInline()}\n {hasLoadedContent && <HeadlineBumper promos={promos} />}\n {tabs &&\n tabs.map((panel, index) => {\n const displayTemplate = _.get(panel, 'displayTemplate');\n const isPoster = displayTemplate === 'featured';\n const isClips = _.get(panel, 'videoTypes', []).includes('clip');\n if (isClips) return null;\n return this.renderPanel(panel, isPoster, index !== tabs.length - 1);\n })}\n {hasLoadedContent && hasPromos && <NationWhatIs promos={promos} />}\n {hasLoadedContent && hasPromos && <StartFreeTrial promos={promos} />}\n <ContextPlayer\n isMobile={isMobile}\n onClickCTA={onClickCTA}\n onClose={onCloseModal}\n promo={promoProps}\n title={title}\n visibility={contextPlayerVisibility}\n video={video}\n />\n </div>\n );\n }\n\n render() {\n return (\n <>\n {this.renderSeriesDetailAnonymous()}\n {this.renderSeriesDetail()}\n </>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n calendar: state.seriesDetail.calendar,\n continueWatching: state.seriesDetail.continueWatching,\n favoritableItems: state.seriesDetail.favoritableItems,\n errors: state.seriesDetail.errors,\n id: state.seriesDetail.id,\n inline: makeSelectSeriesDetailInline(state),\n promos: makeSelectSeriesDetailPromos(state),\n seo: makeSelectSeriesDetailSeo(state),\n seriesData: makeSelectSeriesDetailSeriesData(state),\n seriesType: state.seriesDetail.seriesType,\n tabs: makeSelectSeriesDetailTabs(state),\n latestEpisode: makeSelectSeriesDetailLatestEpisode(state),\n recommendationIdData: state.app.recommendationIdData,\n isLatestEpisodeLive: state.seriesDetail.isLatestEpisodeLive,\n articlePanels: state.article.panels,\n bioProfiles: state.bio.profiles,\n };\n}\n\nSeriesDetail.contextTypes = {\n router: PropTypes.shape({}),\n};\n\nSeriesDetail.defaultProps = {\n accessToken: null,\n account: null,\n adblock: false,\n anonymousId: null,\n articlePanels: null,\n authCheckComplete: false,\n authSuccess: false,\n bioProfiles: null,\n continueWatching: null,\n deviceId: null,\n disableScroll: noop,\n errors: null,\n favoritableItems: [],\n favoritesManager: {},\n inline: [],\n isAuthenticated: false,\n isHeader: null,\n isLatestEpisodeLive: null,\n latestEpisode: null,\n mvpdData: null,\n openSignIn: noop,\n openSignUp: noop,\n overlay: null,\n preauthorizedResources: [],\n profileId: null,\n promos: null,\n provider: null,\n recommendationId: null,\n recommendationIdData: null,\n renderAuthContainer: noop,\n route: {},\n seo: null,\n seriesData: null,\n seriesType: null,\n setAccountCloseIgnoreRedirect: noop,\n setIsAuthenticated: noop,\n setIsPlayerLoaded: noop,\n setLoading: null,\n setMVPDLogoutDataToAppState: noop,\n setMVPDToAppState: noop,\n setProvider: noop,\n setRecommendationId: noop,\n tabs: [],\n toggleMvpdAuthOverlay: noop,\n};\n\nSeriesDetail.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n adblock: PropTypes.bool,\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func.isRequired,\n articlePanels: PropTypes.shape({}),\n authCheckComplete: PropTypes.bool,\n authSuccess: PropTypes.bool,\n bioProfiles: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n clearSeriesDetail: PropTypes.func.isRequired,\n continueWatching: PropTypes.arrayOf(PropTypes.shape({})),\n deviceId: PropTypes.string,\n disableScroll: PropTypes.func,\n errors: PropTypes.number,\n favoritableItems: PropTypes.arrayOf(PropTypes.shape({})),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n deleteFavorites: PropTypes.func.isRequired,\n }),\n fetchCategoryDetail: PropTypes.func.isRequired,\n fetchAnonymousCategoryDetail: PropTypes.func.isRequired,\n fetchAnonymousSeries: PropTypes.func.isRequired,\n fetchSeries: PropTypes.func.isRequired,\n getUseUtagGlobal: PropTypes.func.isRequired,\n inline: PropTypes.shape({}),\n isAuthenticated: PropTypes.bool,\n isHeader: PropTypes.bool,\n isLatestEpisodeLive: PropTypes.bool,\n latestEpisode: PropTypes.shape({}),\n mvpdData: PropTypes.shape({}),\n openSignIn: PropTypes.func,\n openSignUp: PropTypes.func,\n overlay: PropTypes.string,\n pageViewEvent: PropTypes.func.isRequired,\n params: PropTypes.shape({\n showId: PropTypes.string,\n }).isRequired,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n profileId: PropTypes.string,\n promos: PropTypes.arrayOf(PropTypes.shape({})),\n provider: PropTypes.func,\n recommendationId: PropTypes.string,\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n removeVideoHero: PropTypes.func.isRequired,\n renderAuthContainer: PropTypes.func,\n route: PropTypes.shape({}),\n saveLiveVideo: PropTypes.func.isRequired,\n seo: PropTypes.shape({}),\n seriesData: PropTypes.shape({}),\n seriesType: PropTypes.string,\n setAccountCloseIgnoreRedirect: PropTypes.func,\n setAuthorizationToken: PropTypes.func.isRequired,\n setInterval: PropTypes.func.isRequired,\n setIsAuthenticated: PropTypes.func,\n setIsPlayerLoaded: PropTypes.func,\n setLoading: PropTypes.func,\n setMVPDLogoutDataToAppState: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setOverlay: PropTypes.func.isRequired,\n setProvider: PropTypes.func,\n setRecommendationId: PropTypes.func,\n setSeriesDetailError: PropTypes.func.isRequired,\n setVideoHero: PropTypes.func.isRequired,\n tabs: PropTypes.arrayOf(PropTypes.shape({})),\n toggleMvpdAuthOverlay: PropTypes.func,\n};\n\nSeriesDetail.fetchData = ({ store, params, location, accessToken }) => {\n const { pathname } = location;\n const { showId, pageType, pageId } = params;\n const pathNameParts = pathname.split('/');\n if (pathNameParts[1] === 'personalities') {\n return store.dispatch(fetchCategoryDetail(showId, accessToken));\n }\n\n return store\n .dispatch(dispatch => dispatch(fetchSeries(showId, accessToken)))\n .then(async response => {\n const panels = _.get(response, 'payload.data.panels.member', null);\n if (!panels) return null;\n if (pageType === 'article') {\n const articleUrl = getArticleApiUrl(pageId);\n return store.dispatch(fetchArticle(articleUrl, accessToken));\n }\n if (pageType === 'credits') {\n return store.dispatch(fetchBioLanding(showId, accessToken)).then(() => {\n if (pageId) {\n const showBrandingPanel = _.find(panels, isInlineComponent);\n const credits = _.get(showBrandingPanel, 'items.member.0.credits.member', []);\n const creditId = getCreditIdFromUrl({ credits, pageId });\n if (creditId) return store.dispatch(fetchBioDetail(creditId, accessToken));\n }\n return null;\n });\n }\n const tabComponents = panels.filter(\n elem => !isInlineComponent(elem) && !isContinueWatchingComponent(elem),\n );\n const tabItems = _.get(tabComponents, '0.items.member', null);\n if (!tabItems) return null;\n\n const inlineComponent = panels.find(isInlineComponent);\n const hasTrailer = hasPrePremiereVideo(inlineComponent);\n const trailer = _.get(inlineComponent, 'items.member.0.previewVideo.member.0', false);\n const noTabHomepage = hasTrailer && trailer && trailer.name ? NO_TAB_STATE_TRAILER : null;\n const calculatedPageId = pageType && pageId ? `${pageType}/${pageId}` : pageId || pageType;\n const noTabState = !calculatedPageId && noTabHomepage ? noTabHomepage : null;\n const seriesType = _.get(inlineComponent, 'items.member.0.seriesType', null);\n const { tabIndex } = getSelectedTabIndex({\n pageId: calculatedPageId,\n tabs: tabItems,\n noTabState,\n noTabHomepage,\n seriesType,\n });\n const selectedTab = tabItems[tabIndex];\n if (!selectedTab) return null;\n\n const url = getTabDataUrl(selectedTab);\n const tabId = selectedTab['@id'];\n if (url) {\n return store.dispatch(fetchVideosTab({ url, accessToken })).then(response => {\n const responseData = _.get(response, 'payload.data', null);\n if (responseData) store.dispatch(setFirstPage(responseData, tabId));\n });\n }\n return store.dispatch(setFirstPage(selectedTab, tabId));\n });\n};\n\nconst TimeoutShow = ReactTimeout(\n connect(mapStateToProps, {\n fetchAnonymousCategoryDetail,\n fetchAnonymousSeries,\n fetchSeries,\n fetchCategoryDetail,\n clearSeriesDetail,\n saveLiveVideo,\n setRecommendationId,\n setSeriesDetailError,\n })(SeriesDetail),\n);\n\nTimeoutShow.fetchData = SeriesDetail.fetchData;\n\nexport default TimeoutShow;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Style from './Header.module.scss';\n\nconst Header = ({ header = '' }) => <h1 className={Style.header}>{header}</h1>;\n\nHeader.propTypes = {\n header: PropTypes.string,\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Style from './Description.module.scss';\n\nconst Description = ({ description = '' }) => (\n <div className={Style.description}>{description}</div>\n);\n\nDescription.propTypes = {\n description: PropTypes.string,\n};\n\nexport default Description;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { isInternalLink } from 'helpers/ContentHelper';\nimport { helperGoToRelativeUrl } from 'helpers/RouteHelper';\nimport Style from './MyRewardsCTA.module.scss';\n\nconst MyRewardsCTA = ({ ctaText = 'Enter the MASKVERSE', rewardUrl = '', onCtaBannerClick }) => {\n const handleCTAClick = e => {\n e.stopPropagation();\n if (isInternalLink(rewardUrl)) {\n helperGoToRelativeUrl(rewardUrl);\n }\n onCtaBannerClick(ctaText);\n };\n\n const ctaProps = {\n className: Style.rewardsCTA,\n onClick: handleCTAClick,\n to: isInternalLink(rewardUrl) ? null : rewardUrl,\n target: isInternalLink(rewardUrl) ? null : '_blank',\n };\n return <Link {...ctaProps}>{ctaText}</Link>;\n};\n\nexport default MyRewardsCTA;\n\nMyRewardsCTA.propTypes = {\n ctaText: PropTypes.string,\n rewardUrl: PropTypes.string.isRequired,\n onCtaBannerClick: PropTypes.func.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { renderImage, NFT_PROMO } from 'helpers/ImageHelper';\nimport Style from './Thumbnail.module.scss';\n\nconst Thumbnail = ({ image = '' }) => (\n <div className={Style.imageContainer}>\n <div className={Style.image}>\n {renderImage({\n className: Style.thumbnail,\n src: image,\n imageType: NFT_PROMO,\n })}\n </div>\n </div>\n);\n\nThumbnail.propTypes = {\n image: PropTypes.string,\n};\n\nexport default Thumbnail;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport Image from 'components/Image';\nimport { NFT_HERO_BACKGROUND } from 'helpers/ImageHelper';\nimport Style from './NFTBanner.module.scss';\nimport Header from './components/Header';\nimport Description from './components/Description';\nimport MyRewardsCTA from './components/MyRewardsCTA';\nimport Thumbnail from './components/Thumbnail';\n\nconst NFTBanner = ({\n ctaText = '',\n description = '',\n header = '',\n images = {},\n rewardUrl = '',\n}) => {\n const onWholeBannerClick = () => {\n handleAnalytics({\n event: Events.BANNER_CLICKED,\n payload: {\n page_item_title: header,\n page_action_location: 'whole banner',\n },\n });\n };\n\n const onCtaBannerClick = (ctaText = '') => {\n handleAnalytics({\n event: Events.BANNER_CLICKED,\n payload: {\n page_button_text: ctaText,\n page_action_location: 'cta',\n },\n });\n };\n\n return (\n <section className={Style.container} onClick={onWholeBannerClick}>\n <Image source={NFT_HERO_BACKGROUND} className={Style.background} />\n <div className={Style.content}>\n <Header header={header} />\n <Description description={description} />\n <MyRewardsCTA ctaText={ctaText} rewardUrl={rewardUrl} onCtaBannerClick={onCtaBannerClick} />\n </div>\n <Thumbnail image={images?.promoImage} />\n </section>\n );\n};\n\nNFTBanner.propTypes = {\n ctaText: PropTypes.string,\n description: PropTypes.string,\n header: PropTypes.string,\n images: PropTypes.shape({}),\n rewardUrl: PropTypes.string,\n};\n\nexport default NFTBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Style from './Header.module.scss';\n\nconst Header = ({ isDropActive = false, isSameDay = false }) => {\n const {\n nft_activeHeader = 'Drop is open!',\n nft_sameDayHeader = 'Upcoming Drop',\n nft_upcomingHeader = 'Upcoming Drop',\n } = window.Language;\n let header = nft_upcomingHeader;\n if (isSameDay) header = nft_sameDayHeader;\n if (isDropActive) header = nft_activeHeader;\n return <h2 className={classnames(Style.header, isDropActive && Style.activeHeader)}>{header}</h2>;\n};\n\nHeader.propTypes = {\n isDropActive: PropTypes.bool,\n isSameDay: PropTypes.bool,\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Style from './Description.module.scss';\n\nconst Description = ({ isDropActive = false, isSameDay = false }) => {\n const {\n nft_activeDescription = 'Join to unlock the surprises.',\n nft_sameDayDescription = 'Get ready for THE MASKED SINGER NFT Drop. Drop Starts in:',\n nft_upcomingDescription = 'Get ready for THE MASKED SINGER NFT Drop. Drop Starts in:',\n } = window.Language;\n let description = nft_upcomingDescription;\n if (isSameDay) description = nft_sameDayDescription;\n if (isDropActive) description = nft_activeDescription;\n return (\n <div className={classnames(Style.description, isDropActive && Style.activeDescription)}>\n {description}\n </div>\n );\n};\n\nDescription.propTypes = {\n isDropActive: PropTypes.bool,\n isSameDay: PropTypes.bool,\n};\n\nexport default Description;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Style from './NFTTitle.module.scss';\n\nconst NFTTitle = ({ dropTime = '', title = '' }) => <div className={Style.title}>{title}</div>;\n\nNFTTitle.propTypes = {\n title: PropTypes.string,\n dropTime: PropTypes.string,\n};\n\nexport default NFTTitle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport VideoTile from 'components/VideoTile';\nimport { renderImage, NFT_THUMBNAIL_LEFT } from 'helpers/ImageHelper';\nimport Style from './NFTThumbnail.module.scss';\n\nconst NFTThumbnail = ({ image = '', video = '' }) =>\n video ? (\n <div className={Style.container}>\n <div className={Style.thumbnailContainer}>\n <VideoTile\n data-test=\"nft-left-video\"\n id={`nft-left-video-${video}`}\n image={image}\n load\n loop\n play\n renderImage={opts => renderImage({ ...opts, imageType: NFT_THUMBNAIL_LEFT })}\n timer={0}\n video={video}\n videoPosterStyle={Style.thumbnail}\n videoStyle={Style.videoThumbnail}\n />\n </div>\n </div>\n ) : (\n <div className={Style.imageContainer}>\n <div className={Style.image}>\n {renderImage({\n className: Style.nftImage,\n src: image,\n imageType: NFT_THUMBNAIL_LEFT,\n })}\n </div>\n </div>\n );\n\nNFTThumbnail.propTypes = {\n image: PropTypes.string,\n video: PropTypes.string,\n};\n\nexport default NFTThumbnail;\n","import {\n stringToDate,\n isSameDay,\n isAfter,\n now,\n format,\n guessTZ,\n getTimeZoneAbbr,\n formatToTwoDigitsTimezone,\n FORMAT_MONTH_DAY_LONG,\n FORMAT_HOUR,\n} from 'helpers/DateTimeHelper';\n\nexport const isDropped = (time, currentTime = now()) => isAfter(currentTime, stringToDate(time));\nexport const isCurrentDay = (time, currentTime = now()) =>\n isSameDay(stringToDate(time), currentTime);\n\nexport const getBroadcastDate = time => {\n let timezone = guessTZ();\n const date = stringToDate(time);\n if (!timezone || timezone.length < 3) {\n timezone = 'America/Los_Angeles';\n }\n const abbr = getTimeZoneAbbr(now(), 'z', timezone);\n const shortAbbr = formatToTwoDigitsTimezone(abbr);\n return `${format(date, FORMAT_MONTH_DAY_LONG)} at ${format(date, FORMAT_HOUR)} ${shortAbbr}`;\n};\n\nexport const getRemainingTime = (time, currentTime = now()) => {\n const total = Date.parse(stringToDate(time)) - Date.parse(currentTime);\n return {\n days: Math.floor(total / (1000 * 60 * 60 * 24)),\n hours: Math.floor((total / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((total / 1000 / 60) % 60),\n seconds: Math.floor((total / 1000) % 60),\n total,\n };\n};\n\nexport const getMiddleColor = (hexColor1 = '#000000', hexColor2 = '#000000') => {\n const convertHexToDec = (numberString = '0') => parseInt(numberString, 16);\n const convertDecToHex = (number = 0) =>\n number < 16 ? `0${number.toString(16)}` : number.toString(16);\n\n const middleColor = {\n r:\n (convertHexToDec(hexColor1.substring(1, 3)) + convertHexToDec(hexColor2.substring(1, 3))) / 2,\n g:\n (convertHexToDec(hexColor1.substring(3, 5)) + convertHexToDec(hexColor2.substring(3, 5))) / 2,\n b:\n (convertHexToDec(hexColor1.substring(5, 7)) + convertHexToDec(hexColor2.substring(5, 7))) / 2,\n };\n const { r, g, b } = middleColor;\n return `#${convertDecToHex(r)}${convertDecToHex(g)}${convertDecToHex(b)}`;\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { getRemainingTime, getMiddleColor } from '../../NFThelper';\nimport Style from './DropTimer.module.scss';\n\nconst DropTimeEntry = React.memo(({ background = '', title = '', value = 0 }) => (\n <div className={Style.dropTimeEntry} style={{ background }}>\n <div className={Style.dropTimeValue}>{`${value < 10 ? '0' : ''}${value < 0 ? 0 : value}`}</div>\n <div className={Style.dropTimeTitle}>{title}</div>\n </div>\n));\n\nconst DropTimer = ({\n dropTime = '',\n endColor = '#832376',\n isDropActive = false,\n setIsDropActive = () => {},\n setIsSameDay = () => {},\n startColor = '#2F2B82',\n}) => {\n const initTimeRemaining = getRemainingTime(dropTime);\n const [days, setDays] = useState(initTimeRemaining?.days);\n const [hours, setHours] = useState(initTimeRemaining?.hours);\n const [minutes, setMinutes] = useState(initTimeRemaining?.minutes);\n const [seconds, setSeconds] = useState(initTimeRemaining?.seconds);\n const [counter, setCounter] = useState(initTimeRemaining?.total);\n\n useEffect(() => {\n let intervalId;\n if (days === 0) setIsSameDay(true);\n if (counter > -1) {\n intervalId = setInterval(() => {\n const timeRemaining = getRemainingTime(dropTime);\n setDays(timeRemaining?.days);\n setHours(timeRemaining?.hours);\n setMinutes(timeRemaining?.minutes);\n setSeconds(timeRemaining?.seconds);\n setCounter(timeRemaining?.total);\n }, 1000);\n } else {\n setIsDropActive(true);\n }\n return () => clearInterval(intervalId);\n }, [counter]);\n if (isDropActive) return null;\n const getBackground = (hexColor1, hexColor2, percentage) =>\n `linear-gradient(-180deg, rgba(255, 255, 255, 0.15) 0%, rgba(0, 0, 0, 0.15) 100%),\n linear-gradient(90deg, ${hexColor1}, ${hexColor2} ${percentage}%)`;\n const middleColor = getMiddleColor(startColor, endColor);\n return (\n <div className={Style.dropTimer}>\n <div className={Style.timerContainer}>\n <DropTimeEntry\n background={getBackground(startColor, startColor, 100)}\n title=\"Days\"\n value={days}\n />\n <DropTimeEntry\n background={getBackground(startColor, endColor, 200)}\n title=\"Hours\"\n value={hours}\n />\n <DropTimeEntry\n background={getBackground(middleColor, endColor, 100)}\n title=\"Minutes\"\n value={minutes}\n />\n <DropTimeEntry\n background={getBackground(startColor, endColor, 0)}\n title=\"Seconds\"\n value={seconds}\n />\n </div>\n </div>\n );\n};\n\nDropTimeEntry.propTypes = {\n background: PropTypes.string,\n title: PropTypes.string,\n value: PropTypes.number,\n};\n\nDropTimer.propTypes = {\n dropTime: PropTypes.string,\n endColor: PropTypes.string,\n isDropActive: PropTypes.bool,\n setIsDropActive: PropTypes.func,\n setIsSameDay: PropTypes.func,\n startColor: PropTypes.string,\n};\n\nexport default DropTimer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { isInternalLink } from 'helpers/ContentHelper';\nimport { helperGoToRelativeUrl } from 'helpers/RouteHelper';\nimport Style from './DropCTA.module.scss';\n\nconst DropCTA = ({ ctaText = '', dropUrl = '', onCtaBannerClick }) => {\n const handleCTAClick = e => {\n e.stopPropagation();\n if (isInternalLink(dropUrl)) {\n helperGoToRelativeUrl(dropUrl);\n }\n onCtaBannerClick();\n };\n\n const ctaProps = {\n className: Style.dropCTA,\n onClick: handleCTAClick,\n to: dropUrl && !isInternalLink(dropUrl) ? dropUrl : null,\n target: isInternalLink(dropUrl) ? null : '_blank',\n };\n\n return <Link {...ctaProps}>{ctaText}</Link>;\n};\n\nexport default DropCTA;\n\nDropCTA.propTypes = {\n ctaText: PropTypes.string,\n dropUrl: PropTypes.string.isRequired,\n onCtaBannerClick: PropTypes.func.isRequired,\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport VideoTile from 'components/VideoTile';\nimport { renderImage, NFT_THUMBNAIL_RIGHT } from 'helpers/ImageHelper';\nimport Style from './Thumbnail.module.scss';\n\nconst Thumbnail = ({ image = '', noPrevious = false, video = '' }) =>\n video ? (\n <div className={Style.container}>\n <div className={Style.thumbnailContainer}>\n <VideoTile\n data-test=\"nft-right-video\"\n id={`nft-right-video-${video}`}\n image={image}\n load\n loopxs\n play\n renderImage={opts => renderImage({ ...opts, imageType: NFT_THUMBNAIL_RIGHT })}\n timer={0}\n video={video}\n videoPosterStyle={Style.thumbnail}\n videoStyle={Style.videoThumbnail}\n />\n </div>\n </div>\n ) : (\n <div className={Style.imageContainer}>\n <div className={classNames(Style.image, noPrevious && Style.noPrevImage)}>\n {renderImage({\n className: Style.nftImage,\n src: image,\n imageType: NFT_THUMBNAIL_RIGHT,\n })}\n </div>\n </div>\n );\n\nThumbnail.propTypes = {\n image: PropTypes.string,\n noPrevious: PropTypes.bool,\n video: PropTypes.string,\n};\n\nexport default Thumbnail;\n","import React, { useState } from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport Style from './NFTModule.module.scss';\nimport Header from './components/Header';\nimport Description from './components/Description';\nimport NFTTitle from './components/NFTTitle';\nimport NFTThumbnail from './components/NFTThumbnail';\nimport DropTimer from './components/DropTimer';\nimport DropCTA from './components/DropCTA';\nimport Thumbnail from './components/Thumbnail';\nimport { isDropped, isCurrentDay } from './NFThelper';\n\nconst NFTModule = ({\n ctaText = '',\n dropUrl = '',\n endDate = '',\n images = {},\n nftName = '',\n videos = {},\n}) => {\n const [isSameDay, setIsSameDay] = useState(isCurrentDay(endDate));\n const [isDropActive, setIsDropActive] = useState(isDropped(endDate));\n const onWholeBannerClick = () => {\n handleAnalytics({\n event: Events.BANNER_CLICKED,\n payload: {\n page_item_title: nftName,\n page_action_location: 'whole banner',\n },\n });\n };\n\n const onCtaBannerClick = () => {\n handleAnalytics({\n event: Events.BANNER_CLICKED,\n payload: {\n page_button_text: ctaText,\n page_action_location: 'cta',\n },\n });\n };\n\n return (\n <>\n <div className={Style.gradientDivider} />\n <section onClick={onWholeBannerClick}>\n <div className={Style.container}>\n {images?.left && (\n <div className={Style.NFTContainer}>\n <NFTTitle title={nftName} />\n <NFTThumbnail image={images?.left} video={videos?.nftDefaultLeft?.url} />\n </div>\n )}\n {images?.left && <div className={Style.divider} />}\n <div\n className={classnames(\n Style.contentContainer,\n !images.left && Style.noPrevContentContainer,\n )}\n >\n <div className={classnames(Style.content, isDropActive && Style.activeDropContent)}>\n <Header isSameDay={isSameDay} isDropActive={isDropActive} />\n <Description isSameDay={isSameDay} isDropActive={isDropActive} />\n <DropTimer\n isDropActive={isDropActive}\n setIsSameDay={setIsSameDay}\n setIsDropActive={setIsDropActive}\n dropTime={endDate}\n />\n <DropCTA ctaText={ctaText} dropUrl={dropUrl} onCtaBannerClick={onCtaBannerClick} />\n </div>\n <Thumbnail\n image={images?.right}\n video={videos?.nftDefaultRight?.url}\n noPrevious={!images.left}\n />\n </div>\n </div>\n </section>\n </>\n );\n};\n\nNFTModule.propTypes = {\n ctaText: PropTypes.string,\n dropUrl: PropTypes.string,\n endDate: PropTypes.string,\n images: PropTypes.shape({}),\n nftName: PropTypes.string,\n videos: PropTypes.shape({}),\n};\n\nexport default NFTModule;\n","import { useState } from 'react';\n\nfunction useBoolean(defaultValue) {\n const [value, setValue] = useState(!!defaultValue);\n\n const setTrue = () => setValue(true);\n const setFalse = () => setValue(false);\n const toggle = () => setValue(x => !x);\n\n return { value, setValue, setTrue, setFalse, toggle };\n}\n\nexport default useBoolean;\n","/* eslint-disable consistent-return */\nimport { useEffect, useLayoutEffect, useState } from 'react';\n\nfunction useLockedBody(initialLocked = false) {\n const [locked, setLocked] = useState(initialLocked);\n\n useLayoutEffect(() => {\n if (!locked) {\n return;\n }\n\n const originalOverflow = document.body.style.overflow;\n const originalPaddingRight = document.body.style.paddingRight;\n\n document.body.style.overflow = 'hidden';\n\n const root = document.getElementById('app-root');\n const scrollBarWidth = root ? root.offsetWidth - root.scrollWidth : 0;\n\n if (scrollBarWidth) {\n document.body.style.paddingRight = `${scrollBarWidth}px`;\n }\n\n return () => {\n document.body.style.overflow = originalOverflow;\n\n if (scrollBarWidth) {\n document.body.style.paddingRight = originalPaddingRight;\n }\n };\n }, [locked]);\n\n useEffect(() => {\n if (locked !== initialLocked) {\n setLocked(initialLocked);\n }\n }, [initialLocked]);\n\n return [locked, setLocked];\n}\n\nexport default useLockedBody;\n","import { useEffect, useState } from 'react';\n\nfunction useWindowSize() {\n const [windowSize, setWindowSize] = useState({\n width: 0,\n height: 0,\n });\n\n useEffect(() => {\n const handler = () => {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n\n handler();\n\n window.addEventListener('resize', handler);\n\n return () => {\n window.removeEventListener('resize', handler);\n };\n }, []);\n\n return windowSize;\n}\n\nexport default useWindowSize;\n","import { useEffect, useState } from 'react';\nimport useWindowSize from './useWindowSize';\n\nfunction useBreakpoint() {\n const [breakpoint, setBreakPoint] = useState('');\n const { width } = useWindowSize();\n const siteBreakpoints = window?.ExternalConfig?.breakpoints?.site;\n\n const breakpoints = {\n 375: siteBreakpoints.mobile,\n 768: siteBreakpoints.tablet,\n 1024: siteBreakpoints.web,\n 2560: siteBreakpoints.webLarge,\n };\n\n useEffect(() => {\n if (width > 0 && width <= 375) {\n setBreakPoint(breakpoints[375]);\n }\n if (width > 375 && width <= 768) {\n setBreakPoint(breakpoints[768]);\n }\n if (width > 768 && width <= 1024) {\n setBreakPoint(breakpoints[1024]);\n }\n if (width > 1024 && width < 2560) {\n setBreakPoint(breakpoints[1024]);\n }\n if (width >= 2560) {\n setBreakPoint(breakpoints[2560]);\n }\n }, [width]);\n\n return breakpoint;\n}\n\nexport default useBreakpoint;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './Overlay.module.scss';\n\nconst Overlay = ({ children }) => (\n <a className={style.modal} type=\"button\">\n {children}\n </a>\n);\n\nOverlay.propTypes = {\n children: PropTypes.node.isRequired,\n};\nexport default Overlay;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from 'screens/ContentDetail/components/Overlay/Overlay.module.scss';\nimport Overlay from 'screens/ContentDetail/components/Overlay';\n\nconst Modal = ({\n description,\n handleOverlayClick,\n id,\n handleCloseModal,\n modalRef,\n name,\n showModal,\n}) => {\n if (!showModal) return null;\n return (\n <Overlay ref={modalRef} id={id} onClick={handleOverlayClick}>\n <div className={style.inner}>\n <div className={style.title}>{name}</div>\n <div className={style.description}>{description}</div>\n <div className={style.close} onClick={handleCloseModal} />\n </div>\n </Overlay>\n );\n};\n\nModal.propTypes = {\n description: PropTypes.string,\n handleCloseModal: PropTypes.func,\n handleOverlayClick: PropTypes.func,\n id: PropTypes.string,\n modalRef: PropTypes.shape({}),\n name: PropTypes.string,\n showModal: PropTypes.bool,\n};\nexport default Modal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Heading.module.scss';\n\nconst propTypes = {\n title: PropTypes.string.isRequired,\n};\n\n// TODO: make compatible with series detail headings with drop downs\nconst Heading = ({ title = '' }) => <h2 className={styles.h2}>{title}</h2>;\n\nHeading.propTypes = propTypes;\nexport default Heading;\n","import React from 'react';\nimport Style from './Divider.module.scss';\n\nconst Divider = () => <hr className={Style.dividerLine} />;\n\nexport default Divider;\n","import { createSelectorCreator, defaultMemoize } from 'reselect';\nimport _ from 'lodash';\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _.isEqual);\n\nconst selectSeriesDetailSeriesData = state => state.seriesDetail.seriesData;\n\n// eslint-disable-next-line import/prefer-default-export\nexport const makeSelectSeriesDetailSeriesData = createDeepEqualSelector(\n selectSeriesDetailSeriesData,\n seriesData => seriesData,\n);\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport _ from 'lodash';\nimport Style from './SocialIcons.module.scss';\nimport Icon from '../../../../../components/Icon';\nimport { makeSelectSeriesDetailSeriesData } from '../../../selectors';\n\nconst SocialIcons = () => {\n const data = useSelector(makeSelectSeriesDetailSeriesData);\n const { facebookId, instagramId, twitterId, youtubeId } = data;\n\n const buildSocials = content => {\n const socials = [\n {\n name: 'Facebook',\n key: 'facebookId',\n icon: 'fb-logo',\n format: id => `https://www.facebook.com/${id}/`,\n },\n {\n name: 'Twitter',\n key: 'twitterId',\n icon: 'twitter-logo',\n format: id => `https://twitter.com/${id}`,\n },\n {\n name: 'Instagram',\n key: 'instagramId',\n icon: 'instagram',\n format: id => `https://www.instagram.com/${id}/`,\n },\n {\n name: 'Youtube',\n key: 'youtubeId',\n icon: 'youtube',\n format: id => `https://www.youtube.com/c/${id}/`,\n },\n ];\n return socials.map(item => {\n const id = _.get(content, item.key);\n if (!id) return null;\n const { key, name } = item;\n const url = item.format(id);\n const { icon } = item;\n return { key, name, url, icon };\n });\n };\n\n const socials = buildSocials({\n facebookId,\n instagramId,\n twitterId,\n youtubeId,\n });\n return (\n <div className={Style.social}>\n {socials.map(item => {\n if (!item) return null;\n return (\n <div key={item.key} className={Style.icon}>\n <a href={item.url} target=\"_blank\" rel=\"noopener noreferrer\" title={item.name}>\n <Icon size=\"medium-large\" viewBox=\"0 0 1024 1024\" color=\"white\" icon={item.icon} />\n </a>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default SocialIcons;\n","import React, { useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { isMovieSeries, isSpecial, truncateText } from 'helpers/ContentHelper';\nimport { useBoolean, useLockedBody, useBreakpoint } from 'hooks';\nimport Modal from '../Modal';\nimport Heading from '../Heading';\nimport Divider from '../Divider';\nimport SocialIcons from './components/SocialIcons';\n\nimport { makeSelectSeriesDetailSeriesData } from '../../selectors';\n\nimport Style from './AboutV2.module.scss';\n\nconst About = () => {\n const data = useSelector(makeSelectSeriesDetailSeriesData);\n const { name, description: shortDescription, longDescription, seriesType } = data;\n const { value: showModal, setTrue, setFalse } = useBoolean(false);\n const [locked, setLocked] = useLockedBody();\n const breakpoint = useBreakpoint();\n const modalRef = useRef();\n\n const {\n seriesDetail_aboutLabel: aboutLabel,\n seriesDetail_aboutTheShowLabel: aboutTheShowLabel,\n global_moreButton: moreButtonLabel,\n } = window.Language;\n\n const aboutHeaderText =\n isMovieSeries(seriesType) || isSpecial(seriesType) ? aboutLabel : aboutTheShowLabel;\n\n const maxChars = {\n [SITE_PLATFORM_WEB_LARGE]: 1400,\n [SITE_PLATFORM_WEB]: 700,\n [SITE_PLATFORM_TABLET]: 250,\n [SITE_PLATFORM_MOBILE]: 180,\n };\n\n const makeMaxChars = () => maxChars[breakpoint];\n const description = longDescription || shortDescription || '';\n const truncatedDescription = truncateText(description, makeMaxChars());\n const showButton = description.length > makeMaxChars();\n\n const handleOverlayClick = e => {\n const { id: refId } = modalRef.current;\n const { id: targetId } = e.target;\n if (refId === targetId) handleCloseModal();\n };\n\n const handleOpenModal = () => {\n setTrue();\n setLocked(!locked);\n };\n const handleCloseModal = () => {\n setFalse();\n setLocked(!locked);\n };\n\n const modalProps = {\n description: longDescription || shortDescription,\n handleOverlayClick,\n id: 'modal',\n modalRef,\n name,\n showModal,\n };\n\n return (\n <>\n <section className={Style.about}>\n <Heading title={aboutHeaderText} />\n <div className={Style.wrap}>\n <div className={Style.description}>\n <p>\n {truncatedDescription}\n {!showButton ? null : (\n <button\n onClick={() => handleOpenModal()}\n type=\"button\"\n aria-label={moreButtonLabel}\n >\n {moreButtonLabel}\n </button>\n )}\n </p>\n </div>\n <SocialIcons />\n </div>\n <Modal handleCloseModal={handleCloseModal} {...modalProps} />\n </section>\n <Divider />\n </>\n );\n};\n\nexport default About;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { getDynamicImage, SERIES_DETAIL_HERO_IMAGE } from 'helpers/ImageHelper';\n\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n isMobileBreakpoint,\n} from 'helpers/BreakpointHelper';\nimport Style from './Background.module.scss';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n imageSrc: 'images.seriesDetail.raw',\n altText: 'images.seriesDetail.altText',\n },\n [SITE_PLATFORM_WEB]: {\n imageSrc: 'images.seriesDetail.raw',\n altText: 'images.seriesDetail.altText',\n },\n [SITE_PLATFORM_TABLET]: {\n imageSrc: 'images.seriesDetail.raw',\n altText: 'images.seriesDetail.altText',\n },\n [SITE_PLATFORM_MOBILE]: {\n imageSrc: 'images.keyart_tablet_landscape.raw',\n altText: 'images.keyart_tablet_landscape.altText',\n },\n};\n\nconst Background = ({ item = {}, breakpoint = SITE_PLATFORM_WEB }) => {\n const { imageSrc, altText } = BREAKPOINTS[breakpoint];\n useEffect(() => {\n const backgroundImage = document.getElementById('backgroundImage');\n let opacity = 1;\n let transformY;\n\n const opacityChange = () => {\n const yScrollPosition = window.scrollY;\n\n const currScrollPos2 =\n window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;\n if (currScrollPos2 <= 500) {\n opacity = (-currScrollPos2 * 0.75) / 500 + 1;\n } else {\n opacity = 0.25;\n }\n\n transformY = yScrollPosition * 0.2;\n\n const css = (element, styles) => {\n const el = element;\n Object.keys(styles).forEach(key => {\n el.style[key] = styles[key];\n });\n };\n\n const setTransformY = `translateY(${transformY}px)`;\n css(backgroundImage, { opacity, transform: setTransformY });\n requestAnimationFrame(opacityChange);\n };\n\n window.addEventListener('scroll', opacityChange);\n return () => {\n window.removeEventListener('scroll', opacityChange);\n };\n }, []);\n const name = _.get(item, 'name');\n const image = _.get(item, imageSrc);\n const alt = _.get(item, altText, name);\n\n const isMobile = isMobileBreakpoint(breakpoint);\n\n const fallbackImage = isMobile\n ? _.get(item, 'images.still.raw') ||\n _.get(item, 'images.seriesDetail.raw') ||\n _.get(item, 'images.seriesList.raw')\n : _.get(item, 'images.seriesList.raw') || _.get(item, 'images.still.raw');\n const url = image || fallbackImage;\n const backgroundImage = getDynamicImage({ breakpoint, context: SERIES_DETAIL_HERO_IMAGE, url });\n return (\n <div className={Style.background} id=\"backgroundImage\">\n <img src={backgroundImage} alt={alt} />\n </div>\n );\n};\n\nBackground.propTypes = {\n item: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n};\nexport default Background;\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport _ from 'lodash';\nimport { getDynamicImage, SHOW_DETAIL_CAST_ROUND_THUMBNAIL_IMAGE } from 'helpers/ImageHelper';\nimport Style from './CastMember.module.scss';\n\nconst CastInitials = info => {\n let initials = '';\n if (info.name) {\n initials = info.name.match(/\\b\\w/g) || [];\n initials = initials.join('').toUpperCase();\n }\n\n return (\n <div className={Style.missingCastImage}>\n <div className={Style.castInitials}>{initials}</div>\n </div>\n );\n};\n\nconst CastMember = ({\n breakpoint,\n disableScroll,\n index,\n info,\n isCast = true,\n opensOverlay = false,\n setCastDetail,\n showCode,\n}) => {\n const imageUrl = _.get(info, 'images.bioDetail');\n const bioAltText = _.get(info, 'images.altText', '');\n const dynamicImageUrl = getDynamicImage({\n breakpoint,\n context: SHOW_DETAIL_CAST_ROUND_THUMBNAIL_IMAGE,\n url: imageUrl,\n });\n const image = imageUrl ? (\n <img className={Style.castImage} src={dynamicImageUrl} alt={bioAltText} />\n ) : (\n CastInitials(info)\n );\n const onClick = () => {\n if (setCastDetail) setCastDetail({ info, index });\n disableScroll({ disableScroll: true, bodyOnly: true });\n };\n const imageClass = imageUrl ? Style.imageButton : Style.missingImageButton;\n const imageButton = image => (\n <button className={imageClass} onClick={onClick} type=\"button\" aria-label=\"Cast Picture\">\n {image}\n </button>\n );\n\n const imageLink = image => (\n <Link\n className={imageClass}\n to={`/${showCode}/${isCast ? 'credits' : 'characters'}/${info.alternateId}/`}\n onlyActiveOnIndex\n >\n {image}\n </Link>\n );\n\n return (\n <div\n className={classNames(Style.castMemberContainer, opensOverlay && Style.carouselCastMember)}\n >\n {opensOverlay ? imageButton(image) : imageLink(image)}\n <div className={Style.castNamesContainer}>\n <a onClick={onClick}>\n <div className={Style.actorName}>{info.name}</div>\n </a>\n {info.characterName && <div className={Style.characterName}>{info.characterName}</div>}\n </div>\n </div>\n );\n};\n\nCastMember.propTypes = {\n breakpoint: PropTypes.string,\n disableScroll: PropTypes.func,\n index: PropTypes.number,\n info: PropTypes.shape({}),\n isCast: PropTypes.bool,\n opensOverlay: PropTypes.bool,\n setCastDetail: PropTypes.func,\n showCode: PropTypes.string,\n};\n\nexport default CastMember;\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Slider from 'react-slick';\nimport Icon from 'components/Icon';\nimport CastMember from '../CastMember';\nimport Style from './CastSlider.module.scss';\n\nconst PrevArrow = ({ className, onClick }) => (\n <button\n className={classNames(className, Style.prevArrow)}\n onClick={onClick}\n type=\"button\"\n data-role=\"none\"\n aria-label=\"show previous content\"\n >\n <Icon color=\"white\" viewBox=\"0 0 43 44\" icon=\"carousel-arrow-left\" />\n </button>\n);\n\nPrevArrow.propTypes = {\n className: PropTypes.string,\n onClick: PropTypes.func,\n};\n\nconst NextArrow = ({ className, onClick }) => (\n <button\n className={classNames(className, Style.nextArrow)}\n onClick={onClick}\n type=\"button\"\n aria-label=\"show next content\"\n data-role=\"none\"\n >\n <Icon color=\"white\" viewBox=\"0 0 43 44\" icon=\"carousel-arrow-right\" />\n </button>\n);\n\nNextArrow.propTypes = {\n className: PropTypes.string,\n onClick: PropTypes.func,\n};\n\nconst settings = {\n speed: 500,\n infinite: false,\n slidesToShow: 10,\n slidesToScroll: 10,\n initialSlide: 0,\n prevArrow: <PrevArrow />,\n nextArrow: <NextArrow />,\n responsive: [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 5,\n slidesToScroll: 5,\n },\n },\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 5,\n slidesToScroll: 5,\n },\n },\n {\n breakpoint: 1439,\n settings: {\n slidesToShow: 6,\n slidesToScroll: 6,\n },\n },\n {\n breakpoint: 2559,\n settings: {\n slidesToShow: 6,\n slidesToScroll: 6,\n },\n },\n {\n breakpoint: 2560,\n settings: {\n slidesToShow: 10,\n slidesToScroll: 10,\n },\n },\n ],\n};\n\nconst CastSlider = ({ castArray, setCastDetail, disableScroll, breakpoint }) => {\n const castMembers = castArray.map((castMember, index) => (\n <CastMember\n key={castMember.id}\n info={castMember}\n index={index}\n setCastDetail={setCastDetail}\n disableScroll={disableScroll}\n breakpoint={breakpoint}\n opensOverlay\n />\n ));\n\n return (\n <>\n <div className={Style.desktopCast}>\n <Slider {...settings}>{castMembers}</Slider>\n </div>\n <div className={Style.mobileCast}>{castMembers}</div>\n </>\n );\n};\n\nCastSlider.propTypes = {\n breakpoint: PropTypes.string,\n castArray: PropTypes.arrayOf(PropTypes.shape({})),\n setCastDetail: PropTypes.func,\n disableScroll: PropTypes.func,\n};\n\nexport default CastSlider;\n","/* eslint-disable no-console, no-eval, react/no-danger */\nimport React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport DOMPurify from 'dompurify';\nimport { getDynamicImage, SHOW_DETAIL_CAST_ROUND_THUMBNAIL_IMAGE } from 'helpers/ImageHelper';\nimport { fetchBioDetail } from 'screens/SeriesDetail/components/Bio/BioActions';\nimport {\n getPurifyConfig,\n IFRAME_TEST_PATTERN,\n SCRIPT_TEST_PATTERN,\n} from 'components/Article/ArticleHelpers';\nimport Style from './CastDetail.module.scss';\n\nconst CastInitials = info => {\n let initials = '';\n if (info.name) {\n initials = info.name.match(/\\b\\w/g) || [];\n initials = initials.join('').toUpperCase();\n }\n return (\n <div className={Style.missingCastImage}>\n <div className={Style.castInitials}>{initials}</div>\n </div>\n );\n};\n\nconst CastDetail = ({\n accessToken,\n breakpoint,\n isModal = false,\n detail = {},\n prevArrow,\n nextArrow,\n}) => {\n const { id } = detail;\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(fetchBioDetail(id, accessToken));\n }, [detail, accessToken, dispatch, id]);\n\n const handleEmbedScripts = articleBody => {\n const script = SCRIPT_TEST_PATTERN.exec(articleBody);\n try {\n if (window && script && script[1]) window.eval(script[1]);\n } catch (e) {\n console.debug('Embed Script error: ', e);\n }\n return script && script[0] ? articleBody.replace(script[0], '') : articleBody;\n };\n const imageUrl = _.get(detail, 'images.bioDetail');\n const bioAltText = _.get(detail, 'images.altText');\n const dynamicImageUrl = getDynamicImage({\n breakpoint,\n context: SHOW_DETAIL_CAST_ROUND_THUMBNAIL_IMAGE,\n url: imageUrl,\n });\n const image = imageUrl ? (\n <img className={Style.castImage} src={dynamicImageUrl} alt={bioAltText} />\n ) : (\n CastInitials(detail)\n );\n const imageClass = imageUrl ? Style.imageButton : Style.missingImageButton;\n const { characterName, longBio, name } = detail;\n let sanitizedBio = handleEmbedScripts(longBio);\n if (!IFRAME_TEST_PATTERN.test(longBio)) {\n sanitizedBio = DOMPurify.sanitize(longBio, getPurifyConfig());\n }\n return (\n <div className={isModal ? Style.modal : ''}>\n <div className={Style.castImageContainer}>\n {prevArrow}\n <div className={imageClass}>{image}</div>\n {nextArrow}\n </div>\n {isModal ? (\n <div className={Style.actorName}>{name}</div>\n ) : (\n <h1 className={Style.actorName}>{name}</h1>\n )}\n <div className={Style.characterName}>{characterName}</div>\n <div className={Style.bio} dangerouslySetInnerHTML={{ __html: sanitizedBio }} />\n </div>\n );\n};\n\nCastDetail.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string,\n detail: PropTypes.shape({}),\n isModal: PropTypes.bool,\n prevArrow: PropTypes.shape({}),\n nextArrow: PropTypes.shape({}),\n};\n\nexport default CastDetail;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport Style from 'screens/ContentDetail/components/Overlay/Overlay.module.scss';\nimport Overlay from 'screens/ContentDetail/components/Overlay';\nimport CastDetail from '../CastDetail';\n\nconst CastOverlay = ({ breakpoint, castInfo, castDetail, setCastDetail, disableScroll }) => {\n if (!castDetail) return null;\n\n const castArray = castInfo[castDetail.info.category];\n const { info, index } = castDetail;\n const renderArrows = castArray.length !== 1;\n const nextCast = index === castArray.length - 1 ? 0 : index + 1;\n const prevCast = index === 0 ? castArray.length - 1 : index - 1;\n\n const nextArrow = renderArrows ? (\n <button\n className={Style.nextCastArrow}\n onClick={() => {\n setCastDetail({ info: castArray[nextCast], index: nextCast });\n }}\n >\n <Icon color=\"white\" size=\"medium\" viewBox=\"0 0 25 42\" icon=\"ios-arrow-right\" />\n </button>\n ) : null;\n\n const prevArrow = renderArrows ? (\n <button\n className={Style.prevCastArrow}\n onClick={() => {\n setCastDetail({ info: castArray[prevCast], index: prevCast });\n }}\n >\n <Icon color=\"white\" size=\"medium\" viewBox=\"0 0 25 42\" icon=\"ios-arrow-left\" />\n </button>\n ) : null;\n\n return (\n <Overlay\n onClick={() => {\n setCastDetail(null);\n disableScroll({ disableScroll: false });\n }}\n >\n <div\n className={Style.inner}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n <button\n className={Style.close}\n type=\"button\"\n onClick={() => {\n setCastDetail(null);\n disableScroll({ disableScroll: false });\n }}\n />\n <CastDetail\n breakpoint={breakpoint}\n detail={info}\n nextArrow={nextArrow}\n prevArrow={prevArrow}\n isModal\n />\n </div>\n </Overlay>\n );\n};\n\nCastOverlay.propTypes = {\n breakpoint: PropTypes.string,\n castInfo: PropTypes.arrayOf(PropTypes.shape({})),\n castDetail: PropTypes.shape({}),\n setCastDetail: PropTypes.func,\n disableScroll: PropTypes.func,\n};\n\nexport default CastOverlay;\n","import React, { useState } from 'react';\nimport { Link } from 'react-router';\nimport { animateScroll } from 'react-scroll';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport CastSlider from './CastSlider';\nimport CastOverlay from './CastOverlay';\nimport Divider from '../Divider';\nimport Style from './Cast.module.scss';\n\nconst Cast = ({\n castInfo,\n disableScroll,\n breakpoint,\n contentCode,\n isCast = true,\n setCastArray,\n}) => {\n const [castDetail, setCastDetail] = useState(null);\n\n const { tileGrid_seeAllButtonText: seeAllText } = window.Language;\n\n return (\n castInfo &&\n Object.keys(castInfo).map(key => (\n <>\n <section className={Style.castContainer}>\n <h2 className={Style.castHeader}>{`Meet the ${castInfo[key][0].category}`}</h2>\n <Link\n className={Style.seeAllButton}\n to={`/${contentCode}/${isCast ? 'credits' : 'characters'}/`}\n onClick={() => {\n setCastArray(castInfo[key]);\n animateScroll.scrollToTop({ duration: 500 });\n }}\n >\n {seeAllText}\n <Icon color=\"white\" size=\"medium\" viewBox=\"0 0 18 32\" icon=\"ios-arrow-right\" />\n </Link>\n <CastSlider\n castArray={castInfo[key]}\n setCastDetail={setCastDetail}\n disableScroll={disableScroll}\n breakpoint={breakpoint}\n />\n <CastOverlay\n breakpoint={breakpoint}\n castInfo={castInfo}\n castDetail={castDetail}\n setCastDetail={setCastDetail}\n disableScroll={disableScroll}\n />\n </section>\n <Divider />\n </>\n ))\n );\n};\n\nCast.propTypes = {\n breakpoint: PropTypes.string,\n castArray: PropTypes.arrayOf(PropTypes.shape({})),\n disableScroll: PropTypes.func,\n contentCode: PropTypes.string,\n isCast: PropTypes.bool,\n setCastArray: PropTypes.func,\n};\n\nexport default React.memo(Cast);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Style from '../Skeleton.module.scss';\n\nconst Carousel = ({ className, children }) => {\n const carouselClass = classNames(Style.carousel, className);\n\n return <div className={carouselClass}>{children}</div>;\n};\n\nCarousel.defaultProps = {\n children: null,\n className: null,\n};\n\nCarousel.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nexport default Carousel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Style from '../Skeleton.module.scss';\n\nconst CarouselTile = ({ className, children }) => {\n const tileClass = classNames(Style.carouselTile, className);\n return <div className={tileClass}>{children}</div>;\n};\n\nCarouselTile.defaultProps = {\n children: null,\n className: null,\n};\n\nCarouselTile.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nexport default CarouselTile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Style from '../Skeleton.module.scss';\n\nconst GradientImage = ({ type, className }) => {\n const imageClass = classNames(Style[`gradientImage${type}`], className);\n return <div className={imageClass} />;\n};\n\nGradientImage.defaultProps = {\n type: 'Wide',\n className: null,\n};\n\nGradientImage.propTypes = {\n type: PropTypes.oneOf(['Wide', 'Rounded', 'Poster']),\n className: PropTypes.string,\n};\n\nexport default GradientImage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Repeater = ({ times, children }) => {\n if (!children) return null;\n const items = [...Array(times).keys()];\n return <>{items.map(i => ({ ...children, key: i }))}</>;\n};\n\nRepeater.defaultProps = {\n children: null,\n};\n\nRepeater.propTypes = {\n times: PropTypes.number.isRequired,\n children: PropTypes.node,\n};\n\nexport default Repeater;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Style from '../Skeleton.module.scss';\n\nconst TextRow = ({ type, className }) => {\n const rowClass = classNames(Style[`textRow${type}`], className);\n return <div className={rowClass} />;\n};\n\nTextRow.defaultProps = {\n type: 'Regular',\n className: null,\n};\n\nTextRow.propTypes = {\n type: PropTypes.oneOf(['Regular', 'Center', 'Rounded']),\n className: PropTypes.string,\n};\n\nexport default TextRow;\n","import FoxContentDensitySkeleton from './FoxContentDensitySkeleton';\n\nexport default FoxContentDensitySkeleton;\n","import React from 'react';\nimport Loader from 'components/Loader';\n\nimport { Carousel, CarouselTile, GradientImage, Repeater, TextRow } from 'components/Skeleton';\nimport Divider from '../Divider';\n\nimport Style from './FoxContentDensitySkeleton.module.scss';\n\nconst FoxContentDensitySkeleton = () => (\n <div className={Style.wrapper}>\n <div className={Style.loader}>\n <Loader />\n </div>\n <div className={Style.background}>\n <div className={Style.bottomFade} />\n </div>\n <div className={Style.hero}>\n <div className={Style.content}>\n <div className={Style.info}>\n <TextRow type=\"Regular\" className={Style.textRow1} />\n <TextRow type=\"Regular\" className={Style.textRow2} />\n <TextRow type=\"Regular\" className={Style.textRow3} />\n <TextRow type=\"Regular\" className={Style.textRow4} />\n <TextRow type=\"Regular\" className={Style.textRow5} />\n <TextRow type=\"Rounded\" className={Style.textRow6} />\n </div>\n </div>\n </div>\n <Divider />\n <Repeater times={2}>\n <>\n <div className={Style.collection}>\n <TextRow type=\"Regular\" className={Style.textRow1} />\n <Carousel className={Style.carousel}>\n <Repeater times={4}>\n <CarouselTile className={Style.carouselTile}>\n <GradientImage type=\"Wide\" className={Style.image1} />\n <TextRow type=\"Regular\" className={Style.textRow1} />\n <TextRow type=\"Regular\" className={Style.textRow2} />\n </CarouselTile>\n </Repeater>\n </Carousel>\n </div>\n <Divider />\n </>\n </Repeater>\n\n <div className={Style.cast}>\n <Carousel className={Style.carousel}>\n <Repeater times={6}>\n <CarouselTile className={Style.carouselTile}>\n <GradientImage type=\"Rounded\" className={Style.image1} />\n <TextRow type=\"Center\" className={Style.textRow1} />\n </CarouselTile>\n </Repeater>\n </Carousel>\n </div>\n <Divider />\n\n <div className={Style.poster}>\n <TextRow type=\"Regular\" className={Style.textRow1} />\n <Carousel className={Style.carousel}>\n <Repeater times={5}>\n <CarouselTile className={Style.carouselTile}>\n <GradientImage type=\"Poster\" className={Style.image1} />\n </CarouselTile>\n </Repeater>\n </Carousel>\n </div>\n <Divider />\n\n <div className={Style.about}>\n <TextRow type=\"Regular\" className={Style.textRow1} />\n <div className={Style.content}>\n <div className={Style.aboutText}>\n <Repeater times={4}>\n <TextRow type=\"Regular\" className={Style.textRow2} />\n </Repeater>\n <TextRow type=\"Regular\" className={Style.textRow3} />\n </div>\n <div className={Style.aboutIcons}>\n <Repeater times={4}>\n <div className={Style.icon} />\n </Repeater>\n </div>\n </div>\n </div>\n <Divider />\n\n <div className={Style.links}>\n <TextRow type=\"Regular\" className={Style.textRow1} />\n <div className={Style.content}>\n <TextRow type=\"Rounded\" className={Style.textRow1} />\n <TextRow type=\"Rounded\" className={Style.textRow2} />\n <TextRow type=\"Rounded\" className={Style.textRow3} />\n <TextRow type=\"Rounded\" className={Style.textRow4} />\n <TextRow type=\"Rounded\" className={Style.textRow5} />\n </div>\n <div className={Style.content}>\n <TextRow type=\"Rounded\" className={Style.textRow6} />\n <TextRow type=\"Rounded\" className={Style.textRow7} />\n <TextRow type=\"Rounded\" className={Style.textRow8} />\n <TextRow type=\"Rounded\" className={Style.textRow9} />\n </div>\n </div>\n <div className={Style.block}>\n <TextRow type=\"Regular\" className={Style.textRow1} />\n </div>\n </div>\n);\n\nexport default FoxContentDensitySkeleton;\n","import _ from 'lodash';\n\nimport { FAVORITE_PLUS } from 'components/Favorite';\nimport {\n Events,\n getSegmentModelMetadata,\n handleAnalytics,\n PageNames,\n SEGMENT_HERO_COLLECTION_TITLE,\n SegmentSources,\n tealiumEventPageTypes,\n} from '@foxcorp/delta-web-analytics';\nimport { isMobileBreakpoint } from 'helpers/BreakpointHelper';\nimport {\n isTypeVideo,\n isSpecial,\n isMovieSeries,\n getShowType,\n getRequiresAuth,\n} from 'helpers/ContentHelper';\nimport { helperGetVideoUrl, helperGetRelativeUrl, helperGetLiveUrl } from 'helpers/RouteHelper';\nimport { formatDurationInSeconds, formatSubRatings, formatMetadata } from 'helpers/VideoHelper';\nimport { RESTART_TYPE_HOME } from 'screens/Watch/WatchHelpers';\nimport favoriteButtonTheme from 'themes/styleguide/redesign/ContentDetail/Hero/Favorite.css';\nimport { isVideoLive } from 'components/VideoPlayerGlobal/Helper';\n\nconst FRESHMAN = 'FRESHMAN';\nconst LATEST = 'LATEST';\nconst LIVE = 'LIVE';\nconst LIVE_LOCKED = 'LIVE LOCKED';\nconst LIVE_RESTART = 'LIVE RESTART';\nconst LOCKED = 'LOCKED';\nconst NEW = 'NEW';\nconst RESTART = 'RESTART';\nconst RESUME = 'RESUME';\nconst RETIRED = 'RETIRED';\n\nexport const formatMovieMetadata = ({ durationInSeconds, rating, subRatings, genres }) => {\n const meta = [\n durationInSeconds ? `${formatDurationInSeconds(durationInSeconds)}` : null,\n genres || null,\n rating ? `${rating} ${formatSubRatings(subRatings)}` : null,\n ];\n return formatMetadata(meta);\n};\n\nconst isLatest = showcaseOrder => showcaseOrder === 'latest' || showcaseOrder === 'personalized';\n\nconst getSeriesPlayProps = ({ status, episode = {} }) => {\n const { seasonNumber, episodeNumber, displaySeasonAndEpisodeCounts } = episode;\n const {\n global_restartButton: restartText,\n global_resumeButton: resumeText,\n global_startWatchingButton: startWatchingText,\n global_watchLiveButton: watchLiveText,\n global_watchButton: watchText,\n seriesDetail_WatchLatest: latestText,\n } = window.Language;\n const playUrl =\n status === LIVE_RESTART ? getPlayButtonUrl(episode, true) : getPlayButtonUrl(episode);\n if (!playUrl || status === RETIRED) return { shouldRender: false };\n let url = playUrl;\n const seasonAndEpisodeNumberText =\n displaySeasonAndEpisodeCounts && seasonNumber && episodeNumber\n ? `S${seasonNumber} E${episodeNumber}`\n : '';\n const shouldRender = true;\n let icon;\n let text;\n switch (status) {\n case FRESHMAN:\n icon = 'play-rectangle';\n text = `${startWatchingText} ${seasonAndEpisodeNumberText}`;\n break;\n case LATEST:\n icon = 'play-rectangle';\n text = `${latestText} ${seasonAndEpisodeNumberText}`;\n break;\n case LIVE:\n icon = 'play-rectangle';\n text = watchLiveText;\n break;\n case LOCKED:\n icon = 'lock';\n text = startWatchingText;\n break;\n case NEW:\n icon = 'play-rectangle';\n text = `${watchText} ${seasonAndEpisodeNumberText}`;\n break;\n case RESTART:\n icon = 'restart-double';\n text = restartText;\n url = `${playUrl}mode/restart`;\n break;\n case RESUME:\n icon = 'play-rectangle';\n text = resumeText;\n break;\n case LIVE_LOCKED:\n icon = 'lock';\n text = watchLiveText;\n break;\n case LIVE_RESTART:\n icon = 'restart-double';\n text = restartText;\n url = `${playUrl}#${RESTART_TYPE_HOME}`;\n break;\n default:\n break;\n }\n return {\n icon,\n shouldRender,\n text,\n url,\n };\n};\n\nconst getCurrentEpisode = ({ item, episodes, continueWatchingItems, isAuthenticated }) => {\n const {\n currentSeason,\n retired,\n liveListing,\n seriesType,\n showcaseOrder,\n latestEpisode,\n oldestEpisode,\n } = item || {};\n\n const { livePlayerScreenUrl } = liveListing || {};\n let status;\n let episode = {};\n if (retired) return { episode: {}, status: RETIRED };\n const { seasonNumber } = currentSeason || {};\n const isFreshman = seasonNumber === 1;\n if (continueWatchingItems.length > 0) {\n [episode] = continueWatchingItems;\n const { percentWatched, watched, episodeNumber } = episode;\n if (watched) {\n if (episodeNumber === episodes.length - 1) {\n status = RESTART;\n } else {\n episode = episodes[episodeNumber];\n status = LATEST;\n }\n } else {\n status = percentWatched > 10 && percentWatched < 90 ? RESUME : LATEST;\n }\n } else if (isFreshman) {\n [episode] = episodes;\n status = FRESHMAN;\n } else {\n [episode] = episodes;\n status = NEW;\n }\n if (!episode) {\n episode = {};\n }\n if (getRequiresAuth({ video: episode, isLive: !!livePlayerScreenUrl })) {\n status = LOCKED;\n }\n if (isVideoLive(liveListing)) {\n if (status === LOCKED) {\n status = `${LIVE} ${LOCKED}`;\n } else {\n status = LIVE;\n }\n episode = liveListing;\n return {\n episode,\n status,\n };\n }\n if (episode && episode.percentWatched > 0) {\n status = RESUME;\n }\n if (isSpecial(seriesType) || isMovieSeries(seriesType)) {\n episode = isLatest(showcaseOrder) ? latestEpisode : oldestEpisode;\n }\n\n return {\n episode,\n status,\n };\n};\n\nconst getPlayButtonUrl = (item = {}, isLive = false) => {\n const { type, playerScreenUrl, videoId, livePlayerScreenUrl, callSign } = item;\n let link = '';\n const isVideo = type ? isTypeVideo(type) : false;\n if (isVideo || isLive) {\n link = playerScreenUrl\n ? helperGetRelativeUrl({ url: playerScreenUrl })\n : helperGetVideoUrl(videoId);\n } else if (livePlayerScreenUrl) {\n link = helperGetLiveUrl({ videoId, callSign });\n } else {\n link = helperGetRelativeUrl({ url: playerScreenUrl });\n }\n return link;\n};\n\nexport const getHeroCommonProps = props => {\n const {\n breakpoint,\n item,\n disableScroll,\n episodes,\n continueWatchingItems = [],\n isAuthenticated,\n } = props;\n const { episode, status } = getCurrentEpisode({\n item,\n episodes,\n continueWatchingItems,\n isAuthenticated,\n });\n return {\n breakpoint,\n disableScroll,\n episode,\n item,\n status,\n };\n};\n\nexport const getHeroContextPlayerProps = props => {\n const { item, breakpoint, playerVisibility, setPlayerVisibility, disableScroll } = props;\n const video = _.get(item, 'previewVideo.member.0', null);\n if (video) video.isTrailer = true;\n const title = _.get(video, 'name', '');\n const isMobile = isMobileBreakpoint(breakpoint);\n const visibility = playerVisibility;\n const promoDisabled = true;\n\n const onClose = () => {\n setPlayerVisibility(false);\n disableScroll({ disableScroll: false, bodyOnly: false });\n };\n\n return {\n ...getHeroCommonProps(props),\n video,\n title,\n isMobile,\n visibility,\n promoDisabled,\n onClose,\n };\n};\n\nexport const getHeroFavoriteButtonProps = props => {\n const { item, favoritesManager: manager, favoritableItems, recommendationId } = props;\n const { id: showID, seriesType, network: networkId, name: seriesName, description } = item;\n const actionLocation = _.get(tealiumEventPageTypes, PageNames.DETAIL);\n const location = _.get(tealiumEventPageTypes, PageNames.FAVORITES_DETAIL);\n const showType = getShowType({ seriesType });\n const defaultText = 'Watchlist';\n const favoritedText = 'Added to Watchlist';\n const iconType = FAVORITE_PLUS;\n\n const data = {\n actionLocation,\n favoritableItems,\n favoriteType: showType,\n location,\n networkId,\n recommendationId,\n seriesName,\n showID,\n source: SegmentSources.DETAIL,\n };\n const favorites = _.get(manager, 'favorites');\n\n const clickHandler = () => {\n const props = {\n page_action_type: 'add to favorites',\n page_collection_count: 1,\n page_collection_title: SEGMENT_HERO_COLLECTION_TITLE,\n page_collection_type: 'general',\n page_item_type: 'hero',\n page_item_state: 'static image',\n page_item_container_title: seriesName,\n page_item_vertical_position: 1,\n page_item_horizontal_position: 1,\n page_item_title: defaultText,\n page_item_subtitle: description,\n page_item_cc: 'cc off',\n page_item_volume: 'volume off',\n page_playlist_length: 1,\n page_video_uid: item.latestEpisode?.uID,\n page_webview_url: window.location.href,\n };\n handleAnalytics({\n event: Events.HERO_ITEM_SELECT_ACTION,\n payoad: props,\n });\n };\n\n const favoriteButtonProps = {\n ...getHeroCommonProps(props),\n clickHandler,\n data,\n defaultText,\n favoritedText,\n favorites,\n iconType,\n manager,\n theme: favoriteButtonTheme,\n };\n return favoriteButtonProps;\n};\n\nexport const getHeroPlayButtonProps = props => {\n const { episode, item, status } = getHeroCommonProps(props);\n const { fullEpisodeCount, name, description } = item;\n return {\n ...getHeroCommonProps(props),\n ...getSeriesPlayProps({ status, episode, item }),\n description,\n fullEpisodeCount,\n name,\n };\n};\n\nexport const getHeroRestartButtonProps = props => {\n const { episode = {}, item = {} } = getHeroCommonProps(props);\n const { percentWatched, watched, livePlayerScreenUrl } = episode;\n const { fullEpisodeCount, name, description, liveListing = {} } = item;\n const { playerScreenUrl = null } = liveListing;\n const shouldRender = !!playerScreenUrl || !!(percentWatched && !watched && percentWatched > 10);\n const { text, icon, url } = getSeriesPlayProps({\n status: livePlayerScreenUrl ? LIVE_RESTART : RESTART,\n episode,\n });\n\n return {\n ...getHeroCommonProps(props),\n description,\n fullEpisodeCount,\n icon,\n isRestart: true,\n name,\n shouldRender,\n text,\n url,\n };\n};\n\nexport const getHeroTrailerButtonProps = props => {\n const { item, setPlayerVisibility, disableScroll } = props;\n const { description, fullEpisodeCount, name } = item;\n const previewVideo = _.get(item, 'previewVideo.member.0', null);\n const shouldRender = !!previewVideo;\n const text = 'Trailer';\n const icon = 'filmstrip';\n const viewBox = '0 0 18 18';\n const clickHandler = () => {\n setPlayerVisibility(true);\n disableScroll({ disableScroll: true, bodyOnly: true });\n\n const props = {\n page_action_type: 'trailer',\n page_collection_count: 1,\n page_collection_title: SEGMENT_HERO_COLLECTION_TITLE,\n page_collection_type: 'general',\n page_item_type: 'hero',\n page_item_state: 'static image',\n page_item_container_title: name,\n page_item_vertical_position: 1,\n page_item_horizontal_position: 1,\n page_item_title: text,\n page_item_subtitle: description,\n page_item_cc: 'cc off',\n page_item_volume: 'volume off',\n page_playlist_length: 1,\n page_video_uid: previewVideo.uID,\n page_webview_url: window.location.href,\n ...getSegmentModelMetadata(),\n };\n handleAnalytics({\n event: Events.HERO_ITEM_SELECT_ACTION,\n payload: props,\n });\n };\n\n return {\n ...getHeroCommonProps(props),\n clickHandler,\n description,\n fullEpisodeCount,\n icon,\n name,\n shouldRender,\n text,\n viewBox,\n };\n};\n","import React from 'react';\nimport { Link } from 'react-router';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport {\n Events,\n getSegmentModelMetadata,\n handleAnalytics,\n SEGMENT_HERO_COLLECTION_TITLE,\n} from '@foxcorp/delta-web-analytics';\nimport Style from './ActionButton.module.scss';\n\nconst WATCH_TEXT = 'Watch';\n\nconst ActionButton = ({\n clickHandler = () => {},\n description = '',\n episode = {},\n icon = null,\n isRestart = false,\n item = {},\n name = null,\n shouldRender = true,\n text = null,\n url = null,\n viewBox = null,\n}) => {\n const customClickHandler = () => {\n const pageActionType = isRestart ? 'restart' : 'watch';\n const props = {\n page_action_type: pageActionType,\n page_item_type: 'hero',\n page_item_state: 'static image',\n page_item_container_title: name,\n page_item_vertical_position: 1,\n page_item_horizontal_position: 1,\n page_item_title: text,\n page_item_subtitle: description,\n page_item_cc: 'cc off',\n page_item_volume: 'volume off',\n page_playlist_length: 1,\n page_collection_title: SEGMENT_HERO_COLLECTION_TITLE,\n page_collection_type: 'general',\n page_collection_count: 1,\n page_video_uid: item.latestEpisode?.uID,\n page_webview_url: window.location.href,\n ...getSegmentModelMetadata(),\n };\n handleAnalytics({ event: Events.HERO_ITEM_SELECT_ACTION, props });\n clickHandler();\n };\n if (!shouldRender) return null;\n\n const { seasonNumber, episodeNumber } = episode;\n\n const watchText = text === WATCH_TEXT ? `${text} S${seasonNumber} E${episodeNumber}` : text;\n\n return url ? (\n <Link to={url} className={Style.actionLink} onClick={customClickHandler} onlyActiveOnIndex>\n <button\n className={classNames(Style.actionButton, Style[icon])}\n type=\"button\"\n aria-label={watchText}\n >\n <div className={Style.iconContainer}>\n <Icon icon={icon} color=\"white\" size=\"full\" viewBox={viewBox} />\n </div>\n <label className={Style.label}>{watchText}</label>\n </button>\n </Link>\n ) : (\n <div className={Style.actionLink}>\n <button\n className={classNames(Style.actionButton, Style[icon])}\n onClick={clickHandler}\n type=\"button\"\n aria-label={watchText}\n >\n <div className={Style.iconContainer}>\n <Icon icon={icon} color=\"white\" size=\"full\" viewBox={viewBox} />\n </div>\n <label className={Style.label}>{watchText}</label>\n </button>\n </div>\n );\n};\n\nActionButton.propTypes = {\n clickHandler: PropTypes.func,\n description: PropTypes.string,\n episode: PropTypes.shape({}),\n icon: PropTypes.string,\n isRestart: PropTypes.bool,\n item: PropTypes.shape({}),\n name: PropTypes.string,\n shouldRender: PropTypes.bool,\n text: PropTypes.string,\n url: PropTypes.string,\n viewBox: PropTypes.string,\n};\n\nexport default ActionButton;\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { isSeries, truncateText } from 'helpers/ContentHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { useBoolean } from 'hooks';\n\nimport Modal from '../../../Modal';\nimport style from './Description.module.scss';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n maxChars: 220,\n },\n [SITE_PLATFORM_WEB]: {\n maxChars: 220,\n },\n [SITE_PLATFORM_TABLET]: {\n maxChars: 120,\n },\n [SITE_PLATFORM_MOBILE]: {\n maxChars: 90,\n },\n};\n\nconst Description = ({\n item = {},\n episode = {},\n breakpoint = SITE_PLATFORM_WEB,\n disableScroll,\n}) => {\n const { value: showModal, setTrue, setFalse } = useBoolean(false);\n const modalRef = useRef();\n const { seriesType, description = '', shortDescription = '', longDescription = '' } = !_.isEmpty(\n episode,\n )\n ? episode\n : item;\n\n const data = isSeries(seriesType) && !_.isEmpty(episode) ? episode : item;\n const { id, name = '' } = data;\n\n const { global_moreButton: moreButtonLabel } = window.Language;\n\n const handleOverlayClick = e => {\n const { id: refId } = modalRef.current;\n const { id: targetId } = e.target;\n if (refId === targetId) modalCloseClickHandler();\n };\n\n const readMoreClickHandler = () => {\n setTrue();\n disableScroll({ disableScroll: true, bodyOnly: true, fixedPosition: true });\n };\n\n const modalCloseClickHandler = () => {\n setFalse(false);\n disableScroll({ disableScroll: false, bodyOnly: false, fixedPosition: false });\n };\n\n const selectedShortDescription = shortDescription || description || longDescription;\n\n const { maxChars } = BREAKPOINTS[breakpoint];\n const isLong = selectedShortDescription.length > maxChars;\n const truncatedDescription = truncateText(selectedShortDescription, maxChars);\n const readMore = isLong ? (\n <button\n className={style.readMore}\n onClick={readMoreClickHandler}\n type=\"button\"\n aria-label={moreButtonLabel}\n >\n {moreButtonLabel}\n </button>\n ) : null;\n const modalProps = {\n description: selectedShortDescription,\n handleOverlayClick,\n id,\n handleCloseModal: modalCloseClickHandler,\n modalRef,\n name,\n showModal,\n };\n\n return (\n <div className={style.description}>\n {truncatedDescription}\n {readMore}\n <Modal {...modalProps} />\n </div>\n );\n};\n\nDescription.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n item: PropTypes.shape({}),\n episode: PropTypes.shape({}),\n disableScroll: PropTypes.func.isRequired,\n};\nexport default Description;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { getLiveProgress } from 'helpers/Live';\n\nimport Style from './ProgressBar.module.scss';\n\nconst ProgressBar = ({ episode = {} }) => {\n const [progress, setProgress] = useState(null);\n const [liveInterval, setLiveInterval] = useState(null);\n\n const { percentWatched, startDate, endDate } = episode;\n useEffect(() => {\n const setLiveProgress = () => {\n const liveProgress = getLiveProgress({ startDate, endDate });\n const programEnded = !liveProgress || (liveProgress && liveProgress >= 100);\n const shouldClearInterval = liveInterval && programEnded;\n if (shouldClearInterval) {\n clearInterval(liveInterval);\n setLiveInterval(null);\n }\n return setProgress(liveProgress);\n };\n\n const liveProgress = getLiveProgress({ startDate, endDate });\n if (!percentWatched && liveProgress) {\n setLiveInterval(\n setInterval(() => {\n setLiveProgress();\n }, 60000),\n );\n setProgress(liveProgress);\n return () => setLiveInterval(null);\n }\n return () => {};\n }, []);\n\n if ((!percentWatched || percentWatched < 10) && !progress) return null;\n const currentProgress = progress || percentWatched;\n return (\n <div className={Style.progressBar}>\n <div className={Style.completed} style={{ width: `${currentProgress}%` }} />\n </div>\n );\n};\n\nProgressBar.propTypes = {\n episode: PropTypes.shape({}),\n};\n\nexport default ProgressBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\nimport { SERIES_DETAIL_LOGO_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport { isMobileBreakpoint } from 'helpers/BreakpointHelper';\n\nimport Style from './TitleLink.module.scss';\n\nconst TitleLink = ({ breakpoint, episode = {}, item = {} }) => {\n const { screenUrl, name } = item;\n const url = helperGetRelativeUrl({ url: screenUrl });\n const showLogoPath = isMobileBreakpoint(breakpoint) ? 'images.logoCenter.raw' : 'images.logo.raw';\n const altTextPath = isMobileBreakpoint(breakpoint)\n ? 'images.logoCenter.altText'\n : 'images.logo.altText';\n\n const showLogo = _.get(episode, showLogoPath) || _.get(item, showLogoPath);\n const altText = _.get(episode, altTextPath) || _.get(item, altTextPath) || name;\n\n const imageLogo = renderImage({\n alt: altText,\n breakpoint,\n imageType: SERIES_DETAIL_LOGO_IMAGE,\n src: showLogo,\n lazyLoad: false,\n });\n\n return showLogo ? (\n <h1 className={Style.logoContainer}>\n <Link to={url} className={Style.titleLink}>\n {imageLogo}\n </Link>\n <span className={Style.altLogo}>{name}</span>\n </h1>\n ) : (\n <h1 className={Style.logoContainer}>\n <Link to={url} className={Style.titleLink}>\n {name}\n </Link>\n </h1>\n );\n};\n\nTitleLink.propTypes = {\n breakpoint: PropTypes.string,\n item: PropTypes.shape({\n screenUrl: PropTypes.string,\n name: PropTypes.string,\n }),\n episode: PropTypes.shape({}),\n};\n\nexport default TitleLink;\n","import React from 'react';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport { plurarize, HTML_ENTITY_BULLET, isClip } from 'helpers/ContentHelper';\nimport { formatRating, formatAiredDate } from 'helpers/VideoHelper';\nimport { formatMovieMetadata } from '../../HeroHelper';\n\nimport style from './TuneIn.module.scss';\n\nconst TuneIn = ({ item, episode = {} }) => {\n const {\n contentRating,\n fullEpisodeCount,\n genres = [],\n seasonCount,\n seriesType,\n currentSeason = {},\n subRatings,\n } = item;\n const { originalAirDate, dateCreated, type, durationInSeconds } = episode;\n\n const genreList = genres.join(', ');\n const rating = formatRating(contentRating);\n let seriesTuneIn;\n const movieMeta = formatMovieMetadata({\n rating,\n subRatings,\n genres: genreList,\n durationInSeconds,\n });\n const originalDate = isClip(type) ? dateCreated : originalAirDate;\n const airDate = formatAiredDate(originalDate);\n const bullet = originalDate ? HTML_ENTITY_BULLET : null;\n\n if (seasonCount > 0) {\n const { seasonNumber } = currentSeason;\n\n const {\n seriesDetail_seasonLabel: seasonLabel,\n seriesDetail_seasonsLabel: seasonsLabel,\n global_episodeLabel: foxEpisodeLabel,\n global_episodesLabel: foxEpisodesLabel,\n } = window.Language;\n\n const seasonText = plurarize({\n count: seasonNumber,\n singular: seasonLabel,\n plural: seasonsLabel,\n reverse: true,\n });\n const episodeText = plurarize({\n count: fullEpisodeCount,\n singular: foxEpisodeLabel,\n plural: foxEpisodesLabel,\n });\n seriesTuneIn = `${seasonText} (${episodeText}) ${HTML_ENTITY_BULLET} ${genreList} ${\n rating ? HTML_ENTITY_BULLET : ''\n } ${rating}`;\n } else if (!_.isEmpty(episode)) {\n seriesTuneIn = airDate ? (\n <div className={style.tuneIn}>{`${airDate} ${rating ? bullet : ''} ${rating}`}</div>\n ) : (\n ''\n );\n }\n let tuneIn;\n switch (seriesType) {\n case 'movie':\n case 'special':\n tuneIn = movieMeta;\n break;\n case 'series':\n tuneIn = seriesTuneIn;\n break;\n default:\n break;\n }\n\n return tuneIn ? <div className={style.tuneIn}>{tuneIn}</div> : null;\n};\n\nTuneIn.propTypes = {\n item: PropTypes.shape({}).isRequired,\n episode: PropTypes.shape({}),\n};\n\nexport default TuneIn;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getNetworkLogoUrl } from 'helpers/ContentHelper';\nimport { formatAiredDate } from 'helpers/VideoHelper';\nimport Style from './Meta.module.scss';\n\nconst Meta = ({ item, episode = {} }) => {\n const { network, tuneIn, retired } = item;\n const { originalAirDate } = episode;\n const airDate = formatAiredDate(originalAirDate);\n const hasNetworkLogo = !!window.ExternalConfig.networkLogo;\n const networkLogoUrl = hasNetworkLogo ? getNetworkLogoUrl(network) : null;\n const { seriesDetail_retiredShowTuneInLabel: retiredTuneInLabel } = window.Language;\n let tuneInText = retired ? tuneIn || retiredTuneInLabel : tuneIn;\n if (!tuneInText) tuneInText = airDate.replace(/-/g, '/');\n return (\n <span className={Style.meta}>\n <img src={networkLogoUrl} alt={network} />\n {tuneInText && <span>{tuneInText}</span>}\n </span>\n );\n};\n\nMeta.propTypes = {\n item: PropTypes.shape({\n network: PropTypes.string,\n tuneIn: PropTypes.string,\n }).isRequired,\n episode: PropTypes.shape({}),\n};\n\nexport default Meta;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport Icon from 'components/Icon';\nimport { PAGE_TYPE_WATCH_FREE } from 'helpers/ContentHelper';\nimport { isMobileBreakpoint, isTabletBreakpoint } from 'helpers/BreakpointHelper';\nimport Favorite, { FAVORITE_PLUS_CIRCLE, FAVORITE_TYPE_WATCHLIST } from 'components/Favorite';\nimport favoriteTheme from 'app/themes/Favorite.css';\nimport style from './SecondaryButtons.module.scss';\n\nconst SecondaryButtons = ({\n breakpoint,\n disableScroll,\n favoritableItems,\n favoritesManager,\n item,\n setPlayerVisibility,\n}) => {\n const { retired, id } = item;\n const { autoPlayPreviewParam } = window.ExternalConfig;\n\n const data = {\n favoritableItems,\n showID: id,\n };\n\n const previewVideo = _.get(item, 'previewVideo.member.0', null);\n\n const shouldRenderFavoriteButton = !retired && id !== PAGE_TYPE_WATCH_FREE;\n\n const shouldRenderPreview = !!previewVideo;\n\n const shouldRenderShareButton = !!(\n navigator.share &&\n autoPlayPreviewParam &&\n (isMobileBreakpoint(breakpoint) || isTabletBreakpoint(breakpoint))\n );\n\n const previewClickHandler = () => {\n setPlayerVisibility(true);\n disableScroll({ disableScroll: true, bodyOnly: true });\n };\n\n const shareClickHandler = () => {\n const separator = window.location.href.indexOf('?') === -1 ? '?' : '&';\n const shareUrl = autoPlayPreviewParam ? window.location.href + separator : window.location.href;\n if (navigator.share) {\n navigator\n .share({\n url: shareUrl,\n })\n .catch(console.error);\n }\n };\n\n return (\n <div className={style.container}>\n {shouldRenderFavoriteButton ? (\n <div className={style.section}>\n <Favorite\n manager={favoritesManager}\n setFavorites={favoritesManager?.setFavorites}\n data={data}\n theme={favoriteTheme}\n type={FAVORITE_TYPE_WATCHLIST}\n iconType={FAVORITE_PLUS_CIRCLE}\n />\n <div className={style.iconText}>Watchlist</div>\n </div>\n ) : null}\n {shouldRenderPreview ? (\n <div className={style.section} onClick={previewClickHandler}>\n <Icon icon=\"trailer\" color=\"white\" size=\"medium-large\" />\n <div className={style.iconText}>Trailer</div>\n </div>\n ) : null}\n {shouldRenderShareButton ? (\n <div className={style.section} onClick={shareClickHandler}>\n <Icon icon=\"share\" color=\"white\" size=\"medium-large\" />\n <div className={style.iconText}>Share</div>\n </div>\n ) : null}\n </div>\n );\n};\n\nSecondaryButtons.propTypes = {\n breakpoint: PropTypes.string,\n disableScroll: PropTypes.func,\n favoritableItems: PropTypes.shape({}),\n favoritesManager: PropTypes.shape({}),\n setPlayerVisibility: PropTypes.func,\n item: PropTypes.shape({\n screenUrl: PropTypes.string,\n name: PropTypes.string,\n }),\n episode: PropTypes.shape({}),\n};\n\nexport default SecondaryButtons;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport ContextPlayer from 'components/ContextPlayer';\nimport Favorite from 'components/Favorite';\nimport { PAGE_TYPE_WATCH_FREE } from 'helpers/ContentHelper';\nimport { isMobileBreakpoint } from 'helpers/BreakpointHelper';\n\nimport {\n getHeroContextPlayerProps,\n getHeroFavoriteButtonProps,\n getHeroPlayButtonProps,\n getHeroRestartButtonProps,\n getHeroTrailerButtonProps,\n getHeroCommonProps,\n} from './HeroHelper';\n\nimport ActionButton from './components/ActionButton';\nimport Description from './components/Description';\nimport ProgressBar from './components/ProgressBar';\nimport TitleLink from './components/TitleLink';\nimport TuneIn from './components/TuneIn';\nimport Meta from './components/Meta';\nimport SecondaryButtons from './components/SecondaryButtons';\nimport Divider from '../Divider';\n\nimport Style from './Hero.module.scss';\nimport ButtonStyle from './components/ActionButton/ActionButton.module.scss';\n\nconst Hero = props => {\n const { breakpoint, item } = props;\n const [playerVisibility, setPlayerVisibility] = useState(false);\n if (!item) return null;\n const { retired, id } = item;\n const componentProps = { ...props, playerVisibility, setPlayerVisibility };\n const shouldShowFavoriteButton = !retired && id !== PAGE_TYPE_WATCH_FREE;\n\n return (\n <>\n <div className={Style.header}>\n <ContextPlayer {...getHeroContextPlayerProps(componentProps)} />\n <div className={Style.content}>\n <TitleLink {...getHeroCommonProps(componentProps)} />\n <div>\n <Meta {...getHeroCommonProps(componentProps)} />\n <Description {...getHeroCommonProps(componentProps)} />\n <TuneIn {...getHeroCommonProps(componentProps)} />\n <ProgressBar {...getHeroCommonProps(componentProps)} />\n <div className={Style.actionButtons}>\n <ActionButton {...getHeroPlayButtonProps(componentProps)} />\n <ActionButton {...getHeroRestartButtonProps(componentProps)} />\n {isMobileBreakpoint(breakpoint) ? (\n <SecondaryButtons {...componentProps} />\n ) : (\n <>\n {shouldShowFavoriteButton ? (\n <div className={ButtonStyle.actionLink}>\n <Favorite {...getHeroFavoriteButtonProps(componentProps)} />\n </div>\n ) : null}\n <ActionButton {...getHeroTrailerButtonProps(componentProps)} />\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n <Divider />\n </>\n );\n};\n\nHero.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n item: PropTypes.shape({}).isRequired,\n};\n\nexport default React.memo(Hero);\n","/* eslint react/require-default-props: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport Carousel from 'components/Carousel';\nimport { SITE_PLATFORM_MOBILE } from 'helpers/BreakpointHelper';\nimport { getCarouselBreakpoint, isClip, isEpisode } from 'helpers/ContentHelper';\nimport { helperGetRelativeUrl, redirectToExternalUrl } from 'helpers/RouteHelper';\n\nimport { isSeriesCollection } from 'screens/SeriesDetail/SeriesDetailHelpers';\nimport {\n clipsVideoProcessor,\n seriesCollectionVideoProcessor,\n seriesVideoProcessor,\n} from 'helpers/VideoProcessorHelper';\nimport CarouselTheme from 'screens/SeriesDetail/styles/SeriesDetailsCarousel.module.scss';\nimport CarouselTileTheme from 'screens/SeriesDetail/styles/SeriesDetailsCarouselTile.module.scss';\nimport {\n BREAKPOINTS,\n FoxContentDensityBreakpoints,\n} from 'screens/ContentDetail/ContentDetailHelper';\nimport style from 'screens/SeriesDetail/styles/SeriesDetail.css';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\n\nconst CarouselSection = ({\n breakpoint,\n dropdownHeadline,\n inline = {},\n isAnonymous,\n isPosters,\n isSeasons,\n isSeriesDetailAnonymous = true,\n lastSlidePaginated,\n onLastSlide,\n overrideAdditionalPosterStyle,\n panel,\n promos = [],\n posterType = '',\n renderDivider = false,\n responsive,\n seeAll,\n favoritesManager = {},\n seriesType = '',\n tileType,\n}) => {\n const {\n addCarouselPlaceholders,\n allowScrollLock,\n applyInlineBackground,\n carouselLimit,\n posterLimit,\n posterToScroll,\n roundArrows,\n slidesToScroll,\n showCarouselArrows,\n showTileMetadataOnHover,\n subtitleLines,\n truncateSubtitle,\n useScrollableDiv,\n } = isSeasons ? FoxContentDensityBreakpoints[breakpoint] : BREAKPOINTS[breakpoint];\n\n const { id, name } = panel;\n const headline = dropdownHeadline || _.get(panel, 'headline', name);\n const items = _.get(panel, 'items.member') || _.get(panel, 'member');\n const promoContent = _.get(promos, '3.items.member', []);\n const promoCTA = _.get(promoContent, '0.ctaText', '');\n const promoLink = _.get(promoContent, '0.url', '');\n if (!inline || !items) return null;\n\n const carouselProcessor = item => {\n const isMobile = breakpoint === SITE_PLATFORM_MOBILE;\n const getProcessor = ({ seriesType, videoType }) => {\n if (isSeriesCollection(seriesType)) return seriesCollectionVideoProcessor;\n switch (videoType) {\n case isEpisode(videoType):\n return seriesVideoProcessor;\n case isClip(videoType):\n return clipsVideoProcessor;\n default:\n return seriesVideoProcessor;\n }\n };\n const url = isPosters\n ? helperGetRelativeUrl({ url: item.relativeUrl })\n : helperGetRelativeUrl({ url: item.playerScreenUrl });\n const processor = getProcessor({ seriesType, videoType: item.videoType });\n const anonymousCTAText = promoCTA;\n\n return {\n ...processor({ item }),\n ...(isMobile && !isSeasons && { metadata: null }),\n anonymousCTAText,\n anonymousCTAClick: () => {\n handleAnalytics({\n event: Events.PURCHASE_CTA_CLICKED,\n payload: {\n page_item_title: item.name,\n page_item_subtitle: item.description,\n page_action_location: 'anonymous series detail',\n page_button_text: anonymousCTAText,\n },\n });\n if (promoLink) {\n redirectToExternalUrl(promoLink);\n }\n },\n collectionLength: items.length,\n currentSeason: _.get(item, 'currentSeason', ''),\n image: _.get(item, 'images.videoList.raw', null),\n imageAltText: _.get(item, 'images.videoList.altText', ''),\n isAnonymous,\n isPlayable: !isAnonymous,\n link: url || promoLink,\n onTileClick: () => {},\n posterImage: _.get(item, 'images.dcg-mark-poster.raw', null),\n posterAltText: _.get(item, 'images.dcg-mark-poster.altText', ''),\n seriesName: _.get(item, 'seriesName', ''),\n subtitle: (!isMobile || isSeasons) && item.description,\n target: '',\n titleLines: 0,\n };\n };\n\n const carouselProps = {\n addCarouselPlaceholders,\n allowScrollLock,\n applyInlineBackground,\n breakpoint,\n disableHoverStateActionButtons: true,\n favoritesManager,\n headline,\n isAnonymous,\n isInfinite: false,\n isPosters,\n isSeasons,\n isSeriesDetailAnonymous,\n isSeriesDetailPage: true,\n items,\n lastSlidePaginated,\n onLastSlide,\n overrideAdditionalPosterStyle,\n posterType,\n processor: carouselProcessor,\n responsive: responsive || getCarouselBreakpoint({ type: isPosters ? posterType : tileType }),\n roundArrows,\n seeAll,\n showCarouselArrows,\n showTileMetadataOnHover,\n slidesToScroll: isPosters ? posterToScroll : slidesToScroll,\n slidesToShow: isPosters ? posterLimit : carouselLimit,\n subtitleLines,\n theme: CarouselTheme,\n tileTheme: CarouselTileTheme,\n tileType,\n truncateSubtitle,\n useScrollableDiv,\n };\n\n return (\n <div key={id} className={!isSeasons ? style.section : ''}>\n <div className={!isSeasons ? style.carouselContainer : ''}>\n <Carousel {...carouselProps} />\n </div>\n {renderDivider && (\n <div className={style.dividerContainer}>\n <div className={style.carouselDivider} />\n </div>\n )}\n </div>\n );\n};\n\nCarouselSection.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n disableScroll: PropTypes.func,\n dropdownHeadline: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.string]),\n favoritesManager: PropTypes.shape({}),\n inline: PropTypes.shape({}),\n isAnonymous: PropTypes.bool.isRequired,\n isPosters: PropTypes.bool.isRequired,\n isSeasons: PropTypes.bool,\n isSeriesDetailAnonymous: PropTypes.bool,\n lastSlidePaginated: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.number]),\n onLastSlide: PropTypes.func,\n overrideAdditionalPosterStyle: PropTypes.bool,\n panel: PropTypes.shape({}).isRequired,\n promos: PropTypes.arrayOf(PropTypes.shape({})),\n posterType: PropTypes.string,\n renderDivider: PropTypes.bool,\n responsive: PropTypes.arrayOf(PropTypes.shape({})),\n seeAll: PropTypes.node,\n seriesType: PropTypes.string,\n tileType: PropTypes.string,\n};\n\nexport default CarouselSection;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { getSelectedItem } from 'screens/SeriesDetail/SeriesDetailHelpers';\n\nimport Style from './Clips.module.scss';\n\nconst ClipsDropdown = ({\n clipsSections,\n isClipsPage = false,\n openDropdown,\n onDropdownOpen,\n onSelect = () => {},\n}) => {\n const firstSectionName = _.get(clipsSections, '0.name', null);\n const selectedItem = getSelectedItem(clipsSections);\n\n const dropdownBackDrop = 'dropdown-backdrop';\n const handleOutsideClick = e => {\n if (e.target.id === dropdownBackDrop) {\n onDropdownOpen();\n }\n };\n\n const dropdownClass = openDropdown ? Style.active : null;\n\n const backdrop = openDropdown ? (\n <div className={Style.dropdownBackDrop} onClick={handleOutsideClick} id={dropdownBackDrop} />\n ) : null;\n\n if (clipsSections && clipsSections.length > 1) {\n const icon = openDropdown ? 'keyboard-arrow-up' : 'keyboard-arrow-down';\n return (\n <>\n <div>\n {backdrop}\n <span className={Style.seasonSelector} onClick={onDropdownOpen}>\n <span>{selectedItem.name}</span>\n <Icon icon={icon} color=\"white\" size=\"large\" viewBox=\"0 0 10 25\" />\n </span>\n <ul className={classNames(Style.dropdownList, dropdownClass)}>\n {clipsSections &&\n clipsSections.map(item => (\n <li\n className={Style.listItem}\n key={`clips-${item.name}`}\n onClick={() => onSelect(item)}\n >\n {item.name}\n </li>\n ))}\n </ul>\n </div>\n </>\n );\n }\n return isClipsPage ? (\n <h1 className={Style.dropdownLabel}>{firstSectionName}</h1>\n ) : (\n <span className={Style.dropdownLabel}>{firstSectionName}</span>\n );\n};\n\nClipsDropdown.propTypes = {\n clipsSections: PropTypes.arrayOf(PropTypes.shape([])).isRequired,\n isClipsPage: PropTypes.bool,\n openDropdown: PropTypes.bool,\n onDropdownOpen: PropTypes.func.isRequired,\n onSelect: PropTypes.func.isRequired,\n};\n\nexport default ClipsDropdown;\n","import React, { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { Link, browserHistory } from 'react-router';\nimport { animateScroll } from 'react-scroll';\nimport TileGrid from 'components/TileGrid';\nimport { SHOW_DETAIL_RELATED_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport { clipsVideoProcessor } from 'helpers/VideoProcessorHelper';\nimport { PAGE_TYPE_CLIPS, slugify } from 'helpers/ContentHelper';\nimport CarouselSection from 'screens/ContentDetail/components/CarouselSection';\nimport { SERIES_CLIP_TILE } from 'components/TileV2';\nimport Icon from 'components/Icon';\nimport Loader from 'components/Loader';\n\nimport {\n PANEL_TYPE_CLIPS,\n PANEL_TYPE_SCREEN_PANEL,\n getTabsOfMultipleTypes,\n getTabName,\n getTabDataUrl,\n getSelectedItem,\n} from 'screens/SeriesDetail/SeriesDetailHelpers';\nimport { helperGetApiHeaders, helperConvertApiRoute } from 'helpers/ApiHelper';\nimport Style from './Clips.module.scss';\nimport TileGridStyle from './ClipsTileGrid.module.scss';\nimport TileStyle from './ClipsTile.module.scss';\nimport ClipsDropdown from './ClipsDropdown';\nimport { fetchNextClipsPage, setNextClipsPage, setFetchingStatus } from './ClipsActions';\n\nimport Divider from '../Divider';\n\nconst Clips = ({\n accessToken,\n breakpoint,\n deviceId,\n fetchPanelData,\n inline,\n isAnonymous,\n pageType,\n panels,\n sections,\n seriesName,\n seriesType,\n showCode,\n}) => {\n const [openDropdown, setOpenDropdown] = useState(false);\n const dispatch = useDispatch();\n const { paginationItems, nextPage, fetching } = useSelector(state => state.clips);\n\n const clipsSections = getTabsOfMultipleTypes(sections, [\n PANEL_TYPE_CLIPS,\n PANEL_TYPE_SCREEN_PANEL,\n ]).map(section => {\n const { id } = section;\n const name = getTabName({ tab: section, seriesType });\n return { ...section, name, showCode, id, url: id };\n });\n const selectedItem = getSelectedItem(clipsSections);\n const nextPageUrl = _.get(selectedItem, 'items.view.next');\n const totalItems = _.get(selectedItem, 'items.totalItems');\n const isClipsPage = pageType === 'clips';\n useEffect(() => {\n dispatch(setNextClipsPage(nextPageUrl));\n }, [dispatch, nextPageUrl]);\n if (_.isEmpty(sections)) return null;\n\n const onClipsSelect = item => {\n if (!item || !item.showCode || !item.url) return;\n const { showCode, name } = item;\n const slug = slugify(name);\n\n setOpenDropdown(false);\n const newClipsNextPage = _.get(item, 'items.view.next');\n dispatch(setNextClipsPage(newClipsNextPage));\n const current = window.location.href;\n const isClipsUrl = current.indexOf(`/${showCode}/clips/`) !== -1;\n const clipsPath = isClipsUrl ? `clips/${slug}` : slug;\n const path = `${window.location.origin}/${showCode}/${clipsPath}/`;\n if (current === path) return;\n browserHistory.replace(path);\n };\n\n const onDropdownOpen = () => {\n if (openDropdown) {\n setOpenDropdown(false);\n } else {\n setOpenDropdown(true);\n }\n };\n\n const clipsDropdownProps = {\n clipsSections,\n isClipsPage,\n onDropdownOpen,\n onSelect: onClipsSelect,\n openDropdown,\n };\n const renderDropdown = () => <ClipsDropdown {...clipsDropdownProps} />;\n\n const renderCarousel = () => {\n const panelProps = {\n breakpoint,\n inline,\n seriesType,\n };\n const section = getSelectedItem(clipsSections);\n const panelUrl = getTabDataUrl(section);\n const panelId = _.get(section, '@id', panelUrl);\n\n let panelItems = section;\n if (!panelItems && panels && panels[panelId]) {\n panelItems = panels[panelId].panelData;\n }\n\n const sliderMax = 12;\n if (panelItems) {\n const member = panelItems?.items?.member?.slice(0, sliderMax);\n const items = panelItems.items ? { ...panelItems.items, member } : {};\n panelItems = !_.isEmpty(panelItems) ? { ...panelItems, items } : {};\n }\n\n const totalItems = _.get(panelItems, 'items.totalItems', 0);\n const { tileGrid_seeAllButtonText: seeAllText } = window.Language;\n let seeAll = null;\n const slug = slugify(section.name);\n\n if (totalItems > sliderMax) {\n seeAll = (\n <Link\n className={Style.seeAllButton}\n to={`/${showCode}/clips/${slug}/`}\n onClick={() => {\n animateScroll.scrollToTop({ duration: 500 });\n handleAnalytics({\n event: Events.DETAILS_PAGE_PLAYLIST_LANDING,\n payload: {\n pageName: `detail:${seriesType}:${seriesName}:playlist-landing`,\n pageType: `delta:detail:playlist-landing`,\n },\n });\n }}\n >\n <span>{seeAllText}</span>\n <Icon color=\"white\" size=\"small\" viewBox=\"0 0 18 32\" icon=\"ios-arrow-right\" />\n </Link>\n );\n }\n\n const shouldFetch = !panelItems && section;\n if (shouldFetch) {\n const { '@id': id } = section;\n const url = panelUrl ? helperConvertApiRoute(panelUrl) : helperConvertApiRoute(id);\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId });\n fetchPanelData(url, headers, panelId);\n }\n\n if (panelItems) {\n return (\n <CarouselSection\n isAnonymous={isAnonymous}\n isPosters={false}\n isSeasons\n tileType={SERIES_CLIP_TILE}\n panel={panelItems}\n {...panelProps}\n dropdownHeadline={renderDropdown()}\n seeAll={seeAll}\n />\n );\n }\n if (shouldFetch) {\n return (\n <div className={Style.loaderContainer}>\n <Loader />\n </div>\n );\n }\n return null;\n };\n\n const renderClipsPage = () => {\n const returnButton = (\n <div className={Style.returnButtonContainer}>\n <Link className={Style.returnButton} to={`/${showCode}/`}>\n <Icon color=\"white\" size=\"medium\" icon=\"ios-arrow-left\" />\n {`Back to ${seriesName}`}\n </Link>\n </div>\n );\n const section = getSelectedItem(clipsSections);\n\n const items = _.get(section, 'items.member', []);\n\n const processor = item => {\n const processedItem = clipsVideoProcessor(item) || {};\n const description = _.get(item, 'item.description');\n const data = {\n ...processedItem,\n description,\n };\n return data;\n };\n\n const gridType = 'grid-4-2-1';\n const tileGridProps = {\n context: 'seriesDetail',\n items: [...(items || []), ...(paginationItems || [])],\n isSeriesDetailPage: true,\n preventLazyLoad: true,\n processor,\n gridType,\n renderImage: image =>\n renderImage({\n breakpoint,\n imageType: SHOW_DETAIL_RELATED_THUMBNAIL_IMAGE,\n ...(image || {}),\n }),\n tileDetailToggle: false,\n tileTheme: TileStyle,\n theme: TileGridStyle,\n shouldDisplayNetworkLogo: false,\n usePlayButtonThin: true,\n };\n\n const SeeMoreButton = () => {\n if (fetching) return <Loader />;\n const { tileGrid_seeMoreButtonText: seeMoreLabel } = window.Language;\n const numClips = totalItems - [...items, ...paginationItems].length;\n const buttonLabel = `${seeMoreLabel} (${numClips})`;\n return (\n <div className={Style.seeMoreContainer}>\n <button\n className={Style.seeMoreButton}\n type=\"button\"\n onClick={() => {\n dispatch(setFetchingStatus(true));\n dispatch(\n fetchNextClipsPage({\n accessToken,\n deviceId,\n pageType,\n url: nextPage,\n }),\n );\n }}\n >\n {buttonLabel}\n </button>\n </div>\n );\n };\n\n return (\n <>\n {returnButton}\n {renderDropdown()}\n <TileGrid {...tileGridProps} />\n {nextPage && <SeeMoreButton />}\n </>\n );\n };\n\n if (pageType === PAGE_TYPE_CLIPS) {\n return <div className={Style.clipsPage}>{renderClipsPage()}</div>;\n }\n\n return (\n <>\n <section className={Style.clipsCarousel}>\n <div>{renderCarousel()}</div>\n </section>\n <Divider />\n </>\n );\n};\n\nClips.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string.isRequired,\n deviceId: PropTypes.string,\n fetchPanelData: PropTypes.func.isRequired,\n inline: PropTypes.shape({}),\n isAnonymous: PropTypes.bool,\n pageType: PropTypes.string,\n panels: PropTypes.shape({}).isRequired,\n sections: PropTypes.arrayOf(PropTypes.shape([])).isRequired,\n seriesName: PropTypes.string.isRequired,\n seriesType: PropTypes.string.isRequired,\n showCode: PropTypes.string.isRequired,\n};\n\nexport default React.memo(Clips);\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { animateScroll } from 'react-scroll';\nimport { Link } from 'react-router';\nimport Breadcrumbs from 'components/Breadcrumbs';\nimport Icon from 'components/Icon';\nimport Style from './InfoContainer.module.scss';\n\nconst InfoContainer = ({ breadcrumbsData, showName, showCode, children }) => {\n useEffect(() => {\n animateScroll.scrollToTop({ duration: 500 });\n }, []);\n\n return (\n <div className={Style.gridContainer}>\n <div className={Style.returnButtonContainer}>\n <Link className={Style.returnButton} to={`/${showCode}/`}>\n <Icon color=\"white\" size=\"medium\" viewBox=\"0 0 18 36\" icon=\"ios-arrow-left\" />\n {`Back to ${showName}`}\n </Link>\n </div>\n {children}\n <Breadcrumbs data={breadcrumbsData} customStyle={Style.breadcrumb} />\n </div>\n );\n};\n\nexport default InfoContainer;\n\nInfoContainer.defaultProps = {\n breadcrumbsData: {},\n showName: '',\n showCode: '',\n children: null,\n};\n\nInfoContainer.propTypes = {\n breadcrumbsData: PropTypes.arrayOf(PropTypes.shape({})),\n showName: PropTypes.string,\n showCode: PropTypes.string,\n children: PropTypes.node,\n};\n","import React, { useState, useCallback } from 'react';\nimport { browserHistory } from 'react-router';\nimport CarouselSection from 'screens/ContentDetail/components/CarouselSection';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Icon from 'components/Icon';\nimport Loader from 'components/Loader';\nimport { getTabName, getTabDataUrl } from 'screens/SeriesDetail/SeriesDetailHelpers';\nimport { helperGetApiHeaders, helperConvertApiRoute } from 'helpers/ApiHelper';\nimport { SERIES_SEASON_TILE } from 'components/TileV2';\nimport Divider from '../Divider';\nimport theme from './Seasons.module.scss';\n\nconst Seasons = ({\n accessToken,\n breakpoint,\n deviceId,\n fetchNextPanelPage,\n fetchPanelData,\n inline,\n isAnonymous,\n pageType,\n panels,\n seasons,\n seriesType,\n}) => {\n const [openDropdown, setOpenDropdown] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [lastSlidePaginated, setLastSlidePaginated] = useState(null);\n\n const dropdownBackDrop = 'dropdown-backdrop';\n\n const handleOutsideClick = e => {\n if (e.target.id === dropdownBackDrop) {\n onDropdownOpen();\n }\n };\n\n const backdrop = openDropdown ? (\n <div className={theme.dropdownBackDrop} onClick={handleOutsideClick} id={dropdownBackDrop} />\n ) : null;\n\n const getSeasonName = (seasons, seriesType) =>\n seasons.map(season => {\n const name = getTabName({ tab: season, seriesType });\n return { ...season, name };\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onSeasonSelect = item => {\n setOpenDropdown(false);\n const path = `${window.location.origin}/${item.showCode}/${item.url}`;\n browserHistory.replace(path);\n renderCarousel();\n };\n\n const onDropdownOpen = useCallback(() => {\n if (openDropdown) {\n setOpenDropdown(false);\n } else {\n setOpenDropdown(true);\n }\n }, [openDropdown]);\n\n const getSelectedItem = useCallback(\n seasons => {\n const selectedItem = _.find(seasons, season => pageType === season.url);\n return selectedItem || seasons[0];\n },\n [pageType],\n );\n\n const renderDropdown = useCallback(() => {\n const seasonTabs = getSeasonName(seasons, seriesType);\n const selectedItem = getSelectedItem(seasonTabs);\n\n const dropdownClass = openDropdown ? theme.active : null;\n\n if (seasonTabs && seasonTabs.length > 1) {\n return (\n <div id=\"modal\">\n <span className={theme.seasonSelector} onClick={onDropdownOpen}>\n <span>{selectedItem.name}</span>\n {<Icon icon=\"keyboard-arrow-down\" color=\"white\" size=\"large\" viewBox=\"0 0 10 25\" />}\n </span>\n <ul className={classNames(theme.dropdownList, dropdownClass)}>\n {seasonTabs &&\n seasonTabs.map(item => (\n <li key={item.id} className={theme.listItem} onClick={() => onSeasonSelect(item)}>\n {item.name}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n return seasonTabs && seasonTabs[0].name;\n }, [onDropdownOpen, onSeasonSelect, openDropdown, seasons, seriesType, getSelectedItem]);\n\n const renderCarousel = () => {\n const panelProps = {\n breakpoint,\n inline,\n seriesType,\n };\n const seasonTabs = getSeasonName(seasons, seriesType);\n const selectedItem = getSelectedItem(seasonTabs);\n\n const tab = selectedItem;\n const panelUrl = getTabDataUrl(tab);\n const panelId = _.get(tab, '@id', panelUrl);\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken, deviceId });\n let panelItems;\n\n if (panels && panels[panelId]) {\n panelItems = panels[panelId].panelData;\n }\n\n const nextEpisodesUrl = panelItems?.view?.next;\n const shouldPaginate = !!nextEpisodesUrl;\n const shouldFetch = !panelItems && tab;\n\n const fetchNextPanels = lastSlideIndex => {\n if (shouldPaginate) {\n setIsLoading(true);\n setLastSlidePaginated(lastSlideIndex);\n fetchNextPanelPage(nextEpisodesUrl, headers, panelId).then(() => {\n setIsLoading(false);\n });\n }\n };\n\n if (shouldFetch) {\n const { '@id': id } = tab;\n const url = panelUrl ? helperConvertApiRoute(panelUrl) : helperConvertApiRoute(id);\n\n fetchPanelData(url, headers, panelId);\n }\n\n if (shouldFetch || isLoading) {\n return (\n <>\n <div className={theme.loaderContainer}>\n <Loader />\n </div>\n <Divider />\n </>\n );\n }\n\n if (panelItems) {\n return (\n <>\n {backdrop}\n <div className={theme.seasonCarousel}>\n <CarouselSection\n dropdownHeadline={renderDropdown()}\n isAnonymous={isAnonymous}\n isPosters={false}\n isSeasons\n tileType={SERIES_SEASON_TILE}\n lastSlidePaginated={lastSlidePaginated}\n onLastSlide={fetchNextPanels}\n panel={panelItems}\n {...panelProps}\n />\n </div>\n <Divider />\n </>\n );\n }\n\n return null;\n };\n\n return renderCarousel();\n};\n\nSeasons.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string.isRequired,\n deviceId: PropTypes.string,\n fetchPanelData: PropTypes.func.isRequired,\n fetchNextPanelPage: PropTypes.func.isRequired,\n inline: PropTypes.shape({}),\n isAnonymous: PropTypes.bool,\n pageType: PropTypes.string,\n panels: PropTypes.shape({}).isRequired,\n seasons: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n seriesType: PropTypes.string.isRequired,\n};\n\nexport default React.memo(Seasons);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Icon from 'components/Icon';\nimport { isInternalLink } from 'helpers/ContentHelper';\nimport { helperGoToRelativeUrl } from 'helpers/RouteHelper';\nimport { fetchArticle } from 'components/Article/ArticleActions';\nimport { getArticleApiUrl } from 'components/Article/ArticleHelpers';\nimport Divider from '../Divider';\nimport Heading from '../Heading';\nimport Style from './Links.module.scss';\n\nconst SeriesLink = ({ url, isArticle, headline, accessToken, siteScanUrl }) => {\n const navigateToURL = () => {\n if (isArticle) {\n fetchArticle(getArticleApiUrl(url), accessToken);\n } else if (isInternalLink(url)) {\n helperGoToRelativeUrl(url);\n }\n };\n const linkProps = {\n onClick: navigateToURL,\n to: isArticle ? `/${siteScanUrl}/` : url,\n target: isArticle ? null : '_blank',\n className: Style.link,\n };\n return (\n <Link {...linkProps}>\n <div className={Style.icon}>\n {isArticle ? (\n <Icon color=\"white\" viewBox=\"0 0 24 24\" icon=\"article\" />\n ) : (\n <Icon color=\"white\" viewBox=\"0 0 24 24\" icon=\"external-link-square-alt2\" />\n )}\n </div>\n <div className={Style.title}>{headline}</div>\n </Link>\n );\n};\n\n// TODO: use Selectors to pull these component props\nconst Links = ({ links, accessToken }) => {\n const { seriesDetail_linksLabel: linksLabel = 'Links' } = window.Language;\n if (links.length === 0) return null;\n return (\n <>\n <section className={Style.links}>\n <Heading title={linksLabel} />\n <div className={Style.wrapper}>\n {links.map(link => (\n <SeriesLink {...link} key={link.id} accessToken={accessToken} />\n ))}\n </div>\n </section>\n <Divider />\n </>\n );\n};\n\nSeriesLink.defaultProps = {\n headline: '',\n isArticle: false,\n onClick: () => {},\n url: '',\n};\n\nSeriesLink.propTypes = {\n accessToken: PropTypes.string,\n headline: PropTypes.string,\n isArticle: PropTypes.bool,\n onClick: PropTypes.func,\n siteScanUrl: PropTypes.string,\n url: PropTypes.string,\n};\n\nLinks.defaultProps = {\n links: [],\n accessToken: '=',\n};\n\nLinks.propTypes = {\n links: PropTypes.arrayOf(PropTypes.shape({})),\n accessToken: PropTypes.string,\n};\n\nexport default React.memo(Links);\n","import React, { useEffect } from 'react';\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport Breadcrumbs from 'components/Breadcrumbs';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport CastMember from '../Cast/CastMember';\nimport Style from './SeeAll.module.scss';\n\nconst SeeAll = ({\n breadcrumbsData,\n breakpoint,\n castInfo,\n contentCode,\n contentName,\n disableScroll,\n isCast = true,\n items,\n pageTitle,\n seriesType,\n}) => {\n const returnButton = (\n <div className={Style.returnButtonContainer}>\n <Link className={Style.returnButton} to={`/${contentCode}/`}>\n <Icon color=\"white\" size=\"medium\" icon=\"ios-arrow-left\" />\n {`Back to ${contentName}`}\n </Link>\n </div>\n );\n const allItems =\n items.length > 0 &&\n items.map(castMember => (\n <div className={Style.castItem} key={castMember.id}>\n <CastMember\n breakpoint={breakpoint}\n disableScroll={disableScroll}\n info={castMember}\n isCast={isCast}\n showCode={contentCode}\n />\n </div>\n ));\n\n useEffect(() => {\n handleAnalytics({\n event: Events.CAST_LANDING,\n payload: {\n pageName: `detail:${seriesType}:${pageTitle}:cast-landing`,\n pageType: `detail:${seriesType}:cast`,\n },\n });\n }, [pageTitle, seriesType]);\n\n return (\n <div className={Style.gridContainer}>\n {returnButton}\n {items.length > 0 ? (\n <>\n <h1 className={Style.header}>{`Meet the ${items[0].category}`}</h1>\n <div className={Style.allItemsContainer}>{allItems}</div>\n </>\n ) : (\n Object.keys(castInfo).map(key => (\n <>\n <h1 className={Style.header}>{`Meet the ${castInfo[key][0].category}`}</h1>\n <div className={Style.allItemsContainer}>\n {castInfo[key].map(castMember => (\n <div className={Style.castItem} key={castMember.id}>\n <CastMember\n breakpoint={breakpoint}\n disableScroll={disableScroll}\n info={castMember}\n isCast={isCast}\n showCode={contentCode}\n />\n </div>\n ))}\n </div>\n </>\n ))\n )}\n <Breadcrumbs data={breadcrumbsData} customStyle={Style.breadcrumb} />\n </div>\n );\n};\n\nSeeAll.propTypes = {\n breadcrumbsData: PropTypes.arrayOf(PropTypes.shape({})),\n breakpoint: PropTypes.string,\n castInfo: PropTypes.shape({}),\n contentCode: PropTypes.string,\n contentName: PropTypes.string,\n disableScroll: PropTypes.func,\n isCast: PropTypes.bool,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n pageTitle: PropTypes.string,\n seriesType: PropTypes.string,\n};\n\nexport default SeeAll;\n","import React from 'react';\nimport _ from 'lodash';\nimport CarouselSection from 'screens/ContentDetail/components/CarouselSection';\nimport PropTypes from 'prop-types';\nimport { MORE_LIKE_POSTER } from 'components/PosterV2';\nimport Divider from '../Divider';\nimport Style from './Recommended.module.scss';\n\nconst Recommended = ({\n breakpoint,\n favoritesManager,\n isAnonymous,\n recommended = {},\n seriesType,\n overrideAdditionalPosterStyle,\n}) => {\n const panelProps = {\n breakpoint,\n overrideAdditionalPosterStyle,\n seriesType,\n isSeriesDetailAnonymous: false,\n responsive: [\n {\n breakpoint: 767,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n },\n },\n {\n breakpoint: 1023,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n },\n },\n {\n breakpoint: 1439,\n settings: {\n slidesToShow: 5,\n slidesToScroll: 5,\n },\n },\n {\n breakpoint: 2559,\n settings: {\n slidesToShow: 6,\n slidesToScroll: 6,\n },\n },\n {\n breakpoint: 2560,\n settings: {\n slidesToShow: 6,\n slidesToScroll: 6,\n },\n },\n ],\n };\n\n if (!_.isEmpty(recommended)) {\n return (\n <>\n <div className={Style.recommendedCarousel}>\n <CarouselSection\n isAnonymous={isAnonymous}\n dropdownHeadline={recommended?.headline}\n isPosters\n favoritesManager={favoritesManager}\n posterType={MORE_LIKE_POSTER}\n isSeasons\n panel={recommended}\n {...panelProps}\n />\n </div>\n <Divider />\n </>\n );\n }\n\n return null;\n};\n\nRecommended.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n favoritesManager: PropTypes.shape({}).isRequired,\n isAnonymous: PropTypes.bool,\n overrideAdditionalPosterStyle: PropTypes.bool,\n recommended: PropTypes.shape({}),\n seriesType: PropTypes.string.isRequired,\n};\n\nexport default React.memo(Recommended);\n","import React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport ReactTimeout from 'react-timeout';\nimport { deepLinkFavoriteSeries } from 'helpers/AccountHelper';\nimport { helperGetApiHeaders, helperConvertApiRoute } from 'helpers/ApiHelper';\nimport {\n getErrorComponent,\n isStaticRender,\n PAGE_TYPE_ARTICLE,\n PAGE_TYPE_CLIPS,\n PAGE_TYPE_CREDITS,\n slugify,\n} from 'helpers/ContentHelper';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { createSchemaTag, createSeriesDetailSchema } from 'helpers/SchemaHelper';\nimport Breadcrumbs, { breadcrumbsSeriesDetailParser } from 'components/Breadcrumbs';\nimport Icon from 'components/Icon';\nimport {\n makeSelectSeriesDetailInline,\n makeSelectSeriesDetailLatestEpisode,\n makeSelectSeriesDetailPagesSeo,\n makeSelectSeriesDetailPromos,\n makeSelectSeriesDetailRecommendedPanel,\n makeSelectSeriesDetailSeo,\n makeSelectSeriesDetailSeriesData,\n makeSelectSeriesDetailTabs,\n} from 'screens/SeriesDetail/selectors';\nimport {\n clearSeriesDetail,\n fetchSeries,\n fetchV2SEO,\n setSeriesDetailError,\n} from 'screens/SeriesDetail/SeriesDetailActions';\nimport { fetchPanel, fetchNextPanelPage } from 'components/Panel/PanelActions';\nimport { fetchBioLanding, fetchBioDetail } from 'screens/SeriesDetail/components/Bio/BioActions';\nimport {\n Events,\n getFavoritesListString,\n getRecommendationId,\n getTealiumDetailTabData,\n getTealiumSourceCollectionGlobal,\n handleAnalytics,\n PageNames,\n setTealiumSourceCollectionGlobal,\n trackPageReferrerAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport {\n ARTICLE_SCROLL_ELEMENT,\n getFeaturedBio,\n getTabDataUrl,\n getTabName,\n getTabsOfMultipleTypes,\n PANEL_TYPE_CLIPS,\n PANEL_TYPE_SCREEN_PANEL,\n} from 'screens/SeriesDetail/SeriesDetailHelpers';\nimport { setRecommendationIdAction as setRecommendationId } from 'index/AppActions';\n\nimport { fetchArticle } from 'components/Article/ArticleActions';\nimport { getArticleApiUrl, getArticleFromAlternateUrl } from 'components/Article/ArticleHelpers';\nimport { redirectToExternalUrl } from 'helpers/RouteHelper';\nimport Article from 'components/Article';\nimport NFTBanner from './components/NFTBanner';\nimport NFTModule from './components/NFTModule';\nimport About from './components/AboutV2';\nimport Background from './components/Background';\n\nimport Cast from './components/Cast';\nimport CastDetail from './components/Cast/CastDetail';\nimport FoxContentDensitySkeleton from './components/FoxContentDensitySkeleton';\nimport Hero from './components/Hero';\nimport Clips from './components/Clips';\nimport InfoContainer from './components/InfoContainer';\nimport Seasons from './components/Seasons';\nimport Links from './components/Links';\nimport SeeAll from './components/SeeAll';\nimport Recommended from './components/Recommended';\nimport Divider from './components/Divider';\nimport Style from './FoxContentDensity.module.scss';\n\nconst FETCH_NEW_CONTENT_INTERVAL_MS = 1000 * 60 * 30;\nlet isInitialized = false;\n\nclass ContentDetail extends Component {\n constructor(props) {\n super(props);\n this.state = {\n castArray: [],\n // Potentially needed for Favorites in hero\n // eslint-disable-next-line react/no-unused-state\n deepLinkFavorited: false,\n // trackedAnalyticsReferrer is used in trackPageReferrerAnalytics\n // eslint-disable-next-line react/no-unused-state\n trackedAnalyticsReferrer: false,\n };\n\n this.deepLinkFavoriteSeries = deepLinkFavoriteSeries.bind(this);\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n }\n\n componentDidMount() {\n const { params } = this.props;\n const { seriesRedirectMap } = window?.ExternalConfig || {};\n if (!isInitialized) {\n isInitialized = true;\n this.fetchInitialData();\n }\n this.trackPageView();\n if (!isStaticRender() && seriesRedirectMap?.[params?.showId]) {\n redirectToExternalUrl(seriesRedirectMap[params.showId]);\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n accessToken: prevAccessToken,\n params: { showId: prevShowId, pageType: prevPageType, pageId: prevPageId },\n sections: prevSections,\n errors: prevErrors,\n } = prevProps;\n\n const {\n accessToken,\n clearSeriesDetail,\n deviceId,\n errors,\n fetchBioLanding,\n fetchSeries,\n fetchV2SEO,\n params: { showId, pageType, pageId },\n sections,\n seriesType,\n seriesData,\n } = this.props;\n\n const fetchNewSeries = prevShowId !== showId && prevShowId && showId;\n const newPageType = prevPageType !== pageType;\n const loginChanged = accessToken !== prevAccessToken;\n const newErrors = !prevErrors && errors;\n const pageIdChanged = prevPageId !== pageId;\n const newSections = !prevSections && !!sections;\n const newPageIds = !prevPageId && !!pageId;\n const firePageView = newSections || newErrors;\n if (sections) {\n const seasons = _.filter(sections, section => {\n const sectionType = _.get(section, '@type', null);\n return sectionType === 'Season';\n });\n const seasonPage =\n pageType && _.find(seasons, season => season && pageType?.includes(season.url));\n const isClips = pageType === PAGE_TYPE_CLIPS;\n if ((newSections || newPageType) && seasonPage) {\n const url = seasonPage?.SEOV2?.['@id'];\n if (url) fetchV2SEO(url, accessToken, deviceId);\n }\n if ((newSections || newPageType || pageIdChanged || newPageIds) && isClips) {\n const clipsSections = getTabsOfMultipleTypes(sections, [\n PANEL_TYPE_CLIPS,\n PANEL_TYPE_SCREEN_PANEL,\n ])?.map(section => {\n const { id } = section;\n const name = getTabName({ tab: section, seriesType });\n return { ...section, name, showCode: seriesData.showCode, id, url: id };\n });\n const clipPage = _.find(clipsSections, item => slugify(item.name) === pageId);\n const url = clipPage?.SEOV2?.['@id'];\n if (url) fetchV2SEO(url, accessToken, deviceId);\n }\n }\n if (newSections) {\n fetchBioLanding(showId, accessToken, deviceId);\n }\n if (fetchNewSeries) {\n clearSeriesDetail();\n fetchSeries(showId, accessToken, deviceId);\n }\n if (loginChanged) {\n fetchSeries(showId, accessToken, deviceId);\n }\n if (firePageView) this.trackPageView();\n }\n\n componentWillUnmount() {\n const { clearSeriesDetail, disableScroll } = this.props;\n isInitialized = false;\n this.trackPageReferrerAnalytics({\n name: PageNames.SERIES_DETAIL,\n });\n clearSeriesDetail();\n disableScroll({ disableScroll: false, bodyOnly: false });\n }\n\n setErrors = errors => {\n setSeriesDetailError(errors);\n };\n\n setCastArray = castArray => {\n this.setState({ castArray });\n };\n\n setFetchInterval = fetch => {\n const {\n params: { showId },\n accessToken,\n deviceId,\n setInterval,\n } = this.props;\n fetch(showId, accessToken, deviceId);\n setInterval(() => {\n const {\n accessToken: currentAccessToken,\n deviceId: currentDeviceId,\n params: { showId },\n } = this.props;\n fetch(showId, currentAccessToken, currentDeviceId);\n }, FETCH_NEW_CONTENT_INTERVAL_MS);\n };\n\n fetchInitialData() {\n if (isStaticRender()) return;\n const { fetchSeries } = this.props;\n this.setFetchInterval(fetchSeries);\n }\n\n renderArticle(article) {\n const {\n params: { pageType, pageId },\n accessToken,\n deviceId,\n pageViewEvent,\n setLoading,\n } = this.props;\n if (!article && (!pageId || pageType !== PAGE_TYPE_ARTICLE)) return null;\n const articleId = _.get(article, 'articleId', null);\n const articleUrl = getArticleApiUrl(pageId || articleId);\n return (\n <div className={Style.article}>\n <Article\n disableScrollEvent\n url={articleUrl}\n accessToken={accessToken}\n deviceId={deviceId}\n pageViewEvent={pageViewEvent}\n scrollElement={ARTICLE_SCROLL_ELEMENT}\n setErrors={this.setErrors}\n setLoading={setLoading}\n />\n </div>\n );\n }\n\n renderCastDetail = ({ currentCast, castArray, id, contentCode, isCast = true }) => {\n const { accessToken, breakpoint } = this.props;\n const index = _.findIndex(castArray, { alternateId: id });\n const renderArrows = castArray.length !== 1;\n const nextCast = index === castArray.length - 1 ? castArray[0] : castArray[index + 1];\n const prevCast = index === 0 ? castArray[castArray.length - 1] : castArray[index - 1];\n const nextArrow = renderArrows ? (\n <Link\n className={Style.nextCastArrow}\n to={`/${contentCode}/${isCast ? 'credits' : 'characters'}/${nextCast.alternateId}/`}\n onlyActiveOnIndex\n >\n <Icon color=\"white\" size=\"large\" viewBox=\"0 0 18 32\" icon=\"ios-arrow-right\" />\n </Link>\n ) : null;\n\n const prevArrow = renderArrows ? (\n <Link\n className={Style.prevCastArrow}\n to={`/${contentCode}/${isCast ? 'credits' : 'characters'}/${prevCast.alternateId}/`}\n onlyActiveOnIndex\n >\n <Icon color=\"white\" size=\"large\" viewBox=\"0 0 18 32\" icon=\"ios-arrow-left\" />\n </Link>\n ) : null;\n\n return (\n <div className={Style.castDetail}>\n <CastDetail\n accessToken={accessToken}\n breakpoint={breakpoint}\n detail={currentCast}\n nextArrow={nextArrow}\n prevArrow={prevArrow}\n />\n </div>\n );\n };\n\n trackPageView = () => {\n const {\n pageViewEvent,\n sections,\n seriesData,\n seriesType,\n getUseUtagGlobal,\n errors,\n favoritesManager: { favorites },\n } = this.props;\n if (!seriesData) return;\n const section = _.get(sections, '0');\n const pageTitle = _.get(seriesData, 'name');\n const referringCollection = getTealiumSourceCollectionGlobal();\n const pageType = `detail:${seriesType}`;\n const seriesCollection = getTealiumDetailTabData({ seriesData, tab: section });\n const selectedMenuItem = _.get(seriesCollection, 'selectedMenuItem');\n\n if ((section || errors) && pageViewEvent) {\n if (referringCollection) {\n const { name: title } = referringCollection;\n setTealiumSourceCollectionGlobal({ ...referringCollection, title });\n }\n\n const collection = referringCollection;\n\n pageViewEvent({\n pageName: PageNames.DETAIL,\n collection,\n useUtagGlobal: getUseUtagGlobal(),\n seriesType,\n pageTitle,\n pageType: `${pageType}:landing`,\n selectedMenuItem,\n });\n // Fire after page view event\n const hasFavorite = !!_.filter(favorites, { showCode: seriesData.showCode })[0];\n if (!hasFavorite)\n this.deepLinkFavoriteSeries({\n props: this.props,\n setDeepLinkFavorited: this.setDeepLinkFavorited,\n });\n }\n\n handleAnalytics(\n {\n event: Events.DETAIL_PAGE_MENU_ITEM_VIEW,\n payload: {\n pageName: `detail:${seriesType}:${pageTitle}:${selectedMenuItem}`,\n pageType: `detail:${pageType}:menu`,\n selectedMenuItem,\n },\n },\n {\n event: Events.DETAIL_PAGE_DEFAULT_STATE,\n payload: {\n pageName: `${pageType}:${pageTitle}`,\n pageType: `${pageType}:landing`,\n pageCollectionType: referringCollection\n ? referringCollection.collectionType\n : 'no collection type',\n pageCollectionTitle: referringCollection ? referringCollection.name : null,\n ...(favorites && {\n favoritesContentLength: favorites.length,\n favoritesContentList: getFavoritesListString(favorites),\n }),\n },\n },\n );\n };\n\n getBreadcrumbsData() {\n const { params, seriesData, links, bioProfiles } = this.props;\n const { pageId, pageType } = params;\n const articleData = getArticleFromAlternateUrl({ articles: links, altUrl: pageType });\n const creditsData = getFeaturedBio(pageId, bioProfiles);\n const breadcrumbsData = breadcrumbsSeriesDetailParser(\n params,\n seriesData,\n articleData,\n creditsData,\n );\n return breadcrumbsData;\n }\n\n fetchPanelData = (url, headers, panelId) => {\n const { fetchPanel } = this.props;\n fetchPanel(url, headers, panelId);\n };\n\n render() {\n const {\n accessToken,\n breakpoint,\n castLandingSeo,\n continueWatchingItems,\n deviceId,\n disableScroll,\n episodes,\n errors,\n links,\n favoritableItems,\n favoritesManager,\n fetchNextPanelPage,\n inline,\n isAnonymous,\n isAuthenticated,\n pagesSeo,\n panels,\n params: { pageType, showId = '', pageId },\n recommended,\n recommendationIdData,\n sections,\n seriesSeo,\n seriesData,\n seriesSortOrder,\n seriesType,\n articleSeo,\n } = this.props;\n const { castArray } = this.state;\n const articles = _.filter(links, 'isArticle');\n\n const seasons = _.filter(sections, section => {\n const sectionType = _.get(section, '@type', null);\n return sectionType === 'Season';\n });\n\n const item = _.get(inline, 'items.member.0', null);\n\n const { name: contentName, showCode: contentCode } = seriesData || {};\n\n const castInfo = _.find(sections, { '@type': 'Cast' })?.member ?? null;\n const isSameShowAsTheUrlParam = contentCode === showId;\n const showLoader = !isSameShowAsTheUrlParam || (!inline && !sections);\n\n const recommendationId = getRecommendationId(recommendationIdData);\n if (errors) return getErrorComponent(errors);\n\n if (!seriesData || showLoader) return <FoxContentDensitySkeleton />;\n\n const heroProps = {\n breakpoint,\n continueWatchingItems,\n episodes,\n disableScroll,\n isAuthenticated,\n item,\n favoritesManager,\n favoritableItems,\n recommendationId,\n };\n\n const commonProps = {\n accessToken,\n breakpoint,\n deviceId,\n fetchPanelData: this.fetchPanelData,\n isAnonymous,\n pageType,\n seriesType,\n };\n\n const seasonProps = {\n ...commonProps,\n fetchNextPanelPage,\n inline,\n panels,\n seasons,\n };\n\n const recommendedProps = {\n ...commonProps,\n favoritesManager,\n recommended,\n };\n\n const clipsProps = {\n ...commonProps,\n inline,\n panels,\n sections,\n seriesName: contentName,\n showCode: contentCode,\n };\n\n const infoContainerProps = {\n breadcrumbsData: this.getBreadcrumbsData(),\n showCode: contentCode,\n showName: contentName,\n };\n\n const castProps = {\n castInfo,\n disableScroll,\n breakpoint,\n contentCode,\n setCastArray: this.setCastArray,\n };\n\n // TODO: use Selectors to pull these props into the components independently in favor of passing them. (where possible)\n const getSection = (item, index) => {\n const { section, type: sectionType } = item;\n const hasNFTCountdown = seriesSortOrder?.find(elem => elem?.type === 'nftCountdown');\n switch (sectionType) {\n case 'season':\n return <Seasons key={`${item.id} ${index}`} {...seasonProps} />;\n case 'clips':\n return <Clips key={`${item.id} ${index}`} {...clipsProps} sections={[section]} />;\n case 'about':\n return <About key={`${item.id} ${index}`} />;\n case 'promo':\n return <Links key={`${item.id} ${index}`} links={links} accessToken={accessToken} />;\n case 'cast':\n return <Cast key={`${item.id} ${index} Cast`} {...castProps} />;\n case 'nftRewards':\n return (\n <>\n <NFTBanner\n ctaText={section?.ctaText}\n description={section?.description}\n header={section?.headline}\n images={section?.images}\n rewardUrl={section?.url}\n />\n {!hasNFTCountdown && <Divider />}\n </>\n );\n case 'nftCountdown':\n return (\n <>\n <NFTModule\n ctaText={section?.ctaText}\n dropUrl={section?.url}\n endDate={section?.countdownTo}\n images={section?.images}\n videos={section?.autoPlayVideo}\n nftName={section?.headline}\n />\n <Divider />\n </>\n );\n default:\n return null;\n }\n };\n const detailScreen = (\n <>\n <Hero {...heroProps} />\n {seriesSortOrder?.map((item, index) => getSection(item, index))}\n <Recommended {...recommendedProps} />\n </>\n );\n\n let castMemberInfo = _.find(castArray, { alternateId: pageId });\n if (castInfo) {\n Object.keys(castInfo).map(key => {\n if (!castMemberInfo) {\n castMemberInfo = _.find(castInfo[key], { alternateId: pageId });\n }\n });\n }\n let pageContent;\n const selectedArticle =\n !_.isEmpty(articles) && pageType\n ? getArticleFromAlternateUrl({ articles, altUrl: pageType })\n : null;\n let seo = seriesSeo;\n let canonical = seo?.canonicalUrl;\n const isSeasonPage =\n pageType && !!_.find(seasons, season => season && pageType?.includes(season.url));\n const defaultContent = () => {\n if (selectedArticle) {\n seo = { ...seo, ...articleSeo };\n return (\n <div className={Style.infoContainer}>\n <InfoContainer {...infoContainerProps}>\n {this.renderArticle(selectedArticle)}\n </InfoContainer>\n </div>\n );\n }\n if (isSeasonPage) {\n seo = {\n ...seo,\n ...pagesSeo,\n canonicalUrl: `${canonical}${pageType ? `${pageType}/` : ''}`,\n };\n }\n return (\n <>\n <Background item={item} breakpoint={breakpoint} />\n <div className={Style.contentContainer}>{detailScreen}</div>\n </>\n );\n };\n switch (pageType) {\n case PAGE_TYPE_ARTICLE:\n pageContent = (\n <div className={Style.infoContainer}>\n <InfoContainer {...infoContainerProps}>{this.renderArticle()}</InfoContainer>\n </div>\n );\n break;\n case PAGE_TYPE_CLIPS:\n if (canonical) {\n seo = { ...seo, canonicalUrl: `${canonical}${pageType}/${pageId ? `${pageId}/` : ''}` };\n }\n pageContent = (\n <>\n <Background item={item} breakpoint={breakpoint} />\n <Clips {...clipsProps} />\n </>\n );\n break;\n case PAGE_TYPE_CREDITS:\n if (castArray.length <= 0 && !castInfo) {\n pageContent = defaultContent();\n break;\n }\n seo = { ...seo, ...castLandingSeo };\n canonical = seo?.canonicalUrl;\n if (canonical) {\n seo = {\n ...seo,\n ...pagesSeo,\n canonicalUrl: `${canonical}${pageType}/${pageId ? `${pageId}/` : ''}`,\n };\n }\n pageContent = (\n <>\n <Background item={item} breakpoint={breakpoint} />\n <SeeAll\n breadcrumbsData={this.getBreadcrumbsData()}\n breakpoint={breakpoint}\n contentCode={contentCode}\n contentName={contentName}\n disableScroll={disableScroll}\n items={castArray}\n castInfo={castInfo}\n seriesType={seriesType}\n pageTitle={contentName}\n />\n </>\n );\n if (pageId) {\n const { bioProfiles } = this.props;\n if (!castMemberInfo) break;\n const { id } = castMemberInfo;\n const currentBioProfile = _.get(bioProfiles, id, {});\n const { seo: bioSeo, featured } = currentBioProfile;\n seo = { ...bioSeo };\n const { canonicalUrl } = seo;\n if (canonicalUrl) {\n seo.canonicalUrl = canonicalUrl\n ?.split('/')\n ?.map(item => (item === id ? featured.alternateId : item))\n ?.join('/');\n }\n pageContent = (\n <div className={Style.infoContainer}>\n <InfoContainer {...infoContainerProps}>\n {this.renderCastDetail({\n currentCast: castMemberInfo,\n castArray:\n castArray?.length > 0\n ? castArray\n : castInfo && castInfo[castMemberInfo?.category],\n id: pageId,\n contentCode,\n })}\n </InfoContainer>\n </div>\n );\n }\n break;\n default:\n pageContent = defaultContent();\n }\n return (\n <>\n {setHelmetTags(seo)}\n {setHelmetTags({\n tags: [\n createSchemaTag({\n item: { ...seriesData, actors: _.get(castInfo, 'member', []) },\n getSchema: createSeriesDetailSchema,\n }),\n ],\n })}\n {pageContent}\n {pageType !== PAGE_TYPE_ARTICLE && pageType !== PAGE_TYPE_CREDITS && !selectedArticle && (\n <Breadcrumbs data={this.getBreadcrumbsData()} customStyle={Style.breadcrumbs} />\n )}\n </>\n );\n }\n}\n\nContentDetail.contextTypes = {\n router: PropTypes.shape({}),\n};\n\nContentDetail.defaultProps = {\n accessToken: null,\n account: null,\n adblock: false,\n anonymousId: null,\n articlePanels: null,\n authCheckComplete: false,\n authSuccess: false,\n bioProfiles: null,\n castLandingSeo: null,\n continueWatching: null,\n continueWatchingItems: [],\n deviceId: null,\n disableScroll: noop,\n errors: null,\n favoritableItems: [],\n favoritesManager: {},\n inline: {},\n isAnonymous: false,\n isAuthenticated: false,\n isHeader: false,\n isLatestEpisodeLive: null,\n latestEpisode: null,\n mvpdData: null,\n openSignIn: noop,\n openSignUp: noop,\n overlay: null,\n pagesSeo: {},\n preauthorizedResources: [],\n profileId: null,\n promos: [],\n provider: {},\n recommended: {},\n recommendationIdData: null,\n renderAuthContainer: noop,\n route: {},\n saveLiveVideo: noop,\n sections: [],\n seriesSeo: null,\n seriesData: null,\n seriesSortOrder: null,\n seriesType: null,\n setAccountCloseIgnoreRedirect: noop,\n setIsAuthenticated: noop,\n setIsPlayerLoaded: noop,\n setLoading: null,\n setMVPDLogoutDataToAppState: noop,\n setMVPDToAppState: noop,\n setProvider: noop,\n toggleMvpdAuthOverlay: noop,\n};\n\nContentDetail.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n articleSeo: PropTypes.shape({}),\n adblock: PropTypes.bool,\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func.isRequired,\n articlePanels: PropTypes.shape({}),\n authCheckComplete: PropTypes.bool,\n authSuccess: PropTypes.bool,\n bioProfiles: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n castLandingSeo: PropTypes.shape({}),\n clearSeriesDetail: PropTypes.func.isRequired,\n continueWatching: PropTypes.shape({}),\n continueWatchingItems: PropTypes.arrayOf(PropTypes.shape({})),\n deviceId: PropTypes.string,\n disableScroll: PropTypes.func,\n errors: PropTypes.number,\n episodes: PropTypes.arrayOf(PropTypes.shape({})),\n favoritableItems: PropTypes.arrayOf(PropTypes.shape({})),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n deleteFavorites: PropTypes.func.isRequired,\n }),\n fetchArticle: PropTypes.func.isRequired,\n fetchBioLanding: PropTypes.func.isRequired,\n fetchNextPanelPage: PropTypes.func.isRequired,\n fetchPanel: PropTypes.func.isRequired,\n fetchSeries: PropTypes.func.isRequired,\n fetchV2SEO: PropTypes.func.isRequired,\n getUseUtagGlobal: PropTypes.func.isRequired,\n inline: PropTypes.shape({}),\n isAnonymous: PropTypes.bool,\n isAuthenticated: PropTypes.bool,\n isHeader: PropTypes.bool,\n isLatestEpisodeLive: PropTypes.bool,\n latestEpisode: PropTypes.shape({}),\n links: PropTypes.arrayOf(PropTypes.shape({})),\n mvpdData: PropTypes.shape({}),\n openSignIn: PropTypes.func,\n openSignUp: PropTypes.func,\n overlay: PropTypes.string,\n pageViewEvent: PropTypes.func.isRequired,\n pagesSeo: PropTypes.shape({}),\n panels: PropTypes.shape({}),\n params: PropTypes.shape({\n showId: PropTypes.string,\n }).isRequired,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n profileId: PropTypes.string,\n promos: PropTypes.arrayOf(PropTypes.shape({})),\n provider: PropTypes.shape({}),\n recommended: PropTypes.shape({}),\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n renderAuthContainer: PropTypes.func,\n removeVideoHero: PropTypes.func.isRequired,\n route: PropTypes.shape({}),\n saveLiveVideo: PropTypes.func,\n seriesSeo: PropTypes.shape({}),\n seriesData: PropTypes.shape({}),\n seriesSortOrder: PropTypes.arrayOf(PropTypes.shape({})),\n seriesType: PropTypes.string,\n setAccountCloseIgnoreRedirect: PropTypes.func,\n setAuthorizationToken: PropTypes.func.isRequired,\n setInterval: PropTypes.func.isRequired,\n setIsAuthenticated: PropTypes.func,\n setIsPlayerLoaded: PropTypes.func,\n setLoading: PropTypes.func,\n setMVPDLogoutDataToAppState: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setOverlay: PropTypes.func.isRequired,\n setProvider: PropTypes.func,\n setRecommendationId: PropTypes.func.isRequired,\n setVideoHero: PropTypes.func.isRequired,\n sections: PropTypes.arrayOf(PropTypes.shape({})),\n toggleMvpdAuthOverlay: PropTypes.func,\n};\n\nfunction mapStateToProps(state) {\n const panels = _.get(state, 'panel.panels');\n return {\n articlePanels: state.article.panels,\n articleSeo: state.article.seo,\n bioProfiles: state.bio.profiles,\n castLandingSeo: state.bio.landingSeo,\n continueWatchingItems: state.seriesDetail.continueWatchingItems,\n episodes: state.seriesDetail.episodes,\n errors: state.seriesDetail.errors,\n favoritableItems: state.seriesDetail.favoritableItems,\n inline: makeSelectSeriesDetailInline(state),\n latestEpisode: makeSelectSeriesDetailLatestEpisode(state),\n links: state.seriesDetail.links,\n panels,\n promos: makeSelectSeriesDetailPromos(state),\n recommended: makeSelectSeriesDetailRecommendedPanel(state),\n recommendationIdData: state.app.recommendationIdData,\n sections: makeSelectSeriesDetailTabs(state),\n seriesData: makeSelectSeriesDetailSeriesData(state),\n seriesSeo: makeSelectSeriesDetailSeo(state),\n pagesSeo: makeSelectSeriesDetailPagesSeo(state),\n seriesSortOrder: state.seriesDetail.seriesSortOrder,\n seriesType: state.seriesDetail.seriesType,\n };\n}\n\nContentDetail.fetchData = ({ store, params, accessToken }) => {\n const { showId, pageType, pageId } = params;\n isInitialized = true;\n return store\n .dispatch(dispatch => dispatch(fetchSeries(showId, accessToken)))\n .then(() => {\n const state = store.getState();\n const { tabs: sections, links, seriesType, seriesData } = state.seriesDetail;\n const articles = _.filter(links, 'isArticle');\n const selectedArticle =\n pageType && !_.isEmpty(articles)\n ? getArticleFromAlternateUrl({ articles, altUrl: pageType })\n : null;\n if (selectedArticle) {\n return store.dispatch(fetchArticle(getArticleApiUrl(selectedArticle.url), accessToken));\n }\n if (pageType === PAGE_TYPE_CREDITS) {\n if (pageId) {\n const castInfo = _.find(sections, { '@type': 'Cast' });\n const castArray = _.get(castInfo, 'member', []);\n const castMemberInfo = _.find(castArray, { alternateId: pageId });\n if (castMemberInfo) {\n const { id } = castMemberInfo;\n return store.dispatch(fetchBioDetail(id, accessToken));\n }\n } else {\n return store.dispatch(fetchBioLanding(showId, accessToken));\n }\n }\n\n if (pageType === PAGE_TYPE_CLIPS) {\n const clipsSections = getTabsOfMultipleTypes(sections, [\n PANEL_TYPE_CLIPS,\n PANEL_TYPE_SCREEN_PANEL,\n ])?.map(section => {\n const { id } = section;\n const name = getTabName({ tab: section, seriesType });\n return { ...section, name, showCode: seriesData.showCode, id, url: id };\n });\n const clipPage = _.find(clipsSections, item => slugify(item.name) === pageId);\n const url = clipPage?.SEOV2?.['@id'];\n if (url) store.dispatch(fetchV2SEO(url, accessToken));\n }\n\n const seasons = _.filter(sections, section => {\n const sectionType = _.get(section, '@type', null);\n return sectionType === 'Season';\n });\n const seasonPage =\n pageType && _.find(seasons, season => season && pageType?.includes(season.url));\n if (seasonPage) {\n const url = seasonPage?.SEOV2?.['@id'];\n if (url) store.dispatch(fetchV2SEO(url, accessToken));\n }\n\n if (_.isEmpty(seasons)) return store;\n let url;\n let panelId;\n if (seasonPage) {\n url = seasonPage?.episodes?.['@id'];\n panelId = _.get(seasonPage, '@id', url);\n } else {\n const [season] = seasons;\n const { '@id': id } = season;\n const panelUrl = getTabDataUrl(season);\n panelId = _.get(season, '@id', panelUrl);\n url = panelUrl ? helperConvertApiRoute(panelUrl) : helperConvertApiRoute(id);\n }\n const headers = helperGetApiHeaders({ pathKey: pageType, accessToken });\n return store.dispatch(fetchPanel(url, headers, panelId));\n });\n};\n\nexport default ReactTimeout(\n connect(mapStateToProps, {\n clearSeriesDetail,\n fetchArticle,\n fetchBioLanding,\n fetchNextPanelPage,\n fetchPanel,\n fetchSeries,\n fetchV2SEO,\n setRecommendationId,\n setSeriesDetailError,\n })(ContentDetail),\n);\n","import { seriesV2Enabled } from 'helpers/ConfigHelper';\nimport FoxContentDensity from './FoxContentDensity';\nimport SeriesDetail from '../SeriesDetail';\n\nexport default seriesV2Enabled() ? FoxContentDensity : SeriesDetail;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport theme from './style.css';\n\n// note that grid is now generic and doesn't care about what is passed into it\nconst Grid = (props = {}) => {\n const { children, gridType } = props;\n if (!gridType) return null;\n return (\n <div className={theme[gridType]}>\n <div className={theme.grid}>{children}</div>\n </div>\n );\n};\n\nGrid.defaultProps = {\n children: null,\n};\nGrid.propTypes = {\n children: PropTypes.element,\n gridType: PropTypes.oneOf([\n 'grid-2-1',\n 'grid-3-1',\n 'grid-3-2',\n 'grid-4-1',\n 'grid-4-2',\n 'grid-4-2-1',\n 'grid-4-3',\n 'grid-4-3-1',\n 'grid-5-4-2-1',\n 'grid-5-4-3-1',\n 'grid-horizontal-3',\n ]).isRequired,\n};\n\nexport default Grid;\n","import React from 'react';\nimport { SHOW_THUMBNAIL_IMAGE } from 'helpers/ImageHelper';\nimport Image from 'components/Tile/components/Image';\nimport theme from './style.css';\n\n// if we wanted to use themr here we could create a new wrapper around the Image component\nconst ShowsTileImage = props => <Image imageType={SHOW_THUMBNAIL_IMAGE} {...props} theme={theme} />;\n\nexport default ShowsTileImage;\n","import React from 'react';\nimport NetworkImage from 'components/Tile/components/NetworkImage';\nimport theme from './style.css';\n\n// if we wanted to use themr here we could create a new wrapper around the NetworkImage component\nconst ShowsNetworkImage = props => <NetworkImage theme={theme} {...props} />;\n\nexport default ShowsNetworkImage;\n","import React from 'react';\nimport LazyLoad from 'react-lazy-load';\nimport Dotdotdot from 'react-dotdotdot';\nimport PropTypes from 'prop-types';\nimport { getVideoObjectImage, getVideoObjectImages } from 'helpers/VideoProcessorHelper';\nimport { helperGetRelativeUrl } from 'helpers/RouteHelper';\nimport { Link } from 'react-router';\nimport Image from './components/Image';\nimport NetworkImage from './components/NetworkImage';\nimport theme from './style.css';\n\nconst ShowsTile = props => {\n const { item, breakpoint } = props;\n if (!item) return null;\n\n const {\n detailUrl,\n images,\n name,\n network,\n playerScreenUrl,\n screenUrl,\n seriesName,\n seriesScreenUrl,\n } = item;\n\n const title = seriesName || name;\n const imageObj = getVideoObjectImages({ images });\n const image = getVideoObjectImage({ image: imageObj, network });\n const url = screenUrl || seriesScreenUrl || playerScreenUrl || detailUrl;\n const link = helperGetRelativeUrl({ url });\n\n return (\n <div className={theme.tile}>\n <Link to={link}>\n <div className={theme.imageContainer}>\n <LazyLoad offset={100} debounce={false} throttle={350} unmountIfInvisible once>\n <Image src={image} breakpoint={breakpoint} />\n </LazyLoad>\n <div className={theme.networkImage}>\n <NetworkImage network={network} />\n </div>\n </div>\n </Link>\n\n <Dotdotdot clamp={1}>\n <Link to={link} className={theme.title}>\n {title}\n </Link>\n </Dotdotdot>\n </div>\n );\n};\n\nShowsTile.propTypes = {\n item: PropTypes.shape({\n network: PropTypes.string.isRequired,\n detailUrl: PropTypes.string,\n images: PropTypes.shape({}),\n name: PropTypes.string,\n playerScreenUrl: PropTypes.string,\n screenUrl: PropTypes.string,\n seriesName: PropTypes.string,\n seriesScreenUrl: PropTypes.string,\n }).isRequired,\n breakpoint: PropTypes.string.isRequired,\n};\n\nexport default ShowsTile;\n","import React from 'react';\nimport ShowsTile from 'screens/Shows/components/ShowsTile';\nimport _ from 'lodash';\n\nconst ShowsTiles = ({ items, breakpoint }) =>\n items.map((item, idx) => (\n <ShowsTile key={`shows-tile-${_.get(item, '@id', idx)}`} item={item} breakpoint={breakpoint} />\n ));\n\nexport default ShowsTiles;\n","/* global SeriesFiltersEnabled */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport InfiniteScroll from 'react-infinite-scroller';\nimport _ from 'lodash';\nimport BreadcrumbsComponent, { breadcrumbsShowsParser } from 'components/Breadcrumbs';\nimport Grid from 'components/Grid';\nimport ShowsTiles from 'screens/Shows/components/ShowsTiles';\nimport Loader from 'components/Loader';\nimport { setFirstPage } from 'components/Panel/PanelActions';\nimport Panel from 'components/Panel';\nimport { isStaticRender, getErrorComponent } from 'helpers/ContentHelper';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { SHOW_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport {\n handleTealiumButtonAction,\n PageNames,\n trackPageReferrerAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport { onFilterClick, OVERLAY_SHOWS_FILTER } from 'helpers/FilterHelper';\nimport { cleanString, helperGetShowsUrl } from 'helpers/RouteHelper';\nimport { listProcessorWithAnimation, listItemProcessor } from 'helpers/VideoProcessorHelper';\nimport { renderGrid } from 'helpers/GridHelper';\nimport {\n fetchNextPage,\n fetchPanelPaginationLoop,\n paginationLoader,\n toggleFetching,\n resetPagination,\n getPaginationData,\n getPaginationNextUrl,\n renderHelper,\n} from 'helpers/PaginationHelper';\nimport { helperGetApiHeaders, helperConvertApiRoute } from 'helpers/ApiHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { fetchShows, resetStore, setSuggestedTab } from './ShowsActions';\nimport style from './Shows.css';\n\nconst searchTileTheme = 'components/TileV2/Styles/SearchTile.module.scss';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n renderList: false,\n },\n [SITE_PLATFORM_WEB]: {\n renderList: false,\n },\n [SITE_PLATFORM_TABLET]: {\n renderList: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n renderList: true,\n },\n};\n\nclass Shows extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showLoader: true,\n selectedFilter: null,\n suggestedLoaded: false,\n initialDataLoaded: false,\n };\n this.onFilterClick = onFilterClick.bind(this, props.fetchShows);\n this.paginationLoader = paginationLoader.bind(this);\n this.getPaginationData = getPaginationData.bind(this);\n this.setSelectedFilter = this.setSelectedFilter.bind(this);\n this.openDropdown = this.openDropdown.bind(this);\n this.closeDropdown = this.closeDropdown.bind(this);\n this.renderLoader = this.renderLoader.bind(this);\n this.renderFilteredPanel = this.renderFilteredPanel.bind(this);\n this.renderHelper = renderHelper.bind(this);\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n }\n\n componentDidMount() {\n const {\n accessToken,\n deviceId,\n fetchShows,\n filteredPanel,\n getUseUtagGlobal,\n pageViewEvent,\n panels,\n params: { collectionId, filterId },\n route: { isRetiredShowsPage },\n setListPage,\n setSuggestedTab,\n } = this.props;\n if (panels || filteredPanel) this.setState({ showLoader: false });\n pageViewEvent({ pageName: PageNames.SHOWS, useUtagGlobal: getUseUtagGlobal() });\n if (collectionId || filterId) {\n setSuggestedTab({ suggestedNetwork: collectionId, suggestedFilter: filterId });\n }\n if (!isStaticRender()) fetchShows({ accessToken, deviceId, isRetiredShowsPage });\n if (setListPage) setListPage(true);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n accessToken,\n deviceId,\n panels,\n tabs: nextTabs,\n filters: nextFilters,\n panels: nextPanels,\n params: { collectionId: nextCollectionId, filterId: nextFilter },\n currentTab: nextTab,\n } = nextProps;\n const {\n accessToken: prevAccessToken,\n suggestedNetwork,\n suggestedFilter,\n fetchShows,\n filteredPanel,\n setListPage,\n params: { collectionId, filterId: filter },\n currentTab,\n panels: currentPanels,\n route: { isRetiredShowsPage },\n } = this.props;\n let newState = {};\n const { selectedFilter, suggestedLoaded, initialDataLoaded } = this.state;\n const firstPanelsLoaded = !initialDataLoaded && !currentPanels && nextPanels;\n const collectionIdChanged = collectionId && collectionId !== nextCollectionId;\n const nextFilterName = nextFilter && _.toLower(decodeURIComponent(nextFilter));\n const filterChanged = filter !== nextFilter;\n const tabChanged = currentTab !== nextTab;\n const nextFilterMatchesSelectedFilter = nextFilterName === _.toLower(selectedFilter);\n const updateFilter = filterChanged && !tabChanged && !nextFilterMatchesSelectedFilter;\n const accessTokenChanged = prevAccessToken !== accessToken;\n\n if (setListPage) setListPage(true);\n if (panels || filteredPanel) newState.showLoader = false;\n\n if (firstPanelsLoaded) {\n newState.initialDataLoaded = true;\n this.setState(newState);\n newState = {};\n const screenPanels = _.get(nextPanels, 'member');\n const decodedCollectionId = _.toLower(decodeURIComponent(nextCollectionId));\n const collectionIdPanelIndex = _.findIndex(screenPanels, o => {\n const { id, headline } = o;\n const isIdMatch = id === nextCollectionId;\n const isHeadlineMatch = cleanString(headline) === decodedCollectionId;\n return isIdMatch || isHeadlineMatch;\n });\n const collectionIdPanel = screenPanels[collectionIdPanelIndex];\n const defaultPanel = _.get(screenPanels, '0');\n const panel = collectionIdPanel || defaultPanel;\n const panelId = _.get(panel, 'id');\n const collection = _.get(panel, 'items');\n const collectionFilters = _.get(panel, 'customViews');\n const preSelectedFilter = _.find(\n collectionFilters,\n p => _.toLower(_.get(p, 'name')) === nextFilterName,\n );\n const filterName = _.get(preSelectedFilter, 'name');\n const filterUrl = _.get(preSelectedFilter, 'url');\n const loadPreselectedFilter = filterName && filterUrl;\n\n if (nextCollectionId) {\n if (loadPreselectedFilter) return this.onFilterClick({ name: filterName, url: filterUrl });\n return fetchShows({ accessToken, deviceId, tabId: panelId, filteredPanel: collection });\n }\n if (loadPreselectedFilter) return this.onFilterClick({ name: filterName, url: filterUrl });\n }\n\n if (collectionIdChanged) {\n const useDefaultCollectionId = !nextCollectionId;\n const { tabs } = this.props;\n newState.selectedFilter = null;\n const tab = useDefaultCollectionId\n ? tabs[0]\n : _.find(tabs, o => {\n const { headline } = o;\n return cleanString(headline) === decodeURIComponent(nextCollectionId);\n });\n if (tab) {\n const { id: tabId, items } = tab;\n fetchShows({ accessToken, deviceId, filteredPanel: items, tabId });\n }\n } else if (tabChanged) {\n if (!nextFilterName) newState.selectedFilter = null;\n const tab = _.find(nextTabs, t => _.get(t, 'id') === nextTab);\n const tabFilters = _.get(tab, 'customViews');\n const newFilter =\n _.find(tabFilters, f => _.toLower(_.get(f, 'name')) === nextFilterName) || {};\n const { name, url } = newFilter;\n if (name && url) this.onFilterClick({ name, url });\n } else if (updateFilter) {\n const tabFilters = _.get(\n _.find(nextTabs, t => _.get(t, 'id') === currentTab),\n 'customViews',\n );\n const defaultFilter = tabFilters[0];\n const newFilter =\n _.find(tabFilters, f => _.toLower(_.get(f, 'name')) === nextFilterName) || defaultFilter;\n const { name, url } = newFilter;\n const ignoreUpdatingUrl = newFilter === defaultFilter;\n if (name && url) this.onFilterClick({ name, url, ignoreUpdatingUrl });\n }\n\n // handle suggestedFilter\n if (\n suggestedLoaded === false &&\n ((nextTabs && nextFilters && suggestedFilter) || accessTokenChanged)\n ) {\n const newFilter = _.find(nextFilters, categoryFilter => {\n const filterName = _.get(categoryFilter, 'name', '').toLowerCase();\n return filterName === suggestedFilter;\n });\n const newFilterUrl = _.get(newFilter, 'url');\n if (newFilterUrl) {\n const suggestedData = { url: newFilterUrl };\n fetchShows({ accessToken, deviceId, ...suggestedData });\n newState = Object.assign(newState, {\n suggestedLoaded: true,\n selectedFilter: suggestedFilter,\n });\n return this.setState(newState);\n }\n }\n\n // handle suggestedNetwork\n if (\n suggestedLoaded === false &&\n ((nextTabs && suggestedNetwork && !filteredPanel) || accessTokenChanged)\n ) {\n const suggestedTab = _.find(nextTabs, tab => {\n const headline = _.get(tab, 'headline', '').toLowerCase();\n return headline === suggestedNetwork;\n });\n const suggestedData = {\n tabId: _.get(suggestedTab, 'id'),\n filteredPanel: _.get(suggestedTab, 'items'),\n };\n fetchShows({ accessToken, deviceId, ...suggestedData, isRetiredShowsPage });\n newState.suggestedLoaded = true;\n return this.setState(newState);\n }\n if (!_.isEmpty(newState)) this.setState(newState);\n return null;\n }\n\n componentWillUnmount() {\n const { resetStore, setListPage, setSuggestedTab } = this.props;\n resetStore();\n this.closeDropdown();\n this.trackPageReferrerAnalytics({\n name: PageNames.SHOWS,\n });\n if (setListPage) setListPage(false);\n setSuggestedTab({ suggestedNetwork: null });\n }\n\n getBreadcrumbsData() {\n const {\n tabs,\n currentTab,\n params,\n route: { isRetiredShowsPage },\n } = this.props;\n const { selectedFilter } = this.state;\n if (!tabs) return null;\n const selectedTabs = tabs.filter(t => t.id === currentTab);\n const selectedTab = _.get(selectedTabs, '0');\n return breadcrumbsShowsParser({ tab: selectedTab, params, selectedFilter, isRetiredShowsPage });\n }\n\n setSelectedFilter(value) {\n const { selectedFilter } = this.state;\n if (value === selectedFilter) return;\n this.setState({ selectedFilter: value });\n }\n\n closeDropdown = () => {\n const { setOverlay } = this.props;\n setOverlay(OVERLAY_SHOWS_FILTER, false);\n };\n\n openDropdown = () => {\n const { setOverlay } = this.props;\n setOverlay(OVERLAY_SHOWS_FILTER, true);\n };\n\n renderFilteredPanel() {\n const { accessToken, deviceId, panels, filteredPanel, paginatedPanels } = this.props;\n const panelToRender = filteredPanel || _.get(panels, 'member.0.items');\n if (!panelToRender) return null;\n const { '@id': id } = panelToRender;\n const panel = _.get(paginatedPanels, `${id}`);\n const paginationUrl = _.get(panel, 'paginationUrl');\n const hasMore = _.get(panel, 'hasMoreItems', false);\n\n const showPanelRenderer = showPanel => {\n const { breakpoint, fetching, fetchingPage } = this.props;\n\n if (!showPanel) return null;\n\n const { member } = showPanel;\n const tileIndexOffset = 0;\n const { renderList } = BREAKPOINTS[breakpoint];\n const grid = renderGrid({\n key: `filteredPanel-${id}`,\n items: member,\n listProcessor: listItemProcessor,\n gridProcessor: listProcessorWithAnimation,\n tileGridTrackButtonClick: handleTealiumButtonAction,\n gridType: 'grid-5-4-3-1',\n style,\n tileDetailToggle: false,\n tileTheme: searchTileTheme,\n tileType: 'fadeAnimated',\n renderList,\n renderImage: image =>\n renderImage({\n breakpoint,\n imageType: SHOW_THUMBNAIL_IMAGE,\n ...image,\n }),\n tileIndexOffset,\n });\n\n const loadMore = () => {\n if (!fetchingPage) this.panel.fetchNextPage();\n };\n const loadingIcon = fetching || fetchingPage ? <Loader /> : null;\n return (\n <InfiniteScroll pageStart={0} loadMore={loadMore} hasMore={hasMore}>\n <div className={style.scrollContainer}>\n {grid}\n {loadingIcon}\n </div>\n </InfiniteScroll>\n );\n };\n\n return (\n <Panel\n accessToken={accessToken}\n deviceId={deviceId}\n renderer={showPanelRenderer}\n panelData={panelToRender}\n headerGenerator={helperGetApiHeaders}\n routeGenerator={helperConvertApiRoute}\n pageType=\"shows\"\n panelId={id}\n data-test=\"web-shows-content\"\n hasInfiniteScroll\n hasMoreItems={hasMore}\n onRef={ref => {\n this.panel = ref;\n }}\n propsToWatch={{ paginationUrl }}\n />\n );\n }\n\n renderLoader() {\n const { setLoading } = this.props;\n const { showLoader } = this.state;\n if (showLoader) {\n return <Loader setLoading={setLoading} center />;\n }\n return null;\n }\n\n renderRetiredShows = () => {\n const { panels, breakpoint } = this.props;\n const items = _.get(panels, 'member.0.items.member');\n\n if (!items) return null;\n return (\n <div className={style.screen}>\n <Grid gridType=\"grid-5-4-3-1\">\n <ShowsTiles items={items} breakpoint={breakpoint} />\n </Grid>\n </div>\n );\n };\n\n render() {\n const {\n seo,\n errors,\n fetchShows,\n isNavScheduleRendered,\n route: { isRetiredShowsPage },\n } = this.props;\n const { showLoader } = this.state;\n if (errors) return getErrorComponent(errors);\n\n const { showsPage_header: titleShows } = window.Language;\n const route = helperGetShowsUrl();\n const breadcrumbs = <BreadcrumbsComponent data={this.getBreadcrumbsData()} />;\n const useTileRefactor = false;\n const content =\n isRetiredShowsPage && useTileRefactor\n ? this.renderRetiredShows()\n : this.renderHelper({\n title: titleShows,\n overlayName: OVERLAY_SHOWS_FILTER,\n displayDropdown: SeriesFiltersEnabled,\n fetch: fetchShows,\n style,\n route,\n isNavScheduleRendered,\n isRetiredShowsPage,\n parentState: this.state,\n parentProps: this.props,\n onFilterClick: this.onFilterClick,\n setSelectedFilter: this.setSelectedFilter,\n openDropdown: this.openDropdown,\n closeDropdown: this.closeDropdown,\n renderLoader: this.renderLoader,\n renderFilteredPanel: this.renderFilteredPanel,\n });\n return (\n <div className={style.contentContainer}>\n {content}\n {setHelmetTags(seo)}\n {!showLoader ? breadcrumbs : null}\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n panels: state.shows.panels,\n seo: state.shows.seo,\n errors: state.shows.errors,\n filteredPanel: state.shows.filteredPanel,\n nextPage: state.shows.nextPage,\n paginationItems: state.shows.paginationItems,\n fetching: state.shows.fetching,\n tabs: state.shows.tabs,\n currentTab: state.shows.currentTab,\n filters: state.shows.filters,\n suggestedNetwork: state.shows.suggestedNetwork,\n suggestedFilter: state.shows.suggestedFilter,\n fetchingPage: state.panel.fetching,\n paginatedPanels: state.panel.panels,\n };\n}\n\nShows.fetchData = ({ store, accessToken }) =>\n store.dispatch(fetchShows({ accessToken })).then(response => {\n const panel = _.get(response, 'payload.data.panels.member[0].items', null);\n const panelId = _.get(panel, '@id');\n store.dispatch(setFirstPage(panel, panelId));\n const url = getPaginationNextUrl(response);\n const headers = helperGetApiHeaders({ pathKey: 'shows', accessToken });\n return fetchPanelPaginationLoop({ store, url, panelId, headers });\n });\n\nShows.defaultProps = {\n accessToken: null,\n currentTab: null,\n deviceId: null,\n errors: {},\n fetching: false,\n fetchingPage: false,\n filteredPanel: {},\n getUseUtagGlobal: noop,\n paginatedPanels: null,\n panels: {},\n route: {},\n seo: null,\n setListPage: noop,\n setLoading: null,\n suggestedFilter: null,\n suggestedNetwork: null,\n tabs: [],\n};\n\nShows.propTypes = {\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string.isRequired,\n deviceId: PropTypes.string,\n errors: PropTypes.number,\n filteredPanel: PropTypes.shape({\n itemPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n fetching: PropTypes.bool,\n fetchShows: PropTypes.func.isRequired,\n getUseUtagGlobal: PropTypes.func,\n isNavScheduleRendered: PropTypes.bool.isRequired,\n route: PropTypes.shape({}),\n pageViewEvent: PropTypes.func.isRequired,\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n resetStore: PropTypes.func.isRequired,\n seo: PropTypes.shape({}),\n setListPage: PropTypes.func,\n setLoading: PropTypes.func,\n setSuggestedTab: PropTypes.func.isRequired,\n setOverlay: PropTypes.func.isRequired,\n suggestedNetwork: PropTypes.string,\n suggestedFilter: PropTypes.func,\n tabs: PropTypes.arrayOf(\n PropTypes.shape({\n createDynamicCustomViews: PropTypes.bool,\n dateModified: PropTypes.string,\n dynamicCustomViewsFilter: PropTypes.arrayOf(PropTypes.string),\n headline: PropTypes.string,\n hideIfLoggedIn: PropTypes.bool,\n hideIfNotLoggedIn: PropTypes.bool,\n hideIfNotUserNetwork: PropTypes.arrayOf(PropTypes.string),\n id: PropTypes.string,\n imageTypes: PropTypes.arrayOf(PropTypes.string),\n images: PropTypes.shape({}),\n items: PropTypes.shape({}),\n name: PropTypes.string,\n panelType: PropTypes.string,\n validFor: PropTypes.number,\n }),\n ),\n currentTab: PropTypes.string,\n params: PropTypes.shape({}).isRequired,\n fetchingPage: PropTypes.bool,\n paginatedPanels: PropTypes.shape({}),\n};\n\nexport default connect(mapStateToProps, {\n fetchNextPage,\n fetchShows,\n resetPagination,\n resetStore,\n setSuggestedTab,\n toggleFetching,\n})(Shows);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ReactTimeout from 'react-timeout';\nimport _ from 'lodash';\nimport NetworkImage from 'components/NetworkImage';\nimport { helperGetHomeUrl } from 'helpers/RouteHelper';\nimport { callTealiumPageView, PageNames } from '@foxcorp/delta-web-analytics';\nimport { determineBrowser } from 'components/Header/HeaderHelpers';\nimport Loader from 'components/Loader';\nimport helperMarkdownToComponent from 'helpers/Data';\nimport { tveEnabled } from 'helpers/ConfigHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { isStaticRender } from 'helpers/ContentHelper';\nimport Style from './SignIn.module.scss';\n\nconst {\n legal_disclaimer: legalDisclaimer,\n legal_expirationHeader: legalExpirationHeader,\n legal_expirationText: legalExpirationText,\n auth_enterCodeButton: enterCodeButton,\n auth_enterCodeButtonHint: enterCodeButtonHint,\n} = window.Language;\n\nconst PROVIDER_ID = 'Fox_MVPD';\nconst blurTimeout = 1500;\nconst idpLaunchDelay = 500;\n\nconst desktopBackground = _.get(window.ExternalConfig, 'singleSignIn.header.desktop', null);\nconst mobileBackground = _.get(window.ExternalConfig, 'singleSignIn.header.mobile', null);\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n backgroundImage: desktopBackground,\n logoHeight: 80,\n },\n [SITE_PLATFORM_WEB]: {\n backgroundImage: desktopBackground,\n logoHeight: 80,\n },\n [SITE_PLATFORM_TABLET]: {\n backgroundImage: desktopBackground,\n logoHeight: 80,\n },\n [SITE_PLATFORM_MOBILE]: {\n backgroundImage: mobileBackground,\n logoHeight: 50,\n },\n};\n\nclass SignIn extends Component {\n constructor(props) {\n super(props);\n this.state = {\n renderCTA: true,\n isAuthenticating: false,\n idpIsLoading: true,\n showCookiesBlocked: false,\n singleProviderSignInClicked: false,\n };\n window.addEventListener('focus', () => this.focusSignIn());\n window.aeErrorHandling = this.accessEnablerAdvancedErrorHandler;\n }\n\n componentDidMount() {\n const { deviceId, fetchMVPDProviders } = this.props;\n const shouldFetchMVPDProviders = tveEnabled();\n if (shouldFetchMVPDProviders) fetchMVPDProviders(deviceId);\n this.pageViewEvent();\n }\n\n componentDidUpdate(prevProps) {\n const { authSuccess, mvpdProviders } = this.props;\n const { authSuccess: prevAuthSuccess } = prevProps;\n const { idpIsLoading } = this.state;\n\n if (idpIsLoading && !authSuccess) {\n const mvpd = _.find(\n mvpdProviders,\n provider => _.get(provider, 'adobePassId') === PROVIDER_ID,\n );\n if (mvpd) this.setState({ idpIsLoading: false });\n }\n\n if (authSuccess && !prevAuthSuccess) window.location.href = helperGetHomeUrl();\n }\n\n accessEnablerAdvancedErrorHandler = err => {\n const errorId = _.get(err, 'errorId');\n const browser = determineBrowser();\n const isSafari = browser === 'safari';\n const cookiesDisabled = errorId === 'N130';\n const shouldShowCookiesBlocked = cookiesDisabled && isSafari;\n if (shouldShowCookiesBlocked) {\n this.setState({ showCookiesBlocked: true });\n }\n };\n\n clickLoginAction = async () => {\n const { setTimeout } = this.props;\n this.setState({ isAuthenticating: true });\n setTimeout(() => {\n this.setState({ singleProviderSignInClicked: true });\n }, idpLaunchDelay);\n };\n\n resetShowCookiesBlocked = () => {\n this.setState({ showCookiesBlocked: false });\n };\n\n resetSingleProviderSignInClicked = () => {\n this.setState({ singleProviderSignInClicked: false });\n };\n\n pageViewEvent = async () => {\n if (!isStaticRender()) {\n const { getUseUtagGlobal } = this.props;\n await callTealiumPageView({\n pageName: PageNames.SIGN_IN,\n useUtagGlobal: getUseUtagGlobal(),\n });\n }\n };\n\n focusSignIn() {\n const { setTimeout } = this.props;\n const { isAuthenticating } = this.state;\n if (isAuthenticating) {\n setTimeout(() => {\n this.setState({ isAuthenticating: false });\n }, blurTimeout);\n }\n }\n\n renderCTA() {\n const { idpIsLoading } = this.state;\n if (idpIsLoading) {\n return <Loader className={Style.loader} />;\n }\n return (\n <div className={Style.signInCTA}>\n <div>\n <button\n className={Style.actionButton}\n onClick={() => {\n this.clickLoginAction();\n }}\n type=\"button\"\n >\n {enterCodeButton}\n </button>\n </div>\n <small>{enterCodeButtonHint}</small>\n </div>\n );\n }\n\n renderErrorMessage() {\n const { showCookiesBlocked } = this.state;\n const {\n playback_cookieErrorHeader: headerText,\n playback_cookieErrorMessage: descriptionText,\n } = window.Language;\n if (showCookiesBlocked) {\n return (\n <div className={Style.error}>\n <span className={Style.errorTitle}>{headerText}</span>\n <span className={Style.errorDescription}>\n {helperMarkdownToComponent(descriptionText)}\n </span>\n </div>\n );\n }\n return null;\n }\n\n render() {\n const { breakpoint, renderAuthContainer } = this.props;\n const {\n isAuthenticating,\n renderCTA,\n showCookiesBlocked,\n singleProviderSignInClicked,\n } = this.state;\n const { backgroundImage, logoHeight } = BREAKPOINTS[breakpoint];\n const containerClasses = classnames(\n Style.signInContainer,\n renderCTA ? '' : Style.postDisclaimer,\n );\n const blurClasses = classnames(isAuthenticating ? Style.blurred : '');\n const errorMessage = this.renderErrorMessage();\n const authProps = {\n singleProviderId: PROVIDER_ID,\n singleProviderSignInClicked,\n resetShowCookiesBlocked: this.resetShowCookiesBlocked,\n resetSingleProviderSignInClicked: this.resetSingleProviderSignInClicked,\n showCookiesBlocked,\n };\n return (\n <div className={containerClasses}>\n <div className={Style.signInHeader}>\n <NetworkImage size={logoHeight} extended />\n </div>\n <div className={blurClasses}>\n <div className={Style.signInMedia}>\n <img src={backgroundImage} alt=\"For your consideration\" />\n </div>\n {errorMessage}\n <div className={Style.signInUX}>\n {this.renderCTA()}\n {renderAuthContainer(authProps)}\n </div>\n <div className={Style.signInFixedFooter}>\n <div className={Style.signInFooterExpiration}>\n <p className={Style.signInFooterExpirationHeader}>{legalExpirationHeader}</p>\n <p className={Style.signInFooterExpirationText}>{legalExpirationText}</p>\n </div>\n <div className={Style.signInFooterDisclaimer}>\n <hr className={classnames(Style.divider)} />\n <p>{legalDisclaimer}</p>\n <hr className={classnames(Style.divider, Style.bottomDivider)} />\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nSignIn.defaultProps = {\n authSuccess: false,\n deviceId: null,\n};\n\nSignIn.propTypes = {\n authSuccess: PropTypes.bool,\n breakpoint: PropTypes.string.isRequired,\n deviceId: PropTypes.string,\n getUseUtagGlobal: PropTypes.func.isRequired,\n fetchMVPDProviders: PropTypes.func.isRequired,\n mvpdProviders: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n renderAuthContainer: PropTypes.func.isRequired,\n setTimeout: PropTypes.func.isRequired,\n};\n\nconst TimeoutSignIn = ReactTimeout(SignIn);\n\nexport default TimeoutSignIn;\n","import React from 'react';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\nimport { urlIsExternal } from 'helpers/ContentHelper';\nimport style from './SiteMap.css';\n\nexport const LABEL_SITEMAP = 'Sitemap';\nexport const LABEL_MAIN = 'Main';\nexport const LABEL_MOVIES = 'All Movies';\nexport const LABEL_SHOWS = 'All Shows';\nexport const LABEL_LEGAL = 'Legal';\nexport const LABEL_PERSONALITIES = 'All Personalities';\n\nexport const LABEL_ABOUT = 'About';\nexport const LABEL_CREDITS = 'Meet the Cast';\nexport const LABEL_EPISODES = 'Episodes';\n\nexport const TYPE_ABOUT = 'about';\nexport const TYPE_CLIPS_LANDING = 'clipLanding';\nexport const TYPE_SHOW_DETAIL = 'showDetail';\nexport const TYPE_MOVIE_DETAIL = 'movieDetail';\nexport const TYPE_PERSONALITY_DETAIL = 'personality';\n\nexport const filterSitemap = (siteMap, type) => {\n if (!siteMap) return [];\n let list;\n switch (type) {\n case TYPE_SHOW_DETAIL:\n list = _.sortBy(_.filter(siteMap, map => map.type === TYPE_SHOW_DETAIL), 'title');\n break;\n case TYPE_MOVIE_DETAIL:\n list = _.sortBy(_.filter(siteMap, map => map.type === TYPE_MOVIE_DETAIL), 'title');\n break;\n case TYPE_PERSONALITY_DETAIL:\n list = _.sortBy(_.filter(siteMap, map => map.type === TYPE_PERSONALITY_DETAIL), 'title');\n break;\n default:\n list = siteMap;\n }\n return list && list.length ? list : [];\n};\n\nconst ARIA_LABELS = {\n 'https://foxnews.com': 'Fox News',\n '/live-news/': 'Watch Fox News Plus',\n};\n\nconst getCustomAriaLabel = url => (ARIA_LABELS[url] ? ARIA_LABELS[url] : null);\n\nexport const createLink = (url, text, isShowTitle = false, ariaLabel = null) => {\n const fontStyle = isShowTitle ? style.seriesListGroup : style.contentLink;\n\n const selectedAriaLabel = ariaLabel || getCustomAriaLabel(url);\n\n const otherProps = {};\n if (selectedAriaLabel) otherProps['aria-label'] = selectedAriaLabel;\n\n if (urlIsExternal(url)) {\n return (\n <a href={url} className={fontStyle} target=\"_blank\" rel=\"noopener noreferrer\" {...otherProps}>\n {text}\n </a>\n );\n }\n\n return (\n <Link to={url} className={fontStyle} onlyActiveOnIndex {...otherProps}>\n {text}\n </Link>\n );\n};\n\nexport const createListLink = (url, text, ariaLabel) => (\n <li className={style.listGroupItem} key={url}>\n {createLink(url, text, false, ariaLabel)}\n </li>\n);\n\nexport const extractLinks = markdown => {\n const mdReg = /[^!]\\[.+?\\]\\(.+?\\)/g;\n const textReg = /\\[([^)]+)\\]/;\n const linkReg = /\\(([^)]+)\\)/;\n const matches = markdown.match(mdReg);\n const links = [];\n\n _.forEach(matches, value => {\n const text = value.match(textReg)[1];\n const link = value.match(linkReg)[1];\n links.push({\n text,\n link,\n });\n });\n return links;\n};\n","/* globals BaseUrl */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { helperGetBaseUrlSlug } from 'helpers/RouteHelper';\nimport { setHelmetTags } from 'helpers/HelmetHelper';\nimport { LABEL_CLIPS_AND_EXTRAS, isFox, isStaticRender } from 'helpers/ContentHelper';\nimport { fetchSiteContent } from './SiteMapActions';\nimport {\n LABEL_ABOUT,\n LABEL_CREDITS,\n LABEL_EPISODES,\n LABEL_LEGAL,\n LABEL_MAIN,\n LABEL_MOVIES,\n LABEL_PERSONALITIES,\n LABEL_SHOWS,\n LABEL_SITEMAP,\n TYPE_ABOUT,\n TYPE_CLIPS_LANDING,\n TYPE_MOVIE_DETAIL,\n TYPE_PERSONALITY_DETAIL,\n TYPE_SHOW_DETAIL,\n createLink,\n createListLink,\n extractLinks,\n filterSitemap,\n} from './SiteMapHelper';\nimport style from './SiteMap.css';\n\nclass SiteMap extends Component {\n componentDidMount() {\n const { content, fetchSiteContent } = this.props;\n if (content) fetchSiteContent();\n }\n\n renderDefaultItem = (item, idx) => {\n if (!item) return null;\n return (\n <div className={style.listGroup} key={`${item.title}${idx}`}>\n <div className={style.listGroupItem}>{createLink(item.url, item.title)}</div>\n </div>\n );\n };\n\n renderLegalItems() {\n const { legal } = this.props;\n const legalLinks = extractLinks(legal);\n const legalItems = legalLinks && legalLinks.map(item => createListLink(item.link, item.text));\n\n return (\n <div className={style.mainListContainer}>\n <h2 className={style.listHeader}>{LABEL_LEGAL}</h2>\n <ul className={style.list}>{legalItems}</ul>\n </div>\n );\n }\n\n renderMainItems() {\n const { links, networks } = this.props;\n const nav = _.get(window.ExternalConfig, 'navigation', []);\n\n const mainItems =\n nav &&\n nav.map(item => {\n const url = `${helperGetBaseUrlSlug()}${item.link}`;\n const text = item.label;\n return createListLink(url, text);\n });\n\n const linkHeader = _.get(links, 'title');\n const linkDetails = _.get(links, 'items', []);\n const linkItems = linkDetails.map(item => createListLink(item.link, item.text));\n\n const networkHeader = _.get(networks, 'title');\n const networkData = _.get(networks, 'items', []);\n const networkItems = networkData.map(item => createListLink(item.link, item.text));\n\n return (\n <div className={style.listContainer}>\n <div className={style.mainListContainer}>\n <h2 className={style.listHeader}>{LABEL_MAIN}</h2>\n <ul className={style.list}>{mainItems}</ul>\n </div>\n\n <div className={style.mainListContainer}>\n {linkHeader && <h2 className={style.listHeader}>{linkHeader} </h2>}\n <ul className={style.list}>{linkItems}</ul>\n </div>\n\n <div className={style.mainListContainer}>\n {networkHeader && <h2 className={style.listHeader}>{networkHeader}</h2>}\n <ul className={style.list}>{networkItems}</ul>\n </div>\n </div>\n );\n }\n\n renderMovies() {\n const { content } = this.props;\n const movies = filterSitemap(content, TYPE_MOVIE_DETAIL);\n if (!movies.length) return null;\n\n return (\n <div className={style.listContainer}>\n <h2 className={style.listHeader}>{LABEL_MOVIES}</h2>\n <div className={style.list}>{movies.map(this.renderDefaultItem)}</div>\n </div>\n );\n }\n\n renderPersonalities() {\n const { content } = this.props;\n const personalities = filterSitemap(content, TYPE_PERSONALITY_DETAIL);\n if (!personalities.length || isFox()) return null;\n\n return (\n <div className={style.listContainer}>\n <h2 className={style.listHeader}>{LABEL_PERSONALITIES}</h2>\n <div className={style.list}>{personalities.map(this.renderDefaultItem)}</div>\n </div>\n );\n }\n\n renderSeries() {\n const { content } = this.props;\n const series = filterSitemap(content, TYPE_SHOW_DETAIL);\n if (!series.length) return null;\n\n return (\n <div className={style.listContainer}>\n <h2 className={style.listHeader}>{LABEL_SHOWS}</h2>\n <div className={style.list}>{series.map(this.renderSeriesItem)}</div>\n </div>\n );\n }\n\n renderSeriesItem = (item, idx) => {\n if (!item) return null;\n const { subUrls, isRetired, title, url } = item;\n const defaultLinkName = isRetired ? LABEL_ABOUT : LABEL_EPISODES;\n const subUrlItems =\n !_.isEmpty(subUrls) &&\n item.subUrls.map(sub => {\n const { url, type } = sub;\n const isAbout = type === TYPE_ABOUT;\n const isClips = type === TYPE_CLIPS_LANDING && url.endsWith('/clips/');\n const isCredits = type === TYPE_SHOW_DETAIL && url.endsWith('/credits/');\n if (isAbout) return createListLink(url, LABEL_ABOUT);\n if (isClips) return createListLink(url, LABEL_CLIPS_AND_EXTRAS);\n if (isCredits) return createListLink(url, LABEL_CREDITS);\n return null;\n });\n\n const ariaLabel = isRetired ? `${defaultLinkName} ${title}` : `${title} ${defaultLinkName}`;\n\n return (\n <ul className={style.seriesListGroup} key={`${url}${idx}`}>\n <li className={style.seriesListGroupTitle}>{createLink(url, title, true, ariaLabel)}</li>\n {!isRetired || (isRetired && _.isEmpty(subUrls))\n ? createListLink(url, defaultLinkName, ariaLabel)\n : null}\n {subUrlItems}\n </ul>\n );\n };\n\n render() {\n const canonicalLink = { canonicalUrl: `${BaseUrl}/sitemap/` };\n\n return (\n <div className={style.contentContainer}>\n {setHelmetTags(canonicalLink)}\n <h1 className={style.sitemapTitle}>{LABEL_SITEMAP}</h1>\n {this.renderMainItems()}\n {this.renderSeries()}\n {this.renderMovies()}\n {this.renderPersonalities()}\n {this.renderLegalItems()}\n </div>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n content: state.siteMap.content,\n links: state.footer.links,\n networks: state.footer.networks,\n legal: state.footer.legal,\n };\n}\n\nSiteMap.fetchData = ({ store }) => store.dispatch(fetchSiteContent(isStaticRender()));\n\nSiteMap.defaultProps = {\n content: [],\n legal: null,\n links: [],\n networks: [],\n};\n\nSiteMap.propTypes = {\n fetchSiteContent: PropTypes.func.isRequired,\n content: PropTypes.arrayOf(PropTypes.shape({})),\n links: PropTypes.shape({\n title: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n networks: PropTypes.arrayOf(PropTypes.shape({})),\n legal: PropTypes.string,\n};\n\nexport default connect(mapStateToProps, {\n fetchSiteContent,\n})(SiteMap);\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router';\nimport Loader from 'components/Loader';\nimport { setEmailSubmissionSFMC } from 'index/AppActions';\nimport { isStaticRender } from 'helpers/ContentHelper';\nimport { fetchArticle } from 'components/Article/ArticleActions';\nimport { getArticleApiUrl } from 'components/Article/ArticleHelpers';\nimport Style from './Subscription.module.scss';\n\nconst Subscription = ({ accessToken, deviceId, fetchArticle, legal, panels }) => {\n const [isLoading, setIsLoading] = useState(false);\n const [isSubmitted, setIsSubmitted] = useState(false);\n const {\n subscriptionArticleIds,\n masked_discord_url = 'https://discord.com/invite/sKCTpcV6',\n } = window.ExternalConfig;\n const articleId = subscriptionArticleIds[0];\n const url = getArticleApiUrl(articleId);\n const regExp = /\\(([^)]+)\\)/;\n const legalUrls = legal?.split(regExp).filter(item => item.includes('http')) || ['', ''];\n const termsOfUse = legalUrls[0];\n const privacyPolicy = legalUrls[1];\n\n useEffect(() => {\n if (url && !isStaticRender()) {\n fetchArticle(url, accessToken, deviceId);\n }\n }, []);\n const image = panels?.member[0]?.items?.member[0]?.images?.logo;\n\n const signupHeadline = panels?.member[0]?.items?.member[0]?.headline;\n const successHeadline = 'Thank you for subscribing to the Maskverse.';\n const headline = isSubmitted ? successHeadline : signupHeadline;\n\n const onSubmit = async e => {\n e.preventDefault();\n const email = e.target.subscriptionEmail.value;\n if (!isLoading && email && !isSubmitted) {\n setIsLoading(true);\n setIsSubmitted(true);\n const url = window?.location?.href;\n await setEmailSubmissionSFMC({\n url,\n email,\n accessToken,\n deviceId,\n cb: () => {\n setIsLoading(false);\n },\n });\n }\n };\n const {\n subscription_emailPlaceholder = 'Enter Email Address',\n subscription_subscribeButton = 'Subscribe',\n subscription_submittedButton = 'Submitted',\n subscription_legalTextP1 = 'By clicking \"Subscribe\", you agree to the ',\n subscription_legalTextP2 = 'and agree to receive content and promotional communications from FOX.',\n subscription_discordText = 'Click Here to Join The Masked Discord Server!',\n } = window.Language;\n const buttonText = isSubmitted ? subscription_submittedButton : subscription_subscribeButton;\n const seriesRoute = '/the-masked-singer';\n const seriesText = 'Return to The Masked Singer';\n\n return (\n <div className={Style.container}>\n <div className={Style.content}>\n <div className={Style.logo}>\n <img src={image} alt=\"Subscription Logo\" />\n </div>\n <div className={Style.headline}>{headline}</div>\n <form onSubmit={onSubmit} className={Style.subscriptionForm}>\n <div className={Style.formContainer}>\n {!isSubmitted ? (\n <>\n <input\n autoCapitalize=\"none\"\n autoFocus\n className={Style.emailInput}\n type=\"email\"\n disabled={isSubmitted}\n name=\"subscriptionEmail\"\n placeholder={subscription_emailPlaceholder}\n />\n <button disabled={isSubmitted} type=\"submit\" className={Style.subscribeButton}>\n {isLoading ? <Loader buttonLoader /> : buttonText}\n </button>\n </>\n ) : (\n <Link className={Style.seriesLink} to={seriesRoute}>\n {seriesText}\n </Link>\n )}\n </div>\n <div className={Style.legal}>\n {subscription_legalTextP1}\n <a href={termsOfUse}>Terms of Service, </a>\n <a href={privacyPolicy}>Privacy Policy, </a>\n {subscription_legalTextP2}\n </div>\n </form>\n <div className={Style.discordContainer}>\n <img src=\"/static/images/discord-logo.png\" alt=\"discord-logo\" />\n <a href={masked_discord_url} rel=\"noopener noreferrer\" target=\"_blank\">\n {subscription_discordText}\n </a>\n </div>\n </div>\n </div>\n );\n};\n\nconst mapStateToProps = state => ({\n panels: state.article.panels,\n legal: state.footer.legal,\n});\n\nSubscription.fetchData = ({ store, accessToken }) => {\n const { subscriptionArticleIds } = window.ExternalConfig;\n const articleId = subscriptionArticleIds[0];\n const url = getArticleApiUrl(articleId);\n return store.dispatch(fetchArticle(url, accessToken));\n};\n\nSubscription.propTypes = {\n accessToken: PropTypes.string,\n deviceId: PropTypes.string,\n fetchArticle: PropTypes.func,\n legal: PropTypes.string,\n panels: PropTypes.shape({}),\n};\n\nexport default connect(\n mapStateToProps,\n { fetchArticle },\n)(Subscription);\n","import { createSelectorCreator, defaultMemoize } from 'reselect';\nimport _ from 'lodash';\n\nconst selectAppRecommendationIdData = state => state.app.recommendationIdData;\nconst selectGlobalUpNextHeadline = state => state.globalVideo.upNextHeadline;\nconst selectGlobalUpNextVideo = state => state.globalVideo.nextVideos;\nconst selectGlobalVideoPanelVideo = state => state.globalVideo.panelVideo;\nconst selectGlobalVideoRestartVideo = state => state.globalVideo.restartVideo;\nconst selectGlobalVideoVideo = state => state.globalVideo.video;\n\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _.isEqual);\n\nexport const makeSelectGlobalVideoRestartVideo = createDeepEqualSelector(\n selectGlobalVideoRestartVideo,\n restartVideo => restartVideo,\n);\n\nexport const makeSelectGlobalVideoVideo = createDeepEqualSelector(\n selectGlobalVideoVideo,\n video => video,\n);\n\nexport const makeSelectGlobalUpNextVideo = createDeepEqualSelector(\n selectGlobalUpNextVideo,\n video => video,\n);\n\nexport const makeSelectGlobalUpNextHeadline = createDeepEqualSelector(\n selectGlobalUpNextHeadline,\n video => video,\n);\n\nexport const makeSelectGlobalVideoPanelVideo = createDeepEqualSelector(\n selectGlobalVideoPanelVideo,\n panelVideo => panelVideo,\n);\n\nexport const makeSelectAppRecommendationIdData = createDeepEqualSelector(\n selectAppRecommendationIdData,\n recommendationIdData => recommendationIdData,\n);\n","/* global EpgEnabled, ProfileEnabled OptimizelyInitWindowWatch */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { browserHistory } from 'react-router';\nimport { Waypoint } from 'react-waypoint';\nimport _ from 'lodash';\nimport ReactTimeout from 'react-timeout';\nimport BreadcrumbsComponent, { breadcrumbsWatchParser } from 'components/Breadcrumbs';\nimport Loader from 'components/Loader';\nimport { WATCH_RELATED_THUMBNAIL_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport {\n activateOptimizely,\n triggerWatchInitVariables,\n deactivateWatchInitVariables,\n getOptimizelyUnlockedVideoPage,\n getOptimizelyRemovedSeries,\n} from 'helpers/OptimizelyHelper';\nimport { helperGetHomeUrl, helperGetLiveUrl, getPreviousPathname } from 'helpers/RouteHelper';\nimport {\n clearVideo as clearGlobalVideo,\n fetchVideoPanel as fetchGlobalVideoPanel,\n setDisableRender as setGlobalVideoDisabled,\n clearLiveRestart as clearGlobalLiveRestart,\n setScreenInControlOfState as setGlobalPlayerScreenInControlOfState,\n setVideoPanel as setGlobalVideoPanel,\n handleVodSectionClicked,\n} from 'components/VideoPlayerGlobal/Actions';\nimport { setRecommendationIdAction as setRecommendationId } from 'index/AppActions';\nimport { PAGE_WATCH } from 'helpers/PageHelper';\nimport { renderGrid } from 'helpers/GridHelper';\nimport {\n createSchemaTag,\n createWatchEpisodeSchema,\n createWatchClipSchema,\n} from 'helpers/SchemaHelper';\nimport { getCookie } from 'helpers/Storage';\nimport {\n watchVideoProcessor,\n watchListVideoProcessor,\n watchPlaylistVideoProcessor,\n watchListPlaylistVideoProcessor,\n} from 'helpers/VideoProcessorHelper';\nimport {\n COLLECTION_TYPE_LOCAL_CLIPS,\n FOX,\n getErrorComponent,\n getLocalClipPage,\n getLocalClipSectionTitle,\n isMovie,\n isClip,\n isStaticRender,\n LOCAL_CLIP_PAGE_COOKIE_NAME,\n setLocalChannelCookies,\n setLocalClipPage,\n} from 'helpers/ContentHelper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport {\n Events,\n checkRecommendationIdOnClick,\n getSegmentModelMetadata,\n getSegmentAnonymousId,\n handleTealiumButtonAction,\n PageNames,\n SegmentActionLocations,\n setOptimizelyCollectionViewedEvent,\n trackPageReferrerAnalytics,\n handleAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport { brandOverrideMetaTags, setHelmetTags } from 'helpers/HelmetHelper';\nimport breadcrumbsTheme from 'screens/Watch/styles/Breadcrumbs.css';\nimport { fetchPCS } from 'components/Account/AccountComponents/ParentalControls/ParentalControlsActions';\nimport tileGridTheme from './styles/WatchTileGrid.css';\nimport tileStyle from './styles/WatchTile.module.scss';\nimport Style from './Watch.module.scss';\nimport { fetchWatch, fetchWatchPanels, clearWatch, fetchMovieDetail } from './WatchActions';\nimport { getSectionTitleData, PANEL_TYPE_VIDEOS, RESTART_TYPE_LIVE } from './WatchHelpers';\n\nimport {\n makeSelectAppRecommendationIdData,\n makeSelectGlobalUpNextHeadline,\n makeSelectGlobalUpNextVideo,\n makeSelectGlobalVideoPanelVideo,\n makeSelectGlobalVideoRestartVideo,\n makeSelectGlobalVideoVideo,\n} from './selectors';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n suppressNetworkIcon: false,\n defaultHideAltHeader: false,\n canHideControls: true,\n renderInfoInDetail: false,\n gridToggleLimit: 4,\n gridPrimaryToggleLimit: 4,\n gridMovieToggleLimit: 8,\n gridUpNextToggleLimit: 15,\n renderList: false,\n playerMetadataOverlay: true,\n },\n [SITE_PLATFORM_WEB]: {\n suppressNetworkIcon: false,\n defaultHideAltHeader: false,\n canHideControls: true,\n renderInfoInDetail: false,\n gridToggleLimit: 4,\n gridPrimaryToggleLimit: 4,\n gridMovieToggleLimit: 8,\n gridUpNextToggleLimit: 12,\n renderList: false,\n playerMetadataOverlay: true,\n },\n [SITE_PLATFORM_TABLET]: {\n suppressNetworkIcon: false,\n defaultHideAltHeader: true,\n canHideControls: false,\n renderInfoInDetail: true,\n gridToggleLimit: 3,\n gridPrimaryToggleLimit: 6,\n gridMovieToggleLimit: 3,\n renderList: true,\n playerMetadataOverlay: false,\n overrideShowNetworkBug: true,\n },\n [SITE_PLATFORM_MOBILE]: {\n suppressNetworkIcon: false,\n defaultHideAltHeader: true,\n canHideControls: false,\n renderInfoInDetail: true,\n gridToggleLimit: 3,\n gridPrimaryToggleLimit: 6,\n gridMovieToggleLimit: 3,\n renderList: true,\n playerMetadataOverlay: false,\n overrideShowNetworkBug: true,\n },\n};\n\nconst PREROLL_EXPERIMENT_KEY = 'video_cbp_override_test';\nconst PREROLL_FEATURE_KEY = 'video_cbp_override';\nconst PREROLL_VARIATION_CONTROL = 'control';\n\nclass Watch extends Component {\n constructor(props) {\n super(props);\n const { panels } = this.props;\n const primaryType = _.get(panels, 'member.0.items.member.0.videoType');\n this.state = {\n playlist: null,\n upNextPanel: null,\n primaryPanels: null,\n };\n this.state.upNextPanel = this.renderUpNextPanelVideos();\n this.state.primaryPanels = this.renderPrimaryPanels(primaryType);\n this.ignoreUnmountReferrerAnalytics = false;\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.panelRenderPosition = 0;\n this.panelsRendered = new Map();\n }\n\n componentDidMount() {\n const {\n account,\n setGlobalPlayerScreenInControlOfState,\n setGlobalVideoDisabled,\n setWatchPage,\n accessToken,\n fetchPCS,\n } = this.props;\n if (setWatchPage) setWatchPage(true);\n activateOptimizely();\n const source = PAGE_WATCH;\n setGlobalPlayerScreenInControlOfState(source);\n this.fetchWatchData();\n setGlobalVideoDisabled({ value: false, source });\n if (account) fetchPCS(accessToken);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { fetchWatchPanels, params } = this.props;\n const { deviceId, params: nextParams, accessToken: nextAccessToken } = nextProps;\n const optimizelyProps = {\n callback: this.triggerPrerollOptimizely,\n };\n\n const videoId = _.get(params, 'videoId');\n const nextVideoId = _.get(nextParams, 'videoId');\n\n if (videoId !== nextVideoId) {\n fetchWatchPanels(nextVideoId, nextAccessToken, deviceId, false, optimizelyProps);\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const newState = this.getChangingState(nextState);\n const oldState = this.getChangingState(this.state);\n const newProps = this.getChangingProps(nextProps);\n const oldProps = this.getChangingProps(this.props);\n return !_.isEqual(newProps, oldProps) || !_.isEqual(newState, oldState);\n }\n\n componentDidUpdate(prevProps) {\n const {\n accessToken,\n breakpoint,\n deviceId,\n fetchMovieDetail,\n isVodUnavailable,\n location,\n panels,\n panelVideo,\n upNextVideo,\n video,\n } = this.props;\n const {\n accessToken: prevAccessToken,\n breakpoint: prevBreakpoint,\n isVodUnavailable: prevIsVodUnavailable,\n panels: prevPanels,\n panelVideo: prevPanelVideo,\n upNextVideo: prevUpNextVideo,\n video: prevVideo,\n } = prevProps;\n const exemptValue = _.get(window, 'expmt_unlocked_video_page');\n if (!exemptValue) window.expmt_unlocked_video_page = null;\n const videoId = _.get(video, 'id');\n const prevVideoId = _.get(prevVideo, 'id');\n const videoChanged = videoId && prevVideoId !== videoId;\n const accessTokenChanged = accessToken !== prevAccessToken;\n const hash = _.trim(_.get(location, 'hash'), '#');\n const isLiveRestart = _.includes(hash, RESTART_TYPE_LIVE);\n const isDeeplink = !getPreviousPathname();\n const videoNotAvailable = !prevIsVodUnavailable && isVodUnavailable;\n if (videoNotAvailable && isDeeplink && isLiveRestart) {\n if (EpgEnabled) {\n browserHistory.push(helperGetLiveUrl());\n } else {\n // Redirects to home page for nation since it has no live page\n browserHistory.push(helperGetHomeUrl());\n }\n }\n if (accessTokenChanged) this.fetchWatchData();\n if (videoChanged) {\n const videoIsMovie = _.get(video, 'videoType') === 'movie';\n if (videoIsMovie) fetchMovieDetail(videoId, accessToken, deviceId);\n }\n if (OptimizelyInitWindowWatch && panelVideo && panelVideo?.id !== prevPanelVideo?.id) {\n triggerWatchInitVariables(\n panelVideo?.videoFormat,\n panelVideo?.showCode,\n panelVideo?.videoType,\n panelVideo?.network,\n );\n }\n\n if ((upNextVideo && upNextVideo !== prevUpNextVideo) || breakpoint !== prevBreakpoint) {\n this.setState({ upNextPanel: this.renderUpNextPanelVideos() });\n }\n if ((panels && panels !== prevPanels) || breakpoint !== prevBreakpoint) {\n const primaryType = _.get(panels, 'member.0.items.member.0.videoType');\n this.setState({ primaryPanels: this.renderPrimaryPanels(primaryType) });\n }\n }\n\n componentWillUnmount() {\n const {\n clearGlobalLiveRestart,\n clearGlobalVideo,\n clearWatch,\n restartVideo,\n setGlobalVideoDisabled,\n setWatchPage,\n } = this.props;\n const source = PAGE_WATCH;\n setLocalChannelCookies({ resetCookies: true });\n setGlobalVideoDisabled({ value: true, source });\n if (restartVideo) clearGlobalLiveRestart();\n clearGlobalVideo({ source });\n clearWatch();\n setWatchPage(false);\n deactivateWatchInitVariables();\n\n if (!this.ignoreUnmountReferrerAnalytics) {\n this.trackPageReferrerAnalytics({\n name: PageNames.PLAYER,\n });\n }\n }\n\n isOptimizelyUnlockedVideoPage = () => {\n const { breakpoint, globalVideo, panelVideo, video: reducerVideo } = this.props;\n\n const isDesktop = breakpoint === SITE_PLATFORM_WEB_LARGE || breakpoint === SITE_PLATFORM_WEB;\n const video = reducerVideo || panelVideo || globalVideo;\n const network = video?.network;\n const isVideoClip = video?.videoType === 'clip';\n const seriesName = video?.seriesName;\n const isValidSeries = getOptimizelyRemovedSeries(seriesName);\n const isEntertainmentContent =\n video?.isSeriesDetailAvailable && network === FOX && !isVideoClip && isValidSeries;\n\n return isDesktop && isEntertainmentContent && getOptimizelyUnlockedVideoPage();\n };\n\n getChangingProps = props => {\n const {\n account,\n accessToken,\n breakpoint,\n deviceId,\n errors,\n globalPanelVideo,\n globalVideo,\n hasAccount,\n isAuthenticated,\n isVodUnavailable,\n location,\n pagination,\n panelVideo,\n panels,\n params,\n playlistData,\n preauthorizedResources,\n recommendationIdData,\n restartVideo,\n seo,\n upNextHeadline,\n upNextVideo,\n video,\n } = props;\n return {\n account,\n accessToken,\n breakpoint,\n deviceId,\n errors,\n globalPanelVideo,\n globalVideo,\n hasAccount,\n isAuthenticated,\n isVodUnavailable,\n location,\n pagination,\n panelVideo,\n panels,\n params,\n playlistData,\n preauthorizedResources,\n recommendationIdData,\n restartVideo,\n seo,\n upNextHeadline,\n upNextVideo,\n video,\n };\n };\n\n getChangingState = state => {\n const { upNextPanel } = state;\n return {\n upNextPanel,\n };\n };\n\n onVodSectionClick = (opts = {}) => {\n const {\n clearGlobalLiveRestart,\n handleVodSectionClicked,\n setRecommendationId,\n recommendationIdData: currentRecIdData,\n restartVideo,\n } = this.props;\n const {\n account,\n itemIndex,\n originalItem,\n pageCollectionCount: page_collection_count,\n percentWatched,\n position,\n recommendationIdData,\n sectionTitle,\n subtitleText,\n titleText,\n uiElement,\n } = opts;\n if (restartVideo) clearGlobalLiveRestart();\n const isLocalClip = getCookie({ name: LOCAL_CLIP_PAGE_COOKIE_NAME });\n if (isLocalClip) {\n setLocalClipPage({\n value: originalItem?.playerScreenUrl,\n options: { path: '/' },\n });\n }\n const newRecIdData = recommendationIdData;\n checkRecommendationIdOnClick(currentRecIdData, newRecIdData, setRecommendationId);\n const isAnonymouslyResumingPlayback = !account && percentWatched;\n const vodClickedState = {\n anonymousResumeProfileUpsell: isAnonymouslyResumingPlayback && ProfileEnabled,\n anonymousResume: isAnonymouslyResumingPlayback && !ProfileEnabled,\n restartFromBeginning: false,\n isAuthError: false,\n };\n\n handleVodSectionClicked({ originalItem, vodClickedState });\n this.ignoreUnmountReferrerAnalytics = true;\n this.trackPageReferrerAnalytics({\n name: PageNames.VOD_SECTION,\n });\n\n const id = _.get(originalItem, 'id');\n const uID = _.get(originalItem, 'uID', '');\n const showCode = _.get(originalItem, 'showCode', '');\n if (id) {\n handleAnalytics({\n event: Events.PLAYLIST_BUTTON_ACTION,\n payload: {\n page_action_type: 'Watch Now',\n page_collection_count: page_collection_count - 1, // don't count the player panel\n page_collection_title: sectionTitle,\n page_item_title: titleText,\n page_item_subtitle: subtitleText,\n page_item_horizontal_position: itemIndex + 1,\n page_item_vertical_position: position,\n page_action_location: SegmentActionLocations.PLAYER,\n page_ui_element: uiElement,\n page_video_uid: uID || showCode,\n ...getSegmentModelMetadata(),\n },\n });\n\n this.panelRenderPosition = 0;\n }\n };\n\n segmentPlaylistButtonAction = (opts = {}) => {\n const { sectionTitle, subtitleText, titleText, uiElement } = opts;\n\n handleAnalytics({\n event: Events.PLAYLIST_BUTTON_ACTION,\n payload: {\n page_action_type: 'Watch Now',\n page_collection_title: sectionTitle,\n page_item_title: titleText,\n page_item_subtitle: subtitleText,\n page_action_location: SegmentActionLocations.PLAYER,\n page_ui_element: uiElement,\n ...getSegmentModelMetadata(),\n },\n });\n\n this.panelRenderPosition = 0;\n };\n\n getPaginationItemsFromPanelId = panelId => {\n const { pagination } = this.props;\n const paginationItems = _.get(pagination, `${panelId}`);\n if (!paginationItems) return [];\n return paginationItems.reduce((arr, items) => arr.concat(items.member), []);\n };\n\n getVideoId = () => {\n const { params } = this.props;\n return _.get(params, 'videoId');\n };\n\n triggerPrerollOptimizely = video => {\n const { optimizely } = this.props;\n const userId = getSegmentAnonymousId();\n const { videoType, network: video_network, showCode: video_series_id, isLiveNow } = video || {};\n const video_content_length_format = isClip(videoType) ? 'short-form' : 'long-form';\n const attributes = {\n video_content_type: isLiveNow ? 'live' : 'vod',\n video_network,\n video_series_id,\n video_content_length_format,\n };\n\n // TODO if preroll ads with experiments want to be enabled again do varification here\n const prerollVariationKey = false;\n\n // Return null if getVariation method returns falsy value which means user is not in experiment\n if (!prerollVariationKey) return null;\n // Call Optimizely activate method for each user in experiment\n optimizely.activate(PREROLL_EXPERIMENT_KEY, userId, attributes);\n\n if (prerollVariationKey && prerollVariationKey !== PREROLL_VARIATION_CONTROL) {\n if (prerollVariationKey) {\n const desktop = optimizely?.getFeatureVariableString(\n PREROLL_FEATURE_KEY,\n 'ad_site_section_desktop',\n userId,\n attributes,\n );\n const tablet = optimizely?.getFeatureVariableString(\n PREROLL_FEATURE_KEY,\n 'ad_site_section_tablet',\n userId,\n attributes,\n );\n const mobile = optimizely?.getFeatureVariableString(\n PREROLL_FEATURE_KEY,\n 'ad_site_section_mobile',\n userId,\n attributes,\n );\n const siteSection = {\n [SITE_PLATFORM_WEB_LARGE]: desktop,\n [SITE_PLATFORM_WEB]: desktop,\n [SITE_PLATFORM_TABLET]: tablet,\n [SITE_PLATFORM_MOBILE]: mobile,\n };\n return { siteSection };\n }\n }\n return null;\n };\n\n fetchWatchData() {\n const {\n accessToken,\n deviceId,\n globalPanelVideo,\n fetchWatchPanels,\n restartVideo,\n setGlobalVideoPanel,\n video,\n } = this.props;\n const videoIsMovie = _.get(video, 'videoType') === 'movie';\n const id = this.getVideoId();\n const optimizelyProps = {\n callback: this.triggerPrerollOptimizely,\n };\n const videoIsSameAsGlobalVideo =\n !!globalPanelVideo && id === _.get(globalPanelVideo, 'id', null);\n let doNotSetGlobalVideoPanel = videoIsSameAsGlobalVideo;\n if (restartVideo) {\n doNotSetGlobalVideoPanel = true;\n setGlobalVideoPanel({ video: restartVideo, source: PAGE_WATCH });\n fetchWatchPanels(id, accessToken, deviceId, doNotSetGlobalVideoPanel, optimizelyProps);\n } else if (videoIsMovie && !isStaticRender()) {\n fetchMovieDetail(id, accessToken);\n } else if (fetchWatchPanels && !isStaticRender()) {\n fetchWatchPanels(id, accessToken, deviceId, doNotSetGlobalVideoPanel, optimizelyProps);\n }\n }\n\n usePlaylist() {\n const { playlistItems } = this.state;\n const { video } = this.props;\n const videoId = _.get(video, 'id');\n if (!playlistItems || !videoId) return false;\n return _.findKey(playlistItems, { id: videoId });\n }\n\n renderLoader() {\n const { globalVideo, panels, restartVideo, setLoading } = this.props;\n if (!panels && !globalVideo && !restartVideo) {\n return <Loader className={Style.loader} setLoading={setLoading} center />;\n }\n return null;\n }\n\n renderPanelVideos({ isFreeWatch = false, member, pageCollectionCount, position, primary }) {\n const {\n anonymousId,\n breakpoint,\n isAuthenticated,\n params,\n playlistData,\n preauthorizedResources,\n } = this.props;\n const { playlist, playlistItems } = this.state;\n const panelId = _.get(member, 'id');\n const paginationItems = this.getPaginationItemsFromPanelId(panelId);\n const videoId = _.get(params, 'videoId');\n const usePlaylistResponse = this.usePlaylist();\n if (!primary && usePlaylistResponse) return null;\n const {\n badge_nowPlaying: badge,\n freemium_watch_panel_title: freemiumWatchPanelTitle,\n paginationLessButton,\n paginationMoreButton,\n } = window.Language;\n\n const compactItems = _.compact([..._.get(member, 'items.member'), ...paginationItems]);\n const uniqueItems = _.uniqBy(compactItems, item => item.id);\n let defaultItems = _.map(uniqueItems, item =>\n _.assign({}, item, {\n isAuthenticated,\n preauthorizedResources,\n }),\n );\n\n if (\n videoId &&\n defaultItems.find(\n video => videoId === video.id && _.toLower(video.videoType) === 'fullepisode',\n )\n ) {\n // place current S/E first, all before it after\n const currentIndex = defaultItems.findIndex(item => item.id === videoId);\n const slicedItems = defaultItems.slice(currentIndex);\n const itemsBeforeCurrent = defaultItems.slice(0, currentIndex);\n defaultItems = [...slicedItems, ...itemsBeforeCurrent];\n }\n let items = defaultItems;\n let listProcessor = watchListVideoProcessor;\n let gridProcessor = watchVideoProcessor;\n if (usePlaylistResponse) {\n items = playlistItems;\n listProcessor = watchListPlaylistVideoProcessor.bind(this, playlist, {});\n gridProcessor = watchPlaylistVideoProcessor.bind(this, playlist, {});\n }\n items = _.map(items, item => {\n if (videoId === item.id) {\n return {\n ...item,\n contentLabel: [badge],\n };\n }\n return item;\n });\n const itemType = _.get(items, '0.videoType');\n const forceGrid = isMovie(itemType);\n const {\n gridToggleLimit,\n gridMovieToggleLimit,\n gridPrimaryToggleLimit,\n renderList,\n } = BREAKPOINTS[breakpoint];\n let toggleLimit = gridToggleLimit;\n if (isMovie(itemType)) {\n toggleLimit = gridMovieToggleLimit;\n } else if (primary) {\n toggleLimit = gridPrimaryToggleLimit;\n }\n\n const titleData = getSectionTitleData({\n sectionItems: items,\n theme: Style,\n member: usePlaylistResponse ? playlistData : member,\n primary,\n forceGrid,\n isPlaylist: usePlaylistResponse,\n });\n const sectionTitle =\n isFreeWatch && freemiumWatchPanelTitle ? freemiumWatchPanelTitle : titleData?.sectionTitle;\n const sectionTitleClass = titleData?.sectionTitleClass;\n const handleClick = opts => {\n this.onVodSectionClick({\n ...opts,\n pageCollectionCount,\n position,\n sectionTitle,\n });\n };\n const mobileOverrideBreakpoint = primary && !forceGrid ? renderList : false;\n const grid = renderGrid({\n gridProcessor,\n gridType: 'grid-4-1',\n isAuthenticated,\n items,\n key: 'filteredPanel',\n listProcessor,\n listTheme: tileStyle,\n onLinkClick: handleClick,\n onPlayClick: opts => this.segmentPlaylistButtonAction({ ...opts, sectionTitle }),\n onTileClick: handleClick,\n onTitleClick: handleClick,\n paginationLessButton,\n paginationMoreButton,\n preauthorizedResources,\n renderImage: image =>\n renderImage({\n breakpoint,\n imageType: WATCH_RELATED_THUMBNAIL_IMAGE,\n ...image,\n }),\n renderList: mobileOverrideBreakpoint,\n scrollSeeLess: true,\n shouldRenderButtons: true,\n showSeriesName: isFreeWatch,\n tileDetailToggle: true,\n tileGridTheme,\n tileGridTrackButtonClick: handleTealiumButtonAction,\n tileTheme: tileStyle,\n tileType: 'fadeAnimated',\n toggleLimit,\n });\n\n return (\n <Waypoint\n onEnter={() => {\n setOptimizelyCollectionViewedEvent({\n anonymousId,\n featuredTitle: sectionTitle,\n panelId,\n position,\n });\n }}\n bottomOffset=\"5%\"\n >\n <div>\n {sectionTitle ? <h2 className={sectionTitleClass}>{sectionTitle}</h2> : null}\n {grid}\n </div>\n </Waypoint>\n );\n }\n\n renderUpNextPanelVideos = () => {\n const {\n breakpoint,\n isAuthenticated,\n preauthorizedResources,\n upNextHeadline,\n upNextVideo,\n } = this.props;\n\n const { gridUpNextToggleLimit, renderList } = BREAKPOINTS[breakpoint];\n\n if (!upNextVideo?.length) return null;\n\n const { paginationMoreButton, paginationLessButton } = window.Language;\n const isLocalClip = getCookie({ name: LOCAL_CLIP_PAGE_COOKIE_NAME });\n const listProcessor = watchListVideoProcessor;\n const gridProcessor = item =>\n watchVideoProcessor({\n ...item,\n collectionType: isLocalClip && COLLECTION_TYPE_LOCAL_CLIPS,\n });\n const items = upNextVideo;\n const handleClick = opts => this.onVodSectionClick({ ...opts, sectionTitle: upNextHeadline });\n\n const grid = renderGrid({\n collectionType: isLocalClip && COLLECTION_TYPE_LOCAL_CLIPS,\n gridProcessor,\n gridType: 'grid-5-4-3-1',\n isAuthenticated,\n items,\n key: 'filteredPanel',\n listProcessor,\n listTheme: tileStyle,\n onLinkClick: handleClick,\n onTileClick: handleClick,\n onTitleClick: handleClick,\n onPlayClick: opts =>\n this.segmentPlaylistButtonAction({ ...opts, sectionTitle: upNextHeadline }),\n paginationLessButton,\n paginationMoreButton,\n preauthorizedResources,\n renderList,\n renderImage: image =>\n renderImage({\n breakpoint,\n imageType: WATCH_RELATED_THUMBNAIL_IMAGE,\n ...image,\n }),\n scrollSeeLess: true,\n shouldRenderButtons: true,\n tileDetailToggle: true,\n tileGridTheme,\n tileGridTrackButtonClick: handleTealiumButtonAction,\n tileTheme: tileStyle,\n tileType: 'fadeAnimated',\n toggleLimit: gridUpNextToggleLimit,\n });\n\n return (\n <>\n <h2 className={Style.sectionTitle}>{upNextHeadline}</h2>\n {grid}\n </>\n );\n };\n\n handlePanelPosition = panelId => {\n if (this.panelsRendered?.has(panelId)) return;\n\n if (this.panelRenderPosition === 0 && this.isOptimizelyUnlockedVideoPage()) {\n this.panelRenderPosition = 2;\n } else {\n this.panelRenderPosition += 1;\n }\n\n this.panelsRendered?.set(panelId, this.panelRenderPosition);\n };\n\n renderPanels({ primary, primaryType }) {\n const { panels } = this.props;\n const panelList = _.get(panels, 'member');\n\n if (!panelList) return null;\n\n return panelList.map(member => {\n const id = _.get(member, '@id');\n const initialItems = _.get(member, 'items.member', []);\n const memberType = _.get(initialItems, '0.videoType');\n const panelType = _.get(member, 'panelType');\n if ((primaryType === memberType) !== primary) return null;\n\n switch (panelType) {\n case PANEL_TYPE_VIDEOS: {\n this.handlePanelPosition(id);\n\n return initialItems.length > 0 ? (\n <div key={id} className={Style.videos}>\n {this.renderPanelVideos({\n member,\n pageCollectionCount: panelList?.length,\n position: this.panelsRendered?.get(id),\n primary,\n })}\n </div>\n ) : null;\n }\n default:\n return null;\n }\n });\n }\n\n renderUnlockedPanels() {\n const { freemiumWatchPanel } = this.props;\n if (!freemiumWatchPanel) return null;\n const id = _.get(freemiumWatchPanel, '@id');\n const initialItems = _.get(freemiumWatchPanel, 'items.member', []);\n const panelType = _.get(freemiumWatchPanel, 'panelType');\n\n switch (panelType) {\n case PANEL_TYPE_VIDEOS: {\n return initialItems.length > 0 ? (\n <div key={id} className={Style.videos}>\n {this.renderPanelVideos({\n idx: 0,\n member: freemiumWatchPanel,\n position: 1,\n primary: false,\n isFreeWatch: true,\n })}\n </div>\n ) : null;\n }\n default:\n return null;\n }\n }\n\n renderPrimaryPanels = primaryType => (\n <>\n {this.renderPanels({ primary: true, primaryType })}\n {this.renderPanels({ primary: false, primaryType })}\n </>\n );\n\n render() {\n const { errors, globalVideo, panelVideo, seo, video: reducerVideo } = this.props;\n const { upNextPanel, primaryPanels } = this.state;\n if (errors && !_.isArray(errors)) return getErrorComponent(errors);\n const video = reducerVideo || panelVideo || globalVideo;\n const isLocalClip = getLocalClipPage();\n const localClipHeadline = getLocalClipSectionTitle();\n const network = _.get(video, 'network');\n const isVideoClip = video?.videoType === 'clip';\n const setOverrideMetatags = brandOverrideMetaTags(network);\n const schemaBuilder = isVideoClip ? createWatchClipSchema : createWatchEpisodeSchema;\n const tags = createSchemaTag({ item: video, getSchema: schemaBuilder });\n const shouldRenderUpNextPanels = !!isLocalClip;\n\n return (\n <>\n {setHelmetTags(seo)}\n {setHelmetTags({ tags: [tags] })}\n {setOverrideMetatags}\n {this.renderLoader()}\n <div className={Style.container}>\n <h1 className={Style.videoName}>{video?.name}</h1>\n {this.isOptimizelyUnlockedVideoPage() && this.renderUnlockedPanels()}\n {shouldRenderUpNextPanels ? upNextPanel : primaryPanels}\n </div>\n <BreadcrumbsComponent\n data={breadcrumbsWatchParser(video, isLocalClip, localClipHeadline)}\n theme={breadcrumbsTheme}\n />\n </>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const watchItems = [\n 'endcardItems',\n 'errors',\n 'freemiumWatchPanel',\n 'globalVideo',\n 'isStatic',\n 'isVodUnavailable',\n 'pagination',\n 'panels',\n 'panelVideo',\n 'releaseUrl',\n 'schemaTags',\n 'seo',\n 'video',\n ];\n\n const watchProps = _.pick(state.watch, watchItems);\n return {\n ...watchProps,\n globalPanelVideo: makeSelectGlobalVideoPanelVideo(state),\n globalVideo: makeSelectGlobalVideoVideo(state),\n recommendationIdData: makeSelectAppRecommendationIdData(state),\n restartVideo: makeSelectGlobalVideoRestartVideo(state),\n upNextHeadline: makeSelectGlobalUpNextHeadline(state),\n upNextVideo: makeSelectGlobalUpNextVideo(state),\n };\n}\n\nWatch.fetchData = ({ store, params, accessToken }) => {\n const id = params.videoId;\n return store.dispatch(fetchWatch(id, accessToken)).then(response => {\n const panels = _.get(response, 'payload.data.panels');\n const videoType = _.get(panels, 'member.0.items.member.0.videoType');\n const isMovieType = videoType === 'movie';\n store.dispatch(setGlobalVideoDisabled({ value: false, context: PAGE_WATCH }));\n if (!isMovieType) return store.dispatch(fetchWatchPanels(id, accessToken));\n return store.dispatch(fetchMovieDetail(id, accessToken));\n });\n};\n\nWatch.defaultProps = {\n accessToken: null,\n deviceId: null,\n errors: null,\n globalPanelVideo: null,\n globalVideo: null,\n isAuthenticated: false,\n isVodUnavailable: null,\n location: {},\n optimizely: {},\n panels: {},\n panelVideo: null,\n playlistData: null,\n preauthorizedResources: [],\n recommendationIdData: null,\n restartVideo: null,\n seo: null,\n setLoading: null,\n setWatchPage: null,\n upNextHeadline: '',\n upNextVideo: [],\n video: {},\n};\n\nWatch.propTypes = {\n anonymousId: PropTypes.string,\n account: PropTypes.shape({}),\n accessToken: PropTypes.string,\n breakpoint: PropTypes.string.isRequired,\n clearGlobalLiveRestart: PropTypes.func.isRequired,\n clearGlobalVideo: PropTypes.func.isRequired,\n clearWatch: PropTypes.func.isRequired,\n deviceId: PropTypes.string,\n errors: PropTypes.number,\n freemiumWatchPanel: PropTypes.shape({}),\n fetchMovieDetail: PropTypes.func.isRequired,\n fetchPCS: PropTypes.func.isRequired,\n fetchWatchPanels: PropTypes.func.isRequired,\n globalPanelVideo: PropTypes.shape({}),\n globalVideo: PropTypes.shape({}),\n isAuthenticated: PropTypes.bool,\n isVodUnavailable: PropTypes.bool,\n location: PropTypes.shape({}),\n optimizely: PropTypes.shape({}),\n pagination: PropTypes.shape({}).isRequired,\n panelVideo: PropTypes.shape({}),\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n params: PropTypes.shape({ videoId: PropTypes.string }).isRequired,\n playlistData: PropTypes.shape({}),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n restartVideo: PropTypes.shape({}),\n seo: PropTypes.shape({}),\n setGlobalVideoDisabled: PropTypes.func.isRequired,\n setGlobalPlayerScreenInControlOfState: PropTypes.func.isRequired,\n setGlobalVideoPanel: PropTypes.func.isRequired,\n setLoading: PropTypes.func,\n setRecommendationId: PropTypes.func.isRequired,\n setWatchPage: PropTypes.func,\n handleVodSectionClicked: PropTypes.func.isRequired,\n upNextHeadline: PropTypes.string,\n upNextVideo: PropTypes.arrayOf(PropTypes.shape({})),\n video: PropTypes.shape({}),\n};\n\nconst TimeoutWatch = ReactTimeout(\n connect(mapStateToProps, {\n clearGlobalLiveRestart,\n clearGlobalVideo,\n clearWatch,\n fetchGlobalVideoPanel,\n fetchMovieDetail,\n fetchPCS,\n fetchWatch,\n fetchWatchPanels,\n setGlobalVideoDisabled,\n setGlobalPlayerScreenInControlOfState,\n setGlobalVideoPanel,\n setRecommendationId,\n handleVodSectionClicked,\n })(Watch),\n);\n\nTimeoutWatch.fetchData = Watch.fetchData;\n\nexport default TimeoutWatch;\n","/**\n * usprivacy-string.js\n *\n * Implements class UsprivacyString\n *\n * The class contains the methods to get/set the usprivacy string\n * and a method to get the current version.\n *\n * The usprivacy string as the format: ”vnol” where\n * v = version\n * n = Notice Given\n * o = OptedOut\n * l = lspact (Limited Service Provider Agreement Covered Transaction)\n * Example: “1YYY” Version 1, Notice given, Opted out, LSAPCT in place.\n * Default is null.\n *\n * */\nconst validStringRegExp = /^[1][nNyY-][nNyY-][nNyY-]$/;\n\nclass UsprivacyString {\n constructor() {\n this.version = 1;\n this.baseString = null; // default is null\n }\n\n // getUsprivacyString()\n // return the usprivacy string or null if an error occurs\n getUsprivacyString() {\n return this.baseString;\n }\n\n // setUsprivacyString(newstr)\n // checks for validity of the string before setting internals\n // returns true if success otherwise false\n setUsprivacyString(newstr) {\n let didSet = false;\n if (validStringRegExp.test(newstr)) {\n this.baseString = newstr;\n didSet = true;\n }\n return didSet;\n }\n\n // getVerion()\n // returns the version number\n getVersion() {\n return this.version;\n }\n}\n\nexport default UsprivacyString;\n","/**\n * IAB's Reference UspAPI reference implementation\n * */\n\n// import the UsprivacyString class\nimport UsprivacyString from './usprivacy-string';\n\n// global vars\nconst API_VERSION = 1;\nlet pendingCalls = [];\nconst uspString = new UsprivacyString();\n\n// helper functions\nconst getCookie = function(cookiename) {\n const name = `${cookiename}=`;\n const cookiearray = document.cookie.split(';');\n for (let i = 0; i < cookiearray.length; i++) {\n let cookie = cookiearray[i];\n while (cookie.charAt(0) == ' ') {\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(name) == 0) {\n return cookie.substring(name.length, cookie.length);\n }\n }\n return '';\n};\n\n// function to dynamically add the \"__uspapiLocator\" frame to the window\nconst addFrame = function() {\n // if the frame does not already exist\n if (!window.frames.__uspapiLocator) {\n // in case this is running in the <head>, make sure <body> exists\n // (can't/shouldn't add a frame to the <head>\n if (document.body) {\n // create iframe and append it to <body>\n const iframe = document.createElement('iframe');\n iframe.style.cssText = 'display:none';\n iframe.name = '__uspapiLocator';\n document.body.appendChild(iframe);\n } else {\n /**\n * Wait for the body tag to exist.\n *\n * Since this API \"stub\" is located in the <head>,\n * setTimeout allows us to inject the iframe more\n * quickly than relying on DOMContentLoaded or\n * other events.\n */\n setTimeout(addFrame, 5);\n }\n }\n};\n\n// add the \"__uspapiLocator\" frame to the window\naddFrame();\n\nconst getuspdata = function(apiver, callback) {\n if (typeof callback === 'function') {\n if (apiver !== null && apiver !== undefined && apiver != API_VERSION) {\n if (typeof callback === 'function') callback(null, false);\n return;\n }\n\n // Get the data from the storage\n let str1 = null;\n if ((str1 = getCookie('usprivacy'))) {\n if (!uspString.setUsprivacyString(str1)) {\n console.log('Warning: uspString not set.');\n }\n }\n\n // get the uspstring and stuff it into the uspdata object\n const str = uspString.getUsprivacyString();\n if (str) {\n callback(\n {\n version: uspString.getVersion(),\n uspString: str,\n },\n true,\n );\n } else {\n callback(\n {\n version: null,\n uspString: null,\n },\n false,\n );\n }\n } else {\n console.error('__uspapi: callback parameter not a function');\n }\n};\n\n/**\n * U.S. Privacy API implementation\n */\nwindow.__uspapi = new (function(win) {\n if (win.__uspapi) {\n try {\n // if the api was already loaded, then use it\n if (win.__uspapi('__uspapi')) {\n return win.__uspapi;\n }\n // Making a call to __uspapi with no arguments will return the pending calls;\n pendingCalls = win.__uspapi() || [];\n } catch (nfe) {\n return win.__uspapi;\n }\n }\n\n const api = function(cmd) {\n try {\n return {\n getUSPData: getuspdata,\n __uspapi() {\n return true;\n },\n }[cmd].apply(null, [].slice.call(arguments, 1));\n } catch (err) {\n console.error('__uspapi: Invalid command: ', cmd);\n }\n };\n\n return api;\n})(window);\n\n// register postMessage handler\nfunction __handleUspapiMessage(event) {\n const data = event && event.data && event.data.__uspapiCall;\n if (data) {\n window.__uspapi(data.command, data.version, (returnValue, success) => {\n event.source.postMessage(\n {\n __uspapiReturn: {\n returnValue,\n success,\n callId: data.callId,\n },\n },\n '*',\n );\n });\n }\n}\n\nwindow.addEventListener('message', __handleUspapiMessage, false);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { getCookie, setCookie } from 'helpers/Storage';\nimport Style from './StickyBanner.module.scss';\n\nconst withAnchor = (components, url) => {\n if (!url) return null;\n return (\n <a className={Style.wrapper} href={url} target=\"_blank\" rel=\"noopener noreferrer\">\n {components}\n </a>\n );\n};\nconst withDiv = components => <div className={Style.wrapper}>{components}</div>;\n\nconst StickyBanner = ({ data = null }) => {\n const [hidden, setHidden] = useState(() => getCookie({ name: cookieName }));\n if (!data) return null;\n const { id = '', headline = '', description = '', url = '' } = data;\n const cookieName = `stickyBanner-${id}`;\n\n if (hidden) return null;\n\n const descriptionParts = description ? description.split('\\n') : null;\n\n const onCloseClick = () => {\n setCookie({ name: cookieName, value: true, options: { path: '/' } });\n setHidden(true);\n };\n\n const titleComponent = headline ? <h1>{headline}</h1> : null;\n const descriptionComponent = descriptionParts\n ? descriptionParts.map(part => <span key={part}>{part}</span>)\n : null;\n\n const child = [titleComponent, descriptionComponent];\n\n const wrapperRenderer = url ? withAnchor : withDiv;\n return (\n <div className={Style.stickyBannerContainer}>\n {wrapperRenderer(child, url)}\n <Link className={Style.closeButton} onClick={onCloseClick} />\n </div>\n );\n};\n\nStickyBanner.propTypes = {\n data: PropTypes.shape({}),\n};\n\nexport default StickyBanner;\n","const getOpeFoxSdk = ({ profileId, anonymousId }) =>\n `(function(o,n,e,p,l,u,s){o[l]=o[l]||function(){(o[l].q=o[l].q||[]).push(arguments);};\n u=n.createElement(e);u.async=1;u.src=p;s=n.getElementsByTagName(e)[0];s.parentNode.insertBefore(u,s);\n }(window,document,\"script\",\"https://cdn.opecloud.com/ope-fox.js\",\"ope\"));\n\n ope(\"fox\", \"init\", \"usp\")\n ope(\"fox\", \"send\", \"profile_ids\", {\n dcg_profile_id: \"${profileId}\",\n segment_anonymous_d: \"${anonymousId}\"\n });\n\n const urlParams = new URLSearchParams(window.location.search);\n if (window.location.href.includes(\"?\"))\n {\n ope(\"fox\", \"send\", \"utmParameters\", {\n utm_source: urlParams.get(\"utm_source\"),\n utm_medium: urlParams.get(\"utm_medium\"),\n utm_term: urlParams.get(\"utm_term\"),\n utm_campaign: urlParams.get(\"utm_campaign\")\n });\n }\n `;\n\nexport default getOpeFoxSdk;\n","/* global RedfastEnabled */\nimport { Redfast } from '@foxcorp/cpe-commerce-web';\nimport { isStaticRender } from 'helpers/ContentHelper';\n\nconst initializeRedfast = () => {\n const { evergent } = window.ExternalConfig;\n if (!RedfastEnabled || !evergent || isStaticRender()) return;\n\n Redfast.createActions({\n apiUrl: evergent.api,\n apiKey: evergent.apiKey,\n });\n};\n\nexport default initializeRedfast;\n","import React from 'react';\nimport { Link } from 'react-router';\nimport PropTypes from 'prop-types';\nimport {\n SUCCESS_COOKIE_NAME,\n LOCKED_CONTENT_SOURCE,\n checkAuthStartSource,\n} from 'helpers/AuthHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport {\n BUILD_VERSION,\n callTealiumEvent,\n getTealiumSourceAuth,\n setSegmentPageStartSource,\n setTealiumProfileId,\n TEALIUM_EVENT_PREFIX,\n TealiumOnboardingActions,\n} from '@foxcorp/delta-web-analytics';\nimport Style from './Provider.module.scss';\n\nconst Provider = (props = {}) => {\n const {\n '@id': providerId,\n adobePassId,\n isLive,\n name,\n onProviderClick,\n previewPassExpired,\n previewPassSignIn,\n profileId,\n selectedChannel,\n } = props;\n if (!name) return null;\n\n return (\n <div className={Style.providerContainer} key={`provider-${providerId}`}>\n <Link\n className={Style.provider}\n onClick={() => {\n const channel = isLive && selectedChannel ? selectedChannel : null;\n const id = adobePassId;\n const cookie = {\n name: SUCCESS_COOKIE_NAME,\n value: {\n selectedChannel: channel,\n provider: id,\n },\n options: {\n path: '/',\n },\n };\n onProviderClick(id, cookie);\n const action = 'authentication_select_provider';\n const authStartSource = getTealiumSourceAuth() || LOCKED_CONTENT_SOURCE;\n const onboardSrc = checkAuthStartSource(previewPassSignIn, previewPassExpired);\n const onboardingStartSource = onboardSrc;\n setSegmentPageStartSource({ previewPassSignIn, previewPassExpired });\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n mvpd_select_type: 'other mvpd',\n mvpd: id,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n onboarding_start_source: onboardingStartSource,\n platform_version: BUILD_VERSION,\n profile_start_source: undefined,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n }}\n >\n {name}\n </Link>\n </div>\n );\n};\n\nProvider.propTypes = {\n '@id': PropTypes.string,\n adobePassId: PropTypes.string,\n isLive: PropTypes.bool,\n name: PropTypes.string,\n onProviderClick: PropTypes.func,\n previewPassExpired: PropTypes.bool,\n previewPassSignIn: PropTypes.bool,\n profileId: PropTypes.string,\n selectedChannel: PropTypes.number,\n};\nProvider.defaultProps = {\n isLive: null,\n '@id': null,\n adobePassId: null,\n name: null,\n onProviderClick: () => {},\n previewPassExpired: null,\n previewPassSignIn: false,\n selectedChannel: null,\n profileId: null,\n};\n\nexport default Provider;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport Provider from '../Provider';\nimport Style from './ProviderGroup.module.scss';\n\nconst ProviderGroup = (props = {}) => {\n const {\n groupName,\n isLive,\n onProviderClick,\n previewPassExpired,\n previewPassSignIn,\n profileId,\n providers,\n selectedChannel,\n } = props;\n if (!providers || !providers.length || !groupName) return null;\n const providerProps = {\n onProviderClick,\n selectedChannel,\n isLive,\n previewPassExpired,\n previewPassSignIn,\n profileId,\n };\n return (\n <div className={Style.providerGroup} providers-group={groupName}>\n <div className={Style.providerGroupKey}>{groupName}</div>\n {providers.map(provider => (\n <Provider key={_.get(provider, 'name')} {...provider} {...providerProps} />\n ))}\n </div>\n );\n};\n\nProviderGroup.defaultProps = {\n groupName: null,\n onProviderClick: () => {},\n previewPassExpired: null,\n previewPassSignIn: false,\n selectedChannel: null,\n profileId: null,\n providers: null,\n isLive: null,\n};\nProviderGroup.propTypes = {\n groupName: PropTypes.string,\n providers: PropTypes.arrayOf(PropTypes.shape({})),\n isLive: PropTypes.bool,\n onProviderClick: PropTypes.func,\n previewPassExpired: PropTypes.bool,\n previewPassSignIn: PropTypes.bool,\n profileId: PropTypes.string,\n selectedChannel: PropTypes.number,\n};\n\nexport default ProviderGroup;\n","import React from 'react';\nimport _ from 'lodash';\nimport { PREVIEW_PASS_5, PREVIEW_PASS_60 } from 'helpers/AuthHelper';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Loader from 'components/Loader';\nimport ProviderGroup from '../ProviderGroup';\nimport Provider from '../Provider';\nimport Style from './ProviderList.module.scss';\n\nconst ProvidersList = props => {\n const {\n isLive,\n moveSideMenuToTop,\n mvpdProviders,\n onProviderClick,\n previewPassExpired,\n previewPassSignIn,\n profileId,\n query,\n scrollToTop,\n selectedChannel,\n } = props;\n\n if (!mvpdProviders || !mvpdProviders.length) return <Loader center />;\n const getGroupedProviders = providers =>\n // return an object with keys set for each first character\n providers.reduce((acc, item) => {\n const firstCharacterUppercase = _.toUpper(_.get(item, 'nameLowercase.0'));\n // we use isFinite to avoid NaN returning true\n const isNumber = _.isFinite(parseInt(firstCharacterUppercase, 10));\n // all numbers are grouped under the # key\n const groupKey = isNumber ? '#' : firstCharacterUppercase;\n if (groupKey) {\n if (!acc[groupKey]) acc[groupKey] = [];\n acc[groupKey].push(item);\n }\n return acc;\n }, {});\n const allProvidersList = groupedProviders => {\n // create an array of the keys so we can loop through the providers\n const keys = Object.keys(groupedProviders);\n const providerGroups = (\n <div>\n {keys.map(key => (\n <ProviderGroup\n key={key}\n groupName={key}\n providers={groupedProviders[key]}\n onProviderClick={onProviderClick}\n selectedChannel={selectedChannel}\n isLive={isLive}\n previewPassExpired={previewPassExpired}\n previewPassSignIn={previewPassSignIn}\n profileId={profileId}\n />\n ))}\n </div>\n );\n return (\n <div>\n <div className={classNames(Style.providersDirectory, moveSideMenuToTop && Style.top)}>\n {keys.map(key => (\n <button\n key={`directory-item-${key}`}\n aria-label={`scroll to providers starting with ${key}`}\n type=\"button\"\n onClick={() => {\n document\n .querySelector(`[providers-group=\"${key}\"]`)\n .scrollIntoView({ block: 'start', behavior: 'smooth' });\n }}\n className={Style.providersDirectoryKey}\n >\n {key}\n </button>\n ))}\n <button\n aria-label=\"scroll to top of page\"\n type=\"button\"\n onClick={scrollToTop}\n className={classNames(Style.providersDirectoryKey, Style.scrollToTop)}\n >\n Top\n </button>\n </div>\n {providerGroups}\n </div>\n );\n };\n const removePreviewPassProviders = providers => {\n const previewPasses = [PREVIEW_PASS_5, PREVIEW_PASS_60];\n const providersWithoutPreviewPass = _.clone(providers);\n _.remove(providersWithoutPreviewPass, mvpd => {\n const id = _.get(mvpd, 'adobePassId');\n return _.includes(previewPasses, id);\n });\n return providersWithoutPreviewPass;\n };\n const filterProvidersByQuery = (query, providers) =>\n _.filter(providers, provider => {\n const lowercaseInput = query.toLowerCase();\n const name = _.get(provider, 'name', '').toLowerCase();\n const alternateNames = _.get(provider, 'alternateNames', []);\n const nameMatch = name.indexOf(lowercaseInput) > -1;\n const alternateNamesMatch = _.find(\n alternateNames,\n n => n.toLowerCase().indexOf(lowercaseInput) > -1,\n );\n return nameMatch || alternateNamesMatch || false;\n }).slice(0, 7);\n\n const filteredProviders = removePreviewPassProviders(mvpdProviders);\n let providers;\n\n if (query !== '') {\n const queryFilteredProviders = filterProvidersByQuery(query, filteredProviders);\n if (!queryFilteredProviders.length) {\n const { auth_noProvidersText: noProvidersText } = window.Language;\n providers = <div className={Style.noProvidersFound}>{noProvidersText}</div>;\n } else {\n providers = queryFilteredProviders.map(provider => (\n <Provider\n key={_.get(provider, 'name')}\n {...provider}\n onProviderClick={onProviderClick}\n selectedChannel={selectedChannel}\n />\n ));\n }\n } else {\n const providersByGroup = getGroupedProviders(filteredProviders);\n providers = allProvidersList(providersByGroup);\n }\n return <div key=\"providers\">{providers}</div>;\n};\n\nProvidersList.defaultProps = {\n isLive: null,\n moveSideMenuToTop: false,\n mvpdProviders: null,\n onProviderClick: () => {},\n previewPassExpired: null,\n previewPassSignIn: false,\n profileId: null,\n selectedChannel: null,\n};\nProvidersList.propTypes = {\n isLive: PropTypes.bool,\n moveSideMenuToTop: PropTypes.bool,\n mvpdProviders: PropTypes.arrayOf(PropTypes.shape({})),\n onProviderClick: PropTypes.func,\n previewPassExpired: PropTypes.bool,\n previewPassSignIn: PropTypes.bool,\n profileId: PropTypes.string,\n query: PropTypes.string.isRequired,\n scrollToTop: PropTypes.func.isRequired,\n selectedChannel: PropTypes.number,\n};\n\nexport default ProvidersList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Style from './SearchInput.module.scss';\n\nconst SearchInput = ({ input, onInputChange }) => (\n <div className={input !== '' ? Style.inputContainer : Style.shortInputContainer}>\n <input\n type=\"text\"\n className={Style.input}\n placeholder=\"Search\"\n value={input}\n onChange={onInputChange}\n />\n </div>\n);\n\nSearchInput.propTypes = {\n input: PropTypes.string.isRequired,\n onInputChange: PropTypes.func.isRequired,\n};\nexport default SearchInput;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport sharedTheme from 'themes/AuthShared.module.scss';\nimport NetworkLink from 'components/NetworkLink';\nimport ProvidersList from './components/ProvidersList';\nimport SearchInput from './components/SearchInput';\nimport Style from './VideoProviderSearch.module.scss';\n\nexport default class VideoProviderSearch extends Component {\n state = {\n searchInput: '',\n moveSideMenuToTop: false,\n };\n\n render() {\n const { searchInput, moveSideMenuToTop } = this.state;\n const {\n backgroundUrl,\n mvpdProviders,\n onClose,\n onProviderClick,\n preauthorizedResources,\n } = this.props;\n const { auth_searchProviderHeader: headerBarText } = window.Language;\n\n const containerStyle = backgroundUrl ? { backgroundImage: `url(${backgroundUrl})` } : null;\n const containerClassName = classNames(Style.container, sharedTheme.container, 'withBackground');\n\n return (\n <div className={containerClassName} style={containerStyle}>\n <div\n key=\"header-bar\"\n className={classNames(\n sharedTheme.headerBarExtraPadding,\n sharedTheme.headerBarBorder,\n Style.header,\n )}\n >\n <div className={sharedTheme.headerContainer}>\n <div key=\"logo\" className={classNames(sharedTheme.headerLogo, Style.headerLogo)}>\n <NetworkLink\n theme={sharedTheme}\n clickEvent={() => {\n onClose();\n // TODO: implement once this is requested for buythrough\n // tealiumGlobalNavClickEvent({ text: getCurrentBrand() });\n }}\n preauthorizedResources={preauthorizedResources}\n />\n </div>\n\n <div className={Style.headerBarText}>{headerBarText}</div>\n <button\n aria-label=\"close\"\n className={sharedTheme.close}\n key=\"close\"\n onClick={onClose}\n type=\"button\"\n />\n </div>\n </div>\n <div className={Style.content}>\n <VisibilitySensor\n onChange={isVisible => this.setState({ moveSideMenuToTop: !isVisible })}\n >\n <SearchInput\n onInputChange={e => {\n this.setState({ searchInput: e.target.value });\n }}\n input={searchInput}\n />\n </VisibilitySensor>\n <div className={Style.mvpdListContainer} scroll=\"video-provider-search\">\n <ProvidersList\n mvpdProviders={mvpdProviders}\n query={searchInput}\n onProviderClick={onProviderClick}\n scrollToTop={() => {\n document.querySelector('[scroll=\"video-provider-search\"]').scrollTop = 0;\n }}\n moveSideMenuToTop={moveSideMenuToTop}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nVideoProviderSearch.defaultProps = {\n backgroundUrl: null,\n onProviderClick: () => {},\n preauthorizedResources: [],\n};\n\nVideoProviderSearch.propTypes = {\n backgroundUrl: PropTypes.string,\n mvpdProviders: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n onProviderClick: PropTypes.func,\n onClose: PropTypes.func.isRequired,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n};\n","import _ from 'lodash';\nimport { VCHIP_RATINGS } from 'helpers/auth.clientless';\n\nconst MPAA_RATINGS = ['g', 'pg', 'pg-13', 'r', 'nc-17'];\n\nfunction checkParentalControls(account, contentRating, pcs) {\n let videoAllowed = true;\n\n if (!account || !pcs || !contentRating) return videoAllowed;\n\n const { tv_rating_val, mv_rating_val } = pcs;\n\n const lowercaseContentRating = _.toLower(contentRating);\n\n const videoTvIndex = _.findIndex(VCHIP_RATINGS, r => r === lowercaseContentRating);\n\n const videoMovieIndex = _.findIndex(MPAA_RATINGS, r => r === lowercaseContentRating);\n\n if (videoTvIndex > -1) {\n const userTvIndex = _.findIndex(VCHIP_RATINGS, r => r === _.toLower(tv_rating_val));\n if (userTvIndex < videoTvIndex) videoAllowed = false;\n } else if (videoMovieIndex > -1) {\n const userMovieIndex = _.findIndex(MPAA_RATINGS, r => r === _.toLower(mv_rating_val));\n if (userMovieIndex < videoMovieIndex) videoAllowed = false;\n }\n\n return videoAllowed;\n}\n\nexport default checkParentalControls;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst CookiesBlocked = ({ options }) => {\n const {\n theme,\n sharedTheme,\n rendered,\n backgroundInline,\n onSignInButtonClick,\n getChildren,\n } = options;\n const innerContainerStyle = backgroundInline ? { ...backgroundInline } : null;\n const children = getChildren({ onSignInButtonClick });\n\n if (!rendered) return null;\n\n return (\n <div className={classNames(sharedTheme.container, theme.container)}>\n <div\n className={classNames(sharedTheme.innerContainer, theme.innerContainer)}\n style={innerContainerStyle}\n >\n <div className={theme.content}>{children}</div>\n </div>\n </div>\n );\n};\n\nCookiesBlocked.propTypes = {\n options: PropTypes.shape({}),\n};\n\nCookiesBlocked.defaultProps = {\n options: {},\n};\n\nexport default CookiesBlocked;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Image from 'components/Image';\nimport { getPreviewPassImage, isEpgv2Enabled } from 'helpers/ConfigHelper';\nimport expiredPreviewPassV2 from 'themes/ExpiredPreviewPassV2.module.scss';\nimport expiredPreviewPass from 'themes/ExpiredPreviewPass.module.scss';\n\nconst Style = isEpgv2Enabled() ? expiredPreviewPassV2 : expiredPreviewPass;\n\nconst ExpiredPreviewPass = ({ isActive, openOverlay, backgroundInline, sharedTheme }) => {\n if (!isActive) return null;\n\n const innerContainerStyle = backgroundInline ? { ...backgroundInline } : {};\n const image = getPreviewPassImage();\n const {\n previewPass_expired_header: headerText,\n previewPass_expired_text: text,\n previewPass_expired_button: buttonText,\n } = window.Language;\n\n return (\n <div className={classNames(sharedTheme.container, Style.container)}>\n <div\n className={classNames(Style.innerContainer, Style.previewPassExpired)}\n style={innerContainerStyle}\n >\n <div className={Style.content}>\n {image && <Image source={image} className={Style.image} alt=\"\" />}\n <div className={Style.previewPassExpiredHeading}>{headerText}</div>\n <div className={Style.previewPassExpiredSubheading}>{text}</div>\n <button onClick={openOverlay} className={Style.previewPassButton}>\n {buttonText}\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nExpiredPreviewPass.defaultProps = {\n isActive: false,\n openOverlay: null,\n backgroundInline: null,\n sharedTheme: {},\n};\n\nExpiredPreviewPass.propTypes = {\n isActive: PropTypes.bool,\n openOverlay: PropTypes.func,\n backgroundInline: PropTypes.shape({}),\n sharedTheme: PropTypes.shape({}),\n};\n\nexport default ExpiredPreviewPass;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { noop } from 'helpers/GlobalHelper';\n\nconst Failure = ({\n theme,\n sharedTheme,\n children,\n contentChildren,\n rendered,\n contentChildrenParams,\n backgroundInline,\n}) => {\n if (!rendered) return null;\n const innerContainerStyle = backgroundInline ? { ...backgroundInline } : null;\n\n return (\n <div className={classNames(sharedTheme.container, theme.container)}>\n <div\n className={classNames(sharedTheme.innerContainer, theme.innerContainer)}\n style={innerContainerStyle}\n >\n <div className={theme.content}>\n {contentChildren(contentChildrenParams)}\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nFailure.propTypes = {\n theme: PropTypes.shape({}),\n sharedTheme: PropTypes.shape({}),\n contentChildren: PropTypes.func,\n contentChildrenParams: PropTypes.shape({}),\n rendered: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n backgroundInline: PropTypes.shape({}),\n};\n\nFailure.defaultProps = {\n theme: null,\n sharedTheme: null,\n contentChildren: noop,\n contentChildrenParams: null,\n rendered: PropTypes.bool,\n children: null,\n backgroundInline: null,\n};\n\nexport default Failure;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport Overlay from 'components/Overlay';\n\nconst Loading = ({\n backgroundUrl,\n theme,\n sharedTheme,\n children,\n innerContainerChildren,\n rendered,\n backgroundClass,\n innerContainerChildrenParams,\n}) => (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n theme={theme}\n rendered={rendered}\n innerContainerChildren={innerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n >\n {children}\n </Overlay>\n);\n\nLoading.defaultProps = {\n backgroundUrl: null,\n sharedTheme: {},\n};\n\nLoading.propTypes = {\n backgroundClass: PropTypes.string,\n backgroundUrl: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n innerContainerChildren: PropTypes.func,\n innerContainerChildrenParams: PropTypes.shape({}),\n rendered: PropTypes.bool,\n sharedTheme: PropTypes.shape({}),\n theme: PropTypes.shape({}),\n};\n\nLoading.defaultProps = {\n backgroundClass: '',\n backgroundUrl: '',\n children: null,\n innerContainerChildren: noop,\n innerContainerChildrenParams: {},\n rendered: PropTypes.bool,\n sharedTheme: null,\n theme: null,\n};\n\nexport default Loading;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { isEpgv2Enabled } from 'helpers/ConfigHelper';\nimport Style from './MVPDIncomplete.module.scss';\n\nconst MVPDIncomplete = ({\n isActive,\n backgroundInline,\n sharedTheme,\n mvpdIncompleteTheme,\n mvpdIncompleteChildren,\n buttonOnClick,\n onClose,\n}) => {\n if (!isActive) return null;\n\n const innerContainerStyle = backgroundInline ? { backgroundInline } : {};\n const closeButton = onClose && (\n <div className={mvpdIncompleteTheme.close} onClick={onClose}>\n <Icon color=\"white\" icon=\"close\" size=\"large\" />\n </div>\n );\n const maybeLaterButton = onClose && (\n <span onClick={onClose} className={Style.maybeLaterLink}>\n Maybe Later\n </span>\n );\n return (\n <div\n className={classNames(\n Style.container,\n sharedTheme.container,\n isEpgv2Enabled() ? Style.resizablePlayer : null,\n )}\n >\n <div className={Style.mvpdIncomplete} style={innerContainerStyle}>\n {closeButton}\n <div className={Style.content}>\n {mvpdIncompleteChildren(buttonOnClick)}\n {maybeLaterButton}\n </div>\n </div>\n </div>\n );\n};\n\nexport default MVPDIncomplete;\n\nMVPDIncomplete.propTypes = {\n isActive: PropTypes.bool,\n backgroundInline: PropTypes.shape({}),\n sharedTheme: PropTypes.shape({}),\n mvpdIncompleteTheme: PropTypes.shape({}),\n mvpdIncompleteChildren: PropTypes.func,\n buttonOnClick: PropTypes.func,\n onClose: PropTypes.func,\n};\n\nMVPDIncomplete.defaultProps = {\n isActive: false,\n backgroundInline: {},\n sharedTheme: {},\n mvpdIncompleteTheme: {},\n mvpdIncompleteChildren: null,\n buttonOnClick: null,\n onClose: null,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport Overlay from 'components/Overlay';\n\nconst MVPDRetry = ({\n backgroundUrl,\n isActive,\n mvpdRetryChildren,\n mvpdRetryTheme,\n backgroundClass,\n children,\n retryButtonClick,\n otherProviderClick,\n onCloseClick,\n sharedTheme,\n}) => {\n if (!isActive) return null;\n return (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n theme={mvpdRetryTheme}\n sharedTheme={sharedTheme}\n rendered={isActive}\n innerContainerChildren={mvpdRetryChildren}\n innerContainerChildrenParams={{ retryButtonClick, otherProviderClick, onCloseClick }}\n >\n {children}\n </Overlay>\n );\n};\n\nMVPDRetry.defaultProps = {\n backgroundUrl: null,\n isActive: false,\n mvpdRetryChildren: noop,\n mvpdRetryTheme: {},\n backgroundClass: null,\n children: null,\n retryButtonClick: noop,\n otherProviderClick: noop,\n onCloseClick: noop,\n sharedTheme: {},\n};\n\nMVPDRetry.propTypes = {\n backgroundUrl: PropTypes.string,\n isActive: PropTypes.bool,\n mvpdRetryChildren: PropTypes.func,\n mvpdRetryTheme: PropTypes.shape({}),\n backgroundClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n retryButtonClick: PropTypes.func,\n otherProviderClick: PropTypes.func,\n onCloseClick: PropTypes.func,\n sharedTheme: PropTypes.shape({}),\n};\n\nexport default MVPDRetry;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport Overlay from 'components/Overlay';\nimport Style from 'themes/AuthMVPDSearch.module.scss';\n\n/**\n * MVPDSearch Component\n * @param {Object} theme\n * @param {Object} sharedTheme\n * @param {Node} children - any additional items: button, image, text, etc.\n * @param {Node} innerContainerChildren - any additional items: button, image, text, etc.\n * @param {Boolean} rendered - should this item render?\n * @param {Function} onClose - click event for closing an overlay\n * @param {String} backgroundClass - background class for overlay\n * @param {Object} innerContainerChildrenParams - parameters to be passed to innercontainerchildren\n * @param {Function} searchResults - results to display based on the user input\n * @param {Function} searchInput - the element used for search input\n * @param {Function} onResultClick - result click event\n * @param {Function} onBackClick - back click event\n * @param {Number} selectedChannel - selected channel\n * @param {Function} onInputChange - input change event\n * @returns {Component} - React Component\n */\nclass MVPDSearch extends Component {\n constructor(props) {\n super(props);\n this.state = {\n input: '',\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { rendered: prevRendered, tvProviderFullListViewed } = this.props;\n const { rendered: currentRendered } = nextProps;\n if (!prevRendered && currentRendered) {\n tvProviderFullListViewed();\n }\n }\n\n render() {\n const {\n backgroundUrl,\n children,\n innerContainerChildren,\n rendered,\n backgroundClass,\n innerContainerChildrenParams,\n searchResults,\n searchInput,\n onResultClick,\n onBackClick,\n selectedChannel,\n onInputChange,\n sharedTheme,\n } = this.props;\n const { input } = this.state;\n const onChange = onInputChange && _.isFunction(onInputChange) ? onInputChange.bind(this) : null;\n\n return (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n theme={Style}\n rendered={rendered}\n innerContainerChildren={innerContainerChildren}\n innerContainerChildrenParams={{ ...innerContainerChildrenParams, onBack: onBackClick }}\n >\n {searchInput({ input, onInputChange: onChange, onBackClick })}\n {searchResults({ input, onProviderClick: onResultClick, selectedChannel })}\n {children}\n </Overlay>\n );\n }\n}\n\nMVPDSearch.defaultProps = {\n backgroundUrl: null,\n rendered: false,\n children: [],\n backgroundClass: '',\n innerContainerChildren: () => {},\n innerContainerChildrenParams: {},\n searchResults: () => {},\n searchInput: () => {},\n onResultClick: () => {},\n onBackClick: () => {},\n selectedChannel: null,\n onInputChange: () => {},\n tvProviderFullListViewed: () => {},\n sharedTheme: {},\n};\n\nMVPDSearch.propTypes = {\n backgroundUrl: PropTypes.string,\n rendered: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n backgroundClass: PropTypes.string,\n innerContainerChildrenParams: PropTypes.shape({}),\n innerContainerChildren: PropTypes.func,\n searchResults: PropTypes.func,\n searchInput: PropTypes.func,\n onResultClick: PropTypes.func,\n onBackClick: PropTypes.func,\n selectedChannel: PropTypes.number,\n onInputChange: PropTypes.func,\n tvProviderFullListViewed: PropTypes.func,\n sharedTheme: PropTypes.shape({}),\n};\n\nexport default MVPDSearch;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { mountSessionCam } from '@foxcorp/delta-web-analytics';\nimport { noop } from 'helpers/GlobalHelper';\nimport Overlay from 'components/Overlay';\nimport Style from './MVPDStartOverlay.module.scss';\n\nexport default class MVPDStart extends React.Component {\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n authenticationStarted,\n rendered: prevRendered,\n tealiumAuthenticationStarted,\n tvProviderFeatListViewed,\n } = this.props;\n const { rendered: currentRendered } = nextProps;\n if (!prevRendered && currentRendered) {\n tvProviderFeatListViewed();\n authenticationStarted();\n tealiumAuthenticationStarted();\n mountSessionCam();\n }\n }\n\n render() {\n const {\n backgroundUrl,\n children,\n innerContainerChildren,\n rendered,\n backgroundClass,\n innerContainerChildrenParams,\n sharedTheme,\n } = this.props;\n return (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n rendered={rendered}\n theme={Style}\n innerContainerChildren={innerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n >\n {children}\n </Overlay>\n );\n }\n}\n\nMVPDStart.defaultProps = {\n authenticationStarted: noop,\n backgroundClass: '',\n backgroundUrl: null,\n children: {},\n innerContainerChildren: noop,\n innerContainerChildrenParams: {},\n rendered: false,\n sharedTheme: {},\n tealiumAuthenticationStarted: noop,\n tvProviderFeatListViewed: noop,\n};\n\nMVPDStart.propTypes = {\n authenticationStarted: PropTypes.func,\n backgroundClass: PropTypes.string,\n backgroundUrl: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n innerContainerChildren: PropTypes.func,\n innerContainerChildrenParams: PropTypes.shape({}),\n rendered: PropTypes.bool,\n sharedTheme: PropTypes.shape({}),\n tealiumAuthenticationStarted: PropTypes.func,\n tvProviderFeatListViewed: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Overlay from 'components/Overlay';\n\nconst MVPDUpsellRedirecting = ({\n backgroundUrl,\n theme,\n children,\n innerContainerChildren,\n rendered,\n backgroundClass,\n innerContainerChildrenParams,\n sharedTheme,\n}) => (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n theme={theme}\n rendered={rendered}\n innerContainerChildren={innerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n >\n {children}\n </Overlay>\n);\n\nMVPDUpsellRedirecting.defaultProps = {\n backgroundUrl: null,\n theme: {},\n sharedTheme: {},\n children: [],\n innerContainerChildren: () => {},\n rendered: false,\n backgroundClass: '',\n innerContainerChildrenParams: {},\n};\n\nMVPDUpsellRedirecting.propTypes = {\n backgroundUrl: PropTypes.string,\n theme: PropTypes.shape({}),\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n innerContainerChildren: PropTypes.func,\n rendered: PropTypes.bool,\n backgroundClass: PropTypes.string,\n innerContainerChildrenParams: PropTypes.shape({}),\n sharedTheme: PropTypes.shape({}),\n};\n\nexport default MVPDUpsellRedirecting;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Overlay from 'components/Overlay';\n\nconst MvpdDirectSignInRedirect = ({\n backgroundUrl,\n theme,\n children,\n innerContainerChildren,\n rendered,\n backgroundClass,\n sharedTheme,\n}) => (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n theme={theme}\n rendered={rendered}\n innerContainerChildren={innerContainerChildren}\n >\n {children}\n </Overlay>\n);\n\nMvpdDirectSignInRedirect.defaultProps = {\n backgroundClass: '',\n backgroundUrl: null,\n children: [],\n innerContainerChildren: () => {},\n rendered: false,\n sharedTheme: {},\n theme: {},\n};\n\nMvpdDirectSignInRedirect.propTypes = {\n backgroundClass: PropTypes.string,\n backgroundUrl: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n innerContainerChildren: PropTypes.func,\n rendered: PropTypes.bool,\n sharedTheme: PropTypes.shape({}),\n theme: PropTypes.shape({}),\n};\n\nexport default MvpdDirectSignInRedirect;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { noop } from 'helpers/GlobalHelper';\nimport Overlay from 'components/Overlay';\n\nconst NotEntitled = ({\n backgroundUrl,\n isActive,\n notEntitledChildren,\n notEntitledTheme,\n backgroundClass,\n children,\n onCloseClick,\n sharedTheme,\n}) => {\n if (!isActive) return null;\n return (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n theme={notEntitledTheme}\n sharedTheme={sharedTheme}\n rendered={isActive}\n innerContainerChildren={notEntitledChildren}\n innerContainerChildrenParams={{ onCloseClick }}\n >\n {children}\n </Overlay>\n );\n};\n\nNotEntitled.defaultProps = {\n backgroundUrl: null,\n isActive: false,\n notEntitledChildren: noop,\n notEntitledTheme: {},\n backgroundClass: null,\n children: null,\n onCloseClick: noop,\n sharedTheme: {},\n};\n\nNotEntitled.propTypes = {\n backgroundUrl: PropTypes.string,\n isActive: PropTypes.bool,\n notEntitledChildren: PropTypes.func,\n notEntitledTheme: PropTypes.shape({}),\n backgroundClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n onCloseClick: PropTypes.func,\n sharedTheme: PropTypes.shape({}),\n};\n\nexport default NotEntitled;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Style from './PlaybackError.module.scss';\n\nconst PlaybackError = ({ sharedTheme, children, rendered, backgroundInline }) => {\n if (!rendered) return null;\n\n const innerContainerStyle = backgroundInline ? { ...backgroundInline } : null;\n return (\n <div className={classNames(sharedTheme.container, Style.container)}>\n <div\n className={classNames(sharedTheme.innerContainer, Style.innerContainer)}\n style={innerContainerStyle}\n >\n <div className={Style.content}>{children}</div>\n </div>\n </div>\n );\n};\n\nPlaybackError.propTypes = {\n sharedTheme: PropTypes.shape({}),\n rendered: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n backgroundInline: PropTypes.shape({}),\n};\n\nPlaybackError.defaultProps = {\n sharedTheme: {},\n rendered: false,\n children: null,\n backgroundInline: {},\n};\nexport default PlaybackError;\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Image from 'components/Image';\nimport { getPreviewPassWelcomeDelay } from 'helpers/ConfigHelper';\nimport { MILLISECONDS } from 'helpers/DateTimeHelper';\n\nconst PreviewPassWelcome = ({\n sharedTheme,\n networkLogo,\n children,\n rendered,\n dismiss,\n backgroundUrl,\n}) => {\n if (!rendered) return null;\n const [isRunning, setIsRunning] = useState(false);\n const delay = getPreviewPassWelcomeDelay();\n const innerContainerStyle = backgroundUrl && { backgroundImage: `url('${backgroundUrl}')` };\n const image = networkLogo && <Image source={networkLogo} className={sharedTheme.image} alt=\"\" />;\n const containerClass = classNames(sharedTheme.container, sharedTheme.container);\n const innerContainerClasses = classNames(sharedTheme.innerContainer, sharedTheme.innerContainer);\n const progressBarStyle = isRunning ? { transition: `width ${delay}s`, width: '100%' } : {};\n const progressBar = (\n <div className={sharedTheme.progress}>\n <div className={sharedTheme.done} style={progressBarStyle} />\n </div>\n );\n\n useEffect(() => {\n setIsRunning(true);\n setTimeout(dismiss, delay * MILLISECONDS);\n }, [delay, dismiss]);\n\n return (\n <div className={containerClass}>\n <div className={innerContainerClasses} style={innerContainerStyle}>\n <div className={sharedTheme.content}>\n {image}\n {children}\n {progressBar}\n </div>\n </div>\n </div>\n );\n};\n\nPreviewPassWelcome.propTypes = {\n sharedTheme: PropTypes.shape({}),\n networkLogo: PropTypes.string,\n rendered: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n backgroundUrl: PropTypes.string,\n dismiss: PropTypes.func,\n};\n\nPreviewPassWelcome.defaultProps = {\n sharedTheme: {},\n networkLogo: '',\n backgroundUrl: null,\n rendered: false,\n children: null,\n dismiss: () => {},\n};\n\nexport default PreviewPassWelcome;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { isEpgv2Enabled } from 'helpers/ConfigHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport Style from './ResumeWithProfile.module.scss';\n\nclass ResumeWithProfile extends Component {\n componentDidUpdate(prevProps) {\n const { isActive, onRender } = this.props;\n const { isActive: prevIsActive } = prevProps;\n if (!prevIsActive && isActive && onRender) onRender();\n }\n\n render() {\n const {\n backgroundInline,\n isActive,\n openSignIn,\n openSignUp,\n overlayText,\n perksHeader,\n playFromBeginning,\n profilePerks,\n theme,\n } = this.props;\n\n if (!isActive) return null;\n\n const { signInButtonText, signUpButtonText, restartButtonText, moreBenefitsText } = overlayText;\n const innerContainerStyle = backgroundInline && { ...backgroundInline };\n\n return (\n <div\n className={classNames(\n Style.resumeWithProfile,\n theme.resumeWithProfile,\n isEpgv2Enabled() && Style.resizablePlayer,\n )}\n Style={innerContainerStyle}\n >\n {perksHeader}\n <div className={Style.morePerksSeparator}>\n <div className={Style.morePerksBorder} />\n <div className={Style.morePerksText}>{moreBenefitsText}</div>\n <div className={Style.morePerksBorder} />\n </div>\n <div className={classNames(Style.profilePerkContainer, theme.profilePerkContainer)}>\n {profilePerks}\n </div>\n <div className={Style.actionButtonContainer}>\n <div className={Style.actionButtonInnerContainer}>\n <button onClick={openSignUp} className={classNames(Style.actionButtons, Style.primary)}>\n {signUpButtonText}\n </button>\n <button onClick={openSignIn} className={Style.actionButtons}>\n {signInButtonText}\n </button>\n </div>\n <button\n onClick={playFromBeginning}\n className={classNames(Style.actionButtons, Style.secondaryBtn)}\n >\n {restartButtonText}\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default ResumeWithProfile;\n\nResumeWithProfile.propTypes = {\n backgroundInline: PropTypes.shape({}),\n isActive: PropTypes.bool,\n onRender: PropTypes.func,\n openSignIn: PropTypes.func,\n openSignUp: PropTypes.func,\n overlayText: PropTypes.shape({}),\n perksHeader: PropTypes.node,\n playFromBeginning: PropTypes.func,\n profilePerks: PropTypes.arrayOf(PropTypes.node),\n theme: PropTypes.shape({}),\n};\n\nResumeWithProfile.defaultProps = {\n backgroundInline: {},\n isActive: false,\n onRender: null,\n openSignIn: noop,\n openSignUp: noop,\n overlayText: {},\n perksHeader: null,\n playFromBeginning: noop,\n profilePerks: [],\n theme: {},\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport Style from './ResumeWithoutProfile.module.scss';\n\nconst ResumeWithoutProfile = ({ isActive, theme, backgroundInline, play, restart }) => {\n const innerContainerStyle = backgroundInline && { ...backgroundInline };\n\n const { global_restartButton: labelRestart } = window.Language;\n\n return (\n isActive && (\n <div\n className={classNames(Style.resumeWithoutProfile, theme.resumeWithoutProfile)}\n style={innerContainerStyle}\n >\n <div className={Style.actionContainer}>\n <div className={Style.actionButton}>\n <a onClick={play} className={Style.actionLink}>\n <span className={Style.iconWrapper}>\n <Icon color=\"white\" icon=\"play-button\" size=\"large\" theme={Style} />\n </span>\n <span className={Style.buttonLabel}>Resume</span>\n </a>\n </div>\n <div className={Style.actionButton}>\n <a onClick={restart} className={Style.actionLink}>\n <span className={Style.iconWrapper}>\n <Icon color=\"white\" icon=\"restart\" size=\"large\" theme={Style} />\n </span>\n <span className={Style.buttonLabel}>{labelRestart}</span>\n </a>\n </div>\n </div>\n </div>\n )\n );\n};\n\nexport default ResumeWithoutProfile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport Image from 'components/Image';\n\nconst SignIn = ({\n theme,\n sharedTheme,\n buttonItem,\n buttonOnClick,\n imgSrc,\n children,\n rendered,\n backgroundInline,\n onClose,\n}) => {\n if (!rendered) return null;\n const innerContainerStyle = backgroundInline && { ...backgroundInline };\n const image = imgSrc && <Image source={imgSrc} className={theme.image} alt=\"\" />;\n const validButton = buttonItem || buttonOnClick;\n const button = validButton && (\n <button className={theme.button} onClick={buttonOnClick}>\n {buttonItem || ''}\n </button>\n );\n const closeButton = onClose && (\n <div className={theme.close} onClick={onClose} aria-label=\"close\">\n <Icon color=\"white\" icon=\"close\" size=\"large\" />\n </div>\n );\n const hasOnClose = onClose ? theme.hasOnClose : '';\n const containerClass = classNames(sharedTheme.container, theme.container);\n const innerContainerClasses = classNames(\n sharedTheme.innerContainer,\n theme.innerContainer,\n hasOnClose,\n );\n\n return (\n <div className={containerClass}>\n <div className={innerContainerClasses} style={innerContainerStyle}>\n {closeButton}\n <div className={theme.content}>\n {image}\n {children}\n {button}\n </div>\n </div>\n </div>\n );\n};\n\nSignIn.propTypes = {\n theme: PropTypes.shape({}),\n sharedTheme: PropTypes.shape({}),\n imgSrc: PropTypes.string,\n buttonItem: PropTypes.node,\n buttonOnClick: PropTypes.func,\n rendered: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n backgroundInline: PropTypes.shape({}),\n onClose: PropTypes.func,\n};\n\nSignIn.defaultProps = {\n theme: {},\n sharedTheme: {},\n imgSrc: '',\n buttonItem: null,\n buttonOnClick: () => {},\n rendered: false,\n children: null,\n backgroundInline: {},\n onClose: null,\n};\n\nexport default SignIn;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Image from 'components/Image';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport { redirectToExternalUrl, setPathForReEntryRedirect } from 'helpers/RouteHelper';\nimport Style from './UnlockUpsell.module.scss';\n\nconst UnlockUpsell = ({ buttonText = '', children, rendered = false }) => {\n if (!rendered) return null;\n const buttonOnClick = () => {\n const signUpUrl = window?.ExternalConfig?.externalPaymentUrlMonthly;\n handleAnalytics({\n event: Events.PURCHASE_CTA_CLICKED,\n payload: {\n page_item_title: buttonText,\n page_item_subtitle: '',\n page_action_location: 'uspell',\n page_button_text: buttonText,\n },\n });\n setPathForReEntryRedirect();\n redirectToExternalUrl(signUpUrl);\n };\n const button = (\n <button className={Style.button} onClick={buttonOnClick}>\n {buttonText}\n </button>\n );\n return (\n <div className={Style.container}>\n <div className={Style.imageContainer}>\n <Image source=\"/static/images/foxnation-freemium-background.png\" className={Style.image} />\n </div>\n <div className={Style.content}>\n {children}\n {button}\n </div>\n </div>\n );\n};\n\nUnlockUpsell.propTypes = {\n buttonText: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n rendered: PropTypes.bool,\n};\n\nexport default UnlockUpsell;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Overlay from 'components/Overlay';\n\n/**\n * Success Component\n * @param {Object} theme - Theme override sent through CSS Themr\n * @param {Object} sharedTheme - Theme override sent through CSS Themr for shared styling\n * @param {Node} children - any additional items: button, image, text, etc.\n * @param {Node} innerContainerChildren - any additional items: button, image, text, etc.\n * @param {Boolean} rendered - should this item render?\n * @returns {Component} - React Component\n */\n\nconst Success = ({\n backgroundClass,\n backgroundUrl,\n children,\n innerContainerChildren,\n innerContainerChildrenParams,\n rendered,\n sharedTheme,\n theme,\n}) => (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n innerContainerChildren={innerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n rendered={rendered}\n sharedTheme={sharedTheme}\n theme={theme}\n >\n {children}\n </Overlay>\n);\n\nSuccess.defaultProps = {\n backgroundClass: '',\n backgroundUrl: null,\n children: [],\n innerContainerChildren: () => {},\n innerContainerChildrenParams: {},\n rendered: false,\n sharedTheme: {},\n theme: {},\n};\n\nSuccess.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n backgroundClass: PropTypes.string,\n backgroundUrl: PropTypes.string,\n innerContainerChildren: PropTypes.func,\n innerContainerChildrenParams: PropTypes.shape({}),\n rendered: PropTypes.bool,\n sharedTheme: PropTypes.shape({}),\n theme: PropTypes.shape({}),\n};\n\nexport default Success;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Overlay from 'components/Overlay';\n\nconst UpsellConfirm = ({\n backgroundUrl,\n theme,\n sharedTheme,\n children,\n innerContainerChildren,\n rendered,\n backgroundClass,\n innerContainerChildrenParams,\n}) => (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n theme={theme}\n rendered={rendered}\n innerContainerChildren={innerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n >\n <div className={classNames(sharedTheme.innerContainer, theme.innerContainer)}>{children}</div>\n </Overlay>\n);\n\nUpsellConfirm.defaultProps = {\n backgroundUrl: null,\n sharedTheme: {},\n innerContainerChildrenParams: null,\n theme: null,\n children: null,\n innerContainerChildren: () => {},\n rendered: false,\n backgroundClass: '',\n};\n\nUpsellConfirm.propTypes = {\n backgroundUrl: PropTypes.string,\n theme: PropTypes.shape({}),\n sharedTheme: PropTypes.shape({}),\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n innerContainerChildren: PropTypes.func,\n rendered: PropTypes.bool,\n backgroundClass: PropTypes.string,\n innerContainerChildrenParams: PropTypes.shape({}),\n};\n\nexport default UpsellConfirm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Overlay from 'components/Overlay';\n\nconst UpsellError = ({\n backgroundClass,\n backgroundUrl,\n children,\n innerContainerChildren,\n innerContainerChildrenParams,\n rendered,\n sharedTheme,\n theme,\n}) => (\n <Overlay\n backgroundClass={backgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n theme={theme}\n rendered={rendered}\n innerContainerChildren={innerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n >\n <div className={classNames(sharedTheme.innerContainer, theme.innerContainer)}>{children}</div>\n </Overlay>\n);\n\nUpsellError.defaultProps = {\n backgroundUrl: null,\n sharedTheme: {},\n};\n\nUpsellError.propTypes = {\n backgroundClass: PropTypes.string,\n backgroundUrl: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n innerContainerChildren: PropTypes.func,\n innerContainerChildrenParams: PropTypes.shape({}),\n rendered: PropTypes.bool,\n sharedTheme: PropTypes.shape({}),\n theme: PropTypes.shape({}),\n};\n\nUpsellError.defaultProps = {\n backgroundClass: null,\n backgroundUrl: null,\n children: null,\n innerContainerChildren: () => {},\n innerContainerChildrenParams: {},\n rendered: false,\n sharedTheme: {},\n theme: {},\n};\n\nexport default UpsellError;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport ReactTimeout from 'react-timeout';\nimport _ from 'lodash';\nimport checkParentalControls from 'helpers/Pcs';\nimport {\n checkAuthentication,\n checkAuthenticationOnWindowFocus,\n checkPreviewPass,\n DEVICE_TYPE,\n getAuthentication,\n getEntitlements,\n getMetadata,\n isPreviewPass,\n} from 'helpers/auth.clientless';\nimport {\n OOM_LIVE_PLAYER_URL_COOKIE_NAME,\n getMVPDCookie,\n removeMVPDCookie,\n} from 'helpers/ContentHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { getCookie, setCookie, removeCookie } from 'helpers/Storage';\nimport { previewPass60MinDisabled } from 'helpers/ConfigHelper';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport { previewPassLogout } from 'helpers/AuthHelper';\nimport {\n OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT,\n OVERLAY_AUTH_MVPD_START,\n OVERLAY_AUTH_MVPD_SEARCH,\n OVERLAY_AUTH_SUCCESS,\n OVERLAY_AUTH_LOADING,\n OVERLAY_AUTH_FAILURE,\n OVERLAY_AUTH_UPSELL_ERROR,\n OVERLAY_AUTH_UPSELL_CONFIRM,\n defaultState,\n resetState,\n getAuthorizedResources,\n} from './AuthHelper';\nimport {\n CookiesBlocked,\n ExpiredPreviewPass,\n Failure,\n Loading,\n MVPDIncomplete,\n MVPDRetry,\n MVPDSearch,\n MVPDStart,\n MVPDUpsellRedirecting,\n MvpdDirectSignInRedirect,\n NotEntitled,\n PlaybackError,\n PreviewPassWelcome,\n ResumeWithProfile,\n ResumeWithoutProfile,\n SignIn,\n UnlockUpsell,\n Success,\n UpsellConfirm,\n UpsellError,\n} from './Overlays';\nimport { makeSelectAppPCS } from '../Account/AccountComponents/ParentalControls/selectors';\n\nconst REQUESTOR = 'fbc-fox';\nconst PREVIEW_PASS_5_MVPD = 'TempPass_fbcfox_5min';\nconst PREVIEW_PASS_60_MVPD = 'TempPass_fbcfox_60min';\nconst PREVIEW_PASS_TRIGGER = 'preview_pass';\nconst MANUAL_TRIGGER = 'manual';\nconst RESOURCE_FOX_NEWS = 'FoxNews';\nconst NETWORK_FNC = 'fnc';\n\nclass AuthClientless extends Component {\n static openMvpdWindow = () => window.open('', 'mvpdwindow', null, true);\n\n static closeMvpdWindow = window => {\n if (!window) return null;\n\n return window.close();\n };\n\n constructor(props) {\n super(props);\n this.state = defaultState;\n this.onProviderClick = this.onProviderClick.bind(this);\n this.renderMVPDStart = this.renderMVPDStart.bind(this);\n this.onSignInButtonClick = this.onSignInButtonClick.bind(this);\n this.previewPassLogout = previewPassLogout.bind(this);\n\n if (props.onRef) {\n props.onRef(this);\n }\n }\n\n async componentDidMount() {\n const {\n account,\n authorizationToken,\n anonymousId,\n anonymousLogin,\n showNoSportsOnMobileError,\n pcs,\n previewPassExpired,\n } = this.props;\n\n if (!authorizationToken) await anonymousLogin({ deviceId: anonymousId });\n\n const mvpdCookie = getMVPDCookie();\n const mvpdName = _.get(mvpdCookie, 'mvpd');\n const isPreviewPassMVPD = isPreviewPass(mvpdName);\n\n if (!_.isEmpty(pcs) || !account) {\n this.checkAuth();\n } else {\n this.setState({ waitingOnPcs: true });\n }\n\n if (mvpdCookie) {\n this.setState({ isAuthenticated: true }, () => {\n if (showNoSportsOnMobileError) this.setState({ renderNoSportsOnMobileError: true });\n\n if (isPreviewPassMVPD && previewPassExpired) {\n this.setState({\n renderExpiredPreviewPass: true,\n });\n }\n });\n }\n }\n\n // eslint-disable-next-line no-unused-react-component-methods/no-unused-react-component-methods\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n entitlementIssues: nextEntitlementIssues,\n mvpdSignInTrigger: nextMvpdSignInTrigger,\n previewPassExpired: nextPreviewPassExpired,\n requestSignIn,\n setVideoOverlay,\n videoId: nextVideoId,\n triggerAuthCheck: nextTriggerAuthCheck,\n } = nextProps;\n const {\n authenticationSelectProviderStarted,\n entitlementIssues,\n mvpdSignInTrigger,\n previewPassExpired,\n videoId,\n triggerAuthCheck,\n } = this.props;\n const { resumeWithProfileRendered } = this.state;\n const displayPreviewPassExpiredSlate =\n nextPreviewPassExpired && nextPreviewPassExpired !== previewPassExpired;\n\n if (nextTriggerAuthCheck && !triggerAuthCheck) {\n this.checkAuth();\n }\n\n if (videoId !== nextVideoId) {\n this.setState({ renderMVPDIncomplete: false, renderExpiredPreviewPass: false });\n }\n\n if (!resumeWithProfileRendered && requestSignIn) {\n this.setState({\n renderResumeWithProfile: true,\n loading: false,\n resumeWithProfileRendered: true,\n });\n setVideoOverlay(true);\n }\n\n if (resumeWithProfileRendered && !requestSignIn) {\n this.setState({\n renderResumeWithProfile: false,\n loading: false,\n resumeWithProfileRendered: false,\n });\n setVideoOverlay(false);\n }\n\n if (displayPreviewPassExpiredSlate) {\n this.setState({\n renderExpiredPreviewPass: true,\n renderResumeWithProfile: false,\n renderResume: false,\n signInTrigger: PREVIEW_PASS_TRIGGER,\n });\n setVideoOverlay(true);\n }\n\n if (nextMvpdSignInTrigger && nextMvpdSignInTrigger !== mvpdSignInTrigger) {\n authenticationSelectProviderStarted();\n this.onSignInButtonClick();\n }\n\n if (nextEntitlementIssues !== entitlementIssues) this.setAuthZError(nextEntitlementIssues);\n }\n\n // eslint-disable-next-line no-unused-react-component-methods/no-unused-react-component-methods\n UNSAFE_componentWillUpdate(nextProps, nextState) {\n const { renderSignIn: nextRenderSignIn } = nextState;\n const { renderCookiesBlocked: nextRenderCookiesBlocked } = nextProps;\n\n if (nextRenderCookiesBlocked && nextRenderSignIn) this.setState({ renderSignIn: false });\n }\n\n componentDidUpdate(prevProps, prevState) {\n const {\n account,\n contentRating,\n geoLocationDeclined,\n isLive,\n isLiveRestart,\n mvpdExpired,\n pcs,\n previewPassSignIn,\n requestSignIn,\n requiresAuth,\n requiresAuthLive,\n setPreAuthCheckComplete,\n setPreauthorizedResources,\n showNoSportsOnMobileError,\n singleProviderId,\n singleProviderSignInClicked,\n videoId,\n } = this.props;\n\n const {\n geoLocationDeclined: prevGeoLocationDeclined,\n isLive: prevIsLive,\n isLiveRestart: prevIsLiveRestart,\n mvpdExpired: prevMvpdExpired,\n previewPassSignIn: prevPreviewPassSignIn,\n requestSignIn: prevRequestSignIn,\n requiresAuth: prevRequiresAuth,\n requiresAuthLive: prevRequiresAuthLive,\n showNoSportsOnMobileError: prevShowNoSportsOnMobileError,\n singleProviderSignInClicked: prevSingleProviderSignInClicked,\n videoId: previousVideoId,\n } = prevProps;\n\n const { preauthorizedResources, renderSignIn, waitingOnPcs } = this.state;\n const { preauthorizedResources: prevPreauthorizedResources } = prevState;\n const geoLocationDeclinedChanged = prevGeoLocationDeclined !== geoLocationDeclined;\n\n if (previewPassSignIn && previewPassSignIn !== prevPreviewPassSignIn) {\n this.showProviders(PREVIEW_PASS_TRIGGER);\n }\n\n if (waitingOnPcs && !_.isEmpty(pcs)) {\n this.checkAuth();\n this.setState({ waitingOnPcs: false });\n }\n if (\n (prevPreauthorizedResources &&\n setPreauthorizedResources &&\n _.difference(prevPreauthorizedResources, preauthorizedResources).length) ||\n (!prevPreauthorizedResources && preauthorizedResources)\n ) {\n setPreauthorizedResources(preauthorizedResources);\n }\n\n if (prevShowNoSportsOnMobileError !== showNoSportsOnMobileError) {\n this.setState({ renderNoSportsOnMobileError: showNoSportsOnMobileError });\n }\n\n if (geoLocationDeclinedChanged) {\n this.setState({ renderGeoLocationError: geoLocationDeclined });\n this.checkAuth();\n }\n\n const profilePcsError = !checkParentalControls(account, contentRating, pcs);\n const contentRequiresAuth = (requiresAuthLive && isLive) || (requiresAuth && !isLive);\n const mvpdExpireChanged = prevMvpdExpired !== mvpdExpired;\n const videoIdChanged = videoId !== previousVideoId && !isLiveRestart;\n if (videoIdChanged || mvpdExpireChanged) {\n const prevContentRequiresAuth =\n (prevRequiresAuthLive && prevIsLive) || (prevRequiresAuth && !prevIsLive);\n const requiresAuthChanged = contentRequiresAuth !== prevContentRequiresAuth;\n const requestSignInChanged = prevRequestSignIn && !requestSignIn;\n const liveRestartChanged = prevIsLiveRestart !== isLiveRestart;\n const shouldRecheckAuth =\n liveRestartChanged ||\n mvpdExpireChanged ||\n profilePcsError ||\n requestSignInChanged ||\n requiresAuthChanged;\n if (shouldRecheckAuth) {\n this.onAuthCheckComplete({ complete: false, success: false });\n this.reset();\n this.checkAuth();\n } else {\n setPreAuthCheckComplete(true);\n }\n }\n\n if (!contentRequiresAuth && prevRequiresAuth && renderSignIn) {\n this.setState({ renderSignIn: false });\n }\n\n const didClickSingleProviderSignIn =\n singleProviderSignInClicked && !prevSingleProviderSignInClicked;\n if (didClickSingleProviderSignIn) this.onProviderClick(singleProviderId);\n }\n\n componentWillUnmount() {\n this.clearOverlays();\n this.onAuthCheckComplete({ complete: false, success: false });\n }\n\n onAuthCheckComplete({ complete, success }) {\n const {\n contentBlackoutActive,\n onAuthCheckComplete,\n requestSignIn,\n renderExpiredPreviewPass,\n setVideoOverlay,\n } = this.props;\n\n if (complete && success) {\n if (requestSignIn && !renderExpiredPreviewPass && !contentBlackoutActive) {\n setVideoOverlay(true);\n return this.setState({ renderResumeWithProfile: true, loading: false });\n }\n }\n\n return onAuthCheckComplete({ complete, success });\n }\n\n async onProviderClick(mvpdId, cookie) {\n const {\n authorizationToken,\n mvpdCookieName,\n onAuthFailure,\n setOverlay,\n setMVPDToAppState,\n handlePopInMiniPlayer,\n isLive,\n isMiniPlayerActive,\n requiresAuth,\n requiresAuthLive,\n resetSingleProviderSignInClicked,\n showSignIn,\n singleProviderId,\n useMVPDRetry,\n setTimeout,\n mvpd,\n mvpdLoginProfile,\n closeAccount,\n } = this.props;\n const { renderMVPDSearch, renderMVPDStart, successTimeout } = this.state;\n if (mvpdLoginProfile) closeAccount();\n\n const contentRequiresAuth = (requiresAuthLive && isLive) || (requiresAuth && !isLive);\n const authenticationConfig = this.getAuthenticationConfig({ mvpdId });\n const isPreviewPassMvpd =\n mvpd && (mvpd === PREVIEW_PASS_5_MVPD || mvpd === PREVIEW_PASS_60_MVPD);\n const mvpdWindow = AuthClientless.openMvpdWindow();\n let renderLoading = true;\n\n if (singleProviderId) {\n resetSingleProviderSignInClicked();\n renderLoading = false;\n }\n\n try {\n if (cookie) setCookie({ ...cookie });\n logEvent('onMVPDSignIn');\n let logoutResponse;\n if (isPreviewPassMvpd) {\n logoutResponse = await this.previewPassLogout();\n }\n const newAuthConfig = {\n ...authenticationConfig,\n accessToken: logoutResponse?.accessToken || authorizationToken,\n };\n const authenticationData = await getAuthentication(newAuthConfig);\n let authenticationUrl = _.get(authenticationData, 'authenticateURL');\n if (!authenticationUrl) {\n AuthClientless.closeMvpdWindow(mvpdWindow);\n return;\n }\n const deviceInfo = _.get(authenticationData, 'deviceInfo');\n if (deviceInfo) authenticationUrl = `${authenticationUrl}&device_info=${deviceInfo}`;\n mvpdWindow.location = authenticationUrl;\n if (renderMVPDStart) setOverlay(OVERLAY_AUTH_MVPD_START, false);\n if (renderMVPDSearch) setOverlay(OVERLAY_AUTH_MVPD_SEARCH, false);\n setOverlay(OVERLAY_AUTH_LOADING, true);\n this.setState({\n renderLoading,\n renderMVPDSearch: false,\n renderMVPDStart: false,\n renderMVPDRetry: false,\n renderSignIn: false,\n });\n const authResult = await checkAuthenticationOnWindowFocus(newAuthConfig);\n const mvpd = _.get(authResult, 'mvpd', null);\n if (!authResult || isPreviewPass(mvpd)) {\n setOverlay(OVERLAY_AUTH_LOADING, false);\n this.setState({\n renderLoading: false,\n renderMVPDIncomplete: true,\n });\n this.togglePreviewPassWelcome(false);\n return;\n }\n AuthClientless.closeMvpdWindow(mvpdWindow);\n const accessToken = _.get(authResult, 'accessToken', null);\n const getEntitlementsOptions = {\n ...authenticationConfig,\n accessToken,\n mvpdCookieName,\n setMVPDToAppState,\n };\n const providerClick = true;\n if (successTimeout) this.clearSuccessTimeOut();\n this.postAuth({ authResult, contentRequiresAuth, getEntitlementsOptions, providerClick });\n } catch (error) {\n console.log('MVPD Login Failure', error);\n const noErrorMessage = error === null;\n const message = error && _.isString(error) ? error : 'User did not authenticate';\n if (setOverlay) setOverlay(OVERLAY_AUTH_FAILURE, false);\n if (showSignIn && !useMVPDRetry) {\n this.setState({ renderFailure: true, renderSignIn: false, renderMVPDSearch: false });\n setTimeout(() => {\n this.setState({ renderFailure: false, renderSignIn: true, renderLoading: false });\n if (isMiniPlayerActive) handlePopInMiniPlayer();\n }, 3000);\n } else if (!singleProviderId) {\n this.setState({\n renderMVPDRetry: !noErrorMessage,\n renderMVPDStart: noErrorMessage,\n renderLoading: false,\n lastMVPDClicked: { mvpdId, cookie },\n });\n }\n onAuthFailure({ mvpdId, err: message });\n }\n }\n\n togglePreviewPassWelcome(value) {\n this.setState({ renderPreviewPassWelcome: value });\n }\n\n onSignInButtonClick() {\n const { signInOnButtonClick, setOverlay, profileId, setMVPDSignInTrigger } = this.props;\n\n setOverlay(OVERLAY_AUTH_MVPD_START, true);\n this.setState({\n renderMVPDIncomplete: false,\n renderSignIn: false,\n renderMVPDStart: true,\n previewPassSignIn: false,\n });\n signInOnButtonClick({ profileId });\n setMVPDSignInTrigger(false);\n }\n\n retryMVPDButtonClick = () => {\n const { lastMVPDClicked } = this.state;\n const { mvpdId, cookie } = lastMVPDClicked;\n this.onProviderClick(mvpdId, cookie);\n };\n\n setAuthZError(entitlementIssues) {\n const {\n authZErrorMapping,\n setAuthError,\n handlePopInMiniPlayer,\n isMiniPlayerActive,\n } = this.props;\n if (_.isEmpty(entitlementIssues)) {\n setAuthError(false);\n this.setState({ renderPlaybackError: false });\n return;\n }\n const statusCode = _.get(entitlementIssues, '0.statusCode');\n const errorCode = _.get(entitlementIssues, '0.errorCode');\n const defaultText = _.get(authZErrorMapping, 'default');\n const messageText = _.get(entitlementIssues, '0.message');\n const playbackErrorText = _.get(authZErrorMapping, `${statusCode}.${errorCode}`, defaultText);\n if (messageText) {\n playbackErrorText.header = messageText;\n }\n setAuthError(true);\n if (errorCode === 1005) {\n this.showProviders();\n } else {\n this.setState({ renderPlaybackError: true, playbackErrorText });\n if (isMiniPlayerActive) handlePopInMiniPlayer();\n }\n }\n\n setNoEntitlementsError() {\n const { handlePopInMiniPlayer, isMiniPlayerActive } = this.props;\n const { auth_noEntitlements: contentHeader } = window.Language;\n const playbackErrorText = { header: contentHeader };\n this.setState({ renderPlaybackError: true, playbackErrorText });\n if (isMiniPlayerActive) handlePopInMiniPlayer();\n }\n\n getPreviewPassConfig = (opts = {}) => {\n const { mvpdId } = opts;\n const {\n apiKey,\n authEndpointConfig,\n authorizationToken,\n deviceId,\n mvpdCookieName,\n setMVPDToAppState,\n } = this.props;\n return {\n authEndpointConfig: {\n ...authEndpointConfig,\n apiKey,\n },\n mvpdId,\n deviceId,\n accessToken: authorizationToken,\n mvpdCookieName,\n setMVPDToAppState,\n };\n };\n\n getAuthenticationConfig = (opts = {}) => {\n const { mvpdId } = opts;\n const {\n apiKey,\n authEndpointConfig,\n authenticationRedirectUrl,\n authorizationToken,\n deviceId,\n model,\n mvpdCookieName,\n osName,\n setMVPDToAppState,\n } = this.props;\n const isPreviewPassMvpd = mvpdId === PREVIEW_PASS_5_MVPD || mvpdId === PREVIEW_PASS_60_MVPD;\n const redirectUrl = isPreviewPassMvpd ? null : authenticationRedirectUrl;\n return {\n appVersion: DEVICE_TYPE,\n authEndpointConfig: {\n ...authEndpointConfig,\n apiKey,\n },\n deviceId,\n deviceType: DEVICE_TYPE,\n firstScreen: true,\n accessToken: authorizationToken,\n model,\n mvpdCookieName,\n mvpdId,\n osName,\n redirectUrl,\n requestor: REQUESTOR,\n setMVPDToAppState,\n };\n };\n\n clearOverlays = () => {\n const { setOverlay } = this.props;\n if (setOverlay) {\n const overlays = [\n OVERLAY_AUTH_MVPD_DIRECT_SIGN_IN_REDIRECT,\n OVERLAY_AUTH_MVPD_START,\n OVERLAY_AUTH_MVPD_SEARCH,\n OVERLAY_AUTH_SUCCESS,\n OVERLAY_AUTH_LOADING,\n OVERLAY_AUTH_FAILURE,\n OVERLAY_AUTH_UPSELL_ERROR,\n OVERLAY_AUTH_UPSELL_CONFIRM,\n ];\n overlays.forEach(overlay => setOverlay(overlay, false));\n }\n };\n\n showProviders(signInTrigger = MANUAL_TRIGGER) {\n const {\n handlePopInMiniPlayer,\n isMiniPlayerActive,\n mvpdExpired,\n setIsAuthenticated,\n setOverlay,\n showSignIn,\n } = this.props;\n const { renderExpiredPreviewPass } = this.state;\n this.reset();\n\n const nextState = {\n loading: false,\n previewPassSignIn: false,\n signInTrigger,\n };\n if (mvpdExpired) {\n if (!renderExpiredPreviewPass) {\n nextState.renderMVPDExpireSignIn = true;\n nextState.renderMVPDStart = false;\n nextState.renderExpiredPreviewPass = false;\n if (isMiniPlayerActive) handlePopInMiniPlayer();\n }\n } else if (showSignIn) {\n if (!renderExpiredPreviewPass) {\n nextState.renderSignIn = true;\n nextState.renderMVPDStart = false;\n nextState.renderExpiredPreviewPass = false;\n if (isMiniPlayerActive) handlePopInMiniPlayer();\n }\n } else {\n nextState.renderMVPDStart = true;\n nextState.renderSignIn = false;\n nextState.renderExpiredPreviewPass = false;\n setOverlay(OVERLAY_AUTH_MVPD_START, true);\n }\n this.setState(nextState, () => {\n if (signInTrigger !== PREVIEW_PASS_TRIGGER) {\n removeMVPDCookie({ options: { path: '/' } });\n setIsAuthenticated(false);\n }\n });\n }\n\n handleProfilePcsError() {\n const { setAuthError, setVideoOverlay, ratingNoAuthZText } = this.props;\n setAuthError(true);\n setVideoOverlay(true);\n this.setState({ renderProfilePcsError: true, playbackErrorText: ratingNoAuthZText });\n }\n\n async postAuth({ authResult, contentRequiresAuth, getEntitlementsOptions, providerClick }) {\n const {\n additionalAuthorizedNetworks,\n authorizationToken,\n blockSuccessScreen,\n isTveEnabled,\n network,\n onAuthSuccess,\n selectedChannel,\n setAuthorizationToken,\n setIsAuthenticated,\n setOverlay,\n setProvider,\n setToken,\n setVideoOverlay,\n showLoaderAfterAuth,\n showProvidersHandler,\n singleProviderId,\n successCookieName,\n type,\n } = this.props;\n const { renderMVPDSearch, renderMVPDStart, renderLoading } = this.state;\n const accessToken = _.get(authResult, 'accessToken');\n const isAuthenticated = !!accessToken;\n let metadata;\n\n setVideoOverlay(false);\n // If not authenticated, set state to false, otherwise wait\n // until entitlements are populated to update app isAuthed state\n if (!isAuthenticated) setIsAuthenticated(isAuthenticated);\n\n if (isAuthenticated) {\n const MVPD = _.get(authResult, 'mvpd');\n const provider = { MVPD };\n let getEntitlementsResult;\n setAuthorizationToken(accessToken);\n setProvider(MVPD);\n\n try {\n getEntitlementsResult = await getEntitlements(getEntitlementsOptions);\n } catch (error) {\n console.log('getEntitlements error', error);\n }\n\n const entitlements = _.get(getEntitlementsResult, 'entitlements', {});\n const preauthorizedResources = _.keys(entitlements);\n const hasFNCEntitlements = preauthorizedResources.includes(RESOURCE_FOX_NEWS);\n const isFNCContent = network === NETWORK_FNC;\n\n const authorizedResources = getAuthorizedResources(\n preauthorizedResources,\n additionalAuthorizedNetworks,\n );\n const nextState = {\n successResources: preauthorizedResources,\n preauthorizedResources: authorizedResources,\n renderMVPDSearch: false,\n renderMVPDStart: false,\n renderMVPDIncomplete: false,\n renderLoading: showLoaderAfterAuth,\n authResult,\n loading: false,\n isAuthenticated,\n };\n\n if (isFNCContent && !hasFNCEntitlements) {\n nextState.renderNotEntitled = true;\n this.setState(nextState);\n return;\n }\n\n setIsAuthenticated(isAuthenticated);\n\n try {\n metadata = await getMetadata(getEntitlementsOptions);\n const { hbaStatus } = metadata;\n setToken({ hbaStatus });\n } catch (error) {\n console.log('getMetadata error', error);\n }\n\n // LIVE/Restart (or VOD playbak initiated with releaseUrl instead of videoId)\n // When programs switch\n const { baseChannel } = this.state;\n\n // Since we would still want to check the parental controls\n // we should still do this check since different programs on the same channel\n // will have different ratings\n if (type === 'live' && baseChannel !== selectedChannel)\n nextState.baseChannel = selectedChannel;\n const cookie = getCookie({ name: successCookieName });\n\n let renderSuccessNext;\n\n if (cookie) {\n removeCookie({ key: successCookieName, options: { path: '/' } });\n const mvpdCookie = getMVPDCookie();\n const mvpd = _.get(mvpdCookie, 'mvpd', null);\n renderSuccessNext = !blockSuccessScreen && !isPreviewPass(mvpd);\n nextState.renderSuccess = renderSuccessNext;\n }\n\n this.setState(nextState, () => {\n if (!renderSuccessNext) this.onAuthCheckComplete({ complete: true, success: true });\n });\n\n if (setOverlay) {\n if (renderLoading) setOverlay(OVERLAY_AUTH_LOADING, false);\n if (renderSuccessNext) {\n setOverlay(OVERLAY_AUTH_SUCCESS, true);\n }\n if (renderMVPDStart) setOverlay(OVERLAY_AUTH_MVPD_START, false);\n if (renderMVPDSearch) setOverlay(OVERLAY_AUTH_MVPD_SEARCH, false);\n }\n\n onAuthSuccess({ provider, entitlements: authorizedResources, cookie, providerClick });\n showProvidersHandler({ show: false });\n } else if (contentRequiresAuth && !isTveEnabled) {\n this.onAuthCheckComplete({ complete: true, success: false });\n this.setNoEntitlementsError();\n } else if (contentRequiresAuth || !authorizationToken) {\n this.onAuthCheckComplete({ complete: true, success: false });\n if (!singleProviderId) {\n this.showProviders();\n showProvidersHandler({ show: true });\n }\n if (setOverlay && renderMVPDSearch) setOverlay(OVERLAY_AUTH_MVPD_SEARCH, false);\n this.setState({\n renderMVPDSearch: false,\n renderMVPDIncomplete: false,\n loading: false,\n isAuthenticated,\n });\n } else {\n this.onAuthCheckComplete({ complete: true, success: true });\n showProvidersHandler({ show: false });\n }\n }\n\n authenticatePreviewPass = (options = {}) =>\n new Promise(async resolve => {\n const { mvpdId } = options;\n try {\n const authenticationConfig = this.getPreviewPassConfig({ mvpdId });\n const authenticationData = await checkPreviewPass(authenticationConfig);\n resolve(authenticationData);\n } catch (e) {\n console.log(`Preview Pass ${mvpdId} Not Available`);\n resolve();\n }\n });\n\n tryPreviewPass = () =>\n new Promise(async (resolve, reject) => {\n try {\n const pass60minute = await this.authenticatePreviewPass({ mvpdId: PREVIEW_PASS_60_MVPD });\n if (pass60minute && !previewPass60MinDisabled()) return resolve(pass60minute);\n const pass5minute = await this.authenticatePreviewPass({ mvpdId: PREVIEW_PASS_5_MVPD });\n if (pass5minute) return resolve(pass5minute);\n throw new Error('Preview Passes Currently Unavailable');\n } catch (e) {\n return reject(e);\n }\n });\n\n async checkAuth() {\n const {\n apiKey,\n authEndpointConfig,\n authorizationToken,\n shouldCheckPreviewPass,\n deviceId,\n fetchMVPDProviders,\n isLive,\n isTveEnabled,\n contentRating,\n mvpdCookieName,\n geoLocationDeclined,\n account,\n selectedChannel,\n releaseURL,\n setMVPDToAppState,\n setPreAuthCheckComplete,\n setVideoOverlay,\n requiresAuth,\n requiresAuthLive,\n previewPassEnabled,\n pcs,\n } = this.props;\n setPreAuthCheckComplete(true);\n this.onAuthCheckComplete({ complete: false });\n const { baseChannel, successTimeOut } = this.state;\n const contentRequiresAuth = (requiresAuthLive && isLive) || (requiresAuth && !isLive);\n const profilePcsError = !checkParentalControls(account, contentRating, pcs);\n const isOutOfMarketLivePage = getCookie({ name: OOM_LIVE_PLAYER_URL_COOKIE_NAME });\n\n if (geoLocationDeclined && !isOutOfMarketLivePage) {\n setVideoOverlay(true);\n this.setState({ renderGeoLocationError: true, loading: false });\n return;\n }\n\n if (profilePcsError) {\n this.handleProfilePcsError();\n return;\n }\n\n if (isLive && !releaseURL && baseChannel !== selectedChannel) {\n this.setState({ baseChannel: null });\n }\n\n if (isTveEnabled) fetchMVPDProviders(deviceId);\n this.setState({ loading: true, renderPlaybackError: false });\n try {\n const checkAuthOptions = {\n authEndpointConfig: { ...authEndpointConfig, apiKey },\n deviceType: DEVICE_TYPE,\n requestor: REQUESTOR,\n deviceId,\n mvpdCookieName,\n accessToken: authorizationToken,\n setMVPDToAppState,\n };\n\n let checkAuthResult;\n let previewPass;\n\n try {\n if (isTveEnabled) checkAuthResult = await checkAuthentication(checkAuthOptions);\n } catch (error) {\n console.log('checkAuthentication failed', error);\n }\n\n try {\n const tryPreviewPass =\n !checkAuthResult &&\n contentRequiresAuth &&\n previewPassEnabled &&\n shouldCheckPreviewPass &&\n isTveEnabled;\n if (tryPreviewPass) {\n previewPass = await this.tryPreviewPass();\n }\n } catch (e) {\n console.log('preview pass failed', e);\n }\n\n const authResult = checkAuthResult || previewPass;\n const accessToken = _.get(authResult, 'accessToken');\n\n const getEntitlementsOptions = {\n ...checkAuthOptions,\n accessToken,\n mvpdCookieName,\n setMVPDToAppState,\n };\n\n if (successTimeOut) this.clearSuccessTimeOut();\n this.postAuth({ authResult, contentRequiresAuth, getEntitlementsOptions });\n } catch (error) {\n console.log('AuthClientless checkAuth error', error);\n }\n }\n\n reset() {\n const { setAuthError } = this.props;\n if (_.isEqual(this.state, resetState)) return;\n console.log('reset state');\n this.setState({ ...resetState });\n setAuthError(false);\n }\n\n startSuccessTimeOut() {\n const { setTimeout, setOverlay } = this.props;\n const successTimeOut = setTimeout(() => {\n setOverlay(OVERLAY_AUTH_SUCCESS, false);\n this.onAuthCheckComplete({ complete: true, success: true });\n this.setState({\n renderSuccess: false,\n authResult: null,\n });\n }, 3000);\n this.setState({ successTimeOut });\n }\n\n clearSuccessTimeOut() {\n const { successTimeOut } = this.state;\n const { clearTimeout } = this.props;\n clearTimeout(successTimeOut);\n this.setState({ successTimeOut: null });\n }\n\n renderSignIn() {\n const {\n authenticationSelectProviderStarted,\n background,\n backgroundInline,\n networkLogo,\n previewPassExpired,\n setSegmentPageStartSource,\n setOverlay,\n sharedTheme,\n showProvidersHandler,\n signInButtonText,\n signInInvertContent,\n signInPerks,\n signInText,\n signInTheme,\n } = this.props;\n const { renderSignIn, signInTrigger } = this.state;\n const onClose = () => {\n setOverlay(OVERLAY_AUTH_MVPD_START, false);\n this.setState(\n {\n renderSignIn: false,\n renderMVPDStart: false,\n renderResumeWithProfile: false,\n },\n () => {\n this.checkAuth();\n showProvidersHandler({ show: false, keepVideoPaused: false });\n },\n );\n };\n\n const signInClose =\n signInTrigger === PREVIEW_PASS_TRIGGER && !previewPassExpired ? onClose : undefined;\n\n let content = (\n <>\n {signInText}\n {signInPerks}\n </>\n );\n\n if (signInInvertContent) {\n content = (\n <>\n {signInPerks}\n {signInText}\n </>\n );\n }\n\n return (\n <SignIn\n key=\"signin\"\n rendered={renderSignIn}\n buttonOnClick={() => {\n setSegmentPageStartSource({ previewPassSignIn: true });\n authenticationSelectProviderStarted();\n this.onSignInButtonClick();\n }}\n onClose={signInClose}\n imgSrc={networkLogo}\n buttonItem={signInButtonText}\n backgroundInline={backgroundInline}\n bgImgSrc={background}\n theme={signInTheme}\n sharedTheme={sharedTheme}\n >\n {content}\n </SignIn>\n );\n }\n\n renderMVPDExpireSignIn() {\n const {\n authenticationSelectProviderStarted,\n background,\n backgroundInline,\n networkLogo,\n previewPassExpired,\n setSegmentPageStartSource,\n setOverlay,\n sharedTheme,\n showProvidersHandler,\n signInButtonText,\n signInInvertContent,\n signInPerks,\n signInTheme,\n } = this.props;\n const { profileMvpdExpired_header: expiredHeaderText } = window.Language;\n const { renderMVPDExpireSignIn, signInTrigger } = this.state;\n const onClose = () => {\n setOverlay(OVERLAY_AUTH_MVPD_START, false);\n this.setState(\n {\n renderMVPDExpireSignIn: false,\n renderMVPDStart: false,\n renderResumeWithProfile: false,\n },\n () => {\n this.checkAuth();\n showProvidersHandler({ show: false, keepVideoPaused: true });\n },\n );\n };\n const signInClose =\n signInTrigger === PREVIEW_PASS_TRIGGER && !previewPassExpired ? onClose : undefined;\n const content = signInInvertContent\n ? [signInPerks, expiredHeaderText]\n : [expiredHeaderText, signInPerks];\n return renderMVPDExpireSignIn ? (\n <div className={signInTheme.expiredMVPD}>\n <SignIn\n key=\"signin\"\n rendered={renderMVPDExpireSignIn}\n buttonOnClick={() => {\n setSegmentPageStartSource({ previewPassSignIn: true });\n authenticationSelectProviderStarted();\n this.onSignInButtonClick();\n }}\n onClose={signInClose}\n imgSrc={networkLogo}\n buttonItem={signInButtonText}\n backgroundInline={backgroundInline}\n bgImgSrc={background}\n theme={signInTheme}\n sharedTheme={sharedTheme}\n >\n {content}\n </SignIn>\n </div>\n ) : null;\n }\n\n renderUnlockUpsell() {\n const { unlockUpsellPerks, unlockUpsellText, unlockUpsellInButtonText } = this.props;\n const { renderUnlockUpsell } = this.state;\n return (\n <UnlockUpsell buttonText={unlockUpsellInButtonText} rendered={renderUnlockUpsell}>\n {unlockUpsellPerks}\n {unlockUpsellText}\n </UnlockUpsell>\n );\n }\n\n renderSuccess() {\n const {\n backgroundUrl,\n mvpd,\n mvpdStartBackgroundClass,\n sharedTheme,\n successInnerContainerChildren,\n successTheme,\n } = this.props;\n const { renderSuccess, successResources } = this.state;\n\n const innerContainerChildrenParams = {\n preauthorizedResources: successResources,\n mvpd,\n };\n\n return (\n <Success\n key=\"success\"\n rendered={renderSuccess}\n theme={successTheme}\n sharedTheme={sharedTheme}\n backgroundClass={mvpdStartBackgroundClass}\n backgroundUrl={backgroundUrl}\n innerContainerChildren={successInnerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n />\n );\n }\n\n renderMVPDUpsellRedirecting() {\n const {\n backgroundUrl,\n handlePopInMiniPlayer,\n isMiniPlayerActive,\n redirectingTheme,\n sharedTheme,\n redirectingInnerContainerChildren,\n redirectingBackgroundClass,\n redirectingOnClose,\n setOverlay,\n setVideoOverlay,\n } = this.props;\n const { renderMVPDUpsellRedirecting } = this.state;\n const onClose = () => {\n setOverlay(OVERLAY_AUTH_LOADING, false);\n this.setState({\n renderSignIn: false,\n renderMVPDUpsellRedirecting: false,\n renderMVPDStart: false,\n renderMVPDIncomplete: true,\n });\n if (isMiniPlayerActive) handlePopInMiniPlayer();\n setVideoOverlay(true);\n if (redirectingOnClose) redirectingOnClose();\n };\n const onConfirm = () => {\n const { upsellUrl } = this.state;\n const mvpdWindow = AuthClientless.openMvpdWindow();\n this.setState({\n renderUpsellConfirm: true,\n renderMVPDUpsellRedirecting: false,\n });\n setOverlay(OVERLAY_AUTH_UPSELL_CONFIRM);\n mvpdWindow.location = upsellUrl;\n };\n const innerContainerChildrenParams = { onClose, onConfirm };\n return (\n <MVPDUpsellRedirecting\n key=\"Redirecting\"\n rendered={renderMVPDUpsellRedirecting}\n theme={redirectingTheme}\n sharedTheme={sharedTheme}\n backgroundClass={redirectingBackgroundClass}\n backgroundUrl={backgroundUrl}\n innerContainerChildren={redirectingInnerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n />\n );\n }\n\n renderLoading() {\n const {\n backgroundUrl,\n loadingTheme,\n sharedTheme,\n loadingInnerContainerChildren,\n loadingBackgroundClass,\n setOverlay,\n setVideoOverlay,\n loadingOnClose,\n } = this.props;\n const { renderLoading } = this.state;\n const onClose = () => {\n const newState = {\n renderSignIn: false,\n renderLoading: false,\n renderMVPDStart: false,\n renderMVPDIncomplete: true,\n };\n\n this.setState(newState);\n setOverlay(OVERLAY_AUTH_LOADING, false);\n setVideoOverlay(true);\n if (loadingOnClose) loadingOnClose();\n };\n const innerContainerChildrenParams = { onClose };\n return (\n <Loading\n backgroundUrl={backgroundUrl}\n key=\"loading\"\n rendered={renderLoading}\n theme={loadingTheme}\n sharedTheme={sharedTheme}\n backgroundClass={loadingBackgroundClass}\n innerContainerChildren={loadingInnerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n />\n );\n }\n\n renderFailure() {\n const { failureTheme, sharedTheme, contentChildren, backgroundInline } = this.props;\n const { renderFailure } = this.state;\n const onConfirmClick = () => {\n this.setState({\n renderFailure: false,\n });\n };\n const contentChildrenParams = { onConfirmClick };\n return (\n <Failure\n key=\"failure\"\n rendered={renderFailure}\n theme={failureTheme}\n sharedTheme={sharedTheme}\n contentChildren={contentChildren}\n contentChildrenParams={contentChildrenParams}\n backgroundInline={backgroundInline}\n />\n );\n }\n\n renderCookiesBlocked() {\n const {\n sharedTheme,\n getCookiesBlockedChildren,\n cookiesBlockedTheme,\n backgroundInline,\n renderCookiesBlocked,\n signInButtonText,\n resetShowCookiesBlocked,\n } = this.props;\n return (\n <CookiesBlocked\n options={{\n key: 'cookies-blocked',\n rendered: renderCookiesBlocked,\n theme: cookiesBlockedTheme,\n sharedTheme,\n backgroundInline,\n onSignInButtonClick: this.onSignInButtonClick,\n signInButtonText,\n resetShowCookiesBlocked,\n getChildren: getCookiesBlockedChildren,\n }}\n />\n );\n }\n\n renderPlaybackError() {\n const { playbackErrorTheme, sharedTheme, playbackErrorChildren, backgroundInline } = this.props;\n const { renderPlaybackError, playbackErrorText } = this.state;\n return (\n <PlaybackError\n key=\"playback-error\"\n rendered={renderPlaybackError}\n theme={playbackErrorTheme}\n sharedTheme={sharedTheme}\n backgroundInline={backgroundInline}\n className=\"dcg-playback-error\"\n >\n {playbackErrorChildren({ errorText: playbackErrorText })}\n </PlaybackError>\n );\n }\n\n renderGeoLocationError() {\n const {\n playbackErrorTheme,\n sharedTheme,\n geoLocationErrorChildren,\n backgroundInline,\n geoLocationText,\n geoLocationTimeoutFail,\n geoLocationPrimaryActionCallback,\n } = this.props;\n const { renderGeoLocationError } = this.state;\n\n if (!geoLocationErrorChildren) return null;\n\n return (\n <PlaybackError\n key=\"geolocation-error\"\n rendered={renderGeoLocationError}\n theme={playbackErrorTheme}\n sharedTheme={sharedTheme}\n backgroundInline={backgroundInline}\n className=\"dcg-playback-error\"\n >\n {geoLocationErrorChildren({\n errorText: geoLocationText,\n primaryActionCallback: geoLocationPrimaryActionCallback,\n geoLocationTimeoutFail,\n })}\n </PlaybackError>\n );\n }\n\n renderProfilePcsError() {\n const {\n profilePcsErrorTheme,\n sharedTheme,\n profilePcsErrorChildren,\n backgroundInline,\n } = this.props;\n const { renderProfilePcsError, playbackErrorText } = this.state;\n\n return (\n <PlaybackError\n key=\"profile-pcs-error\"\n rendered={renderProfilePcsError}\n theme={profilePcsErrorTheme}\n sharedTheme={sharedTheme}\n backgroundInline={backgroundInline}\n className=\"dcg-playback-error\"\n >\n {profilePcsErrorChildren({ errorText: playbackErrorText })}\n </PlaybackError>\n );\n }\n\n /**\n * No soup for you! :-(\n */\n renderNoSportsOnMobile() {\n const {\n playbackErrorTheme,\n sharedTheme,\n noSportsOnMobileErrorChildren,\n backgroundInline,\n noSportsText,\n } = this.props;\n const { renderNoSportsOnMobileError } = this.state;\n\n if (!noSportsOnMobileErrorChildren) return null;\n\n return (\n <PlaybackError\n key=\"nosportsonmobile-error\"\n rendered={renderNoSportsOnMobileError}\n theme={playbackErrorTheme}\n sharedTheme={sharedTheme}\n backgroundInline={backgroundInline}\n className=\"dcg-playback-error\"\n >\n {noSportsOnMobileErrorChildren({ errorText: noSportsText })}\n </PlaybackError>\n );\n }\n\n renderMVPDStart() {\n // TODO: refactor out mvpd start + mvpd search and replace with video provider search if the optimizely test switches to become the default user experience\n const {\n authenticationStarted,\n backgroundUrl,\n isLive,\n isMobile,\n isTablet,\n mvpdSignInTrigger,\n mvpdStartBackgroundClass,\n mvpdStartChildren,\n mvpdStartInnerContainerChildren,\n mvpdStartOnClose,\n previewPassExpired,\n previewPassSignIn,\n profileId,\n renderVideoProviderSearch,\n selectedChannel,\n setMVPDSignInTrigger,\n setOverlay,\n setVideoOverlay,\n sharedTheme,\n tealiumAuthenticationStarted,\n tvProviderFeatListViewed,\n } = this.props;\n const { renderMVPDStart, preauthorizedResources } = this.state;\n const useOptimizelyExperiment =\n window.optimizelyQuickMvpdFlow && !isMobile && !isTablet && renderMVPDStart;\n const shouldShowOverlays = !mvpdSignInTrigger;\n\n const onClose = () => {\n const newState = {\n renderSignIn: false,\n renderMVPDStart: false,\n renderMVPDIncomplete: shouldShowOverlays,\n };\n\n this.setState(newState);\n\n setOverlay(OVERLAY_AUTH_MVPD_START, false);\n setVideoOverlay(shouldShowOverlays);\n setMVPDSignInTrigger(false);\n if (mvpdStartOnClose) mvpdStartOnClose();\n };\n\n if (useOptimizelyExperiment) {\n return renderVideoProviderSearch({\n onClose,\n onProviderClick: this.onProviderClick,\n selectedChannel,\n isLive,\n preauthorizedResources,\n previewPassSignIn,\n previewPassExpired,\n profileId,\n });\n }\n\n const onAllProvidersClick = () => {\n setOverlay(OVERLAY_AUTH_MVPD_SEARCH, true);\n this.setState({\n renderMVPDStart: false,\n renderMVPDSearch: true,\n renderMVPDIncomplete: false,\n });\n };\n\n const innerContainerChildrenParams = { onClose };\n\n return (\n <MVPDStart\n key=\"start\"\n rendered={renderMVPDStart}\n sharedTheme={sharedTheme}\n backgroundClass={mvpdStartBackgroundClass}\n backgroundUrl={backgroundUrl}\n innerContainerChildren={mvpdStartInnerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n tvProviderFeatListViewed={tvProviderFeatListViewed}\n authenticationStarted={authenticationStarted}\n tealiumAuthenticationStarted={tealiumAuthenticationStarted}\n >\n {mvpdStartChildren({\n onProviderClick: this.onProviderClick,\n onAllProvidersClick,\n onClose,\n selectedChannel,\n })}\n </MVPDStart>\n );\n }\n\n renderMVPDSearch() {\n const {\n backgroundUrl,\n isLive,\n mvpdSearchBackgroundClass,\n mvpdSearchChildren,\n mvpdSearchInnerContainerChildren,\n mvpdSearchInput,\n mvpdSearchOnClose,\n mvpdSearchOnInputChange,\n mvpdSearchResults,\n mvpdSearchTheme,\n previewPassExpired,\n previewPassSignIn,\n profileId,\n renderVideoProviderSearch,\n selectedChannel,\n setOverlay,\n setVideoOverlay,\n sharedTheme,\n tvProviderFullListViewed,\n } = this.props;\n\n const { renderMVPDSearch, preauthorizedResources } = this.state;\n const shouldRenderProviderSearch = false;\n const onClose = () => {\n const newState = {\n renderSignIn: false,\n renderMVPDSearch: false,\n renderMVPDIncomplete: true,\n };\n\n this.setState(newState);\n setOverlay(OVERLAY_AUTH_MVPD_SEARCH, false);\n setVideoOverlay(true);\n if (mvpdSearchOnClose) mvpdSearchOnClose();\n };\n\n if (shouldRenderProviderSearch) {\n return renderVideoProviderSearch({\n backgroundUrl,\n onClose,\n onProviderClick: this.onProviderClick,\n selectedChannel,\n isLive,\n preauthorizedResources,\n previewPassSignIn,\n previewPassExpired,\n profileId,\n });\n }\n\n const onBack = () => {\n setOverlay(OVERLAY_AUTH_MVPD_START, true);\n this.setState({\n renderMVPDStart: true,\n renderMVPDSearch: false,\n renderMVPDIncomplete: false,\n });\n };\n\n const innerContainerChildrenParams = { onClose };\n return (\n <MVPDSearch\n key=\"search\"\n rendered={renderMVPDSearch}\n sharedTheme={sharedTheme}\n backgroundClass={mvpdSearchBackgroundClass}\n backgroundUrl={backgroundUrl}\n theme={mvpdSearchTheme}\n innerContainerChildren={mvpdSearchInnerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n searchResults={mvpdSearchResults}\n searchInput={mvpdSearchInput}\n selectedChannel={selectedChannel}\n onInputChange={mvpdSearchOnInputChange}\n onResultClick={this.onProviderClick}\n onBackClick={onBack}\n tvProviderFullListViewed={tvProviderFullListViewed}\n >\n {mvpdSearchChildren}\n </MVPDSearch>\n );\n }\n\n renderMVPDIncomplete() {\n const {\n authenticationSelectProviderStarted,\n backgroundInline,\n blockMVPDIncomplete,\n mvpdIncompleteChildren,\n mvpdIncompleteTheme,\n previewPassExpired,\n previewPassSignIn,\n setOverlay,\n setSegmentPageStartSource,\n sharedTheme,\n showProvidersHandler,\n } = this.props;\n const { renderMVPDIncomplete } = this.state;\n\n const onClose = () => {\n setOverlay(OVERLAY_AUTH_MVPD_START, false);\n this.setState(\n {\n renderMVPDIncomplete: false,\n renderSignIn: false,\n renderIframe: false,\n renderMVPDStart: false,\n renderResumeWithProfile: false,\n previewPassSignIn: false,\n },\n () => {\n this.checkAuth();\n showProvidersHandler({ show: false, keepVideoPaused: false });\n },\n );\n };\n\n const signInClose = previewPassSignIn && !previewPassExpired ? onClose : undefined;\n return (\n <MVPDIncomplete\n isActive={!blockMVPDIncomplete && renderMVPDIncomplete}\n onClose={signInClose}\n backgroundInline={backgroundInline}\n sharedTheme={sharedTheme}\n mvpdIncompleteTheme={mvpdIncompleteTheme}\n mvpdIncompleteChildren={mvpdIncompleteChildren}\n buttonOnClick={() => {\n setSegmentPageStartSource({ MVPDIncomplete: true });\n authenticationSelectProviderStarted();\n this.onSignInButtonClick();\n }}\n />\n );\n }\n\n renderMVPDRetry() {\n const {\n backgroundInline,\n backgroundUrl,\n loadingBackgroundClass,\n loadingOnClose,\n mvpdRetryChildren,\n mvpdRetryTheme,\n sharedTheme,\n } = this.props;\n const { renderMVPDRetry } = this.state;\n const onClose = () => {\n const newState = {\n renderSignIn: false,\n renderLoading: false,\n renderMVPDStart: false,\n renderMVPDRetry: false,\n };\n\n this.setState(newState);\n if (loadingOnClose) loadingOnClose();\n };\n\n const returnToMVPDSelect = () => {\n this.setState({\n renderMVPDRetry: false,\n renderMVPDStart: true,\n });\n };\n\n return (\n <MVPDRetry\n isActive={renderMVPDRetry}\n onCloseClick={onClose}\n buttonOnClick={onClose}\n backgroundInline={backgroundInline}\n backgroundClass={loadingBackgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n mvpdRetryTheme={mvpdRetryTheme}\n mvpdRetryChildren={mvpdRetryChildren}\n retryButtonClick={this.retryMVPDButtonClick}\n otherProviderClick={returnToMVPDSelect}\n />\n );\n }\n\n renderNotEntitled() {\n const {\n backgroundInline,\n backgroundUrl,\n loadingBackgroundClass,\n loadingOnClose,\n notEntitledChildren,\n notEntitledTheme,\n sharedTheme,\n } = this.props;\n const { renderNotEntitled } = this.state;\n const onClose = () => {\n this.setState({\n renderSignIn: false,\n renderLoading: false,\n renderMVPDStart: false,\n renderMVPDRetry: false,\n renderNotEntitled: false,\n });\n if (loadingOnClose) loadingOnClose();\n };\n\n return (\n <NotEntitled\n isActive={renderNotEntitled}\n onCloseClick={onClose}\n backgroundInline={backgroundInline}\n backgroundClass={loadingBackgroundClass}\n backgroundUrl={backgroundUrl}\n sharedTheme={sharedTheme}\n notEntitledTheme={notEntitledTheme}\n notEntitledChildren={notEntitledChildren}\n />\n );\n }\n\n renderExpiredPreviewPass() {\n const {\n authenticationSelectProviderStarted,\n setOverlay,\n previewPassOnOpenOverlay,\n backgroundInline,\n setSegmentPageStartSource,\n sharedTheme,\n } = this.props;\n const { renderExpiredPreviewPass } = this.state;\n const openOverlay = () => {\n if (previewPassOnOpenOverlay) previewPassOnOpenOverlay();\n setOverlay(OVERLAY_AUTH_MVPD_START, true);\n setSegmentPageStartSource({ previewPassExpired: true });\n authenticationSelectProviderStarted();\n this.setState({\n renderMVPDStart: true,\n renderMVPDSearch: false,\n renderExpiredPreviewPass: false,\n });\n };\n\n return (\n <ExpiredPreviewPass\n setOverlay={setOverlay}\n openOverlay={openOverlay}\n isActive={renderExpiredPreviewPass}\n backgroundInline={backgroundInline}\n sharedTheme={sharedTheme}\n />\n );\n }\n\n renderResumeWithProfile() {\n const {\n backgroundInline,\n moreBenefitsText,\n onResumeWithProfileShownAnalytics,\n perksHeader,\n profilePerks,\n profileSignInTheme,\n restartButtonText,\n resumeWithProfileConfig,\n resumeWithProfileOpenSignIn,\n resumeWithProfileOpenSignUp,\n signInButtonText,\n signUpButtonText,\n } = this.props;\n const { renderResumeWithProfile } = this.state;\n\n const playFromBeginning = _.get(resumeWithProfileConfig, 'playFromBeginning', null);\n\n const overlayText = {\n signInButtonText,\n signUpButtonText,\n restartButtonText,\n moreBenefitsText,\n };\n\n return (\n <ResumeWithProfile\n backgroundInline={backgroundInline}\n isActive={renderResumeWithProfile}\n theme={profileSignInTheme}\n perksHeader={perksHeader}\n profilePerks={profilePerks}\n overlayText={overlayText}\n openSignIn={resumeWithProfileOpenSignIn}\n openSignUp={resumeWithProfileOpenSignUp}\n playFromBeginning={playFromBeginning}\n onRender={onResumeWithProfileShownAnalytics}\n />\n );\n }\n\n renderResumeWithoutProfile() {\n const { resumeWithProfileConfig, showResumeCTA } = this.props;\n const restart = _.get(resumeWithProfileConfig, 'playFromBeginning', null);\n const play = _.get(resumeWithProfileConfig, 'play', null);\n\n return <ResumeWithoutProfile restart={restart} play={play} isActive={showResumeCTA} />;\n }\n\n renderUpsellError() {\n const {\n backgroundUrl,\n setOverlay,\n sharedTheme,\n upsellErrorTheme,\n upsellErrorChildren,\n upsellErrorBackgroundClass,\n upsellErrorInnerContainerChildren,\n upsellErrorOnClose,\n } = this.props;\n const { renderUpsellError, upsellConfirmClicked, upsellUrl } = this.state;\n const onClose = () => {\n if (upsellErrorOnClose) upsellErrorOnClose();\n };\n const innerContainerChildrenParams = { onClose };\n\n const onClickConfirmError = () => {\n const mvpdWindow = AuthClientless.openMvpdWindow();\n this.setState({\n renderUpsellConfirm: true,\n renderUpsellError: false,\n });\n setOverlay(OVERLAY_AUTH_UPSELL_ERROR, false);\n setOverlay(OVERLAY_AUTH_UPSELL_CONFIRM);\n mvpdWindow.location = upsellUrl;\n return mvpdWindow;\n };\n const upsellErrorChildrenProps = {\n onClick: upsellConfirmClicked ? onClickConfirmError : upsellErrorOnClose,\n upsellConfirmClicked,\n };\n\n return (\n <UpsellError\n key=\"upsellError\"\n rendered={renderUpsellError}\n sharedTheme={sharedTheme}\n backgroundClass={upsellErrorBackgroundClass}\n backgroundUrl={backgroundUrl}\n theme={upsellErrorTheme}\n innerContainerChildren={upsellErrorInnerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n >\n {upsellErrorChildren(upsellErrorChildrenProps)}\n </UpsellError>\n );\n }\n\n renderUpsellConfirm() {\n const {\n backgroundUrl,\n setOverlay,\n sharedTheme,\n upsellConfirmTheme,\n upsellConfirmChildren,\n upsellConfirmBackgroundClass,\n upsellConfirmInnerContainerChildren,\n upsellConfirmOnClose,\n } = this.props;\n const { renderUpsellConfirm } = this.state;\n const onClose = () => {\n if (upsellConfirmOnClose) upsellConfirmOnClose();\n };\n const onClick = () => {\n setOverlay(OVERLAY_AUTH_UPSELL_CONFIRM, false);\n setOverlay(OVERLAY_AUTH_MVPD_START);\n this.setState({\n renderUpsellConfirm: false,\n renderMVPDStart: true,\n renderLoading: false,\n upsellConfirmClicked: true,\n });\n };\n const innerContainerChildrenParams = { onClose };\n return (\n <UpsellConfirm\n key=\"upsellConfirm\"\n rendered={renderUpsellConfirm}\n sharedTheme={sharedTheme}\n backgroundClass={upsellConfirmBackgroundClass}\n backgroundUrl={backgroundUrl}\n theme={upsellConfirmTheme}\n innerContainerChildren={upsellConfirmInnerContainerChildren}\n innerContainerChildrenParams={innerContainerChildrenParams}\n >\n {upsellConfirmChildren({ onClick })}\n </UpsellConfirm>\n );\n }\n\n renderMvpdDirectSignInRedirect() {\n const {\n backgroundUrl,\n setOverlay,\n sharedTheme,\n mvpdDirectSignInTheme,\n mvpdDirectSignInChildren,\n mvpdDirectSignInBackgroundClass,\n mvpdDirectSignInInnerContainerChildren,\n } = this.props;\n const { mvpdBuythroughData, renderMvpdDirectSignInRedirect } = this.state;\n const onUpgradeClick = () => {\n const upsellUrl = _.get(mvpdBuythroughData, 'url');\n const mvpdWindow = AuthClientless.openMvpdWindow();\n this.setState({\n renderUpsellConfirm: true,\n renderMvpdDirectSignInRedirect: false,\n });\n setOverlay(OVERLAY_AUTH_UPSELL_CONFIRM);\n mvpdWindow.location = upsellUrl;\n };\n\n return (\n <MvpdDirectSignInRedirect\n key=\"mvpdDirectSignInRedirect\"\n rendered={renderMvpdDirectSignInRedirect}\n sharedTheme={sharedTheme}\n backgroundClass={mvpdDirectSignInBackgroundClass}\n backgroundUrl={backgroundUrl}\n theme={mvpdDirectSignInTheme}\n innerContainerChildren={mvpdDirectSignInInnerContainerChildren}\n >\n {mvpdDirectSignInChildren({ onUpgradeClick })}\n </MvpdDirectSignInRedirect>\n );\n }\n\n renderPreviewPassWelcome() {\n const { renderPreviewPassWelcome } = this.state;\n const {\n previewPassWelcomeText,\n previewPassWelcomeNetworkLogo,\n mvpd,\n backgroundUrl,\n } = this.props;\n if (!renderPreviewPassWelcome) return null;\n return (\n <PreviewPassWelcome\n key=\"previewPassWelcome\"\n rendered={renderPreviewPassWelcome}\n networkLogo={previewPassWelcomeNetworkLogo}\n dismiss={() => this.togglePreviewPassWelcome(false)}\n mvpd={mvpd}\n backgroundUrl={backgroundUrl}\n >\n {previewPassWelcomeText({ mvpd })}\n </PreviewPassWelcome>\n );\n }\n\n render() {\n const cookiesBlocked = this.renderCookiesBlocked();\n const expiredPreviewPass = this.renderExpiredPreviewPass();\n const failure = this.renderFailure();\n const geoLocationError = this.renderGeoLocationError();\n const loading = this.renderLoading();\n const mvpdDirectSignInRedirect = this.renderMvpdDirectSignInRedirect();\n const mvpdIncomplete = this.renderMVPDIncomplete();\n const mvpdRetry = this.renderMVPDRetry();\n const mvpdSearch = this.renderMVPDSearch();\n const mvpdStart = this.renderMVPDStart();\n const noSportsOnMobile = this.renderNoSportsOnMobile();\n const notEntitled = this.renderNotEntitled();\n const playbackError = this.renderPlaybackError();\n const profilePcsError = this.renderProfilePcsError();\n const redirectingMVPDUpsell = this.renderMVPDUpsellRedirecting();\n const resumeWithProfile = this.renderResumeWithProfile();\n const resumeWithoutProfile = this.renderResumeWithoutProfile();\n const signIn = this.renderSignIn();\n const mvpdExpire = this.renderMVPDExpireSignIn();\n const unlockUpsell = this.renderUnlockUpsell();\n const success = this.renderSuccess();\n const upsellConfirm = this.renderUpsellConfirm();\n const upsellError = this.renderUpsellError();\n const previewPassWelcome = this.renderPreviewPassWelcome();\n\n return (\n <div>\n {resumeWithProfile}\n {resumeWithoutProfile}\n {cookiesBlocked}\n {expiredPreviewPass}\n {geoLocationError}\n {mvpdDirectSignInRedirect}\n {mvpdSearch}\n {mvpdStart}\n {mvpdRetry}\n {mvpdIncomplete}\n {noSportsOnMobile}\n {notEntitled}\n {playbackError}\n {unlockUpsell}\n {signIn}\n {mvpdExpire}\n {success}\n {loading}\n {profilePcsError}\n {redirectingMVPDUpsell}\n {failure}\n {upsellConfirm}\n {upsellError}\n {previewPassWelcome}\n </div>\n );\n }\n}\n\nAuthClientless.defaultProps = {\n account: null,\n anonymousAccount: null,\n additionalAuthorizedNetworks: {},\n anonymousId: '',\n anonymousLogin: null,\n authEndpointConfig: null,\n authenticationRedirectUrl: null,\n authenticationSelectProviderStarted: noop,\n authenticationStarted: noop,\n authorizationToken: '',\n authZErrorMapping: {},\n background: '',\n backgroundInline: null,\n backgroundUrl: null,\n blockMVPDIncomplete: false,\n blockSuccessScreen: false,\n clearTimeout: null,\n closeAccount: null,\n contentBlackoutActive: null,\n contentChildren: null,\n contentRating: null,\n cookiesBlockedTheme: {},\n entitlementIssues: null,\n failureTheme: {},\n fetchMVPDProviders: noop,\n geoLocationDeclined: null,\n geoLocationErrorChildren: null,\n geoLocationPrimaryActionCallback: noop,\n geoLocationText: '',\n geoLocationTimeoutFail: null,\n getCookiesBlockedChildren: null,\n isLive: false,\n isLiveRestart: null,\n isMobile: null,\n isTablet: null,\n isTveEnabled: true,\n loadingBackgroundClass: null,\n loadingInnerContainerChildren: null,\n loadingOnClose: null,\n loadingTheme: {},\n model: '',\n moreBenefitsText: '',\n mvpd: '',\n mvpdDirectSignInBackgroundClass: '',\n mvpdDirectSignInChildren: null,\n mvpdDirectSignInInnerContainerChildren: noop,\n mvpdDirectSignInTheme: {},\n mvpdExpired: false,\n mvpdIncompleteChildren: null,\n mvpdIncompleteTheme: {},\n mvpdLoginProfile: null,\n mvpdRetryChildren: null,\n mvpdRetryTheme: {},\n mvpdSearchBackgroundClass: '',\n mvpdSearchChildren: null,\n mvpdSearchInnerContainerChildren: null,\n mvpdSearchInput: noop,\n mvpdSearchOnClose: null,\n mvpdSearchOnInputChange: null,\n mvpdSearchResults: noop,\n mvpdSearchTheme: {},\n mvpdSignInTrigger: false,\n mvpdStartBackgroundClass: '',\n mvpdStartChildren: null,\n mvpdStartInnerContainerChildren: null,\n mvpdStartOnClose: noop,\n network: '',\n networkLogo: '',\n noSportsOnMobileErrorChildren: null,\n noSportsText: {},\n notEntitledChildren: null,\n notEntitledTheme: {},\n onAuthCheckComplete: null,\n onAuthFailure: noop,\n onAuthSuccess: null,\n onRef: null,\n onResumeWithProfileShownAnalytics: null,\n osName: '',\n perksHeader: null,\n playbackErrorChildren: null,\n playbackErrorTheme: {},\n previewPassEnabled: null,\n previewPassExpired: false,\n previewPassOnOpenOverlay: null,\n previewPassSignIn: false,\n previewPassWelcomeText: noop,\n previewPassWelcomeNetworkLogo: '',\n profileId: '',\n profilePcsErrorChildren: null,\n profilePcsErrorTheme: {},\n profilePerks: [],\n profileSignInTheme: {},\n ratingNoAuthZText: {},\n redirectingBackgroundClass: '',\n redirectingInnerContainerChildren: null,\n redirectingOnClose: null,\n redirectingTheme: {},\n releaseURL: '',\n renderCookiesBlocked: false,\n renderExpiredPreviewPass: false,\n renderVideoProviderSearch: null,\n requestSignIn: false,\n requiresAuth: null,\n requiresAuthLive: null,\n resetShowCookiesBlocked: null,\n resetSingleProviderSignInClicked: null,\n restartButtonText: '',\n resumeWithProfileConfig: {},\n resumeWithProfileOpenSignIn: null,\n resumeWithProfileOpenSignUp: null,\n selectedChannel: null,\n setAuthError: noop,\n setAuthorizationToken: noop,\n setIsAuthenticated: noop,\n setSegmentPageStartSource: noop,\n setMVPDSignInTrigger: null,\n setMVPDToAppState: null,\n setPreAuthCheckComplete: noop,\n setPreauthorizedResources: noop,\n setProvider: noop,\n setTimeout: null,\n setToken: null,\n setVideoOverlay: noop,\n sharedTheme: {},\n shouldCheckPreviewPass: null,\n showLoaderAfterAuth: false,\n showNoSportsOnMobileError: false,\n showProvidersHandler: null,\n showResumeCTA: false,\n showSignIn: false,\n signInButtonText: '',\n signInInvertContent: null,\n signInOnButtonClick: null,\n signInPerks: null,\n signInText: '',\n signInTheme: {},\n signUpButtonText: '',\n singleProviderId: '',\n singleProviderSignInClicked: null,\n successCookieName: '',\n successInnerContainerChildren: null,\n successTheme: {},\n tealiumAuthenticationStarted: () => {},\n triggerAuthCheck: null,\n tvProviderFeatListViewed: noop,\n tvProviderFullListViewed: noop,\n type: '',\n unlockUpsellInButtonText: '',\n unlockUpsellPerks: null,\n unlockUpsellText: '',\n upsellConfirmBackgroundClass: '',\n upsellConfirmChildren: null,\n upsellConfirmInnerContainerChildren: null,\n upsellConfirmOnClose: null,\n upsellConfirmTheme: {},\n upsellErrorBackgroundClass: '',\n upsellErrorChildren: null,\n upsellErrorInnerContainerChildren: null,\n upsellErrorOnClose: null,\n upsellErrorTheme: {},\n useMVPDRetry: null,\n videoId: null,\n};\n\nAuthClientless.propTypes = {\n account: PropTypes.shape({}),\n anonymousAccount: PropTypes.shape({}),\n additionalAuthorizedNetworks: PropTypes.shape({}),\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func,\n apiKey: PropTypes.string.isRequired,\n authEndpointConfig: PropTypes.shape({}),\n authenticationRedirectUrl: PropTypes.string,\n authenticationSelectProviderStarted: PropTypes.func,\n authenticationStarted: PropTypes.func,\n authorizationToken: PropTypes.string,\n authZErrorMapping: PropTypes.shape({}),\n background: PropTypes.string,\n backgroundInline: PropTypes.shape({}),\n backgroundUrl: PropTypes.string,\n blockMVPDIncomplete: PropTypes.bool,\n blockSuccessScreen: PropTypes.bool,\n clearTimeout: PropTypes.func,\n closeAccount: PropTypes.func,\n contentBlackoutActive: PropTypes.bool,\n contentChildren: PropTypes.func,\n contentRating: PropTypes.string,\n cookiesBlockedTheme: PropTypes.shape({}),\n deviceId: PropTypes.string.isRequired,\n entitlementIssues: PropTypes.arrayOf(PropTypes.shape({})),\n failureTheme: PropTypes.shape({}),\n fetchMVPDProviders: PropTypes.func,\n geoLocationDeclined: PropTypes.bool,\n geoLocationErrorChildren: PropTypes.func,\n geoLocationPrimaryActionCallback: PropTypes.func,\n geoLocationText: PropTypes.string,\n geoLocationTimeoutFail: PropTypes.bool,\n getCookiesBlockedChildren: PropTypes.func,\n handlePopInMiniPlayer: PropTypes.func,\n isLive: PropTypes.bool,\n isLiveRestart: PropTypes.bool,\n isMiniPlayerActive: PropTypes.bool,\n isMobile: PropTypes.bool,\n isTablet: PropTypes.bool,\n isTveEnabled: PropTypes.bool,\n loadingBackgroundClass: PropTypes.string,\n loadingInnerContainerChildren: PropTypes.func,\n loadingOnClose: PropTypes.func,\n loadingTheme: PropTypes.shape({}),\n model: PropTypes.string,\n moreBenefitsText: PropTypes.string,\n mvpd: PropTypes.string,\n mvpdCookieName: PropTypes.string.isRequired,\n mvpdDirectSignInBackgroundClass: PropTypes.string,\n mvpdDirectSignInChildren: PropTypes.func,\n mvpdDirectSignInInnerContainerChildren: PropTypes.func,\n mvpdDirectSignInTheme: PropTypes.shape({}),\n mvpdExpired: PropTypes.bool,\n mvpdIncompleteChildren: PropTypes.func,\n mvpdIncompleteTheme: PropTypes.shape({}),\n mvpdLoginProfile: PropTypes.bool,\n mvpdRetryChildren: PropTypes.func,\n mvpdRetryTheme: PropTypes.shape({}),\n mvpdSearchBackgroundClass: PropTypes.string,\n mvpdSearchChildren: PropTypes.node,\n mvpdSearchInnerContainerChildren: PropTypes.func,\n mvpdSearchInput: PropTypes.func,\n mvpdSearchOnClose: PropTypes.func,\n mvpdSearchOnInputChange: PropTypes.func,\n mvpdSearchResults: PropTypes.func,\n mvpdSearchTheme: PropTypes.shape({}),\n mvpdSignInTrigger: PropTypes.bool,\n mvpdStartBackgroundClass: PropTypes.string,\n mvpdStartChildren: PropTypes.func,\n mvpdStartInnerContainerChildren: PropTypes.func,\n mvpdStartOnClose: PropTypes.func,\n network: PropTypes.string,\n networkLogo: PropTypes.string,\n noSportsOnMobileErrorChildren: PropTypes.func,\n noSportsText: PropTypes.shape({}),\n notEntitledChildren: PropTypes.func,\n notEntitledTheme: PropTypes.shape({}),\n onAuthCheckComplete: PropTypes.func,\n onAuthFailure: PropTypes.func,\n onAuthSuccess: PropTypes.func,\n onRef: PropTypes.func,\n onResumeWithProfileShownAnalytics: PropTypes.func,\n osName: PropTypes.string,\n pcs: PropTypes.shape({}).isRequired,\n perksHeader: PropTypes.node,\n playbackErrorChildren: PropTypes.func,\n playbackErrorTheme: PropTypes.shape({}),\n previewPassEnabled: PropTypes.bool,\n previewPassExpired: PropTypes.bool,\n previewPassOnOpenOverlay: PropTypes.func,\n previewPassSignIn: PropTypes.bool,\n previewPassWelcomeText: PropTypes.func,\n previewPassWelcomeNetworkLogo: PropTypes.string,\n profileId: PropTypes.string,\n profilePcsErrorChildren: PropTypes.func,\n profilePcsErrorTheme: PropTypes.shape({}),\n profilePerks: PropTypes.arrayOf(PropTypes.node),\n profileSignInTheme: PropTypes.shape({}),\n ratingNoAuthZText: PropTypes.shape({}),\n redirectingBackgroundClass: PropTypes.string,\n redirectingInnerContainerChildren: PropTypes.func,\n redirectingOnClose: PropTypes.func,\n redirectingTheme: PropTypes.shape({}),\n releaseURL: PropTypes.string,\n renderCookiesBlocked: PropTypes.bool,\n renderExpiredPreviewPass: PropTypes.bool,\n renderVideoProviderSearch: PropTypes.func,\n requestSignIn: PropTypes.bool,\n requiresAuth: PropTypes.bool,\n requiresAuthLive: PropTypes.bool,\n resetShowCookiesBlocked: PropTypes.func,\n resetSingleProviderSignInClicked: PropTypes.func,\n restartButtonText: PropTypes.string,\n resumeWithProfileConfig: PropTypes.shape({}),\n resumeWithProfileOpenSignIn: PropTypes.func,\n resumeWithProfileOpenSignUp: PropTypes.func,\n selectedChannel: PropTypes.number,\n setAuthError: PropTypes.func,\n setAuthorizationToken: PropTypes.func,\n setIsAuthenticated: PropTypes.func,\n setSegmentPageStartSource: PropTypes.func,\n setMVPDSignInTrigger: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setOverlay: PropTypes.func.isRequired,\n setPreAuthCheckComplete: PropTypes.func,\n setPreauthorizedResources: PropTypes.func,\n setProvider: PropTypes.func,\n setTimeout: PropTypes.func,\n setToken: PropTypes.func,\n setVideoOverlay: PropTypes.func,\n sharedTheme: PropTypes.shape({}),\n shouldCheckPreviewPass: PropTypes.bool,\n showLoaderAfterAuth: PropTypes.bool,\n showNoSportsOnMobileError: PropTypes.bool,\n showProvidersHandler: PropTypes.func,\n showResumeCTA: PropTypes.bool,\n showSignIn: PropTypes.bool,\n signInButtonText: PropTypes.string,\n signInInvertContent: PropTypes.bool,\n signInOnButtonClick: PropTypes.func,\n signInPerks: PropTypes.shape({}),\n signInText: PropTypes.string,\n signInTheme: PropTypes.shape({}),\n signUpButtonText: PropTypes.string,\n singleProviderId: PropTypes.string,\n singleProviderSignInClicked: PropTypes.bool,\n successCookieName: PropTypes.string,\n successInnerContainerChildren: PropTypes.func,\n successTheme: PropTypes.shape({}),\n tealiumAuthenticationStarted: PropTypes.func,\n triggerAuthCheck: PropTypes.bool,\n tvProviderFeatListViewed: PropTypes.func,\n tvProviderFullListViewed: PropTypes.func,\n type: PropTypes.string,\n unlockUpsellInButtonText: PropTypes.string,\n unlockUpsellPerks: PropTypes.shape({}),\n unlockUpsellText: PropTypes.string,\n upsellConfirmBackgroundClass: PropTypes.string,\n upsellConfirmChildren: PropTypes.func,\n upsellConfirmInnerContainerChildren: PropTypes.func,\n upsellConfirmOnClose: PropTypes.func,\n upsellConfirmTheme: PropTypes.shape({}),\n upsellErrorBackgroundClass: PropTypes.string,\n upsellErrorChildren: PropTypes.func,\n upsellErrorInnerContainerChildren: PropTypes.func,\n upsellErrorOnClose: PropTypes.func,\n upsellErrorTheme: PropTypes.shape({}),\n useMVPDRetry: PropTypes.bool,\n videoId: PropTypes.string,\n};\n\nconst mapStateToProps = state => ({\n isMiniPlayerActive: state.globalVideo.isMiniPlayerActive,\n pcs: makeSelectAppPCS(state),\n});\n\nexport default connect(mapStateToProps)(ReactTimeout(AuthClientless));\n","/* global AccessEnablerUrl, SingleMvpd */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport {\n BUILD_VERSION,\n callTealiumEvent,\n Events,\n getAccountAnalyticsEvents,\n getSegmentAuthTrackEvents,\n getSegmentMVPDEvents,\n handleAnalytics,\n setSegmentPageStartSource,\n setTealiumProfileId,\n setTealiumSourceAuth,\n TEALIUM_EVENT_PREFIX,\n TealiumOnboardingActions,\n TrackEvents,\n} from '@foxcorp/delta-web-analytics';\nimport VideoProviderSearch from 'components/Auth/VideoProviderSearch';\nimport { helperGetApiKey } from 'helpers/ApiHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport {\n BUYTHROUGH_DATA_COOKIE_NAME,\n MVPD_COOKIE_NAME,\n SUCCESS_COOKIE_NAME,\n adobeAuthOptions,\n authMVPDLogout,\n getContentBlackoutProps,\n getCookiesBlockedProps,\n getDefaultAuthProps,\n getFailureProps,\n getGeoLocationErrorProps,\n getLoadingProps,\n getMvpdDirectSignInRedirectProps,\n getMVPDIframeProps,\n getMVPDIncompleteProps,\n getMVPDRetryProps,\n getMVPDSearchProps,\n getMVPDStartProps,\n getMVPDUpsellRedirectingProps,\n getNoSportsOnMobileProps,\n getNotEntitledProps,\n getPlaybackErrorProps,\n getPreviewPassWelcomeProps,\n getProfilePcsErrorProps,\n getProfileSignInProps,\n getSignInProps,\n getSuccessProps,\n getUpsellConfirmProps,\n getUpsellErrorProps,\n} from 'helpers/AuthHelper';\n\nimport { getDeviceProps } from 'helpers/utils';\n\nimport {\n getAuthNetworksConfig,\n geolocationEnabled,\n isEpgv2Enabled,\n previewPassEnabled,\n tveEnabled,\n} from 'helpers/ConfigHelper';\nimport { getNetworkList, getNetworksDisplayOrder } from 'helpers/ContentHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { getAuthRedirectUrl } from 'helpers/RouteHelper';\nimport { getTheme, webThemeIds } from 'helpers/ThemeHelper';\nimport { userAttributeEvents } from 'helpers/OptimizelyHelper';\nimport contentBlackoutTheme from 'themes/AuthContentBlackout.module.scss';\nimport authProfileSignInTheme from 'themes/AuthProfileSignIn.module.scss';\nimport authProfileSignInThemev2 from 'themes/AuthProfileSignInV2.module.scss';\nimport authMVPDIncomplete from 'themes/AuthMVPDIncomplete.module.scss';\nimport authMvpdDirectSignInRedirectTheme from 'themes/AuthMvpdDirectSignInRedirect.module.scss';\nimport authMVPDIframeTheme from 'themes/AuthMVPDIframe.module.scss';\nimport authSuccessTheme from 'themes/AuthSuccess.module.scss';\nimport authFailureTheme from 'themes/AuthFailure.module.scss';\nimport authCookiesBlockedTheme from 'themes/AuthCookiesBlocked.module.scss';\nimport authMVPDUpsellRedirectingTheme from 'themes/AuthMVPDUpsellRedirecting.module.scss';\nimport upsellErrorTheme from 'themes/AuthUpsellError.module.scss';\nimport signInIdentifierV2Theme from 'themes/AuthSignInV2.module.scss';\nimport signInIdentifierTheme from 'themes/AuthSignIn.module.scss';\nimport MVPDRetyTheme from 'themes/AuthMVPDRetry.module.scss';\nimport MVPDSearchTheme from 'themes/AuthMVPDSearch.module.scss';\nimport authLoadingTheme from 'themes/AuthLoading.module.scss';\nimport authNotEntitledTheme from 'themes/AuthNotEntitled.module.scss';\nimport playbackErrorTheme from 'components/Auth/PlaybackError/Geolocation/Geolocation.module.scss';\nimport AuthClientless from 'components/AuthClientless';\nimport { fetchMVPDProvidersAction, setPreauthorizedResourcesAction } from 'index/AppActions';\n\nconst authSharedTheme = getTheme(webThemeIds.Auth.Shared);\n\nclass AuthContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.authMVPDLogout = authMVPDLogout.bind(this);\n this.getCookiesBlockedProps = getCookiesBlockedProps.bind(this);\n this.getContentBlackoutProps = getContentBlackoutProps.bind(this);\n this.getDefaultAuthProps = getDefaultAuthProps.bind(this);\n this.getFailureProps = getFailureProps.bind(this);\n this.getGeoLocationErrorProps = getGeoLocationErrorProps.bind(this);\n this.getMvpdDirectSignInRedirectProps = getMvpdDirectSignInRedirectProps.bind(this);\n this.getMVPDIframeProps = getMVPDIframeProps.bind(this);\n this.getMVPDIncompleteProps = getMVPDIncompleteProps.bind(this);\n this.getMVPDRetryProps = getMVPDRetryProps.bind(this);\n this.getMVPDSearchProps = getMVPDSearchProps.bind(this);\n this.getMVPDStartProps = getMVPDStartProps.bind(this);\n this.getMVPDUpsellRedirectingProps = getMVPDUpsellRedirectingProps.bind(this);\n this.getNoSportsOnMobileProps = getNoSportsOnMobileProps.bind(this);\n this.getNotEntitledProps = getNotEntitledProps.bind(this);\n this.getPlaybackErrorProps = getPlaybackErrorProps.bind(this);\n this.getPreviewPassWelcomeProps = getPreviewPassWelcomeProps.bind(this);\n this.getProfilePcsErrorProps = getProfilePcsErrorProps.bind(this);\n this.getProfileSignInProps = getProfileSignInProps.bind(this);\n this.getSignInProps = getSignInProps.bind(this);\n this.getSuccessProps = getSuccessProps.bind(this);\n this.getLoadingProps = getLoadingProps.bind(this);\n this.getUpsellConfirmProps = getUpsellConfirmProps.bind(this);\n this.getUpsellErrorProps = getUpsellErrorProps.bind(this);\n }\n\n render() {\n const {\n closeAccount,\n mvpdLoginProfile,\n account,\n anonymousAccount,\n anonymousId,\n anonymousLogin,\n background,\n blackoutConfig,\n blackoutDefinitions,\n blockMVPDIncomplete,\n blockSuccessScreen,\n channel,\n checkBlackouts,\n shouldCheckPreviewPass,\n contentNetworks,\n contentRating,\n contentSKU,\n deviceId,\n entitlementIssues,\n fetchMVPDProviders,\n geoLocationDeclined,\n geoLocationTimeoutFail,\n geoLocationPrimaryActionCallback,\n getDesignatedMarketingAreaData,\n guid,\n handlePopInMiniPlayer,\n isLive,\n isLiveRestart,\n isMobile,\n isTablet,\n mvpdExpired,\n mvpdProviders,\n mvpdSignInTrigger,\n network,\n onAuthCheckComplete,\n onOverlayClose,\n onShowProvidersCallback,\n openSignIn,\n openSignUp,\n pageViewEvent,\n preauthorizedResources,\n previewPassExpired,\n previewPassSignIn,\n profileToken,\n provider,\n releaseURL,\n resetShowCookiesBlocked,\n resetSingleProviderSignInClicked,\n resumeWithProfileConfig,\n requiresAuth,\n requiresAuthLive,\n savePercentWatched,\n selectedChannel,\n setAuthError,\n setIsAuthenticated,\n setMVPDLogoutDataToAppState,\n setMVPDToAppState,\n setMVPDSignInTrigger,\n setOverlay,\n setPreAuthCheckComplete,\n setPreauthorizedResources,\n setProvider,\n setToken,\n setAuthorizationToken,\n showCookiesBlocked,\n showEmailForm,\n showLoaderAfterAuth,\n showProviders,\n showNoSportsOnMobileError,\n showSignIn,\n showUpsellProgressBar,\n singleProviderId,\n singleProviderSignInClicked,\n topMVPDProviders,\n triggerAuthCheck,\n type,\n videoId,\n videoType,\n requestSignIn,\n showResumeCTA,\n setAccountCloseIgnoreRedirect,\n setVideoOverlay,\n upsellRedirectOnProviderClick,\n waitForVideo,\n waitForUpsell,\n } = this.props;\n const { requestorId } = window.ExternalConfig;\n const mvpdId = _.get(provider, 'adobePassId');\n const networkList = getNetworkList();\n const networkDisplayOrder = getNetworksDisplayOrder();\n const profileId = _.get(account, 'profileId');\n const authenticationRedirectUrl = getAuthRedirectUrl();\n\n const sharedTheme = authSharedTheme;\n const defaultAuthProps = this.getDefaultAuthProps({\n account,\n preauthorizedResources,\n previewPassExpired,\n previewPassSignIn,\n });\n const signInIdentifier = isEpgv2Enabled() ? signInIdentifierV2Theme : signInIdentifierTheme;\n const signInProps = this.getSignInProps({\n theme: signInIdentifier,\n account,\n previewPassExpired,\n previewPassSignIn,\n });\n const profileSignInProps = this.getProfileSignInProps({\n theme: isEpgv2Enabled() ? authProfileSignInThemev2 : authProfileSignInTheme,\n account,\n });\n const mvpdIframeProps = this.getMVPDIframeProps({\n theme: authMVPDIframeTheme,\n sharedTheme,\n });\n const mvpdStartProps = this.getMVPDStartProps({\n accessToken: profileToken,\n account,\n deviceId,\n mvpdProviders,\n onOverlayClose,\n previewPassExpired,\n previewPassSignIn,\n sharedTheme,\n showEmailForm,\n showUpsellProgressBar,\n topMVPDProviders,\n });\n const mvpdIncompleteProps = this.getMVPDIncompleteProps({\n theme: authMVPDIncomplete,\n });\n const mvpdRetryProps = this.getMVPDRetryProps({\n sharedTheme,\n theme: MVPDRetyTheme,\n });\n const mvpdSearchProps = this.getMVPDSearchProps({\n theme: MVPDSearchTheme,\n sharedTheme,\n topMVPDProviders,\n mvpdProviders,\n isMobile,\n account,\n onOverlayClose,\n previewPassExpired,\n previewPassSignIn,\n });\n const successProps = this.getSuccessProps({\n theme: authSuccessTheme,\n sharedTheme,\n networkList: networkDisplayOrder,\n account,\n });\n const mvpdDirectSignInRedirectProps = this.getMvpdDirectSignInRedirectProps({\n onOverlayClose,\n sharedTheme,\n theme: authMvpdDirectSignInRedirectTheme,\n });\n const mvpdUpsellRedirectingProps = this.getMVPDUpsellRedirectingProps({\n theme: authMVPDUpsellRedirectingTheme,\n sharedTheme,\n onOverlayClose,\n });\n const loadingProps = this.getLoadingProps({\n theme: authLoadingTheme,\n sharedTheme,\n onOverlayClose,\n });\n const failureProps = this.getFailureProps({\n theme: authFailureTheme,\n sharedTheme,\n account,\n });\n const playbackErrorProps = this.getPlaybackErrorProps({\n theme: playbackErrorTheme,\n sharedTheme,\n provider,\n });\n const previewPassWelcomeProps = this.getPreviewPassWelcomeProps();\n\n const geoLocationProps = this.getGeoLocationErrorProps({\n sharedTheme,\n isGeolocationEnabled: geolocationEnabled(),\n });\n const noSportsOnMobileProps = this.getNoSportsOnMobileProps({\n theme: playbackErrorTheme,\n sharedTheme,\n });\n const notEntitledProps = this.getNotEntitledProps({\n sharedTheme,\n theme: authNotEntitledTheme,\n onLogout: this.authMVPDLogout,\n });\n const cookiesBlockedProps = this.getCookiesBlockedProps({\n options: {\n theme: authCookiesBlockedTheme,\n sharedTheme,\n showCookiesBlocked,\n resetShowCookiesBlocked,\n },\n });\n const profilePcsErrorProps = this.getProfilePcsErrorProps({\n theme: playbackErrorTheme,\n sharedTheme,\n });\n const contentBlackoutProps = this.getContentBlackoutProps({\n theme: contentBlackoutTheme,\n sharedTheme,\n });\n const previewPassProps = {\n previewPassExpired,\n previewPassSignIn,\n showProviders,\n previewPassOnOpenOverlay: () => {\n const action = 'authentication_start';\n const authStartSource = 'preview pass expiration';\n const onboardSrc = 'preview pass:expiration';\n setTealiumSourceAuth(authStartSource);\n const data = setTealiumProfileId(profileId, {\n auth_start_source: authStartSource,\n onboarding_start_source: onboardSrc,\n onboarding_action: TealiumOnboardingActions.COMPLETE,\n action,\n platform_version: BUILD_VERSION,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n },\n };\n const upsellConfirmProps = this.getUpsellConfirmProps({\n account,\n onOverlayClose,\n sharedTheme,\n theme: upsellErrorTheme,\n profileId,\n });\n const upsellErrorProps = this.getUpsellErrorProps({\n onAuthCheckComplete,\n onOverlayClose,\n sharedTheme,\n theme: upsellErrorTheme,\n });\n const authTrackEventsProps = getSegmentAuthTrackEvents();\n const authEndpointConfig = _.get(window.ExternalConfig, 'api.auth');\n const packageId = _.get(window.ExternalConfig, 'upsellPromo.package');\n const apiKey = helperGetApiKey();\n const authNetworksConfig = getAuthNetworksConfig();\n\n const backgroundUrl = null;\n const backgroundStyle = background ? `url(${background})` : '#000';\n const backgroundGradient =\n 'linear-gradient(to bottom, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.8) 100%)';\n const { model, osName } = getDeviceProps();\n const MVPDEvents = getSegmentMVPDEvents();\n const { AUTHENTICATION_STARTED } = TrackEvents;\n const { foxProfileState } = userAttributeEvents();\n const { [AUTHENTICATION_STARTED]: tealiumAuthenticationStarted } = getAccountAnalyticsEvents({\n profileId,\n foxProfileState,\n });\n const authProps = {\n ...contentBlackoutProps,\n ...cookiesBlockedProps,\n ...defaultAuthProps,\n ...failureProps,\n ...geoLocationProps,\n ...mvpdDirectSignInRedirectProps,\n ...mvpdIframeProps,\n ...mvpdIncompleteProps,\n ...mvpdRetryProps,\n ...mvpdSearchProps,\n ...mvpdStartProps,\n ...noSportsOnMobileProps,\n ...notEntitledProps,\n ...playbackErrorProps,\n ...previewPassWelcomeProps,\n ...previewPassProps,\n ...profilePcsErrorProps,\n ...profileSignInProps,\n ...signInProps,\n ...successProps,\n ...loadingProps,\n ...mvpdUpsellRedirectingProps,\n ...authTrackEventsProps,\n ...upsellConfirmProps,\n ...upsellErrorProps,\n ...MVPDEvents,\n apiKey,\n authEndpointConfig,\n authenticationRedirectUrl,\n account,\n anonymousAccount,\n anonymousId,\n anonymousLogin,\n authNetworksConfig,\n authorizationToken: profileToken,\n backgroundInline: {\n background: `${backgroundGradient} padding-box padding-box, ${backgroundStyle} center center/cover no-repeat`,\n },\n backgroundUrl,\n blackoutConfig,\n blackoutDefinitions,\n blockMVPDIncomplete,\n blockSuccessScreen: blockSuccessScreen || SingleMvpd,\n buythroughDataCookieName: BUYTHROUGH_DATA_COOKIE_NAME,\n channel,\n closeAccount,\n contentNetworks,\n contentRating,\n contentSKU,\n deviceId,\n entitlementIssues,\n fetchMVPDProviders,\n geoLocationDeclined,\n geoLocationPrimaryActionCallback,\n geoLocationTimeoutFail,\n getDesignatedMarketingAreaData,\n getNetworkList,\n guid,\n handlePopInMiniPlayer,\n inRequestorID: requestorId,\n isCookiesBlockedError: showCookiesBlocked,\n isLive,\n isLiveRestart,\n isMobile,\n isTablet,\n isTveEnabled: tveEnabled(),\n model,\n mvpd: mvpdId,\n mvpdCookieName: MVPD_COOKIE_NAME,\n mvpdExpired,\n mvpdLoginProfile,\n mvpdProviders,\n mvpdSignInTrigger,\n network,\n networkList,\n onAuthCheckComplete,\n onResumeWithProfileShownAnalytics: () => {\n handleAnalytics({\n event: Events.PROFILE_UPSELL_PRESENTED,\n payload: { utagAccountSource: 'upsell' },\n });\n },\n options: adobeAuthOptions,\n osName,\n packageId,\n pageViewEvent,\n playerLoadingImage: background,\n preauthorizedResources,\n previewPassCookieName: MVPD_COOKIE_NAME,\n previewPassEnabled: previewPassEnabled(),\n provider,\n redirect_url: document.location.href,\n releaseURL,\n renderVideoProviderSearch: (props = {}) => (\n <VideoProviderSearch mvpdProviders={mvpdProviders} {...props} />\n ),\n requestSignIn,\n requiresAuth,\n requiresAuthLive,\n resetShowCookiesBlocked,\n resetSingleProviderSignInClicked,\n resumeWithProfileConfig,\n resumeWithProfileOpenSignIn: () => {\n savePercentWatched();\n openSignIn({ utagAccountSource: 'upsell' });\n setAccountCloseIgnoreRedirect(true);\n },\n resumeWithProfileOpenSignUp: () => {\n savePercentWatched();\n openSignUp({ utagAccountSource: 'upsell' });\n setAccountCloseIgnoreRedirect(true);\n },\n selectedChannel,\n setAuthError,\n setAuthorizationToken,\n setIsAuthenticated,\n setSegmentPageStartSource,\n setMVPDLogoutDataToAppState,\n setMVPDSignInTrigger,\n setMVPDToAppState,\n setOverlay,\n setPreAuthCheckComplete,\n setPreauthorizedResources,\n setProvider,\n setToken,\n setVideoOverlay,\n sharedTheme: authSharedTheme,\n shouldCheckPreviewPass,\n showLoaderAfterAuth,\n showNoSportsOnMobileError,\n showProvidersHandler: onShowProvidersCallback,\n showResumeCTA,\n showSignIn,\n singleProviderId,\n singleProviderSignInClicked,\n successCookieName: SUCCESS_COOKIE_NAME,\n tealiumAuthenticationStarted,\n topMVPDProviders,\n triggerAuthCheck,\n type,\n upsellRedirectOnProviderClick,\n url: AccessEnablerUrl,\n useMVPDRetry: false,\n videoId,\n videoType,\n };\n const blackoutEnabled = _.get(blackoutConfig, 'enabled');\n const waitForBlackoutData = blackoutEnabled && checkBlackouts && !blackoutDefinitions;\n const waitForAuth = !profileToken;\n\n const shouldWait = waitForBlackoutData || waitForVideo || waitForAuth || waitForUpsell;\n\n if (shouldWait) return null;\n\n return <AuthClientless data-test=\"auth-container-clientless-auth\" {...authProps} />;\n }\n}\n\nconst mapStateToProps = ({ app }) => {\n const { preauthorizedResources, mvpdProviders, topMVPDProviders } = app;\n\n return {\n preauthorizedResources,\n mvpdProviders,\n topMVPDProviders,\n };\n};\n\nconst mapDispatchToProps = {\n fetchMVPDProviders: fetchMVPDProvidersAction,\n setPreauthorizedResources: setPreauthorizedResourcesAction,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AuthContainer);\n\nAuthContainer.defaultProps = {\n account: null,\n anonymousAccount: null,\n anonymousId: null,\n background: '',\n blackoutConfig: null,\n blackoutDefinitions: null,\n blockMVPDIncomplete: null,\n blockSuccessScreen: null,\n closeAccount: noop,\n channel: null,\n checkBlackouts: false,\n contentNetworks: [],\n contentRating: null,\n contentSKU: null,\n deviceId: null,\n entitlementIssues: null,\n geoLocationDeclined: null,\n geoLocationTimeoutFail: false,\n geoLocationPrimaryActionCallback: noop,\n getDesignatedMarketingAreaData: noop,\n guid: null,\n isLive: false,\n isLiveRestart: null,\n isMobile: false,\n isTablet: false,\n mvpdExpired: false,\n mvpdLoginProfile: false,\n mvpdProviders: [],\n mvpdSignInTrigger: false,\n network: null,\n onAuthCheckComplete: noop,\n onOverlayClose: noop,\n onShowProvidersCallback: noop,\n openSignIn: noop,\n openSignUp: noop,\n pageViewEvent: noop,\n preauthorizedResources: [],\n previewPassExpired: false,\n previewPassSignIn: false,\n profileId: null,\n profileToken: null,\n provider: null,\n releaseURL: null,\n requestSignIn: false,\n requiresAuth: null,\n requiresAuthLive: null,\n resetShowCookiesBlocked: noop,\n resetSingleProviderSignInClicked: noop,\n resumeWithProfileConfig: null,\n savePercentWatched: noop,\n selectedChannel: null,\n setAccountCloseIgnoreRedirect: noop,\n setAuthError: noop,\n setMVPDLogoutDataToAppState: noop,\n setMVPDSignInTrigger: noop,\n setMVPDToAppState: noop,\n setPreAuthCheckComplete: noop,\n setToken: noop,\n setVideoOverlay: noop,\n shouldCheckPreviewPass: false,\n showCookiesBlocked: false,\n showEmailForm: false,\n showLoaderAfterAuth: false,\n showNoSportsOnMobileError: false,\n showProviders: false,\n showResumeCTA: false,\n showSignIn: false,\n showUpsellProgressBar: false,\n singleProviderId: null,\n singleProviderSignInClicked: false,\n topMVPDProviders: [],\n triggerAuthCheck: false,\n type: '',\n upsellRedirectOnProviderClick: false,\n videoId: null,\n videoType: null,\n waitForUpsell: null,\n waitForVideo: false,\n};\n\nAuthContainer.propTypes = {\n account: PropTypes.shape({}),\n anonymousAccount: PropTypes.shape({}),\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func.isRequired,\n background: PropTypes.string,\n blackoutConfig: PropTypes.shape({}),\n blackoutDefinitions: PropTypes.shape({}),\n blockMVPDIncomplete: PropTypes.bool,\n blockSuccessScreen: PropTypes.bool,\n channel: PropTypes.string,\n checkBlackouts: PropTypes.bool,\n closeAccount: PropTypes.func,\n contentNetworks: PropTypes.arrayOf(PropTypes.string),\n contentRating: PropTypes.string,\n contentSKU: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])),\n deviceId: PropTypes.string,\n entitlementIssues: PropTypes.arrayOf(PropTypes.shape({})),\n fetchMVPDProviders: PropTypes.func.isRequired,\n geoLocationDeclined: PropTypes.bool,\n geoLocationTimeoutFail: PropTypes.bool,\n geoLocationPrimaryActionCallback: PropTypes.func,\n getDesignatedMarketingAreaData: PropTypes.func,\n guid: PropTypes.string,\n handlePopInMiniPlayer: PropTypes.func,\n isLive: PropTypes.bool,\n isLiveRestart: PropTypes.bool,\n isMobile: PropTypes.bool,\n isTablet: PropTypes.bool,\n mvpdExpired: PropTypes.bool,\n mvpdLoginProfile: PropTypes.bool,\n mvpdProviders: PropTypes.arrayOf(PropTypes.shape({})),\n mvpdSignInTrigger: PropTypes.bool,\n network: PropTypes.string,\n onAuthCheckComplete: PropTypes.func,\n onOverlayClose: PropTypes.func,\n onShowProvidersCallback: PropTypes.func,\n openSignIn: PropTypes.func,\n openSignUp: PropTypes.func,\n pageViewEvent: PropTypes.func,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n previewPassExpired: PropTypes.bool,\n previewPassSignIn: PropTypes.bool,\n profileId: PropTypes.string,\n profileToken: PropTypes.string,\n provider: PropTypes.shape({}),\n releaseURL: PropTypes.string,\n requestSignIn: PropTypes.bool,\n requiresAuth: PropTypes.bool,\n requiresAuthLive: PropTypes.bool,\n resetShowCookiesBlocked: PropTypes.func,\n resetSingleProviderSignInClicked: PropTypes.func,\n resumeWithProfileConfig: PropTypes.shape({}),\n savePercentWatched: PropTypes.func,\n selectedChannel: PropTypes.number,\n setAccountCloseIgnoreRedirect: PropTypes.func,\n setAuthError: PropTypes.func,\n setAuthorizationToken: PropTypes.func.isRequired,\n setIsAuthenticated: PropTypes.func.isRequired,\n setMVPDLogoutDataToAppState: PropTypes.func,\n setMVPDSignInTrigger: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setOverlay: PropTypes.func.isRequired,\n setPreAuthCheckComplete: PropTypes.func,\n setPreauthorizedResources: PropTypes.func.isRequired,\n setProvider: PropTypes.func.isRequired,\n setToken: PropTypes.func,\n setVideoOverlay: PropTypes.func,\n shouldCheckPreviewPass: PropTypes.bool,\n showCookiesBlocked: PropTypes.bool,\n showEmailForm: PropTypes.bool,\n showLoaderAfterAuth: PropTypes.bool,\n showNoSportsOnMobileError: PropTypes.bool,\n showProviders: PropTypes.bool,\n showResumeCTA: PropTypes.bool,\n showSignIn: PropTypes.bool,\n showUpsellProgressBar: PropTypes.bool,\n singleProviderId: PropTypes.string,\n singleProviderSignInClicked: PropTypes.bool,\n topMVPDProviders: PropTypes.arrayOf(PropTypes.shape({})),\n triggerAuthCheck: PropTypes.bool,\n type: PropTypes.string,\n upsellRedirectOnProviderClick: PropTypes.bool,\n videoId: PropTypes.string,\n videoType: PropTypes.string,\n waitForUpsell: PropTypes.bool,\n waitForVideo: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport style from './style.css';\n\nconst Item = (props = {}) => {\n const { image, label, link, color } = props;\n return (\n <a\n href={link}\n onClick={() =>\n handleAnalytics({\n event: Events.HEADER_LINK_CLICKED,\n payload: { page_destination_url: link, page_item_title: label },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n })\n }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={style.container}\n style={{ background: color }}\n >\n <img src={image} alt={label} className={style.image} />\n <div className={style.textContainer}>\n <span className={style.text}>{label}</span>\n <div className={style.icon}>\n <Icon color=\"white\" viewBox=\"0 0 24 24\" icon=\"external-link-square-alt\" size=\"small\" />\n </div>\n </div>\n </a>\n );\n};\n\nItem.propTypes = {\n image: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n link: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n};\n\nItem.defaultProps = {};\n\nexport default Item;\n","import React, { Fragment } from 'react';\nimport classNames from 'classnames';\nimport Item from './components/Item';\nimport style from './networkBar.module.scss';\n\nconst NetworkBar = () => {\n const networksBar = window.ExternalConfig.networkNavigation;\n if (!networksBar) return null;\n const containerClasses = [style.container, style.redesignCollections];\n return (\n <div className={classNames(containerClasses)}>\n {networksBar.map(network => (\n <Fragment key={`network-bar-item-${network.label}`}>\n <Item {...network} />\n </Fragment>\n ))}\n </div>\n );\n};\n\nexport default NetworkBar;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport { noop } from 'helpers/GlobalHelper';\nimport style from './SignUpModal.module.scss';\n\nconst SignUpModalContainer = props => {\n const { closeModal } = props;\n\n const { externalSimplifiedSignUpURL } = window.ExternalConfig;\n\n const closeIcon = <Icon onClick={() => closeModal()} color=\"white\" icon=\"close\" size=\"large\" />;\n\n const handleIframeClose = e => {\n if (e.data === 'close') {\n closeModal();\n }\n };\n\n useEffect(() => {\n window.addEventListener('message', handleIframeClose);\n });\n\n return (\n <div className={style.SignUpModal}>\n <div className={style.IconWrapper} onClick={() => closeModal()}>\n {closeIcon}\n </div>\n <iframe title=\"simplePurchaseFlow\" src={externalSimplifiedSignUpURL} />\n </div>\n );\n};\n\nSignUpModalContainer.defaultProps = {\n closeModal: noop,\n};\n\nSignUpModalContainer.propTypes = {\n closeModal: PropTypes.func,\n};\n\nexport default SignUpModalContainer;\n","/* global ProfileEnabled */\n\nimport React from 'react';\nimport { withRouter } from 'react-router';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { isMvpdSubscription, isStaticRender, urlIsExternal } from 'helpers/ContentHelper';\nimport { accountPathMappings } from 'helpers/AccountHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport {\n Events,\n getSegmentSignOutStartSource,\n handleAnalytics,\n TrackEvents as GeneralTrackEvents,\n} from '@foxcorp/delta-web-analytics';\nimport {\n helperGetNetworkUpsellUrl,\n helperGoToRelativeUrl,\n redirectToExternalUrl,\n setSettingsPath,\n} from 'helpers/RouteHelper';\nimport { setLocalStorageItem } from 'helpers/Storage';\nimport Style from './BuythroughProfileIcon.module.scss';\n\nconst disableAuthentication = () => {\n const { disableAuthentication = false } = window.ExternalConfig;\n\n return disableAuthentication;\n};\n\nconst ProfileOption = withRouter(props => {\n const { account, favoritesManager, location, params, option } = props;\n const hasFavorites = _.get(favoritesManager, 'favoritesDetails', []).length > 0;\n if (option.id === 'manageFavorites' && !hasFavorites) return null;\n const pathName = _.get(location, 'pathname');\n const path = accountPathMappings(option.id);\n const url = `/account/${path}`;\n\n const onClick = () => {\n if (option.id === 'signOut') {\n const source = getSegmentSignOutStartSource({\n networkUpsellPage: helperGetNetworkUpsellUrl(),\n pathName,\n params,\n });\n if (source) {\n setLocalStorageItem({\n key: GeneralTrackEvents.FXPL_PROFILE_SIGN_OUT_SOURCE,\n value: source,\n });\n }\n handleAnalytics({\n event: Events.PROFILE_LOGGED_OUT,\n });\n }\n handleAnalytics({\n event: Events.GLOBAL_NAV_CLICKED,\n payload: { page_item_title: option.label },\n });\n if (urlIsExternal(url)) {\n redirectToExternalUrl(url);\n } else {\n setSettingsPath(window.location.pathname);\n helperGoToRelativeUrl(url);\n }\n };\n const button = (\n <button key={option.id} className={Style.profileOption} onClick={onClick}>\n {option.label}\n </button>\n );\n if (option.id === 'signOut') {\n return (\n <>\n <span className={Style.separator} />\n <div className={Style.lastRow}>\n <button onClick={onClick} className={Style.profileOption} type=\"button\">\n {account.firstName}\n <span>{option.label}</span>\n </button>\n </div>\n </>\n );\n }\n\n return button;\n});\n\nconst ProfileOptions = ({ account, favoritesManager, renderProfileDropdown }) => {\n const options = _.get(window.ExternalConfig, 'profile.menu', []);\n const profileOptionsClassNames = [\n Style.profileOptionsContainer,\n renderProfileDropdown ? Style.showProfileOptions : Style.hideProfileOptions,\n ];\n if (!options.length) return null;\n const profileOptions = options.map(option => (\n <ProfileOption\n account={account}\n favoritesManager={favoritesManager}\n option={option}\n key={`Profile-${option.id}`}\n />\n ));\n return (\n <div data-test=\"profile-options\" className={classNames(profileOptionsClassNames)}>\n {profileOptions}\n </div>\n );\n};\n\nProfileOptions.propTypes = {\n account: PropTypes.shape({}).isRequired,\n favoritesManager: PropTypes.shape({}).isRequired,\n renderProfileDropdown: PropTypes.func.isRequired,\n};\n\nconst BuythroughProfileIcon = ({\n account,\n favoritesManager,\n isWeb,\n renderProfileDropdown,\n setWrapperRef,\n toggleProfileDropdown,\n}) => {\n if (!ProfileEnabled || isStaticRender() || disableAuthentication()) return null;\n const userIcon = account || isMvpdSubscription() ? Style.userIconAccount : Style.userIcon;\n const profileDropdownContainerClasses = [\n Style.profileDropdownContainer,\n Style.rightIcon,\n Style.accountDropdown,\n ];\n const profileIconOnClick = isWeb() ? noop : toggleProfileDropdown;\n if (renderProfileDropdown) profileDropdownContainerClasses.push(Style.profileDropdownOpen);\n const ariaLabel = renderProfileDropdown ? 'close profile dropdown' : 'open profile dropdown';\n const displayName = account.firstName;\n return (\n <div\n className={classNames(profileDropdownContainerClasses)}\n key=\"header-buythrough-profile-icon\"\n onClick={profileIconOnClick}\n ref={setWrapperRef}\n >\n <div\n data-test=\"profile-dropdown\"\n role=\"button\"\n aria-label={ariaLabel}\n className={Style.profileIconContainer}\n tabIndex=\"0\"\n >\n <div data-test=\"profile-icon\" className={userIcon}>\n {displayName}\n </div>\n {ProfileOptions({ account, favoritesManager, renderProfileDropdown })}\n </div>\n </div>\n );\n};\n\nBuythroughProfileIcon.propTypes = {\n account: PropTypes.shape({}).isRequired,\n favoritesManager: PropTypes.shape({}).isRequired,\n isWeb: PropTypes.func.isRequired,\n renderProfileDropdown: PropTypes.func.isRequired,\n setWrapperRef: PropTypes.func.isRequired,\n toggleProfileDropdown: PropTypes.func.isRequired,\n};\n\nexport default BuythroughProfileIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport { NETWORK_LOGO_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport style from './style.css';\n\nconst Item = (props = {}) => {\n const { image, label, link, color } = props;\n return (\n <a href={link} target=\"_blank\" rel=\"noopener noreferrer\" className={style.container}>\n <span className={style.extender} style={{ backgroundColor: color }} />\n <div className={style.content}>\n <div className={style.imageContainer}>\n {renderImage({\n src: image,\n imageType: NETWORK_LOGO_IMAGE,\n alt: label,\n className: style.image,\n })}\n </div>\n <div className={style.text}>{label}</div>\n <div className={style.iconContainer}>\n <Icon color=\"white\" viewBox=\"0 0 24 24\" icon=\"external-link-square-alt\" size=\"small\" />\n </div>\n </div>\n </a>\n );\n};\n\nItem.propTypes = {\n image: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n link: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n};\n\nItem.defaultProps = {};\n\nexport default Item;\n","import React from 'react';\nimport Item from './components/Item';\nimport style from './style.css';\n\nconst NetworkList = () => {\n const networksBar = window.ExternalConfig.networkNavigation;\n if (!networksBar) return null;\n return (\n <div className={style.container}>\n {networksBar.map(network => (\n <Item {...network} key={`network-list-item-${network.label}`} />\n ))}\n </div>\n );\n};\n\nNetworkList.propTypes = {};\n\nNetworkList.defaultProps = {};\n\nexport default NetworkList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport NetworkList from 'components/NetworkList';\nimport { DEVICE_IOS, mobileDeviceType } from 'helpers/ContentHelper';\nimport style from './Categories.module.scss';\n\nconst Categories = (props = {}) => {\n const { desktopCategories = false, getGlobalNavItems, isMobileActive } = props;\n let categoryClass = classNames(style.categories);\n let networks = null;\n if (isMobileActive() && !desktopCategories) {\n categoryClass = classNames([\n style.categoriesMobile,\n mobileDeviceType() === DEVICE_IOS && style.categoriesMobileIos,\n ]);\n networks = <NetworkList />;\n }\n const items = getGlobalNavItems();\n\n return (\n <div key=\"category\" className={categoryClass}>\n <div key=\"nav-links\" className={style.navLinks}>\n {items}\n </div>\n {networks}\n </div>\n );\n};\n\nexport default Categories;\n\n/* eslint react/require-default-props: 0 */\nCategories.propTypes = {\n campaignOverrides: PropTypes.shape({}).isRequired,\n desktopCategories: PropTypes.bool.isRequired,\n getGlobalNavItems: PropTypes.func.isRequired,\n isMobileActive: PropTypes.func.isRequired,\n};\n","/* global BaseUrl */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { getUrlTarget, urlIsExternal } from 'helpers/ContentHelper';\n\nconst HeaderLink = (props = {}, children, idx) => {\n const { to: route } = props;\n const targetData = getUrlTarget(route);\n const anchorProps = { ...props, ...targetData };\n const key = `link${route}.${idx}`;\n if (urlIsExternal(route)) {\n const isExternal = urlIsExternal(route);\n if (isExternal) {\n anchorProps.href = route;\n } else if (!isExternal && route) {\n anchorProps.href = `${BaseUrl}${route}`;\n }\n return (\n <a key={key} {...anchorProps}>\n {children}\n </a>\n );\n }\n return (\n <Link key={key} {...anchorProps}>\n {children}\n </Link>\n );\n};\n\nexport default HeaderLink;\n\n/* eslint react/require-default-props: 0 */\nHeaderLink.propTypes = {\n to: PropTypes.string,\n};\n","/* global SingleMvpd */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport { forceHttps, isMvpdSubscription } from 'helpers/ContentHelper';\nimport { isPreviewPass } from 'helpers/PlayerHelper';\nimport { getSegmentMVPDEvents, setSegmentPageStartSource } from '@foxcorp/delta-web-analytics';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport HeaderLink from '../HeaderLink';\nimport style from './ProviderLogo.module.scss';\n\nconst disableAuthentication = () => {\n const { disableAuthentication = false } = window.ExternalConfig;\n\n return disableAuthentication;\n};\n\nconst ProviderLogo = ({\n isSearchActive,\n onLogoutClick,\n provider,\n providerSet,\n renderPreviewPass,\n setTriggerAuthCheck,\n toggleMvpdAuthOverlay,\n}) => {\n if (SingleMvpd || disableAuthentication()) return null;\n\n const {\n profileMenu_providerSignIn: signInLabel,\n profileLogout_logoutButton: signoutLabel,\n } = window.Language;\n const MVPDEvents = getSegmentMVPDEvents();\n const mvpd = _.get(provider, 'adobePassId');\n const hasProvider = !!provider;\n\n if (!hasProvider || isSearchActive || (isPreviewPass(mvpd) && !renderPreviewPass)) {\n const options = {\n onOverlayClose: () => {\n setTriggerAuthCheck(true);\n toggleMvpdAuthOverlay(false);\n },\n };\n const onClick = () => {\n setSegmentPageStartSource({ isHeader: true });\n logEvent('onMVPDSignIn');\n setTriggerAuthCheck(false);\n MVPDEvents.authenticationSelectProviderStarted();\n toggleMvpdAuthOverlay(true, options, false);\n };\n return (\n <button className={style.mvpdButton} onClick={onClick} type=\"button\">\n {signInLabel}\n </button>\n );\n }\n\n const secondaryLogo = _.get(provider, 'logos[0].url');\n const providerLogo = forceHttps(_.get(provider, 'logos[1].url', secondaryLogo));\n const providerClasses = classNames(\n style.rightIcon,\n style.providerLogo,\n style.providerLogoDesktop,\n );\n const signOutButton = () => {\n if (isPreviewPass(mvpd) || isMvpdSubscription()) return null;\n return (\n <div className={style.signOutContainer}>\n <button\n className={style.signOutButton}\n onClick={e => {\n onLogoutClick(e);\n }}\n >\n {signoutLabel}\n </button>\n </div>\n );\n };\n\n if (!providerLogo || !providerSet) return null;\n let image = <img src={providerLogo} alt={_.get(provider, 'name', 'Cable Provider Logo')} />;\n if (provider.siteUrl) {\n image = HeaderLink({ to: provider.siteUrl, target: '_self' }, image);\n }\n return (\n <div className={providerClasses}>\n {image}\n {signOutButton()}\n </div>\n );\n};\n\nexport default ProviderLogo;\n\nProviderLogo.propTypes = {\n isSearchActive: PropTypes.bool.isRequired,\n onLogoutClick: PropTypes.func.isRequired,\n provider: PropTypes.shape({\n logos: PropTypes.array,\n }),\n providerSet: PropTypes.bool.isRequired,\n renderPreviewPass: PropTypes.bool.isRequired,\n setTriggerAuthCheck: PropTypes.func.isRequired,\n toggleMvpdAuthOverlay: PropTypes.func.isRequired,\n};\n\nProviderLogo.defaultProps = {\n provider: null,\n};\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { checkAuthentication, getEntitlements } from 'helpers/auth.clientless';\nimport { getAuthorizedResources } from 'components/AuthClientless/AuthHelper';\nimport { getMVPDCookie, setMVPDCookie, removeMVPDCookie } from 'helpers/ContentHelper';\nimport { clientlessRecurringPreAuthZRefresh, tveEnabled } from 'helpers/ConfigHelper';\nimport { getAdditionalAuthorizedNetworks, MVPD_COOKIE_NAME } from 'helpers/AuthHelper';\nimport { getDefaultClientlessOptions } from 'helpers/AuthClientlessHelper';\nimport { setPreauthorizedResourcesAction } from 'index/AppActions';\n\nconst REFRESH_INTERVAL_MS = clientlessRecurringPreAuthZRefresh();\nclass PreauthRefresh extends Component {\n componentDidMount() {\n this.refreshPreauthorizedResources(REFRESH_INTERVAL_MS);\n }\n\n componentWillUnmount() {\n const { clearInterval } = this.props;\n if (this.interval) {\n clearInterval(this.interval);\n }\n }\n\n checkClientlessPreauthorizedResources = async () => {\n const {\n accessToken,\n deviceId,\n setAuthorizationToken,\n setMVPDToAppState,\n setPreauthRefreshComplete,\n setPreauthorizedResources,\n setProvider,\n } = this.props;\n const additionalAuthorizedNetworks = getAdditionalAuthorizedNetworks();\n const options = {\n ...getDefaultClientlessOptions(),\n accessToken,\n deviceId,\n ignoreCache: true,\n mvpdCookieName: MVPD_COOKIE_NAME,\n setMVPDToAppState,\n setProvider,\n };\n\n let authResult;\n try {\n authResult = await checkAuthentication(options);\n } catch (error) {\n setPreauthRefreshComplete(true);\n return;\n }\n const newAccessToken = _.get(authResult, 'accessToken');\n setAuthorizationToken(newAccessToken);\n const getEntitlementsOptions = {\n ...options,\n accessToken: newAccessToken,\n ignoreCache: true,\n setMVPDToAppState,\n };\n\n let getEntitlementsResult = null;\n try {\n getEntitlementsResult = await getEntitlements(getEntitlementsOptions);\n } catch (error) {\n console.error('getEntitlements error', error);\n }\n const entitlements = _.get(getEntitlementsResult, 'entitlements', {});\n const preAuthorizedNetworks = getAuthorizedResources(\n _.keys(entitlements),\n additionalAuthorizedNetworks,\n );\n\n this.updateMVPDCookie(preAuthorizedNetworks);\n setPreauthorizedResources(preAuthorizedNetworks);\n setPreauthRefreshComplete(true);\n };\n\n refreshPreauthorizedResources = interval => {\n const { setInterval } = this.props;\n if (!tveEnabled()) return;\n this.checkClientlessPreauthorizedResources();\n this.interval = setInterval(this.checkClientlessPreauthorizedResources, interval);\n };\n\n updateMVPDCookie = preAuthorizedResources => {\n const mvpdCookie = getMVPDCookie();\n if (mvpdCookie) {\n removeMVPDCookie({ options: { path: '/' } });\n mvpdCookie.preauthorizedResources = preAuthorizedResources;\n setMVPDCookie({ value: mvpdCookie, options: { path: '/' } });\n }\n };\n\n render() {\n return null;\n }\n}\n\nPreauthRefresh.defaultProps = {\n accessToken: null,\n setAuthorizationToken: () => {},\n setMVPDToAppState: () => {},\n};\n\nPreauthRefresh.propTypes = {\n accessToken: PropTypes.string,\n clearInterval: PropTypes.func.isRequired,\n deviceId: PropTypes.string,\n setAuthorizationToken: PropTypes.func,\n setInterval: PropTypes.func.isRequired,\n setMVPDToAppState: PropTypes.func,\n setPreauthRefreshComplete: PropTypes.func.isRequired,\n setPreauthorizedResources: PropTypes.func.isRequired,\n setProvider: PropTypes.func.isRequired,\n};\n\nconst mapDispatchToProps = {\n setPreauthorizedResources: setPreauthorizedResourcesAction,\n};\n\nexport default connect(\n null,\n mapDispatchToProps,\n)(ReactTimeout(PreauthRefresh));\n","/* global BaseUrl, ProfileEnabled, MobileMenuEnabled, SingleMvpd */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { connect } from 'react-redux';\nimport Headroom from 'react-headroom';\nimport { animateScroll } from 'react-scroll';\nimport ReactTimeout from 'react-timeout';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { authMVPDLogout, getPreviewPassTime, getProviderObjectFromList } from 'helpers/AuthHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport NetworkLink from 'components/NetworkLink';\nimport NetworkBar from 'components/NetworkBar';\nimport SignUpModalContainer from 'components/SignUpModalContainer';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n isMobileBreakpoint,\n} from 'helpers/BreakpointHelper';\nimport { isPreviewPass } from 'helpers/PlayerHelper';\nimport {\n forceHttps,\n getFontClassName,\n getMVPDCookie,\n getMVPDFromCookie,\n getUrlTarget,\n isMvpdSubscription,\n isStaticRender,\n OOM_LIVE_PLAYER_URL_COOKIE_NAME,\n setOutOfMarketLocalCookies,\n urlIsExternal,\n} from 'helpers/ContentHelper';\nimport {\n OVERLAY_HEADER_SEARCH,\n OVERLAY_HEADER_DROPDOWN,\n OVERLAY_VIDEO_MODAL,\n} from 'helpers/FilterHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport {\n helperGetAccountUrl,\n helperGetBaseUrlSlug,\n helperGetNetworkUpsellUrl,\n helperGetPersonalitiesUrl,\n helperGetFNCLiveUrl,\n setPathForReEntryRedirect,\n refreshPage,\n} from 'helpers/RouteHelper';\nimport {\n modifyBreakpoints as optimizelyModifyBreakpoints,\n getOptimizelyRedesignDisabledPages,\n} from 'helpers/OptimizelyHelper';\nimport { PAGE_NETWORK_UPSELL } from 'helpers/PageHelper';\nimport {\n BUILD_VERSION,\n getTealiumCurrentBrand,\n callTealiumEvent,\n getSegmentMVPDEvents,\n getTealiumAuthStartSource,\n getTealiumRedesignEvents,\n setSegmentPageStartSource,\n setTealiumProfileId,\n setTealiumProfileStartSource,\n setTealiumSourceAuth,\n TEALIUM_EVENT_PREFIX,\n handleAnalytics,\n Events,\n} from '@foxcorp/delta-web-analytics';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport { getCookie } from 'helpers/Storage';\nimport { fetchMVPDProvidersAction, setPreauthorizedResourcesAction } from 'index/AppActions';\nimport { fetchCollectionsOnHeaderClick } from 'screens/Collection/Actions';\nimport {\n Categories,\n ProviderLogo,\n SearchIcon,\n StoreIcon,\n BuythroughProfileIcon,\n HamburgerButton,\n MobileCloseButton,\n} from './DefaultHeaderComponents';\nimport { determineBrowser, getPreviewPassTimeDiff } from './HeaderHelpers';\nimport PreauthRefresh from './PreauthRefresh';\nimport DefaultHeaderStyle from './DefaultHeaderComponents/DefaultHeader.module.scss';\nimport Style from './Header.module.scss';\n\nconst BREAKPOINTS = (() => {\n const breakpoints = {\n [SITE_PLATFORM_WEB_LARGE]: {\n darkNavOnHomepage: false,\n darkNavOnListing: true,\n darkNavOnVideo: true,\n darkNavOnNetworkUpsellPage: true,\n smartBannerBar: false,\n foxAwesomeLayout: false,\n useHoverMenu: false,\n hamburgerMenuEnabled: false,\n },\n [SITE_PLATFORM_WEB]: {\n darkNavOnHomepage: false,\n darkNavOnListing: true,\n darkNavOnVideo: true,\n darkNavOnNetworkUpsellPage: true,\n smartBannerBar: false,\n foxAwesomeLayout: false,\n useHoverMenu: false,\n hamburgerMenuEnabled: false,\n },\n [SITE_PLATFORM_TABLET]: {\n darkNavOnHomepage: true,\n darkNavOnListing: true,\n darkNavOnVideo: true,\n darkNavOnNetworkUpsellPage: true,\n smartBannerBar: false,\n foxAwesomeLayout: false,\n useHoverMenu: false,\n allCollectionsInNav: true,\n hamburgerMenuEnabled: MobileMenuEnabled,\n },\n [SITE_PLATFORM_MOBILE]: {\n darkNavOnHomepage: true,\n darkNavOnListing: true,\n darkNavOnVideo: true,\n darkNavOnNetworkUpsellPage: true,\n smartBannerBar: true,\n foxAwesomeLayout: false,\n useHoverMenu: false,\n allCollectionsInNav: true,\n hamburgerMenuEnabled: MobileMenuEnabled,\n },\n };\n return optimizelyModifyBreakpoints(breakpoints, 'header');\n})();\n\nconst NAME = 'Header';\n\nclass Header extends Component {\n constructor(props) {\n super(props);\n const previewPassTime = getPreviewPassTime();\n const timeDiff = getPreviewPassTimeDiff(previewPassTime);\n const renderPreviewPass = !!(timeDiff !== null && timeDiff > 0);\n this.state = {\n providerSet: false,\n renderPreviewPass,\n renderProfileDropdown: false,\n previewPassTime,\n };\n\n this.authMVPDLogout = authMVPDLogout.bind(this);\n this.timeout = null;\n }\n\n componentDidMount() {\n const { providerSet } = this.state;\n const { deviceId, fetchMVPDProviders } = this.props;\n const mvpd = getMVPDFromCookie();\n const shouldFetchMVPDProviders = mvpd && !providerSet;\n if (shouldFetchMVPDProviders) fetchMVPDProviders(deviceId);\n this.startPreviewPassTimeout();\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { mvpdProviders, setProvider, setIsAuthenticated, isAuthenticated } = nextProps;\n\n const {\n isAuthenticated: currentIsAuthenticated,\n setPreauthorizedResources,\n clearTimeout,\n } = this.props;\n let newState = {};\n let setStateCallback = () => {};\n\n const { providerSet } = this.state;\n const didFetchProviders = mvpdProviders && !providerSet;\n const didAuthenticate = !currentIsAuthenticated && isAuthenticated;\n if (didFetchProviders || didAuthenticate) {\n const mvpdCookie = getMVPDCookie();\n const mvpd = getMVPDFromCookie();\n const previewPassTime = getPreviewPassTime();\n const timeDiff = getPreviewPassTimeDiff(previewPassTime);\n const validTimeDiff = timeDiff !== null && timeDiff > 0;\n\n const renderPreviewPass = validTimeDiff || isPreviewPass(mvpd);\n const preauthorizedResources = _.get(mvpdCookie, 'preauthorizedResources');\n const mvpdFetched = getProviderObjectFromList(mvpdProviders, mvpd);\n if (mvpd && mvpdFetched) {\n newState = Object.assign(newState, {\n providerSet: true,\n previewPassTime,\n renderPreviewPass,\n });\n setStateCallback = () => {\n if (setProvider) setProvider(mvpd);\n if (setIsAuthenticated && !isPreviewPass(mvpd)) {\n setIsAuthenticated(true);\n }\n if (preauthorizedResources) setPreauthorizedResources(preauthorizedResources);\n if (renderPreviewPass) {\n clearTimeout(this.timeout);\n this.startPreviewPassTimeout();\n }\n };\n }\n }\n if (!_.isEmpty(newState)) this.setState(newState, setStateCallback);\n }\n\n shouldComponentUpdate(nextProps) {\n const newProps = this.getChangingProps(nextProps);\n const oldProps = this.getChangingProps(this.props);\n return !_.isEqual(newProps, oldProps);\n }\n\n componentWillUnmount() {\n const { clearTimeout } = this.props;\n clearTimeout(this.timeout);\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n getChangingProps = props => {\n const {\n accessToken,\n account,\n appView,\n breakpoint,\n buythroughScenario,\n campaignOverrides,\n coordinates,\n deviceId,\n dynamicNavigation,\n favoritesManager,\n geoLocationBlocked,\n isAuthenticated,\n isHeader,\n isHeaderPinned,\n isHomePage,\n isListPage,\n isLivePage,\n isNavScheduleRendered,\n isPlayerLoaded,\n isSeriesDetailPage,\n isSmartBannerEnabled,\n isStandalone,\n isVideoPage,\n isWatchPage,\n location,\n maintenance,\n mvpdData,\n mvpdProviders,\n overlay,\n params,\n preauthorizedResources,\n preauthRefreshComplete,\n provider,\n showAppDownloadPrompt,\n useSimplified,\n visibleCollections,\n } = props;\n return {\n accessToken,\n account,\n appView,\n breakpoint,\n buythroughScenario,\n campaignOverrides,\n coordinates,\n deviceId,\n dynamicNavigation,\n favoritesManager,\n geoLocationBlocked,\n isAuthenticated,\n isHeader,\n isHeaderPinned,\n isHomePage,\n isListPage,\n isLivePage,\n isNavScheduleRendered,\n isPlayerLoaded,\n isSeriesDetailPage,\n isSmartBannerEnabled,\n isStandalone,\n isVideoPage,\n isWatchPage,\n location,\n maintenance,\n mvpdData,\n mvpdProviders,\n overlay,\n params,\n preauthorizedResources,\n preauthRefreshComplete,\n provider,\n showAppDownloadPrompt,\n useSimplified,\n visibleCollections,\n };\n };\n\n setWrapperRef = node => {\n this.wrapperRef = node;\n };\n\n handleClickOutside = event => {\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n const { renderProfileDropdown } = this.state;\n if (renderProfileDropdown) this.setState({ renderProfileDropdown: false });\n }\n };\n\n disableAuthentication = () => {\n const { disableAuthentication = false } = window.ExternalConfig;\n\n return disableAuthentication;\n };\n\n onMobileMenuClick = () => {\n const { setOverlay } = this.props;\n this.callCollectionImpressionEvent();\n setOverlay(OVERLAY_HEADER_DROPDOWN);\n };\n\n onNavClick = ({ e, text }) => {\n const { onNavClick, setOverlay, upcomingOverlayOpen } = this.props;\n this.callCollectionImpressionEvent();\n if (onNavClick) onNavClick(e);\n animateScroll.scrollTo(0, { duration: 125, smooth: true });\n setOverlay(OVERLAY_HEADER_SEARCH, false);\n setOverlay(OVERLAY_HEADER_DROPDOWN, false);\n setOverlay(OVERLAY_VIDEO_MODAL, false);\n upcomingOverlayOpen(false);\n };\n\n onSearchClick = e => {\n const { onSearchClick } = this.props;\n\n handleAnalytics({\n event: Events.GLOBAL_NAV_CLICKED,\n payload: { page_item_title: 'Search' },\n });\n this.callCollectionImpressionEvent();\n if (onSearchClick) {\n onSearchClick(e);\n }\n };\n\n onSignInClick = () => {\n this.callCollectionImpressionEvent();\n this.toggleMvpdAuthOverlay();\n };\n\n onLogoutClick = async e => {\n e.preventDefault();\n await this.authMVPDLogout();\n };\n\n onSignUpClick = ({ text }) => {\n const { location } = this.props;\n const { pathname } = location;\n setPathForReEntryRedirect(pathname);\n\n handleAnalytics({\n event: Events.UPGRADE_NOW_BUTTON_CLICKED,\n payload: {\n page_item_title: text,\n page_action_location: 'global nav',\n },\n });\n this.callCollectionImpressionEvent();\n\n const options = {\n showEmailForm: true,\n showUpsellProgressBar: true,\n upsellRedirectOnProviderClick: true,\n isSignIn: false,\n };\n this.toggleMvpdAuthOverlay(options);\n return null;\n };\n\n onUnfix = () => {\n const { setHeaderPin } = this.props;\n setHeaderPin(true);\n };\n\n onUnpin = () => {\n const { overlay, setHeaderPin } = this.props;\n if (overlay === OVERLAY_HEADER_SEARCH) return;\n setHeaderPin(false);\n };\n\n getGlobalNavItems = () => {\n const { accessToken, deviceId, fetchCollectionsOnHeaderClick } = this.props;\n const data = _.get(window.ExternalConfig, 'navigation', []);\n const disabledCollectionPages = getOptimizelyRedesignDisabledPages();\n let provider = null;\n let account = null;\n\n if (this.isMobileActive()) {\n provider = this.renderMobileProvider();\n account = this.renderMobileProfile();\n }\n\n const isOutOfMarketLivePage = getCookie({ name: OOM_LIVE_PLAYER_URL_COOKIE_NAME });\n const items = data.map((item, idx) => {\n const { breakpoint } = this.props;\n const { useHoverMenu, hamburgerMenuEnabled } = BREAKPOINTS[breakpoint];\n const { label, link = '', screenUrl = '', hidden = false } = item;\n if (hidden) return null;\n if (label === 'divider') {\n const separatorKey = `separator-${idx}`;\n const separator = <div key={separatorKey} className={Style.dropdownSeparator} />;\n return !hamburgerMenuEnabled ? separator : null;\n }\n const baseUrlSlug = helperGetBaseUrlSlug();\n const locationPath = _.get(window, 'location.pathname');\n const fullLink = `${baseUrlSlug}${link}`;\n const isPersonalityUrl = _.includes(locationPath, helperGetPersonalitiesUrl());\n let linkIsActive = fullLink === locationPath;\n if (link !== '/') linkIsActive = _.includes(locationPath, link);\n if (isPersonalityUrl && locationPath !== helperGetPersonalitiesUrl()) linkIsActive = false;\n const disableCollectionFetch = _.includes(disabledCollectionPages, label);\n const isFNCLiveLink = link === helperGetFNCLiveUrl();\n\n let styles = [Style.categoryItem];\n if (useHoverMenu) styles.push(Style.dropdownShowsMovies);\n if (linkIsActive && !isOutOfMarketLivePage) styles.push(Style.categoryItemActive);\n if (isFNCLiveLink) styles.push(Style.categoryItemLive);\n\n if (this.isMobileActive()) {\n styles = Style.categoryItemMobilev2;\n }\n const navItemProps = {\n key: _.uniqueId(),\n to: fullLink,\n href: fullLink,\n className: classNames(styles),\n onClick: e => {\n const linkUrl = e.target.getAttribute('href');\n if (isOutOfMarketLivePage && linkUrl?.includes('live')) {\n setOutOfMarketLocalCookies({ resetCookies: true });\n window.location.reload();\n }\n if (screenUrl && !disableCollectionFetch) {\n fetchCollectionsOnHeaderClick(screenUrl, 3, accessToken, label, deviceId);\n }\n handleAnalytics({\n event: Events.GLOBAL_NAV_CLICKED,\n payload: { page_item_title: label },\n });\n this.onNavClick({ e });\n },\n };\n return this.renderLink(navItemProps, label, idx);\n });\n return [...items, account, provider];\n };\n\n getPageLocation = () => {\n if (this.isAuthFlowActive()) return 'authentication flow';\n return 'other';\n };\n\n callCollectionImpressionEvent = () => {\n const { account, collectionImpressionCalled, visibleCollections } = this.props;\n const tealiumRedesignEvents = getTealiumRedesignEvents({ account });\n if (tealiumRedesignEvents) {\n tealiumRedesignEvents.collectionImpression({ visibleCollections });\n }\n collectionImpressionCalled();\n };\n\n tealiumAuthStart = () => {\n const {\n account,\n location: { pathname },\n } = this.props;\n this.callCollectionImpressionEvent();\n const action = 'authentication_start';\n const profileId = _.get(account, 'profileId');\n const authStartSource = getTealiumAuthStartSource({\n pathname,\n networkUpsellPage: helperGetNetworkUpsellUrl(),\n });\n const profileStartSource = 'global nav';\n setTealiumSourceAuth(authStartSource);\n setTealiumProfileStartSource('global nav');\n const data = setTealiumProfileId(profileId, {\n action,\n auth_start_source: authStartSource,\n dcg_profile_id: profileId,\n platform_version: BUILD_VERSION,\n profile_start_source: profileStartSource,\n ...getCommonTealiumProps(),\n });\n callTealiumEvent(`${TEALIUM_EVENT_PREFIX}${action}`, data);\n setTealiumSourceAuth(authStartSource);\n };\n\n toggleMvpdAuthOverlay = (opts = {}) => {\n const {\n isAuthenticated,\n location: { pathName },\n toggleMvpdAuthOverlay,\n } = this.props;\n\n const show = _.get(opts, 'show', true);\n const showEmailForm = _.get(opts, 'showEmailForm', false);\n const showUpsellProgressBar = _.get(opts, 'showUpsellProgressBar', false);\n const upsellRedirectOnProviderClick = _.get(opts, 'upsellRedirectOnProviderClick', false);\n\n const options = {\n onAuthCheckComplete: () => {},\n onOverlayClose: () => {\n toggleMvpdAuthOverlay(false);\n },\n showEmailForm,\n showLoaderAfterAuth: true,\n showUpsellProgressBar,\n upsellRedirectOnProviderClick,\n };\n if (!isAuthenticated) this.tealiumAuthStart(pathName);\n toggleMvpdAuthOverlay(show, options);\n };\n\n toggleProfileDropdown = () => {\n const { renderProfileDropdown: prevRenderProfileDropdown } = this.state;\n this.callCollectionImpressionEvent();\n this.setState({ renderProfileDropdown: !prevRenderProfileDropdown });\n };\n\n startPreviewPassTimeout() {\n const { setTimeout } = this.props;\n const { previewPassTime } = this.state;\n\n const timeDiff = getPreviewPassTimeDiff(previewPassTime);\n const shouldSetTimeout = !!(timeDiff !== null && timeDiff > 0);\n\n if (!shouldSetTimeout) return;\n\n this.timeout = setTimeout(() => {\n this.setState({ renderPreviewPass: false });\n }, timeDiff);\n }\n\n isAuthFlowActive() {\n const { overlay } = this.props;\n return overlay && _.includes(overlay, 'OVERLAY_MVPD_AUTH');\n }\n\n isMenuOpen() {\n const { overlay } = this.props;\n return overlay === OVERLAY_HEADER_DROPDOWN;\n }\n\n isMobile() {\n const { breakpoint } = this.props;\n return isMobileBreakpoint(breakpoint);\n }\n\n isMobileActive = () => {\n const { breakpoint } = this.props;\n const { hamburgerMenuEnabled } = BREAKPOINTS[breakpoint];\n return hamburgerMenuEnabled && this.isMenuOpen();\n };\n\n isSearchActive = () => {\n const { overlay } = this.props;\n return overlay === OVERLAY_HEADER_SEARCH;\n };\n\n isTablet() {\n const { breakpoint } = this.props;\n return breakpoint === SITE_PLATFORM_TABLET;\n }\n\n isWeb = () => {\n const { breakpoint } = this.props;\n const isWebLargeBreakpoint = breakpoint === SITE_PLATFORM_WEB_LARGE;\n const isWebBreakpoint = breakpoint === SITE_PLATFORM_WEB;\n return isWebLargeBreakpoint || isWebBreakpoint;\n };\n\n renderContent() {\n const {\n account,\n breakpoint,\n campaignOverrides,\n favoritesManager,\n geoLocationBlocked: isBlocked,\n isLivePage,\n isWatchPage,\n maintenance: isMaintenance,\n preauthRefreshComplete,\n provider,\n setTriggerAuthCheck,\n toggleMvpdAuthOverlay,\n } = this.props;\n const { providerSet, renderPreviewPass, renderProfileDropdown } = this.state;\n const { foxAwesomeLayout } = BREAKPOINTS[breakpoint];\n const contentClasses = foxAwesomeLayout ? [Style.foxAwesomeContent] : [Style.content];\n contentClasses.push(Style.fullWidth);\n let profileIcon;\n const defaultProfileIcon = this.renderProfileIcon();\n\n const buythroughProfileIconProps = {\n account,\n favoritesManager,\n isWeb: this.isWeb,\n renderProfileDropdown,\n setWrapperRef: this.setWrapperRef,\n toggleProfileDropdown: this.toggleProfileDropdown,\n };\n\n // TODO: might need to be removed as well\n if (isMvpdSubscription()) {\n profileIcon = BuythroughProfileIcon(buythroughProfileIconProps);\n } else {\n profileIcon = account\n ? BuythroughProfileIcon(buythroughProfileIconProps)\n : defaultProfileIcon;\n }\n\n if (!this.isWeb() && !this.isTablet()) profileIcon = null;\n\n const hasProvider = !!provider;\n const divider = () => {\n if (\n !this.disableAuthentication() &&\n (account || hasProvider) &&\n this.isWeb() &&\n preauthRefreshComplete\n )\n return <div key=\"header-divider\" className={DefaultHeaderStyle.profileDivider} />;\n return null;\n };\n\n const isSimplifiedHeader = isBlocked || isMaintenance;\n\n if (isSimplifiedHeader) {\n contentClasses.push(Style.maintenance);\n return <div className={classNames(contentClasses)}>{this.renderIndexLink()}</div>;\n }\n\n const menuOpen = this.isMenuOpen();\n const isSearchActive = this.isSearchActive();\n\n const rightContentClasses = {\n [DefaultHeaderStyle.hideContent]: menuOpen,\n [DefaultHeaderStyle.rightContent]: true,\n };\n const categoryProps = {\n getGlobalNavItems: this.getGlobalNavItems,\n menuOpen,\n campaignOverrides,\n isLivePage,\n isMobileActive: this.isMobileActive,\n isWatchPage,\n desktopCategories: true,\n };\n const providerProps = {\n isSearchActive,\n onLogoutClick: this.onLogoutClick,\n provider,\n providerSet,\n renderPreviewPass,\n setTriggerAuthCheck,\n toggleMvpdAuthOverlay,\n };\n\n return (\n <div className={DefaultHeaderStyle.headerContentWrapper}>\n <div className={classNames(DefaultHeaderStyle.content, DefaultHeaderStyle.fullWidth)}>\n <div className={DefaultHeaderStyle.leftContent}>\n <div className={DefaultHeaderStyle.logoProviderWrapper}>{this.renderIndexLink()}</div>\n </div>\n {Categories(categoryProps)}\n {menuOpen && MobileCloseButton(this.onMobileMenuClick)}\n <div className={classNames(rightContentClasses)}>\n <ProviderLogo {...providerProps} />\n <div className={DefaultHeaderStyle.iconContainer}>\n {SearchIcon(this.onSearchClick)}\n {[divider(), profileIcon]}\n {StoreIcon()}\n </div>\n {HamburgerButton(this.onMobileMenuClick)}\n </div>\n </div>\n </div>\n );\n }\n\n renderIndexLink = () => {\n const {\n breakpoint,\n preauthorizedResources,\n upcomingOverlayOpen,\n fetchCollectionsOnHeaderClick,\n deviceId,\n accessToken,\n } = this.props;\n const [home] = _.get(window.ExternalConfig, 'navigation', []);\n const { screenUrl, label } = home;\n const disableCollectionFetch = _.includes(getOptimizelyRedesignDisabledPages(), label);\n return (\n <NetworkLink\n breakpoint={breakpoint}\n preauthorizedResources={preauthorizedResources}\n theme={Style}\n clickEvent={e => {\n if (screenUrl && !disableCollectionFetch) {\n fetchCollectionsOnHeaderClick(screenUrl, 3, accessToken, label, deviceId);\n }\n this.onNavClick({ e, text: getTealiumCurrentBrand() });\n handleAnalytics({\n event: Events.GLOBAL_NAV_CLICKED,\n payload: { page_item_title: 'Network Logo' },\n });\n upcomingOverlayOpen(false);\n }}\n isHeader\n />\n );\n };\n\n renderLink = (props, children, idx) => {\n const route = _.get(props, 'to');\n const targetData = getUrlTarget(route);\n const anchorProps = { ...props, ...targetData };\n const key = `link${route}.${idx}`;\n const isFoxNewsLiveLink = typeof children === 'string' && children?.includes('+');\n let altChildren;\n if (isFoxNewsLiveLink) {\n altChildren = (\n <>\n {children.replace('+', '')}\n <span className={Style.navItemPlus}>+</span>\n </>\n );\n }\n if (urlIsExternal(route)) {\n const isExternal = urlIsExternal(route);\n if (isExternal) {\n anchorProps.href = route;\n } else if (!isExternal && route) {\n anchorProps.href = `${BaseUrl}${route}`;\n }\n return (\n <a key={key} {...anchorProps}>\n {altChildren || children}\n </a>\n );\n }\n\n return (\n <Link key={key} {...anchorProps} aria-label={(isFoxNewsLiveLink && 'Live News') || null}>\n {altChildren || children}\n </Link>\n );\n };\n\n renderProfileIcon() {\n if (!ProfileEnabled || isStaticRender() || this.disableAuthentication()) return null;\n\n const { account, setAccountCloseIgnoreRedirect } = this.props;\n const { profileMenu_profileSignIn: profileSignInText } = window.Language;\n let label = (\n <button\n className={DefaultHeaderStyle.profileButton}\n type=\"button\"\n aria-label=\"sign up or login to profile\"\n >\n {profileSignInText}\n </button>\n );\n if (account) {\n const username = _.get(account, 'firstName');\n label = (\n <button className={Style.userButton} type=\"button\" aria-label=\"manage your profile\">\n {username}\n </button>\n );\n }\n const props = {\n to: helperGetAccountUrl(),\n key: 'headerProfileIcon',\n onClick: () => {\n this.callCollectionImpressionEvent();\n setAccountCloseIgnoreRedirect(false);\n },\n 'aria-label': 'Profile Icon',\n };\n return (\n <div key=\"header-profile-icon\" data-test=\"profile-icon\">\n {this.renderLink(props, label)}\n </div>\n );\n }\n\n renderMobileProfile() {\n if (!ProfileEnabled || isStaticRender() || this.disableAuthentication()) return null;\n const { account, setAccountCloseIgnoreRedirect } = this.props;\n const { profile_header: profileLabel, auth_signInButton: signInLabel } = window.Language;\n const style = classNames(Style.categoryItemMobilev2, Style.mobileSplit);\n let label = (\n <a className={style} aria-label=\"sign up or login to account\">\n <span>{profileLabel}</span>\n <span>{signInLabel}</span>\n </a>\n );\n if (account || isMvpdSubscription()) {\n const username = _.get(account, 'firstName');\n const displayName = username ? `${username}'s account` : 'My Account';\n label = (\n <div className={style} aria-label=\"manage your account\">\n <span>{displayName}</span>\n <span>\n <Icon className={Style.rightArrow} size=\"large\" color=\"grey\" icon=\"arrow-right\" />\n </span>\n </div>\n );\n }\n const props = {\n to: helperGetAccountUrl(),\n key: 'headerProfileIcon',\n onClick: () => {\n this.callCollectionImpressionEvent();\n setAccountCloseIgnoreRedirect(false);\n },\n 'aria-label': 'Profile Icon',\n };\n return <div data-test=\"profile-icon\">{this.renderLink(props, label)}</div>;\n }\n\n renderProvider = () => {\n if (SingleMvpd || this.disableAuthentication()) return null;\n const { breakpoint, provider, setTriggerAuthCheck, toggleMvpdAuthOverlay } = this.props;\n const {\n profileMenu_providerSignIn: signInLabel,\n profileLogout_logoutButton: signoutLabel,\n } = window.Language;\n const MVPDEvents = getSegmentMVPDEvents();\n const { hamburgerMenuEnabled } = BREAKPOINTS[breakpoint];\n const { providerSet, renderPreviewPass } = this.state;\n const mvpd = _.get(provider, 'adobePassId');\n const hasProvider = !!provider;\n const isSearchActive = this.isSearchActive();\n\n if (!hasProvider || isSearchActive || (isPreviewPass(mvpd) && !renderPreviewPass)) {\n const options = {\n onOverlayClose: () => {\n setTriggerAuthCheck(true);\n toggleMvpdAuthOverlay(false);\n },\n };\n const onClick = () => {\n setSegmentPageStartSource({ isHeader: true });\n logEvent('onMVPDSignIn');\n setTriggerAuthCheck(false);\n MVPDEvents.authenticationSelectProviderStarted();\n toggleMvpdAuthOverlay(true, options, false);\n };\n return (\n <button className={Style.mvpdButton} onClick={onClick} type=\"button\">\n {signInLabel}\n </button>\n );\n }\n\n const secondaryLogo = _.get(provider, 'logos[0].url');\n const providerLogo = forceHttps(_.get(provider, 'logos[1].url', secondaryLogo));\n let providerClasses = Style.providerLogo;\n\n if (!hamburgerMenuEnabled) {\n providerClasses = classNames(Style.rightIcon, providerClasses, Style.providerLogoDesktop);\n }\n const signOutButton = () => {\n if (isPreviewPass(mvpd) || isMvpdSubscription()) return null;\n return (\n <div className={Style.signOutContainer}>\n <button\n className={Style.signOutButton}\n onClick={e => {\n this.onLogoutClick(e);\n }}\n >\n {signoutLabel}\n </button>\n </div>\n );\n };\n\n if (!providerLogo || !providerSet) return null;\n let image = <img src={providerLogo} alt={_.get(provider, 'name', 'Cable Provider Logo')} />;\n if (provider.siteUrl) {\n image = this.renderLink({ to: provider.siteUrl, target: '_self' }, image);\n }\n return (\n <div className={providerClasses}>\n {image}\n {signOutButton()}\n </div>\n );\n };\n\n renderMobileProvider = () => {\n if (SingleMvpd || this.disableAuthentication()) return null;\n const { provider, setTriggerAuthCheck, toggleMvpdAuthOverlay } = this.props;\n const {\n mvpdSignIn_label: mvpdLabel,\n auth_signInButton: signInLabel,\n profileLogout_logoutButton: signoutLabel,\n } = window.Language;\n const { providerSet, renderPreviewPass } = this.state;\n const mvpd = _.get(provider, 'adobePassId');\n const hasProvider = !!provider;\n const style = classNames(Style.categoryItemMobilev2, Style.mobileSplit);\n const isSearchActive = this.isSearchActive();\n const mvpdIsPreviewPass = isPreviewPass(mvpd);\n\n if (!hasProvider || isSearchActive || (mvpdIsPreviewPass && !renderPreviewPass)) {\n const options = {\n onOverlayClose: () => {\n setTriggerAuthCheck(true);\n toggleMvpdAuthOverlay(false);\n },\n };\n const onClick = () => {\n setTriggerAuthCheck(false);\n toggleMvpdAuthOverlay(true, options, false);\n };\n return (\n <a className={style} onClick={onClick}>\n <span>{mvpdLabel}</span>\n <span>{signInLabel}</span>\n </a>\n );\n }\n\n const secondaryLogo = _.get(provider, 'logos[0].url');\n const providerLogo = forceHttps(_.get(provider, 'logos[1].url', secondaryLogo));\n\n if (!providerLogo || !providerSet) return null;\n let image = <img src={providerLogo} alt={_.get(provider, 'name', 'Cable Provider Logo')} />;\n if (provider.siteUrl) {\n image = this.renderLink({ to: provider.siteUrl, target: '_self' }, image);\n }\n const signOutElement =\n mvpdIsPreviewPass || isMvpdSubscription() ? null : (\n <span\n onClick={e => {\n this.onLogoutClick(e);\n }}\n >\n {signoutLabel}\n </span>\n );\n return (\n <a className={style}>\n <span>{image}</span>\n {signOutElement}\n </a>\n );\n };\n\n renderSignInButton() {\n const { auth_signInButton: signInText } = window.Language;\n return (\n <div\n data-test=\"upsell-sign-in-text\"\n className={Style.accountStatus}\n onClick={() => {\n handleAnalytics({\n event: Events.GLOBAL_NAV_CLICKED,\n payload: { page_item_title: signInText },\n });\n this.onSignInClick({ text: signInText });\n }}\n >\n {signInText}\n </div>\n );\n }\n\n closeModal = () => {\n handleAnalytics({\n event: Events.MODAL_CLOSED,\n payload: {\n page_start_source: 'modal checkout',\n page_plan_flow_type: 'new user acquisition',\n page_item_title: 'x',\n page_action_type: 'close modal',\n },\n });\n window.setTimeout(refreshPage, 500);\n };\n\n render() {\n const {\n accessToken,\n appView,\n campaignOverrides,\n deviceId,\n getCurrentPage,\n isAppViewExcluded,\n isHeader,\n isHeaderPinned,\n isHomePage,\n isSmartBannerEnabled,\n isVideoPage,\n isListPage,\n isLivePage,\n isWatchPage,\n overlay,\n isPlayerLoaded,\n maintenance: isMaintenance,\n breakpoint,\n setAuthorizationToken,\n setMVPDToAppState,\n setPreauthRefreshComplete,\n setProvider,\n useSimplified,\n } = this.props;\n const { hoverMenuDisplayed } = this.state;\n const {\n darkNavOnHomepage,\n darkNavOnListing,\n darkNavOnNetworkUpsellPage,\n darkNavOnVideo,\n hamburgerMenuEnabled,\n } = BREAKPOINTS[breakpoint];\n\n if (appView && isAppViewExcluded(NAME)) return null;\n\n const isNetworkUpsellPage = getCurrentPage() === PAGE_NETWORK_UPSELL;\n\n const browser = determineBrowser();\n const breakpointIsMobile = this.isMobile();\n const mobileActive = this.isMobileActive();\n const externalHide = isHeader === false && isHeaderPinned;\n\n const softHide =\n isVideoPage && externalHide && !overlay && isPlayerLoaded && !breakpointIsMobile\n ? Style.softHide\n : null;\n const darkNav =\n (isNetworkUpsellPage && darkNavOnNetworkUpsellPage) ||\n (isHomePage && (darkNavOnHomepage || hamburgerMenuEnabled)) ||\n (isListPage && darkNavOnListing) ||\n (isVideoPage && darkNavOnVideo);\n const hoverMenuOpen = hoverMenuDisplayed;\n\n const mobileContainerStyle = Style.containerMobilev2;\n\n const container = classNames([\n browser,\n Style.Header,\n softHide,\n mobileActive ? mobileContainerStyle : null,\n darkNav ? Style.containerListPage : null,\n hoverMenuOpen ? Style.containerHoverMenu : null,\n getFontClassName(Style),\n Style.redesignCollections,\n this.isMenuOpen() ? Style.clearHeader : null,\n ]);\n\n const menuOpen = this.isMenuOpen();\n const categoryProps = {\n getGlobalNavItems: this.getGlobalNavItems,\n menuOpen,\n campaignOverrides,\n isLivePage,\n isMobileActive: this.isMobileActive,\n isWatchPage,\n desktopCategories: false,\n };\n let mobileCategories = null;\n if (mobileActive && !isMaintenance) {\n categoryProps.mobileCategories = true;\n mobileCategories = Categories(categoryProps);\n }\n\n const preauthRefreshProps = {\n accessToken,\n deviceId,\n setAuthorizationToken,\n setMVPDToAppState,\n setPreauthRefreshComplete,\n setProvider,\n };\n\n const headerContent = this.renderContent();\n const headerItemsBannerClass = isSmartBannerEnabled ? Style.headerItems : '';\n\n return (\n <>\n <header data-test=\"header\" className={container}>\n <PreauthRefresh {...preauthRefreshProps} />\n <Headroom\n disableInlineStyles\n disable={this.isMobileActive()}\n onUnpin={this.onUnpin}\n onUnfix={this.onUnfix}\n >\n {!breakpointIsMobile && <NetworkBar breakpoint={breakpoint} />}\n <div className={headerItemsBannerClass}>{headerContent}</div>\n </Headroom>\n {mobileCategories}\n </header>\n {useSimplified && <SignUpModalContainer closeModal={this.closeModal} />}\n </>\n );\n }\n}\n\nHeader.defaultProps = {\n accessToken: null,\n account: null,\n buythroughScenario: null,\n campaignOverrides: {},\n clearTimeout: noop,\n collectionImpressionCalled: noop,\n coordinates: null,\n deviceId: null,\n dynamicNavigation: null,\n favoritesManager: {},\n fetchCollectionsOnHeaderClick: noop,\n fetchMVPDProviders: noop,\n geoLocationBlocked: null,\n getCurrentPage: noop,\n isAuthenticated: false,\n isHeader: null,\n isHeaderPinned: null,\n isListPage: false,\n isLivePage: false,\n isNavScheduleRendered: false,\n isPlayerLoaded: false,\n isSmartBannerEnabled: null,\n isVideoPage: null,\n isWatchPage: false,\n isSeriesDetailPage: false,\n logout: noop,\n mvpdData: null,\n mvpdProviders: null,\n onNavClick: noop,\n onSimplifiedSignUpClick: noop,\n onSearchClick: noop,\n overlay: null,\n params: {},\n preauthorizedResources: null,\n provider: null,\n setAccountCloseIgnoreRedirect: noop,\n setAuthorizationToken: noop,\n setCoordinates: noop,\n setMVPDSignInTrigger: noop,\n setMVPDToAppState: noop,\n setNavScheduleRendered: noop,\n setSmartBannerEnabled: noop,\n setTimeout: noop,\n setTriggerAuthCheck: noop,\n showAppDownloadPrompt: false,\n toggleMvpdAuthOverlay: noop,\n upcomingOverlayOpen: noop,\n useSimplified: false,\n visibleCollections: {},\n};\n\nHeader.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n appView: PropTypes.bool.isRequired,\n breakpoint: PropTypes.string.isRequired,\n buythroughScenario: PropTypes.string,\n campaignOverrides: PropTypes.shape({}),\n clearTimeout: PropTypes.func,\n collectionImpressionCalled: PropTypes.func,\n coordinates: PropTypes.shape({}),\n deviceId: PropTypes.string,\n dynamicNavigation: PropTypes.arrayOf(PropTypes.shape({})),\n favoritesManager: PropTypes.shape({}),\n fetchCollectionsOnHeaderClick: PropTypes.func,\n fetchMVPDProviders: PropTypes.func,\n geoLocationBlocked: PropTypes.bool,\n getCurrentPage: PropTypes.func,\n isAppViewExcluded: PropTypes.func.isRequired,\n isAuthenticated: PropTypes.bool,\n isHeader: PropTypes.bool,\n isHeaderPinned: PropTypes.bool,\n isHomePage: PropTypes.bool.isRequired,\n isListPage: PropTypes.bool,\n isLivePage: PropTypes.bool,\n isNavScheduleRendered: PropTypes.bool,\n isPlayerLoaded: PropTypes.bool,\n isSeriesDetailPage: PropTypes.bool,\n isSmartBannerEnabled: PropTypes.bool,\n isVideoPage: PropTypes.bool,\n isWatchPage: PropTypes.bool,\n location: PropTypes.shape({}).isRequired,\n logout: PropTypes.func,\n maintenance: PropTypes.bool.isRequired,\n mvpdData: PropTypes.shape({}),\n mvpdProviders: PropTypes.arrayOf(PropTypes.shape({})),\n onNavClick: PropTypes.func,\n onSimplifiedSignUpClick: PropTypes.func,\n onSearchClick: PropTypes.func,\n overlay: PropTypes.string,\n params: PropTypes.shape({}),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n preauthRefreshComplete: PropTypes.bool.isRequired,\n setMVPDLogoutDataToAppState: PropTypes.func.isRequired,\n provider: PropTypes.shape({\n logos: PropTypes.array,\n }),\n setAccountCloseIgnoreRedirect: PropTypes.func,\n setAuthorizationToken: PropTypes.func,\n setCoordinates: PropTypes.func,\n setHeaderPin: PropTypes.func.isRequired,\n setIsAuthenticated: PropTypes.func.isRequired,\n setMVPDSignInTrigger: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setNavScheduleRendered: PropTypes.func,\n setOverlay: PropTypes.func.isRequired,\n setPreauthorizedResources: PropTypes.func.isRequired,\n setPreauthRefreshComplete: PropTypes.func.isRequired,\n setProvider: PropTypes.func.isRequired,\n setSmartBannerEnabled: PropTypes.func,\n setTimeout: PropTypes.func,\n setTriggerAuthCheck: PropTypes.func,\n showAppDownloadPrompt: PropTypes.bool,\n toggleMvpdAuthOverlay: PropTypes.func,\n upcomingOverlayOpen: PropTypes.func,\n useSimplified: PropTypes.bool,\n visibleCollections: PropTypes.shape({}),\n};\n\nfunction mapStateToProps(state) {\n const visibleCollections = _.get(state, 'collection.visibleCollections', null);\n return { visibleCollections };\n}\n\nexport default React.memo(\n ReactTimeout(\n connect(mapStateToProps, {\n setPreauthorizedResources: setPreauthorizedResourcesAction,\n fetchMVPDProviders: fetchMVPDProvidersAction,\n fetchCollectionsOnHeaderClick,\n })(Header),\n ),\n);\n","import React from 'react';\nimport HeaderLink from '../HeaderLink';\nimport style from './HeaderButton.module.scss';\n\nexport const HamburgerButton = onMobileMenuClick => (\n <button\n aria-label=\"open menu\"\n className={style.menuButton}\n onClick={onMobileMenuClick}\n type=\"button\"\n >\n <div />\n <div />\n <div />\n </button>\n);\n\nexport const MobileCloseButton = onMobileMenuClick => {\n const props = {\n onClick: onMobileMenuClick,\n className: style.closeButton,\n key: 'headerMobileClose',\n 'aria-label': 'close menu',\n };\n return HeaderLink(props);\n};\n","/* global SearchEnabled */\n\nimport React from 'react';\nimport _ from 'lodash';\nimport { getUrlTarget } from 'helpers/ContentHelper';\nimport classNames from 'classnames';\nimport { Link } from 'react-router';\nimport Icon from 'components/Icon';\nimport { helperGetFindUrl } from 'helpers/RouteHelper';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport HeaderLink from '../HeaderLink';\nimport style from './HeaderIcons.module.scss';\n\nexport const SearchIcon = onSearchClick => {\n if (!SearchEnabled) return null;\n\n const icon = <Icon icon=\"search\" ariaHidden />;\n const searchIconClasses = [style.rightIcon, style.searchIcon, style.searchIconInOrder];\n\n const props = {\n className: classNames(searchIconClasses),\n key: 'headerSearchIcon',\n onClick: onSearchClick,\n 'aria-label': 'search the site',\n to: helperGetFindUrl(),\n };\n return HeaderLink(props, icon);\n};\n\nexport const StoreIcon = () => {\n const storeUrl = _.get(window.ExternalConfig, 'storeUrl');\n if (!storeUrl) return null;\n const targetData = getUrlTarget(storeUrl);\n const icon = <Icon icon=\"store-tag\" ariaHidden />;\n const props = {\n className: classNames(style.rightIcon, style.storeIcon),\n key: 'headerStoreIcon',\n href: storeUrl,\n 'aria-label': 'visit our store to shop',\n onClick: () => {\n handleAnalytics(\n {\n event: Events.GLOBAL_NAV_CLICKED,\n payload: { page_item_title: 'Store' },\n },\n { event: Events.SHOP_NOW_BUTTON_CLICKED },\n );\n },\n };\n const linkProps = { ...props, ...targetData };\n return <Link {...linkProps}>{icon}</Link>;\n};\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { Link } from 'react-router';\n\nimport { getUrlTarget, formatDirectUrl } from 'helpers/ContentHelper';\nimport { FOOTER_PROMO, renderImage } from 'helpers/ImageHelper';\n\nconst Promos = props => {\n const { theme, promosPanels, breakpoint } = props;\n\n const renderLink = (linkProps, children) => <Link {...linkProps}>{children}</Link>;\n\n const getPromoItemData = item => {\n const { headline: itemHeadline, description: itemDescription, url } = item;\n const linkUrl = formatDirectUrl(url);\n const targetData = getUrlTarget(url);\n const imageSrc = _.get(item, 'images.promoImage');\n\n return {\n itemHeadline,\n itemDescription,\n linkUrl,\n imageSrc,\n ...targetData,\n };\n };\n\n const renderPromoContent = item => {\n const { itemHeadline, itemDescription, linkUrl: to, target, rel } = getPromoItemData(item);\n\n const linkProps = {\n className: theme.promoHeadlineLink,\n to,\n target,\n rel,\n };\n const linkElement = renderLink(linkProps, itemHeadline);\n\n const contentTag = (\n <div className={theme.promoContentContainer}>\n <div className={theme.promoHeadline}>{linkElement}</div>\n <div className={theme.promoDescription}>{itemDescription}</div>\n </div>\n );\n\n return contentTag;\n };\n\n const renderPromoImage = item => {\n const { itemDescription, linkUrl, target, rel, imageSrc } = this.getPromoItemData(item);\n\n if (!imageSrc) return null;\n const dynamicImage = renderImage({\n breakpoint,\n className: theme.promoImage,\n alt: itemDescription,\n imageType: FOOTER_PROMO,\n src: imageSrc,\n });\n const linkElement = renderLink({ to: linkUrl, target, rel }, dynamicImage);\n return <div className={theme.promoImageContainer}>{linkElement}</div>;\n };\n\n const renderPromoTags = item => {\n const { id: itemId } = item;\n const imageTag = renderPromoImage(item);\n if (!imageTag) return null;\n const contentTag = renderPromoContent(item);\n return (\n <div key={itemId} className={theme.promoContainer}>\n {imageTag}\n {contentTag}\n </div>\n );\n };\n\n if (!promosPanels) return null;\n const member = _.get(promosPanels, 'member');\n const promosTags = member.map(obj => {\n const { items, headline, id } = obj;\n if (!items) {\n return null;\n }\n const itemsMember = _.get(items, 'member');\n const promoTags = itemsMember.map(renderPromoTags);\n return (\n <div key={id}>\n <div className={theme.promosHeadline}>{headline}</div>\n {promoTags}\n </div>\n );\n });\n const promos = promosTags && <div>{promosTags}</div>;\n return <div className={theme.promosContainer}>{promos}</div>;\n};\n\nPromos.propTypes = {\n breakpoint: PropTypes.string,\n promosPanels: PropTypes.shape({}),\n theme: PropTypes.shape({}),\n};\n\nexport default Promos;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\n\nimport helperMarkdownToComponent from 'helpers/Data';\nimport Icon from 'components/Icon';\n\nconst Legal = props => {\n const { theme, legal } = props;\n\n const onClickEvent = {\n 'Privacy Policy': () => {\n handleAnalytics({ event: Events.PRIVACY_POLICY_PAGE_VIEW });\n },\n };\n\n return (\n <div className={theme.legalContainer}>\n <div className={theme.logoWrapper}>\n <Icon viewBox=\"0 0 275 62\" icon=\"fox-watermark-logo\" />\n </div>\n {helperMarkdownToComponent(legal, onClickEvent, {\n Paragraph: props => {\n const { children } = props;\n if (!children) return null;\n return <p className={theme.legalText}>{children}</p>;\n },\n Link: props => (\n // eslint-disable-next-line react/prop-types\n <a href={props.href} className={theme.legalLink} target=\"noopener noreferrer\">\n {props.children}\n </a>\n ),\n })}\n </div>\n );\n};\n\nLegal.propTypes = {\n children: PropTypes.shape({}),\n legal: PropTypes.string,\n theme: PropTypes.shape({}),\n};\n\nexport default Legal;\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgFacebook(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 15c0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 7.487 5.485 13.692 12.656 14.818V19.336H8.848V15h3.808v-3.305c0-3.76 2.24-5.836 5.666-5.836 1.641 0 3.358.293 3.358.293v3.692h-1.892c-1.863 0-2.444 1.156-2.444 2.342V15h4.16l-.665 4.336h-3.495v10.482C24.514 28.692 30 22.487 30 15\",\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n })));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzBweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+RmFjZWJvb2s8L3RpdGxlPgogICAgPGcgaWQ9Ikljb25zL1NvY2lhbC9GYWNlYm9vay9XaGl0ZS8zMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZD0iTTMwLDE1IEMzMCw2LjcxNTcyMjY2IDIzLjI4NDI3NzMsMi44NDIxNzA5NGUtMTQgMTUsMi44NDIxNzA5NGUtMTQgQzYuNzE1NzIyNjYsMi44NDIxNzA5NGUtMTQgMCw2LjcxNTcyMjY2IDAsMTUgQzAsMjIuNDg2OTMzNiA1LjQ4NTI4MzIsMjguNjkyNDgwNSAxMi42NTYyNSwyOS44MTc2ODU1IEwxMi42NTYyNSwxOS4zMzU5Mzc1IEw4Ljg0NzY1NjI1LDE5LjMzNTkzNzUgTDguODQ3NjU2MjUsMTUgTDEyLjY1NjI1LDE1IEwxMi42NTYyNSwxMS42OTUzMTI1IEMxMi42NTYyNSw3LjkzNTkzNzUgMTQuODk1NjQ0NSw1Ljg1OTM3NSAxOC4zMjE5NzI3LDUuODU5Mzc1IEMxOS45NjMwOTU3LDUuODU5Mzc1IDIxLjY3OTY4NzUsNi4xNTIzNDM3NSAyMS42Nzk2ODc1LDYuMTUyMzQzNzUgTDIxLjY3OTY4NzUsOS44NDM3NSBMMTkuNzg4MjIyNyw5Ljg0Mzc1IEMxNy45MjQ4NTM1LDkuODQzNzUgMTcuMzQzNzUsMTEgMTcuMzQzNzUsMTIuMTg2MjQwMiBMMTcuMzQzNzUsMTUgTDIxLjUwMzkwNjIsMTUgTDIwLjgzODg2NzIsMTkuMzM1OTM3NSBMMTcuMzQzNzUsMTkuMzM1OTM3NSBMMTcuMzQzNzUsMjkuODE3Njg1NSBDMjQuNTE0NzE2OCwyOC42OTI0ODA1IDMwLDIyLjQ4NjkzMzYgMzAsMTUiIGlkPSJGLSIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgFacebook as ReactComponent };","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Link } from 'react-router';\n\nimport Icon from 'components/Icon';\n\nconst Collapse = props => {\n const { theme, title, children } = props;\n const [collapsed, setCollapsed] = useState(true);\n\n const onToggle = () => setCollapsed(!collapsed);\n\n return (\n <div className={classNames(theme.collapseBox, collapsed && theme.sectionCollapsed)}>\n <Link className={theme.listTitle} onClick={onToggle} role=\"button\">\n <span>{title}</span>\n <Icon size=\"medium-large\" color=\"white\" icon=\"add\" className={theme.plus} />\n </Link>\n {children}\n </div>\n );\n};\n\nexport default Collapse;\n\nCollapse.propTypes = {\n children: PropTypes.shape({}),\n theme: PropTypes.shape({}),\n title: PropTypes.string,\n};\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgInstagram(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.875 24.03a2.84 2.84 0 01-2.828 2.845H5.952a2.839 2.839 0 01-2.827-2.845V11.875h4.403c-.11.272-.204.552-.285.838a8.078 8.078 0 00-.308 2.208c0 4.476 3.618 8.119 8.065 8.119 4.447 0 8.066-3.643 8.066-8.12a8.05 8.05 0 00-.31-2.208 8.198 8.198 0 00-.286-.837h4.405V24.03zM10.946 12.085A4.995 4.995 0 0115 10a4.994 4.994 0 014.354 2.561A4.95 4.95 0 0120 15c0 2.757-2.245 5-5 5-2.757 0-5-2.243-5-5 0-.886.239-1.716.646-2.44.093-.163.191-.323.3-.475zM25.6 3.754l.651-.004v4.984l-4.982.016-.018-4.983 4.349-.013zM24.201 0H5.797A5.803 5.803 0 000 5.797v18.406C0 27.4 2.6 30 5.797 30H24.2C27.398 30 30 27.4 30 24.203V5.797A5.805 5.805 0 0024.2 0z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n })));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzBweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+SW5zdGFncmFtPC90aXRsZT4KICAgIDxnIGlkPSJJY29ucy9Tb2NpYWwvSW5zdGFncmFtLzMwIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8cGF0aCBkPSJNMjYuODc1LDI0LjAyOTcyNSBDMjYuODc1LDI1LjU5ODg5OTMgMjUuNjA1OTA5MiwyNi44NzUgMjQuMDQ2NTUwMSwyNi44NzUgTDUuOTUxNjcxODQsMjYuODc1IEM0LjM5MjMxMjcsMjYuODc1IDMuMTI1LDI1LjU5ODg5OTMgMy4xMjUsMjQuMDI5NzI1IEwzLjEyNSwxMS44NzUgTDcuNTI3OTIyNTcsMTEuODc1IEM3LjQxNzY4MjgxLDEyLjE0NjU5NjUgNy4zMjM4OTAxMiwxMi40MjY2OTQzIDcuMjQzNDMyODcsMTIuNzEyNjA4OSBDNy4wNDQyOTAwOSwxMy40MTQ2NDMyIDYuOTM0OTM5MzYsMTQuMTU0NzEwMSA2LjkzNDkzOTM2LDE0LjkyMDcyODQgQzYuOTM0OTM5MzYsMTkuMzk3MzcyIDEwLjU1MzI5MjcsMjMuMDM5NTM4OCAxNS4wMDAyMjIzLDIzLjAzOTUzODggQzE5LjQ0NzE1MTgsMjMuMDM5NTM4OCAyMy4wNjU1MDUyLDE5LjM5NzM3MiAyMy4wNjU1MDUyLDE0LjkyMDcyODQgQzIzLjA2NTUwNTIsMTQuMTU0NzEwMSAyMi45NTUyNjU0LDEzLjQxNDY0MzIgMjIuNzU1MjMzNiwxMi43MTIxNjE0IEMyMi42NzQzMzE4LDEyLjQyNjY5NDMgMjIuNTgwMDk0NiwxMi4xNDY1OTY1IDIyLjQ3MDI5OTQsMTEuODc1IEwyNi44NzUsMTEuODc1IEwyNi44NzUsMjQuMDI5NzI1IFogTTEwLjk0NjQwODcsMTIuMDg0NjE4IEMxMS44NTY4NjE2LDEwLjgyNDc2ODggMTMuMzMxOTA2NSwxMCAxNSwxMCBDMTYuNjY4MDkzNSwxMCAxOC4xNDMxMzg0LDEwLjgyNDc2ODggMTkuMDUzMTYzMywxMi4wODQ2MTggQzE5LjE2Mjc0MjksMTIuMjM3MDY3NSAxOS4yNjExOTM0LDEyLjM5NzIyNTEgMTkuMzUzNjUxMiwxMi41NjEyMzY3IEMxOS43NjExNTA2LDEzLjI4MzY1ODggMjAsMTQuMTE0NDIyNyAyMCwxNC45OTk1NzE4IEMyMCwxNy43NTY1MDkxIDE3Ljc1NDkwMTEsMjAgMTUsMjAgQzEyLjI0Mjk1ODcsMjAgMTAsMTcuNzU2NTA5MSAxMCwxNC45OTk1NzE4IEMxMCwxNC4xMTM5OTQ1IDEwLjIzODg0OTQsMTMuMjgzNjU4OCAxMC42NDYzNDg4LDEyLjU2MDgwODUgQzEwLjczOTIzNDcsMTIuMzk3MjI1MSAxMC44MzcyNTcxLDEyLjIzNjYzOTMgMTAuOTQ2NDA4NywxMi4wODQ2MTggWiBNMjUuNTk5MDQ0LDMuNzUzOTg4MyBMMjYuMjUsMy43NSBMMjYuMjUsOC43MzM2MDM2NSBMMjEuMjY3Nzg1Nyw4Ljc1IEwyMS4yNSwzLjc2NjgzOTQ5IEwyNS41OTkwNDQsMy43NTM5ODgzIFogTTI0LjIwMDgyNTgsMCBMNS43OTY5MTM2MiwwIEMyLjU5OTYxNDIsMCAwLDIuNjAwMDI3MTMgMCw1Ljc5NjgyNjI2IEwwLDI0LjIwMzE3MzcgQzAsMjcuMzk5MDY4NyAyLjU5OTYxNDIsMzAgNS43OTY5MTM2MiwzMCBMMjQuMjAwODI1OCwzMCBDMjcuMzk4MTI1MywzMCAzMCwyNy4zOTkwNjg3IDMwLDI0LjIwMzE3MzcgTDMwLDUuNzk2ODI2MjYgQzMwLDIuNjAwMDI3MTMgMjcuMzk4MTI1MywwIDI0LjIwMDgyNTgsMCBMMjQuMjAwODI1OCwwIFoiIGlkPSJGaWxsLTE5IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgInstagram as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgTwitter(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 5.812a12.526 12.526 0 01-3.534.943 6.046 6.046 0 002.707-3.318 12.507 12.507 0 01-3.91 1.456A6.216 6.216 0 0020.773 3c-3.4 0-6.155 2.685-6.155 5.996a6 6 0 00.158 1.366c-5.114-.25-9.65-2.638-12.685-6.265a5.86 5.86 0 00-.834 3.014c0 2.08 1.089 3.915 2.738 4.99a6.269 6.269 0 01-2.788-.75v.075c0 .768.151 1.5.421 2.174.752 1.88 2.444 3.3 4.517 3.708-.518.135-1.06.21-1.623.21-.395 0-.78-.038-1.158-.11.785 2.382 3.058 4.117 5.75 4.165A12.552 12.552 0 011.47 24.14c-.498 0-.987-.028-1.47-.084a17.775 17.775 0 009.435 2.694c9.622 0 15.534-6.596 17.094-13.44a16.295 16.295 0 00.402-4.395A12.307 12.307 0 0030 5.812\",\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n })));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzBweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+VHdpdHRlcjwvdGl0bGU+CiAgICA8ZyBpZD0iSWNvbnMvU29jaWFsL1R3aXR0ZXIvMzAiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIGQ9Ik0zMCw1LjgxMTg4MTg5IEMyOC44OTY5MjU5LDYuMjg5MjUzMDggMjcuNzExNTczMiw2LjYxMDAzNTc5IDI2LjQ2NjA5NCw2Ljc1NDk5MTk5IEMyNy43Mzc3OTM5LDYuMDEzMjA5OTUgMjguNzExNTczMiw0LjgzODc5NjI3IDI5LjE3MzE0NjUsMy40MzcxMDU1OSBDMjcuOTg0MTc3Miw0LjEyNTIwMDE1IDI2LjY2NTAwOSw0LjYyNDQ5Mzc0IDI1LjI2MjY1ODIsNC44OTMzNzg1NCBDMjQuMTQxOTUzLDMuNzI3OTEyNzggMjIuNTQyMDQzNCwzIDIwLjc3MjE1MTksMyBDMTcuMzczNDE3NywzIDE0LjYxODQ0NDgsNS42ODUyNjg5MSAxNC42MTg0NDQ4LDguOTk1NTQ5NTkgQzE0LjYxODQ0NDgsOS40NjYyMDk4NSAxNC42NzMxNDY1LDkuOTIxNjU4NjYgMTQuNzc1NzY4NSwxMC4zNjE4OTYgQzkuNjYxODQ0NDgsMTAuMTExODAxOCA1LjEyNTY3ODEyLDcuNzI0MDUxMDUgMi4wOTEzMjAwNyw0LjA5NzAxNDIyIEMxLjU2MjM4Njk4LDQuOTgyNDEwMjkgMS4yNTY3ODExOSw2LjAxMjc2MjU1IDEuMjU2NzgxMTksNy4xMTExMTg5NiBDMS4yNTY3ODExOSw5LjE5MDYxNDExIDIuMzQ1ODQwODcsMTEuMDI1ODMxMiAzLjk5NTAyNzEyLDEyLjEwMTM3MDQgQzIuOTg3NzkzODUsMTIuMDcwMDUyNyAyLjAzNzA3MDUyLDExLjgwMDI3MzEgMS4yMDcwNTI0NCwxMS4zNTE1MzUzIEMxLjIwNzA1MjQ0LDExLjM3NjU4OTQgMS4yMDcwNTI0NCwxMS40MDIwOTEgMS4yMDcwNTI0NCwxMS40MjYyNTA0IEMxLjIwNzA1MjQ0LDEyLjE5Mzk4MTQgMS4zNTg0OTkxLDEyLjkyNTQ3MzMgMS42MjgzOTA2LDEzLjU5OTY5ODYgQzIuMzgwMTk4OTIsMTUuNDgwMTAyNyA0LjA3MjMzMjczLDE2LjkwMDEzNjYgNi4xNDUxMTc1NCwxNy4zMDc3MTQgQzUuNjI3NDg2NDQsMTcuNDQyODI3NSA1LjA4NTQ0MzA0LDE3LjUxNzk5IDQuNTIyMTUxOSwxNy41MTc5OSBDNC4xMjY1ODIyOCwxNy41MTc5OSAzLjc0MTQxMDQ5LDE3LjQ3OTk2MTQgMy4zNjQzNzYxMywxNy40MDg4MjU1IEM0LjE0OTE4NjI2LDE5Ljc5MDMxMjcgNi40MjE3OTAyNCwyMS41MjQ4NjU4IDkuMTEzOTI0MDUsMjEuNTcyNzM3MSBDNy4wMDY3ODExOSwyMy4xODIwMTk0IDQuMzU0NDMwMzgsMjQuMTQwMzQxIDEuNDY5NzEwNjcsMjQuMTQwMzQxIEMwLjk3MTk3MTA2NywyNC4xNDAzNDEgMC40ODMyNzMwNTYsMjQuMTExNzA3NiAwLDI0LjA1NjIzMDYgQzIuNzI2MDM5NzgsMjUuNzU3MjI5IDUuOTYyNDc3NCwyNi43NSA5LjQzNTM1MjYyLDI2Ljc1IEMxOS4wNTY5NjIsMjYuNzUgMjQuOTY5MjU4NiwyMC4xNTM1OTggMjYuNTI4OTMzMSwxMy4zMTAyMzM2IEMyNi44MDUxNTM3LDEyLjEwMDkyMyAyNi45NDc1NTg4LDEwLjg4MjY2NDYgMjYuOTQ3NTU4OCw5LjY5MDgwMjQ5IEMyNi45NDc1NTg4LDkuNDMyMjA3NzggMjYuOTQyNTg1OSw5LjE3MjI3MDg5IDI2LjkzMTI4MzksOC45MTU0NjU3NiBDMjguMTMyNDU5Myw4LjA3MDMzNTMxIDI5LjE3Njc2MzEsNy4wMTQ0ODE0OSAzMCw1LjgxMTg4MTg5IiBpZD0iRmlsbC0zMSIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgTwitter as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgYoutube(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.426 14.868l-8.934 4.451-.003-6.853v-2.083l8.937 4.485zm9.272-6.187s-.292-2.128-1.19-3.064c-1.141-1.227-2.42-1.235-3.005-1.307C21.303 4 15.007 4 15.007 4h-.014s-6.299 0-10.495.312c-.586.07-1.863.078-3.007 1.306-.897.936-1.19 3.064-1.19 3.064S0 11.178 0 13.676v2.34c0 2.498.301 4.995.301 4.995s.293 2.127 1.19 3.063c1.144 1.229 2.644 1.19 3.31 1.317 2.4.237 10.2.311 10.2.311s6.302-.011 10.502-.321c.585-.073 1.864-.078 3.005-1.309.898-.935 1.19-3.061 1.19-3.061S30 18.514 30 16.015v-2.34c0-2.497-.302-4.994-.302-4.994z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n })));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzBweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+WW91dHViZTwvdGl0bGU+CiAgICA8ZyBpZD0iSWNvbnMvU29jaWFsL1lvdXR1YmUvMzAiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIGQ9Ik0yMC40MjU1MzE5LDE0Ljg2Nzg0MyBMMTEuNDkxODU0MiwxOS4zMTkxNDg5IEwxMS40ODkzNjE3LDEyLjQ2NjM1MzYgTDExLjQ4OTM2MTcsMTAuMzgyOTc4NyBMMjAuNDI1NTMxOSwxNC44Njc4NDMgWiBNMjkuNjk4NDQ5Myw4LjY4MTA2OTY4IEMyOS42OTg0NDkzLDguNjgxMDY5NjggMjkuNDA1OTQwNiw2LjU1MjgyNDIxIDI4LjUwNzYxNzksNS42MTY2OTk0NyBDMjcuMzY2NTE3NSw0LjM4OTc5MTgyIDI2LjA4NzUyNjYsNC4zODE3NjQwNyAyNS41MDM0MTM0LDQuMzEwNDA2MyBDMjEuMzAyNTAwMSw0IDE1LjAwNzQ1OTcsNCAxNS4wMDc0NTk3LDQgTDE0Ljk5MzQ0NDUsNCBDMTQuOTkzNDQ0NSw0IDguNjk0MzM1MTksNCA0LjQ5Nzk0Mjk0LDQuMzEyMTkwMjQgQzMuOTExNTY5MjQsNC4zODE3NjQwNyAyLjYzNDgzODgzLDQuMzg5NzkxODIgMS40OTE0Nzc5MSw1LjYxNzU5MTQ0IEMwLjU5NDA1OTQwNiw2LjU1MzcxNjE4IDAuMzAxMDk4NjAzLDguNjgxOTYxNjYgMC4zMDEwOTg2MDMsOC42ODE5NjE2NiBDMC4zMDEwOTg2MDMsOC42ODE5NjE2NiAwLDExLjE3NzY5OTYgMCwxMy42NzU2Njc2IEwwLDE2LjAxNTMxMDQgQzAsMTguNTE0MTcwMyAwLjMwMTA5ODYwMywyMS4wMTEyNDYzIDAuMzAxMDk4NjAzLDIxLjAxMTI0NjMgQzAuMzAxMDk4NjAzLDIxLjAxMTI0NjMgMC41OTQwNTk0MDYsMjMuMTM4MTUzOCAxLjQ5MTQ3NzkxLDI0LjA3MzgzMjYgQzIuNjM0ODM4ODMsMjUuMzAyOTcwMSA0LjEzNDkwNjY0LDI1LjI2MzcyMzQgNC44MDAzOTc4NSwyNS4zOTEyNzU0IEM3LjIwMTA0ODg3LDI1LjYyNzY0OCAxNS4wMDAyMjYxLDI1LjcwMjEyNzcgMTUuMDAwMjI2MSwyNS43MDIxMjc3IEMxNS4wMDAyMjYxLDI1LjcwMjEyNzcgMjEuMzAyNTAwMSwyNS42OTA5NzggMjUuNTAzNDEzNCwyNS4zODA1NzE3IEMyNi4wODc1MjY2LDI1LjMwODMyMiAyNy4zNjY1MTc1LDI1LjMwMjk3MDEgMjguNTA3NjE3OSwyNC4wNzI0OTQ2IEMyOS40MDU5NDA2LDIzLjEzNjgxNTggMjkuNjk4NDQ5MywyMS4wMTA4MDAzIDI5LjY5ODQ0OTMsMjEuMDEwODAwMyBDMjkuNjk4NDQ5MywyMS4wMTA4MDAzIDMwLDE4LjUxNDE3MDMgMzAsMTYuMDE1MzEwNCBMMzAsMTMuNjc1NjY3NiBDMzAsMTEuMTc3Njk5NiAyOS42OTg0NDkzLDguNjgxMDY5NjggMjkuNjk4NDQ5Myw4LjY4MTA2OTY4IEwyOS42OTg0NDkzLDguNjgxMDY5NjggWiIgaWQ9IkZpbGwtMTIiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgYoutube as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgPinterest(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.595 0C7.373 0 3 5.269 3 11.014c0 2.665 1.489 5.987 3.872 7.041.362.163.559.094.64-.242.07-.255.384-1.483.536-2.062a.53.53 0 00-.128-.522c-.791-.915-1.42-2.582-1.42-4.145 0-4.007 3.187-7.898 8.607-7.898 4.688 0 7.968 3.045 7.968 7.4 0 4.923-2.605 8.328-5.99 8.328-1.873 0-3.268-1.47-2.825-3.289.534-2.166 1.582-4.494 1.582-6.056 0-1.401-.79-2.56-2.407-2.56-1.907 0-3.454 1.888-3.454 4.423 0 1.611.57 2.699.57 2.699l-2.237 9.043c-.593 2.41.08 6.312.139 6.647.035.186.244.244.36.092.185-.244 2.465-3.497 3.105-5.848.232-.857 1.187-4.332 1.187-4.332.628 1.135 2.441 2.085 4.373 2.085 5.745 0 9.896-5.05 9.896-11.316C27.354 4.495 22.212 0 15.594 0z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n })));\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzBweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+UGludGVyZXN0PC90aXRsZT4KICAgIDxnIGlkPSJJY29ucy9Tb2NpYWwvUGludGVyZXN0LzMwIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8cGF0aCBkPSJNMTUuNTk0OTQ1NSwwIEM3LjM3MjY5ODA1LDAgMyw1LjI2ODk4ODY1IDMsMTEuMDE0MjQ4OSBDMywxMy42Nzg3NDQ2IDQuNDg4ODE3NDMsMTcuMDAxMzk1IDYuODcyMDUwMzgsMTguMDU1MTkyOCBDNy4yMzM5NDE3NywxOC4yMTgzMjUyIDcuNDMwODI1NjksMTguMTQ4OTQ3IDcuNTExNDU0MzQsMTcuODEzMzA2OCBDNy41ODI3MDc1NywxNy41NTgyOTUzIDcuODk1ODQ2NzUsMTYuMzMwMTE0NiA4LjA0NzcyODYzLDE1Ljc1MDcxMzQgQzguMDk0NjA1NzUsMTUuNTY1MDggOC4wNzAyMjk2NSwxNS40MDM4MjI3IDcuOTIwMjIyODUsMTUuMjI5NDM5OCBDNy4xMjg5MzcwMSwxNC4zMTQzOTgzIDYuNTAwNzgzNTYsMTIuNjQ3NDQ3OCA2LjUwMDc4MzU2LDExLjA4MzYyNyBDNi41MDA3ODM1Niw3LjA3NjU3MDUyIDkuNjg2NTUyODUsMy4xODU3NjkyOSAxNS4xMDc0MjM0LDMuMTg1NzY5MjkgQzE5Ljc5NTEzNTcsMy4xODU3NjkyOSAyMy4wNzQ2NTkyLDYuMjMwOTA3MjIgMjMuMDc0NjU5MiwxMC41ODY3Mjk1IEMyMy4wNzQ2NTkyLDE1LjUwODgyNzQgMjAuNDcwMTY2MywxOC45MTM5ODE3IDE3LjA4NTYzOCwxOC45MTM5ODE3IEMxNS4yMTI0MjgxLDE4LjkxMzk4MTcgMTMuODE3MzY1LDE3LjQ0MzkxNTEgMTQuMjU5ODg1LDE1LjYyNTA4MjcgQzE0Ljc5NDI4NDIsMTMuNDU5MzU5NiAxNS44NDI0NTY3LDExLjEzMDUwNDEgMTUuODQyNDU2Nyw5LjU2ODU1ODM5IEMxNS44NDI0NTY3LDguMTY3ODY5OTUgMTUuMDUxMTcwOCw3LjAwOTA2NzQ2IDEzLjQzNDg0NzYsNy4wMDkwNjc0NiBDMTEuNTI3ODg2Myw3LjAwOTA2NzQ2IDkuOTgwOTQxMTksOC44OTcyNzc5OSA5Ljk4MDk0MTE5LDExLjQzMjM5MjggQzkuOTgwOTQxMTksMTMuMDQzMDkwOCAxMC41NTA5NjcsMTQuMTMwNjQgMTAuNTUwOTY3LDE0LjEzMDY0IEMxMC41NTA5NjcsMTQuMTMwNjQgOC42NjQ2MzE1NywyMS43NTA5ODUyIDguMzEzOTkwNjksMjMuMTc0MTc0NiBDNy43MjE0NjM4NSwyNS41ODM2NTg4IDguMzk0NjE5MzQsMjkuNDg1NzEwNSA4LjQ1Mjc0Njk3LDI5LjgyMTM1MDcgQzguNDg4MzczNTksMzAuMDA2OTg0MSA4LjY5NjUwODAxLDMwLjA2NTExMTcgOC44MTI3NjMyOCwyOS45MTMyMjk5IEM4Ljk5ODM5NjY5LDI5LjY2OTQ2ODggMTEuMjc4NSwyNi40MTYxOTY1IDExLjkxNzkwMzksMjQuMDY0ODQgQzEyLjE1MDQxNDUsMjMuMjA3OTI2MiAxMy4xMDQ4MzI3LDE5LjczMzM5MzggMTMuMTA0ODMyNywxOS43MzMzOTM4IEMxMy43MzI5ODYxLDIwLjg2NzgyMDIgMTUuNTQ2MTkzMywyMS44MTg0ODgyIDE3LjQ3NzUzMDcsMjEuODE4NDg4MiBDMjMuMjIyNzkxLDIxLjgxODQ4ODIgMjcuMzc0MjI5LDE2Ljc2ODg4NDUgMjcuMzc0MjI5LDEwLjUwMjM1MDcgQzI3LjM1MzYwMzEsNC40OTQ1Nzg1NyAyMi4yMTIxMjAyLDAgMTUuNTk0OTQ1NSwwIFoiIGlkPSJQaW50ZXJlc3QiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=\";\nexport { SvgPinterest as ReactComponent };","/* eslint-disable react/self-closing-comp */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport * as Logos from './images';\n\nconst COLORS = {\n black: '#000000',\n white: '#FFFFFF',\n altoLight: '#d8d8d8',\n};\n\nconst Social = ({ brand = null, color = 'white' }) => {\n if (!brand) return null;\n const logoColor = COLORS[color];\n const Component = Logos[brand] || null;\n return Component ? (\n <Component\n style={{ height: '100%', width: '100%' }}\n color={logoColor}\n data-test={`${brand}-social`}\n />\n ) : null;\n};\n\nSocial.propTypes = {\n brand: PropTypes.string,\n color: PropTypes.string,\n};\n\nSocial.defaultProps = {\n color: 'white',\n brand: null,\n};\n\nexport default Social;\n","/* eslint-disable react/no-array-index-key */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\n\nimport { Events, handleAnalytics } from '@foxcorp/delta-web-analytics';\nimport { isInternalLink, LINK_REL } from 'helpers/ContentHelper';\nimport SocialIcon from 'components/Social';\n\nconst LinkItem = props => {\n const { theme, item, isSocial, providerSet, onLogoutClick } = props;\n const { brand, text, link } = item;\n const hasSlash = text.includes('/');\n\n const { auth_signOutButton: signOut, profileLogout_logoutButton: signOutAlt } = window.Language;\n\n // const altTextLogo = `Logo ${alt || text}`;\n const isNullTarget = isInternalLink(link) || !link;\n const isSignoutText = text === signOut || text === signOutAlt;\n\n const socialIcon = brand ? (\n <div className={theme.brandLogo}>\n <SocialIcon brand={brand} color=\"white\" />\n </div>\n ) : null;\n const anchorClasses = classNames([theme.link, isSocial && theme.socialLink]);\n\n const logoutClick = providerSet ? onLogoutClick : null;\n\n if (isSignoutText && !providerSet) return null;\n\n const target = isNullTarget ? null : '_blank';\n const rel = isNullTarget ? null : LINK_REL;\n const onClick = e => {\n handleAnalytics({\n event: Events.FOOTER_LINK_CLICKED,\n payload: { page_item_title: text },\n });\n\n return isSignoutText ? logoutClick(e) : this.onNavClick && this.onNavClick();\n };\n\n const anchorProps = {\n key: _.uniqueId(),\n href: link,\n className: anchorClasses,\n onClick,\n target,\n rel,\n };\n\n return (\n <a {...anchorProps}>\n {socialIcon}\n {hasSlash ? (\n <div className={theme.linkTextContainer}>\n {text.split('/').map((line, index) => (\n <div key={`link-${index}`} className={theme.linkText}>{`${line}${\n index === 0 ? `/` : ''\n }`}</div>\n ))}\n </div>\n ) : (\n <span className={theme.linkText}>{text}</span>\n )}\n </a>\n );\n};\n\nexport default LinkItem;\n\nLinkItem.propTypes = {\n isSocial: PropTypes.bool,\n item: PropTypes.shape({}),\n onLogoutClick: PropTypes.func,\n providerSet: PropTypes.bool,\n theme: PropTypes.shape({}),\n};\n","/* eslint-disable react/no-array-index-key */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport LinkItem from '../LinkItem';\n\nconst LinkItems = props => {\n const { theme, items, providerSet, onLogoutClick } = props;\n\n return (\n <>\n {items.map((item, index) => (\n <LinkItem\n key={`link-${index}`}\n theme={theme}\n item={item}\n isSocial\n providerSet={providerSet}\n onLogoutClick={onLogoutClick}\n />\n ))}\n </>\n );\n};\n\nexport default LinkItems;\n\nLinkItems.defaultProps = {\n items: [],\n};\n\nLinkItems.propTypes = {\n items: PropTypes.arrayOf(PropTypes.shape({})),\n theme: PropTypes.shape({}),\n onLogoutClick: PropTypes.func,\n providerSet: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Collapse from '../Collapse';\nimport LinkItems from '../LinkItems';\n\nconst FooterContent = props => {\n const { theme, content, providerSet, onLogoutClick } = props;\n\n if (!content || (content && Object.keys(content).length <= 0)) return null;\n\n const { links, networks, connect } = content;\n\n const renderContent = (title, items, themeSection) => (\n <div className={classNames(theme.footerSection, themeSection)}>\n <Collapse theme={theme} title={title}>\n <div className={theme.sectionItemsWrapper}>\n <div className={theme.sectionItems}>\n <LinkItems\n theme={theme}\n items={items}\n providerSet={providerSet}\n onLogoutClick={onLogoutClick}\n />\n </div>\n </div>\n </Collapse>\n </div>\n );\n\n return (\n <div className={theme.footerContent}>\n {connect && renderContent(connect.title, connect.items, theme.social)}\n {links && networks && (\n <div className={theme.sectionWrapper}>\n {renderContent(links.title, links.items, theme.links)}\n {renderContent(networks.title, networks.items, theme.networks)}\n </div>\n )}\n </div>\n );\n};\n\nexport default FooterContent;\n\nFooterContent.defaultProps = {\n content: [],\n};\n\nFooterContent.propTypes = {\n theme: PropTypes.shape({}),\n content: PropTypes.shape({\n links: PropTypes.shape({\n title: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n networkList: PropTypes.shape({\n title: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n social: PropTypes.shape({\n title: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n }),\n }),\n onLogoutClick: PropTypes.func,\n providerSet: PropTypes.bool,\n};\n","/* global AppVersion */\n\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { isStaticRender, getFontClassName } from 'helpers/ContentHelper';\nimport { authMVPDLogoutV2 } from 'helpers/AuthHelper';\nimport { useMvpdAuth } from 'hooks';\nimport { fetchFooter, fetchFooterPromos } from './FooterActions';\nimport Style from './Footer.module.scss';\nimport Promos from './components/Promos';\nimport Legal from './components/Legal';\nimport FooterContent from './components/FooterContent';\n\nconst NAME = 'Footer';\n\nconst Footer = props => {\n const {\n accessToken,\n deviceId,\n appView,\n geoLocationBlocked: isBlocked,\n isAppViewExcluded,\n isPageLoading,\n breakpoint,\n maintenance: isMaintenance,\n isAuthenticated,\n mvpdProviders,\n } = props;\n\n const dispatch = useDispatch();\n\n const { fetched, links, networks, connect, legal, promosPanels } = useSelector(\n state => state.footer,\n );\n\n const footerContent = {\n links,\n networks,\n connect,\n };\n\n useEffect(() => {\n dispatch(fetchFooter(deviceId));\n\n if (!isStaticRender()) {\n if (fetchFooterPromos) {\n dispatch(fetchFooterPromos(accessToken, deviceId));\n }\n }\n }, []);\n\n const { providerSet, setProviderSet } = useMvpdAuth({\n mvpdProviders,\n isAuthenticated,\n });\n\n const onLogoutClick = async e => {\n e.preventDefault();\n await authMVPDLogoutV2(props, () => {\n setProviderSet(false);\n });\n };\n\n if (isMaintenance || isBlocked || (appView && isAppViewExcluded(NAME))) return null;\n if (isPageLoading) return null;\n\n const promos = promosPanels;\n const footerStyle = classNames([Style.Footer, getFontClassName(Style)]);\n const containerClass = classNames(Style.container, !promos && Style.noFirstBorder);\n\n return (\n <>\n {fetched && (\n <footer data-test=\"footer\" className={footerStyle}>\n <div className={containerClass}>\n {promosPanels && (\n <Promos theme={Style} promosPanels={promosPanels} breakpoint={breakpoint} />\n )}\n <FooterContent\n theme={Style}\n content={footerContent}\n providerSet={providerSet}\n onLogoutClick={onLogoutClick}\n />\n <Legal theme={Style} legal={legal} />\n <div style={{ display: 'none' }}>{AppVersion || ''}</div>\n </div>\n </footer>\n )}\n </>\n );\n};\n\nFooter.defaultProps = {\n accessToken: null,\n deviceId: null,\n geoLocationBlocked: false,\n isPageLoading: false,\n mvpdProviders: null,\n isAuthenticated: false,\n};\n\nFooter.propTypes = {\n accessToken: PropTypes.string,\n appView: PropTypes.bool.isRequired,\n breakpoint: PropTypes.string.isRequired,\n deviceId: PropTypes.string,\n geoLocationBlocked: PropTypes.bool,\n isAppViewExcluded: PropTypes.func.isRequired,\n isPageLoading: PropTypes.bool,\n maintenance: PropTypes.bool.isRequired,\n isAuthenticated: PropTypes.bool,\n mvpdProviders: PropTypes.arrayOf(PropTypes.shape({})),\n};\n\nFooter.fetchData = () => null;\n\nexport default Footer;\n","import { useEffect, useState } from 'react';\n\nimport { isPreviewPass } from 'helpers/PlayerHelper';\nimport { getMVPDFromCookie } from 'helpers/ContentHelper';\n\nexport default function useMvpdAuth({ mvpdProviders, isAuthenticated }) {\n const [providerSet, setProviderSet] = useState(false);\n\n useEffect(() => {\n const didFetchProviders = mvpdProviders && !providerSet;\n const didAuthenticate = isAuthenticated;\n if (didFetchProviders || didAuthenticate) {\n checkMVPD();\n }\n }, [mvpdProviders, isAuthenticated]);\n\n const checkMVPD = () => {\n if (providerSet) return;\n\n const mvpd = getMVPDFromCookie();\n if (mvpd && !isPreviewPass(mvpd)) {\n setProviderSet(true);\n } else {\n setProviderSet(false);\n }\n };\n\n return {\n providerSet,\n setProviderSet,\n };\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport classNames from 'classnames';\nimport Carousel from 'components/Carousel';\nimport {\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_WEB_LARGE,\n} from 'helpers/BreakpointHelper';\nimport { fetchCollectionForFooterUpsell } from './FooterUpsellActions';\nimport Style from './FooterUpsell.module.scss';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n applyInlineBackground: true,\n carouselLimit: 5,\n slidesToScroll: 5,\n allowScrollLock: false,\n showCarouselArrows: true,\n useScrollableDiv: false,\n },\n [SITE_PLATFORM_WEB]: {\n applyInlineBackground: true,\n carouselLimit: 5,\n slidesToScroll: 5,\n allowScrollLock: false,\n showCarouselArrows: true,\n useScrollableDiv: false,\n },\n [SITE_PLATFORM_TABLET]: {\n applyInlineBackground: false,\n carouselLimit: 3,\n slidesToScroll: 3,\n allowScrollLock: true,\n showCarouselArrows: true,\n useScrollableDiv: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n applyInlineBackground: false,\n carouselLimit: 1.75,\n slidesToScroll: 1,\n allowScrollLock: true,\n showCarouselArrows: false,\n useScrollableDiv: true,\n },\n};\n\nclass FooterUpsell extends Component {\n componentDidMount() {\n const {\n fetchCollectionForFooterUpsell,\n pathkey,\n accessToken,\n screenName,\n deviceId,\n } = this.props;\n fetchCollectionForFooterUpsell(pathkey, accessToken, screenName, deviceId);\n }\n\n render() {\n const { items, title, subtitle, breakpoint, logo, mobileLogo, processor } = this.props;\n const {\n applyInlineBackground,\n carouselLimit,\n slidesToScroll,\n showCarouselArrows,\n allowScrollLock,\n useScrollableDiv,\n } = BREAKPOINTS[breakpoint];\n const carouselProps = {\n isPosters: true,\n isInfinite: false,\n items,\n slidesToShow: carouselLimit,\n slidesToScroll,\n allowScrollLock,\n roundArrows: true,\n overrideTheme: Style,\n applyInlineBackground,\n showCarouselArrows,\n useScrollableDiv,\n processor,\n };\n if (items.length === 0) return null;\n const brandLogo = breakpoint !== SITE_PLATFORM_MOBILE ? logo : mobileLogo;\n return (\n <div className={classNames(Style.container)}>\n <div className={classNames(Style.screen)}>\n <div className={classNames(Style.outterContainer)}>\n <div className={classNames(Style.header)}>\n <div className={classNames(Style.logo)}>\n <img alt=\"\" src={brandLogo} />\n </div>\n <div className={classNames(Style.title)}>\n <div className={classNames(Style.mainTitle)}>{title}</div>\n <div className={classNames(Style.subtitle)}>{subtitle}</div>\n </div>\n </div>\n <div className={classNames(Style.contents)}>\n <Carousel {...carouselProps} />\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nFooterUpsell.defaultProps = {\n items: [],\n logo: '/static/images/nation-vertical-logo.svg',\n mobileLogo: '/static/images/nation-horizontal-logo.svg',\n title: 'Available on Fox Nation',\n subtitle:\n 'Discover Fox Nation Originals and exclusive documentaries. Start watching free for 7 days.',\n breakpoint: '',\n processor: item => ({\n ...item,\n target: '_self',\n link: 'https://nation.foxnews.com/',\n posterImage: _.get(item, 'images.heroPromoImage', null),\n posterAltText: _.get(item, 'images.altText', ''),\n }),\n fetchCollectionForFooterUpsell: () => {},\n pathkey: 'foxNation',\n accessToken: '',\n screenName: '',\n deviceId: '',\n};\n\nfunction mapStateToProps(state) {\n return {\n items: state.footerUpsell.members,\n };\n}\n\nFooterUpsell.propTypes = {\n items: PropTypes.arrayOf(PropTypes.shape({})),\n logo: PropTypes.string,\n mobileLogo: PropTypes.string,\n title: PropTypes.string,\n subtitle: PropTypes.string,\n breakpoint: PropTypes.string,\n processor: PropTypes.func,\n fetchCollectionForFooterUpsell: PropTypes.func,\n pathkey: PropTypes.string,\n accessToken: PropTypes.string,\n screenName: PropTypes.string,\n deviceId: PropTypes.string,\n};\n\nexport default connect(\n mapStateToProps,\n {\n fetchCollectionForFooterUpsell,\n },\n)(FooterUpsell);\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport _ from 'lodash';\nimport {\n callSegmentIdentifyEvent,\n SegmentProfileIdCookies,\n segmentReadyCallback,\n setSegmentContextMVPD,\n setSegmentEntitlements,\n} from '@foxcorp/delta-web-analytics';\nimport { setCookie } from 'helpers/Storage';\nimport { getMVPDFromCookie, hasEntitlementOverride } from 'helpers/ContentHelper';\nimport { getAnonymousIdCookie } from 'helpers/AnonymousHelper';\n\nclass Segment extends Component {\n constructor(props) {\n super(props);\n this.setAnonymousProfileIdCookie();\n this.state = {\n isAnalyticsReady: false,\n };\n }\n\n componentDidMount() {\n this.identifyUser();\n const { setTimeout } = this.props;\n const analyticsReadyCheckDelay = 5000;\n setTimeout(() => {\n const { isAnalyticsReady } = this.state;\n if (!isAnalyticsReady) {\n const { analytics } = window;\n if (analytics) analytics.track('Segment Not Ready Error');\n }\n }, analyticsReadyCheckDelay);\n\n // todo: refactor identifyUser and other dependencies on segment's\n // analytics.ready into this delta-web-analytics callback\n window.analytics?.ready(segmentReadyCallback);\n }\n\n componentDidUpdate(prevProps) {\n const {\n account,\n loggedInAccountEmail,\n loggedInAnonymousProfileId,\n mvpd,\n entitlements,\n } = this.props;\n const {\n loggedInAccountEmail: prevLoggedInAccountEmail,\n loggedInAnonymousProfileId: prevLoggedInAnonymousProfileId,\n mvpd: prevMvpd,\n entitlements: prevEntitlements,\n } = prevProps;\n const anonymousLoggedInChanged = loggedInAnonymousProfileId !== prevLoggedInAnonymousProfileId;\n const anonymousLoggedInUpdated = loggedInAnonymousProfileId && anonymousLoggedInChanged;\n const emailChanged = prevLoggedInAccountEmail !== loggedInAccountEmail;\n const isEmailUpdated = loggedInAccountEmail && emailChanged;\n const isPreviewPassMvpd = _.includes(mvpd, 'preview pass');\n const previewPassMVPDRemoved = _.includes(prevMvpd, 'preview pass') && mvpd === '';\n const isPreviewPass = isPreviewPassMvpd || previewPassMVPDRemoved;\n const isMvpdChanged = !isPreviewPass && prevMvpd !== mvpd;\n let entitlementsUpdated = !isPreviewPass && entitlements !== prevEntitlements;\n if (mvpd === '' && entitlements !== '') entitlementsUpdated = false;\n const shouldIdentifyUser =\n isEmailUpdated || anonymousLoggedInUpdated || isMvpdChanged || entitlementsUpdated;\n if (account) {\n const userId = _.get(account, 'profileId');\n setCookie({\n name: SegmentProfileIdCookies.LAST_KNOWN,\n value: userId,\n options: { path: '/' },\n });\n }\n this.setAnonymousProfileIdCookie();\n if (shouldIdentifyUser) this.identifyUser();\n }\n\n setAnonymousProfileIdCookie = () => {\n const { anonymousAccount } = this.props;\n if (anonymousAccount) {\n const userId = _.get(anonymousAccount, 'profileId');\n setCookie({\n name: SegmentProfileIdCookies.LAST_KNOWN_ANONYMOUS,\n value: userId,\n options: { path: '/' },\n });\n }\n };\n\n identifyUser() {\n const analyticsLoaded = _.get(window, 'analytics');\n const analyticsUser = _.get(window, 'analytics.user');\n if (analyticsLoaded && analyticsUser) {\n const {\n anonymousId,\n entitlements,\n firstIdentifyCall,\n firstSegmentIdentifyCalled,\n loggedInAccountProfileId,\n } = this.props;\n this.setState({ isAnalyticsReady: true });\n const mvpd = getMVPDFromCookie();\n // Preemptively set anonId to prevent segment default from being used\n if (analyticsLoaded.user && !getAnonymousIdCookie())\n analyticsLoaded.user().anonymousId(anonymousId);\n const userId = loggedInAccountProfileId || null;\n const validMvpd = mvpd && !_.includes(mvpd, 'TempPass');\n const entitlementOverride = hasEntitlementOverride();\n let currentEntitlements = entitlements;\n if (entitlementOverride) currentEntitlements = entitlementOverride;\n setSegmentContextMVPD(mvpd);\n setSegmentEntitlements(currentEntitlements);\n const newEntitlements = () => {\n // Allow empty mvpd with entitlements from DCG Profile w/ FX+BT enabled\n if (entitlementOverride) return entitlementOverride;\n return validMvpd ? entitlements : '';\n };\n const segCompProps = {\n profileType: {\n anonymous: !loggedInAccountProfileId,\n },\n mvpd: validMvpd ? mvpd : '',\n entitlements: newEntitlements(),\n };\n callSegmentIdentifyEvent({ eventName: userId, segCompProps });\n if (!firstIdentifyCall) firstSegmentIdentifyCalled();\n }\n }\n\n render() {\n return null;\n }\n}\n\nSegment.defaultProps = {\n account: {},\n anonymousAccount: {},\n anonymousId: null,\n entitlements: null,\n firstSegmentIdentifyCalled: () => {},\n loggedInAccountEmail: null,\n loggedInAccountProfileId: null,\n loggedInAnonymousProfileId: null,\n mvpd: '',\n setTimeout: () => {},\n};\n\nSegment.propTypes = {\n account: PropTypes.shape({}),\n anonymousAccount: PropTypes.shape({}),\n anonymousId: PropTypes.string,\n entitlements: PropTypes.oneOfType([PropTypes.shape([]), PropTypes.string]),\n firstIdentifyCall: PropTypes.bool.isRequired,\n firstSegmentIdentifyCalled: PropTypes.func,\n loggedInAccountEmail: PropTypes.string,\n loggedInAccountProfileId: PropTypes.string,\n loggedInAnonymousProfileId: PropTypes.string,\n mvpd: PropTypes.string,\n setTimeout: PropTypes.func,\n};\n\nexport default ReactTimeout(Segment);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Style from './PopUpModal.module.scss';\n\nconst PopUpModal = ({ buttonText, children, message, onClose = () => null, visibility }) => (\n <div className={classNames([Style.container, visibility && Style.visible])} onClick={onClose}>\n <div className={Style.contents} onClick={e => e.stopPropagation()}>\n <div className={Style.closeButtonContainer}>\n <button className={Style.closeButton} onClick={onClose} />\n </div>\n <div className={Style.infoContainer}>\n {message && <div className={Style.description}>{message}</div>}\n {children}\n {buttonText && (\n <button className={classNames(Style.actionButton)} onClick={onClose} type=\"button\">\n <label className={Style.label}>{buttonText}</label>\n </button>\n )}\n </div>\n </div>\n </div>\n);\n\nPopUpModal.propTypes = {\n buttonText: PropTypes.string,\n children: PropTypes.node,\n message: PropTypes.string,\n onClose: PropTypes.func,\n visibility: PropTypes.bool,\n};\n\nexport default React.memo(PopUpModal);\n","/* global DynamicRatingEnabled */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport style from './DynamicRating.css';\n\nconst DynamicRating = ({ rating, subRatings }) => {\n if (!rating || !DynamicRatingEnabled) return null;\n\n const baseUrl = window.ExternalConfig ? window.ExternalConfig.ratingImages : '';\n const isHD = !!(subRatings && subRatings.indexOf('h') !== -1);\n const concatedSubRatings = subRatings ? subRatings.join('') : '';\n const prefixResolution = isHD ? 'HD' : 'SD';\n const suffixResolution = isHD ? 'H' : 'S';\n const extention = '.png';\n const path = '/LARGE/';\n\n const ratingStandardNaming = rating.replace('tv-', 'ltv');\n const ratings = (ratingStandardNaming + concatedSubRatings).toUpperCase();\n\n const imageUrl = [baseUrl, prefixResolution, path, ratings, suffixResolution, extention].join('');\n\n const classname = classNames([style.rating, isHD ? style.HD : null]);\n\n return (\n <div className={classname}>\n <img alt={rating} src={imageUrl} />\n </div>\n );\n};\n\nDynamicRating.defaultProps = {\n subRatings: [],\n};\n\nDynamicRating.propTypes = {\n rating: PropTypes.string.isRequired,\n subRatings: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default DynamicRating;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport TileGrid from 'components/TileGrid';\nimport { getCookie } from 'helpers/Storage';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport {\n DEVICE_IOS,\n mobileDeviceType,\n LOCAL_CLIP_PAGE_COOKIE_NAME,\n COLLECTION_TYPE_LOCAL_CLIPS,\n} from 'helpers/ContentHelper';\nimport { handleAnalytics, Events, getEndcardContentList } from '@foxcorp/delta-web-analytics';\nimport Style from './Endcard.module.scss';\n\nclass Endcard extends Component {\n componentDidMount() {\n const { endcardItems } = this.props;\n if (endcardItems) {\n const endCardContentList = getEndcardContentList({\n endcardItems,\n headerRecommended: window.Language?.videoPage_headerRecommended ?? '',\n headerUpNext: window.Language?.videoPage_headerUpNext ?? '',\n });\n let endcardContentLength = 0;\n if (endcardItems.length) {\n endcardContentLength = endcardItems.length > 1 ? 2 : endcardItems.length;\n }\n handleAnalytics({\n event: Events.EVENT_END_CARD_IMPRESSION,\n payload: {\n end_card_content_list: endCardContentList,\n end_card_content_length: endcardContentLength,\n },\n tealiumPayload: {\n end_card_content_list: endCardContentList,\n end_card_content_length: endcardContentLength,\n ...getCommonTealiumProps(),\n },\n });\n _.set(window, 'utag_data.collection_title', null);\n }\n }\n\n render() {\n const {\n continuousPlayback,\n endcardItems,\n mediaEndingSeconds,\n renderImage,\n videoProcessor,\n onClick,\n isFullscreen,\n isAuthenticated,\n } = this.props;\n\n if (!endcardItems) return null;\n\n let items = endcardItems;\n\n const {\n videoPage_headerRecommended: headerRecommended,\n videoPage_headerUpNext: headerUpNext,\n } = window.Language;\n\n if (items.length === 0) return null;\n\n items = items.slice(0, 2);\n\n // setup the up next counter\n if (items[0] && continuousPlayback) {\n items[0].counter = (\n <span className={Style.counter}>\n {headerUpNext}\n <span className={Style.seconds}>{mediaEndingSeconds}</span>\n </span>\n );\n }\n\n if (items[1]) {\n items[1].counter = <span className={Style.counter}>{headerRecommended}</span>;\n }\n const componentProps = {\n collectionType:\n getCookie({ name: LOCAL_CLIP_PAGE_COOKIE_NAME }) && COLLECTION_TYPE_LOCAL_CLIPS,\n items,\n gridType: 'grid-2-1',\n processor: videoProcessor,\n preventLazyLoad: true,\n tileType: 'tile-image-left',\n tileDetailToggle: false,\n tileTheme: Style,\n mediaEndingSeconds,\n renderImage,\n onTileClick: onClick,\n onTitleClick: onClick,\n isAuthenticated,\n };\n\n const className = [Style.playerEndcard];\n const containerClasses = [Style.endCardContainer];\n const isIosDevice = mobileDeviceType() === DEVICE_IOS;\n\n if (items.length === 1) className.push(Style.single);\n if (isFullscreen) {\n className.push(Style.fullscreen);\n containerClasses.push(Style.containerFull);\n }\n\n if (isFullscreen && isIosDevice) className.push(Style.hideEndCard);\n\n return (\n <div className={classNames(containerClasses)}>\n <div className={classNames(className)}>\n <TileGrid {...componentProps} />\n </div>\n </div>\n );\n }\n}\nEndcard.defaultProps = {\n continuousPlayback: null,\n endcardItems: null,\n isAuthenticated: null,\n isFullscreen: null,\n mediaEndingSeconds: null,\n renderImage: PropTypes.func,\n onClick: () => {},\n videoProcessor: () => {},\n};\nEndcard.propTypes = {\n continuousPlayback: PropTypes.bool,\n endcardItems: PropTypes.arrayOf(PropTypes.shape({})),\n isAuthenticated: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n mediaEndingSeconds: PropTypes.number,\n renderImage: PropTypes.func,\n onClick: PropTypes.func,\n videoProcessor: PropTypes.func,\n};\n\nexport default Endcard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport Style from 'app/components/VideoPlayerGlobal/components/Endcard/Endcard.module.scss';\n\nconst GenericEndcard = ({ action, background, cta, header }) => (\n <div className={Style.endcard}>\n <img className={Style.background} src={background} alt=\"\" />\n <div className={Style.endcardContainer}>\n <div className={Style.endcardHeader}>{header}</div>\n <Link className={Style.endcardCta} onClick={action}>\n {cta}\n </Link>\n </div>\n </div>\n);\n\nexport default GenericEndcard;\n\nGenericEndcard.propTypes = {\n action: PropTypes.func.isRequired,\n background: PropTypes.string.isRequired,\n cta: PropTypes.string.isRequired,\n header: PropTypes.string.isRequired,\n};\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { scheduleItemVideoProcessor } from 'helpers/VideoProcessorHelper';\nimport { getVideoData } from 'screens/Live/LiveHelpers';\nimport Style from './UpNextToast.module.scss';\n\nconst UpNextToast = ({ video, onWatch, onHide, renderImage }) => {\n if (!video) return null;\n const { title } = getVideoData(video);\n const { image } = scheduleItemVideoProcessor({ item: video });\n const { overrun_scenario_text: overrunScenarioText } = window.Language;\n return (\n <div className={Style.container}>\n <div className={Style.detailContainer}>\n {renderImage({\n className: Style.image,\n src: image,\n alt: title,\n })}\n <div className={Style.infoContainer}>\n <div className={Style.titleContainer}>\n <div>{overrunScenarioText}</div>\n <div className={Style.title}>{title}</div>\n </div>\n <div className={Style.actionButtons}>\n <Link className={Style.primaryButton} onClick={onWatch}>\n Watch Live\n </Link>\n <Link className={Style.secondaryButton} onClick={onHide}>\n Hide\n </Link>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default UpNextToast;\n\nUpNextToast.propTypes = {\n renderImage: PropTypes.func.isRequired,\n video: PropTypes.shape({}).isRequired,\n onWatch: PropTypes.func.isRequired,\n onHide: PropTypes.func.isRequired,\n theme: PropTypes.shape({}),\n};\n\nUpNextToast.defaultProps = {\n theme: {},\n};\n","/* global FavoritesEnabled, */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Dotdotdot from 'react-dotdotdot';\nimport Badge from 'components/Badge';\nimport Icon from 'components/Icon';\nimport Favorite, {\n FAVORITE_TYPE_ICON,\n FAVORITE_TEXT_POSITION_RIGHT,\n FAVORITE_PLUS_CIRCLE,\n} from 'components/Favorite';\nimport StringList from 'components/StringList';\nimport ReadMore from 'components/ReadMore';\nimport { SHOW_STATE_LIVE, SHOW_STATE_UPNEXT } from 'helpers/BadgeHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport { PageNames, SegmentSources, tealiumEventPageTypes } from '@foxcorp/delta-web-analytics';\nimport { isMovie, castProcessor } from 'helpers/ContentHelper';\nimport { helperGetSeriesDetailUrl } from 'helpers/RouteHelper';\nimport favoriteTheme from './Favorite.css';\nimport readMoreTheme from './ReadMore.css';\nimport Style from './VideoDetail.module.scss';\n\nclass VideoDetailComponent extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n toggleDetailStatus: false,\n showNetworkIcon: false,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { showNetworkIcon } = nextProps;\n this.setState({ showNetworkIcon });\n }\n\n onToggleClick = () => {\n const { toggleDetailStatus } = this.state;\n this.setState({ toggleDetailStatus: !toggleDetailStatus });\n };\n\n handleHover = hover => {\n const { setPlayerDataHover } = this.props;\n if (setPlayerDataHover) setPlayerDataHover(hover);\n };\n\n renderCreditsTags({ minimal }) {\n const { videoPage_castLabel: castLabel } = window.Language;\n const { actors: actorsRaw } = this.props;\n const uniqueByCharacterName = _.uniqBy(actorsRaw, e => e.characterName);\n const actors = _.uniqBy(uniqueByCharacterName, e => e.name);\n if (!actors || !actors.length) return null;\n if (minimal) {\n return (\n <StringList\n label={castLabel}\n items={actors}\n processor={castProcessor}\n className={Style.creditsString}\n />\n );\n }\n return (\n <div className={Style.creditsWrapper}>\n <StringList\n label={castLabel}\n items={actors}\n processor={castProcessor}\n className={Style.subtextCredits}\n />\n </div>\n );\n }\n\n renderDescriptionItem() {\n const { description } = this.props;\n if (!description) return null;\n return (\n <ReadMore\n className={classNames(Style.descriptionWrapper, Style.displayReadMore)}\n moreText=\"More\"\n lessText=\"Less\"\n lines={1}\n theme={readMoreTheme}\n >\n {description}\n </ReadMore>\n );\n }\n\n renderFavorite() {\n const {\n disableFavorite,\n favoritableItems,\n favoritesManager,\n itemType,\n network,\n recommendationId,\n seriesName,\n showCode: showID,\n video,\n } = this.props;\n if (!FavoritesEnabled || disableFavorite) return null;\n const categoryType = _.get(video, 'categoryType');\n const location = _.get(tealiumEventPageTypes, PageNames.FAVORITES_DETAIL);\n const isPersonality = categoryType && categoryType === 'personality';\n const source = SegmentSources.VOD;\n const type = FAVORITE_TYPE_ICON;\n const textPosition = FAVORITE_TEXT_POSITION_RIGHT;\n let defaultText;\n\n const favoriteData = {\n actionLocation: 'player',\n favoritableItems,\n location,\n networkId: network,\n recommendationId,\n seriesName,\n showType: itemType,\n favoriteType: isPersonality ? 'personality' : itemType,\n showID,\n source,\n };\n\n return (\n <Favorite\n manager={favoritesManager}\n data={favoriteData}\n type={type}\n textPosition={textPosition}\n theme={favoriteTheme}\n defaultText={defaultText}\n iconType={FAVORITE_PLUS_CIRCLE}\n />\n );\n }\n\n renderInfoDetail() {\n const { networkIcon, description, tuneIn } = this.props;\n const { videoPage_tuneinLabel: tuneInLabel } = window.Language;\n const { toggleDetailStatus } = this.state;\n let infoContainerClasses = classNames(Style.infoContainer, Style.hidden);\n if (toggleDetailStatus) {\n infoContainerClasses = Style.infoContainer;\n }\n const tuneInText = () => {\n if (tuneIn) {\n const formattedText = tuneIn[0].toUpperCase() + tuneIn.substr(1).toLowerCase();\n return `${formattedText} on`;\n }\n return tuneIn;\n };\n const creditsTags = this.renderCreditsTags({});\n const tuneInTags = tuneIn ? (\n <div className={Style.tuneInWrapper}>\n <span className={Style.subtitle}>{tuneInLabel}</span>\n <span className={Style.subtextTuneIn}>{tuneInText()}</span>\n <div className={Style.networkLogoDetail}>\n <img alt=\"Network Logo\" src={networkIcon} />\n </div>\n </div>\n ) : null;\n const descriptionTags = description ? (\n <div className={Style.descriptionWrapper}>\n <span className={Style.subtext}>{description}</span>\n </div>\n ) : null;\n if (!tuneInTags && !descriptionTags && !creditsTags) return null;\n return (\n <div className={infoContainerClasses}>\n <div className={Style.infoCenter}>\n {descriptionTags}\n {creditsTags}\n {tuneInTags}\n </div>\n </div>\n );\n }\n\n renderVideoDetail() {\n const {\n adPlaying,\n badge,\n isContextPlayer,\n isFullscreen,\n isLive,\n isModal,\n isSeriesDetailAvailable,\n metadata,\n networkIcon,\n onTitleClick,\n playerLoading,\n renderInfo,\n seriesScreenUrl,\n showCode,\n showControls,\n showSubtitle,\n title,\n tuneIn,\n type,\n } = this.props;\n\n const { toggleDetailStatus, showNetworkIcon } = this.state;\n let detailIconType = 'keyboard-arrow-down';\n let toggleClasses = Style.toggle;\n const isMovieType = isMovie(type);\n const movieSubtitle = this.renderCreditsTags({ minimal: true });\n const subtitleText = isMovieType ? movieSubtitle : showSubtitle;\n const hideSubtitle = toggleDetailStatus && isMovieType;\n const subtitleTag = subtitleText && !hideSubtitle && (\n <h2 className={Style.showSubtitle}>\n <Dotdotdot clamp={3}>{subtitleText}</Dotdotdot>\n </h2>\n );\n if (toggleDetailStatus) {\n detailIconType = 'keyboard-arrow-up';\n toggleClasses = classNames(toggleClasses, Style.toggleActive);\n }\n const infoDetailComponent =\n ((renderInfo && toggleDetailStatus) || isModal) && this.renderInfoDetail();\n const toggleTags = renderInfo && (\n <Link key=\"videoDetailToggleLink\" onClick={this.onToggleClick} className={toggleClasses}>\n <Icon size=\"medium\" color=\"grey\" icon={detailIconType} theme={Style} />\n </Link>\n );\n const descriptionItem = !renderInfo && !isModal && this.renderDescriptionItem();\n const networkLogoContainerClasses = [Style.logoContainer];\n if (!showNetworkIcon) networkLogoContainerClasses.push(Style.hideNetworkLogo);\n const networkLogoClasses = classNames(\n Style.networkLogo,\n isFullscreen && Style.networkLogoFullscreen,\n );\n const infoDetailTuneInRendered = !(infoDetailComponent && tuneIn);\n const logoComponent = infoDetailTuneInRendered && networkIcon && !isLive && (\n <div className={classNames(networkLogoContainerClasses)}>\n <div className={networkLogoClasses}>\n <img src={networkIcon} alt=\"\" />\n </div>\n </div>\n );\n let badgeItem = null;\n if (badge) {\n const badgeLive = badge.toUpperCase() === SHOW_STATE_LIVE;\n const badgeInvalidUpNext = isLive && badge.toUpperCase() === SHOW_STATE_UPNEXT;\n if (!badgeLive && !badgeInvalidUpNext) {\n badgeItem = <Badge theme={Style} badge={badge} />;\n }\n }\n const liveIndicator = isLive && <Badge theme={Style} badge={SHOW_STATE_LIVE} liveIndicator />;\n const badgeContainer = (badgeItem || liveIndicator) && (\n <div className={Style.badgeContainer}>\n {badgeItem}\n {liveIndicator}\n </div>\n );\n const containerClasses = [Style.container];\n const url = helperGetSeriesDetailUrl(showCode);\n let titleTag = isSeriesDetailAvailable ? (\n <Link onClick={onTitleClick} to={url} className={Style.titleLink}>\n {title}\n </Link>\n ) : (\n <span className={classNames(Style.titleLink, Style.titleLinkDisabled)}>{title}</span>\n );\n let titleClasses = Style.title;\n if (!seriesScreenUrl) {\n titleTag = title;\n titleClasses = classNames(Style.title, Style.titleDisabled);\n }\n if (isContextPlayer) {\n titleClasses = classNames(Style.title, Style.contextTitle);\n }\n if (!showControls) containerClasses.push(Style.controlsHidden);\n if (playerLoading) containerClasses.push(Style.playerLoading);\n if (adPlaying) containerClasses.push(Style.adPlaying);\n\n return (\n <div\n className={classNames(containerClasses)}\n onMouseEnter={() => this.handleHover(true)}\n onMouseLeave={() => this.handleHover(false)}\n >\n <div className={Style.detailContainer}>\n {badgeContainer}\n <div className={Style.titleHeader}>\n <aside className={titleClasses}>\n <h1>\n {titleTag} {this.renderFavorite()}\n </h1>\n {toggleTags}\n {subtitleTag}\n {descriptionItem}\n <p className={Style.metadata}>{metadata}</p>\n </aside>\n </div>\n {infoDetailComponent}\n </div>\n {logoComponent}\n </div>\n );\n }\n\n render() {\n return this.renderVideoDetail();\n }\n}\n\nVideoDetailComponent.defaultProps = {\n actors: null,\n adPlaying: false,\n badge: null,\n description: null,\n disableFavorite: false,\n favoritableItems: [],\n favoritesManager: null,\n isContextPlayer: false,\n isFullscreen: false,\n isLive: false,\n isModal: false,\n isSeriesDetailAvailable: true,\n itemType: null,\n metadata: null,\n network: null,\n networkIcon: null,\n onTitleClick: noop,\n playerLoading: false,\n recommendationId: null,\n renderInfo: false,\n seriesName: '',\n seriesScreenUrl: null,\n setPlayerDataHover: noop,\n showCode: '',\n showControls: false,\n showNetworkIcon: false,\n showSubtitle: null,\n title: '',\n tuneIn: null,\n type: '',\n video: null,\n};\n\nVideoDetailComponent.propTypes = {\n actors: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n }),\n ),\n adPlaying: PropTypes.bool,\n badge: PropTypes.string,\n description: PropTypes.string,\n disableFavorite: PropTypes.bool,\n favoritableItems: PropTypes.arrayOf(PropTypes.shape({})),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n deleteFavorites: PropTypes.func.isRequired,\n }),\n itemType: PropTypes.string,\n isContextPlayer: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n isLive: PropTypes.bool,\n isModal: PropTypes.bool,\n isSeriesDetailAvailable: PropTypes.bool,\n metadata: PropTypes.string,\n network: PropTypes.string,\n networkIcon: PropTypes.string,\n onTitleClick: PropTypes.func,\n playerLoading: PropTypes.bool,\n recommendationId: PropTypes.string,\n renderInfo: PropTypes.bool,\n seriesName: PropTypes.string,\n seriesScreenUrl: PropTypes.string,\n setPlayerDataHover: PropTypes.func,\n showCode: PropTypes.string,\n showControls: PropTypes.bool,\n showNetworkIcon: PropTypes.bool, // eslint-disable-line react/no-unused-prop-types\n showSubtitle: PropTypes.string,\n title: PropTypes.string,\n tuneIn: PropTypes.string,\n type: PropTypes.string,\n video: PropTypes.shape({}),\n};\n\nexport default connect()(VideoDetailComponent);\n","/* global EpgEnabled, ProfileEnabled, UseContinuousAutoplay */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { browserHistory } from 'react-router';\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n WATCH_RELATED_THUMBNAIL_IMAGE,\n WATCH_PLAYER_BACKGROUND_IMAGE,\n getDynamicImage,\n renderImage,\n} from 'helpers/ImageHelper';\nimport { getCommonTealiumProps } from 'helpers/AccountHelper';\nimport { endcardVideoProcessor } from 'helpers/VideoProcessorHelper';\nimport { Endcard, GenericEndcard, VideoDetail } from 'components/VideoPlayerGlobal/components';\nimport { getEndCardDuration, getVideoDetailProps } from 'components/VideoPlayerGlobal/Helper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport {\n getAdBlockDetectCookie,\n getAuthZEntitlementIssues,\n isClip,\n isClipTrailer,\n isMvpdSubscription,\n LOCAL_CLIP_INITIAL_ID,\n LOCAL_CLIP_INITIAL_PLAYER_URL,\n LOCAL_CLIP_PAGE_COOKIE_NAME,\n removeAdBlockDetectCookie,\n setAdBlockDetectCookie,\n setLocalClipPage,\n shouldBlockEndcardsForTrailer,\n} from 'helpers/ContentHelper';\nimport { PAGE_COLLECTION } from 'helpers/PageHelper';\nimport { getCookie } from 'helpers/Storage';\nimport {\n CONTINUOUS,\n PLAYLIST,\n RESTART,\n VOD,\n INTERRUPTION_METHODS,\n getPlayer,\n getActivePlayer,\n getPlayerState,\n isPreviewPass,\n playerControlsVisible,\n playerSetFullscreen,\n playerHideControls,\n playerPause,\n playerPlay,\n playerRemove,\n setStillWatchingHideTimeout,\n setStillWatchingShowTimeout,\n stillWatchingHideCb,\n stillWatchingShowCb,\n isPlayerTypeHero,\n} from 'helpers/PlayerHelper';\nimport {\n getLocation,\n helperGoToVideoDetail,\n helperGetVideoUrl,\n helperGetHomeUrl,\n helperGetLiveUrl,\n helperGoToRelativeUrl,\n getPreviousPathname,\n} from 'helpers/RouteHelper';\nimport { logPlayerError, logPlayerEvent } from 'helpers/LogReportHelpers';\nimport {\n callSegmentPlayerEvent,\n checkRecommendationIdOnClick,\n Events,\n getRecommendationIdDataForItem,\n getSegmentPodId,\n getSegmentReferrer,\n getSegmentSourceName,\n getSegmentSourceType,\n getTealiumSourceCollectionGlobal,\n getTealiumSourceShow,\n handleAnalytics,\n PageNames,\n SegmentPlayerStates,\n SEGMENT_CONTENT_PLAYING_INTERVAL_SEC,\n SegmentVideoEvents,\n setSegmentContentPersonality,\n trackPageReferrerAnalytics,\n updateNielsenOTTStatus,\n} from '@foxcorp/delta-web-analytics';\n\nimport { RESTART_TYPE_LIVE } from 'screens/Watch/WatchHelpers';\nimport { pipeAll, get, omit } from 'helpers/Functional';\n\nconst { CONTINUOUS_PLAY, ENDCARD, HOME, LIVE, NEWS, PLAYER, PLAYER_DETAIL } = PageNames;\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n suppressNetworkIcon: false,\n defaultHideAltHeader: false,\n canHideControls: true,\n renderInfoInDetail: false,\n stillWatchingTimeoutEnabled: false,\n gridToggleLimit: 4,\n gridPrimaryToggleLimit: 4,\n gridMovieToggleLimit: 8,\n renderList: false,\n playerMetadataOverlay: true,\n },\n [SITE_PLATFORM_WEB]: {\n suppressNetworkIcon: false,\n defaultHideAltHeader: false,\n canHideControls: true,\n renderInfoInDetail: false,\n stillWatchingTimeoutEnabled: false,\n gridToggleLimit: 4,\n gridPrimaryToggleLimit: 4,\n gridMovieToggleLimit: 8,\n renderList: false,\n playerMetadataOverlay: true,\n },\n [SITE_PLATFORM_TABLET]: {\n suppressNetworkIcon: false,\n defaultHideAltHeader: true,\n canHideControls: false,\n renderInfoInDetail: true,\n stillWatchingTimeoutEnabled: false,\n gridToggleLimit: 3,\n gridPrimaryToggleLimit: 6,\n gridMovieToggleLimit: 3,\n renderList: true,\n playerMetadataOverlay: false,\n overrideShowNetworkBug: true,\n },\n [SITE_PLATFORM_MOBILE]: {\n suppressNetworkIcon: false,\n defaultHideAltHeader: true,\n canHideControls: false,\n renderInfoInDetail: true,\n stillWatchingTimeoutEnabled: false,\n gridToggleLimit: 3,\n gridPrimaryToggleLimit: 6,\n gridMovieToggleLimit: 3,\n renderList: true,\n playerMetadataOverlay: false,\n overrideShowNetworkBug: true,\n },\n};\n\nclass WatchContext extends Component {\n constructor(props) {\n super(props);\n const { panelVideo, preauthorizedResources } = props;\n const anonymousResume = !ProfileEnabled;\n const blockEndcardsForTrailer = shouldBlockEndcardsForTrailer(\n panelVideo,\n preauthorizedResources,\n );\n this.state = {\n anonymousResume,\n anonymousResumeProfileUpsell: null,\n blockEndcardsForTrailer,\n contentStarted: false,\n isEndCardClicked: false,\n restartFromBeginning: false,\n secondsViewed: 0,\n // showStillWatching is used in both stillWatchingHideCb and stillWatchingShowCb\n // eslint-disable-next-line react/no-unused-state\n showStillWatching: false,\n // trackedAnalyticsReferrer is used in trackPageReferrerAnalytics\n // eslint-disable-next-line react/no-unused-state\n trackedAnalyticsReferrer: false,\n };\n\n this.AD_INTERVAL_SEC = 1;\n this.eventVideoProps = null;\n this.playbackProps = null;\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.setStillWatchingHideTimeout = setStillWatchingHideTimeout.bind(this);\n this.setStillWatchingShowTimeout = setStillWatchingShowTimeout.bind(this);\n this.stillWatchingHideCb = stillWatchingHideCb.bind(this);\n this.stillWatchingHideTimeout = null;\n this.stillWatchingShowCb = stillWatchingShowCb.bind(this);\n this.triggeredPlaybackInterrupted = false;\n }\n\n componentDidMount() {\n this.triggerPlayerView();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {\n continuous,\n errors,\n panelVideo,\n playlist,\n restart,\n setPlayerState,\n vodClickedState,\n vodSectionClicked,\n } = this.props;\n const {\n errors: nextErrors,\n restartVideo: nextRestartVideo,\n panelVideo: nextPanelVideo,\n playerType,\n preauthorizedResources,\n } = nextProps;\n const hash = _.trim(_.get(nextProps, 'location.hash'), '#');\n const mode = _.get(nextProps, 'params.modeId', '');\n const newIsRestart = mode === RESTART || _.includes(hash, RESTART);\n // TODO: Cleanup - this logic is duplicated in Global Player, can we remove it there?\n const hashIncludesPlaylist = _.includes(hash, PLAYLIST);\n const newPlaylistId = hashIncludesPlaylist ? hash.replace(`${PLAYLIST}=`, '') : null;\n const newIsContinuous = _.includes(hash, CONTINUOUS) || hashIncludesPlaylist;\n const isRestart = restart !== newIsRestart;\n const isContinuous = continuous !== newIsContinuous;\n const isPlaylist = playlist !== newPlaylistId;\n if (isRestart || isContinuous || isPlaylist) {\n setPlayerState({\n restart: newIsRestart,\n continuous: newIsContinuous,\n playlist: newPlaylistId,\n showRestartOverlay: false,\n isVideoOverlayPresent: false,\n });\n }\n if (vodSectionClicked) {\n this.setState({ ...vodClickedState });\n const currentPlayerState = getPlayerState(getActivePlayer());\n if (\n !this.triggeredPlaybackInterrupted &&\n (currentPlayerState === 'PLAYING' || currentPlayerState === 'AD')\n ) {\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props: {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n session_id: this.sessionId ?? '',\n method: INTERRUPTION_METHODS.BROWSER_ACTION,\n video_player_state: SegmentPlayerStates.PAUSE,\n },\n });\n this.triggeredPlaybackInterrupted = true;\n }\n }\n\n if (newIsRestart) this.setState({ restartFromBeginning: true });\n\n if (panelVideo !== nextPanelVideo) {\n const blockEndcardsForTrailer =\n !isPlayerTypeHero(playerType) &&\n shouldBlockEndcardsForTrailer(nextPanelVideo, preauthorizedResources);\n\n setPlayerState({ showTrailerUpsell: false });\n\n this.setState({\n blockEndcardsForTrailer,\n restartFromBeginning: false,\n });\n }\n\n if ((errors !== nextErrors && hash) || (newIsRestart && !nextRestartVideo)) {\n if (_.includes(hash, RESTART_TYPE_LIVE)) {\n this.gotoLive();\n }\n }\n }\n\n shouldComponentUpdate(nextProps) {\n const newProps = this.getChangingProps(nextProps);\n const oldProps = this.getChangingProps(this.props);\n return !_.isEqual(newProps, oldProps);\n }\n\n componentDidUpdate(prevProps) {\n const {\n account,\n breakpoint,\n continuousPlayback,\n firstFramePlayed,\n mediaComplete,\n mediaEndingSeconds,\n nextVideos,\n playlist,\n playerType,\n provider,\n setVideoPanel,\n startedPlayback,\n updateShowcaseVideo,\n } = this.props;\n const {\n account: prevAccount,\n breakpoint: prevBreakpoint,\n provider: prevProvider,\n video: prevVideo,\n } = prevProps;\n const { blockEndcardsForTrailer } = this.state;\n const mvpdId = _.get(provider, 'adobePassId');\n const prevMvpdId = _.get(prevProvider, 'adobePassId');\n const mvpdIdChanged = mvpdId !== prevMvpdId;\n const userSignedInToMVPD = mvpdId && prevMvpdId && mvpdIdChanged && !isPreviewPass(mvpdId);\n const userSignedInToAccount = account && !prevAccount;\n const breakpointChanged = breakpoint !== prevBreakpoint;\n const userShowedActivity = breakpointChanged && firstFramePlayed;\n\n if (userShowedActivity) this.resetStillWatchingTimeout();\n if (userSignedInToAccount || userSignedInToMVPD) {\n this.setState({\n anonymousResumeProfileUpsell: null,\n restartFromBeginning: false,\n });\n }\n\n const mediaFinished = mediaComplete === true && mediaEndingSeconds === 0 && startedPlayback;\n const shouldPlayNextVideo = mediaFinished && continuousPlayback && !blockEndcardsForTrailer;\n if (shouldPlayNextVideo) {\n if (isPlayerTypeHero(playerType)) {\n const nextVideo = _.get(nextVideos, '0', null);\n setVideoPanel({ video: nextVideo, source: PAGE_COLLECTION });\n updateShowcaseVideo(nextVideo);\n } else {\n const nextVideoId = _.get(nextVideos, '0.id');\n const prevVideoId = _.get(prevVideo, 'id');\n const currentUrl = window.location.pathname;\n const nextUrl = helperGetVideoUrl(nextVideoId);\n const nextVideoAvailable = nextVideoId && nextVideoId !== prevVideoId;\n const urlWillChange = currentUrl !== nextUrl;\n\n if (nextVideoAvailable && urlWillChange) {\n const hash = playlist ? `#${PLAYLIST}=${playlist}` : `#${CONTINUOUS}`;\n helperGoToVideoDetail(nextVideoId, hash);\n }\n }\n }\n }\n\n componentWillUnmount() {\n const currentPlayerState = getPlayerState(getActivePlayer());\n if (currentPlayerState === 'PLAYING' || currentPlayerState === 'AD') {\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props: {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n session_id: this.sessionId ?? '',\n method: INTERRUPTION_METHODS.BROWSER_ACTION,\n video_player_state: SegmentPlayerStates.PAUSE,\n },\n });\n }\n\n const { video, setPlayerState } = this.props;\n const item = Object.assign({}, video);\n item.videoFormat = 'vod';\n // TODO: have vod section click update this variable to true\n if (!this.ignoreUnmountReferrerAnalytics) {\n this.trackPageReferrerAnalytics({\n name: PLAYER,\n });\n }\n setPlayerState({ showTrailerUpsell: false });\n }\n\n onEndcardClick = opts => {\n const { itemIndex, subtitleText, titleText, originalItem } = opts;\n handleAnalytics({\n event: Events.END_CARD_ITEM_SELECTED,\n payload: {\n page_action_type: itemIndex === 0 ? 'upNext' : 'recommended',\n page_item_title: titleText || undefined,\n page_item_subtitle: subtitleText || undefined,\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n this.setState({ isEndCardClicked: true });\n const { setPlayerState } = this.props;\n setPlayerState({ clickedEndSlate: true }, () => {\n const { recommendationIdData, setRecommendationId } = this.props;\n const nextRecommendationIdData = getRecommendationIdDataForItem(originalItem);\n\n this.trackPageReferrerAnalytics({\n name: ENDCARD,\n });\n\n // Update recommendation id on click of endcard item if they are not the same\n checkRecommendationIdOnClick(\n recommendationIdData,\n nextRecommendationIdData,\n setRecommendationId,\n );\n });\n };\n\n getChangingProps = props => {\n const {\n account,\n adPlaying,\n anonymousAccount,\n anonymousId,\n blackoutDefinitions,\n breakpoint,\n clickedEndSlate,\n clickedThumbnail,\n completedPodId,\n containerId,\n continuous,\n continuousPlayback,\n creditsPlaying,\n errors,\n fetchedVideo,\n firePlayerPageViews,\n firstAdPlayed,\n firstFramePlayed,\n isAuthenticated,\n isContextPlayer,\n isFullscreen,\n isHomePage,\n location,\n mediaComplete,\n mediaEnding,\n mediaEndingSeconds,\n mediaStarted,\n nextVideos,\n panelVideo,\n playerDataHover,\n playerLoading,\n playerReference,\n playerType,\n playlist,\n portalRef,\n preauthorizedResources,\n prevVideo,\n provider,\n recommendationIdData,\n restart,\n restartPlayerScreenUrl,\n restartVideo,\n segmentReferrer,\n segmentSourceName,\n segmentSourceType,\n showControls,\n showEndCards,\n showRestartOverlay,\n startedPlayback,\n stillWatchingShowTimeout,\n theme,\n upNextVideo,\n video,\n vodClickedState,\n vodContentSet,\n vodSectionClicked,\n } = props;\n return {\n account,\n adPlaying,\n anonymousAccount,\n anonymousId,\n blackoutDefinitions,\n breakpoint,\n clickedEndSlate,\n clickedThumbnail,\n completedPodId,\n containerId,\n continuous,\n continuousPlayback,\n creditsPlaying,\n errors,\n fetchedVideo,\n firePlayerPageViews,\n firstAdPlayed,\n firstFramePlayed,\n isAuthenticated,\n isContextPlayer,\n isFullscreen,\n isHomePage,\n location,\n mediaComplete,\n mediaEnding,\n mediaEndingSeconds,\n mediaStarted,\n nextVideos,\n panelVideo,\n playerDataHover,\n playerLoading,\n playerReference,\n playerType,\n playlist,\n portalRef,\n preauthorizedResources,\n prevVideo,\n provider,\n recommendationIdData,\n restart,\n restartPlayerScreenUrl,\n restartVideo,\n segmentReferrer,\n segmentSourceName,\n segmentSourceType,\n showControls,\n showEndCards,\n showRestartOverlay,\n startedPlayback,\n stillWatchingShowTimeout,\n theme,\n upNextVideo,\n video,\n vodClickedState,\n vodContentSet,\n vodSectionClicked,\n };\n };\n\n onStillWatchingClose = () => {\n const { clearTimeout, playerReference, stillWatchingHideTimeout } = this.props;\n clearTimeout(stillWatchingHideTimeout);\n this.resetStillWatchingTimeout();\n // showStillWatching is used in both stillWatchingHideCb and stillWatchingShowCb\n // eslint-disable-next-line react/no-unused-state\n this.setState({ showStillWatching: false });\n playerPlay(playerReference);\n };\n\n getMediaInfo = () => {\n const { video } = this.props;\n return video;\n };\n\n calculateEndcardData(data) {\n const {\n mediaEnding: lclMediaEnding,\n mediaEndingSeconds: lclMediaEndingSeconds,\n creditsPlaying: lclCreditsPlaying,\n playerReference,\n setPlayerState,\n video,\n } = this.props;\n const newState = {};\n const { time } = data;\n const player = getPlayer(playerReference) || {};\n const { duration: currentDuration } = player;\n const creditCuePoint = _.get(video, 'creditCuePoint');\n const endCardDuration = getEndCardDuration(video);\n const endCardCuePoint = creditCuePoint || parseInt(currentDuration - endCardDuration, 10);\n\n if (!lclMediaEnding && time > endCardCuePoint) {\n newState.mediaEnding = true;\n }\n if (lclMediaEnding) {\n const mediaEndCuePoint = Math.min(\n endCardCuePoint + endCardDuration,\n endCardDuration + currentDuration,\n );\n const secondsUntilVideoEnd = parseInt(mediaEndCuePoint - time, 10);\n if (secondsUntilVideoEnd !== lclMediaEndingSeconds && secondsUntilVideoEnd >= 0) {\n newState.mediaEndingSeconds = secondsUntilVideoEnd;\n if (secondsUntilVideoEnd === 0 && mediaEndCuePoint !== currentDuration) {\n this.handleMediaComplete();\n }\n }\n }\n if (lclMediaEnding && lclMediaEndingSeconds && time < endCardCuePoint) {\n newState.mediaEnding = false;\n newState.mediaEndingSeconds = null;\n }\n const newCreditsPlaying = creditCuePoint && time >= creditCuePoint;\n if (lclCreditsPlaying !== newCreditsPlaying) {\n const nextProgramRights = _.get(data, 'nextProgramRights', false);\n newState.creditsPlaying = newCreditsPlaying;\n newState.showEndCards = !nextProgramRights;\n }\n setPlayerState(newState);\n }\n\n getPlayerEvents = () => {\n const {\n defaultPlayerEvents,\n firstAdPlayed,\n floodlightEvent,\n playerReference,\n setPlayerState,\n setVideoStartedPlayback,\n } = this.props;\n\n return {\n ...defaultPlayerEvents,\n onReady: contentVideoData => {\n const { video } = this.props;\n const categoryTags = _.get(video, 'categoryTags', false);\n if (categoryTags) {\n setSegmentContentPersonality(categoryTags);\n }\n this.videoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.sessionId = uuidv4();\n this.contentProps = _.get(contentVideoData, 'trackingData.content', {});\n this.triggeredPlaybackInterrupted = false;\n this.handleMediaStart();\n },\n onAdPodStart: contentVideoData => {\n console.debug('!!watch - leapfrog onAdPodStart');\n this.adData = pipeAll(\n get('trackingData.ad', {}),\n omit('video_ad_is_skippable'),\n )(contentVideoData);\n\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.videoProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const data = {\n ...this.videoProps,\n ...this.adData,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdPodStarted,\n props: data,\n });\n setPlayerState({\n adPlaying: true,\n playerLoading: false,\n mediaEnding: false,\n showTVRating: false,\n showEndCards: false,\n mediaComplete: false,\n });\n },\n onAdPodComplete: contentVideoData => {\n setPlayerState({\n adPlaying: false,\n showTVRating: true,\n showControls: playerControlsVisible(playerReference),\n });\n console.debug('!!watch - leapfrog onAdPodComplete');\n this.adData = _.omit(\n _.get(contentVideoData, 'trackingData.ad', {}),\n 'video_ad_is_skippable',\n );\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.videoProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const data = {\n ...this.videoProps,\n ...this.adData,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdPodCompleted,\n props: data,\n });\n },\n onAdSkip: contentVideoData => {\n console.debug('!!watch - leapfrog onAdSkip');\n const eventAdProps = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const content = {\n ..._.pick(this.contentProps, ['airdate', 'asset_id', 'full_episode', 'program', 'title']),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n const data = {\n content,\n ...this.videoProps,\n ...this.adData,\n ...eventAdProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n video_seconds_viewed:\n this.newAdTime - (this.newAdTime > this.previousAdTime ? this.previousAdTime : 0),\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdSkipped,\n props: data,\n });\n },\n onRemovePlayer: () => {\n const { isFullscreen } = this.props;\n setSegmentContentPersonality(false);\n if (isFullscreen) playerSetFullscreen(false, playerReference);\n },\n onFirstFrame: async () => {\n setVideoStartedPlayback(true);\n const {\n anonymousAccount: currentAnonymousAccount,\n account: currentAccount,\n anonymousLogin: currentAnonymousLogin,\n anonymousId: currentAnonymousId,\n firePlayerPageViews,\n clickedEndSlate,\n clickedThumbnail,\n mediaStarted,\n prevVideo,\n segmentReferrer: prevSegmentReferrer,\n stillWatchingShowTimeout,\n } = this.props;\n const loginAnonymousUser =\n !currentAccount &&\n !currentAnonymousAccount &&\n currentAnonymousId &&\n currentAnonymousLogin;\n\n if (loginAnonymousUser) {\n await currentAnonymousLogin({ deviceId: currentAnonymousId });\n }\n\n if (firePlayerPageViews) this.triggerPlayerView({ usePlayerPageName: true });\n\n clearTimeout(stillWatchingShowTimeout);\n const newStillWatchingShowTimeout = this.setStillWatchingShowTimeout({\n cb: this.showStillWatching,\n duration: this.getStillWatchingDuration(),\n });\n setPlayerState({ stillWatchingShowTimeout: newStillWatchingShowTimeout });\n const isAutoPlay = !!mediaStarted;\n\n if (isAutoPlay) {\n this.trackPageReferrerAnalytics({\n name: CONTINUOUS_PLAY,\n });\n }\n\n const { video: currentVideo } = this.props;\n const lastPath = getPreviousPathname();\n const path = lastPath || window.location.pathname;\n const sourceNameVideo = isAutoPlay ? prevVideo : currentVideo;\n const segmentSourceType = getSegmentSourceType({\n autoplay: isAutoPlay,\n endslate: clickedEndSlate,\n homeUrl: helperGetHomeUrl(),\n path,\n vodThumbnails: clickedThumbnail,\n });\n const segmentSourceName = getSegmentSourceName({\n data: clickedEndSlate || sourceNameVideo,\n type: segmentSourceType,\n });\n const segmentReferrer = getSegmentReferrer({\n prevSegmentReferrer,\n });\n setPlayerState({\n mediaComplete: false,\n mediaStarted: true,\n isAutoPlay,\n segmentSourceType,\n segmentSourceName,\n clickedEndSlate: false,\n clickedThumbnail: false,\n playerLoading: false,\n segmentReferrer,\n firstFramePlayed: true,\n firePlayerPageViews: true,\n isVideoOverlayPresent: false,\n showRestartOverlay: false,\n });\n },\n onChromecastStart: contentVideoData => {\n const castData = {\n displayName: _.get(contentVideoData, 'b.displayName', ''),\n sessionId: _.get(contentVideoData, 'b.sessionId', ''),\n status: _.get(contentVideoData, 'b.status', ''),\n };\n updateNielsenOTTStatus(true, castData);\n setVideoStartedPlayback(true);\n floodlightEvent({\n mediaInfo: this.getMediaInfo(),\n podId: _.get(this.contentProps, 'pod_id', ''),\n });\n },\n onChromecastComplete: () => {\n updateNielsenOTTStatus(false);\n floodlightEvent({\n mediaInfo: this.getMediaInfo(),\n podId: _.get(this.contentProps, 'pod_id', ''),\n });\n },\n onPlaybackStart: contentVideoData => {\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n this.videoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.contentProps = _.get(contentVideoData, 'trackingData.content', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n position: 0, // position is always 0 for playback start\n video_player_content_type: null,\n content_asset_id: _.get(contentVideoData, 'trackingData.content_asset_id'),\n content_pod_ids: _.get(contentVideoData, 'trackingData.content_pod_ids'),\n content_pod_id: null,\n rating: _.get(this.videoProps, 'video_rating'),\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackStart,\n props: data,\n });\n },\n onPlayerError: err => {\n const { contentStarted } = this.state;\n const { panelVideo, setPopUpModal, isAdBlockerEnabled, setError } = this.props;\n const {\n oops_message_ad_block_button_text: adBlockButtonText,\n oops_message_ad_block_detect: adBlockDetectText,\n oops_message_ad_block_failure: adBlockFailureText,\n } = window.Language;\n const eventVideoProps = _.get(panelVideo, 'trackingData.video', {});\n const { message } = err || {};\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n const videoData = {\n video_id: _.get(panelVideo, 'id'),\n video_name: _.get(panelVideo, 'name'),\n ..._.pick(data, [\n 'position',\n 'livestream',\n 'content_pod_id',\n 'video_player_state',\n 'video_asset_id',\n 'video_fox_profile',\n 'video_content_length',\n 'video_content_type',\n 'video_content_length_format',\n 'video_station_id',\n ]),\n type: contentStarted ? 'videoStreamInterruptedError' : 'videoStartError',\n };\n if (isAdBlockerEnabled) {\n setAdBlockDetectCookie({ value: true, options: { path: '/' } });\n setPopUpModal({ visibility: true, message: adBlockDetectText, buttonText: 'OK' });\n } else if (!isAdBlockerEnabled && getAdBlockDetectCookie()) {\n removeAdBlockDetectCookie({ options: { path: '/' } });\n setPopUpModal({\n buttonText: adBlockButtonText,\n message: adBlockFailureText,\n visibility: true,\n });\n }\n const errorObject = new Error(message);\n errorObject.type = contentStarted ? 'videoStreamInterruptedError' : 'videoStartError';\n logPlayerError(errorObject, videoData);\n\n if (err?.error?.entitlementIssues || err?.data?.entitlementIssues) {\n const errors = getAuthZEntitlementIssues(err);\n setError(errors);\n }\n },\n onMediaStart: () => {\n this.handleMediaStart();\n floodlightEvent({\n mediaInfo: this.getMediaInfo(),\n podId: _.get(this.contentProps, 'pod_id', ''),\n });\n },\n onMediaPlaying: data => {\n const { blockEndcardsForTrailer } = this.state;\n const shouldCalculateEndcards = !blockEndcardsForTrailer;\n if (shouldCalculateEndcards) this.calculateEndcardData(data);\n if (!firstAdPlayed) setPlayerState({ firstAdPlayed: true, showTVRating: true });\n },\n onContentStart: contentVideoData => {\n const { completedPodId, portalRef, setPortalContentFinished } = this.props;\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.contentProps = _.get(contentVideoData, 'trackingData.content', {});\n const data = {\n ...this.videoProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n const videoData = {\n video_id: _.get(contentVideoData, 'id'),\n video_name: _.get(contentVideoData, 'name'),\n ..._.pick(data, [\n 'position',\n 'livestream',\n 'content_pod_id',\n 'video_player_state',\n 'video_asset_id',\n 'video_fox_profile',\n 'video_content_length',\n 'video_content_type',\n 'video_content_length_format',\n 'video_station_id',\n ]),\n };\n this.setState({ contentStarted: true });\n if (portalRef) setPortalContentFinished(false);\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoContentStart,\n props: data,\n });\n logPlayerEvent('onVideoPlaybackStart', videoData);\n if (completedPodId) setPlayerState({ completedPodId: null });\n window?.fennecInstance?.deltaContentStart(contentVideoData);\n },\n onContentPlaying: contentVideoData => {\n const { secondsViewed: previouslyViewed } = this.state;\n const secondsViewed = _.get(contentVideoData, 'trackingData.contentSecondsViewed', 0);\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n if (\n secondsViewed !== previouslyViewed &&\n secondsViewed % SEGMENT_CONTENT_PLAYING_INTERVAL_SEC === 0\n ) {\n const data = {\n ...this.videoProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n video_seconds_viewed: SEGMENT_CONTENT_PLAYING_INTERVAL_SEC,\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoContentPlaying,\n props: data,\n });\n window?.fennecInstance?.deltaContentPlaying(contentVideoData);\n }\n if (secondsViewed !== previouslyViewed) {\n const videoPlayhead = { [this.sessionId ?? '']: secondsViewed };\n if (window) _.set(window, '_segHBPlayheads', videoPlayhead);\n }\n this.setState({ secondsViewed });\n },\n onAdStart: contentVideoData => {\n console.debug('!!watch - leapfrog onAdStart');\n this.adData = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const content = {\n ..._.pick(this.contentProps, ['airdate', 'asset_id', 'full_episode', 'program', 'title']),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n const props = {\n content,\n ...this.videoProps,\n ...eventVideoProps,\n ...this.adData,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdStarted,\n props,\n });\n },\n onAdPlaying: contentVideoData => {\n console.debug('!!watch - leapfrog onAdPlaying');\n this.newAdTime = _.get(contentVideoData, 'trackingData.adSecondsViewed', 0);\n if (this.newAdTime !== this.previousAdTime && this.newAdTime % this.AD_INTERVAL_SEC === 0) {\n const eventAdProps = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const content = {\n ..._.pick(this.contentProps, [\n 'airdate',\n 'asset_id',\n 'full_episode',\n 'program',\n 'title',\n ]),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n const data = {\n content,\n ...this.videoProps,\n ...this.adData,\n ...eventAdProps,\n ...eventVideoProps,\n session_id: this.sessionId,\n video_seconds_viewed:\n this.newAdTime - (this.newAdTime > this.previousAdTime ? this.previousAdTime : 0),\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdPlaying,\n props: data,\n });\n }\n this.previousAdTime = this.newAdTime;\n },\n onAdComplete: contentVideoData => {\n console.debug('!!watch - leapfrog onAdComplete');\n this.adData = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.newAdTime = _.get(contentVideoData, 'trackingData.adSecondsViewed', 0);\n const content = {\n ..._.pick(this.contentProps, ['airdate', 'asset_id', 'full_episode', 'program', 'title']),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n this.videoProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const props = {\n content,\n ...this.videoProps,\n ...this.adData,\n session_id: this.sessionId ?? '',\n video_seconds_viewed:\n this.newAdTime === this.previousAdTime ? 0 : this.newAdTime - this.previousAdTime,\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdCompleted,\n props,\n });\n },\n onAdPause: contentVideoData => {\n console.debug('!!watch - leapfrog onAdPause');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const adVideoProps = _.get(contentVideoData, 'trackingData.ad', {});\n const data = {\n ...this.videoProps,\n ...eventVideoProps,\n ...adVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackPaused,\n props: data,\n });\n },\n onAdResume: contentVideoData => {\n console.debug('!!watch - leapfrog onAdResume');\n this.adData = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.eventProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const data = {\n ...this.eventProps,\n ...this.adData,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdResumed,\n props: data,\n });\n },\n onPause: contentVideoData => {\n console.debug('!!watch - leapfrog onPause');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackPaused,\n props: data,\n });\n },\n onResume: contentVideoData => {\n console.debug('!!watch - leapfrog onResume');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackResumed,\n props: data,\n });\n },\n onBufferStart: contentVideoData => {\n console.debug('!!watch - leapfrog onBufferStart');\n this.handleMediaStart();\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackBufferStarted,\n props: data,\n });\n },\n onBufferEnd: contentVideoData => {\n console.debug('!!watch - leapfrog onBufferEnd');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackBufferComplete,\n props: data,\n });\n },\n onContentComplete: contentVideoData => {\n console.debug('!!watch - leapfrog onContentComplete');\n const totalSecondsViewed = _.get(contentVideoData, 'trackingData.contentSecondsViewed', 0);\n const secondsViewed = Math.floor(totalSecondsViewed % SEGMENT_CONTENT_PLAYING_INTERVAL_SEC);\n const completedPodId = getSegmentPodId(contentVideoData);\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const data = {\n ...this.videoProps,\n ...this.contentProps,\n ...eventVideoProps,\n video_seconds_viewed: secondsViewed,\n session_id: this.sessionId ?? '',\n };\n setPlayerState({ completedPodId });\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoContentComplete,\n props: data,\n });\n this.setState({ contentStarted: false });\n },\n onMediaComplete: data => {\n const { clearInterval, mediaEndingSeconds, setInterval } = this.props;\n const { blockEndcardsForTrailer } = this.state;\n if (blockEndcardsForTrailer) {\n this.handleMediaComplete();\n return;\n }\n const newState = {};\n let remainingTimeAfterMediaComplete = mediaEndingSeconds;\n const remainingTimeCountdown = setInterval(() => {\n const { isEndCardClicked } = this.state;\n if (isEndCardClicked) {\n this.setState({ isEndCardClicked: false });\n clearInterval(remainingTimeCountdown);\n }\n remainingTimeAfterMediaComplete -= 1;\n newState.mediaEndingSeconds = remainingTimeAfterMediaComplete;\n if (\n remainingTimeAfterMediaComplete <= 0 ||\n Number.isNaN(remainingTimeAfterMediaComplete)\n ) {\n clearInterval(remainingTimeCountdown);\n this.handleMediaComplete({ data });\n } else {\n setPlayerState(newState);\n }\n }, 1000);\n },\n onPlaybackComplete: contentVideoData => {\n const { portalRef, setPortalContentFinished, upNextVideo } = this.props;\n const localPlayerScreenUrl = getCookie({ name: LOCAL_CLIP_PAGE_COOKIE_NAME });\n if (localPlayerScreenUrl && upNextVideo?.length) {\n const nextVideo = upNextVideo?.[0];\n setLocalClipPage({\n value: nextVideo?.playerScreenUrl,\n options: { path: '/' },\n });\n const path = `/watch/${nextVideo?.id}`;\n browserHistory.push(path);\n } else if (localPlayerScreenUrl && !upNextVideo?.length) {\n const initialVideoId = getCookie({ name: LOCAL_CLIP_INITIAL_ID });\n const initialVideoUrl = getCookie({ name: LOCAL_CLIP_INITIAL_PLAYER_URL });\n setLocalClipPage({\n value: initialVideoUrl,\n options: { path: '/' },\n });\n const path = `/watch/${initialVideoId}`;\n browserHistory.push(path);\n }\n console.debug('!!watch - leapfrog onPlaybackComplete');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n\n data.video_player_content_type = null;\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackComplete,\n props: data,\n });\n setPlayerState({ completedPodId: null });\n if (portalRef) setPortalContentFinished(true);\n },\n onPlaybackInterrupted: data => {\n console.debug('!!watch - leapfrog onPlaybackInterrupted');\n const { method } = data;\n const props = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n method,\n video_player_state: SegmentPlayerStates.PAUSE,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props,\n });\n },\n onSeekStart: contentVideoData => {\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n data.position = Math.round(contentVideoData.start);\n data.seek_position = Math.round(contentVideoData.end);\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackSeekStarted,\n props: data,\n });\n },\n onSeekComplete: contentVideoData => {\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackSeekCompleted,\n props: data,\n });\n },\n onNielsenDtvrTag: contentVideoData => {\n console.debug('!!watch - onNielsenDtvrTag');\n const nielsen_id3_tag = _.get(contentVideoData, 'dtvrTag', {});\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoNielsenTagDetected,\n props: {\n nielsen_id3_tag,\n session_id: this.sessionId ?? '',\n },\n });\n },\n onUserInteraction: () => {\n const { clearTimeout, stillWatchingShowTimeout } = this.props;\n clearTimeout(stillWatchingShowTimeout);\n const newStillWatchingShowTimeout = this.setStillWatchingShowTimeout({\n cb: this.showStillWatching,\n duration: this.getStillWatchingDuration(),\n });\n setPlayerState({ stillWatchingShowTimeout: newStillWatchingShowTimeout });\n },\n onFullScreen: e => {\n const { fullscreen } = e;\n setPlayerState({ isFullscreen: fullscreen });\n this.videoProps.video_is_fullscreen = fullscreen;\n this.playbackProps.full_screen = fullscreen;\n },\n onChangeContinuous: e => {\n const isContinuous = _.get(e, 'isContinuous', false);\n if (!UseContinuousAutoplay) return;\n setPlayerState({ continuousPlayback: isContinuous });\n },\n onVolumeChange: ({ newVolume, oldVolume }) => {\n const { video_volume } = this.videoProps;\n if (video_volume === newVolume || oldVolume === newVolume) return null;\n this.videoProps.video_volume = newVolume;\n this.playbackProps.sound = newVolume;\n return null;\n },\n // OnPlayerTypeChange\n // This is likely needed for analytics in the future.\n // It fires for player.updatePlayerType(TYPE)\n };\n };\n\n getStillWatchingDuration = () => {\n const durationSeconds = _.get(window.ExternalConfig, 'stillWatching.vodLimitSeconds');\n return durationSeconds ? durationSeconds * 1000 : null;\n };\n\n gotoLive = () => {\n const hash = _.trim(_.get(this.props, 'location.hash'), '#');\n const callSign = _.trim(hash.replace(RESTART_TYPE_LIVE, ''), '-');\n helperGoToRelativeUrl(helperGetLiveUrl({ callSign }));\n };\n\n handleMediaStart = () => {\n const { mediaComplete, setPlayerState } = this.props;\n if (mediaComplete) {\n setPlayerState({\n mediaComplete: false,\n showEndCards: false,\n });\n }\n };\n\n handleMediaComplete = (opts = {}) => {\n const { data } = opts;\n const { playerReference, restartVideo, setPlayerState } = this.props;\n const nextProgramRights = _.get(data, 'nextProgramRights', false);\n if (restartVideo) {\n const secondsViewed = _.get(data, 'secondsViewed', 0);\n const videoDuration = _.get(restartVideo, 'durationInSeconds', 0);\n const watchDuration = videoDuration / 2;\n const videoWatched = secondsViewed > watchDuration;\n const handleEvent = !nextProgramRights || videoWatched;\n if (!handleEvent) return;\n setPlayerState({\n showRestartOverlay: true,\n isVideoOverlayPresent: true,\n });\n playerRemove(playerReference);\n return;\n }\n\n const shouldShowEndCards = !nextProgramRights;\n\n setPlayerState({\n mediaComplete: true,\n mediaEnding: false,\n mediaEndingSeconds: 0,\n firstFramePlayed: false,\n showEndCards: shouldShowEndCards,\n showTrailerUpsell: false,\n creditsPlaying: false,\n });\n };\n\n resetResumeWithProfile = (cb = _.noop) => {\n const nextState = {\n anonymousResume: null,\n restartFromBeginning: true,\n };\n this.setState(nextState, cb);\n };\n\n resetStillWatchingTimeout = () => {\n const {\n breakpoint,\n clearTimeout,\n firstFramePlayed,\n setPlayerState,\n stillWatchingShowTimeout,\n } = this.props;\n clearTimeout(stillWatchingShowTimeout);\n const { stillWatchingTimeoutEnabled } = BREAKPOINTS[breakpoint];\n if (stillWatchingTimeoutEnabled && firstFramePlayed) {\n const newStillWatchingShowTimeout = this.setStillWatchingShowTimeout({\n cb: this.showStillWatching,\n duration: this.getStillWatchingDuration(),\n });\n setPlayerState({ stillWatchingShowTimeout: newStillWatchingShowTimeout });\n }\n };\n\n resume = () => {\n this.setState({ anonymousResumeProfileUpsell: null, anonymousResume: null });\n };\n\n showStillWatching = () => {\n const {\n breakpoint,\n account,\n clearTimeout,\n firstFramePlayed,\n playerReference,\n setPlayerState,\n stillWatchingShowTimeout,\n } = this.props;\n const profileId = _.get(account, 'profileId');\n const { stillWatchingTimeoutEnabled } = BREAKPOINTS[breakpoint];\n clearTimeout(stillWatchingShowTimeout);\n if (stillWatchingTimeoutEnabled && firstFramePlayed) {\n playerSetFullscreen(false, playerReference);\n playerPause(playerReference);\n playerHideControls(playerReference);\n this.stillWatchingShowCb({ profileId });\n const stillWatchingHideTimeout = this.setStillWatchingHideTimeout({\n cb: () => {\n playerPlay(playerReference);\n this.stillWatchingHideCb();\n window.location = helperGetHomeUrl();\n },\n });\n setPlayerState({ stillWatchingHideTimeout });\n }\n };\n\n triggerPlayerView = ({ usePlayerPageName } = {}) => {\n const { pageViewEvent, getUseUtagGlobal, isHomePage, playerType } = this.props;\n const previousPath = getPreviousPathname();\n const location = getLocation(window.referrer);\n const referrerPath = _.get(location, 'pathname');\n const useUtagGlobal = getUseUtagGlobal();\n const collection = { ...getTealiumSourceCollectionGlobal() };\n const isMovieSource = referrerPath.match(/^\\/(movies)(\\/)?(.*)$/);\n const isLiveSource = referrerPath.match(/^\\/(live)(\\/)?(.*)$/);\n const isWatchSource = referrerPath.match(/^\\/(watch)(\\/)?(.*)$/);\n const isNews = previousPath?.match(/^\\/(news)(\\/)?(.*)$/);\n const isShowSource = getTealiumSourceShow();\n const isVideoPage = isMovieSource || isLiveSource || isWatchSource || isShowSource;\n const isDirectSource = previousPath === '' && document.referrer === '';\n const isPlayerHero = isPlayerTypeHero(playerType);\n let pageName = _.get(window.utag_data, 'page_name');\n\n if (isNews) {\n pageName = NEWS;\n } else if (pageName) {\n // Use utag_data.page_name\n } else if (isPlayerHero && isHomePage) {\n pageName = HOME;\n } else if (usePlayerPageName) {\n pageName = PLAYER;\n } else if (isDirectSource || isWatchSource) {\n if (!isPlayerHero) {\n handleAnalytics({\n event: Events.PLAYER_LANDING,\n payload: {\n pageName: 'player',\n pageType: 'player',\n },\n });\n }\n pageName = PLAYER;\n } else if (isMovieSource || isShowSource) {\n pageName = PLAYER_DETAIL;\n } else if (isLiveSource) {\n pageName = LIVE;\n }\n\n if (isVideoPage) pageViewEvent({ collection, pageName, useUtagGlobal });\n };\n\n renderEndcards() {\n const {\n breakpoint,\n continuousPlayback,\n creditsPlaying,\n isAuthenticated,\n isFullscreen,\n mediaComplete,\n mediaEnding,\n mediaEndingSeconds,\n nextVideos,\n playerType,\n restartVideo,\n showEndCards,\n video,\n } = this.props;\n const { blockEndcardsForTrailer } = this.state;\n const videoType = _.get(video, 'videoType');\n const clipType = _.get(video, 'clipType');\n const shouldDisplayEndcard =\n !isClip(videoType) &&\n !isClipTrailer(clipType) &&\n !restartVideo &&\n !blockEndcardsForTrailer &&\n (!continuousPlayback || ((mediaEnding || mediaComplete || creditsPlaying) && showEndCards));\n const endCardDuration = getEndCardDuration(video);\n const isEnding =\n (_.isNumber(mediaEndingSeconds) && mediaEndingSeconds <= endCardDuration) || creditsPlaying;\n const shouldRender = isEnding && shouldDisplayEndcard && !isPlayerTypeHero(playerType);\n\n return shouldRender ? (\n <Endcard\n continuousPlayback={continuousPlayback}\n endcardItems={nextVideos}\n renderImage={image =>\n renderImage({\n breakpoint,\n imageType: WATCH_RELATED_THUMBNAIL_IMAGE,\n ...image,\n })\n }\n video={video}\n mediaEndingSeconds={mediaEndingSeconds}\n videoProcessor={endcardVideoProcessor}\n isAuthenticated={isAuthenticated}\n isFullscreen={isFullscreen}\n onClick={this.onEndcardClick}\n />\n ) : null;\n }\n\n renderRestartOverlay() {\n const { panelVideo, showRestartOverlay } = this.props;\n if (!showRestartOverlay) return null;\n\n const {\n playback_restartRestricted: liveHeader,\n playback_viewOthers: liveCTA,\n } = window.Language;\n\n const action = () => (EpgEnabled ? this.gotoLive() : helperGoToRelativeUrl(helperGetHomeUrl()));\n const fallbackBackground = _.get(panelVideo, 'images.seriesStill.raw');\n const background = _.get(panelVideo, 'images.still.raw', fallbackBackground);\n return (\n <GenericEndcard action={action} background={background} cta={liveCTA} header={liveHeader} />\n );\n }\n\n renderVideoDetail(opts = {}) {\n const {\n adPlaying,\n breakpoint,\n creditsPlaying,\n favoritesManager,\n isContextPlayer,\n isFullscreen,\n panelVideo,\n playerType,\n setPlayerDataHover,\n setStickyControls,\n theme,\n video,\n } = this.props;\n const { renderInfoInDetail } = BREAKPOINTS[breakpoint];\n const { showControls, hasEndcard } = opts;\n\n if (isPlayerTypeHero(playerType) || hasEndcard) return null;\n const classes = classNames(\n isFullscreen ? theme.fullscreen : false,\n theme.watchDetailContainer,\n theme.watchDetailGradient,\n );\n return (\n <div className={classes}>\n <VideoDetail\n {...getVideoDetailProps(panelVideo)}\n adPlaying={adPlaying}\n favoritesManager={favoritesManager}\n isContextPlayer={isContextPlayer}\n renderInfo={renderInfoInDetail}\n setPlayerDataHover={setPlayerDataHover}\n setStickyControls={setStickyControls}\n showControls={showControls}\n showNetworkIcon={!creditsPlaying}\n video={video}\n />\n </div>\n );\n }\n\n render() {\n const {\n account,\n breakpoint,\n continuous,\n fetchedVideo,\n openSignIn,\n openSignUp,\n panelVideo,\n playerDataHover,\n playerLoading,\n playerType,\n restart,\n restartVideo,\n restartPlayerScreenUrl,\n showControls,\n renderVideoContainer,\n savePercentWatched,\n vodContentSet,\n isFullscreen,\n containerId,\n } = this.props;\n const {\n anonymousResume,\n anonymousResumeProfileUpsell,\n restartFromBeginning,\n showStillWatching,\n } = this.state;\n if (!fetchedVideo) return null;\n\n const { canHideControls } = BREAKPOINTS[breakpoint];\n const { creditCuePoint, videoType } = fetchedVideo;\n const fallbackBackground = getDynamicImage({\n breakpoint,\n context: WATCH_PLAYER_BACKGROUND_IMAGE,\n url: _.get(fetchedVideo, 'images.still.raw'),\n });\n const background = getDynamicImage({\n breakpoint,\n context: WATCH_PLAYER_BACKGROUND_IMAGE,\n url: _.get(fetchedVideo, 'images.seriesStill.raw', fallbackBackground),\n });\n const videoPercentWatched = _.get(fetchedVideo, 'percentWatched', 0);\n const resetPercentWatched =\n isClip(videoType) || videoPercentWatched >= 98 || restartFromBeginning;\n const percentWatched = resetPercentWatched ? 0 : videoPercentWatched;\n const videoViewed = percentWatched > 0 && percentWatched < 100;\n const showResumeProfileUpsell = !!(\n !account &&\n videoViewed &&\n anonymousResumeProfileUpsell &&\n vodContentSet &&\n !isMvpdSubscription()\n );\n const showResumeCTA = videoViewed && anonymousResume;\n\n const resumeWithProfileConfig = {\n playFromBeginning: () => {\n this.resetResumeWithProfile();\n },\n play: this.resume,\n reset: this.resetResumeWithProfile,\n };\n const mediaInfo = this.getMediaInfo();\n const playerConfig = {\n ...this.getPlayerEvents(),\n continuous,\n creditCuePoint,\n mediaInfo,\n percentWatched,\n restart,\n restartPlayerScreenUrl,\n };\n\n const showVideoDetail =\n panelVideo &&\n ((!canHideControls && !isFullscreen) ||\n playerLoading ||\n showControls ||\n (playerDataHover && !isFullscreen));\n\n const contextProps = {\n background,\n continuous,\n creditCuePoint,\n mediaInfo,\n mode: restartVideo ? RESTART : VOD,\n onStillWatchingClose: this.onStillWatchingClose,\n openSignIn,\n openSignUp,\n percentWatched,\n playerConfig,\n playerLoadingImage: background,\n requestSignIn: showResumeProfileUpsell,\n restart,\n resumeOnCancel: this.resume,\n resumeWithProfileConfig,\n savePercentWatched,\n showControls: showVideoDetail,\n showResumeCTA,\n showStillWatching,\n type: playerType,\n isFullscreen,\n containerId,\n };\n\n const endCards = this.renderEndcards();\n const restartOverlay = this.renderRestartOverlay();\n const videoDetail = this.renderVideoDetail({\n showControls: showVideoDetail,\n hasEndcard: !!endCards,\n });\n return (\n <>\n {renderVideoContainer({ props: contextProps, endCards, videoDetail })}\n {restartOverlay}\n </>\n );\n }\n}\n\nWatchContext.defaultProps = {\n account: null,\n adPlaying: null,\n anonymousAccount: {},\n anonymousId: null,\n anonymousLogin: noop,\n clearTimeout: noop,\n clickedEndSlate: null,\n clickedThumbnail: null,\n completedPodId: null,\n containerId: null,\n continuous: null,\n continuousPlayback: null,\n creditsPlaying: null,\n errors: null,\n favoritesManager: null,\n fetchedVideo: null,\n firePlayerPageViews: null,\n firstAdPlayed: null,\n firstFramePlayed: null,\n isAdBlockerEnabled: false,\n isAuthenticated: null,\n isContextPlayer: false,\n isFullscreen: null,\n isHomePage: false,\n location: null,\n mediaComplete: null,\n mediaEnding: null,\n mediaEndingSeconds: null,\n mediaStarted: null,\n panelVideo: null,\n playerLoading: null,\n playlist: null,\n portalRef: null,\n preauthorizedResources: null,\n prevVideo: {},\n provider: null,\n recommendationIdData: null,\n restart: null,\n restartPlayerScreenUrl: null,\n restartVideo: null,\n segmentReferrer: null,\n segmentSourceName: null,\n segmentSourceType: null,\n setPopUpModal: noop,\n setRecommendationId: noop,\n setVideoPanel: noop,\n showEndCards: null,\n showRestartOverlay: null,\n startedPlayback: null,\n stillWatchingHideTimeout: noop,\n stillWatchingShowTimeout: null,\n upNextVideo: null,\n video: null,\n vodClickedState: {},\n vodSectionClicked: false,\n};\n\nWatchContext.propTypes = {\n account: PropTypes.shape({}),\n adPlaying: PropTypes.bool,\n anonymousAccount: PropTypes.shape({}),\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func,\n breakpoint: PropTypes.string.isRequired,\n clearInterval: PropTypes.func.isRequired,\n clearTimeout: PropTypes.func,\n clickedEndSlate: PropTypes.bool,\n clickedThumbnail: PropTypes.bool,\n completedPodId: PropTypes.string,\n containerId: PropTypes.string,\n continuous: PropTypes.bool,\n continuousPlayback: PropTypes.bool,\n creditsPlaying: PropTypes.bool,\n defaultPlayerEvents: PropTypes.shape({}).isRequired,\n errors: PropTypes.number,\n favoritesManager: PropTypes.shape({}),\n fetchedVideo: PropTypes.shape({}),\n firePlayerPageViews: PropTypes.bool,\n firstAdPlayed: PropTypes.bool,\n firstFramePlayed: PropTypes.bool,\n floodlightEvent: PropTypes.func.isRequired,\n getUseUtagGlobal: PropTypes.func.isRequired,\n isAdBlockerEnabled: PropTypes.bool,\n isAuthenticated: PropTypes.bool,\n isContextPlayer: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n isHomePage: PropTypes.bool,\n location: PropTypes.shape({}),\n mediaComplete: PropTypes.bool,\n mediaEnding: PropTypes.bool,\n mediaEndingSeconds: PropTypes.number,\n mediaStarted: PropTypes.bool,\n nextVideos: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n openSignIn: PropTypes.func.isRequired,\n openSignUp: PropTypes.func.isRequired,\n pageViewEvent: PropTypes.func.isRequired,\n panelVideo: PropTypes.shape({}),\n playerDataHover: PropTypes.bool.isRequired,\n playerLoading: PropTypes.bool,\n playerReference: PropTypes.string,\n playerType: PropTypes.string.isRequired,\n playlist: PropTypes.bool,\n portalRef: PropTypes.string,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n prevVideo: PropTypes.shape({}),\n provider: PropTypes.shape({}),\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n renderVideoContainer: PropTypes.func.isRequired,\n restart: PropTypes.bool,\n restartPlayerScreenUrl: PropTypes.string,\n restartVideo: PropTypes.shape({}),\n savePercentWatched: PropTypes.func.isRequired,\n segmentReferrer: PropTypes.shape({}),\n segmentSourceName: PropTypes.string,\n segmentSourceType: PropTypes.string,\n setError: PropTypes.func,\n setInterval: PropTypes.func.isRequired,\n setPlayerDataHover: PropTypes.func.isRequired,\n setPlayerState: PropTypes.func.isRequired,\n setPopUpModal: PropTypes.func,\n setPortalContentFinished: PropTypes.func,\n setRecommendationId: PropTypes.func,\n setStickyControls: PropTypes.func.isRequired,\n setVideoPanel: PropTypes.func,\n setVideoStartedPlayback: PropTypes.func.isRequired,\n showControls: PropTypes.bool.isRequired,\n showEndCards: PropTypes.bool,\n showRestartOverlay: PropTypes.bool,\n startedPlayback: PropTypes.bool,\n stillWatchingHideTimeout: PropTypes.func,\n stillWatchingShowTimeout: PropTypes.number,\n theme: PropTypes.shape({}).isRequired,\n updateShowcaseVideo: PropTypes.func,\n upNextVideo: PropTypes.arrayOf(PropTypes.shape({})),\n video: PropTypes.shape({}),\n vodClickedState: PropTypes.shape({}),\n vodContentSet: PropTypes.bool.isRequired,\n vodSectionClicked: PropTypes.bool,\n};\n\nfunction mapStateToProps(state) {\n return {\n upNextVideo: state.globalVideo.nextVideos,\n vodSectionClicked: state.globalVideo.vodSectionClicked,\n vodClickedState: state.globalVideo.vodClickedState,\n vodContentSet: state.globalVideo.vodContentSet,\n };\n}\n\nconst TimeoutWatchContext = ReactTimeout(connect(mapStateToProps, {})(WatchContext));\n\nexport default TimeoutWatchContext;\n","export const pipeAll = (...fns) => x => fns.reduce((v, f) => f(v), x);\n\nexport const replace = (s1 = '', s2 = '') => param => param.replace(s1, s2);\n\nexport const concat = val => param => [...param, ...val];\n\nexport const join = (val = '') => param => param.join(val);\n\nexport const toUpper = () => param => param.toUpperCase();\n\nexport const thru = (fn = x => x) => param => fn(param);\n\nexport const get = path => (obj = null) => {\n if (!obj) return {};\n const travel = regexp =>\n String.prototype.split\n .call(path, regexp)\n .filter(Boolean)\n .reduce((res, key) => (res !== null && res !== undefined ? res[key] : res), obj);\n const result = travel(/[,[\\]]+?/) || travel(/[,[\\].]+?/);\n return result === undefined || result === obj ? {} : result;\n};\n\nexport const omit = (arr = []) => (obj = null) => {\n if (!obj) return {};\n\n return Object.keys(obj)\n .filter(key => !arr.includes(key))\n .reduce((newObj, key) => {\n // eslint-disable-next-line no-param-reassign\n newObj[key] = obj[key];\n return newObj;\n }, {});\n};\n","/* global UpNextStreamOverrideEnabled, UpNextToastEnabled */\nimport React, { Component } from 'react';\nimport ReactTimeout from 'react-timeout';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport _ from 'lodash';\nimport Loader from 'components/Loader';\nimport { getCookie } from 'helpers/Storage';\nimport { noop } from 'helpers/GlobalHelper';\nimport { v4 as uuidv4 } from 'uuid';\nimport { UpNextToast, VideoDetail } from 'components/VideoPlayerGlobal/components';\nimport {\n getLiveVideo,\n getVideoDetailProps,\n isVideoLive,\n} from 'components/VideoPlayerGlobal/Helper';\nimport {\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_MOBILE,\n} from 'helpers/BreakpointHelper';\nimport {\n LIVE_EPG_THUMBNAIL_IMAGE,\n LIVE_PLAYER_BACKGROUND_IMAGE,\n getDynamicImage,\n renderImage,\n} from 'helpers/ImageHelper';\nimport { geolocationEnabled, isEpgv2Enabled } from 'helpers/ConfigHelper';\nimport { RESTART_TYPE_LIVE } from 'screens/Watch/WatchHelpers';\nimport {\n DEBUG_PANEL_TIMEOUT_DISABLED,\n FOX,\n getAdBlockDetectCookie,\n getAuthZEntitlementIssues,\n getOomLivePlayerEnabled,\n isSportsContent,\n OOM_LIVE_PLAYER_IMAGE_COOKIE_NAME,\n OOM_LIVE_PLAYER_URL_COOKIE_NAME,\n removeAdBlockDetectCookie,\n setAdBlockDetectCookie,\n} from 'helpers/ContentHelper';\nimport {\n now,\n stringToDate,\n isBefore,\n subMinutes,\n differenceInMilliseconds,\n} from 'helpers/DateTimeHelper';\nimport { getLocation as getGeoLocation } from 'helpers/GeoLocationHelper';\nimport { logPlayerError, logPlayerEvent } from 'helpers/LogReportHelpers';\nimport {\n LIVE,\n INTERRUPTION_METHODS,\n PLAYER_CONTEXT_LIVE,\n getActivePlayer,\n getPlayerState,\n isPlayerTypeHero,\n playerHideControls,\n playerPause,\n playerPlay,\n playerSetFullscreen,\n setStillWatchingHideTimeout,\n setStillWatchingShowTimeout,\n stillWatchingHideCb,\n stillWatchingShowCb,\n} from 'helpers/PlayerHelper';\nimport {\n getLocation,\n helperGetHomeUrl,\n helperGetRelativeUrl,\n helperGoToRelativeUrl,\n getUrlParams,\n} from 'helpers/RouteHelper';\nimport {\n callSegmentPlayerEvent,\n getSegmentLiveViewedVideo,\n getSegmentPodId,\n getSegmentReferrer,\n getSegmentSourceName,\n getSegmentSourceType,\n PageNames,\n SEGMENT_CONTENT_PLAYING_INTERVAL_SEC,\n SegmentPlayerStates,\n SegmentVideoEvents,\n setSegmentContentPersonality,\n trackPageReferrerAnalytics,\n updateNielsenOTTStatus,\n} from '@foxcorp/delta-web-analytics';\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n renderInfoInDetail: false,\n defaultHideAltHeader: false,\n stillWatchingTimeoutEnabled: false,\n showMobileControls: false,\n upNextToastHidesVideoDetail: true,\n playerMetadataOverlay: true,\n fncHideVideoDetails: false,\n },\n [SITE_PLATFORM_WEB]: {\n renderInfoInDetail: false,\n defaultHideAltHeader: false,\n stillWatchingTimeoutEnabled: false,\n showMobileControls: false,\n upNextToastHidesVideoDetail: true,\n playerMetadataOverlay: true,\n fncHideVideoDetails: false,\n },\n [SITE_PLATFORM_TABLET]: {\n renderInfoInDetail: true,\n defaultHideAltHeader: true,\n stillWatchingTimeoutEnabled: false,\n showMobileControls: true,\n upNextToastHidesVideoDetail: false,\n playerMetadataOverlay: false,\n fncHideVideoDetails: true,\n },\n [SITE_PLATFORM_MOBILE]: {\n renderInfoInDetail: true,\n defaultHideAltHeader: true,\n stillWatchingTimeoutEnabled: false,\n showMobileControls: true,\n upNextToastHidesVideoDetail: false,\n playerMetadataOverlay: false,\n fncHideVideoDetails: true,\n },\n};\n\nclass LiveContext extends Component {\n constructor(props) {\n super(props);\n const geoLocationDeclined = !props.coordinates;\n this.state = {\n contentStarted: false,\n currentVideo: null,\n geoLocationDeclined,\n geoLocationTimeoutFail: false,\n geoLocationLoading: null,\n secondsViewed: 0,\n showStillWatching: false,\n // trackedAnalyticsReferrer is used in trackPageReferrerAnalytics\n // eslint-disable-next-line react/no-unused-state\n trackedAnalyticsReferrer: false,\n showUpNextToast: false,\n playerError: null,\n };\n this.setStillWatchingHideTimeout = setStillWatchingHideTimeout.bind(this);\n this.setStillWatchingShowTimeout = setStillWatchingShowTimeout.bind(this);\n this.stillWatchingHideCb = stillWatchingHideCb.bind(this);\n this.stillWatchingShowCb = stillWatchingShowCb.bind(this);\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.eventVideoProps = null;\n this.playbackProps = null;\n this.intervalFetchUpNext = null;\n this.showUpNextTimeout = null;\n this.hideUpNextTimeout = null;\n this.exitStreamTimeout = null;\n this.AD_INTERVAL_SEC = 1;\n }\n\n componentDidMount() {\n const { setShouldResetStillWatching, shouldResetStillWatching } = this.props;\n if (shouldResetStillWatching) {\n this.resetStillWatchingTimeout();\n setShouldResetStillWatching(false);\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { nextVideos, nextVideosValidFor, panelVideo } = this.props;\n const {\n nextVideos: newNextVideos,\n nextVideosValidFor: newNextVideosValidFor,\n panelVideo: nextPanelVideo,\n } = nextProps;\n\n if (nextVideosValidFor !== newNextVideosValidFor && newNextVideosValidFor) {\n this.setIntervalFetchUpNext(newNextVideosValidFor);\n }\n\n if (nextVideos !== newNextVideos && newNextVideos) {\n this.setShowUpNextTimeout(newNextVideos);\n }\n\n if (panelVideo && panelVideo !== nextPanelVideo) {\n this.setState({ currentVideo: null });\n }\n }\n\n componentDidUpdate(prevProps) {\n const { setShouldResetStillWatching, shouldResetStillWatching } = this.props;\n const { shouldResetStillWatching: prevShouldResetStillWatching } = prevProps;\n if (shouldResetStillWatching && !prevShouldResetStillWatching) {\n this.resetStillWatchingTimeout();\n setShouldResetStillWatching(false);\n }\n }\n\n componentWillUnmount() {\n const currentPlayerState = getPlayerState(getActivePlayer());\n if (currentPlayerState === 'PLAYING' || currentPlayerState === 'AD') {\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props: {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n method: INTERRUPTION_METHODS.BROWSER_ACTION,\n video_player_state: SegmentPlayerStates.PAUSE,\n session_id: this.sessionId ?? '',\n },\n });\n }\n }\n\n onExitEventStream = e => {\n const { setTimeout, setStreamExit, errors } = this.props;\n const timeout = _.get(e, 'exitEventStreamSlateDuration', 30);\n this.exitStreamTimeout = setTimeout(() => {\n if (errors?.[0]?.entitlementName) return null;\n return setStreamExit(true);\n }, timeout * 1000);\n };\n\n onHideUpNextToast = () => {\n const { clearTimeout } = this.props;\n clearTimeout(this.hideUpNextTimeout);\n this.setState({ showUpNextToast: false });\n };\n\n onStillWatchingClose = () => {\n const { clearTimeout, playerReference, stillWatchingHideTimeout } = this.props;\n clearTimeout(stillWatchingHideTimeout);\n this.resetStillWatchingTimeout();\n this.setState({ showStillWatching: false });\n playerPlay(playerReference);\n };\n\n onWatchUpNextToast = () => {\n const { clearTimeout, nextVideos, setPlayerState, setVideoPanel } = this.props;\n clearTimeout(this.hideUpNextTimeout);\n const nextVideo = _.get(nextVideos, '1');\n const nextVideoLivePlayerScreenUrl = _.get(nextVideo, 'livePlayerScreenUrl');\n if (!nextVideoLivePlayerScreenUrl) {\n this.setState({ showUpNextToast: false });\n return;\n }\n this.resetStillWatchingTimeout();\n this.setState({ showUpNextToast: false });\n setPlayerState({\n mediaStarted: false,\n isAutoPlay: false,\n firstFramePlayed: false,\n });\n setVideoPanel({ video: nextVideo, source: PLAYER_CONTEXT_LIVE });\n };\n\n getLiveVideoData() {\n const { fetchedVideo, nextVideos } = this.props;\n if (_.isEmpty(nextVideos) && isVideoLive(fetchedVideo)) {\n return fetchedVideo;\n }\n return getLiveVideo({ nextVideos });\n }\n\n getPlayerEvents = () => {\n const {\n defaultPlayerEvents,\n fetchedVideo,\n floodlightEvent,\n playerReference,\n saveLiveRestart,\n setPlayerState,\n setVideoStartedPlayback,\n } = this.props;\n\n const callSign = _.get(fetchedVideo, 'callSign');\n\n return {\n ...defaultPlayerEvents,\n onReady: contentVideoData => {\n const { video } = this.props;\n const categoryTags = _.get(video, 'categoryTags', false);\n if (categoryTags) {\n setSegmentContentPersonality(categoryTags);\n }\n this.videoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.contentProps = _.get(contentVideoData, 'trackingData.content', {});\n this.sessionId = uuidv4();\n },\n onAdPodStart: contentVideoData => {\n console.debug('!!live - onAdPodStart');\n this.adData = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.videoProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const data = {\n ...this.videoProps,\n ...this.adData,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdPodStarted,\n props: data,\n });\n setPlayerState({ adPlaying: true });\n },\n onAdPodComplete: contentVideoData => {\n console.debug('!!live - onAdPodComplete');\n setPlayerState({ adPlaying: false });\n this.adData = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.videoProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const data = {\n ...this.videoProps,\n ...this.adData,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdPodCompleted,\n props: data,\n });\n },\n onFirstFrame: async () => {\n console.debug('!!live - onFirstFrame');\n setVideoStartedPlayback(true);\n const {\n account: currentAccount,\n anonymousAccount: currentAnonymousAccount,\n anonymousId: currentAnonymousId,\n anonymousLogin: currentAnonymousLogin,\n segmentReferrer: prevSegmentReferrer,\n } = this.props;\n const loginAnonymousUser =\n !currentAccount &&\n !currentAnonymousAccount &&\n currentAnonymousId &&\n currentAnonymousLogin;\n if (loginAnonymousUser) {\n await currentAnonymousLogin({ deviceId: currentAnonymousId });\n }\n const { segmentSourceName, segmentSourceType } = this.getSegmentSourceData();\n const segmentReferrer = getSegmentReferrer({\n segmentSourceType,\n prevSegmentReferrer,\n });\n setPlayerState({\n mediaComplete: false,\n mediaStarted: true,\n adPodStarted: true,\n clickedEndSlate: false,\n playerLoading: false,\n segmentSourceName,\n segmentSourceType,\n segmentReferrer,\n isVideoOverlayPresent: false,\n });\n },\n onAdLoadStart: () => {\n console.debug('!!live - onAdLoadStart');\n },\n onAdLoadComplete: () => {\n console.debug('!!live - onAdLoadComplete');\n },\n onRemovePlayer: () => {\n setSegmentContentPersonality(false);\n },\n onExitEventStream: e => {\n this.onExitEventStream(e);\n },\n onRestartButtonClicked: () => {\n console.debug('!!live - onRestartButtonClicked');\n const currentVideo = this.getLiveVideoData();\n const playerScreenUrl = _.get(currentVideo, 'playerScreenUrl');\n if (!playerScreenUrl) return;\n\n playerSetFullscreen(false, playerReference);\n const hashCallSign = callSign ? `-${callSign}` : '';\n saveLiveRestart(currentVideo);\n const watchUrl = helperGetRelativeUrl({ url: playerScreenUrl });\n helperGoToRelativeUrl(`${watchUrl}#${RESTART_TYPE_LIVE}${hashCallSign}`);\n },\n onFullScreen: e => {\n const { fullscreen } = e;\n setPlayerState({ isFullscreen: fullscreen });\n this.videoProps.video_is_fullscreen = fullscreen;\n this.playbackProps.full_screen = fullscreen;\n },\n onChromecastStart: contentVideoData => {\n const castData = {\n displayName: _.get(contentVideoData, 'b.displayName', ''),\n sessionId: _.get(contentVideoData, 'b.sessionId', ''),\n status: _.get(contentVideoData, 'b.status', ''),\n };\n updateNielsenOTTStatus(true, castData);\n floodlightEvent({\n mediaInfo: this.getLiveVideoData(),\n podId: _.get(this.contentProps, 'pod_id', ''),\n });\n },\n onChromecastComplete: () => {\n updateNielsenOTTStatus(false);\n floodlightEvent({\n mediaInfo: this.getLiveVideoData(),\n podId: _.get(this.contentProps, 'pod_id', ''),\n });\n },\n onPlaybackStart: contentVideoData => {\n console.debug('!!live - leapfrog onPlaybackStart');\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n this.videoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.contentProps = _.get(contentVideoData, 'trackingData.content', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n position: 0, // position is always 0 for playback start\n video_player_content_type: null,\n content_asset_id: _.get(contentVideoData, 'trackingData.content_asset_id'),\n content_pod_ids: _.get(contentVideoData, 'trackingData.content_pod_ids'),\n content_pod_id: null,\n rating: _.get(this.videoProps, 'video_rating'),\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackStart,\n props: data,\n });\n },\n onPlayerError: err => {\n this.setState({ playerError: true });\n const { contentStarted } = this.state;\n const { panelVideo, setPopUpModal, isAdBlockerEnabled, setError } = this.props;\n const {\n oops_message_ad_block_button_text: adBlockButtonText,\n oops_message_ad_block_detect: adBlockDetectText,\n oops_message_ad_block_failure: adBlockFailureText,\n } = window.Language;\n const eventVideoProps = _.get(panelVideo, 'trackingData.video', {});\n const { message } = err || {};\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n };\n const videoData = {\n video_id: _.get(panelVideo, 'id'),\n video_name: _.get(panelVideo, 'name'),\n ..._.pick(data, [\n 'position',\n 'livestream',\n 'content_pod_id',\n 'video_player_state',\n 'video_asset_id',\n 'video_fox_profile',\n 'video_content_length',\n 'video_content_type',\n 'video_content_length_format',\n 'video_station_id',\n ]),\n type: contentStarted ? 'videoStreamInterruptedError' : 'videoStartError',\n };\n if (isAdBlockerEnabled) {\n setAdBlockDetectCookie({ value: true, options: { path: '/' } });\n setPopUpModal({ visibility: true, message: adBlockDetectText, buttonText: 'OK' });\n } else if (!isAdBlockerEnabled && getAdBlockDetectCookie()) {\n removeAdBlockDetectCookie({ options: { path: '/' } });\n setPopUpModal({\n buttonText: adBlockButtonText,\n message: adBlockFailureText,\n visibility: true,\n });\n }\n const errorObject = new Error(message);\n errorObject.type = contentStarted ? 'videoStreamInterruptedError' : 'videoStartError';\n logPlayerError(errorObject, videoData);\n if (err?.error?.entitlementIssues || err?.data?.entitlementIssues) {\n const errors = getAuthZEntitlementIssues(err);\n setError(errors);\n }\n },\n onMediaStart: () => {\n console.debug('!!live - onMediaStart');\n const currentVideo = this.getLiveVideoData();\n floodlightEvent({\n mediaInfo: currentVideo,\n podId: _.get(this.contentProps, 'pod_id', ''),\n });\n const {\n onMediaCompleteData: prevOnMediaCompleteData,\n segmentReferrer: prevSegmentReferrer,\n updateShowcaseVideo,\n } = this.props;\n const { currentVideo: prevCurrentVideo } = this.state;\n const currentVideoId = _.get(currentVideo, 'id');\n const prevVideoId = _.get(prevCurrentVideo, 'id');\n if (currentVideoId !== prevVideoId) {\n this.setState({ currentVideo });\n if (prevCurrentVideo) updateShowcaseVideo(currentVideo);\n }\n const { segmentSourceName, segmentSourceType } = this.getSegmentSourceData();\n const segmentReferrer = getSegmentReferrer({\n segmentSourceType,\n prevSegmentReferrer,\n });\n this.getUpNext(currentVideo);\n this.setState({ playerError: false });\n setPlayerState(\n {\n clickedEndSlate: false,\n firstFramePlayed: true,\n mediaComplete: false,\n mediaStarted: true,\n onMediaCompleteData: currentVideo,\n playerLoading: false,\n prevOnMediaCompleteData,\n segmentReferrer,\n segmentSourceName,\n segmentSourceType,\n },\n () => {\n const { isAutoPlay } = this.props;\n if (isAutoPlay) {\n this.trackPageReferrerAnalytics({\n name: PageNames.CONTINUOUS_PLAY,\n });\n }\n },\n );\n },\n onMediaPlaying: () => {\n // console.debug('!!live - onMediaPlaying');\n },\n onContentStart: contentVideoData => {\n console.debug('!!live - leapfrog onContentStart');\n const { completedPodId } = this.props;\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.contentProps = _.get(contentVideoData, 'trackingData.content', {});\n const data = {\n ...this.videoProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n const videoData = {\n video_id: _.get(contentVideoData, 'id'),\n video_name: _.get(contentVideoData, 'name'),\n ..._.pick(data, [\n 'position',\n 'livestream',\n 'content_pod_id',\n 'video_player_state',\n 'video_asset_id',\n 'video_fox_profile',\n 'video_content_length',\n 'video_content_type',\n 'video_content_length_format',\n 'video_station_id',\n ]),\n };\n this.setState({ contentStarted: true });\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoContentStart,\n props: data,\n });\n logPlayerEvent('onVideoPlaybackStart', videoData);\n if (completedPodId) setPlayerState({ completedPodId: null });\n window?.fennecInstance?.deltaContentStart(contentVideoData);\n },\n onContentPlaying: contentVideoData => {\n const { secondsViewed: previouslyViewed } = this.state;\n const secondsViewed = _.get(contentVideoData, 'trackingData.contentSecondsViewed', 0);\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n if (\n secondsViewed !== previouslyViewed &&\n secondsViewed % SEGMENT_CONTENT_PLAYING_INTERVAL_SEC === 0\n ) {\n const data = {\n ...this.videoProps,\n ...this.contentProps,\n ...eventVideoProps,\n video_seconds_viewed: SEGMENT_CONTENT_PLAYING_INTERVAL_SEC,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoContentPlaying,\n props: data,\n });\n window?.fennecInstance?.deltaContentPlaying(contentVideoData);\n }\n if (secondsViewed !== previouslyViewed) {\n const videoPlayhead = { [this.sessionId ?? '']: secondsViewed };\n if (window) _.set(window, '_segHBPlayheads', videoPlayhead);\n }\n this.setState({ secondsViewed });\n },\n onBufferStart: contentVideoData => {\n console.debug('!!live - leapfrog onBufferStart');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackBufferStarted,\n props: data,\n });\n },\n onBufferEnd: contentVideoData => {\n console.debug('!!live - leapfrog onBufferEnd');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackBufferComplete,\n props: data,\n });\n },\n onAdStart: contentVideoData => {\n console.debug('!!live - leapfrog onAdStart');\n this.adData = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const content = {\n ..._.pick(this.contentProps, ['airdate', 'asset_id', 'full_episode', 'program', 'title']),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n const props = {\n content,\n ...this.videoProps,\n ...eventVideoProps,\n ...this.adData,\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdStarted,\n props,\n });\n },\n onAdPlaying: contentVideoData => {\n console.debug('!!live - leapfrog onAdPlaying');\n this.newAdTime = _.get(contentVideoData, 'trackingData.adSecondsViewed', 0);\n if (this.newAdTime !== this.previousAdTime && this.newAdTime % this.AD_INTERVAL_SEC === 0) {\n const eventAdProps = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const content = {\n ..._.pick(this.contentProps, [\n 'airdate',\n 'asset_id',\n 'full_episode',\n 'program',\n 'title',\n ]),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n const props = {\n content,\n ...this.videoProps,\n ...this.adData,\n ...eventAdProps,\n ...eventVideoProps,\n video_seconds_viewed:\n this.newAdTime - (this.newAdTime > this.previousAdTime ? this.previousAdTime : 0),\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdPlaying,\n props,\n });\n }\n this.previousAdTime = this.newAdTime;\n },\n onAdComplete: contentVideoData => {\n console.debug('!!live - leapfrog onAdComplete');\n this.adData = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.newAdTime = _.get(contentVideoData, 'trackingData.adSecondsViewed', 0);\n const content = {\n ..._.pick(this.contentProps, ['airdate', 'asset_id', 'full_episode', 'program', 'title']),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n this.videoProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const props = {\n content,\n ...this.videoProps,\n ...this.adData,\n video_seconds_viewed:\n this.newAdTime === this.previousAdTime ? 0 : this.newAdTime - this.previousAdTime,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdCompleted,\n props,\n });\n },\n onAdPause: contentVideoData => {\n console.debug('!!live - leapfrog onAdPause');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const adVideoProps = _.get(contentVideoData, 'trackingData.ad', {});\n const data = {\n ...this.videoProps,\n ...eventVideoProps,\n ...adVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackPaused,\n props: data,\n });\n },\n onAdResume: contentVideoData => {\n console.debug('!!live - leapfrog onAdResume');\n this.adData = _.get(contentVideoData, 'trackingData.ad', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.eventProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const data = {\n ...this.eventProps,\n ...this.adData,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoAdResumed,\n props: data,\n });\n },\n onSlateStart: contentVideoData => {\n console.debug('!!live - leapfrog onSlateStart');\n this.slateData = _.get(contentVideoData, 'trackingData.slate', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const content = {\n ..._.pick(this.contentProps, ['airdate', 'asset_id', 'full_episode', 'program', 'title']),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n const props = {\n content,\n ...this.videoProps,\n ...eventVideoProps,\n ...this.slateData,\n pod_id: 1,\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoSlateStarted,\n props,\n });\n },\n onSlatePlaying: contentVideoData => {\n console.debug('!!live - leapfrog onSlatePlaying');\n this.newSlateTime = _.get(contentVideoData, 'trackingData.slateSecondsViewed', 0);\n if (\n this.newSlateTime !== this.previousSlateTime &&\n this.newSlateTime % this.AD_INTERVAL_SEC === 0\n ) {\n const eventSlateProps = _.get(contentVideoData, 'trackingData.slate', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const content = {\n ..._.pick(this.contentProps, [\n 'airdate',\n 'asset_id',\n 'full_episode',\n 'program',\n 'title',\n ]),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n const props = {\n content,\n ...this.videoProps,\n ...this.slateData,\n ...eventSlateProps,\n ...eventVideoProps,\n pod_id: 1,\n video_seconds_viewed:\n this.newSlateTime -\n (this.newSlateTime > this.previousSlateTime ? this.previousSlateTime : 0),\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoSlatePlaying,\n props,\n });\n }\n this.previousSlateTime = this.newSlateTime;\n },\n onSlateComplete: contentVideoData => {\n console.debug('!!live - leapfrog onSlateComplete');\n this.slateData = _.get(contentVideoData, 'trackingData.slate', {});\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.newSlateTime = _.get(contentVideoData, 'trackingData.slateSecondsViewed', 0);\n this.videoProps = {\n ...this.videoProps,\n ...eventVideoProps,\n };\n const content = {\n ..._.pick(this.contentProps, ['airdate', 'asset_id', 'full_episode', 'program', 'title']),\n ..._.pick(this.videoProps, [\n 'load_type',\n 'position',\n 'total_length',\n 'video_content_length',\n 'video_nielsen_clientid',\n 'video_nielsen_subbrand',\n 'video_tms_id',\n ]),\n };\n const props = {\n content,\n ...this.videoProps,\n ...this.slateData,\n pod_id: 1,\n video_seconds_viewed:\n this.newSlateTime === this.previousSlateTime\n ? 0\n : this.newSlateTime - this.previousSlateTime,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoSlateCompleted,\n props,\n });\n },\n onPause: contentVideoData => {\n console.debug('!!live - leapfrog onPause');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackPaused,\n props: data,\n });\n },\n onResume: contentVideoData => {\n console.debug('!!live - leapfrog onResume');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n this.playbackProps = _.get(contentVideoData, 'trackingData.playback', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackResumed,\n props: data,\n });\n },\n onContentComplete: contentVideoData => {\n console.debug('!!live - leapfrog onContentComplete');\n const totalSecondsViewed = _.get(contentVideoData, 'trackingData.contentSecondsViewed', 0);\n const secondsViewed = Math.floor(totalSecondsViewed % SEGMENT_CONTENT_PLAYING_INTERVAL_SEC);\n const completedPodId = getSegmentPodId(contentVideoData);\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const data = {\n ...this.videoProps,\n ...this.contentProps,\n ...eventVideoProps,\n video_seconds_viewed: secondsViewed,\n };\n setPlayerState({ completedPodId });\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoContentComplete,\n props: data,\n });\n this.setState({ contentStarted: false });\n },\n onPlaybackComplete: contentVideoData => {\n console.debug('!!live - leapfrog onPlaybackComplete');\n const eventVideoProps = _.get(contentVideoData, 'trackingData.video', {});\n const data = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n ...eventVideoProps,\n session_id: this.sessionId ?? '',\n };\n\n data.video_player_content_type = null;\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackComplete,\n props: data,\n });\n setPlayerState({ completedPodId: null });\n },\n onPlaybackInterrupted: data => {\n console.debug('!!live - leapfrog onPlaybackInterrupted');\n const { method } = data;\n const props = {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n method,\n video_player_state: SegmentPlayerStates.PAUSE,\n session_id: this.sessionId ?? '',\n };\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props,\n });\n },\n onMediaComplete: () => {\n console.debug('!!live - onMediaComplete');\n setPlayerState(\n {\n mediaComplete: true,\n mediaEnding: false,\n isAutoPlay: true,\n mediaEndingSeconds: null,\n firstFramePlayed: true,\n },\n () => {\n this.clearIntervalFetchUpNext();\n this.sendNextVideo();\n },\n );\n },\n onUserInteraction: () => {\n this.resetStillWatchingTimeout();\n },\n onNielsenDtvrTag: contentVideoData => {\n console.debug('!!live - onNielsenDtvrTag');\n const nielsen_id3_tag = _.get(contentVideoData, 'dtvrTag', {});\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoNielsenTagDetected,\n props: {\n nielsen_id3_tag,\n session_id: this.sessionId ?? '',\n },\n });\n },\n onVolumeChange: ({ newVolume, oldVolume }) => {\n const { video_volume } = this.videoProps;\n if (video_volume === newVolume || oldVolume === newVolume) return null;\n this.videoProps.video_volume = newVolume;\n this.playbackProps.sound = newVolume;\n return null;\n },\n };\n };\n\n getSegmentSourceData = () => {\n const video = this.getLiveVideoData();\n const { isAutoPlay: autoplay, preauthorizedResources, prevVideo } = this.props;\n const location = getLocation(window.referrer);\n const { pathname: path } = location;\n const segmentSourceType = getSegmentSourceType({\n homeUrl: helperGetHomeUrl(),\n path,\n autoplay,\n epg: true,\n });\n const data = getSegmentLiveViewedVideo({\n video,\n prevVideo,\n segmentSourceType,\n preauthorizedResources,\n });\n const segmentSourceName = getSegmentSourceName({\n data,\n type: segmentSourceType,\n });\n return {\n segmentSourceName,\n segmentSourceType,\n };\n };\n\n getUpNext(video) {\n const { accessToken, fetchUpNext } = this.props;\n const videoId = _.get(video, 'id');\n if (videoId) fetchUpNext({ accessToken, videoId });\n }\n\n setIntervalFetchUpNext(validFor) {\n const { setInterval } = this.props;\n this.clearIntervalFetchUpNext();\n this.intervalFetchUpNext = setInterval(() => {\n const currentVideo = this.getLiveVideoData();\n this.getUpNext(currentVideo);\n }, validFor);\n }\n\n setShowUpNextTimeout(nextVideos) {\n const { clearTimeout, playerType, setTimeout } = this.props;\n if (!UpNextToastEnabled || isPlayerTypeHero(playerType)) return;\n clearTimeout(this.showUpNextTimeout);\n const currentEndDate = _.get(nextVideos, '0.endDate', null);\n const nextStartDate = _.get(nextVideos, '1.startDate', null);\n const currentEnd = currentEndDate && stringToDate(currentEndDate);\n const nextStart = nextStartDate && stringToDate(nextStartDate);\n const hasOverlap = currentEnd && nextStart && isBefore(nextStart, currentEnd);\n\n if (!hasOverlap) return;\n\n const { toastDisplayBeforeEndInMinutes: minutesToSubtract } = window.ExternalConfig;\n const showTime = subMinutes(nextStart, minutesToSubtract);\n const showInMs = differenceInMilliseconds(showTime, now());\n if (showInMs < 0) return;\n this.showUpNextTimeout = setTimeout(() => {\n this.cbShowUpNextToast();\n }, showInMs);\n }\n\n callbackShow = () => {\n const {\n account,\n breakpoint,\n clearTimeout,\n firstFramePlayed,\n playerReference,\n setPlayerState,\n stillWatchingShowTimeout,\n } = this.props;\n const profileId = _.get(account, 'profileId', null);\n const { stillWatchingTimeoutEnabled } = BREAKPOINTS[breakpoint];\n\n clearTimeout(stillWatchingShowTimeout);\n if (stillWatchingTimeoutEnabled && firstFramePlayed) {\n playerSetFullscreen(false, playerReference);\n playerPause(playerReference);\n playerHideControls(playerReference);\n this.stillWatchingShowCb({ profileId });\n const stillWatchingHideTimeout = this.setStillWatchingHideTimeout({\n cb: () => {\n playerPlay(playerReference);\n this.stillWatchingHideCb();\n window.location = helperGetHomeUrl();\n },\n });\n setPlayerState({ stillWatchingHideTimeout });\n }\n };\n\n locationCallback = (error, coordinates) => {\n const { setCoordinates } = this.props;\n\n if (error) {\n setCoordinates(null);\n const errorCode = _.get(error, 'code');\n const errorMessage = _.get(error, 'message');\n const didTimeout = errorCode === 3 || _.includes(_.toLower(errorMessage), 'time');\n this.setState({\n geoLocationDeclined: true,\n geoLocationLoading: false,\n geoLocationTimeoutFail: didTimeout,\n });\n }\n\n if (coordinates) {\n setCoordinates(coordinates);\n this.setState({ geoLocationDeclined: false, geoLocationLoading: false });\n }\n };\n\n requestLocation = () => {\n getGeoLocation((error, coordinates) => {\n if (error) this.locationCallback(error, null);\n if (coordinates) this.locationCallback(null, coordinates);\n });\n };\n\n resetStillWatchingTimeout = () => {\n const {\n breakpoint,\n clearTimeout,\n firstFramePlayed,\n setPlayerState,\n stillWatchingShowTimeout,\n } = this.props;\n clearTimeout(stillWatchingShowTimeout);\n const { stillWatchingTimeoutEnabled } = BREAKPOINTS[breakpoint];\n\n const debugDisabledTimeout = getCookie({ name: DEBUG_PANEL_TIMEOUT_DISABLED });\n const durationSeconds = _.get(window.ExternalConfig, 'stillWatching.liveLimitSeconds');\n if (stillWatchingTimeoutEnabled && firstFramePlayed && debugDisabledTimeout !== 'YES') {\n const duration = durationSeconds && durationSeconds * 1000;\n const newStillWatchingShowTimeout = this.setStillWatchingShowTimeout({\n cb: this.callbackShow,\n duration,\n });\n setPlayerState({ stillWatchingShowTimeout: newStillWatchingShowTimeout });\n }\n };\n\n cbShowUpNextToast() {\n const { clearTimeout, setTimeout } = this.props;\n const { toastDisplayDurationInSeconds } = window.ExternalConfig;\n this.setState({ showUpNextToast: true });\n\n clearTimeout(this.hideUpNextTimeout);\n this.hideUpNextTimeout = setTimeout(() => {\n this.setState({ showUpNextToast: false });\n }, toastDisplayDurationInSeconds * 1000);\n }\n\n clearIntervalFetchUpNext() {\n const { clearInterval, clearNextVideosValidFor } = this.props;\n clearInterval(this.intervalFetchUpNext);\n clearNextVideosValidFor();\n }\n\n sendNextVideo() {\n const { playerType, setVideoPanel } = this.props;\n if (!UpNextStreamOverrideEnabled || isPlayerTypeHero(playerType)) return;\n const { nextVideos } = this.props;\n const currentVideo = _.get(nextVideos, '0');\n const nextVideo = _.get(nextVideos, '1');\n if (!currentVideo || !nextVideo) return;\n const network = _.get(nextVideo, 'network');\n const hasSportsContent = isSportsContent(currentVideo) || isSportsContent(nextVideo);\n if (network !== FOX || !hasSportsContent) return;\n setVideoPanel({ video: nextVideo, source: PLAYER_CONTEXT_LIVE });\n }\n\n renderVideoDetail(opts = {}) {\n const {\n adPlaying,\n breakpoint,\n creditsPlaying,\n favoritesManager,\n isContextPlayer,\n isFullscreen,\n panelVideo,\n playerType,\n setPlayerDataHover,\n setStickyControls,\n theme,\n video,\n } = this.props;\n const { currentVideo } = this.state;\n const { renderInfoInDetail, fncHideVideoDetails } = BREAKPOINTS[breakpoint];\n const { showControls, isFNC } = opts;\n const outOfMarketLivePlayerData = getCookie({ name: OOM_LIVE_PLAYER_URL_COOKIE_NAME });\n const classes = classNames(\n isFullscreen ? theme.fullscreen : false,\n theme.watchDetailContainer,\n isEpgv2Enabled() && theme.epgLivePageWatchDetailContainer,\n );\n if (isPlayerTypeHero(playerType)) return null;\n const videoItem = getOomLivePlayerEnabled() ? panelVideo : currentVideo || panelVideo;\n\n const renderVideoDetail = () => (\n <div className={classes}>\n <VideoDetail\n {...getVideoDetailProps(videoItem)}\n adPlaying={adPlaying}\n favoritesManager={favoritesManager}\n isContextPlayer={isContextPlayer}\n isLive\n renderInfo={renderInfoInDetail}\n setPlayerDataHover={setPlayerDataHover}\n setStickyControls={setStickyControls}\n showControls={showControls}\n showNetworkIcon={!creditsPlaying}\n video={video}\n />\n </div>\n );\n\n if (outOfMarketLivePlayerData) return currentVideo && renderVideoDetail();\n return isFNC && fncHideVideoDetails ? null : renderVideoDetail();\n }\n\n render() {\n const {\n adPlaying,\n breakpoint,\n coordinates,\n fetchedVideo,\n nextVideos,\n panelVideo,\n playerDataHover,\n playerLoading,\n playerType,\n renderVideoContainer,\n setLoading,\n showControls,\n theme,\n video,\n isFullscreen,\n isMiniPlayerActive,\n handlePopInMiniPlayer,\n containerId,\n } = this.props;\n const {\n geoLocationDeclined,\n geoLocationLoading,\n geoLocationTimeoutFail,\n showStillWatching,\n showUpNextToast,\n playerError,\n } = this.state;\n\n if (isMiniPlayerActive && playerError) handlePopInMiniPlayer();\n\n const callSign = _.get(fetchedVideo, 'callSign');\n const guid = _.get(fetchedVideo, 'guid');\n const livePlayerScreenUrl = _.get(fetchedVideo, 'livePlayerScreenUrl');\n const { showMobileControls, upNextToastHidesVideoDetail } = BREAKPOINTS[breakpoint];\n if (isPlayerTypeHero(playerType) && geolocationEnabled() && !coordinates) return null;\n if (geoLocationLoading === true) return <Loader setLoading={setLoading} center />;\n if (geoLocationDeclined === null) return <div className={theme.playerSpacer} />;\n const outOfMarketPlayerImage = getCookie({ name: OOM_LIVE_PLAYER_IMAGE_COOKIE_NAME });\n const isWatchUrl = livePlayerScreenUrl?.indexOf('/v2.0/watch') >= 0;\n let liveContentId = _.last(_.split(livePlayerScreenUrl, '/'));\n if (isWatchUrl) {\n const { stationId, epgListingId } = getUrlParams(livePlayerScreenUrl);\n liveContentId = `${stationId}?epgListingId=${epgListingId}`;\n }\n\n let seriesBackground = _.get(\n panelVideo,\n 'images.videoList.raw',\n _.get(panelVideo, 'images.still.raw', _.get(panelVideo, 'images.seriesList.raw')),\n );\n if (!seriesBackground && outOfMarketPlayerImage) {\n seriesBackground = outOfMarketPlayerImage;\n }\n\n const background = getDynamicImage({\n breakpoint,\n context: LIVE_PLAYER_BACKGROUND_IMAGE,\n seriesBackground,\n });\n const currentVideo = this.getLiveVideoData();\n const backfade =\n ((showControls || playerDataHover || playerLoading) && !adPlaying) || showUpNextToast;\n const showVideoDetail =\n (showControls ||\n (playerDataHover && !isFullscreen) ||\n (showMobileControls && !isFullscreen)) &&\n currentVideo &&\n !playerLoading;\n\n const contextProps = {\n backfade,\n background,\n callSign,\n channel: callSign,\n containerId,\n geoLocationDeclined: geolocationEnabled() && geoLocationDeclined && !coordinates,\n geoLocationTimeoutFail,\n geoLocationPrimaryActionCallback: geolocationEnabled() ? this.requestLocation : null,\n guid,\n isFullscreen,\n isLive: true,\n liveContentId,\n mediaInfo: video,\n mode: LIVE,\n onStillWatchingClose: this.onStillWatchingClose,\n playerConfig: this.getPlayerEvents(),\n playerLoading,\n playerLoadingImage: background,\n showControls: showVideoDetail,\n showStillWatching,\n showUpNextToast,\n type: playerType,\n };\n\n const currentPlayerState = getPlayerState(getActivePlayer());\n if (!this.currentChannel) this.currentChannel = callSign;\n if (\n this.currentChannel &&\n this.currentChannel !== callSign &&\n (currentPlayerState === 'PLAYING' || currentPlayerState === 'AD')\n ) {\n this.currentChannel = callSign;\n callSegmentPlayerEvent({\n eventName: SegmentVideoEvents.videoPlaybackInterrupted,\n props: {\n ...this.videoProps,\n ...this.playbackProps,\n ...this.contentProps,\n method: INTERRUPTION_METHODS.BROWSER_ACTION,\n video_player_state: SegmentPlayerStates.PAUSE,\n session_id: this.sessionId ?? '',\n },\n });\n }\n\n const nextVideo = _.get(nextVideos, '1', null);\n const hideVideoDetail = showUpNextToast && upNextToastHidesVideoDetail;\n const renderVideoDetail = showVideoDetail && !hideVideoDetail;\n return (\n <>\n {renderVideoContainer({ props: contextProps })}\n {this.renderVideoDetail({ showControls: renderVideoDetail })}\n {showUpNextToast && nextVideo && !isPlayerTypeHero(playerType) && (\n <UpNextToast\n onWatch={this.onWatchUpNextToast}\n onHide={this.onHideUpNextToast}\n renderImage={image =>\n renderImage({\n breakpoint,\n imageType: LIVE_EPG_THUMBNAIL_IMAGE,\n ...image,\n })\n }\n video={nextVideo}\n />\n )}\n </>\n );\n }\n}\n\nLiveContext.defaultProps = {\n accessToken: null,\n account: null,\n adPlaying: null,\n anonymousAccount: {},\n anonymousId: null,\n anonymousLogin: noop,\n clickedThumbnail: null,\n completedPodId: null,\n containerId: null,\n continuous: null,\n continuousPlayback: null,\n coordinates: null,\n creditsPlaying: null,\n errors: null,\n favoritesManager: null,\n fetchedVideo: null,\n firstAdPlayed: null,\n firstFramePlayed: null,\n isAdBlockerEnabled: false,\n isAuthenticated: null,\n isAutoPlay: null,\n isContextPlayer: false,\n isFullscreen: null,\n location: null,\n mediaComplete: null,\n mediaEnding: null,\n mediaEndingSeconds: null,\n nextVideosValidFor: null,\n onMediaCompleteData: null,\n panelVideo: null,\n playerLoading: null,\n playlist: null,\n preauthorizedResources: null,\n prevOnMediaCompleteData: null,\n prevVideo: null,\n provider: null,\n recommendationIdData: null,\n restart: null,\n restartPlayerScreenUrl: null,\n restartVideo: null,\n saveLiveRestart: noop,\n segmentReferrer: null,\n segmentSourceName: null,\n segmentSourceType: null,\n setPopUpModal: noop,\n setLoading: noop,\n setRecommendationId: noop,\n shouldResetStillWatching: null,\n showEndCards: null,\n startedPlayback: null,\n stillWatchingHideTimeout: noop,\n stillWatchingShowTimeout: null,\n video: null,\n};\n\nLiveContext.propTypes = {\n accessToken: PropTypes.string,\n account: PropTypes.shape({}),\n adPlaying: PropTypes.bool,\n anonymousAccount: PropTypes.shape({}),\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func,\n breakpoint: PropTypes.string.isRequired,\n clearInterval: PropTypes.func.isRequired,\n clearNextVideosValidFor: PropTypes.func.isRequired,\n clearTimeout: PropTypes.func.isRequired,\n clickedThumbnail: PropTypes.bool,\n completedPodId: PropTypes.string,\n containerId: PropTypes.string,\n continuous: PropTypes.bool,\n continuousPlayback: PropTypes.bool,\n coordinates: PropTypes.shape({}),\n creditsPlaying: PropTypes.bool,\n defaultPlayerEvents: PropTypes.shape({}).isRequired,\n errors: PropTypes.number,\n favoritesManager: PropTypes.shape({}),\n fetchUpNext: PropTypes.func.isRequired,\n fetchedVideo: PropTypes.shape({}),\n firstAdPlayed: PropTypes.bool,\n firstFramePlayed: PropTypes.bool,\n floodlightEvent: PropTypes.func.isRequired,\n getUseUtagGlobal: PropTypes.func.isRequired,\n handlePopInMiniPlayer: PropTypes.func,\n isMiniPlayerActive: PropTypes.bool,\n isAdBlockerEnabled: PropTypes.bool,\n isAuthenticated: PropTypes.bool,\n isAutoPlay: PropTypes.bool,\n isContextPlayer: PropTypes.bool,\n isFullscreen: PropTypes.bool,\n location: PropTypes.shape({}),\n mediaComplete: PropTypes.bool,\n mediaEnding: PropTypes.bool,\n mediaEndingSeconds: PropTypes.number,\n nextVideos: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n nextVideosValidFor: PropTypes.number,\n onMediaCompleteData: PropTypes.shape({}),\n openSignIn: PropTypes.func.isRequired,\n openSignUp: PropTypes.func.isRequired,\n pageViewEvent: PropTypes.func.isRequired,\n panelVideo: PropTypes.shape({}),\n playerDataHover: PropTypes.bool.isRequired,\n playerLoading: PropTypes.bool,\n playerReference: PropTypes.string,\n playerType: PropTypes.string.isRequired,\n playlist: PropTypes.bool,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n prevOnMediaCompleteData: PropTypes.shape({}),\n prevVideo: PropTypes.shape({}),\n provider: PropTypes.shape({}),\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n renderVideoContainer: PropTypes.func.isRequired,\n restart: PropTypes.bool,\n restartPlayerScreenUrl: PropTypes.string,\n restartVideo: PropTypes.shape({}),\n saveLiveRestart: PropTypes.func,\n segmentReferrer: PropTypes.shape({}),\n segmentSourceName: PropTypes.string,\n segmentSourceType: PropTypes.string,\n setCoordinates: PropTypes.func.isRequired,\n setError: PropTypes.func,\n setInterval: PropTypes.func.isRequired,\n setLoading: PropTypes.func,\n setPlayerDataHover: PropTypes.func.isRequired,\n setPlayerState: PropTypes.func.isRequired,\n setPopUpModal: PropTypes.func,\n setRecommendationId: PropTypes.func,\n setShouldResetStillWatching: PropTypes.func,\n setStickyControls: PropTypes.func.isRequired,\n setStreamExit: PropTypes.func.isRequired,\n setTimeout: PropTypes.func.isRequired,\n setVideoPanel: PropTypes.func.isRequired,\n setVideoStartedPlayback: PropTypes.func.isRequired,\n shouldResetStillWatching: PropTypes.bool,\n showControls: PropTypes.bool.isRequired,\n showEndCards: PropTypes.bool,\n startedPlayback: PropTypes.bool,\n stillWatchingHideTimeout: PropTypes.func,\n stillWatchingShowTimeout: PropTypes.number,\n theme: PropTypes.shape({}).isRequired,\n updateShowcaseVideo: PropTypes.func,\n video: PropTypes.shape({}),\n};\n\nexport default ReactTimeout(LiveContext);\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport { connect } from 'react-redux';\nimport ReactTimeout from 'react-timeout';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport VideoContainer from 'components/VideoContainer';\nimport classNames from 'classnames';\nimport {\n Events,\n fireFloodlightEvent,\n getSegmentAnonymousId,\n getSegmentSourceName,\n getSegmentSourceType,\n handleAnalytics,\n OptimizelyPlayerTypes,\n trackPageReferrerAnalytics,\n} from '@foxcorp/delta-web-analytics';\nimport { setRecommendationIdAction as setRecommendationId } from 'index/AppActions';\nimport {\n forceKeyartForShowcase as forceCollectionKeyartForShowcase,\n updateShowcaseVideo,\n} from 'screens/Collection/Actions';\nimport { getDmaFromVideo } from 'helpers/AuthHelper';\nimport Video from 'components/VideoPlayer';\nimport PopUpModal from 'components/PopUpModal';\nimport { PopIn } from 'images';\nimport {\n isAMobileDevice,\n isMobileBreakpoint,\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n} from 'helpers/BreakpointHelper';\nimport {\n getLocation,\n helperGetHomeUrl,\n helperGoToRelativeUrl,\n helperGetLiveUrl,\n} from 'helpers/RouteHelper';\nimport {\n checkAdBlocker,\n getAuthForPanelVideo,\n getAuthorizingNetwork,\n getNetworkList,\n getRequiresAuth,\n isClip,\n isEpisode,\n isLive,\n} from 'helpers/ContentHelper';\nimport { noop } from 'helpers/GlobalHelper';\nimport {\n CONTINUOUS,\n PLAYER_REFERENCE_GLOBAL,\n getPlayerCsid,\n isPlayerTypeHero,\n isPreviewPass,\n PLAYER_CONTEXT_LIVE,\n PLAYER_CONTEXT_WATCH,\n playerRemove,\n playerSetUserActive,\n PLAYLIST,\n RESTART,\n updatePlayerType,\n getPercentComplete,\n} from 'helpers/PlayerHelper';\nimport {\n RELEASE_TYPE_LIVE,\n RESTART_TYPE_LIVE,\n VIDEO_TYPE_CLIP,\n VIDEO_TYPE_FULLEPISODE,\n VIDEO_TYPE_MOVIE,\n VIDEO_TYPE_GAME,\n} from 'screens/Watch/WatchHelpers';\nimport { isEpgv2Enabled } from 'helpers/ConfigHelper';\nimport { determineBrowser } from '../Header/HeaderHelpers';\nimport {\n clearNextVideosValidFor,\n clearPercentWatched,\n clearVideo,\n fetchNextVideo,\n fetchUpNext,\n fetchVideo,\n fetchVideoPanel,\n playNextPlaylistVideo,\n resetVodSectionClicked,\n saveLiveRestart,\n savePercentWatched,\n setError,\n setVideoCountdown,\n setHasSeenHalfAnyVideo,\n setMiniPlayerActive,\n setPortalContentFinished,\n setStreamExit,\n setVideoPanel,\n setVideoStartedPlayback,\n} from './Actions';\nimport {\n getShouldCheckPreviewPass,\n getShouldDisablePreviewPassRender,\n getVideoContainerTheme,\n} from './Helper';\nimport { DynamicRating, LiveContext, WatchContext } from './components';\nimport defaultStyle from './VideoPlayerGlobal.module.scss';\nimport heroStyle from './VideoPlayerGlobalHero.module.scss';\n\nconst Draggable = React.lazy(() => import('react-draggable'));\n\nconst BREAKPOINTS = {\n [SITE_PLATFORM_WEB_LARGE]: {\n suppressNetworkIcon: false,\n playerMetadataOverlay: true,\n },\n [SITE_PLATFORM_WEB]: {\n suppressNetworkIcon: false,\n playerMetadataOverlay: true,\n },\n [SITE_PLATFORM_TABLET]: {\n suppressNetworkIcon: false,\n playerMetadataOverlay: false,\n },\n [SITE_PLATFORM_MOBILE]: {\n suppressNetworkIcon: false,\n playerMetadataOverlay: false,\n },\n};\nconst CONTAINER_ID = 'video-player-container';\nconst PAGE_ROOT_ID = 'live-page-overflow';\n\nconst BOTTOM_RIGHT = 'br';\nconst TOP_RIGHT = 'tr';\nconst BOTTOM_LEFT = 'bl';\nconst TOP_LEFT = 'tl';\n\nlet autoplayTimeout;\nlet exitStreamTimeout;\n\nclass VideoPlayerGlobal extends Component {\n constructor(props) {\n super(props);\n const mode = _.get(this.props, 'params.modeId', '');\n const hash = _.trim(_.get(this.props, 'location.hash'), '#');\n const isRestart = mode === RESTART || _.includes(hash, RESTART);\n const isContinuous = _.includes(hash, CONTINUOUS);\n const isPlaylist = _.includes(hash, PLAYLIST);\n const playlistId = isPlaylist ? hash.replace(`${PLAYLIST}=`, '') : null;\n const playerType = _.get(this.props, 'playerType');\n const theme = isPlayerTypeHero(playerType) ? heroStyle : defaultStyle;\n\n this.state = {\n adPlaying: false,\n adPodStarted: null,\n clickedEndSlate: false,\n clickedThumbnail: false,\n continuous: isContinuous || isPlaylist,\n continuousPlayback: true,\n creditsPlaying: false,\n entitlementIssues: null,\n firePlayerPageViews: false,\n firstAdPlayed: false,\n firstFramePlayed: false,\n isAutoPlay: null,\n isBrowser: '',\n isAuthError: null,\n isVideoOverlayPresent: false,\n isAdBlockerEnabled: false,\n isPopUpModalVisible: false,\n mediaComplete: false,\n mediaEnding: false,\n mediaEndingSeconds: null,\n mediaStarted: false,\n miniPosition: {\n controlledPosition: { x: 0, y: 0 },\n corner: '',\n },\n playerDataHover: false,\n playerLoading: false,\n preAuthCheckComplete: false,\n segmentReferrer: null,\n segmentSourceName: null,\n segmentSourceType: null,\n showControls: true,\n showRestartOverlay: false,\n streamExit: false,\n containerId: CONTAINER_ID,\n popUpModalButtonText: null,\n popUpModalMessage: null,\n playlist: playlistId,\n restart: isRestart,\n showTVRating: false,\n showEndCards: true,\n showTrailerUpsell: false,\n stillWatchingHideTimeout: null,\n stillWatchingShowTimeout: null,\n theme,\n userClosedMiniPlayer: false,\n };\n\n this.playerRef = React.createRef();\n this.handleScroll = _.throttle(this.handleScroll, 16);\n this.handleResize = _.throttle(this.handleResize, 300);\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n }\n\n componentDidMount() {\n const root = document.getElementById(PAGE_ROOT_ID);\n const isBrowser = determineBrowser();\n this.setState({ isBrowser });\n if (root) {\n root.addEventListener('scroll', this.handleScroll, { passive: true });\n }\n checkAdBlocker().then(isAdBlockerEnabled => this.setState({ isAdBlockerEnabled }));\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { clickedEndSlate, clickedThumbnail } = this.state;\n const {\n clearPercentWatched,\n errors,\n panelVideo,\n originalItem,\n resetVodSectionClicked,\n restartVideo,\n video,\n } = this.props;\n const {\n errors: nextErrors,\n panelVideo: nextPanelVideo,\n originalItem: nextOriginalItem,\n restartVideo: nextRestartVideo,\n video: nextVideo,\n } = nextProps;\n const videoId = _.get(video, 'id');\n const nextVideoId = _.get(nextVideo, 'id');\n let newState = {};\n\n if (nextOriginalItem && nextOriginalItem !== originalItem) {\n resetVodSectionClicked();\n this.triggerSegmentPlayerSectionSource({ originalItem: nextOriginalItem });\n }\n\n if (videoId && videoId !== nextVideoId) {\n newState.prevVideo = video;\n newState.adPlaying = false;\n newState.showControls = true;\n /*\n * setting showEndCards to false so that upNext Videos won't be visible with new next videos CPEWEB-4506\n */\n newState.showEndCards = false;\n if (!clickedEndSlate && !clickedThumbnail) {\n const analyticsLocation = getLocation(window.referrer);\n const { pathname: path } = analyticsLocation;\n const newSegmentSourceType = getSegmentSourceType({\n homeUrl: helperGetHomeUrl(),\n path,\n vodThumbnails: clickedThumbnail,\n });\n const segmentSourceName = getSegmentSourceName({\n data: video,\n type: newSegmentSourceType,\n });\n newState = {\n ...newState,\n segmentSourceName,\n segmentSourceType: newSegmentSourceType,\n };\n }\n }\n\n if (nextErrors !== errors) {\n newState.entitlementIssues = nextErrors && _.isArray(nextErrors) ? nextErrors : null;\n this.handlePopInMiniPlayer();\n }\n\n const screenUrl = this.getScreenUrl(panelVideo);\n const nextScreenUrl = this.getScreenUrl(nextPanelVideo);\n const screenUrlChanged = screenUrl && screenUrl !== nextScreenUrl;\n const restartVideoChanged = restartVideo !== nextRestartVideo;\n if (screenUrlChanged || restartVideoChanged) {\n newState.preAuthCheckComplete = false;\n }\n const panelVideoId = _.get(panelVideo, 'id');\n const nextPanelVideoId = _.get(nextPanelVideo, 'id');\n if (panelVideoId !== nextPanelVideoId) clearPercentWatched();\n\n this.setState(newState);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const {\n accessToken,\n authSuccess,\n clearTimeout,\n clearVideo,\n deviceId,\n errors,\n fetchVideo,\n forceCollectionKeyartForShowcase,\n isLivePage,\n isMiniPlayerActive,\n isPlayerLoaded,\n panelVideo,\n playerType,\n provider,\n setTimeout,\n setVideoStartedPlayback,\n startedPlayback,\n video,\n } = this.props;\n const {\n accessToken: prevAccessToken,\n authSuccess: prevAuthSuccess,\n errors: prevErrors,\n isLivePage: prevIsLivePage,\n isMiniPlayerActive: prevMiniPlayerActive,\n startedPlayback: prevStartedPlayback,\n playerType: prevPlayerType,\n video: prevVideo,\n } = prevProps;\n const { isFullscreen, preAuthCheckComplete } = this.state;\n const {\n isFullscreen: prevIsFullscreen,\n preAuthCheckComplete: prevPreAuthCheckComplete,\n } = prevState;\n const isHeroPlayer = isPlayerTypeHero(playerType);\n const screenUrl = this.getScreenUrl(panelVideo);\n const mvpd = _.get(provider, 'adobePassId');\n const autoplayContent = _.get(panelVideo, 'autoplayContent');\n const mvpdIsValidForPlayback = isHeroPlayer ? !isPreviewPass(mvpd) : true;\n const preAuthCheckCompleteChanged = preAuthCheckComplete !== prevPreAuthCheckComplete;\n const authSuccessChanged = authSuccess !== prevAuthSuccess;\n const accessTokenChanged = accessToken !== prevAccessToken;\n const contentChanged = authSuccessChanged || preAuthCheckCompleteChanged || accessTokenChanged;\n const hasRequiredAuthData = preAuthCheckComplete && authSuccess && accessToken;\n const canFetchVideo = isHeroPlayer ? autoplayContent : true;\n const shouldFetchVideo =\n screenUrl && hasRequiredAuthData && contentChanged && mvpdIsValidForPlayback;\n const setAutoplayTimeout = !prevStartedPlayback && startedPlayback && isHeroPlayer;\n const playerTypeChanged = playerType !== prevPlayerType && playerType;\n const videoCleared = prevVideo && !video;\n\n const fullScreenChanged = isFullscreen !== prevIsFullscreen;\n const isErrors = errors !== prevErrors;\n const miniPlayerActiveChanged = prevMiniPlayerActive !== isMiniPlayerActive;\n\n let nextState = {};\n\n if (!isAMobileDevice() && isLivePage && isMiniPlayerActive) {\n window.addEventListener('resize', this.handleResize, { passive: true });\n } else window.removeEventListener('resize', this.handleResize);\n\n if (isLivePage !== prevIsLivePage) {\n this.handlePopInMiniPlayer({ isRemount: true });\n }\n\n if ((miniPlayerActiveChanged && isErrors) || fullScreenChanged) {\n this.handlePopInMiniPlayer();\n }\n\n if (playerTypeChanged) {\n updatePlayerType(playerType, PLAYER_REFERENCE_GLOBAL);\n const nextTheme = isHeroPlayer ? heroStyle : defaultStyle;\n const clearAutoplayTimeout = isPlayerTypeHero(prevPlayerType) && !isHeroPlayer;\n if (clearAutoplayTimeout) clearTimeout(autoplayTimeout);\n nextState = {\n ...nextState,\n theme: nextTheme,\n };\n }\n\n if (setAutoplayTimeout) {\n const { autoplayIdleLimitSeconds } = window.ExternalConfig;\n if (autoplayIdleLimitSeconds) {\n const timeoutInMilliseconds = autoplayIdleLimitSeconds * 1000;\n clearTimeout(autoplayTimeout);\n autoplayTimeout = setTimeout(() => {\n forceCollectionKeyartForShowcase(true);\n clearVideo();\n }, timeoutInMilliseconds);\n }\n }\n\n if (shouldFetchVideo) {\n setVideoStartedPlayback(false);\n if (canFetchVideo) {\n const panelType = _.get(panelVideo, '@type');\n const videoGuid = _.get(panelVideo, 'guid');\n const audioOnly = _.get(panelVideo, 'audioOnly');\n const isLivePanel = isLive(panelType);\n const hash = _.trim(_.get(this.props, 'location.hash'), '#');\n const isPlaylist = _.includes(hash, PLAYLIST);\n const newPlaylistId = isPlaylist ? hash.replace(`${PLAYLIST}=`, '') : null;\n const { playlist } = prevState;\n let newScreenUrl = screenUrl;\n if (screenUrl && newPlaylistId && playlist !== newPlaylistId) {\n const prependCharacter = screenUrl.includes('?') ? '&' : '?';\n newScreenUrl = `${screenUrl}${prependCharacter}${PLAYLIST}=${newPlaylistId}`;\n nextState = { ...nextState, playlist: newPlaylistId };\n }\n\n const options = {\n url: newScreenUrl,\n isLive: isLivePanel,\n accessToken,\n deviceId,\n videoGuid,\n audioOnly,\n panelVideo,\n };\n fetchVideo(options);\n }\n }\n\n if ((shouldFetchVideo || videoCleared) && !isPlayerLoaded) {\n nextState = {\n ...nextState,\n creditsPlaying: false,\n firstFramePlayed: false,\n isAuthError: false,\n mediaComplete: false,\n mediaEnding: false,\n mediaEndingSeconds: null,\n playerLoading: true,\n };\n }\n this.setUserAtrribute50PercentViewed(video, PLAYER_REFERENCE_GLOBAL);\n\n if (!_.isEmpty(nextState)) this.setState(nextState);\n }\n\n componentWillUnmount() {\n const root = document.getElementById(PAGE_ROOT_ID);\n if (root) {\n root.removeEventListener('scroll', this.handleScroll);\n }\n const { clearVideo } = this.props;\n clearVideo();\n this.clearTimeouts();\n }\n\n onExitEventStream = e => {\n const { setTimeout } = this.props;\n const timeout = _.get(e, 'exitEventStreamSlateDuration', 30);\n exitStreamTimeout = setTimeout(() => {\n this.setState({ streamExit: true });\n }, timeout * 1000);\n };\n\n getDefaultPlayerEvents = () => ({\n onPlayerLoadComplete: () => {\n const { isAuthError: lclIsAuthError } = this.state;\n this.setState({ playerLoading: false });\n if (lclIsAuthError) playerRemove(PLAYER_REFERENCE_GLOBAL);\n },\n onShowControls: e => {\n const { showControls: oldShowControls, isAuthError: lclIsAuthError } = this.state;\n\n if (oldShowControls !== e && !lclIsAuthError) {\n this.setState({ showControls: e });\n }\n },\n onReleaseCleared: e => {\n const { clearVideo, forceCollectionKeyartForShowcase, playerType } = this.props;\n const { reason } = e;\n const isPlayerHero = isPlayerTypeHero(playerType);\n if (reason === 'concurrency' && isPlayerHero) {\n forceCollectionKeyartForShowcase(true);\n clearVideo();\n this.clearTimeouts();\n } else if (e) this.setState({ isVideoOverlayPresent: true });\n },\n // TODO: move to live context\n onExitEventStream: e => {\n this.onExitEventStream(e);\n },\n });\n\n getDefaultVideoContainerProps = item => {\n const {\n adPlaying,\n entitlementIssues,\n playerLoading,\n showControls,\n showTrailerUpsell,\n stickyControls,\n playerDataHover,\n } = this.state;\n const {\n accessToken,\n account,\n adblock,\n anonymousId,\n anonymousLogin,\n authSuccess,\n blackoutConfig,\n blackoutDefinitions,\n breakpoint,\n deviceId,\n isLiveRestart,\n isStatic,\n isVodUnavailable,\n mvpdData,\n onAuthCheckComplete,\n panelVideo,\n playerType,\n preauthorizedResources,\n profileId,\n provider,\n releaseUrl,\n renderAuthContainer,\n setAuthorizationToken,\n setBlockMVPDIncomplete,\n setInterval,\n setIsAuthenticated,\n setIsPlayerLoaded,\n setMVPDLogoutDataToAppState,\n setMVPDToAppState,\n setOverlay,\n setProvider,\n toggleMvpdAuthOverlay,\n triggerAuthCheck,\n video,\n } = this.props;\n\n if (!item)\n return { breakpoint, renderAuthContainer, theme: getVideoContainerTheme(playerType) };\n\n const {\n scrubbingEnabled,\n videoType,\n contentRating,\n contentSKU,\n id: videoId,\n network,\n networks,\n showCode,\n } = item;\n const shouldShowControls = showControls || stickyControls || playerDataHover;\n const siteSection = getPlayerCsid({\n showCode,\n isFullEpisode: isEpisode(videoType),\n });\n const requiresAuth = getRequiresAuth({ video: panelVideo });\n const requiresAuthLive = getRequiresAuth({ video: panelVideo, isLive: true });\n const networkEntitlementList = getNetworkList();\n const authorizingNetwork = getAuthorizingNetwork(item, false, accessToken);\n const contentNetworks = networks || [network];\n const isClip = videoType === VIDEO_TYPE_CLIP;\n const scrubbingEnabledCalc = scrubbingEnabled || isClip;\n const containerClass = null;\n const shouldCheckPreviewPass = getShouldCheckPreviewPass(playerType);\n const disablePreviewPassRender = getShouldDisablePreviewPassRender(playerType);\n const props = {\n account,\n adblock,\n anonymousId,\n anonymousLogin,\n authSuccess,\n authorizingNetwork,\n backfade: (showControls || playerDataHover) && !adPlaying,\n blackoutConfig,\n blackoutDefinitions,\n breakpoint,\n containerClass,\n contentNetworks,\n contentRating,\n contentSKU,\n deviceId,\n entitlementIssues,\n isLiveRestart,\n isStatic,\n isVodUnavailable,\n mvpdData,\n network,\n networkEntitlementList,\n onAuthCheckComplete,\n playerLoading,\n playerType,\n preauthorizedResources,\n profileId,\n profileToken: accessToken,\n provider,\n reducerVideo: video,\n releaseURL: releaseUrl,\n renderAuthContainer,\n requiresAuth,\n requiresAuthLive,\n scrubbingEnabled: scrubbingEnabledCalc,\n selectedVideo: videoId,\n setAuthError: value => this.setState({ isAuthError: value }),\n setAuthorizationToken,\n setBlockMVPDIncomplete,\n setInterval,\n setIsAuthenticated,\n setIsPlayerLoaded,\n setMVPDLogoutDataToAppState,\n setMVPDToAppState,\n setOverlay,\n setPlayerDataHover: this.setPlayerDataHover,\n setPreAuthCheckComplete: this.setPreAuthCheckComplete,\n setProvider,\n setStickyControls: this.setStickyControls,\n showTrailerUpsell,\n shouldCheckPreviewPass,\n disablePreviewPassRender,\n showControls: shouldShowControls,\n siteSection,\n theme: getVideoContainerTheme(playerType),\n toggleMvpdAuthOverlay,\n triggerAuthCheck,\n videoId,\n videoType,\n };\n return props;\n };\n\n getScreenUrl = item => {\n const { playlist } = this.state;\n const { isLiveRestart } = this.props;\n\n const isLiveContent = this.isLiveContent(item) && !isLiveRestart;\n const screenUrlPath = isLiveContent ? 'livePlayerScreenUrl' : 'playerScreenUrl';\n let screenUrl = _.get(item, screenUrlPath);\n if (playlist && screenUrl) {\n const prependCharacter = screenUrl.includes('?') ? '&' : '?';\n const playlistParam = `${prependCharacter}${PLAYLIST}=${playlist}`;\n screenUrl = `${screenUrl}${playlistParam}`;\n }\n return screenUrl;\n };\n\n setPopUpModal = ({ visibility, message, buttonText }) => {\n this.setState({\n isPopUpModalVisible: visibility,\n popUpModalMessage: message,\n popUpModalButtonText: buttonText,\n });\n };\n\n setPlayerDataHover = hover => {\n const { breakpoint } = this.props;\n const { playerMetadataOverlay } = BREAKPOINTS[breakpoint];\n if (playerMetadataOverlay) {\n this.setState({ playerDataHover: hover }, () => {\n this.setStickyControls(hover);\n });\n }\n };\n\n setPlayerState = (newState, cb) => {\n if (newState) this.setState(newState, cb);\n };\n\n setPreAuthCheckComplete = (value = true) => {\n this.setState({ preAuthCheckComplete: value });\n };\n\n setStickyControls = sticky => {\n const { playerDataHover } = this.state;\n this.setState({ stickyControls: sticky }, () => {\n playerSetUserActive(PLAYER_REFERENCE_GLOBAL, sticky || playerDataHover);\n });\n };\n\n setVideoOverlay = overlay => {\n this.setState({ isVideoOverlayPresent: overlay });\n };\n\n setUserAtrribute50PercentViewed = (video, playerReference) => {\n const { hasSeenHalfAnyVideo, setHasSeenHalfAnyVideo } = this.props;\n const { videoType = '', durationInSeconds } = video || {};\n if (!hasSeenHalfAnyVideo && !isClip(videoType)) {\n const percentComplete = getPercentComplete({ playerReference, durationInSeconds });\n if (percentComplete && percentComplete >= 50) setHasSeenHalfAnyVideo();\n }\n };\n\n clearTimeouts = () => {\n const { clearTimeout } = this.props;\n clearTimeout(autoplayTimeout);\n clearTimeout(exitStreamTimeout);\n };\n\n floodlightEvent = videoData => {\n const isLongForm = !isClip(_.get(videoData, 'videoType', ''));\n fireFloodlightEvent(videoData, isLongForm);\n };\n\n gotoLive = () => {\n const hash = _.trim(_.get(this.props, 'location.hash'), '#');\n const callSign = _.trim(hash.replace(RESTART_TYPE_LIVE, ''), '-');\n helperGoToRelativeUrl(helperGetLiveUrl({ callSign }));\n };\n\n isLiveContent = item => isLive(_.get(item, '@type'));\n\n triggerSegmentPlayerSectionSource = ({ originalItem } = {}) => {\n const originalItemId = _.get(originalItem, 'id');\n const currentId = _.get(this.props, 'video.id');\n if (originalItemId === currentId) return null;\n const {\n firstFramePlayed,\n segmentSourceType,\n segmentSourceName,\n mediaComplete,\n clickedThumbnail,\n } = this.state;\n if (firstFramePlayed && !mediaComplete) {\n const { video } = this.props;\n let newSegmentSourceName = segmentSourceName;\n let newSegmentSourceType = segmentSourceType;\n if (!newSegmentSourceName || !newSegmentSourceType) {\n const analyticsLocation = getLocation(window.referrer);\n const { pathname: path } = analyticsLocation;\n newSegmentSourceType = getSegmentSourceType({\n homeUrl: helperGetHomeUrl(),\n path,\n vodThumbnails: clickedThumbnail,\n });\n newSegmentSourceName = getSegmentSourceName({\n data: video,\n type: newSegmentSourceType,\n });\n }\n }\n return this.setState({ clickedThumbnail: originalItem });\n };\n\n renderDynamicRating = video => {\n if (!video) return null;\n\n const { showTVRating, playerLoading, adPlaying } = this.state;\n const { contentRating, releaseType, subRatings, showTvRatingOverlay, videoType } = video;\n const isLiveVideo = this.isLiveContent(video);\n\n if (!contentRating) return null;\n\n const shouldDisplayOverlayVOD = () => {\n const videoTypes = [VIDEO_TYPE_FULLEPISODE, VIDEO_TYPE_MOVIE, VIDEO_TYPE_GAME];\n const validVideoType = videoType && videoTypes.indexOf(videoType) !== -1;\n const isNotLive = releaseType !== RELEASE_TYPE_LIVE;\n return !!(showTVRating && showTvRatingOverlay && validVideoType && isNotLive);\n };\n\n const shouldDisplayOverlayLive = () =>\n !!(isLiveVideo && showTvRatingOverlay && !playerLoading && !adPlaying);\n\n const shouldDisplayOverlay = isLiveVideo\n ? shouldDisplayOverlayLive()\n : shouldDisplayOverlayVOD();\n if (!shouldDisplayOverlay) return null;\n return <DynamicRating rating={contentRating} subRatings={subRatings} />;\n };\n\n // mini player\n setMiniPlayer = () => {\n const { setMiniPlayerActive } = this.props;\n setMiniPlayerActive(true);\n this.handlePositionUpdate('br');\n };\n\n clearMiniPlayer = () => {\n const { setMiniPlayerActive } = this.props;\n setMiniPlayerActive(false);\n this.setState({\n miniPosition: {\n controlledPosition: null,\n corner: null,\n },\n });\n };\n\n setMiniPosition = ({ x, y, corner }) => {\n this.setState({\n miniPosition: {\n controlledPosition: {\n x,\n y,\n },\n corner,\n },\n });\n };\n\n handleDrag = e => {\n const { clientX: x, clientY: y } = e;\n const { isMiniPlayerActive } = this.props;\n const body = document.querySelector('body');\n const { clientWidth: w, clientHeight: h } = body;\n\n if (body && isMiniPlayerActive) {\n if (x >= w / 2 && y >= h / 2) {\n this.handlePositionUpdate(BOTTOM_RIGHT);\n } else if (x >= w / 2 && y < h / 2) {\n this.handlePositionUpdate(TOP_RIGHT);\n } else if (y >= h / 2 && x < w) {\n this.handlePositionUpdate(BOTTOM_LEFT);\n } else if (y <= h / 2 && y < h / 2) {\n this.handlePositionUpdate(TOP_LEFT);\n }\n }\n };\n\n handlePositionUpdate = pos => {\n if (this.playerRef.current) {\n const body = document.querySelector('body');\n const { clientWidth: width, clientHeight: height } = this.playerRef.current;\n\n let position;\n\n switch (pos) {\n case BOTTOM_RIGHT:\n position = {\n x: body.clientWidth - width - 30,\n y: body.clientHeight - height - 10,\n corner: pos,\n };\n break;\n case TOP_RIGHT:\n position = {\n x: body.clientWidth - width - 30,\n y: 10,\n corner: pos,\n };\n break;\n case BOTTOM_LEFT:\n position = {\n x: 10,\n y: body.clientHeight - height - 10,\n corner: pos,\n };\n break;\n case TOP_LEFT:\n position = {\n x: 10,\n y: 10,\n corner: pos,\n };\n break;\n default:\n position = { x: 0, y: 0, corner: pos };\n }\n\n this.setMiniPosition(position);\n }\n };\n\n handleResize = () => {\n if (isAMobileDevice()) return;\n const { isMiniPlayerActive } = this.props;\n const {\n miniPosition: { corner },\n } = this.state;\n\n if (isMiniPlayerActive && window.innerWidth < 768) {\n this.handlePopInMiniPlayer();\n }\n\n if (isMiniPlayerActive) {\n this.handlePositionUpdate(corner);\n }\n };\n\n handleScroll = () => {\n if (isAMobileDevice()) return;\n const {\n isMiniPlayerActive,\n appRef: { current },\n errors,\n } = this.props;\n const { userClosedMiniPlayer } = this.state;\n\n const player = window.player?.global?.videoElement;\n const { clientHeight: playerHeight } = this.playerRef?.current ?? {};\n\n if (player && current) {\n if (player.readyState >= 2 && player.currentTime > 0 && !player.ended) {\n if (!errors && !isMiniPlayerActive && !userClosedMiniPlayer) {\n if (current.scrollTop > playerHeight && window.innerWidth > 768) {\n this.setMiniPlayer();\n }\n } else if ((isMiniPlayerActive || userClosedMiniPlayer) && current.scrollTop === 0) {\n this.handlePopInMiniPlayer();\n }\n }\n }\n };\n\n getOptimizelyAttributesUserId = () => {\n const { optimizely } = this.props;\n const userId = getSegmentAnonymousId();\n const {\n page_url,\n is_debug_build,\n device_type,\n browser_name_version,\n } = optimizely?.user?.attributes;\n const attributes = {\n page_url,\n is_debug_build,\n device_type,\n browser_name_version,\n };\n return {\n attributes,\n optimizely,\n userId,\n };\n };\n\n handleOnClickPipButton = () => {\n this.setMiniPlayer();\n };\n\n handleOnClickNativePipButton = () => {\n handleAnalytics({\n event: Events.PLAYER_SCREEN_LAYOUT_CHANGED,\n payload: {\n page_url: window.location.href,\n player_type: OptimizelyPlayerTypes.NATIVE_MINI_PLAYER,\n segment_anonymous_id: getSegmentAnonymousId(),\n },\n });\n };\n\n handlePopInButtonClick = () => {\n this.handlePopInMiniPlayer();\n };\n\n handlePopInMiniPlayer = ({ isRemount = false } = {}) => {\n const root = document.getElementById(PAGE_ROOT_ID);\n root.scrollTop = 0;\n this.clearMiniPlayer();\n\n if (!isRemount) {\n handleAnalytics({\n event: Events.PLAYER_SCREEN_LAYOUT_CHANGED,\n payload: {\n page_url: window.location.href,\n player_type: OptimizelyPlayerTypes.MAIN_PLAYER,\n segment_anonymous_id: getSegmentAnonymousId(),\n },\n });\n }\n };\n\n handleCloseMiniPlayer = () => {\n handleAnalytics({\n event: Events.PLAYER_SCREEN_LAYOUT_CHANGED,\n payload: {\n page_url: window.location.href,\n player_type: OptimizelyPlayerTypes.MAIN_PLAYER,\n segment_anonymous_id: getSegmentAnonymousId(),\n },\n });\n\n this.clearMiniPlayer();\n this.setState({\n userClosedMiniPlayer: true,\n });\n };\n\n removeEventListeners = () => {\n const root = document.getElementById(PAGE_ROOT_ID);\n if (root) root.removeEventListener('scroll', this.handleScroll);\n };\n\n renderPlayer = () => {\n const {\n accessToken,\n authSuccess,\n countdownVideo,\n errors,\n onChannelSelect,\n isLivePage,\n isMiniPlayerActive,\n optimizelyResults,\n page,\n panelVideo,\n playerContext,\n portalRef,\n retryErrors,\n video,\n } = this.props;\n const {\n isFullscreen,\n isAdBlockerEnabled,\n miniPosition: { controlledPosition },\n theme,\n } = this.state;\n\n const playerReference = PLAYER_REFERENCE_GLOBAL;\n const panelType = _.get(panelVideo, '@type');\n const isLivePanel = isLive(panelType);\n\n const requiresAuthLive =\n isLivePanel && getAuthForPanelVideo(panelVideo, isLivePanel, accessToken);\n const requiresAuthVod =\n !isLivePanel &&\n panelVideo?.requiresMVPDAuth &&\n getAuthForPanelVideo(panelVideo, isLivePanel, accessToken);\n if (panelVideo) {\n panelVideo.requiresAuthLive = requiresAuthLive;\n panelVideo.requiresAuth = requiresAuthVod;\n }\n\n const fetchedVideo = video || panelVideo;\n const defaultVideoContainerProps = this.getDefaultVideoContainerProps(fetchedVideo);\n const dma = getDmaFromVideo(panelVideo);\n const isContextPlayer =\n portalRef === 'context-player-video-portal' && document.getElementById(portalRef);\n\n const containerProps = {\n ...defaultVideoContainerProps,\n accessToken,\n authSuccess,\n countdownVideo,\n errors,\n onChannelSelect,\n dma,\n handlePopInMiniPlayer: this.handlePopInMiniPlayer,\n isFullscreen,\n isLivePage,\n isMiniPlayerActive,\n optimizelyResults,\n panelVideo,\n playerReference,\n portalRef,\n removeEventListeners: this.removeEventListeners,\n retryErrors,\n retryFetchVideo: () => {\n const { fetchVideo, accessToken, deviceId, panelVideo } = this.props;\n const screenUrl = this.getScreenUrl(panelVideo);\n const panelType = _.get(panelVideo, '@type');\n const videoGuid = _.get(panelVideo, 'guid');\n const audioOnly = _.get(panelVideo, 'audioOnly');\n const isLivePanel = isLive(panelType);\n fetchVideo({\n url: screenUrl,\n isLive: isLivePanel,\n accessToken,\n deviceId,\n videoGuid,\n audioOnly,\n panelVideo,\n });\n },\n };\n const renderVideoContainer = ({ props, endCards, videoDetail }) => (\n <VideoContainer {...containerProps} {...props} endCards={endCards} videoDetail={videoDetail}>\n <Video />\n </VideoContainer>\n );\n const dynamicRating = this.renderDynamicRating(fetchedVideo);\n const contextProps = {\n ...this.props,\n ...this.state,\n defaultPlayerEvents: this.getDefaultPlayerEvents(),\n fetchedVideo,\n floodlightEvent: this.floodlightEvent,\n handlePopInMiniPlayer: this.handlePopInMiniPlayer,\n isMiniPlayerActive,\n isAdBlockerEnabled,\n isContextPlayer,\n page,\n playerContext,\n playerReference,\n removeEventListeners: this.removeEventListeners,\n renderVideoContainer,\n setPopUpModal: this.setPopUpModal,\n setPlayerDataHover: this.setPlayerDataHover,\n setPlayerState: this.setPlayerState,\n setStickyControls: this.setStickyControls,\n isFullscreen,\n containerId: CONTAINER_ID,\n };\n\n if (!isAMobileDevice() && window.innerWidth > 768) {\n const player = document.querySelector('#video-player-global.jwplayer');\n const nativePipBtn = player?.querySelector('.pipButton');\n\n if (player && nativePipBtn) {\n if (isLivePage) {\n const miniPipBtn = document.createElement('button');\n\n miniPipBtn.classList.add('pip');\n miniPipBtn.addEventListener('click', this.handleOnClickPipButton);\n\n nativePipBtn.parentNode.replaceChild(miniPipBtn, nativePipBtn);\n } else if (nativePipBtn.getAttribute('clickListener') !== 'true') {\n nativePipBtn.addEventListener('click', this.handleOnClickNativePipButton);\n player.addEventListener('leavepictureinpicture', this.handleCloseMiniPlayer);\n\n nativePipBtn.setAttribute('clickListener', 'true');\n }\n }\n }\n\n let contextPlayer;\n switch (playerContext) {\n case PLAYER_CONTEXT_WATCH:\n contextPlayer = <WatchContext {...contextProps} />;\n break;\n case PLAYER_CONTEXT_LIVE:\n contextPlayer = <LiveContext {...contextProps} />;\n break;\n default:\n break;\n }\n\n return isLivePage ? (\n <React.Suspense fallback={<div />}>\n <Draggable\n bounds=\"body\"\n disabled={!isMiniPlayerActive}\n handle=\".handle\"\n nodeRef={this.playerRef}\n onStop={this.handleDrag}\n position={isMiniPlayerActive ? controlledPosition : { x: 0, y: 0 }}\n scale={1}\n >\n <div\n ref={this.playerRef}\n className={classNames(\n 'handle',\n isMiniPlayerActive ? defaultStyle.miniPlayer : defaultStyle.disableMiniPlayer,\n theme.videoContainerWrapper,\n )}\n id={CONTAINER_ID}\n onMouseEnter={() => this.setState({ stickyControls: true })}\n onMouseLeave={() => this.setState({ stickyControls: false })}\n >\n {dynamicRating}\n <div className={theme.shadowOverlay} />\n {contextPlayer}\n {!isFullscreen && (\n <>\n <div onClick={this.handlePopInButtonClick} className={defaultStyle.btnPopIn}>\n <PopIn />\n </div>\n <button onClick={this.handleCloseMiniPlayer} className={defaultStyle.btnClose} />\n <button className={defaultStyle.btnPip} />\n </>\n )}\n </div>\n </Draggable>\n </React.Suspense>\n ) : (\n <div\n className={classNames(theme.videoContainerWrapper)}\n id={CONTAINER_ID}\n onMouseEnter={() => this.setState({ stickyControls: true })}\n onMouseLeave={() => this.setState({ stickyControls: false })}\n >\n {dynamicRating}\n <div className={theme.shadowOverlay} />\n {contextPlayer}\n </div>\n );\n };\n\n render() {\n const {\n breakpoint,\n disableRender,\n isLivePage,\n isMiniPlayerActive,\n playerType,\n portalRef,\n streamExit,\n } = this.props;\n const {\n firstFramePlayed,\n isAuthError,\n isBrowser,\n isPopUpModalVisible,\n popUpModalButtonText,\n popUpModalMessage,\n theme,\n } = this.state;\n const { oops_message_ad_block_failure: adBlockFailureText } = window.Language;\n const networksBar = window.ExternalConfig.networkNavigation;\n if (disableRender || streamExit) return null;\n const isMobile = isMobileBreakpoint(breakpoint);\n const hide = isPlayerTypeHero(playerType) && (!firstFramePlayed || isMobile || isAuthError);\n const hideContainerClass = hide && theme.hide;\n const videoPlayer = this.renderPlayer();\n const containerPaddingClass = networksBar ? theme.withNetworksBar : '';\n const isLiveMini = !isAMobileDevice() && isLivePage && isMiniPlayerActive;\n\n const handleOnclosePopUpModal = () => {\n const homeUrl = helperGetHomeUrl();\n this.setState({ isPopUpModalVisible: false });\n if (popUpModalMessage === adBlockFailureText) {\n helperGoToRelativeUrl(homeUrl);\n }\n };\n\n const videoPlayerGlobal = (\n <div\n className={classNames(\n isLiveMini && isBrowser !== 'safari'\n ? defaultStyle.miniPlayerActive\n : isLiveMini && defaultStyle.miniPlayerActiveSafari,\n theme.container,\n hideContainerClass,\n containerPaddingClass,\n isEpgv2Enabled() ? theme.resizablePlayer : null,\n )}\n >\n <PopUpModal\n message={popUpModalMessage}\n onClose={handleOnclosePopUpModal}\n visibility={isPopUpModalVisible}\n buttonText={popUpModalButtonText}\n />\n <div className={theme.overlay} />\n <div className={classNames(theme.innerContainer)}>{videoPlayer}</div>\n </div>\n );\n\n const portalLocation = document.getElementById(portalRef);\n return portalRef && portalLocation\n ? ReactDOM.createPortal(videoPlayerGlobal, portalLocation)\n : videoPlayerGlobal;\n }\n}\n\nfunction mapStateToProps({ globalVideo, app }) {\n const globalVideoProps = _.pick(globalVideo, [\n 'countdownVideo',\n 'onChannelSelect',\n 'disableRender',\n 'errors',\n 'hasSeenHalfAnyVideo',\n 'hideVideoUntilPlayback',\n 'isLiveRestart',\n 'isMiniPlayerActive',\n 'isVodUnavailable',\n 'nextVideo',\n 'nextVideos',\n 'nextVideosValidFor',\n 'originalItem',\n 'optimizelyResults',\n 'page',\n 'panelVideo',\n 'playerContext',\n 'playerType',\n 'portalRef',\n 'releaseUrl',\n 'restartVideo',\n 'retryErrors',\n 'shouldResetStillWatching',\n 'showControls',\n 'startedPlayback',\n 'streamExit',\n 'video',\n ]);\n return {\n ...globalVideoProps,\n recommendationIdData: app.recommendationIdData,\n };\n}\n\nexport default connect(mapStateToProps, {\n clearNextVideosValidFor,\n clearPercentWatched,\n clearVideo,\n fetchNextVideo,\n fetchUpNext,\n fetchVideo,\n fetchVideoPanel,\n forceCollectionKeyartForShowcase,\n playNextPlaylistVideo,\n resetVodSectionClicked,\n savePercentWatched,\n setError,\n setPortalContentFinished,\n setRecommendationId,\n setVideoPanel,\n setVideoStartedPlayback,\n saveLiveRestart,\n setMiniPlayerActive,\n setVideoCountdown,\n setStreamExit,\n updateShowcaseVideo,\n setHasSeenHalfAnyVideo,\n})(ReactTimeout(VideoPlayerGlobal));\n\nVideoPlayerGlobal.defaultProps = {\n accessToken: null,\n account: null,\n adblock: false,\n anonymousId: null,\n anonymousLogin: noop,\n authSuccess: false,\n blackoutConfig: null,\n blackoutDefinitions: null,\n clearTimeout: noop,\n coordinates: null,\n countdownVideo: {},\n deviceId: null,\n errors: null,\n favoritesManager: null,\n hasSeenHalfAnyVideo: false,\n isAuthenticated: false,\n isHeader: false,\n isHomePage: false,\n isLiveRestart: false,\n isLivePage: false,\n isNavScheduleRendered: false,\n isPlayerLoaded: false,\n isStatic: false,\n isVodUnavailable: false,\n location: {},\n mvpdData: null,\n nextVideosValidFor: null,\n onAuthCheckComplete: noop,\n onChannelSelect: noop,\n openSignIn: noop,\n openSignUp: noop,\n originalItem: {},\n optimizely: {},\n optimizelyResults: null,\n page: null,\n panelVideo: null,\n panels: {},\n params: {},\n playerContext: null,\n playerType: null,\n playlistData: null,\n portalRef: '',\n preauthorizedResources: [],\n profileId: null,\n provider: {},\n recommendationIdData: null,\n reducerVideo: null,\n releaseUrl: null,\n renderVideoContainer: null,\n restartVideo: null,\n retryErrors: {},\n seo: null,\n setAccountCloseIgnoreRedirect: noop,\n setBlockMVPDIncomplete: noop,\n setHasSeenHalfAnyVideo: noop,\n setInterval: noop,\n setIsAuthenticated: false,\n setIsPlayerLoaded: false,\n setLoading: null,\n setMVPDLogoutDataToAppState: noop,\n setMVPDToAppState: noop,\n setOverlay: false,\n setRecommendationId: noop,\n setTimeout: noop,\n shouldResetStillWatching: false,\n streamExit: false,\n toggleMvpdAuthOverlay: noop,\n triggerAuthCheck: false,\n video: null,\n};\n\nVideoPlayerGlobal.propTypes = {\n accessToken: PropTypes.string,\n appRef: PropTypes.shape({}),\n account: PropTypes.shape({ accessToken: PropTypes.string }),\n adblock: PropTypes.bool,\n anonymousId: PropTypes.string,\n anonymousLogin: PropTypes.func,\n authSuccess: PropTypes.bool,\n blackoutConfig: PropTypes.shape({}),\n blackoutDefinitions: PropTypes.shape({}),\n breakpoint: PropTypes.string.isRequired,\n clearNextVideosValidFor: PropTypes.func.isRequired,\n clearPercentWatched: PropTypes.func.isRequired,\n clearTimeout: PropTypes.func,\n clearVideo: PropTypes.func.isRequired,\n coordinates: PropTypes.shape({}),\n countdownVideo: PropTypes.shape({}),\n deviceId: PropTypes.string,\n disableRender: PropTypes.bool.isRequired,\n errors: PropTypes.shape({}),\n favoritesManager: PropTypes.shape({\n favorites: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n setFavorites: PropTypes.func.isRequired,\n deleteFavorites: PropTypes.func.isRequired,\n }),\n fetchUpNext: PropTypes.func.isRequired,\n fetchVideo: PropTypes.func.isRequired,\n forceCollectionKeyartForShowcase: PropTypes.func.isRequired,\n getUseUtagGlobal: PropTypes.func.isRequired,\n hasSeenHalfAnyVideo: PropTypes.bool,\n hideVideoUntilPlayback: PropTypes.bool.isRequired,\n isAuthenticated: PropTypes.bool,\n isHeader: PropTypes.bool,\n isHomePage: PropTypes.bool,\n isLiveRestart: PropTypes.bool,\n isLivePage: PropTypes.bool,\n isMiniPlayerActive: PropTypes.bool,\n isNavScheduleRendered: PropTypes.bool,\n isPlayerLoaded: PropTypes.bool,\n isStatic: PropTypes.bool,\n isVodUnavailable: PropTypes.bool,\n location: PropTypes.shape({}),\n mvpdData: PropTypes.shape({}),\n nextVideos: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n nextVideosValidFor: PropTypes.number,\n onAuthCheckComplete: PropTypes.func,\n onChannelSelect: PropTypes.func,\n openSignIn: PropTypes.func,\n openSignUp: PropTypes.func,\n optimizely: PropTypes.shape({}),\n optimizelyResults: PropTypes.shape({}),\n originalItem: PropTypes.shape({}),\n page: PropTypes.string,\n pageViewEvent: PropTypes.func.isRequired,\n playNextPlaylistVideo: PropTypes.func.isRequired,\n playerType: PropTypes.string,\n panels: PropTypes.shape({\n itemsPerPage: PropTypes.number,\n member: PropTypes.arrayOf(PropTypes.shape({})),\n totalItems: PropTypes.number,\n }),\n panelVideo: PropTypes.shape({}),\n params: PropTypes.shape({ videoId: PropTypes.string }),\n playerContext: PropTypes.string,\n playlistData: PropTypes.shape({}),\n portalRef: PropTypes.string,\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n profileId: PropTypes.string,\n provider: PropTypes.shape({}),\n recommendationIdData: PropTypes.oneOfType([PropTypes.node, PropTypes.shape({})]),\n reducerVideo: PropTypes.shape({}),\n releaseUrl: PropTypes.string,\n renderAuthContainer: PropTypes.func.isRequired,\n renderVideoContainer: PropTypes.func,\n resetVodSectionClicked: PropTypes.func.isRequired,\n restartVideo: PropTypes.shape({}),\n retryErrors: PropTypes.shape({}),\n seo: PropTypes.shape({}),\n setAccountCloseIgnoreRedirect: PropTypes.func,\n setAuthorizationToken: PropTypes.func.isRequired,\n setBlockMVPDIncomplete: PropTypes.func,\n setHasSeenHalfAnyVideo: PropTypes.func,\n setInterval: PropTypes.func,\n setIsAuthenticated: PropTypes.func,\n setIsPlayerLoaded: PropTypes.func,\n setLoading: PropTypes.func,\n setMiniPlayerActive: PropTypes.func,\n setMVPDLogoutDataToAppState: PropTypes.func,\n setMVPDToAppState: PropTypes.func,\n setOverlay: PropTypes.func,\n setProvider: PropTypes.func.isRequired,\n setRecommendationId: PropTypes.func,\n setTimeout: PropTypes.func,\n setVideoPanel: PropTypes.func.isRequired,\n setVideoStartedPlayback: PropTypes.func.isRequired,\n shouldResetStillWatching: PropTypes.bool,\n startedPlayback: PropTypes.bool.isRequired,\n streamExit: PropTypes.bool,\n toggleMvpdAuthOverlay: PropTypes.func,\n triggerAuthCheck: PropTypes.bool,\n video: PropTypes.shape({}),\n};\n","import VideoPlayerGlobal from './VideoPlayerGlobal';\n\nexport default VideoPlayerGlobal;\n","import { Component } from 'react';\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { setResult } from './Actions';\nimport { removeCookie } from './Helper';\n\nclass CanIAutoplay extends Component {\n componentDidMount() {\n const { setResult } = this.props;\n setResult();\n }\n\n componentWillUnmount() {\n removeCookie();\n }\n\n render() {\n return null;\n }\n}\n\nCanIAutoplay.propTypes = {\n setResult: PropTypes.func.isRequired,\n};\n\nfunction mapStateToProps(state) {\n const result = _.get(state, 'canIAutoplay.result');\n return { result };\n}\nconst mapDispatchToProps = {\n setResult,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(CanIAutoplay);\n","/* global NetworkConfig */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getFontHelmetTag, setHelmetTags } from 'helpers/HelmetHelper';\nimport { getFontClassName } from 'helpers/ContentHelper';\nimport { getAppUrl } from 'components/Header/HeaderHelpers';\nimport classNames from 'classnames';\nimport style from './style.css';\n\nconst ErrorFallback = props => {\n const { error } = props;\n if (!error) return null;\n const { headerTags } = NetworkConfig;\n const data = {\n ...headerTags,\n };\n const {\n errorFatal_header: headerText,\n errorFatal_message: bodyText,\n errorFatal_buttonLabel: buttonText,\n } = window.Language;\n const { errorFatalDestination } = window.ExternalConfig;\n const buttonLink = getAppUrl({}).ios || errorFatalDestination;\n return (\n <div className={classNames([style.container, getFontClassName(style)])}>\n {setHelmetTags(data)}\n {getFontHelmetTag()}\n <div className={style.content}>\n <h1 className={style.header}>{headerText}</h1>\n <div className={style.body}>{bodyText}</div>\n <a className={style.button} href={buttonLink}>\n {buttonText}\n </a>\n </div>\n </div>\n );\n};\n\nErrorFallback.propTypes = {\n error: PropTypes.shape({}).isRequired,\n};\nexport default ErrorFallback;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ErrorFallback from 'components/ErrorFallback';\n\nexport class ErrorBoundary extends Component {\n static getDerivedStateFromError(error) {\n console.error(error);\n return { error };\n }\n\n constructor(props) {\n super(props);\n this.state = { error: null };\n }\n\n render() {\n const { error } = this.state;\n const { children } = this.props;\n if (error) {\n return <ErrorFallback error={error} />;\n }\n\n return children;\n }\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n params: PropTypes.shape({}),\n};\n\nErrorBoundary.defaultProps = {\n children: null,\n params: {},\n};\n\nexport default Component => props => (\n <ErrorBoundary params={props?.params}>\n <Component {...props} />\n </ErrorBoundary>\n);\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactTimeout from 'react-timeout';\n\nclass IntervalAction extends Component {\n componentDidMount() {\n const { action, duration, setInterval } = this.props;\n if (duration && action) {\n setInterval(action, duration);\n }\n }\n\n render() {\n return null;\n }\n}\n\nIntervalAction.propTypes = {\n duration: PropTypes.number.isRequired,\n action: PropTypes.func.isRequired,\n setInterval: PropTypes.func.isRequired,\n};\n\nexport default ReactTimeout(IntervalAction);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport IntervalAction from 'components/IntervalAction';\nimport { blackoutEnabled, blackoutDurationOverride } from 'helpers/ConfigHelper';\nimport { fetchBlackoutDefinition } from './BlackoutDefinitionFetcherActions';\n\nclass BlackoutDefinitionFetcher extends Component {\n static getEnabled = blackoutEnabledFromConfig => {\n const blackoutEnabledOverride = blackoutEnabled();\n const isBlackoutEnabledOverride = blackoutEnabledOverride !== null;\n return isBlackoutEnabledOverride ? blackoutEnabledOverride : blackoutEnabledFromConfig;\n };\n\n componentDidMount() {\n const { fetchBlackoutDefinition } = this.props;\n const blackout = _.get(window.ExternalConfig, 'blackout', {});\n const { enabled: blackoutEnabledFromConfig } = blackout;\n const enabled = BlackoutDefinitionFetcher.getEnabled(blackoutEnabledFromConfig);\n\n if (enabled) fetchBlackoutDefinition();\n }\n\n componentDidUpdate() {\n const { onComponentUpdate, definition } = this.props;\n onComponentUpdate(definition);\n }\n\n render() {\n const { fetchBlackoutDefinition } = this.props;\n const blackout = _.get(window.ExternalConfig, 'blackout', {});\n const {\n enabled: blackoutEnabledFromConfig,\n refreshDefinitionsIntervalMinutes: durationInMinutes,\n } = blackout;\n const enabled = BlackoutDefinitionFetcher.getEnabled(blackoutEnabledFromConfig);\n const durationInMinutesToMilliseconds = durationInMinutes ? durationInMinutes * 60000 : null;\n const durationOverride = blackoutDurationOverride();\n const duration = durationOverride || durationInMinutesToMilliseconds;\n\n if (!enabled || !duration) return null;\n\n return (\n <div>\n <IntervalAction action={fetchBlackoutDefinition} duration={duration} />\n </div>\n );\n }\n}\n\nBlackoutDefinitionFetcher.defaultProps = {\n definition: null,\n onComponentUpdate: () => {},\n};\n\nBlackoutDefinitionFetcher.propTypes = {\n fetchBlackoutDefinition: PropTypes.func.isRequired,\n onComponentUpdate: PropTypes.func,\n definition: PropTypes.shape({}),\n};\n\nconst mapStateToProps = state => ({\n definition: state.blackoutDefinitionFetcher.definition,\n});\n\nconst mapDispatchToProps = {\n fetchBlackoutDefinition,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BlackoutDefinitionFetcher);\n","import BlackoutDefinitionFetcher from './BlackoutDefinitionFetcher';\n\nexport default BlackoutDefinitionFetcher;\n","import _ from 'lodash';\nimport {\n getFavoritesForAccount,\n getFavoritesDetailsForAccount,\n createFavorite,\n deleteFavoritesForAccount,\n} from 'helpers/AccountHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport { isStaticRender } from 'helpers/ContentHelper';\nimport { getAnonymousFavoritesFromStorage, getCurrentAccount } from 'helpers/AnonymousHelper';\n\nasync function getProfileSDK() {\n let ProfileSDK = null;\n if (isBrowserIE() || isStaticRender()) {\n return null;\n }\n ProfileSDK = await import('@foxcorp/foxkit-profile-js');\n return ProfileSDK;\n}\n\nexport async function getFavorites() {\n const { profileConfig } = this.props;\n const ProfileSDK = await getProfileSDK();\n let profileFavorites = {};\n if (ProfileSDK) {\n profileFavorites = new ProfileSDK.ProfileFavorites(profileConfig);\n }\n\n const favorites = await profileFavorites.get();\n\n this.setAppFavorites({ favorites });\n this.getFavoritesDetails(favorites);\n}\n\n// TODO remove this! This IE is temporary til IE is sunset\nexport async function getFavoritesIE() {\n const { isLoadingFavorites } = this.state;\n const { account, anonymousAccount } = this.props;\n const currentAccount = account || anonymousAccount;\n if (!isLoadingFavorites && !currentAccount) {\n const anonymousFavorites = getAnonymousFavoritesFromStorage() || [];\n this.setAppFavorites({ favorites: anonymousFavorites, isLoadingFavorites: false });\n return;\n }\n if (!currentAccount || isLoadingFavorites) return;\n\n this.setState({ isLoadingFavorites: true });\n let favorites = await getFavoritesForAccount(currentAccount);\n\n if (!favorites || !_.isArray(favorites)) favorites = [];\n\n this.setAppFavorites({ favorites, isLoadingFavorites: false });\n this.getFavoritesDetails(favorites);\n}\n\nexport async function getFavoritesDetails(initalFavorites) {\n const { isLoadingFavorites } = this.state;\n const { account, anonymousAccount } = this.props;\n const currentAccount = account || anonymousAccount;\n\n if (!currentAccount || isLoadingFavorites) return;\n\n this.setState({ isLoadingFavorites: true });\n let favorites = initalFavorites || (await getFavoritesForAccount(currentAccount));\n if (!favorites || !_.isArray(favorites)) favorites = [];\n const favoritesDetails = await getFavoritesDetailsForAccount(currentAccount, favorites);\n this.setAppFavorites({ favorites, favoritesDetails, isLoadingFavorites: false });\n}\n\nconst formatFavorite = favoritableItems => {\n const formattedFavorites = _.map(favoritableItems, item => ({\n favoriteID: item.id,\n favoriteType: item['@type'],\n }));\n return formattedFavorites;\n};\n\nexport async function setFavorites(favorite) {\n const { favorites } = this.state;\n const { account, anonymousAccount, deviceId, profileConfig } = this.props;\n const ProfileSDK = await getProfileSDK();\n let profileFavorites = {};\n if (ProfileSDK) {\n profileFavorites = new ProfileSDK.ProfileFavorites(profileConfig);\n }\n return new Promise(async resolve => {\n const currentAccount = await getCurrentAccount({\n account,\n anonymousAccount,\n anonymousLogin: this.anonymousLogin,\n deviceId,\n });\n const result = await createFavorite(currentAccount, favorite, profileFavorites);\n const { favoritableItems } = favorite;\n const formattedFavorites = formatFavorite(favoritableItems);\n\n if (favorites) favorites.push(...formattedFavorites);\n const newFavorites = favorites || formattedFavorites;\n this.setAppFavorites({ favorites: newFavorites });\n resolve(result);\n });\n}\n\nexport async function deleteFavorites(favorite) {\n const { favoritableItems, showID } = favorite;\n const { favorites } = this.state;\n const { account, anonymousAccount, deviceId, profileConfig } = this.props;\n const ProfileSDK = await getProfileSDK();\n let profileFavorites = {};\n if (ProfileSDK) {\n profileFavorites = new ProfileSDK.ProfileFavorites(profileConfig);\n }\n return new Promise(async resolve => {\n const currentAccount = await getCurrentAccount({\n account,\n anonymousAccount,\n anonymousLogin: this.anonymousLogin,\n deviceId,\n });\n const result = await deleteFavoritesForAccount(currentAccount, favorite, profileFavorites);\n\n let newFavorites = [];\n\n favoritableItems.forEach(item => {\n const filteredFavorites = favorites.filter(f => f.favoriteID !== item.id);\n newFavorites = [...newFavorites, ...filteredFavorites];\n });\n\n if (showID) {\n favoritableItems.forEach(item => {\n const filteredFavorites = favorites.filter(f => f.favoriteID !== favorite.showID);\n newFavorites = [...filteredFavorites];\n });\n }\n\n this.setAppFavorites({ favorites: newFavorites });\n resolve(result);\n });\n}\n\nexport function setAppFavorites({ favorites, favoritesDetails, isLoadingFavorites }) {\n const newState = {};\n\n if (favorites !== undefined && favorites !== this.state.favorites) {\n newState.favorites = favorites;\n }\n\n if (favoritesDetails !== undefined && favoritesDetails !== this.state.favoritesDetails) {\n newState.favoritesDetails = favoritesDetails;\n }\n\n if (isLoadingFavorites !== undefined && this.state.isLoadingFavorites) {\n newState.isLoadingFavorites = isLoadingFavorites;\n }\n\n if (newState.favorites || newState.favoritesDetails || newState.isLoadingFavorites) {\n this.setState(newState);\n }\n}\n","import { inject } from './AsyncScriptLoader';\n\nfunction getEmbedUserZoomTag() {\n // eslint-disable-next-line no-undef\n if (EmbedUserZoomEnabled) {\n return `//<![CDATA[_uzactions = window._uzactions || [];_uzactions.push(['_setID', '72F5ED62D849E91180DC0050569444FB']);_uzactions.push(['_setSID', '56F3ED62D849E91180DC0050569444FB']);_uzactions.push(['_start']);(function() {var uz = document.createElement('script'); uz.type = 'text/javascript'; uz.async = true; uz.charset = 'utf-8';uz.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn5.userzoom.com/trueintent/js/uz_til_us.js?cuid=0CE748156DCDE41180C90050569444FB';var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(uz, s);})();//]]>`;\n }\n return '';\n}\n\nconst injectUserZoomTag = () => inject('', getEmbedUserZoomTag());\n\nexport default injectUserZoomTag;\n","import { inject } from './AsyncScriptLoader';\n\nconst injectGoogleSignIn = async () =>\n Promise.all([\n inject('https://apis.google.com/js/platform.js'),\n inject('https://accounts.google.com/gsi/client'),\n ]);\n\nexport default injectGoogleSignIn;\n","const queue = (() => {\n const storage = []; // this could be local storage / indexed db for offline analytics\n const push = ({ eventName, props, contextData, cb }) =>\n storage.push({ eventName, props, contextData, cb });\n const remove = () => storage.shift();\n const removeAll = () => {\n storage.length = 0;\n return true;\n };\n const length = () => storage.length;\n const isEmpty = () => !storage.length;\n const getAll = () => storage;\n return {\n push,\n remove,\n length,\n getAll,\n removeAll,\n isEmpty,\n };\n })();\n \nexport default queue;\n","/* eslint-disable import/no-unused-modules */\nimport { inject } from './AsyncScriptLoader';\nimport queue from './queue';\n\nlet initiated = false;\nconst LCP_TIME = 6000;\n\n// TODO: we can use segment snippet for server Segment loading\nconst scriptSrc = ` !function(){var analytics=window.analytics=window.analytics||[];\n if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error(\"Segment snippet included twice.\");\n else{analytics.invoked=!0;analytics.methods=[\"trackSubmit\",\"trackClick\",\"trackLink\",\"trackForm\",\"pageview\",\"identify\",\"reset\",\"group\",\"track\",\"ready\",\"alias\",\"debug\",\"page\",\"once\",\"off\",\"on\",\"addSourceMiddleware\",\"addIntegrationMiddleware\",\"setAnonymousId\",\"addDestinationMiddleware\"];\n analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement(\"script\");t.type=\"text/javascript\";\n t.async=!0;t.src=\"https://cdn.segment.com/analytics.js/v1/\" + key + \"/analytics.min.js\";var n=document.getElementsByTagName(\"script\")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey=\"YOUR_WRITE_KEY\";analytics.SNIPPET_VERSION=\"4.13.2\";\n analytics.load('ABCD');\n analytics.page();\n analytics.ready(segmentFlushQueue);\n }}();`;\n\nexport async function init() {\n retry();\n return inject('', scriptSrc);\n}\n\nconst wait = delay => new Promise(resolve => setTimeout(() => resolve(true), delay));\n\nexport const retry = async (attempts = 0, delay = 1500) => {\n await wait(delay);\n if (isLoaded()) return true;\n if (attempts >= 2) return true;\n inject('', scriptSrc);\n // eslint-disable-next-line no-param-reassign\n attempts += 1;\n return retry(attempts, delay);\n};\n\nexport const isLoaded = () => !!window.analytics;\n\nexport const flushQueue = () => {\n const tracksStorage = queue.getAll() ?? [];\n tracksStorage.forEach(item => {\n fireEvent(item);\n queue.remove();\n });\n};\n\nexport const fireEvent = ({ eventName = '', props = {}, contextData = {}, cb }) => {\n window.analytics.track(eventName, props, contextData, cb);\n};\n\nexport const segmentTrackEvent = ({ eventName, props, contextData, cb }) => {\n if (isLoaded()) {\n flushQueue();\n fireEvent({\n eventName,\n props,\n cb,\n contextData,\n });\n } else {\n queue.push({ eventName, props, contextData, cb });\n }\n};\n\nexport const initSegment = () => {\n window.segmentFlushQueue = flushQueue;\n if (initiated) return true;\n init();\n initiated = true;\n window.addEventListener('unload', () => {\n flushQueue();\n });\n return initiated;\n};\n\nexport const track = event => {\n if (!initiated) {\n initSegment(); \n }\n segmentTrackEvent(event);\n};\n\nexport const timedOutInit = () => {\n if (initiated) return true;\n setTimeout(() => init(), LCP_TIME);\n return true;\n};","/*\n global AdobeAnalyticsRSID, SalesforceMobileLinksRedirect,\n FavoritesEnabled, ProfileEnabled,\n RefreshWhenNoAuth, NetworkConfig, FooterUpsellEnabled, gapi\n*/\nimport React, { Component } from 'react';\nimport 'intersection-observer'; // IE11 polyfill\nimport 'helpers/uspapi';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { browserHistory } from 'react-router';\nimport WindowResizeListener from 'react-window-size-listener';\nimport _ from 'lodash';\nimport { Events as scrollEvents, animateScroll } from 'react-scroll';\nimport { connect } from 'react-redux';\nimport StickyBanner from 'components/StickyBanner';\nimport { getFontHelmetTag, setHelmetTags } from 'helpers/HelmetHelper';\nimport getOpeFoxSdk from 'helpers/ScriptHelper';\nimport {\n MVPD_COOKIE_NAME as mvpdCookieName,\n findProvider,\n getProviderObjectFromList,\n} from 'helpers/AuthHelper';\nimport {\n checkStatus as helperCheckStatus,\n deleteAccount,\n editAccount,\n editAccountIE,\n getAccount,\n getAccountCookie,\n getAnonymousAccountCookie,\n login as helperLogin,\n logoutClientless,\n logoutClientlessIE,\n register as helperRegister,\n registerIE,\n verify as helperVerify,\n noVerify as helperNoVerify,\n removeAccountCookie,\n reset as helperReset,\n resetIE,\n resetConfirm,\n setAccountCookie,\n toggleAccountExpired,\n removeAnonymousAccountCookie,\n} from 'helpers/Account';\nimport { getAccessToken as helperGetAccessToken } from 'helpers/auth.clientless';\nimport {\n cookieFactory,\n getCookie,\n getDomain,\n getLocalStorageItem,\n getSessionStorageItem,\n removeCookie,\n removeLocalStorageItem,\n setCookie,\n setLocalStorageItem,\n setSessionStorageItem,\n} from 'helpers/Storage';\nimport {\n clearLongTimeout,\n createProfile,\n getFontClassName,\n getMVPDFromCookie,\n getNetworkLogoUrl,\n getPrivacyParameterCookie,\n getPurchaseSourceCookie,\n getStickBannerData,\n getUrlParameter,\n isLive,\n isStaticRender,\n isTypeVideo,\n isUpcomingContent,\n sportsFeatures,\n v1Override,\n} from 'helpers/ContentHelper';\nimport {\n appDownloadPromptEnabled,\n getBlackoutConfig,\n isEpgv2Enabled,\n isEpgLiveMiniPlayerEnabled,\n previewPassEnabled,\n setDebugFromUrl,\n setOptOutCCPACookie,\n tveEnabled,\n ccpaOptOutEnabled,\n} from 'helpers/ConfigHelper';\nimport { PANEL_TYPE_LISTING } from 'screens/Live/LiveHelpers';\nimport { toBoolean, noop, isBrowserIE } from 'helpers/GlobalHelper';\nimport { PERK_ICON_IMAGE, renderImage } from 'helpers/ImageHelper';\nimport { isValidPage } from 'helpers/PageHelper';\nimport {\n getCampaignOverrides,\n getPreviousPathname,\n helperGetHomeUrl,\n isAppView,\n isAppViewExcluded,\n isGeoLocationBlocked,\n isMaintenance,\n redirectSalesForceLinksiOS,\n setSettingsPath,\n} from 'helpers/RouteHelper';\nimport { isTestEnvironment } from 'helpers/TestHelper';\nimport {\n OVERLAY_BREAKPOINTS,\n OVERLAY_ACCOUNT,\n OVERLAY_HEADER_SEARCH,\n shouldPausePlayer,\n} from 'helpers/FilterHelper';\nimport {\n DEBOUNCE_TIME,\n getSitePlatform,\n isMobileBreakpoint,\n isTabletBreakpoint,\n SITE_PLATFORM_MOBILE,\n SITE_PLATFORM_TABLET,\n SITE_PLATFORM_WEB_LARGE,\n SITE_PLATFORM_WEB,\n} from 'helpers/BreakpointHelper';\nimport {\n fetchAnonymousDataAfterLogout,\n getLatestAuthData,\n getStoredAuthenticatedMVPD,\n handleRefreshToken,\n} from 'helpers/AuthClientlessHelper';\nimport { handleAnonymousLogin, parseJwt, resetAnonymous } from 'helpers/AnonymousHelper';\nimport {\n callTealiumPageView,\n getAccountAnalyticsEvents,\n PageNames,\n mountDataLayer,\n removeSegmentUserIdCookie,\n resetPageReferrerData,\n setBlockReferrerAnalyticsTracking,\n setSegmentLoaded,\n sortEntitlements,\n trackPageReferrerAnalytics,\n handleAnalytics,\n Events,\n SegmentPageProfileTypes,\n} from '@foxcorp/delta-web-analytics';\nimport { logEvent } from 'helpers/LogReportHelpers';\nimport { getCachedLocation } from 'helpers/GeoLocationHelper';\nimport initializeRedfast from 'helpers/RedfastHelper';\nimport initializeDataDog from 'helpers/DataDogHelpers';\n\nimport {\n useMVPDLoginProfile as optimizelyUseMVPDLoginProfile,\n setInitOptimizelyAttributes,\n optimizelyLanguageStrings,\n getOptimizely,\n userAttributeEvents,\n} from 'helpers/OptimizelyHelper';\nimport {\n addBodyClass,\n removeBodyClass,\n addHTMLClass,\n removeHTMLClass,\n getTheme,\n webThemeIds,\n wrapComponentsWithThemeProvider,\n} from 'helpers/ThemeHelper';\nimport reset from 'themes/_reset.css'; // eslint-disable-line\nimport Account from 'components/Account';\nimport AuthContainer from 'components/AuthContainer';\nimport Header from 'components/Header';\nimport Footer from 'components/Footer';\nimport FooterUpsell from 'components/FooterUpsell';\nimport Loader from 'components/Loader';\nimport NetworkLink from 'components/NetworkLink';\nimport Segment from 'components/Segment';\nimport VideoPlayerGlobal from 'components/VideoPlayerGlobal';\nimport CanIAutoplay from 'components/CanIAutoplay';\nimport withErrorBoundary from 'components/withErrorBoundary';\nimport { getActivePlayer, isPreviewPass, playerPause, playerPlay } from 'helpers/PlayerHelper';\n\nimport {\n helperGetApiAccountRoute,\n helperGetApiHeaders,\n helperGetApiProfileIDRoute,\n} from 'helpers/ApiHelper';\nimport {\n checkDeepLinkFavorite,\n getCommonTealiumProps,\n getFavoritesFromStorage,\n helperGetPerks,\n renderFavorites,\n} from 'helpers/AccountHelper';\nimport BlackoutDefinitionFetcher from 'components/BlackoutDefinitionFetcher';\nimport { smartBannerPresent } from 'components/Header/HeaderHelpers';\nimport { makeSelectSeriesDetailSeriesData } from 'screens/SeriesDetail/selectors';\nimport {\n getTabName,\n PROMO_TYPE_INSET,\n PROMO_TYPE_LEAD,\n PROMO_TYPE_MARKETING_VIDEO,\n} from 'screens/SeriesDetail/SeriesDetailHelpers';\nimport { makeSelectGlobalVideoPanelVideo } from 'screens/Watch/selectors';\nimport {\n fetchMVPDProvidersAction,\n setGoogleOneTap,\n setIsGoogleSignIn,\n setIsGoogleOneTapDisplayed,\n setNewGoogleEmailAndToken,\n setIsGoogleSignedInBrowser,\n setPreauthorizedResourcesAction,\n setRecommendationIdAction,\n setUserAuthData,\n setUserProfileConfig,\n} from './AppActions';\nimport {\n getFavorites,\n getFavoritesIE,\n getFavoritesDetails,\n deleteFavorites,\n setFavorites,\n setAppFavorites,\n} from './AppFavoritesHelpers';\nimport { fetchPCS } from '../components/Account/AccountComponents/ParentalControls/ParentalControlsActions';\nimport { GOOGLE_CLIENT_ID } from '../components/Account/AccountComponents/GoogleSignInButton/hooks/useGetGoogleSignIn';\n\nimport AppStyleModule from './App.module.scss';\n\nimport { injectGoogleSignIn } from '../external-scripts';\n\nconst style = getTheme(webThemeIds.App);\n\nconst breakpoints = {\n [SITE_PLATFORM_WEB_LARGE]: {\n autoFocus: true,\n mainBackground: null,\n breakpointDisableScroll: false,\n },\n [SITE_PLATFORM_WEB]: {\n autoFocus: true,\n mainBackground: null,\n breakpointDisableScroll: false,\n },\n [SITE_PLATFORM_TABLET]: {\n autoFocus: false,\n mainBackground: null,\n breakpointDisableScroll: true,\n },\n [SITE_PLATFORM_MOBILE]: {\n autoFocus: false,\n mainBackground: null,\n breakpointDisableScroll: true,\n },\n};\n\nconst LAST_SESSION_PATH = 'lastFoxPath';\nconst APP_CLOSED = 'APP_CLOSED';\n\nclass App extends Component {\n constructor(props) {\n super(props);\n setSegmentLoaded();\n this.mapAnalytics();\n initializeDataDog();\n initializeRedfast();\n window.AdobeAnalyticsRSID = AdobeAnalyticsRSID;\n const { branding } = NetworkConfig;\n\n const breakpoint = SITE_PLATFORM_MOBILE;\n\n const locationCookies = getCachedLocation({ cb: this.locationCallback });\n\n this.appRef = React.createRef();\n\n this.state = {\n accountExpired: false,\n adblock: false,\n apiBreakpoint: null,\n authCheckComplete: false,\n authSuccess: false,\n blackoutDefinitions: null,\n blockReferrerAnalyticsTracking: false,\n blockSuccessScreen: false,\n breakpoint,\n campaignOverrides: getCampaignOverrides(),\n coordinates: locationCookies,\n currentPage: null,\n favorites: null,\n favoritesDetails: null,\n firstCollectionImpression: false,\n firstIdentifyCall: false,\n isHeader: null,\n isHeaderPinned: true,\n isHomePage: false,\n isListPage: false,\n isLivePage: false,\n isEpgLiveMiniPlayerEnabled: isEpgLiveMiniPlayerEnabled(),\n isNavScheduleRendered: false,\n isPageLoading: false,\n isPlayerLoaded: null,\n isSmartBannerEnabled: true,\n isVideoHero: null,\n isWatchPage: false,\n mvpdAuthOverlayProps: {},\n mvpdSignInTrigger: false,\n network: [branding],\n overlay: null,\n overlayPausedPlayer: null,\n preauthRefreshComplete: false,\n provider: null,\n renderMvpdAuthOverlay: false,\n renderLoader: false,\n showForgotPasswordLanding: false,\n showSignIn: false,\n showSignUp: false,\n triggerAuthCheck: false,\n upcomingOverlayOpen: false,\n useUtagGlobal: true,\n utagAccountSource: null,\n };\n\n this.handleRefreshToken = handleRefreshToken.bind(this);\n this.setBlockReferrerAnalyticsTracking = setBlockReferrerAnalyticsTracking.bind(this);\n this.trackPageReferrerAnalytics = trackPageReferrerAnalytics.bind(this);\n this.setMVPDSignInTrigger = newValue => {\n this.setState({\n mvpdSignInTrigger: newValue,\n renderMvpdAuthOverlay: newValue,\n });\n };\n this.setTriggerAuthCheck = newValue => {\n this.setState({\n triggerAuthCheck: newValue,\n });\n };\n this.openAccount = ({ cb, utagAccountSource, network = [branding] }) => {\n if (!ProfileEnabled) return;\n const { account: checkAccount } = this.props;\n this.setState({ utagAccountSource, network });\n this.setOverlay(OVERLAY_ACCOUNT, true, () => {\n if (cb) cb();\n if (checkAccount) {\n this.pageViewEvent({ pageName: PageNames.SETTINGS });\n handleAnalytics({\n event: Events.SETTINGS_SECTION_LANDING,\n payload: {\n pageName: `settings:landing`,\n pageType: 'settings:section-front',\n },\n });\n }\n });\n };\n this.openSignIn = ({ utagAccountSource }) => {\n if (!ProfileEnabled) return;\n this.setState({ showSignIn: true });\n this.openAccount({ utagAccountSource });\n };\n this.openSignUp = ({ utagAccountSource }) => {\n if (!ProfileEnabled) return;\n this.setState({ showSignUp: true });\n this.openAccount({ utagAccountSource });\n };\n this.openForgotPassword = (network = [branding], selectedNetwork = null) => {\n this.setState({ showForgotPasswordLanding: true, selectedNetwork });\n this.openAccount({ network });\n };\n this.onAuthCheckComplete = ({ complete, success, cb }) => {\n const nextState = {};\n if (complete !== undefined) nextState.authCheckComplete = complete;\n if (success !== undefined) nextState.authSuccess = success;\n const callback = cb || _.noop;\n this.setState(nextState, callback);\n };\n this.resetAnonymous = resetAnonymous.bind(this);\n this.onBlackoutDefinitionFetcherUpdate = blackoutDefinitions =>\n // TODO: we might be able to use redux for this state.blackoutDefinitionFetcher.definition\n this.setState({\n blackoutDefinitions,\n });\n this.firstSegmentIdentifyCalled = () => this.setState({ firstIdentifyCall: true });\n this.collectionImpressionCalled = () => this.setState({ firstCollectionImpression: true });\n this.upcomingOverlayOpen = state => {\n if (!state) {\n this.disableScrollByClass({ disableScroll: false, bodyOnly: true });\n } else {\n this.disableScrollByClass({ disableScroll: true, bodyOnly: true });\n }\n this.setState({ upcomingOverlayOpen: state });\n };\n this.checkDeepLinkFavorite = checkDeepLinkFavorite.bind(this);\n\n window.PreviewPassEnabled = previewPassEnabled();\n window.RefreshWhenNoAuth = RefreshWhenNoAuth;\n\n if (FavoritesEnabled) {\n this.setAppFavorites = setAppFavorites.bind(this);\n this.getFavorites = isBrowserIE() ? getFavoritesIE.bind(this) : getFavorites.bind(this);\n this.getFavoritesDetails = getFavoritesDetails.bind(this);\n this.setFavorites = setFavorites.bind(this);\n this.deleteFavorites = deleteFavorites.bind(this);\n } else {\n this.setAppFavorites = () => {};\n this.getFavorites = () => {};\n this.getFavoritesDetails = () => {};\n this.setFavorites = () => {};\n this.deleteFavorites = () => {};\n }\n }\n\n async componentDidMount() {\n const { breakpoint } = this.state;\n const {\n account,\n anonymousAccount,\n anonymousId,\n authorizationToken: accessToken,\n isAuthenticated,\n fetchPCS,\n setUserProfileConfig,\n } = this.props;\n const profileId = account?.profileId || anonymousAccount?.profileId;\n setOptOutCCPACookie();\n this.handleXid();\n const script = document.createElement('script');\n if (getPrivacyParameterCookie()) {\n script.innerHTML = getOpeFoxSdk({ profileId, anonymousId });\n }\n document.head.appendChild(script);\n\n setUserProfileConfig({ accessToken, profileId });\n logEvent('onAppLoad');\n window.onstorage = e => {\n if (e.key === APP_CLOSED) {\n removeLocalStorageItem({ key: APP_CLOSED });\n }\n };\n\n resetPageReferrerData();\n this.trackPageReferrerAnalytics({ name: PageNames.DEEPLINK });\n setSessionStorageItem({ key: LAST_SESSION_PATH, value: '' });\n if (SalesforceMobileLinksRedirect) redirectSalesForceLinksiOS();\n setInitOptimizelyAttributes(isAuthenticated, account);\n if (!smartBannerPresent(breakpoint)) {\n this.setSmartBannerEnabled(false);\n }\n if (isBrowserIE()) {\n this.getFavorites();\n }\n const hash = _.get(this.props, 'location.hash');\n if (hash) setDebugFromUrl(hash);\n\n const currentAccount = account || anonymousAccount;\n this.handleRefreshToken(currentAccount);\n if (account) fetchPCS(currentAccount.accessToken);\n\n this.setState({ renderLoader: false });\n this.loadGoogleSignInAPI();\n if (!account) this.loadGoogleOneTap();\n // loadExternalLibs();\n }\n\n // eslint-disable-next-line no-unused-react-component-methods/no-unused-react-component-methods\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { favoriteDetails, favorites } = this.state;\n const nextPathName = _.get(nextProps, 'location.pathname');\n const isAccountPage = /^\\/(tv\\/)*account((\\/\\w+)+|\\/?)$/.test(nextPathName);\n if (isAccountPage && (!favorites || (favorites && !favoriteDetails))) {\n this.getFavoritesDetails();\n }\n }\n\n async componentDidUpdate(prevProps, prevState) {\n const hash = _.get(this.props, 'location.hash');\n const prevHash = _.get(prevProps, 'location.hash');\n const { loggingOut, overlay } = this.state;\n const { overlay: prevOverlay } = prevState;\n const {\n account,\n anonymousAccount,\n deviceId,\n fetchPCS,\n mvpd,\n mvpdLogoutData,\n profileConfig,\n setUserAuthData,\n stickyBanner,\n location,\n setUserProfileConfig,\n } = this.props;\n const {\n account: prevAccount,\n anonymousAccount: prevAnonymousAccount,\n mvpd: prevMvpd,\n mvpdLogoutData: prevMvpdLogoutData,\n profileConfig: prevProfileConfig,\n stickyBanner: prevStickyBanner,\n location: prevLocation,\n } = prevProps;\n\n const currentPath = location?.pathname;\n const prevPath = prevLocation?.pathname;\n if (currentPath !== prevPath) {\n userAttributeEvents().currentPageUrl();\n }\n\n const accountAccessToken = helperGetAccessToken(account);\n const accountAdded = !prevAccount && account;\n const accountChanged = account && account !== prevAccount;\n const anonymousAccessToken = helperGetAccessToken(anonymousAccount);\n const anonymousAccountAdded = !prevAnonymousAccount && anonymousAccount;\n const anonymousAccountChanged = anonymousAccount && anonymousAccount !== prevAnonymousAccount;\n const isAnonymousAccountLogin = anonymousAccountChanged && !anonymousAccount.isNew;\n const isSearchOverlay = overlay === OVERLAY_HEADER_SEARCH;\n const mvpdAdded = !prevMvpd && mvpd;\n const mvpdLogoutAdded = !prevMvpdLogoutData && mvpdLogoutData;\n const newTokenAvailable = mvpdAdded || anonymousAccountAdded || accountAdded || mvpdLogoutAdded;\n const overlayChanged = prevOverlay !== overlay;\n const prevAccountAccessToken = helperGetAccessToken(prevAccount);\n const prevAnonymousAccessToken = helperGetAccessToken(prevAnonymousAccount);\n\n const accountTokenChanged = !!(\n prevAccountAccessToken &&\n accountAccessToken &&\n accountAccessToken !== prevAccountAccessToken\n );\n const anonTokenChanged = !!(\n prevAnonymousAccessToken &&\n anonymousAccessToken &&\n anonymousAccessToken !== prevAnonymousAccessToken\n );\n\n if (overlayChanged) this.setBlockReferrerAnalyticsTracking(isSearchOverlay || false);\n if (accountTokenChanged) this.handleRefreshToken(account);\n if (anonTokenChanged) this.handleRefreshToken(anonymousAccount);\n if (accountAdded) {\n setUserAuthData({ anonymousAccount: null });\n fetchPCS(account.accessToken);\n }\n\n if (newTokenAvailable && !loggingOut) {\n let authData;\n\n try {\n const { latestStoredData } = await getLatestAuthData({\n anonymousLogin: this.anonymousLogin,\n currentDeviceId: deviceId,\n });\n authData = latestStoredData;\n const { accessToken, profileId } = authData;\n setUserProfileConfig({ accessToken, profileId });\n } catch (e) {\n console.error('fetching latest auth data failed');\n }\n\n const accessToken = helperGetAccessToken(authData);\n\n setUserAuthData({ authorizationToken: accessToken });\n }\n\n if (accountChanged || isAnonymousAccountLogin) this.getFavorites();\n\n const hashChanged = hash && hash !== prevHash;\n if (hashChanged) setDebugFromUrl(hash);\n\n if (!prevStickyBanner && stickyBanner) {\n this.setState({ stickyBanner });\n }\n\n if (!prevProfileConfig && profileConfig) this.getFavorites();\n }\n\n componentWillUnmount() {\n const { refreshTokenTimeout } = this.state;\n if (refreshTokenTimeout) {\n clearLongTimeout(refreshTokenTimeout);\n }\n window.removeEventListener('unload', () => {});\n }\n\n handleXid = async () => {\n const { account, anonymousAccount } = this.props;\n const profileId = account?.profileId || anonymousAccount?.profileId;\n const { profile } = await createProfile(account?.accessToken, profileId);\n browserHistory.listen(() => {\n profile.getXid({ baseUrl: window.location?.origin }).then(xidResponse => {\n const xid = xidResponse?.xid;\n profile.submitXidEvent({ eventType: 'view', originBu: 'foxnow', xid });\n });\n });\n let xidResponse;\n try {\n xidResponse = await profile.getXid({ baseUrl: window.location?.origin });\n } catch (error) {\n console.log('getXid Request failed', error);\n }\n profile.submitXidEvent({ eventType: 'view', originBu: 'foxnow', xid: xidResponse?.xid });\n const Fennec = window.Fennec || null;\n if (Fennec) {\n window.fennecInstance = new Fennec('now');\n window.fennecInstance?.initFennec();\n }\n };\n\n // handleSetGoogleAccountData function executes after successful Google One Tap login\n handleSetGoogleAccountData(res) {\n removeAnonymousAccountCookie();\n setAccountCookie(res);\n this.closeAccount();\n this.resetAccountState();\n this.setAccountCloseIgnoreRedirect(false);\n setGoogleOneTap({ isGoogleOneTap: false });\n handleAnalytics({\n event: Events.PROFILE_SIGNIN_COMPLETED,\n payload: {\n page_profile_type: SegmentPageProfileTypes.GOOGLE,\n page_start_source: this.state.utagAccountSource ?? 'general',\n },\n tealiumPayload: {\n ...getCommonTealiumProps(),\n },\n });\n }\n\n async handleGoogleLink({ email, googleToken }) {\n try {\n const { profile } = this.props;\n const res = await profile.googleLink({\n additionalHeaders: v1Override,\n email,\n googleToken,\n });\n this.handleSetGoogleAccountData(res);\n } catch (e) {\n console.log(e);\n }\n }\n\n loadGoogleOneTap() {\n const handleGoogleOneTap = async (googleEmail, credential) => {\n const { account, setGoogleOneTap, profile } = this.props;\n let isFound;\n try {\n const statusResponse = await profile?.status({ email: googleEmail });\n const { found } = statusResponse;\n isFound = found;\n const loginResponse = await profile?.googleLogin({ googleToken: credential });\n const isUserTypeGoogle = loginResponse?.userType === 'google';\n if (!account && isFound && isUserTypeGoogle) {\n this.handleSetGoogleAccountData(loginResponse);\n }\n } catch (e) {\n setGoogleOneTap({\n googleOneTapEmail: googleEmail,\n googleToken: credential,\n isGoogleOneTap: true,\n });\n this.handleGoogleLink({ email: googleEmail, googleToken: credential });\n }\n };\n const options = {\n client_id: GOOGLE_CLIENT_ID,\n auto_select: false,\n cancel_on_tap_outside: false,\n context: 'signin',\n };\n\n this.googleOneTap(options, response => {\n const { credential } = response;\n const user = parseJwt(credential);\n handleGoogleOneTap(user?.email, credential);\n });\n }\n\n googleOneTap = async (\n { client_id, auto_select = false, cancel_on_tap_outside = false, context = 'signin' },\n callback,\n ) => {\n // load the one tap sdk here sdk\n await injectGoogleSignIn();\n const { setIsGoogleOneTapDisplayed } = this.props;\n const contextValue = ['signin', 'signup', 'use'].includes(context) ? context : 'signin';\n if (client_id) {\n window?.google?.accounts?.id?.initialize({\n client_id,\n callback,\n auto_select,\n cancel_on_tap_outside,\n context: contextValue,\n });\n window?.google?.accounts?.id?.prompt(notification => {\n const isDisplayed = notification.isDisplayed();\n setIsGoogleOneTapDisplayed(isDisplayed);\n if (notification.isNotDisplayed() || notification.isSkippedMoment()) {\n setIsGoogleOneTapDisplayed(isDisplayed);\n }\n });\n } else {\n console.error('client_id is missing');\n }\n };\n\n loadGoogleSignInAPI = () => {\n const { setIsGoogleSignedInBrowser } = this.props;\n // eslint-disable-next-line no-undef\n const googleAPI = window.gapi ? gapi : null;\n let auth2;\n let googleUser;\n\n const initSigninV2 = () => {\n auth2 = gapi.auth2.init({\n client_id: GOOGLE_CLIENT_ID,\n cookiepolicy: 'single_host_origin',\n scope: 'profile',\n });\n const updateGoogleUser = () => {\n const isSignedIn = googleUser?.isSignedIn();\n const googleEmail = googleUser?.getBasicProfile()?.getEmail();\n const googleToken = googleUser?.getAuthResponse()?.id_token;\n if (isSignedIn) {\n setIsGoogleSignedInBrowser({ googleEmail, googleToken, isSignedIn });\n }\n };\n\n const signinChanged = val => {\n console.log('Signin state changed to ', val);\n };\n\n const userChanged = user => {\n googleUser = user;\n updateGoogleUser();\n };\n\n const refreshValues = () => {\n if (auth2) {\n googleUser = auth2.currentUser.get();\n updateGoogleUser();\n }\n };\n\n auth2.isSignedIn.listen(signinChanged);\n auth2.currentUser.listen(userChanged);\n refreshValues();\n };\n\n if (googleAPI) {\n googleAPI.load('auth2', initSigninV2);\n }\n };\n\n mapAnalytics = () => {\n window.DataLayer = mountDataLayer({\n cookieFactory,\n enums: {\n MVPD_COOKIE: mvpdCookieName,\n PANEL_TYPE_LISTING,\n PROMO_TYPE_INSET,\n PROMO_TYPE_LEAD,\n PROMO_TYPE_MARKETING_VIDEO,\n },\n getAccount: getAccountCookie,\n getAnonymousAccount: getAnonymousAccountCookie,\n getCookie,\n getDetailTabName: getTabName,\n getFavorites: getFavoritesFromStorage,\n getLocalStorage: getLocalStorageItem,\n getMVPD: getMVPDFromCookie,\n getOptimizely,\n getPurchaseSource: getPurchaseSourceCookie,\n getQueryParameter: getUrlParameter,\n getSessionStorage: getSessionStorageItem,\n getSportsFeatures: sportsFeatures,\n isContentLive: isLive,\n isNation: () => false,\n isNationNewsEnabled: () => false,\n isPreviewPass,\n isTestEnvironment,\n isTveEnabled: tveEnabled,\n isUpcomingContent,\n isVideoTile: isTypeVideo,\n removeCookie,\n setCookie,\n setLocalStorage: setLocalStorageItem,\n setSessionStorage: setSessionStorageItem,\n ccpaOptOutEnabled,\n });\n };\n\n onSignUpSuccess = () => {\n this.setState({ showSignUp: false });\n this.resetAnonymous({ copyFavoritesToAccount: true });\n this.checkDeepLinkFavorite();\n };\n\n onWindowResize = _.debounce(() => {\n const windowWidth = _.get(window, 'innerWidth');\n const newBreakpoint = getSitePlatform(windowWidth);\n\n if (newBreakpoint === SITE_PLATFORM_MOBILE) return;\n\n const {\n breakpoint: currentBreakpoint,\n apiBreakpoint: currentApiBreakpoint,\n overlay,\n useSimplified,\n } = this.state;\n\n const newApiBreakpoint = !isStaticRender() ? newBreakpoint : currentApiBreakpoint;\n const vh = window.innerHeight * 0.01;\n document.documentElement.style.setProperty('--vh', `${vh}px`);\n\n const newState = {};\n if (newBreakpoint !== currentBreakpoint) {\n newState.breakpoint = newBreakpoint;\n let disableScroll = false;\n if (overlay) {\n disableScroll = OVERLAY_BREAKPOINTS[newBreakpoint].indexOf(overlay) >= 0;\n }\n if (useSimplified) {\n disableScroll = true;\n }\n this.setDisableScroll({ disableScroll });\n }\n if (newApiBreakpoint !== currentApiBreakpoint) {\n newState.apiBreakpoint = newBreakpoint;\n }\n if (newState.breakpoint || newState.apiBreakpoint) {\n this.setState(newState);\n }\n }, DEBOUNCE_TIME);\n\n getCurrentPage = () => {\n const { currentPage } = this.state;\n return currentPage;\n };\n\n getExternalHelpers() {\n const {\n authCheckComplete,\n authSuccess,\n blockReferrerAnalyticsTracking,\n favorites,\n favoritesDetails,\n renderMvpdAuthOverlay,\n } = this.state;\n\n const {\n account,\n anonymousAccount,\n anonymousId,\n authorizationToken: accessToken,\n deviceId,\n mvpd,\n preauthorizedResources,\n profile,\n recommendationId,\n routes,\n segmentDeviceId,\n } = this.props;\n const profileId = _.get(account, 'profileId') || _.get(anonymousAccount, 'profileId');\n const appView = isAppView(routes);\n const geoLocationBlocked = isGeoLocationBlocked(routes);\n const maintenance = isMaintenance(routes);\n let headers = helperGetApiHeaders({ accessToken, deviceId });\n\n const logout = async () => {\n this.setState({ loggingOut: true });\n removeAccountCookie();\n removeSegmentUserIdCookie();\n\n const route = helperGetApiAccountRoute('logout');\n\n if (headers && route && logoutClientless) {\n if (isBrowserIE()) {\n await logoutClientlessIE({ ...headers, route }).catch(e => {\n console.error(e);\n });\n } else {\n await logoutClientless({ profile }).catch(e => {\n console.error(e);\n });\n }\n\n const newAccessToken = await fetchAnonymousDataAfterLogout({\n anonymousLogin: this.anonymousLogin,\n deviceId,\n setMVPDToAppState: this.setMVPDToAppState,\n });\n this.setAuthorizationToken(newAccessToken);\n }\n };\n const login = helperLogin.bind(\n this,\n {\n route: helperGetApiAccountRoute('login'),\n headers,\n },\n profile,\n );\n const checkStatus = helperCheckStatus.bind(this.setState, profile);\n const register = isBrowserIE()\n ? registerIE.bind(this, {\n route: helperGetApiAccountRoute('emailRegister'),\n headers,\n })\n : helperRegister.bind(this, {\n profile,\n });\n const verifyAccount = helperVerify.bind(this, {\n route: helperGetApiAccountRoute('verify'),\n headers,\n });\n const noVerifyAccount = helperNoVerify.bind(this, {\n route: helperGetApiAccountRoute('noVerify'),\n headers,\n });\n const standardHelpers = {\n authCheckComplete,\n authSuccess,\n setProvider: this.setProvider,\n toggleAccountExpired: toggleAccountExpired.bind(this),\n socialFacebookRegister: register,\n socialFacebookLogin: login,\n register,\n login,\n logout,\n checkStatus,\n reset: isBrowserIE()\n ? resetIE.bind(this, {\n route: helperGetApiAccountRoute('reset'),\n headers,\n })\n : helperReset.bind(this, {\n profile,\n }),\n resetConfirm: resetConfirm.bind(this, {\n route: helperGetApiAccountRoute('resetConfirm'),\n headers,\n }),\n favoritesManager: {\n favorites: favorites || [],\n favoritesDetails: favoritesDetails || [],\n setFavorites: this.setFavorites,\n deleteFavorites: this.deleteFavorites,\n },\n openAccount: this.openAccount,\n resetAccountState: this.resetAccountState.bind(this),\n closeAccount: this.closeAccount,\n setOverlay: this.setOverlay,\n setAccountCloseIgnoreRedirect: this.setAccountCloseIgnoreRedirect,\n setVideoHero: () => {\n this.setState({ isVideoHero: true });\n },\n removeVideoHero: () => {\n this.setState({ isVideoHero: false });\n },\n onAuthCheckComplete: this.onAuthCheckComplete,\n openSignIn: this.openSignIn,\n openSignUp: this.openSignUp,\n openForgotPassword: this.openForgotPassword,\n renderAuthContainer: this.renderAuthContainer,\n renderMvpdAuthOverlay,\n setBlockMVPDIncomplete: this.setBlockMVPDIncomplete,\n setCoordinates: this.setCoordinates,\n setAuthorizationToken: this.setAuthorizationToken,\n setCurrentPage: this.setCurrentPage,\n getCurrentPage: this.getCurrentPage,\n setWatchPage: this.setWatchPage,\n setLivePage: this.setLivePage,\n setListPage: this.setListPage,\n setHomePage: this.setHomePage,\n setLoading: this.setLoading,\n setIsPlayerLoaded: this.setIsPlayerLoaded,\n setMVPDLogoutDataToAppState: this.setMVPDLogoutDataToAppState,\n setMVPDToAppState: this.setMVPDToAppState,\n setTriggerAuthCheck: this.setTriggerAuthCheck,\n toggleMvpdAuthOverlay: this.toggleMvpdAuthOverlay,\n pageViewEvent: this.pageViewEvent,\n setIsAuthenticated: this.setIsAuthenticated,\n appView,\n isAppViewExcluded,\n geoLocationBlocked,\n maintenance,\n getUseUtagGlobal: () => {\n const { useUtagGlobal } = this.state;\n if (useUtagGlobal) this.setState({ useUtagGlobal: false });\n return useUtagGlobal;\n },\n blockReferrerAnalyticsTracking,\n anonymousId,\n anonymousAccount,\n preauthorizedResources,\n accessToken,\n profileId,\n anonymousLogin: this.anonymousLogin,\n recommendationId,\n deviceId,\n mvpdData: mvpd,\n segmentDeviceId,\n verifyAccount,\n noVerifyAccount,\n };\n\n if (account && accessToken && profileId) {\n headers = helperGetApiHeaders({ accessToken, deviceId });\n const accountReq = {\n route: helperGetApiProfileIDRoute({ pathKey: 'account', profileId }),\n headers,\n };\n const previousPath = getPreviousPathname();\n\n return {\n ...standardHelpers,\n openAccount: this.openAccount,\n deleteAccount: deleteAccount.bind(this, accountReq),\n editAccount: isBrowserIE()\n ? editAccountIE.bind(this, accountReq)\n : editAccount.bind(this, { profile }),\n getAccount: getAccount.bind(this, accountReq),\n previousPath,\n };\n }\n return standardHelpers;\n }\n\n locationCallback = (error, coordinates) => {\n if (error) this.setCoordinates(null);\n if (coordinates) this.setCoordinates(coordinates);\n };\n\n setAccountCloseIgnoreRedirect = v => {\n this.setState({ accountCloseIgnoreRedirect: v });\n };\n\n setAuthorizationToken = authorizationToken => {\n const { authorizationToken: currentAuthorizationToken, setUserAuthData } = this.props;\n if (currentAuthorizationToken === authorizationToken) return;\n setUserAuthData({ authorizationToken });\n };\n\n setBlockMVPDIncomplete = v => this.setState({ blockMVPDIncomplete: v });\n\n setCoordinates = coordinates => {\n this.setState({ coordinates });\n };\n\n setCurrentPage = newCurrentPage => {\n const { currentPage } = this.state;\n if (currentPage === newCurrentPage) return;\n if (!isValidPage(newCurrentPage)) return;\n this.setState({ currentPage: newCurrentPage });\n };\n\n setDisableScroll({ disableScroll, overlay, cb }) {\n const { breakpoint } = this.state;\n const { breakpointDisableScroll } = breakpoints[breakpoint];\n if (disableScroll && breakpointDisableScroll) {\n scrollEvents.scrollEvent.register('end', () => {\n this.disableScrollByClass({ disableScroll, overlay, cb, breakpointDisableScroll });\n scrollEvents.scrollEvent.remove('end');\n });\n animateScroll.scrollTo(-1, { duration: 125, smooth: true });\n } else {\n this.disableScrollByClass({ disableScroll, overlay, cb, breakpointDisableScroll });\n }\n }\n\n setHeaderPin = value => {\n const { isHeaderPinned } = this.state;\n if (isHeaderPinned !== value) {\n this.setState({ isHeaderPinned: value });\n }\n };\n\n setHomePage = newIsHomePage => {\n const { isHomePage } = this.state;\n if (isHomePage === newIsHomePage) return;\n this.setState({ isHomePage: newIsHomePage });\n };\n\n setIsAuthenticated = value => {\n const { setUserAuthData } = this.props;\n setUserAuthData({ isAuthenticated: value });\n };\n\n setIsPlayerLoaded = newIsPlayerLoaded => {\n const { isPlayerLoaded, isWatchPage } = this.state;\n if (isPlayerLoaded === newIsPlayerLoaded) return;\n const newState = { isPlayerLoaded: newIsPlayerLoaded };\n if (newIsPlayerLoaded && isWatchPage) {\n newState.vodPlayerWasLoaded = true;\n }\n this.setState(newState);\n };\n\n setListPage = newIsListPage => {\n const { isListPage } = this.state;\n if (isListPage === newIsListPage) return;\n this.setState({ isListPage: newIsListPage });\n };\n\n setLivePage = newIsLivePage => {\n const { isLivePage } = this.state;\n if (isLivePage === newIsLivePage) return;\n this.setState({ isLivePage: newIsLivePage });\n };\n\n setLoading = newIsPageLoading => {\n this.setState({ isPageLoading: newIsPageLoading });\n };\n\n setMVPDLogoutDataToAppState = mvpdLogoutData => {\n const { setUserAuthData } = this.props;\n setUserAuthData({ mvpdLogoutData });\n };\n\n setMVPDToAppState = mvpd => {\n const { setUserAuthData } = this.props;\n setUserAuthData({ mvpd });\n };\n\n setNavScheduleRendered = newIsNavScheduleRendered => {\n const { isNavScheduleRendered } = this.state;\n if (isNavScheduleRendered === newIsNavScheduleRendered) return;\n this.setState({ isNavScheduleRendered: newIsNavScheduleRendered });\n };\n\n setOverlay = (chosenOverlay, chosenValue, cb) => {\n const { breakpoint, overlay } = this.state;\n let toggleValue = chosenValue;\n let disableScroll = false;\n let sentOverlay = chosenOverlay;\n if (!_.isBoolean(toggleValue)) {\n toggleValue = chosenOverlay !== overlay;\n }\n if (chosenOverlay && chosenOverlay !== overlay && chosenValue === false) return;\n if (toggleValue) {\n disableScroll = OVERLAY_BREAKPOINTS[breakpoint].indexOf(chosenOverlay) >= 0;\n } else if (overlay === chosenOverlay) {\n sentOverlay = null;\n } else if (!chosenOverlay && !chosenValue) {\n sentOverlay = null;\n }\n this.setDisableScroll({ disableScroll, overlay: sentOverlay, cb });\n };\n\n setProvider = provider => {\n const { account, mvpdProviders } = this.props;\n const findProviderAndSet = (providerId, providers) => {\n const providerObject = findProvider(providers, account, providerId);\n return this.setState({ provider: providerObject });\n };\n\n const providerFetched = getProviderObjectFromList(mvpdProviders, provider);\n if (!mvpdProviders || !providerFetched) {\n const checkForProviders = setInterval(() => {\n const { mvpdProviders: newProviders } = this.props;\n if (!newProviders) return null;\n clearInterval(checkForProviders);\n return findProviderAndSet(provider, newProviders);\n }, 1000);\n } else {\n findProviderAndSet(provider, mvpdProviders);\n }\n return null;\n };\n\n setPreauthRefreshComplete = value => {\n this.setState({ preauthRefreshComplete: value });\n };\n\n setSmartBannerEnabled = isSmartBannerEnabled => {\n const { state } = this;\n if (state.isSmartBannerEnabled === isSmartBannerEnabled) return;\n this.setState({ isSmartBannerEnabled });\n };\n\n setWatchPage = newIsWatchPage => {\n const { isWatchPage } = this.state;\n if (isWatchPage === newIsWatchPage) return;\n this.setState({ isWatchPage: newIsWatchPage });\n };\n\n anonymousLogin = ({ deviceId }) => {\n const { authorizationToken, deviceId: currentDeviceId, setUserAuthData, profile } = this.props;\n return handleAnonymousLogin({\n authorizationToken,\n deviceId: deviceId || currentDeviceId,\n setUserAuthData,\n profile,\n });\n };\n\n closeAccount = ({ goHome, ignoreRedirect, savedPath } = {}) => {\n const account = getAccountCookie();\n const { setUserAuthData } = this.props;\n setUserAuthData({ account });\n this.setOverlay(OVERLAY_ACCOUNT, false);\n if (ignoreRedirect) return;\n\n const homePath = helperGetHomeUrl();\n const previousPath = getPreviousPathname();\n let nextPath = goHome ? homePath : previousPath || homePath;\n nextPath = savedPath || nextPath;\n if (savedPath) setSettingsPath('');\n browserHistory.push(nextPath);\n };\n\n pageViewEvent = (opts = {}) => {\n const {\n collection,\n footerType,\n pageName,\n pageTitle,\n pageType,\n panelExperimentData,\n selectedMenuItem,\n seriesType,\n useUtagGlobal,\n cb,\n } = opts;\n const { favorites, provider } = this.state;\n const { account, preauthorizedResources: networkEntitlementList } = this.props;\n const pageViewEvents = async () => {\n if (!isStaticRender())\n await callTealiumPageView({\n account,\n collection,\n domain: getDomain(),\n favorites,\n footerType,\n networkEntitlementList,\n pageName,\n pageTitle,\n pageType,\n panelExperimentData,\n provider,\n selectedMenuItem,\n seriesType,\n useUtagGlobal,\n cb,\n });\n };\n pageViewEvents();\n };\n\n showAccount = () => {\n const { overlay } = this.state;\n return overlay === OVERLAY_ACCOUNT;\n };\n\n toggleMvpdAuthOverlay = (value = true, options = {}, blockSuccessScreen = true) => {\n this.setState({\n mvpdAuthOverlayProps: options,\n renderMvpdAuthOverlay: value,\n blockSuccessScreen,\n });\n };\n\n disableScrollByClass({\n disableScroll,\n overlay,\n cb,\n breakpointDisableScroll,\n bodyOnly,\n fixedPosition,\n }) {\n if (disableScroll) {\n addBodyClass(['noScroll', 'bodyNoScroll']);\n if (!bodyOnly) addHTMLClass(['noScroll']);\n if (fixedPosition) addHTMLClass(['fixedPosition']);\n } else {\n removeBodyClass(['noScroll', 'bodyNoScroll']);\n if (!bodyOnly) removeHTMLClass(['noScroll']);\n if (!fixedPosition) removeHTMLClass(['fixedPosition']);\n }\n\n if (!_.isUndefined(overlay)) {\n const { overlayPausedPlayer } = this.state;\n const newState = { overlay };\n const pausePlayer = shouldPausePlayer({ overlay, breakpointDisableScroll });\n const hasPlayer = !_.isEmpty(window.player);\n const shouldTogglePlayer = hasPlayer && pausePlayer;\n\n if (shouldTogglePlayer) {\n const activePlayer = getActivePlayer();\n if (overlay && activePlayer) {\n newState.overlayPausedPlayer = activePlayer;\n playerPause(activePlayer);\n } else if (!overlay && overlayPausedPlayer) {\n newState.overlayPausedPlayer = null;\n playerPlay(overlayPausedPlayer);\n }\n }\n this.setState(newState, () => {\n if (_.isFunction(cb)) cb();\n });\n }\n }\n\n resetAccountState() {\n this.setState({\n showForgotPasswordLanding: false,\n showSignIn: false,\n showSignUp: false,\n });\n }\n\n renderAuthContainer = additionalAuthProps => {\n const {\n account,\n anonymousAccount,\n anonymousId,\n authorizationToken,\n deviceId,\n preauthorizedResources,\n } = this.props;\n const {\n blackoutDefinitions,\n blockMVPDIncomplete,\n blockSuccessScreen,\n breakpoint,\n provider,\n mvpdSignInTrigger,\n } = this.state;\n\n const useMVPDLoginProfile = !getStoredAuthenticatedMVPD() && optimizelyUseMVPDLoginProfile();\n\n const authProps = {\n account,\n accessToken: authorizationToken,\n anonymousAccount,\n anonymousId,\n anonymousLogin: this.anonymousLogin,\n blackoutConfig: getBlackoutConfig(),\n blackoutDefinitions,\n blockMVPDIncomplete,\n blockSuccessScreen,\n closeAccount: this.closeAccount.bind(this),\n 'data-test': 'auth-container',\n deviceId,\n isMobile: isMobileBreakpoint(breakpoint),\n isTablet: isTabletBreakpoint(breakpoint),\n mvpdLoginProfile: useMVPDLoginProfile,\n onAuthCheckComplete: this.onAuthCheckComplete,\n openSignIn: this.openSignIn,\n openSignUp: this.openSignUp,\n preauthorizedResources,\n pageViewEvent: this.pageViewEvent,\n profileToken: authorizationToken,\n provider,\n mvpdSignInTrigger,\n requiresAuth: true,\n setAccountCloseIgnoreRedirect: this.setAccountCloseIgnoreRedirect,\n setAuthorizationToken: this.setAuthorizationToken,\n setIsAuthenticated: this.setIsAuthenticated,\n setMVPDSignInTrigger: this.setMVPDSignInTrigger,\n setMVPDToAppState: this.setMVPDToAppState,\n setMVPDLogoutDataToAppState: this.setMVPDLogoutDataToAppState,\n setOverlay: this.setOverlay,\n setProvider: this.setProvider,\n ...additionalAuthProps,\n };\n return <AuthContainer {...authProps} />;\n };\n\n renderDefaultHelmetTags = () => {\n const { headerTags } = NetworkConfig;\n const data = {\n ...headerTags,\n viewport: 'width=device-width, initial-scale=1',\n ogType: 'website',\n tags: [\n <meta key=\"content-type\" httpEquiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />,\n ],\n };\n return setHelmetTags(data);\n };\n\n renderGlobalVideoPlayer() {\n const {\n adblock,\n authCheckComplete,\n authSuccess,\n blackoutDefinitions,\n breakpoint,\n coordinates,\n isEpgLiveMiniPlayerEnabled,\n isHomePage,\n isLivePage,\n isPlayerLoaded,\n openSignIn,\n openSignUp,\n provider,\n triggerAuthCheck,\n } = this.state;\n const {\n account,\n anonymousId,\n anonymousAccount,\n authorizationToken,\n deviceId,\n location,\n params,\n } = this.props;\n\n const profileId = _.get(account, 'profileId') || _.get(anonymousAccount, 'profileId');\n const props = {\n ...this.getExternalHelpers(),\n accessToken: authorizationToken,\n account,\n adblock,\n anonymousId,\n anonymousLogin: this.anonymousLogin,\n appRef: this.appRef,\n authCheckComplete,\n authSuccess,\n blackoutConfig: getBlackoutConfig(),\n blackoutDefinitions,\n breakpoint,\n coordinates,\n 'data-test': 'home-video-global',\n deviceId,\n isEpgLiveMiniPlayerEnabled,\n isHomePage,\n isLivePage,\n isPlayerLoaded,\n key: 'home-video-global',\n location,\n openSignIn,\n openSignUp,\n params,\n profileId,\n provider,\n renderAuthContainer: this.renderAuthContainer,\n setAccountCloseIgnoreRedirect: this.setAccountCloseIgnoreRedirect,\n setAuthorizationToken: this.setAuthorizationToken,\n setIsAuthenticated: this.setIsAuthenticated,\n setIsPlayerLoaded: this.setIsPlayerLoaded,\n setMVPDLogoutDataToAppState: this.setMVPDLogoutDataToAppState,\n setMVPDSignInTrigger: this.setMVPDSignInTrigger,\n setMVPDToAppState: this.setMVPDToAppState,\n setOverlay: this.setOverlay,\n setProvider: this.setProvider,\n triggerAuthCheck,\n };\n\n return <VideoPlayerGlobal {...props} />;\n }\n\n onSimplifiedSignUpClick = () => {\n this.setState({ useSimplified: true });\n addBodyClass(['noScroll']);\n };\n\n wrapLoaderOverlay = children => {\n const { renderLoader } = this.state;\n return (\n <div className={classNames(renderLoader && AppStyleModule.loaderWrap)}>\n <img\n className={AppStyleModule.loaderImg}\n src=\"/static/images/loader.png\"\n alt=\"Loading...\"\n />\n <div className={classNames(renderLoader && AppStyleModule.hiddenContent)}>{children}</div>\n </div>\n );\n };\n\n render() {\n const {\n account,\n anonymousAccount,\n anonymousId,\n authorizationToken,\n buythroughScenario,\n children,\n fetchMVPDProviders,\n isAuthenticated,\n location,\n mvpdProviders,\n params,\n preauthorizedResources,\n setPreauthorizedResources,\n topMVPDProviders,\n } = this.props;\n const {\n accountCloseIgnoreRedirect,\n accountExpired,\n adblock,\n apiBreakpoint,\n blackoutDefinitions,\n breakpoint,\n campaignOverrides,\n coordinates,\n isHeader,\n isHeaderPinned,\n isHomePage,\n isListPage,\n isLivePage,\n isNavScheduleRendered,\n isPageLoading,\n isPlayerLoaded,\n isVideoHero,\n isWatchPage,\n isSmartBannerEnabled,\n mvpdAuthOverlayProps,\n network,\n overlay,\n preauthRefreshComplete,\n provider,\n selectedNetwork,\n showForgotPasswordLanding,\n renderMvpdAuthOverlay,\n mvpdSignInTrigger,\n showSignIn,\n showSignUp,\n utagAccountSource,\n firstIdentifyCall,\n firstCollectionImpression,\n upcomingOverlayOpen: isUpcomingOverlayOpen,\n stickyBanner,\n useSimplified,\n } = this.state;\n const {\n facebook_loginOptionalText: fbOptionalLoginText,\n facebook_loginText: fbLoginText,\n facebook_signupOptionalText: fbSignUpOptionalText,\n facebook_signupText: fbSignupText,\n } = window.Language;\n const perks = helperGetPerks();\n const { overlay: initialAccountScreen } = params;\n const externalHelpers = this.getExternalHelpers();\n const blackoutConfig = getBlackoutConfig();\n const analyticsLoaded = !!_.get(window, 'analytics.init');\n const getChildrenWithProps = () =>\n React.Children.map(children, child =>\n React.cloneElement(child, {\n ...externalHelpers,\n account,\n accountExpired,\n adblock,\n analyticsLoaded,\n apiBreakpoint,\n authorizationToken,\n blackoutConfig,\n blackoutDefinitions,\n breakpoint,\n campaignOverrides,\n collectionImpressionCalled: this.collectionImpressionCalled,\n coordinates,\n disableScroll: this.disableScrollByClass,\n fetchMVPDProviders,\n firstCollectionImpression,\n firstIdentifyCall,\n isAuthenticated,\n isHeader,\n isHeaderPinned,\n isNavScheduleRendered,\n isPlayerLoaded,\n isUpcomingOverlayOpen,\n mvpdProviders,\n mvpdSignInTrigger,\n overlay,\n params,\n provider,\n setPreauthorizedResources,\n showAccount: this.showAccount,\n topMVPDProviders,\n upcomingOverlayOpen: this.upcomingOverlayOpen,\n }),\n );\n const { autoFocus, mainBackground } = breakpoints[breakpoint];\n const profileId = _.get(account, 'profileId');\n const { foxProfileState } = userAttributeEvents();\n const accountAnalytics = getAccountAnalyticsEvents({ foxProfileState, profileId });\n const anonymousProfileId = _.get(anonymousAccount, 'profileId');\n const accountEmail = _.get(account, 'email');\n const networks = [];\n const mvpd = _.get(provider, 'nameLowercase');\n const entitlements = _.isEmpty(preauthorizedResources)\n ? ''\n : preauthorizedResources.sort(sortEntitlements).join(',');\n const headerPadding = [style.defaultPadding];\n const privacyPolicyClickEvent = {\n 'Privacy Policy': () => handleAnalytics({ event: Events.PRIVACY_POLICY_PAGE_VIEW }),\n };\n const homePath = helperGetHomeUrl();\n const currentPath = _.get(this.props, 'location.pathname');\n const isHome = homePath === currentPath;\n const isArticle = toBoolean(_.get(params, 'articleId', false));\n let background = isVideoHero && mainBackground ? null : mainBackground;\n const onSignupClick = () => {};\n const onLoginClick = () => {};\n\n if (isNavScheduleRendered) headerPadding.push(style.navPadding);\n if (!background && isVideoHero) background = style.blackBackground;\n _.each(network, name => networks.push({ name, logo: getNetworkLogoUrl(name, 50) }));\n const appStyle = classNames([\n style.app,\n getFontClassName(style),\n 'ft-theme-provider',\n isStaticRender() && 'staticRender',\n AppStyleModule.appContainer,\n AppStyleModule.headerPadding,\n AppStyleModule.withNetworks,\n ]);\n const optimizelyProfileProps = {\n useMVPDLoginProfile: !isAuthenticated && optimizelyUseMVPDLoginProfile(),\n optimizelyLanguageStrings,\n toggleMvpdAuthOverlay: () => {\n const options = {\n onOverlayClose: () => {\n this.toggleMvpdAuthOverlay(false, {});\n this.closeAccount();\n },\n };\n this.toggleMvpdAuthOverlay(true, options, false);\n },\n };\n const showFooterUpsell = false && isHome && FooterUpsellEnabled;\n const isLivePageAndEpgV2Enabled = isLivePage && isEpgv2Enabled();\n const isSeriesDetailPage = !_.isEmpty(params.showId);\n\n if (isWatchPage) this.setDisableScroll({ disableScroll: false });\n\n const mainStyle = classNames([\n style.main,\n background,\n 'ft-header-content',\n (isWatchPage || isArticle) && style.gradientBackground,\n isSeriesDetailPage && AppStyleModule.overflowHidden,\n ]);\n const appWrapperStyle = classNames([]);\n\n const rootId = isStaticRender() ? 'app-static' : 'app-root';\n\n const components = (\n <div\n ref={this.appRef}\n className={(isLivePageAndEpgV2Enabled && AppStyleModule.livePageOverflowWrap) || null}\n id=\"live-page-overflow\"\n >\n <div className={appStyle} id={rootId}>\n <div className={classNames(headerPadding)} />\n {this.renderDefaultHelmetTags()}\n {getFontHelmetTag()}\n <WindowResizeListener DEBOUNCE_TIME={DEBOUNCE_TIME} onResize={this.onWindowResize} />\n <Segment\n anonymousAccount={anonymousAccount}\n account={account}\n anonymousId={anonymousId}\n entitlements={entitlements}\n firstIdentifyCall={firstIdentifyCall}\n firstSegmentIdentifyCalled={this.firstSegmentIdentifyCalled}\n loggedInAccountEmail={accountEmail}\n loggedInAccountProfileId={profileId}\n loggedInAnonymousProfileId={anonymousProfileId}\n mvpd={mvpd}\n preauthorizedResources={preauthorizedResources}\n />\n {renderMvpdAuthOverlay && this.renderAuthContainer(mvpdAuthOverlayProps)}\n <Account\n account={account}\n accountEmail={accountEmail}\n accountExpired={accountExpired}\n anonymousAccount={anonymousAccount}\n apiBreakpoint={apiBreakpoint}\n autoFocus={autoFocus}\n backgroundClass=\"withBackground\"\n breakpoint={breakpoint}\n closeAccount={this.closeAccount}\n editAccountCb={data => {\n const { account: currentAccount, setUserAuthData } = this.props;\n const newAccount = { ...currentAccount, ...data };\n if (!data) return null;\n setAccountCookie(newAccount);\n return setUserAuthData({ account: newAccount });\n }}\n facebookLoginOptionalText={fbOptionalLoginText}\n facebookLoginText={fbLoginText}\n facebookSignupOptionalText={fbSignUpOptionalText}\n facebookSignupText={fbSignupText}\n isMobile={isMobileBreakpoint(breakpoint)}\n isTablet={isTabletBreakpoint(breakpoint)}\n initialScreen={initialAccountScreen}\n ignoreOnCloseRedirect={accountCloseIgnoreRedirect}\n key=\"account\"\n language={window.Language}\n loader={<Loader buttonLoader />}\n mvpdCookieName={mvpdCookieName}\n network={networks}\n onSignupClick={onSignupClick}\n onLoginClick={onLoginClick}\n pageViewEvent={this.pageViewEvent}\n params={params}\n perks={perks}\n privacyPolicyClickEvent={privacyPolicyClickEvent}\n renderFavorites={renderFavorites}\n renderNetworkLink={clickEvent => (\n <NetworkLink\n preauthorizedResources={preauthorizedResources}\n clickEvent={clickEvent}\n disableLink\n />\n )}\n renderPerkImage={image =>\n renderImage({\n breakpoint,\n imageType: PERK_ICON_IMAGE,\n ...image,\n })\n }\n selectedNetwork={selectedNetwork}\n setAccountCloseIgnoreRedirect={this.setAccountCloseIgnoreRedirect}\n setLoading={this.setLoading}\n showAccount={this.showAccount()}\n showForgotPasswordLanding={showForgotPasswordLanding}\n showSignIn={showSignIn}\n showSignUp={showSignUp}\n signInSuccess={() => {\n this.checkDeepLinkFavorite();\n this.resetAnonymous();\n }}\n signupSuccess={this.onSignUpSuccess}\n utagAccountSource={utagAccountSource}\n {...accountAnalytics}\n {...externalHelpers}\n {...optimizelyProfileProps}\n />\n <Header\n account={account}\n accessToken={authorizationToken}\n apiBreakpoint={apiBreakpoint}\n breakpoint={breakpoint}\n buythroughScenario={buythroughScenario}\n campaignOverrides={campaignOverrides}\n coordinates={coordinates}\n isAuthenticated={isAuthenticated}\n isHeader={isHeader}\n isHeaderPinned={isHeaderPinned}\n isHomePage={isHomePage}\n isListPage={isListPage}\n isLivePage={isLivePage}\n isNavScheduleRendered={isNavScheduleRendered}\n isPlayerLoaded={isPlayerLoaded}\n isSeriesDetailPage={isSeriesDetailPage}\n isVideoPage={isWatchPage || isLivePage}\n isWatchPage={isWatchPage}\n isSmartBannerEnabled={isSmartBannerEnabled}\n key=\"header\"\n location={location}\n mvpdProviders={mvpdProviders}\n onSimplifiedSignUpClick={this.onSimplifiedSignUpClick}\n overlay={overlay}\n params={params}\n preauthRefreshComplete={preauthRefreshComplete}\n provider={provider}\n setMVPDSignInTrigger={this.setMVPDSignInTrigger}\n setCoordinates={this.setCoordinates}\n setAuthorizationToken={this.setAuthorizationToken}\n setHeaderPin={this.setHeaderPin}\n setNavScheduleRendered={this.setNavScheduleRendered}\n setMVPDLogoutDataToAppState={this.setMVPDLogoutDataToAppState}\n setPreauthRefreshComplete={this.setPreauthRefreshComplete}\n setProvider={this.setProvider}\n setSmartBannerEnabled={this.setSmartBannerEnabled}\n showAppDownloadPrompt={appDownloadPromptEnabled()}\n firstCollectionImpression={firstCollectionImpression}\n collectionImpressionCalled={this.collectionImpressionCalled}\n upcomingOverlayOpen={this.upcomingOverlayOpen}\n useSimplified={useSimplified}\n {...externalHelpers}\n />\n <div className={appWrapperStyle}>\n {this.renderGlobalVideoPlayer()}\n <main role=\"main\" className={mainStyle}>\n {getChildrenWithProps()}\n </main>\n </div>\n {!isPageLoading && showFooterUpsell && (\n <FooterUpsell\n accessToken={authorizationToken}\n breakpoint={breakpoint}\n isPageLoading={isPageLoading}\n {...externalHelpers}\n />\n )}\n <Footer\n showFooterUpsell={showFooterUpsell}\n accessToken={authorizationToken}\n breakpoint={breakpoint}\n apiBreakpoint={apiBreakpoint}\n mvpdProviders={mvpdProviders}\n isPageLoading={isPageLoading}\n {...externalHelpers}\n />\n <StickyBanner data={stickyBanner} />\n <BlackoutDefinitionFetcher onComponentUpdate={this.onBlackoutDefinitionFetcherUpdate} />\n <CanIAutoplay />\n </div>\n </div>\n );\n\n return wrapComponentsWithThemeProvider(components);\n }\n}\n\nApp.defaultProps = {\n account: null,\n anonymousAccount: null,\n anonymousId: null,\n authorizationToken: null,\n buythroughScenario: null,\n children: null,\n deviceId: null,\n fetchMVPDProviders: noop,\n isAuthenticated: false,\n mvpd: null,\n mvpdLogoutData: null,\n mvpdProviders: null,\n params: {},\n preauthorizedResources: [],\n profile: null,\n recommendationId: null,\n routes: [],\n segmentDeviceId: null,\n seriesData: null,\n stickyBanner: null,\n topMVPDProviders: [],\n videoPanel: null,\n};\n\nApp.propTypes = {\n account: PropTypes.shape({}),\n anonymousAccount: PropTypes.shape({}),\n anonymousId: PropTypes.string,\n authorizationToken: PropTypes.string,\n buythroughScenario: PropTypes.string,\n children: PropTypes.node,\n deviceId: PropTypes.string,\n fetchMVPDProviders: PropTypes.func,\n fetchPCS: PropTypes.func.isRequired,\n isAuthenticated: PropTypes.bool,\n location: PropTypes.shape({}).isRequired,\n mvpd: PropTypes.shape({}),\n mvpdLogoutData: PropTypes.shape({}),\n mvpdProviders: PropTypes.arrayOf(PropTypes.shape({})),\n params: PropTypes.shape({}),\n preauthorizedResources: PropTypes.arrayOf(PropTypes.string),\n profile: PropTypes.shape({}),\n profileConfig: PropTypes.shape({}),\n recommendationId: PropTypes.string,\n routes: PropTypes.arrayOf(PropTypes.shape({})),\n segmentDeviceId: PropTypes.string,\n seriesData: PropTypes.shape({}),\n setIsGoogleSignedInBrowser: PropTypes.func,\n setGoogleOneTap: PropTypes.func,\n setIsGoogleOneTapDisplayed: PropTypes.func,\n setPreauthorizedResources: PropTypes.func.isRequired,\n setUserAuthData: PropTypes.func.isRequired,\n setUserProfileConfig: PropTypes.func.isRequired,\n stickyBanner: PropTypes.shape({}),\n topMVPDProviders: PropTypes.arrayOf(PropTypes.shape({})),\n videoPanel: PropTypes.shape({}),\n};\n\nconst mapStateToProps = state => {\n const {\n account,\n anonymousAccount,\n anonymousId,\n authorizationToken,\n buythroughScenario,\n deviceId,\n googleSignIn,\n isAuthenticated,\n mvpd,\n mvpdLogoutData,\n mvpdProviders,\n preauthorizedResources,\n profile,\n profileConfig,\n recommendationId,\n segmentDeviceId,\n topMVPDProviders,\n } = state.app;\n const stickyBanner = getStickBannerData(state);\n const seriesData = makeSelectSeriesDetailSeriesData(state);\n const videoPanel = makeSelectGlobalVideoPanelVideo(state);\n return {\n account,\n anonymousAccount,\n anonymousId,\n authorizationToken,\n buythroughScenario,\n deviceId,\n googleSignIn,\n isAuthenticated,\n mvpd,\n mvpdLogoutData,\n mvpdProviders,\n preauthorizedResources,\n profile,\n profileConfig,\n recommendationId,\n segmentDeviceId,\n seriesData,\n stickyBanner,\n topMVPDProviders,\n videoPanel,\n };\n};\n\nconst mapDispatchToProps = {\n fetchMVPDProviders: fetchMVPDProvidersAction,\n fetchPCS,\n setGoogleOneTap,\n setIsGoogleSignIn,\n setIsGoogleOneTapDisplayed,\n setNewGoogleEmailAndToken,\n setIsGoogleSignedInBrowser,\n setPreauthorizedResources: setPreauthorizedResourcesAction,\n setRecommendationId: setRecommendationIdAction,\n setUserAuthData,\n setUserProfileConfig,\n};\nconst WrappedApp = withErrorBoundary(App);\nWrappedApp.fetchData = ({ store, accessToken }) => Footer.fetchData({ store, accessToken });\n\nexport default connect(mapStateToProps, mapDispatchToProps)(WrappedApp);\n","/* global Version, DataDogService */\n\nimport { datadogRum } from '@datadog/browser-rum';\nimport { isStaticRender } from './ContentHelper';\n\nexport default function initializeDataDog() {\n const { dataDog: dataDogConfig } = window.ExternalConfig;\n if (!isStaticRender() && DataDogService && dataDogConfig) {\n const { applicationId, clientToken, env, site } = dataDogConfig;\n datadogRum.init({\n applicationId,\n clientToken,\n site,\n service: DataDogService,\n env,\n version: Version,\n sampleRate: 100,\n trackInteractions: true,\n defaultPrivacyLevel: 'mask-user-input',\n });\n datadogRum.setGlobalContext({\n business_unit: 'foxnow',\n application: 'web',\n owner: 'fox-now-web',\n });\n datadogRum.startSessionReplayRecording();\n }\n}\n","import App from 'index/App';\n\nexport default App;\n","/* global SearchEnabled, ProfileEnabled, SingleMvpd, DebugPanelEnabled,\n EpgEnabled, RetiredShowsEnabled, CCPAEnabled */\n\nimport React from 'react';\nimport { Route, Redirect, IndexRoute } from 'react-router';\nimport App from 'app'; // eslint-disable-line\nimport { removeCookie, getCookie } from 'helpers/Storage';\nimport { mvpdDeeplinkEnabled } from 'helpers/ConfigHelper';\nimport { CCPA_VERIFY_COOKIE_NAME } from 'helpers/ContentHelper';\nimport { toBoolean } from 'helpers/GlobalHelper';\nimport { userAttributeEvents as optimizelyUserAttributeEvents } from 'helpers/OptimizelyHelper';\nimport { onRouteChange, helperGetBaseUrlSlug } from 'helpers/RouteHelper';\nimport { getDesignV2Routes, rootScreenUrl } from './routes.helper';\n\nconst keyGenerator = () => {\n let counter = 0;\n return () => {\n counter += 1;\n return `route-key-${counter}`;\n };\n};\nconst routeKeyGen = keyGenerator();\n\nconst onHomeLoad = () => optimizelyUserAttributeEvents().home();\nconst onLiveLoad = () => {\n optimizelyUserAttributeEvents().live();\n};\n\nconst onAccountLoad = () => {\n optimizelyUserAttributeEvents().settings();\n};\n// new relic script is not loaded in on ccpa/verify page. reload\n// app when leaving this page so that new relic gets loaded in.\nconst onCCPAVerifyLeave = param => {\n const cookie = getCookie({ name: CCPA_VERIFY_COOKIE_NAME });\n const hasCookie = cookie !== undefined;\n if (hasCookie) {\n if (toBoolean(cookie)) {\n removeCookie({ key: CCPA_VERIFY_COOKIE_NAME });\n window.location.reload();\n }\n } else {\n const verifyPathname = param.location.pathname.replace(/\\/$/, '');\n window.history.pushState({}, '', `${verifyPathname}${param.location.search}`);\n }\n};\nconst baseUrlSlug = helperGetBaseUrlSlug();\nconst appViewRoute = `${baseUrlSlug}/app-view`;\nconst appRoute = baseUrlSlug || '/';\nlet baseUrlSlugRedirect = null;\nif (baseUrlSlug.length > 0) {\n const redirectRoute = `${baseUrlSlug}/`;\n baseUrlSlugRedirect = <Redirect from=\"/\" to={redirectRoute} />;\n}\n\nexport default (screens = {}) => {\n const {\n AccountScreen,\n ArticleDetailScreen,\n CollectionScreen,\n ContentDetailScreen,\n DebugScreen,\n Error500Screen,\n Error404Screen,\n LatestEpisodeScreen,\n LiveScreen,\n LoadingScreen,\n MVPDScreen,\n ResetPasswordScreen,\n SearchScreen,\n ShowsScreen,\n SignInScreen,\n SiteMapScreen,\n SubscriptionScreen,\n WatchScreen,\n } = screens;\n\n const searchRoute = SearchEnabled && (\n <Route\n key={routeKeyGen()}\n path=\"find(/:findCollectionId)(/filter/:findFilterId)\"\n component={SearchScreen}\n />\n );\n const accountRoute = ProfileEnabled && (\n <Route\n key={routeKeyGen()}\n path=\"account(/:overlay)\"\n component={AccountScreen}\n onEnter={onAccountLoad}\n />\n );\n const verifyRoute = CCPAEnabled && (\n <Route\n key={routeKeyGen()}\n path=\"/ccpa/verify\"\n component={AccountScreen}\n onEnter={onAccountLoad}\n onLeave={onCCPAVerifyLeave}\n />\n );\n const singleProviderSignInRoute = SingleMvpd && (\n <Route key={routeKeyGen()} path=\"/sign-in\" component={SignInScreen} />\n );\n const debugRoute = DebugPanelEnabled && [\n <Route key={routeKeyGen()} path=\"debug\" component={DebugScreen} />,\n <Route key={routeKeyGen()} path=\"debug/:panelId\" component={DebugScreen} />,\n ];\n\n const defaultRoutes = [];\n let mvpdRoute;\n const RootScreen = CollectionScreen;\n const livePath = EpgEnabled ? 'live(/nav)(/schedule)(/channel/:callSign)' : 'live/:videoId';\n const liveRoute = (\n <Route key={routeKeyGen()} path={livePath} component={LiveScreen} onEnter={onLiveLoad} />\n );\n\n const designV2Routes = getDesignV2Routes();\n if (!EpgEnabled) designV2Routes.push(liveRoute);\n\n if (mvpdDeeplinkEnabled()) {\n mvpdRoute = <Route key={routeKeyGen()} path=\"tv-provider\" component={MVPDScreen} />;\n }\n\n const retiredShowsRoute = RetiredShowsEnabled ? (\n <Route key={routeKeyGen()} path=\"/flashback\" isRetiredShowsPage component={ShowsScreen} />\n ) : null;\n\n return (\n <Route key={routeKeyGen()} onChange={onRouteChange}>\n <Redirect from=\"/http://dev.fox-com.dws.la/*\" to=\"/*\" />\n <Redirect from=\"/http://qa.fox-com.dws.la/*\" to=\"/*\" />\n {baseUrlSlugRedirect}\n <Route key={routeKeyGen()} path={appViewRoute} appView component={App}>\n <IndexRoute component={RootScreen} onEnter={onHomeLoad} />\n <Route\n key={routeKeyGen()}\n name=\"reset-password\"\n path=\"reset-password/:resetCode\"\n component={ResetPasswordScreen}\n />\n <Route key={routeKeyGen()} path=\"article/:articleId\" component={ArticleDetailScreen} />\n </Route>\n <Route key={routeKeyGen()} path={appRoute} component={App}>\n <IndexRoute component={RootScreen} onEnter={onHomeLoad} screenUrl={rootScreenUrl} />\n {designV2Routes}\n <Route\n key={routeKeyGen()}\n name=\"reset-password\"\n appView\n path=\"reset-password/:resetCode\"\n component={ResetPasswordScreen}\n />\n <Route\n key={routeKeyGen()}\n path=\"reset-password/fox-soul/:resetCode\"\n component={ResetPasswordScreen}\n />\n <Route key={routeKeyGen()} path=\"sitemap\" component={SiteMapScreen} />\n <Route\n key={routeKeyGen()}\n path=\"collection/:collectionId\"\n component={RootScreen}\n onEnter={onHomeLoad}\n screenUrl={rootScreenUrl}\n />\n {mvpdRoute}\n {searchRoute}\n {accountRoute}\n {verifyRoute}\n {singleProviderSignInRoute}\n {defaultRoutes}\n <Route\n key={routeKeyGen()}\n path=\"profile-details(/:network)\"\n component={RootScreen}\n screenUrl={rootScreenUrl}\n />\n <Route\n key={routeKeyGen()}\n path=\"forgot-password(/:network)\"\n component={RootScreen}\n isForgotPassword\n screenUrl={rootScreenUrl}\n />\n <Route key={routeKeyGen()} path=\"watch/:videoId(/mode/:modeId)\" component={WatchScreen} />\n <Route\n key={routeKeyGen()}\n path=\"full-episodes/latest/:showId\"\n component={LatestEpisodeScreen}\n />\n {retiredShowsRoute}\n // TODO remove maskverse route in the future to be a subscription based route\n <Route key={routeKeyGen()} path=\"maskverse\" component={SubscriptionScreen} />\n <Route key={routeKeyGen()} path=\"article/:articleId\" component={ArticleDetailScreen} />\n <Route key={routeKeyGen()} path=\"article/:articleId/u\" component={ArticleDetailScreen} />\n <Route key={routeKeyGen()} path=\"error.html\" component={LoadingScreen} />\n <Route key={routeKeyGen()} path=\"maintenance.html\" maintenance component={Error500Screen} />\n {debugRoute}\n <Route key={routeKeyGen()} path=\":showId\" component={ContentDetailScreen} />\n <Route key={routeKeyGen()} path=\":showId/:pageType\" component={ContentDetailScreen} />\n <Route\n key={routeKeyGen()}\n path=\":showId/:pageType/:pageId\"\n component={ContentDetailScreen}\n />\n <Route key={routeKeyGen()} path=\"*\" component={Error404Screen} />\n </Route>\n </Route>\n );\n};\n","/* eslint-disable no-underscore-dangle */\n/* global EnableDevTools */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport _ from 'lodash';\nimport { Provider } from 'react-redux';\nimport vars from 'vars'; // eslint-disable-line no-unused-vars\nimport { animateScroll } from 'react-scroll';\nimport { createStore, applyMiddleware, compose } from 'redux';\nimport thunk from 'redux-thunk';\nimport { Router, browserHistory, match } from 'react-router';\nimport promise from 'redux-promise';\nimport ES6Promise from 'es6-promise';\n\nimport { getRouteScreenUrl } from 'config/routes.helper';\nimport { removeUnsafeUrlParams } from 'helpers/RouteHelper';\nimport 'nodelist-foreach'; // IE11 polyfill\nimport { getUserData } from 'helpers/AuthClientlessHelper';\nimport { isBrowserIE } from 'helpers/GlobalHelper';\nimport { disableSmoothScrollMSIE, createProfile, isStaticRender } from 'helpers/ContentHelper';\n\nimport reducers from './config/reducers';\nimport routes from './config/routes-sync';\n\nES6Promise.polyfill();\n\nlet createStoreWithMiddleware;\n\nif (typeof EnableDevTools !== 'undefined' && EnableDevTools) {\n const composeEnhancers =\n typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n trace: true,\n traceLimit: 25,\n })\n : compose;\n createStoreWithMiddleware = composeEnhancers(applyMiddleware(promise, thunk))(createStore);\n} else {\n createStoreWithMiddleware = applyMiddleware(promise, thunk)(createStore);\n}\n\nfunction handleUpdate() {\n const { location } = this.state;\n const { action, pathname } = location;\n const isSeason = _.includes(pathname, 'season-');\n const isArticle = pathname?.includes('/article');\n if (action === 'PUSH' && !isSeason) {\n animateScroll.scrollToTop({ duration: 125 });\n }\n if (action === 'POP' && !isArticle) {\n setTimeout(() => {\n window.scrollTo(0, 0);\n }, 3000);\n }\n}\n\nfunction renderPage(store) {\n const container = document.querySelector('.container');\n const provider = (\n <Provider store={store}>\n <Router history={browserHistory} routes={routes} onUpdate={handleUpdate} />\n </Provider>\n );\n const renderMethod = ReactDOM.render;\n renderMethod(provider, container);\n}\n\nfunction renderPageWithDataFetch(store, accessToken) {\n match({ routes, location: window.location }, (err, redirectLocation, renderProps) => {\n // TODO: Should write helper to take in renderProps and output the promise array,\n // since this is used here and in index-static.js\n const { location, params, history } = renderProps;\n const currentPathname = _.get(location, 'pathname');\n const screenUrl = getRouteScreenUrl(currentPathname);\n const { components } = renderProps;\n const AppComp = components[components.length - 2];\n let Comp = components[components.length - 1];\n if (Comp.WrappedComponent) Comp = Comp.WrappedComponent;\n const appCompFetchData = _.get(AppComp, 'fetchData');\n const compFetchData = _.get(Comp, 'fetchData');\n const fetchNothing = () => Promise.resolve();\n const fetchAppData = appCompFetchData || fetchNothing;\n const fetchData = compFetchData || fetchNothing;\n const fetchParams = { store, location, params, history, screenUrl, accessToken };\n\n Promise.all([fetchAppData(fetchParams), fetchData(fetchParams)])\n .then(\n () =>\n new Promise(() => {\n renderPage(store);\n }),\n )\n .catch(errFetch => {\n console.log('Error during fetch', errFetch);\n renderPage(store);\n });\n });\n}\n\nremoveUnsafeUrlParams();\n\nif (typeof document !== 'undefined' && typeof documentFake !== 'boolean') {\n disableSmoothScrollMSIE();\n const store = createStoreWithMiddleware(reducers);\n\n // TODO remove this! This IE is temporary til IE is sunset\n if (!isBrowserIE() && !isStaticRender()) {\n createProfile().then(({ profile }) => {\n Promise.resolve(getUserData(store, profile)).then(() => {\n renderPage(store);\n });\n });\n } else {\n Promise.resolve(getUserData(store)).then(accessToken => {\n if (!window.staticRender) {\n renderPage(store);\n } else {\n renderPageWithDataFetch(store, accessToken);\n }\n });\n }\n}\n","import AccountScreen from 'screens/Account';\nimport ArticleDetailScreen from 'screens/ArticleDetail';\nimport CollectionScreen from 'screens/Collection';\nimport DebugScreen from 'screens/Debug';\nimport Error500Screen from 'screens/Error500';\nimport Error404Screen from 'screens/Error404';\nimport GeoBlock from 'screens/GeoBlock';\nimport LatestEpisodeScreen from 'screens/LatestEpisode';\nimport LiveScreen from 'screens/Live';\nimport LoadingScreen from 'screens/Loading';\nimport MVPDScreen from 'screens/MVPD';\nimport ResetPasswordScreen from 'screens/ResetPassword';\nimport SearchScreen from 'screens/Search';\nimport SeriesDetailScreen from 'screens/SeriesDetail';\nimport ContentDetailScreen from 'screens/ContentDetail';\nimport ShowsScreen from 'screens/Shows';\nimport SignInScreen from 'screens/SignIn';\nimport SiteMapScreen from 'screens/SiteMap';\nimport SubscriptionScreen from 'screens/Subscription';\nimport WatchScreen from 'screens/Watch';\n\nimport generator from './routes-generator';\n\nexport default generator({\n AccountScreen,\n ArticleDetailScreen,\n CollectionScreen,\n ContentDetailScreen,\n DebugScreen,\n Error500Screen,\n Error404Screen,\n GeoBlock,\n LatestEpisodeScreen,\n LiveScreen,\n LoadingScreen,\n MVPDScreen,\n ResetPasswordScreen,\n SearchScreen,\n SeriesDetailScreen,\n ShowsScreen,\n SignInScreen,\n SiteMapScreen,\n SubscriptionScreen,\n WatchScreen,\n});\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from './Cookies';\r\nexport default Cookies;\r\n"],"sourceRoot":""}